diff options
author | shennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2011-12-05 20:51:58 +0000 |
---|---|---|
committer | shennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2011-12-05 20:51:58 +0000 |
commit | ce9b9e74f648f3dd52e4161d3183612ecd002f80 (patch) | |
tree | b6069d2b4687cd979685c6d803ec93a5e54d0590 | |
parent | d9a43b19b761c9d1726fc971044634cd3fa917b8 (diff) | |
download | hercules-ce9b9e74f648f3dd52e4161d3183612ecd002f80.tar.gz hercules-ce9b9e74f648f3dd52e4161d3183612ecd002f80.tar.bz2 hercules-ce9b9e74f648f3dd52e4161d3183612ecd002f80.tar.xz hercules-ce9b9e74f648f3dd52e4161d3183612ecd002f80.zip |
Merging RREmu into rAthena -- quite a few stuff yet to be renamed, but we'll get it sorted.
Some of the stuff included in RREmu that is now part of rAthena:
- RE Drop Rate Modifier
- RE Experience Rate Modifier
- RE Weapon MATK
- RE Shield ASPD job-specific penalty
- RE Cast Time
- Renewal-specific item DEF
- 3.1 classes.
- All-New Mounts
- Official Magical Reflection
- And other perks, such as fully-functional @mapflag
also merged eAthena 15006 into rAthena.
For Bugs, Comments and Suggestions: http://rathena.org/board/tracker/
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15009 54d463be-8e91-2dee-dedb-b68131a5f0ec
108 files changed, 10500 insertions, 12047 deletions
diff --git a/RAthena-6.dsw b/RAthena-6.dsw deleted file mode 100644 index ffacdb23c..000000000 --- a/RAthena-6.dsw +++ /dev/null @@ -1,149 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "char_sql"=".\vcproj-6\char-server_sql.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "char_txt"=".\vcproj-6\char-server_txt.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "login_sql"=".\vcproj-6\login-server_sql.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "login_txt"=".\vcproj-6\login-server_txt.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "map_sql"=".\vcproj-6\map-server_sql.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "map_txt"=".\vcproj-6\map-server_txt.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "mapcache"=".\vcproj-6\mapcache.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "plugin_console"=".\vcproj-6\plugin-console.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "plugin_pid"=".\vcproj-6\plugin-pid.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "txt_converter_char"=".\vcproj-6\txt-converter-char.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "txt_converter_login"=".\vcproj-6\txt-converter-login.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/RAthena-7.1.sln b/RAthena-7.1.sln deleted file mode 100644 index 812905073..000000000 --- a/RAthena-7.1.sln +++ /dev/null @@ -1,69 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "map-server_txt", "vcproj-7.1\map-server_txt.vcproj", "{D356871D-58E1-450B-967A-E1E9646175AF}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "login-server_txt", "vcproj-7.1\login-server_txt.vcproj", "{D356871D-58E1-450B-967A-E2E9646175AF}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "char-server_txt", "vcproj-7.1\char-server_txt.vcproj", "{D356871D-58E1-450B-967A-E3E9646175AF}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "char-server_sql", "vcproj-7.1\char-server_sql.vcproj", "{D356871D-58E1-450B-967A-E4E9646175AF}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "login-server_sql", "vcproj-7.1\login-server_sql.vcproj", "{D356871D-58E1-450B-967A-E5E9646175AF}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "map-server_sql", "vcproj-7.1\map-server_sql.vcproj", "{D356871D-58E1-450B-967A-E6E9646175AF}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mapcache", "vcproj-7.1\mapcache.vcproj", "{CB8556B8-9673-42FD-B2F6-3826534E64E2}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - Debug = Debug - Release = Release - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {D356871D-58E1-450B-967A-E1E9646175AF}.Debug.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E1E9646175AF}.Debug.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E1E9646175AF}.Release.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E1E9646175AF}.Release.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-E2E9646175AF}.Debug.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E2E9646175AF}.Debug.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E2E9646175AF}.Release.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E2E9646175AF}.Release.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-E3E9646175AF}.Debug.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E3E9646175AF}.Debug.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E3E9646175AF}.Release.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E3E9646175AF}.Release.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-E4E9646175AF}.Debug.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E4E9646175AF}.Debug.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E4E9646175AF}.Release.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E4E9646175AF}.Release.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-E5E9646175AF}.Debug.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E5E9646175AF}.Debug.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E5E9646175AF}.Release.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E5E9646175AF}.Release.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-E6E9646175AF}.Debug.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E6E9646175AF}.Debug.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E6E9646175AF}.Release.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E6E9646175AF}.Release.Build.0 = Release|Win32 - {CB8556B8-9673-42FD-B2F6-3826534E64E2}.Debug.ActiveCfg = Debug|Win32 - {CB8556B8-9673-42FD-B2F6-3826534E64E2}.Debug.Build.0 = Debug|Win32 - {CB8556B8-9673-42FD-B2F6-3826534E64E2}.Release.ActiveCfg = Release|Win32 - {CB8556B8-9673-42FD-B2F6-3826534E64E2}.Release.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal diff --git a/RAthena-8.sln b/RAthena-8.sln deleted file mode 100644 index 9348cc476..000000000 --- a/RAthena-8.sln +++ /dev/null @@ -1,139 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "map-server_txt", "vcproj-8\map-server_txt.vcproj", "{D356871D-58E1-450B-967A-E1E9646175AF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "login-server_txt", "vcproj-8\login-server_txt.vcproj", "{D356871D-58E1-450B-967A-E2E9646175AF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "char-server_txt", "vcproj-8\char-server_txt.vcproj", "{D356871D-58E1-450B-967A-E3E9646175AF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "char-server_sql", "vcproj-8\char-server_sql.vcproj", "{D356871D-58E1-450B-967A-E4E9646175AF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "login-server_sql", "vcproj-8\login-server_sql.vcproj", "{D356871D-58E1-450B-967A-E5E9646175AF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "map-server_sql", "vcproj-8\map-server_sql.vcproj", "{D356871D-58E1-450B-967A-E6E9646175AF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mapcache", "vcproj-8\mapcache.vcproj", "{D356871D-58E1-450B-967A-E7E9646175AF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "txt-converter-login", "vcproj-8\txt-converter-login.vcproj", "{D356871D-58E1-450B-967A-E9E9646175AF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "txt-converter-char", "vcproj-8\txt-converter-char.vcproj", "{D356871D-58E1-450B-967A-EAE9646175AF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "plugin-console", "vcproj-8\plugin-console.vcproj", "{73E1101A-310C-4453-8F45-FD2795ABEF15}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "plugin-pid", "vcproj-8\plugin-pid.vcproj", "{9509E1B9-DA2B-4153-9EE0-CBCA6597F198}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Debug-sql|Win32 = Debug-sql|Win32 - Debug-txt|Win32 = Debug-txt|Win32 - Release|Win32 = Release|Win32 - Release-sql|Win32 = Release-sql|Win32 - Release-txt|Win32 = Release-txt|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D356871D-58E1-450B-967A-E1E9646175AF}.Debug|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E1E9646175AF}.Debug|Win32.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E1E9646175AF}.Debug-sql|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E1E9646175AF}.Debug-txt|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E1E9646175AF}.Debug-txt|Win32.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E1E9646175AF}.Release|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E1E9646175AF}.Release|Win32.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-E1E9646175AF}.Release-sql|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E1E9646175AF}.Release-txt|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E1E9646175AF}.Release-txt|Win32.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-E2E9646175AF}.Debug|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E2E9646175AF}.Debug|Win32.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E2E9646175AF}.Debug-sql|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E2E9646175AF}.Debug-txt|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E2E9646175AF}.Debug-txt|Win32.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E2E9646175AF}.Release|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E2E9646175AF}.Release|Win32.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-E2E9646175AF}.Release-sql|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E2E9646175AF}.Release-txt|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E2E9646175AF}.Release-txt|Win32.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-E3E9646175AF}.Debug|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E3E9646175AF}.Debug|Win32.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E3E9646175AF}.Debug-sql|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E3E9646175AF}.Debug-txt|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E3E9646175AF}.Debug-txt|Win32.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E3E9646175AF}.Release|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E3E9646175AF}.Release|Win32.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-E3E9646175AF}.Release-sql|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E3E9646175AF}.Release-txt|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E3E9646175AF}.Release-txt|Win32.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-E4E9646175AF}.Debug|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E4E9646175AF}.Debug|Win32.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E4E9646175AF}.Debug-sql|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E4E9646175AF}.Debug-sql|Win32.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E4E9646175AF}.Debug-txt|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E4E9646175AF}.Release|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E4E9646175AF}.Release|Win32.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-E4E9646175AF}.Release-sql|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E4E9646175AF}.Release-sql|Win32.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-E4E9646175AF}.Release-txt|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E5E9646175AF}.Debug|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E5E9646175AF}.Debug|Win32.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E5E9646175AF}.Debug-sql|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E5E9646175AF}.Debug-sql|Win32.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E5E9646175AF}.Debug-txt|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E5E9646175AF}.Release|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E5E9646175AF}.Release|Win32.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-E5E9646175AF}.Release-sql|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E5E9646175AF}.Release-sql|Win32.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-E5E9646175AF}.Release-txt|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E6E9646175AF}.Debug|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E6E9646175AF}.Debug|Win32.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E6E9646175AF}.Debug-sql|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E6E9646175AF}.Debug-sql|Win32.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E6E9646175AF}.Debug-txt|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E6E9646175AF}.Release|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E6E9646175AF}.Release|Win32.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-E6E9646175AF}.Release-sql|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E6E9646175AF}.Release-sql|Win32.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-E6E9646175AF}.Release-txt|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E7E9646175AF}.Debug|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E7E9646175AF}.Debug|Win32.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E7E9646175AF}.Debug-sql|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E7E9646175AF}.Debug-sql|Win32.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E7E9646175AF}.Debug-txt|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E7E9646175AF}.Debug-txt|Win32.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E7E9646175AF}.Release|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E7E9646175AF}.Release|Win32.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-E7E9646175AF}.Release-sql|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E7E9646175AF}.Release-sql|Win32.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-E7E9646175AF}.Release-txt|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E7E9646175AF}.Release-txt|Win32.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-E9E9646175AF}.Debug|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E9E9646175AF}.Debug|Win32.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E9E9646175AF}.Debug-sql|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E9E9646175AF}.Debug-txt|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-E9E9646175AF}.Debug-txt|Win32.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-E9E9646175AF}.Release|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E9E9646175AF}.Release|Win32.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-E9E9646175AF}.Release-sql|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E9E9646175AF}.Release-txt|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-E9E9646175AF}.Release-txt|Win32.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-EAE9646175AF}.Debug|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-EAE9646175AF}.Debug|Win32.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-EAE9646175AF}.Debug-sql|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-EAE9646175AF}.Debug-txt|Win32.ActiveCfg = Debug|Win32 - {D356871D-58E1-450B-967A-EAE9646175AF}.Debug-txt|Win32.Build.0 = Debug|Win32 - {D356871D-58E1-450B-967A-EAE9646175AF}.Release|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-EAE9646175AF}.Release|Win32.Build.0 = Release|Win32 - {D356871D-58E1-450B-967A-EAE9646175AF}.Release-sql|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-EAE9646175AF}.Release-txt|Win32.ActiveCfg = Release|Win32 - {D356871D-58E1-450B-967A-EAE9646175AF}.Release-txt|Win32.Build.0 = Release|Win32 - {73E1101A-310C-4453-8F45-FD2795ABEF15}.Debug|Win32.ActiveCfg = Debug|Win32 - {73E1101A-310C-4453-8F45-FD2795ABEF15}.Debug|Win32.Build.0 = Debug|Win32 - {73E1101A-310C-4453-8F45-FD2795ABEF15}.Release|Win32.ActiveCfg = Release|Win32 - {73E1101A-310C-4453-8F45-FD2795ABEF15}.Release|Win32.Build.0 = Release|Win32 - {9509E1B9-DA2B-4153-9EE0-CBCA6597F198}.Debug|Win32.ActiveCfg = Debug|Win32 - {9509E1B9-DA2B-4153-9EE0-CBCA6597F198}.Debug|Win32.Build.0 = Debug|Win32 - {9509E1B9-DA2B-4153-9EE0-CBCA6597F198}.Release|Win32.ActiveCfg = Release|Win32 - {9509E1B9-DA2B-4153-9EE0-CBCA6597F198}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/conf/battle/player.conf b/conf/battle/player.conf index d93337429..870bdd0d5 100644 --- a/conf/battle/player.conf +++ b/conf/battle/player.conf @@ -88,6 +88,9 @@ max_sp: 1000000 // Max limit of char stats. (agi, str, etc.) max_parameter: 99 +// Same as max_parameter, but for 3rd classes. +max_third_parameter: 120 + // Same as max_parameter, but for baby classes. max_baby_parameter: 80 diff --git a/conf/map_athena.conf b/conf/map_athena.conf index 0b837b61f..f25f6a695 100644 --- a/conf/map_athena.conf +++ b/conf/map_athena.conf @@ -59,6 +59,14 @@ map_port: 5121 //If redirected output contains escape sequences (color codes) stdout_with_ansisequence: no +//Makes server log selected message types to a file in the /log/ folder +//1: Log Warning Messages +//2: Log Error and SQL Error messages. +//4: Log Debug Messages +//Example: "console_msg_log: 7" logs all 3 kinds +//Messages logged by this overrides console_silent setting +console_msg_log: 0 + //Makes server output more silent by ommitting certain types of messages: //1: Hide Information messages //2: Hide Status messages diff --git a/db/exp.txt b/db/exp.txt index 58310fe24..3733f3050 100644 --- a/db/exp.txt +++ b/db/exp.txt @@ -4,6 +4,8 @@ 99,0:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:23:24:25:26:4023:4024:4025:4026:4027:4028:4029:4030:4031:4032:4033:4034:4035:4036:4037:4038:4039:4040:4041:4042:4043:4044:4045:4046:4047:4048:4049,0,9,16,25,36,77,112,153,200,253,320,385,490,585,700,830,970,1120,1260,1420,1620,1860,1990,2240,2504,2950,3426,3934,4474,6889,7995,9174,10425,11748,13967,15775,17678,19677,21773,30543,34212,38065,42102,46323,53026,58419,64041,69892,75973,102468,115254,128692,142784,157528,178184,196300,215198,234879,255341,330188,365914,403224,442116,482590,536948,585191,635278,687211,740988,925400,1473746,1594058,1718928,1848355,1982340,2230113,2386162,2547417,2713878,3206160,3681024,4022472,4377024,4744680,5125440,5767272,6204000,6655464,7121664,7602600,9738720,11649960,13643520,18339300,23836800,35658000,48687000,58135000,99999999 //Base - Adv Jobs 99,4001:4002:4003:4004:4005:4006:4007:4008:4009:4010:4011:4012:4013:4014:4015:4016:4017:4018:4019:4020:4021:4022,0,10,18,28,40,85,123,168,220,278,400,481,613,731,875,1038,1213,1400,1575,1775,2268,2604,2786,3136,3506,4130,4796,5508,6264,9645,12392,14220,16159,18209,21649,24451,27401,30499,33748,47342,58160,64711,71573,78749,90144,99312,108870,118816,129154,174196,213220,238080,264150,291427,329640,363155,398116,434526,472381,610848,731828,806448,884232,965180,1073896,1170382,1270556,1374422,1481976,1850800,3389616,3666333,3953534,4251217,4559382,5129260,5488173,5859059,6241919,7374168,9570662,10458427,11380262,12336168,13326144,14994907,16130400,17304200,18516326,19766760,29216160,34949880,40930560,55017900,71510400,106974000,146061000,174405000,343210000 +//Base - 3rd Jobs +150,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087,0,10,18,28,40,85,123,168,220,278,400,481,613,731,875,1038,1213,1400,1575,1775,2268,2604,2786,3136,3506,4130,4796,5508,6264,9645,12392,14220,16159,18209,21649,24451,27401,30499,33748,47342,58160,64711,71573,78749,90144,99312,108870,118816,129154,174196,213220,238080,264150,291427,329640,363155,398116,434526,472381,610848,731828,806448,884232,965180,1073896,1170382,1270556,1374422,1481976,1850800,3389616,3666333,3953534,4251217,4559382,5129260,5488173,5859059,6241919,7374168,9570662,10458427,11380262,12336168,13326144,14994907,16130400,17304200,18516326,19766760,29216160,34949880,40930560,55017900,71510400,106974000,146061000,174405000,343210000,360090500,377815025,396425776,415967065,436485418,459055606,470340701,482190050,494631866,507695773,523372462,531210807,535913813,540851970,546037035,552259113,555370152,558636742,562066663,565668079,569989779,572150629,573447138,574808474,576237876,577953159,579325385,580766222,582279101,583867625,588633194,592445650,596639351,601252423,606326801,616475558,624594564,633525470,643349467,654155864,691978251,722236162,755519863,792131935,832405213,912951771,977389016,1031157636,1153302698,1236233433,1650887110 //Job - Novice 10,0:4023,1,10,18,28,40,91,151,205,268,340 //Job - 1st Classes @@ -22,3 +24,5 @@ 50,4047:4048,1,27434,27434,27434,27434,27434,27434,27434,27434,27434,27434,27434,27434,27434,27434,27434,27434,27434,27434,54868,70216,77154,84412,105416,133942,165376,179088,193338,235642,289842,348402,373354,399168,477234,572732,674294,716870,760752,895370,1053978,1220492,1289472,1587070,1843620,2213516,2521910,2974608,3115314,3981264,4166772 //Job - Ninja/Gunslinger 70,24:25,1,72,92,142,174,301,443,548,799,1270,1838,2145,2473,3339,4746,6385,7172,8002,10321,13717,17554,19288,21103,26354,33485,41344,44772,48334,58910,72460,87100,93338,99792,119308,143183,231068,257377,274363,314246,371105,431038,476309,588548,665256,801731,916689,1130023,1188623,1477408,1551289,1746582,1845236,1954741,2124555,2345698,2548763,2759555,3021488,3254111,3489547,3695474,4012251,4181112,4302211,4496584,4578951,4869523,5022114,5123654,5395117 +//Job - 3rd Jobs (650 3CeAM) +50,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087,1,100000,160000,232000,318400,413440,498976,593066,696564,903561,1069159,1267876,1506337,1792490,2221719,2565102,2977162,3471634,4065001,5251734,6201120,7340384,8707500,10348040,12808849,14777497,17139874,19974727,23376550,30180196,39705300,53992957,75424442,107571670,200798630,247412110,303348286,370471698,451019791,547677504,596006360,646751659,700034223,755980915,814724942,832348150,850852518,870282105,890683171,899999999 diff --git a/db/item_db.txt b/db/item_db.txt index 66e8edc3b..391bd86b1 100644 --- a/db/item_db.txt +++ b/db/item_db.txt @@ -1697,17 +1697,17 @@ 2797,Magical_Stone_,Rocks,5,0,,200,,0,,0,0x00810204,7,2,136,,99,0,0,{ bonus2 bAddDamageClass,2049,10; bonus2 bAddDefClass,2050,-10; bonus3 bAddClassDropItem,6151,2049,70; },{},{} 2798,Will_Of_Exhausted_Angel,Will Of Exhausted Angel,5,0,,200,,0,,0,0x00008100,7,2,136,,99,0,0,{ getmapxy .@map$,.@x,.@y,0; if(.@map$ == "job3_arch02") { bonus2 bAddDefClass,1761,50; bonus2 bAddDefClass,1762,50; } },{},{} 2799,Kuirpenring,Kuirpenring,5,0,,100,,0,,1,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bMdef,1; },{},{} -2800,Accelerator,Accelerator,5,100000,,100,,0,,1,0x00000000,7,2,136,,99,0,0,{ bonus bAgi,2; },{},{} -2801,Hovering_Booster,Hovering Booster,5,100000,,2000,,0,,1,0x00000000,7,2,136,,99,0,0,{ bonus bAgi,1; },{},{} -2802,Suicidal_Device,Suicidal Device,5,500000,,1000,,0,,1,0x00000000,7,2,136,,99,0,0,{},{},{} -2803,Shape_Shifter,Shape Shifter,5,100000,,500,,0,,1,0x00000000,7,2,136,,99,0,0,{ bonus bInt,3; },{},{} -2804,Cooling_Device,Cooling Device,5,100000,,2500,,0,,1,0x00000000,7,2,136,,99,0,0,{ bonus bDex,1; },{},{} -2805,Magnetic_Field_Generator,Magnetic Field Generator,5,100000,,6000,,0,,1,0x00000000,7,2,136,,99,0,0,{ bonus bDex,1; },{},{} -2806,Barrier_Builder,Barrier Builder,5,150000,,8000,,3,,1,0x00000000,7,2,136,,99,0,0,{ bonus bDex,1; },{},{} -2807,Repair_Kit,Repair Kit,5,200000,,400,,0,,1,0x00000000,7,2,136,,99,0,0,{},{},{} -2808,Camouflage_Generator,Camouflague Generator,5,250000,,1000,,0,,1,0x00000000,7,2,136,,99,0,0,{ bonus bAgi,3; },{},{} -2809,High_Quality_Cooler,High Quality Cooler,5,100000,,2500,,0,,1,0x00000000,7,2,136,,99,0,0,{ bonus bDex,1; },{},{} -2810,Special_Cooler,Special Cooler,5,100000,,2500,,0,,1,0x00000000,7,2,136,,99,0,0,{ bonus bDex,1; },{},{} +2800,Accelerator,Accelerator,5,100000,,100,,0,,1,0x00000400,8,2,136,,99,0,0,{ bonus bAgi,2; },{},{} +2801,Hovering_Booster,Hovering Booster,5,100000,,2000,,0,,1,0x00000400,8,2,136,,99,0,0,{ bonus bAgi,1; },{},{} +2802,Suicidal_Device,Suicidal Device,5,500000,,1000,,0,,1,0x00000400,8,2,136,,99,0,0,{},{},{} +2803,Shape_Shifter,Shape Shifter,5,100000,,500,,0,,1,0x00000400,8,2,136,,99,0,0,{ bonus bInt,3; },{},{} +2804,Cooling_Device,Cooling Device,5,100000,,2500,,0,,1,0x00000400,8,2,136,,99,0,0,{ bonus bDex,1; },{},{} +2805,Magnetic_Field_Generator,Magnetic Field Generator,5,100000,,6000,,0,,1,0x00000400,8,2,136,,99,0,0,{ bonus bDex,1; },{},{} +2806,Barrier_Builder,Barrier Builder,5,150000,,8000,,3,,1,0x00000400,8,2,136,,99,0,0,{ bonus bDex,1; },{},{} +2807,Repair_Kit,Repair Kit,5,200000,,400,,0,,1,0x00000400,8,2,136,,99,0,0,{},{},{} +2808,Camouflage_Generator,Camouflague Generator,5,250000,,1000,,0,,1,0x00000400,8,2,136,,99,0,0,{ bonus bAgi,3; },{},{} +2809,High_Quality_Cooler,High Quality Cooler,5,100000,,2500,,0,,1,0x00000400,8,2,136,,99,0,0,{ bonus bDex,1; },{},{} +2810,Special_Cooler,Special Cooler,5,100000,,2500,,0,,1,0x00000400,8,2,136,,99,0,0,{ bonus bDex,1; },{},{} //2811,Freyja_SBracelet7,Freyja's Spirit Bracelet,5,20,,200,,1,,0,0xFFFFFFFF,7,2,136,,20,0,0,{ bonus bAllStats,1; },{},{} //2812,Freyja_SBracelet30,Freyja's Spirit Bracelet,5,20,,200,,1,,0,0xFFFFFFFF,7,2,136,,20,0,0,{ bonus bAllStats,1; },{},{} //2813,Freyja_SBracelet60,Freyja's Spirit Bracelet,5,20,,200,,1,,0,0xFFFFFFFF,7,2,136,,20,0,0,{ bonus bAllStats,1; },{},{} @@ -3075,21 +3075,21 @@ //5743,Orange_Stem_Hat,Orange Stem Hat,5,20,,100,,0,,0,0x00000000,7,2,256,,1,0,620,{ bonus bLuk,3; },{},{} //5744,Capricon_Crown,Capricon Crown,5,20,,300,,3,,1,0xFFFFFFFF,7,2,256,,1,1,621,{ bonus bVit,2; bonus bDex,2; },{},{} //5745,Capricon_Diadem,Capricon Diadem,5,20,,300,,3,,0,0xFFFFFFFF,7,2,256,,1,1,622,{ bonus bDex,2; bonus bMdef,5; },{},{} -5746,Rune_Circlet,Rune Circlet,5,20,,100,,12,,1,0x00000080,7,2,256,,100,1,623,{ bonus bStr,1; bonus bInt,1; bonus bMdef,5; },{},{} -5747,Mitra,Mitra,5,20,,100,,12,,1,0x00000100,7,2,256,,100,1,624,{ bonus bInt,1; bonus bVit,1; bonus bMdef,5; },{},{} -5748,Sniper_Goggle,Sniper Goggles,5,20,,100,,12,,1,0x00000800,7,2,768,,100,1,625,{ bonus bDex,1;bonus bAgi,1;bonus bMdef,5; },{},{} -5749,Driver_Band,Driver Band,5,20,,100,,12,,1,0x00000400,7,2,256,,100,1,626,{ bonus bStr,1; bonus bDex,1; bonus bMdef,5; },{},{} -5750,Shadow_Handicraft,Shadow Handicraft,5,20,,100,,12,,1,0x00020000,7,2,256,,100,1,627,{ bonus bInt,1; bonus bAgi,1; bonus bMdef,5; },{},{} -5751,Minstrel_Song_Hat,Minstrel Song Hat,5,20,,100,,12,,1,0x00080000,7,1,256,,100,1,628,{ bonus bInt,1; bonus bLuk,1; bonus bMdef,5; },{},{} -5752,Midas_Whisper,Midas Whisper,5,20,,100,,12,,1,0x00040000,7,2,256,,100,1,629,{ bonus bStr,1; bonus bDex,1; bonus bMdef,5; },{},{} -5753,Magic_Stone_Hat,Magic Stone Hat,5,20,,100,,12,,1,0x00000200,7,2,256,,100,1,630,{ bonus bInt,1; bonus bDex,1; bonus bMdef,5; },{},{} -5754,Blazing_Soul,Blazing Soul,5,20,,100,,12,,1,0x00008000,7,2,256,,100,1,631,{ bonus bStr,1; bonus bVit,1; bonus bMdef,5; },{},{} -5755,Silent_Executer,Silence Executer,5,20,,100,,6,,0,0x00001000,,2,513,,100,0,632,{ bonus bAgi,1;bonus bMdef,5; },{},{} -5756,Wind_Whisper,Wind Whisper,5,20,,100,,12,,1,0x00010000,7,2,256,,100,1,633,{ bonus bInt,1; bonus bDex,1; bonus bMdef,5; },{},{} -5757,Schmidt_Helm,Dip Schmidt Helm,5,20,,100,,17,,1,0x00004000,7,2,768,,100,1,634,{ bonus bInt,1;bonus bVit,2;bonus bMdef,5; },{},{} -5758,Dying_Swan,Dying Swan,5,20,,100,,12,,1,0x00080000,7,0,256,,100,1,635,{ bonus bInt,1; bonus bLuk,1; bonus bMdef,5; },{},{} +5746,Rune_Circlet,Rune Circlet,5,20,,100,,12,,1,0x00000080,8,2,256,,100,1,623,{ bonus bStr,1; bonus bInt,1; bonus bMdef,5; if(readparam(bStr)>=120){ bonus bAtk,10; bonus bMatk,5; } },{},{} +5747,Mitra,Mitra,5,20,,100,,12,,1,0x00000100,8,2,256,,100,1,624,{ bonus bVit,1; bonus bInt,1; bonus bMdef,5; bonus bHealPower,5; if(readparam(bInt)>=120){ bonus bMatk,10; } },{},{} +5748,Sniper_Goggles,Sniper Goggles,5,20,,100,,12,,1,0x00000800,8,2,768,,100,1,625,{ bonus bAgi,1; bonus bDex,1; bonus bMdef,5; if(readparam(bAgi)>=120){ bonus bLongAtkRate,4; bonus bAspd,1; } },{},{} +5749,Driver_Band_M,Driver Band,5,20,,100,,12,,1,0x00000400,8,1,256,,100,1,626,{ bonus bStr,1; bonus bDex,1; bonus bMdef,5; if(readparam(bStr)>=120){ bonus bAtk,10; bonus bCritical,3; } },{},{} +5750,Shadow_Crown,Shadow Crown,5,20,,100,,12,,1,0x00020000,8,2,256,,100,1,627,{ bonus bAgi,1; bonus bInt,1; bonus bMdef,1; if(readparam(bAgi)>=120){ bonus bAtk,10; bonus bFlee,3; } },{},{} +5751,Minstrel_Song_Hat,Minstrel Song Hat,5,20,,100,,12,,1,0x00080000,8,1,256,,100,1,628,{ bonus bInt,1; bonus bLuk,1; bonus bMdef,5; bonus bLongAtkRate,4; bonus bUseSPrate,-10; },{},{} +5752,Midas_Whispers,Midas Whispers,5,20,,100,,12,,1,0x00040000,8,2,256,,100,1,629,{ bonus bStr,1; bonus bDex,1; bonus bMdef,5; if(readparam(bStr)>=120){ bonus bAtk,5; bonus bAspd,1; } },{},{} +5753,Magic_Stone_Hat,Magic Stone Hat,5,20,,100,,12,,1,0x00000200,8,2,256,,100,1,630,{ bonus bInt,1; bonus bDex,1; bonus bMdef,5; if(readparam(bDex)>=120){ bonus bMatkRate,10; bonus bCastrate,-2; } },{},{} +5754,Burning_Spirit,Burning Spirit,5,20,,100,,12,,1,0x00008000,8,2,256,,100,1,631,{ bonus bStr,1; bonus bVit,1; bonus bMdef,5; if(readparam(bStr)>=120){ bonus bAtk,10; bonus bHit,3; } },{},{} +5755,Silent_Enforcer,Silent Enforcer,5,20,,100,,12,,0,0x00001000,8,2,513,,100,1,632,{ bonus bAgi,1; bonus bMdef,5; if(readparam(bAgi)>=120){ bonus bAtk,10; bonus bFlee2,5; } },{},{} +5756,Wispers_of_Wind,Wispers of Wind,5,20,,100,,12,,1,0x00010000,8,2,256,,100,1,633,{ bonus bInt,1; bonus bDex,1; bonus bMdef,5; if(readparam(bInt)>=120){ bonus bMatkRate,10; bonus bFlee,3; } },{},{} +5757,Reissue_Schmitz_Helm,Reissue Schmitz Helm,5,20,,100,,12,,1,0x00004000,8,2,768,,100,1,634,{ bonus bVit,2; bonus bInt,1; bonus bMdef,5; if(readparam(bInt)>=120){ bonus bMatkRate,10; bonus bDef,5; } },{},{} +5758,Resting_Swan,Resting Swan,5,20,,100,,17,,1,0x00080000,8,0,256,,100,1,635,{ bonus bInt,1; bonus bLuk,1; bonus bMdef,5; bonus bAtkRate,5; bonus bUseSPrate,-10; },{},{} //5759,Noah_Hat,Noah Hat,5,20,,500,,1,,1,0xFFFFFFFF,7,2,256,,1,1,636,{ bonus bMdef,3; },{},{} -5760,Driver_Band_,Driver Band,5,20,,100,,12,,1,0x00000000,7,2,256,,100,1,637,{ bonus bStr,1; bonus bDex,1; bonus bMdef,5; },{},{} +5760,Driver_Band_F,Driver Band,5,20,,100,,12,,1,0x00000400,8,0,256,,100,1,637,{ bonus bStr,1; bonus bDex,1; bonus bMdef,5; if(readparam(bStr)>=120){ bonus bAtk,10; bonus bCritical,3; } },{},{} //5761,Sloth_Hat,Sloth Hat,5,20,,800,,3,,1,0xFFFFFFFF,7,2,256,,1,1,638,{ bonus bAgi,2; },{},{} //5762,Duneyrr_Helm,Duneyrr Helm,5,20,,100,,5,,0,0xFFFFFFFF,7,2,256,,1,1,639,{ bonus bAllStats,1; bonus bMdef,5; },{},{} //5763,Red_Bunny_Band,Red Bunny Band,5,0,,200,,4,,0,0xFFFFFFFF,7,2,256,,1,1,640,{ bonus bAgi,2; bonus bMdef,3; },{},{} @@ -3233,8 +3233,8 @@ 6043,Letter_From_Lugen,Letter from Lugen,3,0,,10,,,,,,,,,,,,,{},{},{} 6044,Letter_From_Otto,Letter from Otto,3,0,,10,,,,,,,,,,,,,{},{},{} 6045,Supply_Box,Supply Box,3,0,,0,,,,,,,,,,,,,{},{},{} -6046,Clothing_Dye_Coupon,New Clothing Dye Coupon,3,0,,0,,,,,,,,,,,,,{},{},{} -6047,Clothing_Dye_Coupon2,Original Clothing Dye Coupon,3,0,,0,,,,,,,,,,,,,{},{},{} +6046,Clothing_Dye_Coupon,Clothing Dye Coupon,2,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc "SetPalete",1; },{},{} +6047,Clothing_Dye_Coupon_II,Clothing Dye Coupon II,2,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc "SetPalete",2; },{},{} 6048,Unidentified_Mineral,Unidentified Mineral,3,0,,10,,,,,,,,,,,,,{},{},{} 6049,Marlin,Marlin,3,0,,10,,,,,,,,,,,,,{},{},{} 6050,Mercenary_Contract,Mercenary Contract,3,0,,10,,,,,,,,,,,,,{},{},{} @@ -4659,7 +4659,7 @@ 11053,SN_Book_Practice,SN Book Practice,3,20,,10,,,,,,,,,,,,,{},{},{} 11054,SN_Book_Misc,SN Book Misc,3,20,,10,,,,,,,,,,,,,{},{},{} 11055,Basic_Adventure,Basic Adventure,3,20,,10,,,,,,,,,,,,,{},{},{} -//11056,Spiritualism_Guide, +11056,Elemental_Spirit_Guide,Elemental Spirit Guide,3,1000,,10,,,,,,,,,,,,,{},{},{} // More Usable Items //=================================================================== 11500,Light_Yellow_Pot,Light Yellow Potion,0,550,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(175,235),0; },{},{} @@ -5045,7 +5045,7 @@ 12338,Grilled_Corn,Grilled Corn,2,100,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_INCSTR,180000,2; sc_start SC_INCINT,180000,2; sc_start SC_INCAGI,180000,2; },{},{} 12339,Cherish_Box_Ori,Treasure Edition Box,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem groupranditem(IG_Cherish_Box_Ori),1; },{},{} 12340,Mysterious_Rice_Powder,Chewy Rice Powder,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1815; },{},{} -12341,Special_Alloy_Trap_Box,Special Alloy Trap Box,2,20000,,100,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} +12341,Special_Alloy_Trap_Box,Special Alloy Trap Box,2,,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 7940,100; },{},{} 12342,Manuk's_Opportunity,Manuk's Opportunity,2,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect2 EF_POTION_BERSERK; sc_start SC_MANU_ATK,600000,10; },{},{} 12343,Manuk's_Courage,Manuk's Courage,2,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect2 EF_GUARD; sc_start SC_MANU_DEF,600000,10; },{},{} 12344,Pinguicula's_fruit_Jam,Pinguicula's Fruit Jam,2,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect2 EF_POTION_BERSERK; sc_start SC_SPL_ATK,600000,10; },{},{} @@ -5096,9 +5096,9 @@ 12389,Runstone_Storm,Pertz Runestone For Apprentice,11,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ /* getmapxy .@map$,.@x,.@y,0; if(.@map$ == "job3_rune02") { itemskill "RK_STORMBLAST",1; } */ },{},{} 12390,Runstone_Millennium,Verkana Runestone For Apprentice,11,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ /* getmapxy .@map$,.@x,.@y,0; if(.@map$ == "job3_rune02") { itemskill "RK_MILLENNIUMSHIELD",1; } */ },{},{} 12391,Lucky_Egg_C,Lucky Egg,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12392,RepairA,Repair A,2,220,,100,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12393,RepairB,Repair B,2,500,,140,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12394,RepairC,Repair C,2,1100,,180,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} +12392,Repair_A,Repair A,0,220,,70,,,,,0x00000400,8,2,,,,,,{/* madoheal rand(200,300),0; */},{},{} +12393,Repair_B,Repair B,0,500,,70,,,,,0x00000400,8,2,,,,,,{/* madoheal rand(300,400),0; */},{},{} +12394,Repair_C,Repair C,0,1100,,70,,,,,0x00000400,8,2,,,,,,{/* madoheal rand(400,500),0; */},{},{} 12395,Tantanmen,Tantan Noodle,2,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1519; },{},{} 12396,Fools_Day_Box,Gift Box?,11,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ if(rand(1,10)==1) itemskill "AL_TELEPORT",1; else if(rand(1,10)==2) itemskill "AL_TELEPORT",3; else if(rand(1,10)==3) percentheal 50,0; else if(rand(1,10)==4) percentheal 0,50; else if(rand(1,10)==5) end; else if(rand(1,10)==6) getitem 512,1; else if(rand(1,10)==7) itemskill "ALL_REVERSEORCISH",1; else if(rand(1,10)==8) specialeffect2 247; else if(rand(1,10)==9) specialeffect2 338; else specialeffect2 10; },{},{} 12397,Fools_Day_Box2,Gift Box?,11,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ if(rand(1,10)==1) itemskill "TF_DETOXIFY",1; else if(rand(1,10)==2) itemskill "TF_PICKSTONE",1; else if(rand(1,10)==3) itemskill "BA_FROSTJOKER",1; else if(rand(1,10)==4) itemskill "DC_SCREAM",1; else if(rand(1,10)==5) end; else if(rand(1,10)==6) getitem 909,1; else if(rand(1,10)==7) itemskill "AL_RUWACH",1; else if(rand(1,10)==8) specialeffect2 328; else if(rand(1,10)==9) specialeffect2 68; else specialeffect2 196; },{},{} @@ -5125,23 +5125,27 @@ 12418,Full_SwingK,Full SwingK,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} 12419,Mana_Plus,Mana Plus,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} 12420,Stamina_Up_M,Stamina Up M,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12421,Digestive_F,Digestive F,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12422,HP_Increase_PotionS,HP Increase PotionS,2,100,,20,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12423,HP_Increase_PotionM,HP Increase PotionM,2,100,,40,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12424,HP_Increase_PotionL,HP Increase PotionL,2,100,,80,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12425,SP_Increase_PotionS,SP Increase PotionS,2,100,,20,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12426,SP_Increase_PotionM,SP Increase PotionM,2,100,,40,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12427,SP_Increase_PotionL,SP Increase PotionL,2,100,,80,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12428,Enrich_White_PotionZ,Enrich White PotionZ,2,100,,70,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12429,Savage_BBQ,Savage BBQ,2,1000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12430,Wug_Blood_Cocktail,Wug Blood Cocktail,2,1000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12431,Minor_Brisket,Minor Brisket,2,1000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12432,Siroma_Icetea,Siroma Icetea,2,1000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12433,Drocera_Herb_Stew,Drocera Herb Stew,2,1000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12434,Petti_Tail_Noodle,Petti Tail Noodle,2,1000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12435,Black_Thing,Black Thing,2,1000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12436,Vitata500,Vitata500,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12437,Enrich_Celermine_Juice,Enrich Celermine Juice,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} +12417,Boost_500,Boost 500,2,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_BOOST500,500000,20; },{},{} +12418,Full_Swing_K,Full Swing K,3,10,,10,,,,,,,,,,,,,{},{},{} +12419,Manaplus,Manaplus,3,10,,10,,,,,,,,,,,,,{},{},{} +12420,Muramura_M,Muramura M,3,10,,10,,,,,,,,,,,,,{},{},{} +12421,Falmons_F,Falmons F,3,10,,10,,,,,,,,,,,,,{},{},{} +12422,HP_Increase_Potion_(Small),HP Increase Potion (Small),0,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_INCMHPRATE,500000,1; percentheal 2,0; },{},{} +12423,HP_Increase_Potion_(Medium),HP Increase Potion (Medium),0,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_INCMHPRATE,500000,2; percentheal 3,0; },{},{} +12424,HP_Increase_Potion_(Large),HP Increase Potion (Large),0,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_INCMHPRATE,500000,5; percentheal 5,0; },{},{} +12425,SP_Increase_Potion_(Small),SP Increase Potion (Small),0,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_INCMSPRATE,500000,2; percentheal 0,2; },{},{} +12426,SP_Increase_Potion_(Medium),SP Increase Potion (Medium),0,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_INCMSPRATE,500000,4; percentheal 0,4; },{},{} +12427,SP_Increase_Potion_(Large),SP Increase Potion (Large),0,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_INCMSPRATE,500000,8; percentheal 0,8; },{},{} +12428,Concentrated_White_Potion_Z,Concentrated White Potion Z,0,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_WHITEPOTIONZ,500000,0; itemheal rand(1500,1600),0; },{},{} +12429,Savage_Full_Roast,Savage Full Roast,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_SAVAGE_STEAK, 300000, 20; },{},{} +12430,Cocktail_Warg_Blood,Cocktail Warg Blood,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_COCKTAIL_WARG_BLOOD, 300000, 20; },{},{} +12431,Minor_Stew,Minor Stew,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_MINOR_BBQ, 300000, 20; },{},{} +12432,Siroma_Iced_Tea,Siroma Iced Tea,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_SIROMA_ICE_TEA, 300000, 20; },{},{} +12433,Drosera_Herb_Salad,Drosera Herb Salad,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_DROCERA_HERB_STEAMED, 300000, 20; },{},{} +12434,Petite_Tail_Noodles,Petite Tail Noodles,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_PUTTI_TAILS_NOODLES, 300000, 20; },{},{} +12435,Black_Mass,Black Mass,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_STOMACHACHE, 60000, rand(5,10); },{},{} +12436,Vitata_500,Vitata 500,0,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} +12437,Concentrated_Ceromain_Soup,Concentrated Ceromain Soup,2,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(1500,1600),0; },{},{} 12438,F_Giant_Fly_Wing,F Giant Fly Wing,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} 12439,F_Battle_Manual,F Battle Manual,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} 12440,F_Insurance,F Insurance,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} @@ -5285,6 +5289,7 @@ 12580,Vending_Search_Scroll,Universal Catalog Silver,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ searchstores 10,0; },{},{} 12581,Vending_Search_Scroll2,Universal Catalog Gold,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ searchstores 10,1; },{},{} 12591,Vending_Search_Scroll3,Universal Catalog Bronze,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ searchstores 10,1; },{},{} +12622,Reins_Of_Mount,Reins Of Mount,11,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill "ALL_RIDING",1; },{},{} 12701,Old_Blue_Box_F,Old Blue Box,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} 12702,Old_Bleu_Box,Old Navy Box,2,0,,200,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem groupranditem(IG_BleuBox),1; getitem groupranditem(IG_BleuBox),1; },{},{} 12703,Holy_Egg_2,Holy Egg,11,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} @@ -5301,28 +5306,34 @@ 12714,Easter_Scroll,Easter Scroll,2,1,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem groupranditem(IG_Easter_Scroll),1; },{},{} 12715,Black_Treasure_Box,Black Treasure Box,2,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} 12716,Indian_Rice_Cake,Indian Rice Cake,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12717,Poison_Paralysis,Paralysis,2,2,,20,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12718,Poison_Leech,Leech End,2,2,,20,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12719,Poison_Oblivion,Oblivion Curse,2,2,,20,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12720,Poison_Contamination,Death Hurt,2,2,,20,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12721,Poison_Numb,Toxin,2,2,,20,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12722,Poison_Fever,Pyrexia,2,2,,20,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12723,Poison_Laughing,Magic Mushroom,2,2,,20,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12724,Poison_Fatigue,Venom Bleed,2,2,,20,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12725,Runstone_Nosiege,Nosiege Runestone,2,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12726,Runstone_Rhydo,Rhydo Runestone,2,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12727,Runstone_Verkana,Verkana Runestone,2,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12728,Runstone_Isia,Isia Runestone,2,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12729,Runstone_Asir,Asir Runestone,2,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12730,Runstone_Urj,Urj Runestone,2,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12731,Runstone_Turisus,Turisus Runestone,2,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12732,Runstone_Pertz,Pertz Runestone,2,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12733,Runstone_Hagalas,Hagalas Runestone,2,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12734,Runstone_Quality,Quality Rough Runestone,2,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12735,Runstone_Ancient,Ancient Rough Runestone,2,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12736,Runstone_Mystic,Mystic Rough Runestone,2,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12737,Runstone_Ordinary,General Rough Runestone,2,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} -12738,Runstone_Rare,Rare Rough Runestone,2,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} +// Guillotine Cross Poisons +12717,Poison_Paralysis,Paralyze,0,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ if(rand(10000) < 10) sc_start SC_PARALYSE,300000,0; },{},{} +12718,Poison_Leech,Leech End,0,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ if(rand(10000) < 10) sc_start SC_LEECHESEND,300000,0; },{},{} +12719,Poison_Oblivion,Oblivion Curse,0,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ if(rand(10000) < 10) sc_start SC_OBLIVIONCURSE,300000,0; },{},{} +12720,Poison_Disheart,Disheart,0,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ if(rand(10000) < 10) sc_start SC_DEATHHURT,300000,0; },{},{} +12721,Poison_Numb,Toxin,0,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ if(rand(10000) < 10) sc_start SC_TOXIN,300000,0; },{},{} +12722,Poison_Fever,Pyrexia,0,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ if(rand(10000) < 10) sc_start SC_PYREXIA,300000,0; },{},{} +12723,Poison_Laughing,Magic Mushroom,0,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ if(rand(10000) < 10) sc_start SC_MAGICMUSHROOM,300000,0; },{},{} +12724,Poison_Fatigue,Venom Bleed,0,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ if(rand(10000) < 10) sc_start SC_VENOMBLEED,15000,0; },{},{} + +// Rune Knight's Rune Stones +12725,Runstone_Nosiege,Nauthiz Rune,11,100,,100,,,,,0xFFFFFFFF,8,2,,,,,,{ itemskill "RK_REFRESH",1; },{},{} +12726,Runstone_Rhydo,Raido Rune,11,100,,100,,,,,0xFFFFFFFF,8,2,,,,,,{ itemskill "RK_CRUSHSTRIKE",1; },{},{} +12727,Runstone_Verkana,Berkana Rune,11,100,,100,,,,,0xFFFFFFFF,8,2,,,,,,{ itemskill "RK_MILLENNIUMSHIELD",1; },{},{} +12728,Runstone_Isia,Isa Rune,11,100,,100,,,,,0xFFFFFFFF,8,2,,,,,,{ itemskill "RK_VITALITYACTIVATION",1; },{},{} +12729,Runstone_Asir,Othila Rune,11,100,,100,,,,,0xFFFFFFFF,8,2,,,,,,{ itemskill "RK_FIGHTINGSPIRIT",1; },{},{} +12730,Runstone_Urj,Uruz Rune,11,100,,100,,,,,0xFFFFFFFF,8,2,,,,,,{ itemskill "RK_ABUNDANCE",1; },{},{} +12731,Runstone_Turisus,Thurisaz Rune,11,100,,100,,,,,0xFFFFFFFF,8,2,,,,,,{ itemskill "RK_GIANTGROWTH",1; },{},{} +12732,Runstone_Pertz,Wyrd Rune,11,100,,100,,,,,0xFFFFFFFF,8,2,,,,,,{ itemskill "RK_STORMBLAST",1; },{},{} +12733,Runstone_Hagalas,Hagalaz Rune,11,100,,100,,,,,0xFFFFFFFF,8,2,,,,,,{ itemskill "RK_STONEHARDSKIN",1; },{},{} + +// Rune Knight Rune Ores +12734,Runstone_Quality,Luxurious Rune,0,2,,100,,,,,0x00000080,8,2,,,,,,{ makerune 1; },{},{} +12735,Runstone_Ancient,Ancient Rune,0,2,,100,,,,,0x00000080,8,2,,,,,,{ makerune 2; },{},{} +12736,Runstone_Mystic,Mystic Rune,0,2,,100,,,,,0x00000080,8,2,,,,,,{ makerune 3; },{},{} +12737,Runstone_Ordinary,General Rune,0,2,,100,,,,,0x00000080,8,2,,,,,,{ makerune 4; },{},{} +12738,Runstone_Rare,Rare Rune,0,2,,100,,,,,0x00000080,8,2,,,,,,{ makerune 5; },{},{} + 12739,Snow_Flower,Snow Flowers,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} 12740,Inc_Str_Scroll,Amplification Scroll,2,1,,0,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} 12741,Inc_Int_Scroll,Intellect Amplification Scroll,2,1,,0,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} @@ -5589,38 +5600,37 @@ 13257,Kunai_Of_Furious_Wind,High Wind Kunai,10,10,,20,30,,,,0x02000000,7,2,32768,,1,,7,{ bonus bAtkEle,Ele_Wind; },{},{} 13258,Kunai_Of_Fierce_Flame,Heat Wave Kunai,10,10,,20,30,,,,0x02000000,7,2,32768,,1,,7,{ bonus bAtkEle,Ele_Fire; },{},{} 13259,Kunai_Of_Deadly_Poison,Fell Poison Kunai,10,10,,20,30,,,,0x02000000,7,2,32768,,1,,7,{ bonus bAtkEle,Ele_Poison; bonus2 bAddEff,Eff_Poison,500; },{},{} -// TODO: Update job for Cenetics only -13260,Apple_Bomb,Apple Bomb,10,100,,1,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13261,Coconut_Bomb,Coconut Bomb,10,100,,1,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13262,Melon_Bomb,Melon Bomb,10,100,,1,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13263,Pineapple_Bomb,Pineapple Bomb,10,100,,1,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13264,Banana_Bomb,Banana Bomb,10,100,,1,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13265,Black_Lump,Black Lump,10,100,,50,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13266,Black_Hard_Lump,Black Hard Lump,10,100,,50,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13267,Very_Hard_Lump,Very Hard Lump,10,100,,50,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13268,Mysterious_Powder,Mysterious Powder,10,100,,10,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13269,Throwing_Boost500,Throwing Boost500,10,100,,10,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13270,Full_SwingK_Throw,Full SwingK Throw,10,100,,50,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13271,Mana_Plus_to_Throw,Mana + Throw,10,100,,50,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13272,Cure_Free_Throw,Cure Free Throw,10,100,,50,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13273,Stamina_Up_M_To_Throw,Stamina Up M To Throw,10,100,,10,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13274,Digestive_F_To_Throw,Digestive Up F To Throw,10,100,,10,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13275,HP_Inc_PotS_To_Throw,HP Increase Potion(Small) Throw,10,100,,20,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13276,HP_Inc_PotM_To_Throw,HP Increase Potion(Mid) Throw,10,100,,40,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13277,HP_Inc_PotL_To_Throw,HP Increase Potion(Large) Throw,10,100,,80,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13278,SP_Inc_PotS_To_Throw,HP_Increase Potion(Small) Throw,10,100,,20,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13279,SP_Inc_PotM_To_Throw,SP_Increase Potion(Mid) Throw,10,100,,40,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13280,SP_Inc_PotL_To_Throw,SP_Increase Potion(Large) Throw,10,100,,80,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13281,En_White_PotZ_To_Throw,Enriched White PotionZ Throw,10,100,,70,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13282,Vitata500_To_Throw,Vitata50 Throw0,10,100,,50,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13283,En_Cel_Juice_To_Throw,Enrich Celermine Juice Throw,10,100,,50,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13284,Savage_BBQ_To_Throw,Savage BBQ Throw,10,100,,50,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13285,Wug_Cocktail_To_Throw,Wug Cocktail To Throw,10,100,,50,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13286,M_Brisket_To_Throw,Brisket To Throw,10,100,,50,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13287,Siroma_Iced_Tea_To_Throw,Siroma Iced Tea To Throw,10,100,,50,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13288,Drosera_Stew_To_Throw,Drosera Stew To Throw,10,100,,50,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13289,Petite_Noodle_To_Throw,Petite Noodle To Throw,10,100,,50,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} -13290,Black_Thing_To_Throw,Black Thing To Throw,10,100,,50,0,,,,0x0000000,7,2,32768,,99,,7,{},{},{} +13260,Apple_Bomb,Apple Bomb,17,10,,1,100,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13261,Coconut_Bomb,Coconut Bomb,17,1,,10,100,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13262,Melon_Bomb,Melon Bomb,17,10,,1,100,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13263,Pineapple_Bomb,Pineapple Bomb,17,10,,1,100,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13264,Banana_Bomb,Banana Bomb,17,10,,1,100,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13265,Black_Lump,Black Lump,17,10,,50,100,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13266,Hard_Black_Lump,Hard Black Lump,17,10,,50,100,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13267,Extremely_Hard_Black_Lump,Extremely Hard Black Lump,17,10,,50,100,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13268,Mysterious_Powder,Mysterious Powder,17,10,,10,100,,,,0xFFFFFFFF,7,2,32768,,1,,9,{ sc_start SC_MYSTERIOUS_POWDER,10000,2; },{},{} +13269,Throwing_Boost_500,Throwing Boost 500,17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13270,Throwing_Full_Swing_K,Throwing Full Swing K,17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13271,Throwing_Manaplus,Throwing Manaplus,17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13272,Throwing_Cure_Free,Throwing Cure Free,17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13273,Throwing_Muramura_M,Throwing Muramura M,17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13274,Throwing_Falmons_F,Throwing Falmons F,17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13275,Throwing_Increase_HP_Potion_(Small),Throwing Increase HP Potion (Small),17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{ sc_start SC_INCMHPRATE,500000,1; itemheal 840,0; },{},{} +13276,Throwing_Increase_HP_Potion_(Medium),Throwing Increase HP Potion (Medium),17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{ sc_start SC_INCMHPRATE,500000,2; itemheal 1040,0; },{},{} +13277,Throwing_Increase_HP_Potion_(Large),Throwing Increase HP Potion (Large),17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{ sc_start SC_INCMHPRATE,500000,5; itemheal 1240,0; },{},{} +13278,Throwing_Increase_SP_Potion_(Small),Throwing Increase SP Potion (Small),17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{ sc_start SC_INCMSPRATE,500000,2; itemheal 0,200; },{},{} +13279,Throwing_Increase_SP_Potion_(Medium),Throwing Increase SP Potion (Medium),17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{ sc_start SC_INCMSPRATE,500000,4; itemheal 0,300; },{},{} +13280,Throwing_Increase_SP_Potion_(Large),Throwing Increase SP Potion (Large),17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{ sc_start SC_INCMSPRATE,500000,8; itemheal 0,400; },{},{} +13281,Throwing_Concentrated_White_Potion_Z,Throwing Concentrated White Potion Z,17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13282,Throwing_Vitata_500,Throwing Vitata 500,17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13283,Throwing_Ceromain_Soup,Throwing Ceromain Soup,17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13284,Throwing_Savage_Full_Roast,Throwing Savage Full Roast,17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13285,Throwing_Cocktail_Warg_Blood,Throwing Cocktail Warg Blood,17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13286,Throwing_Minor_Stew,Throwing Minor Stew,17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13287,Throwing_Siroma_Iced_Tea,Throwing Siroma Iced Tea,17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13288,Throwing_Drosera_Herb_Salad,Throwing Drosera Herb Salad,17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13289,Throwing_Petite_Tail_Soup,Throwing Petite Tail Soup,17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} +13290,Throwing_Black_Mass,Throwing Black Mass,17,10,,100,0,,,,0xFFFFFFFF,7,2,32768,,1,,9,{},{},{} // Ninja Fuuma Shurikens 13300,Huuma_Bird_Wing,Huuma Wing Shuriken,4,90000,,3000,150,,1,0,0x02000000,7,2,34,4,65,1,22,{ bonus bUnbreakableWeapon,0; bonus bAtkEle,Ele_Wind; bonus bDex,-2; bonus bAgi,-1; },{},{} 13301,Huuma_Giant_Wheel,Huuma Giant Wheel Shuriken,4,40000,,2500,50,,1,3,0x02000000,7,2,34,4,42,1,22,{ bonus bUnbreakableWeapon,0; bonus2 bAddEff,Eff_Bleeding,100; },{},{} @@ -6735,16 +6745,16 @@ 16776,Universal_Catalog_Gold_Box10,Universal Catalog Gold 10 Box,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 12581,10; },{},{} 16777,Universal_Catalog_Gold_Box50,Universal Catalog Gold 50 Box,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 12581,50; },{},{} 16998,Archangel_Wings_Box,Archangel Wings Box,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 2573,1; },{},{} -// TODO: Update job for Mechanic only. -18000,Cannon_Ball,Cannon Ball,10,100,,10,100,,,,0x000A1848,7,2,32768,,1,,1,{},{},{} -18001,Holy_Cannon_Ball,Holy Cannon Ball,10,200,,100,120,,,,0x000A1848,7,2,32768,,1,,1,{},{},{} -18002,Dark_Cannon_Ball,Dark Cannon Ball,10,200,,100,120,,,,0x000A1848,7,2,32768,,1,,1,{},{},{} -18003,Soul_Cannon_Ball,Soul Cannon Ball,10,200,,100,120,,,,0x000A1848,7,2,32768,,1,,1,{},{},{} -18004,Iron_Cannon_Ball,Iron Cannon Ball,10,500,,100,250,,,,0x000A1848,7,2,32768,,1,,1,{},{},{} +//Mechanic Cannon Balls +18000,Cannon_Ball,Cannon Ball,10,100,,10,100,,,,0x00000400,8,2,32768,,1,,8,{},{},{} +18001,Holy_Cannon_Ball,Holy Cannon Ball,10,200,,100,120,,,,0x00000400,8,2,32768,,1,,8,{ bonus bAtkEle,Ele_Holy; },{},{} +18002,Dark_Cannon_Ball,Dark Cannon Ball,10,200,,100,120,,,,0x00000400,8,2,32768,,1,,8,{ bonus bAtkEle,Ele_Dark; },{},{} +18003,Soul_Cannon_Ball,Soul Cannon Ball,10,200,,100,120,,,,0x00000400,8,2,32768,,1,,8,{ bonus bAtkEle,Ele_Ghost; },{},{} +18004,Iron_Cannon_Ball,Iron Cannon Ball,10,500,,100,250,,,,0x00000400,8,2,32768,,1,,8,{ bonus bAtkEle,Ele_Neutral; },{},{} //18100,Shooting_Star_C, 18101,F_Bow_Of_Rudra_C,Rudra Bow,4,2,,0,185,,5,0,0x000A0848,7,2,34,4,0,0,11,{ bonus bAtkEle,Ele_Holy; bonus bInt,5; skill "AL_CURE",1; skill "AL_HEAL",1; bonus2 bResEff,Eff_Poison,5000; bonus2 bResEff,Eff_Curse,5000; bonus2 bResEff,Eff_Silence,5000; bonus2 bResEff,Eff_Confusion,5000; bonus2 bResEff,Eff_Blind,5000; },{},{} 18102,E_Bow_Of_Rudra_C,Rudra Bow,4,2,,0,185,,5,0,0x000A0848,7,2,34,4,0,0,11,{ bonus bAtkEle,Ele_Holy; bonus bInt,5; skill "AL_CURE",1; skill "AL_HEAL",1; bonus2 bResEff,Eff_Poison,5000; bonus2 bResEff,Eff_Curse,5000; bonus2 bResEff,Eff_Silence,5000; bonus2 bResEff,Eff_Confusion,5000; bonus2 bResEff,Eff_Blind,5000; },{},{} -18103,Mystic_Bow,Mystic Bow,4,0,,1700,75,,5,0,0x000A0848,7,2,34,3,105,1,11,{ bonus bInt,4; },{},{} +18103,Mystic_Bow,Mystic Bow,4,0,,1700,75,,5,0,0x00000400,8,2,34,3,105,1,11,{ bonus bInt,4; },{},{} //18500,Cheer_Scarf6, //18501,Cheer_Scarf8, //18502,Cheer_Scarf10, diff --git a/db/item_db_re.txt b/db/item_db_re.txt new file mode 100644 index 000000000..9d0796d49 --- /dev/null +++ b/db/item_db_re.txt @@ -0,0 +1,305 @@ +// Renewal-Specific Database
+// specially for renewal-modified items, when compiled in RRMODE entries in this file override item_db.txt and are overriden by item_db2.txt
+//
+// Structure of Database:
+// ID,Name,Name,Type,Price,Sell,Weight,ATK:MATK,DEF,Range,Slot,Job,Upper,Gender,Loc,wLV,eLV,Refineable,View,{ Script },{ OnEquip_Script },{ OnUnequip_Script }
+//
+// Note (ATK field)
+// - in RE this field is able to store a optional value, for the weapons' matk
+// - You may use, for example: 10:25 for a item to give 10 atk and 25 weapon matk.
+
+//ASPD in RE they give a fixed +4/+6/+9 ASPD
+645,Center_Potion,Concentration Potion,2,800,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_ASPDPOTION0,1800000,4; },{},{}
+656,Awakening_Potion,Awakening Potion,2,1500,,150,,,,,0xFFF7FEEF,7,2,,,40,,,{ sc_start SC_ASPDPOTION1,1800000,6; },{},{}
+657,Berserk_Potion,Berserk Potion,2,3000,,200,,,,,0x01E646A6,7,2,,,85,,,{ sc_start SC_ASPDPOTION2,1800000,9; },{},{}
+
+// Matk updates. Work in progress.
+// Daggers
+13010,Asura,Asura,4,3000,,600,50:50,,1,2,0x02000000,7,2,2,1,12,1,1,{},{},{}
+13011,Asura_,Asura,4,3000,,600,50:50,,1,3,0x02000000,7,2,2,1,12,1,1,{},{},{}
+1231,Bazerald,Bazerald,4,20,,500,70:105,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bAtkEle,Ele_Fire; bonus bInt,5; },{},{}
+
+// Staffs
+1472,Staff_Of_Soul,Soul Staff,4,20,,1400,25:200,,1,0,0x00810204,7,2,34,3,73,1,10,{ bonus bInt,5; bonus bAgi,2; if(isequipped(2677) || isequipped(2711)){ bonus bMatkRate,6; bonus bDex,2; bonus bCastrate,-getrefine(); } },{},{}
+1601,Rod,Rod,4,50,,400,15:30,,1,3,0x00818315,7,2,2,1,1,1,10,{},{},{}
+1602,Rod_,Rod,4,50,,400,15:30,,1,4,0x00818315,7,2,2,1,1,1,10,{},{},{}
+1603,Rod__,Rod,4,50,,400,15:30,,1,0,0x00818315,7,2,2,1,1,1,10,{},{},{}
+1604,Wand,Wand,4,2500,,400,25:45,,1,2,0x00818315,7,2,2,2,12,1,10,{},{},{}
+1605,Wand_,Wand,4,2500,,400,25:45,,1,3,0x00818315,7,2,2,2,12,1,10,{},{},{}
+1606,Wand__,Wand,4,2500,,400,25:45,,1,0,0x00818315,7,2,2,2,12,1,10,{ bonus bInt,1; },{},{}
+1607,Staff,Staff,4,9500,,400,40:70,,1,2,0x00818314,7,2,2,2,12,1,10,{ bonus bInt,2; },{},{}
+1608,Staff_,Staff,4,9500,,400,40:70,,1,3,0x00818314,7,2,2,2,12,1,10,{ bonus bInt,2; },{},{}
+1609,Staff__,Staff,4,9500,,400,40:70,,1,0,0x00818314,7,2,2,2,12,1,10,{ bonus bInt,2; },{},{}
+1610,Arc_Wand,Arc Wand,4,45000,,400,60:95,,1,1,0x00818314,7,2,2,3,24,1,10,{ bonus bInt,3; },{},{}
+1611,Arc_Wand_,Arc Wand,4,45000,,400,60:95,,1,2,0x00818314,7,2,2,3,24,1,10,{ bonus bInt,3; },{},{}
+1612,Arc_Wand__,Arc Wand,4,45000,,400,60:95,,1,0,0x00818314,7,2,2,3,24,1,10,{ bonus bInt,3; },{},{}
+1613,Mighty_Staff,Mighty Staff,4,20,,700,130:100,,1,0,0x00818314,7,2,2,3,24,1,10,{ bonus bStr,10; bonus bSPDrainValue,-2; },{},{}
+1614,Blessed_Wand,Wand of Occult,4,20,,700,75:105,,1,0,0x00818314,7,2,2,3,24,1,10,{ bonus bInt,3; },{},{}
+1616,Staff_Of_Wing,Wing Staff,4,20,,500,60:115,,1,0,0x00810204,7,2,2,4,40,1,10,{ bonus bCastrate,-5; },{},{}
+1617,Survival_Rod,Survivor's Rod,4,85000,,1000,50:120,,1,0,0x00818314,7,2,2,3,24,1,10,{ bonus bDex,2; bonus bMaxHP,300; },{},{}
+1618,Survival_Rod_,Survivor's Rod,4,85000,,1000,50:120,,1,1,0x00818314,7,2,2,3,24,1,10,{ bonus bDex,3; bonus bMaxHP,400; },{},{}
+1619,Survival_Rod2,Survivor's Rod,4,85000,,1000,50:120,,1,0,0x00818314,7,2,2,3,24,1,10,{ bonus bInt,2; bonus bMaxHP,300; },{},{}
+1620,Survival_Rod2_,Survivor's Rod,4,85000,,1000,50:120,,1,1,0x00818314,7,2,2,3,24,1,10,{ bonus bInt,3; bonus bMaxHP,400; },{},{}
+1621,Hypnotist's_Staff,Hypnotist's Staff,4,43000,,500,70:120,,1,1,0x00000001,7,2,2,3,30,1,10,{ bonus bInt,1; },{},{}
+1622,Hypnotist's_Staff_,Hypnotist's Staff,4,20,,500,70:120,,1,2,0x00000001,7,2,2,3,30,1,10,{ bonus bInt,1; },{},{}
+1624,Lich_Bone_Wand,Lich's Bone Wand,4,20,,800,60:170,,1,2,0x00018314,2,2,2,3,70,1,10,{ bonus bInt,1; bonus bDex,1; bonus bAtkEle,Ele_Undead; bonus3 bAutoSpellWhenHit,"NPC_WIDECURSE",5,10+getrefine(); if(getrefine()>=9){ bonus bMatkRate,3; bonus bMaxSP,300; } },{},{}
+1625,Healing_Staff,Healing Staff,4,20,,400,10:105,,1,0,0x00008110,7,2,2,3,55,1,10,{ bonus bAtkEle,Ele_Holy; bonus bHealPower,(getrefine()*3/2); },{},{}
+1626,Piercing_Staff,Piercing Staff,4,20,,500,80:145,,1,0,0x00018314,2,2,2,3,70,1,10,{ bonus bInt,4; bonus bIgnoreMdefRate,10+getrefine(); },{},{}
+1629,Walking_Stick,Gentleman's Staff,4,20,,500,40:125,,1,1,0x00818314,7,2,2,4,50,1,10,{ bonus bDex,1; if (isequipped(5045)) { bonus bDex,2; bonus bInt,2; bonus bSPrecovRate,5; bonus bMatkRate,getrefine(); } },{},{}
+1630,Release_Of_Wish,Release of Wish,4,20,,500,30:125,,1,0,0x00810204,7,2,2,3,50,1,10,{ bonus bInt,3; bonus bHealPower,5; autobonus "{ bonus2 bSPRegenRate,100,2000; bonus2 bHPRegenRate,50,2000; }",10,10000,BF_MAGIC,"{ specialeffect2 EF_HEAL; }"; },{},{}
+1636,Thorn_Staff,Thorn Staff of Darkness,4,20,,700,60:160,,1,0,0x00018314,2,2,2,4,75,1,10,{ bonus bInt,3; bonus bDex,3; bonus bIgnoreMdefRate,getrefine(); bonus bDelayRate,-(getrefine()*3/2); },{},{}
+1637,Eraser,Eraser,4,20,,500,80:170,,1,0,0x00018314,2,2,2,4,70,1,10,{ bonus bInt,3; bonus bDex,2; bonus bSPrecovRate,8; if( getrefine() > 9 ) bonus5 bAutoSpell,"NPC_WIDESOULDRAIN",3,5,BF_MAGIC,0; else bonus5 bAutoSpell,"NPC_WIDESOULDRAIN",1,5,BF_MAGIC,0; },{},{}
+2000,Destruction_Rod,Staff of Destruction,4,20,,2500,130:280,,1,1,0x00000200,2,2,34,4,80,1,23,{ bonus bInt,3; bonus bAgi,10; bonus bUseSPrate,(getrefine()*2); bonus3 bAutoSpellWhenHit,"WZ_JUPITEL",5,(getrefine()*20); bonus2 bCastrate,366,-50; },{},{}
+2001,Divine_Cross,Divine Cross,4,20,,1500,120:210,,1,0,0x00008100,7,2,34,4,70,1,23,{ bonus bAtkEle,Ele_Holy; bonus bDex,4; bonus2 bSubRace,RC_Demon,15; bonus2 bSubRace,RC_Undead,15; if (isequipped(2677) || isequipped(2711)) { bonus bMatkRate,10; bonus bDex,2; bonus2 bSubRace,RC_Demon,10; bonus2 bSubRace,RC_Undead,10; }; },{},{}
+
+// Books
+1560,Diary_Of_Great_Sage,Sage's Diary,4,20,,1100,100:120,,1,2,0x00410100,7,2,2,3,60,1,15,{ if(readparam(bStr)>=50) bonus bAspdRate,5; if(readparam(bInt)>=70) bonus bMatkRate,5; },{},{}
+1561,Hardback,Hardcover Book,4,20,,1500,140,,1,1,0x00410100,7,2,2,4,55,1,15,{ bonus bStr,3; bonus bDex,2; },{},{}
+1572,Principles_Of_Magic,Principles of Magic,4,20,,300,60:160,,1,2,0x00410100,7,2,2,3,60,1,15,{ bonus bInt,3; bonus bSPrecovRate,5; },{},{}
+1573,Ancient_Magic,Ancient Magic,4,20,,700,30:140,,1,2,0x00410100,7,2,2,3,70,1,15,{ if (isequipped(2334) || isequipped(2372)) { bonus bMdef,8; bonus bMaxSPRate,10; bonus bInt,4; }; },{},{}
+1564,Encyclopedia,Encyclopedia,4,20,,2000,110:100,,1,2,0x00410100,7,2,2,3,70,1,15,{ bonus bInt,3; bonus bDex,2; bonus bCritical,20+((readparam(bLuk)*2)/10); },{},{}
+
+// DEF updates
+// Headgears - Work in progress.
+2208,Ribbon,Ribbon,5,800,,100,,1,,0,0xFFFFFFFF,7,0,256,,0,1,17,{ bonus bMdef,3; },{},{}
+2209,Ribbon_,Ribbon,5,800,,100,,1,,1,0xFFFFFFFF,7,0,256,,0,1,17,{ bonus bMdef,3; },{},{}
+2216,Biretta,Biretta,5,9000,,100,,8,,0,0x00008110,7,2,256,,0,1,11,{},{},{}
+2217,Biretta_,Biretta,5,9000,,100,,8,,1,0x00008110,7,2,256,,0,1,11,{},{},{}
+2252,Star_Sparkling,Wizard Hat,5,20,,300,,7,,0,0x00810204,7,2,256,,0,1,36,{ bonus bMaxSP,100; },{},{}
+2266,Iron_Cane,Iron Cain,5,20,,300,,4,,0,0x00004082,7,2,1,,50,0,53,{},{},{}
+2280,Sahkkat,Sakkat,5,20,,300,,4,,0,0xFFFFFFFF,7,2,256,,0,1,67,{ bonus bAgi,1; },{},{}
+2285,Apple_Of_Archer,Apple of Archer,5,20,,200,,1,,0,0xFFFFFFFE,7,2,256,,30,1,72,{ bonus bDex,3; },{},{}
+2287,Pirate_Bandana,Pirate Bandana,5,20,,100,,4,,0,0xFFFFFFFE,7,2,256,,0,1,74,{ bonus bStr,1; },{},{}
+2299,Viking_Helm,Orc Helm,5,20,,500,,9,,0,0x000654E2,7,2,256,,0,1,86,{},{},{}
+5007,Loard_Circlet,Grand Circlet,5,20,,200,,7,,0,0xFFFFFFFE,7,2,256,,55,1,93,{ bonus bStr,1; bonus bInt,1; bonus bLuk,1; bonus bMdef,4; },{},{}
+5010,Indian_Hair_Piece,Indian Fillet,5,20,,100,,5,,0,0xFFFFFFFF,7,2,256,,0,1,96,{},{},{}
+5015,Egg_Shell,Egg Shell,5,20,,200,,6,,0,0xFFFFFFFF,7,2,256,,0,0,101,{},{},{}
+5017,Bone_Helm,Bone Helm,5,20,,800,,15,,0,0x000444A2,7,2,256,,70,1,103,{ bonus2 bSubEle,Ele_Dark,-15; },{},{}
+5058,Drooping_Kitty,Drooping Cat,5,250000,,500,,3,,0,0xFFFFFFFE,7,2,256,,0,1,142,{ bonus bMdef,15; bonus2 bResEff,Eff_Curse,3000; },{},{}
+5111,Galapago_Cap,Galapago Cap,5,20,,500,,4,,0,0xFFFFFFFF,7,2,256,,55,1,192,{ bonus2 bAddMonsterDropItem,605,100; },{},{}
+5118,Ear_Of_Puppy,Puppy Headband,5,20,,100,,3,,0,0xFFFFFFFF,7,2,256,,0,1,199,{},{},{}
+5122,Magni_Cap,Magni's Cap,5,30000,,1000,,9,,0,0xFFFFFFFE,7,2,256,,65,1,250,{ bonus bStr,2; },{},{}
+5128,Goibne's_Helmet,Goibne's Helm,5,30000,,500,,10,,0,0xFFFFFFFE,7,2,256,,54,1,258,{ bonus bVit,3; bonus bMdef,3; if(isequipped(2354,2419,2520)) { bonus bVit,5; bonus bMaxHPrate,15; bonus bMaxSPrate,5; bonus bDef,5; bonus bMdef,15; bonus2 bSubEle,Ele_Water,10; bonus2 bSubEle,Ele_Earth,10; bonus2 bSubEle,Ele_Fire,10; bonus2 bSubEle,Ele_Wind,10; } },{},{}
+5157,Viking_Helm_,Orc Helm,5,20,,500,,9,,1,0x000654E2,7,2,256,,0,1,86,{},{},{}
+5350,Pirate_Bandana_,Pirate Bandana,5,20,,100,,4,,1,0xFFFFFFFE,7,2,256,,0,1,74,{ bonus bStr,1; },{},{}
+
+// Shields
+2101,Guard,Guard,5,500,,300,,20,,0,0xFFFFFFFF,7,2,32,,0,1,1,{},{},{}
+2102,Guard_,Guard,5,500,,300,,20,,1,0xFFFFFFFF,7,2,32,,0,1,1,{},{},{}
+2103,Buckler,Buckler,5,14000,,600,,40,,0,0x000ED5F2,7,2,32,,0,1,2,{},{},{}
+2104,Buckler_,Buckler,5,14000,,600,,40,,1,0x000ED5F2,7,2,32,,0,1,2,{},{},{}
+2105,Shield,Shield,5,56000,,1300,,60,,0,0x00004082,7,2,32,,0,1,3,{},{},{}
+2106,Shield_,Shield,5,56000,,1300,,60,,1,0x00004082,7,2,32,,0,1,3,{},{},{}
+2107,Mirror_Shield,Mirror Shield,5,60000,,1000,,45,,0,0x00404082,7,2,32,,0,1,4,{ bonus bMdef,5; },{},{}
+2108,Mirror_Shield_,Mirror Shield,5,60000,,1000,,45,,1,0x00404082,7,2,32,,0,1,4,{ bonus bMdef,5; },{},{}
+2109,Memorize_Book,Memory Book,5,20,,1000,,25,,0,0x00810204,7,2,32,,0,1,5,{ bonus bInt,1; bonus bMdef,2; if (isequipped(2717,2239)) { bonus bHPrecovRate,15; bonus bSPrecovRate,15; bonus bMatkRate,7; }; },{},{}
+2110,Holy_Guard,Holy Guard,5,85000,,1400,,110,,0,0x00004000,7,2,32,,68,0,4,{ bonus bVit,2; bonus bMdef,2; },{},{}
+2111,Herald_Of_GOD,Sacred Mission,5,128000,,1600,,120,,0,0x00004000,7,2,32,,83,1,4,{ bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakableShield,0; },{},{}
+2112,Novice_Guard,Novice Guard,5,1,,1,,20,,0,0x00000001,7,2,32,,0,0,1,{},{},{}
+2113,Novice_Shield,Novice Shield,5,5000,,1000,,20,,1,0x00000001,7,2,32,,40,1,3,{ bonus2 bSubEle,Ele_Water,20; bonus2 bSubEle,Ele_Earth,20; bonus2 bSubEle,Ele_Fire,20; bonus2 bSubEle,Ele_Wind,20; bonus2 bSubEle,Ele_Poison,20; bonus2 bSubEle,Ele_Ghost,20; bonus2 bSubEle,Ele_Undead,20; },{},{}
+2114,Stone_Buckler,Stone Buckler,5,30000,,1500,,45,,1,0xFFFFFFFE,7,2,32,,65,1,2,{ bonus2 bSubSize,2,5; if (isequipped(2353,5122)) { bonus bStr,2; bonus bDef,5; bonus bMdef,5; if(BaseClass == Job_Swordman) bonus bDef,6; } },{},{}
+2115,Valkyrja's_Shield,Valkyrja's Shield,5,30000,,500,,80,,1,0xFFFFFFFE,7,2,32,,65,1,4,{ bonus2 bSubEle,Ele_Water,20; bonus2 bSubEle,Ele_Fire,20; bonus2 bSubEle,Ele_Dark,20; bonus2 bSubEle,Ele_Undead,20; bonus bMdef,5; if(isequipped(2353,5124)) { bonus bDef,2-getrefine()-getequiprefinerycnt(EQI_HEAD_TOP); bonus bMdef,5+getrefine()+getequiprefinerycnt(EQI_HEAD_TOP); } },{},{}
+2116,Angel's_Safeguard,Angelic Guard,5,10000,,400,,30,,1,0x00000001,7,2,32,,20,1,1,{ bonus2 bSubRace,RC_Demon,5; },{},{}
+2117,Arm_Guard,Arm Guard,5,10000,,150,,50,,0,0x02000000,7,2,32,,20,1,1,{},{},{}
+2118,Arm_Guard_,Arm Guard,5,10000,,150,,50,,1,0x02000000,7,2,32,,20,1,1,{},{},{}
+2119,Improved_Arm_Guard,Advanced Arm Guard,5,40000,,150,,45,,0,0x02000000,7,2,32,,50,1,1,{ bonus bMdef,5; },{},{}
+2120,Improved_Arm_Guard_,Advanced Arm Guard,5,40000,,150,,45,,1,0x02000000,7,2,32,,50,1,1,{ bonus bMdef,5; },{},{}
+2121,Memorize_Book_,Memory Book,5,20,,1000,,25,,1,0x00810204,7,2,32,,0,1,5,{ bonus bInt,1; bonus bMdef,2; if (isequipped(2717,2239)) { bonus bHPrecovRate,15; bonus bSPrecovRate,15; bonus bMatkRate,7; }; },{},{}
+2122,Platinum_Shield,Platinum Shield,5,20,,1200,,95,,0,0xFFFFFFFE,2,2,32,,68,1,4,{ bonus bMdef,5; bonus2 bSubSize,1,15; bonus2 bSubSize,2,15; bonus2 bSubRace,RC_Undead,10; bonus5 bAutoSpellWhenHit,NPC_MAGICMIRROR,2,150,BF_MAGIC,0; },{},{}
+2123,Orleans_Server,Orleans's Server,5,20,,1000,,75,,1,0xFFFFFFFE,2,2,32,,55,1,4,{ bonus bMdef,2; bonus bMagicDamageReturn,5; if (isequipped(2701)) bonus bCastrate,-10; },{},{}
+2124,Thorny_Buckler,Thorny Buckler,5,20,,1000,,85,,1,0xFFFFFFFE,2,2,32,,55,1,2,{ bonus bMdef,2; if (isequipped(2702)) { bonus bAspdRate,10; bonus bShortWeaponDamageReturn,5; } },{},{}
+2125,Strong_Shield,Strong Shield,5,20,,2500,,90,,1,0xFFFFFFFE,2,2,32,,75,1,4,{ bonus bNoKnockback,0; bonus2 bSubEle,Ele_Neutral,-20; bonus2 bSubEle,Ele_Fire,-20; bonus2 bSubEle,Ele_Water,-20; bonus2 bSubEle,Ele_Wind,-20; bonus2 bSubEle,Ele_Earth,-20; bonus2 bSubEle,Ele_Dark,-20; bonus2 bSubEle,Ele_Holy,-20; bonus2 bSubEle,Ele_Ghost,-20; },{},{}
+2128,Herald_Of_GOD_,Sacred Mission,5,128000,,1600,,120,,1,0x00004000,7,2,32,,83,1,4,{ bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakableShield,0; },{},{}
+2129,Exorcism_Bible,Exorcism Bible,5,20,,600,,80,,0,0x00008100,7,2,32,,50,1,5,{ bonus bHPrecovRate,3; bonus bSPrecovRate,3; bonus bInt,1; if(isequipped(1631)) { bonus2 bSkillAtk,"PR_MAGNUS",20; bonus3 bAutoSpellWhenHit,"PR_TURNUNDEAD",1,20; } },{},{}
+2130,Cross_Shield,Cross Shield,5,20,,2000,,130,,1,0x00004000,7,2,32,,80,1,4,{ bonus bStr,1; bonus2 bSkillAtk,PA_SHIELDCHAIN,30; bonus2 bSkillAtk,CR_SHIELDBOOMERANG,30; bonus bUseSPrate,10; },{},{}
+2131,Magic_Study_Vol1,Magic Bible Vol1,5,20,,1000,,18,,1,0x00810204,2,2,32,,70,1,5,{ bonus bMdef,3; bonus bInt,2; bonus2 bAddEffWhenHit,Eff_Stun,1000; },{},{}
+2133,Tournament_Shield,Tournament Shield,5,20,,1000,,105,,1,0x00004082,2,2,32,,50,1,4,{ bonus2 bAddRace,RC_NonBoss,1; bonus2 bAddRace,RC_Boss,1; if( Class == Job_Lord_Knight ) bonus bAspdRate,-5; if( isequipped(1420) || isequipped(1421) || isequipped(1422) ) { bonus2 bAddRace,RC_NonBoss,4; bonus2 bAddRace,RC_Boss,4; bonus bDef,2; } },{},{}
+2134,Shield_Of_Naga,Shield of Naga,5,20,,500,,35,,1,0x00CFFF80,2,2,32,,70,1,2,{ bonus bMdef,3; autobonus2 "{ bonus bShortWeaponDamageReturn,(getrefine()*3); }",10,5000,BF_WEAPON,"{ specialeffect2 EF_GUARD; }"; },{},{}
+2135,Shadow_Guard,Shadow Guard,5,20,,800,,52,,1,0x00020000,2,2,32,,70,1,2,{ if( isequipped(2426) ) { bonus2 bAddEff,Eff_Blind,500; autobonus "{ bonus bFlee,20; }",200,10000,BF_WEAPON,"{ specialeffect2 EF_INCAGILITY; }"; } },{},{}
+2138,Bradium_Shield,Bradium Shield,5,20,,1800,,98,,1,0x00CFFF80,2,2,32,,65,1,3,{ bonus2 bSkillAtk,CR_SHIELDBOOMERANG,60; bonus bAgi,-1; bonus bMaxHP,500; },{},{}
+2139,Flame_Thrower,Flame Thrower,5,20000,,2000,,60,,0,0xFFFFFFFF,7,2,32,,99,0,1,{},{},{}
+
+// Footgear
+2401,Sandals,Sandals,5,400,,200,,5,,0,0xFFFFFFFF,7,2,64,,0,1,0,{},{},{}
+2402,Sandals_,Sandals,5,400,,200,,5,,1,0xFFFFFFFF,7,2,64,,0,1,0,{},{},{}
+2403,Shoes,Shoes,5,3500,,400,,10,,0,0xFFFFFFFE,7,2,64,,0,1,0,{},{},{}
+2404,Shoes_,Shoes,5,3500,,400,,10,,1,0xFFFFFFFE,7,2,64,,0,1,0,{},{},{}
+2405,Boots,Boots,5,18000,,600,,16,,0,0x016E5CEA,7,2,64,,0,1,0,{},{},{}
+2406,Boots_,Boots,5,18000,,600,,16,,1,0x016E5CEA,7,2,64,,0,1,0,{},{},{}
+2407,Chrystal_Pumps,Crystal Pumps,5,20,,100,,5,,0,0xFFFFFFFE,7,0,64,,0,1,0,{ bonus bMdef,10; bonus bLuk,5; },{},{}
+2408,Cuffs,Shackles,5,5000,,3000,,15,,0,0xFFFFFFFF,7,2,64,,0,1,0,{ if (isequipped(2655)) { bonus bBaseAtk,50; bonus2 bAddDefClass,1196,20; bonus2 bAddDefClass,1197,20; } },{},{}
+2409,Spiky_Heel,High Heels,5,8500,,600,,4,,0,0xFFFFFFFE,7,2,64,,0,1,0,{ bonus bMdef,5; },{},{}
+2410,Sleipnir,Sleipnir,5,20,,3500,,40,,0,0xFFFFFFFF,7,2,64,,94,0,0,{ bonus bMdef,10; bonus bMaxHPrate,20; bonus bMaxSPrate,20; bonus bSPrecovRate,15; bonus bSpeedRate,25; },{},{}
+2411,Grave,Greaves,5,48000,,750,,27,,0,0x00004080,7,2,64,,65,1,0,{},{},{}
+2412,Grave_,Greaves,5,54000,,750,,15,,1,0x00004080,7,2,64,,65,1,0,{},{},{}
+2414,Novice_Boots,Novice Slippers,5,1,,1,,5,,0,0x00000001,7,2,64,,0,0,0,{},{},{}
+2416,Novice_Shoes,Novice Shoes,5,35000,,500,,8,,1,0x00000001,7,2,64,,40,1,0,{ bonus bMaxHPrate,5; },{},{}
+2417,Fricco_Shoes,Fricco's Shoes,5,30000,,500,,12,,0,0xFFFFFFFE,7,2,64,,65,1,0,{ bonus bAgi,2; bonus2 bAddItemHealRate,IG_Potion,20; if(isequipped(2353,2516)){ bonus bAgi,3; bonus bMaxHPrate,5; bonus bMaxSPrate,5; } },{},{}
+2418,Vidar's_Boots,Vidar's Boots,5,30000,,650,,13,,0,0xFFFFFFFE,7,2,64,,65,1,0,{ bonus bMaxHPrate,9; bonus bMaxSPrate,9; if(isequipped(2353,2517)){ bonus bVit,5; bonus bHPrecovRate,10; bonus bSPrecovRate,10; } },{},{}
+2419,Goibne's_Combat_Boots,Goibne's Greaves,5,30000,,700,,13,,0,0xFFFFFFFE,7,2,64,,54,1,0,{ bonus bMdef,3; bonus bMaxHPrate,5; bonus bMaxSPrate,5; },{},{}
+2420,Angel's_Arrival,Angel's Reincarnation,5,10000,,300,,8,,1,0x00000001,7,2,64,,25,1,0,{ bonus bMaxHP,100; },{},{}
+2421,Valkyrie_Shoes,Valkyrian Shoes,5,0,,500,,13,,1,0xFFFFFFFE,2,2,64,,1,1,0,{ bonus bUnbreakableShoes,0; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus bMaxHP,(BaseLevel*5); else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus bMaxSP,(JobLevel*2); },{},{}
+2422,High_Fashion_Sandals,High Fashion Sandals,5,24000,,200,,7,,1,0x00818314,7,2,64,,40,1,0,{ bonus bMdef,10; },{},{}
+2423,Variant_Shoes,Variant Shoes,5,20,,500,,13,,0,0xFFFFFFFE,2,2,64,,85,1,0,{ bonus bMaxHPRate,20-getrefine(); bonus bMaxSPRate,20-getrefine(); bonus bDef,getrefine()/2; },{},{}
+2424,Tidal_Shoes,Tidal Shoes,5,20,,300,,13,,1,0xFFFFFFFE,2,2,64,,55,1,0,{ bonus2 bSubEle,Ele_Water,5; if (isequipped(2528)) { bonus bHPrecovRate,5; bonus bMaxHPrate,10; } },{},{}
+2425,Black_Leather_Boots,Black Leather Boots,5,20,,500,,16,,0,0xFFFFFFFE,2,2,64,,55,1,0,{ bonus bAgi,1; if(getrefine() >= 9) bonus bAgi,2; },{},{}
+2426,Shadow_Walk,Shadow Walk,5,20,,2000,,0,,0,0xFFFFFFFE,2,2,64,,75,1,0,{ bonus bMdef,10; if(getskilllv("AS_CLOAKING") < 3){ bonus5 bAutoSpellWhenHit,"AS_CLOAKING",3,100,BF_MAGIC,0; } else bonus5 bAutoSpellWhenHit,"AS_CLOAKING",getskilllv("AS_CLOAKING"),100,BF_MAGIC,0; },{},{}
+2432,Spiky_Heel_,High Heels,5,8500,,600,,10,,1,0xFFFFFFFE,7,2,64,,0,1,0,{ bonus bMdef,5; },{},{}
+2433,Diabolus_Boots,Diabolus Boots,5,20,,250,,15,,1,0x00CFFF80,2,2,64,,0,1,0,{ bonus bMaxHP,(BaseLevel*10); },{},{}
+2434,Black_Leather_Boots_,Black Leather Boots,5,20,,500,,16,,1,0xFFFFFFFE,2,2,64,,55,1,0,{ bonus bAgi,1; if(getrefine() >= 9) bonus bAgi,2; },{},{}
+2435,Battle_Greave,Battle Greaves,5,10,,0,,15,,1,0x026654E2,7,2,64,,80,1,0,{ bonus bMaxHP,100; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; },{},{}
+2436,Combat_Boots,Combat Boots,5,10,,0,,9,,1,0x00898B1C,7,2,64,,80,1,0,{ bonus bMaxHP,100; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; },{},{}
+2437,Battle_Boots,Battle Boots,5,10,,0,,9,,1,0x01000000,7,2,64,,80,1,0,{ bonus bMaxHP,100; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; },{},{}
+2440,Sprint_Shoes,Sprint Shoes,5,20,,300,,10,,1,0x00CFFF80,2,2,64,,70,1,0,{ bonus bAgi,1; bonus bSPrecovRate,5; },{},{}
+2444,Krieger_Shoes1,Glorious Shoes,5,20,,0,,0,,0,0xFFFFFFFE,7,2,64,,81,1,0,{ bonus bMaxHPRate,10; bonus2 bSubRace,RC_DemiHuman,4; bonus3 bAutoSpellWhenHit,"AL_INCAGI",1,10; },{},{}
+2445,Krieger_Shoes2,Glorious Popularized Shoes,5,20,,0,,0,,0,0xFFFFFFFE,7,2,64,,61,1,0,{ bonus bMaxHPRate,5; bonus bMaxSPRate,5; },{},{}
+2446,Krieger_Shoes3,Glorious Mass-Production Shoes,5,20,,0,,10,,0,0xFFFFFFFE,7,2,64,,0,1,0,{ bonus bMaxHPRate,5; },{},{}
+2447,Military_Boots,Army Boots,5,0,,1000,,5,,0,0xFFFFFFFE,7,2,64,,0,1,0,{},{},{}
+2450,Vital_Tree_Shoes,Vital Tree Shoes,5,20,,500,,16,,0,0xFFFFFFFE,2,2,64,,60,1,0,{ bonus bMaxHPrate,10; bonus2 bHPRegenRate,30,10000; bonus bHealpower2,5; bonus bAddItemHealRate,5; bonus bMdef,3; bonus bVit,2; },{},{}
+2456,Para_Team_Boots1,Eden Team Boots I,5,0,,0,,14,,0,0xFFFFFFFF,7,2,64,,12,0,0,{ bonus bHPrecovRate,10; bonus bSPrecovRate,2; },{},{}
+2457,Para_Team_Boots2,Eden Team Boots II,5,0,,0,,16,,0,0xFFFFFFFF,7,2,64,,26,0,0,{ bonus bHPrecovRate,12; bonus bSPrecovRate,4; },{},{}
+2458,Para_Team_Boots3,Eden Team Boots III,5,0,,0,,18,,0,0xFFFFFFFF,7,2,64,,40,0,0,{ bonus bHPrecovRate,14; bonus bSPrecovRate,6; },{},{}
+2463,Feral_Boots,Feral Boots,5,20,,0,,12,,0,0xFFFFFFFF,7,2,64,,75,0,0,{ bonus bMdef,2; },{},{}
+
+// Armor
+2301,Cotton_Shirt,Cotton Shirt,5,10,,100,,10,,0,0xFFFFFFFF,7,2,16,,0,1,0,{},{},{}
+2302,Cotton_Shirt_,Cotton Shirt,5,10,,100,,10,,1,0xFFFFFFFF,7,2,16,,0,1,0,{},{},{}
+2303,Leather_Jacket,Jacket,5,200,,200,,15,,0,0xFFFFFFFF,7,2,16,,0,1,0,{},{},{}
+2304,Leather_Jacket_,Jacket,5,200,,200,,15,,1,0xFFFFFFFF,7,2,16,,0,1,0,{},{},{}
+2305,Adventure_Suit,Adventurer's Suit,5,1000,,300,,20,,0,0xFFFFFFFF,7,2,16,,0,1,0,{},{},{}
+2306,Adventurere's_Suit_,Adventurer's Suit,5,1000,,300,,20,,1,0xFFFFFFFF,7,2,16,,0,1,0,{},{},{}
+2307,Mantle,Mantle,5,10000,,600,,37,,0,0xFFFFFFFE,7,2,16,,0,1,0,{},{},{}
+2308,Mantle_,Mantle,5,10000,,600,,37,,1,0xFFFFFFFE,7,2,16,,0,1,0,{},{},{}
+2309,Coat,Coat,5,22000,,1200,,42,,0,0xFFFFFFFE,7,2,16,,0,1,0,{},{},{}
+2310,Coat_,Coat,5,22000,,1200,,42,,1,0xFFFFFFFE,7,2,16,,0,1,0,{},{},{}
+2311,Mink_Coat,Mink Coat,5,20,,2300,,30,,1,0xFFFFFFFE,7,2,16,,30,1,0,{},{},{}
+2312,Padded_Armor,Padded Armor,5,48000,,2800,,35,,0,0x000654E2,7,2,16,,0,1,0,{ if(isequipped(2656)) { bonus bDef,5; bonus bMaxHP,150; } },{},{}
+2313,Padded_Armor_,Padded Armor,5,48000,,2800,,35,,1,0x000654E2,7,2,16,,0,1,0,{ if(isequipped(2656)) { bonus bDef,5; bonus bMaxHP,150; } },{},{}
+2314,Chain_Mail,Chain Mail,5,65000,,3300,,55,,0,0x000654E2,7,2,16,,0,1,0,{},{},{}
+2315,Chain_Mail_,Chain Mail,5,65000,,3300,,55,,1,0x000654E2,7,2,16,,0,1,0,{},{},{}
+2316,Plate_Armor,Full Plate,5,80000,,4500,,70,,0,0x00004082,7,2,16,,40,1,0,{},{},{}
+2317,Plate_Armor_,Full Plate,5,80000,,4500,,70,,1,0x00004082,7,2,16,,40,1,0,{},{},{}
+2318,Clothes_Of_The_Lord,Lord's Clothes,5,20,,2500,,59,,1,0x00040420,7,2,16,,70,1,0,{ bonus bMdef,5; bonus bInt,1; },{},{}
+2319,Glittering_Clothes,Glittering Jacket,5,20,,2500,,58,,1,0xFFFFFFFE,7,2,16,,60,1,0,{ bonus bMdef,5; bonus2 bAddEff,Eff_Blind,300; },{},{}
+2320,Formal_Suit,Formal Suit,5,20,,300,,40,,1,0xFFFFFFFE,7,2,16,,0,1,0,{},{},{}
+2321,Silk_Robe,Silk Robe,5,8000,,400,,20,,0,0x0085C7B6,7,2,16,,0,1,0,{ bonus bMdef,10; },{},{}
+2322,Silk_Robe_,Silk Robe,5,8000,,400,,20,,1,0x0085C7B6,7,2,16,,0,1,0,{ bonus bMdef,10; },{},{}
+2323,Scapulare,Scapulare,5,6500,,400,,24,,0,0x00008110,7,2,16,,0,1,0,{},{},{}
+2324,Scapulare_,Scapulare,5,6500,,400,,24,,1,0x00008110,7,2,16,,0,1,0,{},{},{}
+2325,Saint_Robe,Saint's Robe,5,54000,,600,,50,,0,0x00048530,7,2,16,,0,1,0,{ bonus bMdef,5; },{},{}
+2326,Saint_Robe_,Saint's Robe,5,54000,,600,,50,,1,0x00048530,7,2,16,,0,1,0,{ bonus bMdef,5; },{},{}
+2327,Holy_Robe,Holy Robe,5,20,,1700,,57,,0,0x00008110,7,2,16,,60,1,0,{ bonus bMdef,5; bonus2 bSubRace,RC_Demon,15; bonus2 bSubEle,Ele_Dark,10; },{},{}
+2328,Wooden_Mail,Wooden Mail,5,5500,,1000,,25,,0,0x000444A2,7,2,16,,0,1,0,{},{},{}
+2329,Wooden_Mail_,Wooden Mail,5,5500,,1000,,25,,1,0x000444A2,7,2,16,,0,1,0,{},{},{}
+2330,Tights,Tights,5,71000,,500,,27,,0,0x00080808,7,2,16,,45,1,0,{ bonus bDex,1; },{},{}
+2331,Tights_,Tights,5,71000,,500,,27,,1,0x00080808,7,2,16,,45,1,0,{ bonus bDex,1; },{},{}
+2332,Silver_Robe,Silver Robe,5,7000,,700,,23,,0,0x00810204,7,2,16,,0,1,0,{},{},{}
+2333,Silver_Robe_,Silver Robe,5,7000,,700,,23,,1,0x00810204,7,2,16,,0,1,0,{},{},{}
+2334,Mage_Coat,Mage Coat,5,20,,600,,40,,0,0x00810204,7,2,16,,50,1,0,{ bonus bMdef,5; bonus bInt,1; },{},{}
+2335,Thief_Clothes,Thief Clothes,5,74000,,100,,40,,0,0x02021040,7,2,16,,0,1,0,{ bonus bAgi,1; },{},{}
+2336,Thief_Clothes_,Thief Clothes,5,74000,,100,,40,,1,0x02021040,7,2,16,,0,1,0,{ bonus bAgi,1; },{},{}
+2337,Ninja_Suit,Ninja Suit,5,20,,1500,,58,,0,0x02021040,7,2,16,,50,1,0,{ bonus bAgi,1; bonus bMdef,3; if(isequipped(2654)) { bonus bUseSPrate,-20; bonus bMaxHP,300; } },{},{}
+2338,Wedding_Dress,Wedding Dress,5,43000,,500,,10,,0,0xFFFFFFFE,7,2,16,,0,1,0,{ bonus bMdef,15; },{},{}
+2339,G_Strings,Pantie,5,1000,,100,,22,,0,0xFFFFFFFF,7,2,16,,0,1,0,{},{},{}
+2341,Full_Plate_Armor,Legion Plate Armor,5,94000,,5500,,79,,0,0x00004000,7,2,16,,70,1,0,{},{},{}
+2342,Full_Plate_Armor_,Legion Plate Armor,5,102500,,5500,,79,,1,0x00004000,7,2,16,,70,1,0,{},{},{}
+2343,Robe_Of_Casting,Robe of Cast,5,124800,,1100,,40,,0,0x00810200,7,2,16,,75,1,0,{ bonus bCastrate,-3; bonus bMdef,4; },{},{}
+2344,Flame_Sprits_Armor,Lucius's Fierce Armor of Volcano,5,136000,,2200,,25,,0,0x000444A2,7,2,16,,45,1,0,{ bonus bDefEle,Ele_Fire; },{},{}
+2345,Flame_Sprits_Armor_,Lucius's Fierce Armor of Volcano,5,136000,,2200,,25,,1,0xFFFFFFFE,7,2,16,,45,1,0,{ bonus bDefEle,Ele_Fire; },{},{}
+2346,Water_Sprits_Armor,Saphien's Armor of Ocean,5,136000,,2200,,25,,0,0x000444A2,7,2,16,,45,1,0,{ bonus bDefEle,Ele_Water; },{},{}
+2347,Water_Sprits_Armor_,Saphien's Armor of Ocean,5,136000,,2200,,25,,1,0xFFFFFFFE,7,2,16,,45,1,0,{ bonus bDefEle,Ele_Water; },{},{}
+2348,Wind_Sprits_Armor,Aebecee's Raging Typhoon Armor,5,136000,,2200,,25,,0,0x000444A2,7,2,16,,45,1,0,{ bonus bDefEle,Ele_Wind; },{},{}
+2349,Wind_Sprits_Armor_,Aebecee's Raging Typhoon Armor,5,136000,,2200,,25,,1,0xFFFFFFFE,7,2,16,,45,1,0,{ bonus bDefEle,Ele_Wind; },{},{}
+2350,Earth_Sprits_Armor,Claytos Cracking Earth Armor,5,136000,,2200,,25,,0,0x000444A2,7,2,16,,45,1,0,{ bonus bDefEle,Ele_Earth; },{},{}
+2351,Earth_Sprits_Armor_,Claytos Cracking Earth Armor,5,136000,,2200,,25,,1,0xFFFFFFFE,7,2,16,,45,1,0,{ bonus bDefEle,Ele_Earth; },{},{}
+2352,Novice_Plate,Tattered Novice Ninja Suit,5,1,,1,,25,,0,0x00000001,7,2,16,,0,0,0,{},{},{}
+2353,Odin's_Blessing,Odin's Blessing,5,30000,,2500,,53,,1,0xFFFFFFFE,7,2,16,,65,1,0,{},{},{}
+2354,Goibne's_Armor,Goibne's Armor,5,50000,,3500,,58,,0,0xFFFFFFFE,7,2,16,,54,1,0,{ bonus bVit,2; bonus bMaxHPrate,10; },{},{}
+2355,Angel's_Protection,Angelic Protection,5,10000,,600,,25,,1,0x00000001,7,2,16,,40,1,0,{ bonus bMdef,20; if(isequipped(2116,2420,2521,5125)) { bonus bMaxHP,900; bonus bMaxSP,100; bonus3 bAutoSpellWhenHit,HP_ASSUMPTIO,1,30; } },{},{}
+2356,Vestment_Of_Grace,Blessed Holy Robe,5,20,,2500,,45,,1,0x00008100,7,2,16,,70,1,0,{ bonus bMdef,5; bonus2 bResEff,Eff_Blind,8000; },{},{}
+2357,Valkyrie_Armor,Valkyrian Armor,5,0,,2800,,55,,1,0xFFFFFFFE,2,2,16,,1,1,0,{ bonus bAllStats,1; bonus bUnbreakableArmor,0; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus2 bResEff,Eff_Silence,5000; else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus2 bResEff,Eff_Stun,5000; },{},{}
+2359,Ninja_Suit_,Ninja Suit,5,20,,1500,,58,,1,0x02021040,7,2,16,,50,1,0,{ bonus bAgi,1; bonus bMdef,3; if(isequipped(2654)) { bonus bUseSPrate,-20; bonus bMaxHP,300; } },{},{}
+2360,Robe_Of_Casting_,Robe of Cast,5,124800,,1100,,40,,1,0x00810200,7,2,16,,75,1,0,{ bonus bCastrate,-3; bonus bMdef,4; },{},{}
+2364,Meteo_Plate_Armor,Meteo Plate Armor,5,20,,3000,,85,,1,0x000444A2,2,2,16,,55,1,0,{ bonus2 bResEff,Eff_Stun,3000; bonus2 bResEff,Eff_Freeze,3000; },{},{}
+2365,Orleans_Gown,Orleans's Gown,5,20,,300,,15,,1,0xFFFFFFFE,2,2,16,,55,1,0,{ bonus bCastrate,15; bonus bNoCastCancel,0; },{},{}
+2366,Divine_Cloth,Divine Cloth,5,20,,1500,,50,,1,0xFFFFFFFE,2,2,16,,55,1,0,{ bonus2 bResEff,Eff_Curse,500; bonus2 bResEff,Eff_Silence,500; bonus2 bResEff,Eff_Stun,500; bonus2 bResEff,Eff_Stone,500; bonus2 bResEff,Eff_Sleep,500; },{},{}
+2367,Sniping_Suit,Sniping Suit,5,20,,750,,42,,1,0x00000800,2,2,16,,50,1,0,{ bonus bMdef,5; bonus bCritical,6+(readparam(bLuk)/10); bonus bDelayRate,-23; },{},{}
+2371,G_Strings_,Pantie,5,1000,,100,,22,,1,0xFFFFFFFF,7,2,16,,0,1,0,{},{},{}
+2372,Mage_Coat_,Mage Coat,5,20,,600,,40,,1,0x00810204,7,2,16,,50,1,0,{ bonus bMdef,5; bonus bInt,1; },{},{}
+2373,Holy_Robe_,Holy Robe,5,20,,1700,,57,,1,0x00008110,7,2,16,,60,1,0,{ bonus bMdef,5; bonus2 bSubRace,RC_Demon,15; bonus2 bSubEle,Ele_Dark,10; },{},{}
+2374,Diabolus_Robe,Diabolus Robe,5,20,,300,,57,,1,0x00098B1C,2,2,16,,55,1,0,{ bonus bMaxSP,150; bonus bMdef,5; bonus bHealPower,6; bonus bDelayRate,-10; if (isequipped(2729)) { bonus2 bAddRace,RC_NonBoss,3; bonus2 bAddRace,RC_Boss,3; bonus bMatkRate,3; } },{},{}
+2375,Diabolus_Armor,Diabolus Armor,5,20,,600,,79,,1,0x000654E2,2,2,16,,55,1,0,{ bonus bStr,2; bonus bDex,1; bonus bMaxHP,150; bonus2 bResEff,Eff_Stun,500; bonus2 bResEff,Eff_Stone,500; if (isequipped(2729)) { bonus2 bAddRace,RC_NonBoss,3; bonus2 bAddRace,RC_Boss,3; bonus bMatkRate,3; } },{},{}
+2376,Assaulter_Plate,Assaulter Plate,5,10,,0,,57,,1,0x006444A2,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; if (isequipped(2538,2435)) { bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bVit,3; bonus bMaxHPRate,12; bonus bHealpower2,10; bonus bAddItemHealRate,10; autobonus2 "{ bonus2 bHPRegenRate,600,1000; }",5,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }; },{},{}
+2377,Elite_Engineer_Armor,Elite Engineer Armor,5,10,,0,,50,,1,0x00040420,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; if (isequipped(2538,2435)) { bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bStr,3; bonus bMaxHPRate,12; bonus2 bSkillAtk,"MC_MAMMONITE",20; bonus2 bSkillHeal,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AL_HEAL",10; bonus bUnbreakableArmor,0; }; },{},{}
+2378,Assassin_Robe,Assassin Robe,5,10,,0,,41,,1,0x02021040,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; if (isequipped(2538,2435)) { bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bAgi,3; bonus bMaxHPRate,12; bonus bCritical,5; bonus bAspdRate,5; autobonus "{ bonus2 bHPRegenRate,300,1000; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }; },{},{}
+2379,Warlock_Battle_Robe,Warlock's Battle Robe,5,10,,0,,36,,1,0x00810204,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; if (isequipped(2539,2436)) { bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bResEff,Eff_Stun,2000; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }; },{},{}
+2380,Medic_Robe,Medic's Robe,5,10,,0,,25,,1,0x00008110,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; if (isequipped(2539,2436)) { bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bCastrate,156,-50; bonus bHealPower,6; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }; },{},{}
+2381,Elite_Archer_Suit,Elite Archer Suit,5,10,,0,,35,,1,0x00080808,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; if (isequipped(2539,2436)) { bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }; },{},{}
+2382,Elite_Shooter_Suit,Elite Shooter Suit,5,10,,0,,25,,1,0x01000000,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; if (isequipped(2540,2437)) { bonus2 bSubRace,RC_NonDemiHuman,-300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }; },{},{}
+2383,Brynhild,Brynhild,5,20,,400,,120,,0,0xFFFFFFFF,7,2,16,,94,0,0,{ bonus bMdef,10; bonus bMaxHP,20*BaseLevel; bonus bMaxSP,5*BaseLevel; bonus2 bAddRace,RC_NonBoss,10; bonus2 bAddRace,RC_Boss,10; bonus bMatkRate,10; bonus bUnbreakableArmor,0; bonus bNoKnockback,0; },{},{}
+2386,Chameleon_Armor,Chameleon Armor,5,20,,1700,,55,,0,0x00CFFF80,2,2,16,,70,1,0,{ bonus bMaxHP,(BaseLevel*7); bonus bMaxSP,(BaseLevel/2); autobonus2 "{ bonus bNoMagicDamage,100; }",10,2000,BF_MAGIC,"{ specialeffect2 EF_ENERGYCOAT; }"; if( BaseClass == Job_Mage || BaseClass == Job_Archer || BaseClass == Job_Acolyte ) bonus bMdef,5; else if( BaseClass == Job_Swordman || BaseClass == Job_Merchant || BaseClass == Job_Thief ) bonus bDef,3; },{},{}
+2387,Sprint_Mail,Sprint Mail,5,20,,1000,,20,,1,0x00CFFF80,2,2,16,,70,1,0,{ bonus bVit,1; bonus bHPrecovRate,5; bonus bAddItemHealRate,3; bonus2 bSkillHeal,AL_HEAL,3; if( isequipped(2440,2744) ) { bonus bMaxHPrate,7; bonus bMaxSPrate,7; bonus bCastrate,-3; bonus bDelayrate,-15; } },{},{}
+2388,Kandura,Kandura,5,20,,300,,36,,1,0x00001000,2,2,16,,70,1,0,{ bonus bAgi,1; bonus bFlee,5; bonus bAspdRate,2; },{},{}
+2389,Armor_Of_Naga,Armor of Naga,5,20,,1000,,45,,1,0x00CFFF80,2,2,16,,70,1,0,{ bonus bMdef,2; autobonus "{ bonus bBaseAtk,20; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; },{},{}
+2390,Improved_Tights,Improved Tights,5,20,,400,,38,,1,0x00080808,2,2,16,,75,1,0,{ bonus bMdef,2; bonus bFlee2,3; },{},{}
+2391,Life_Link,Life Link,5,20,,3500,,75,,1,0x00004082,2,2,16,,82,1,0,{ bonus bVit,2; bonus bMdef,5; bonus bHPrecovRate,50; },{},{}
+
+// Garment
+2501,Hood,Hood,5,1000,,200,,4,,0,0xFFFFFFFF,7,2,4,,0,1,0,{},{},{}
+2502,Hood_,Hood,5,1000,,200,,4,,1,0xFFFFFFFF,7,2,4,,0,1,0,{},{},{}
+2503,Muffler,Muffler,5,5000,,400,,8,,0,0xFFFFFFFE,7,2,4,,0,1,0,{},{},{}
+2504,Muffler_,Muffler,5,5000,,400,,8,,1,0xFFFFFFFE,7,2,4,,0,1,0,{},{},{}
+2505,Manteau,Manteau,5,32000,,600,,13,,0,0x006654E2,7,2,4,,0,1,0,{},{},{}
+2506,Manteau_,Manteau,5,32000,,600,,13,,1,0x006654E2,7,2,4,,0,1,0,{},{},{}
+2507,Cape_Of_Ancient_Lord,Ancient Cape,5,82000,,600,,9,,0,0xFFFFFFFE,7,2,4,,40,1,0,{ bonus bAgi,1; },{},{}
+2508,Ragamuffin_Cape,Ragamuffin Manteau,5,56000,,500,,4,,0,0xFFFFFFFE,7,2,4,,0,1,0,{ bonus bUnbreakableGarment,0; bonus bMdef,10; },{},{}
+2509,Clack_Of_Servival,Survivor's Manteau,5,20000,,550,,10,,0,0x00810204,7,2,4,,75,1,0,{ bonus bMdef,5; bonus bVit,10; if(isequipped(1618) || isequipped(1620)){ bonus bMaxHP,300; bonus bMatkRate,getequiprefinerycnt(EQI_HAND_R)-5; bonus2 bSubEle,Ele_Neutral,getrefine()*3; } },{},{}
+2510,Novice_Hood,Somber Novice Hood,5,1,,1,,4,,0,0x00000001,7,2,4,,0,0,0,{ bonus2 bSubEle,Ele_Neutral,20; },{},{}
+2512,Novice_Manteau,Novice Manteau,5,50000,,500,,7,,1,0x00000001,7,2,4,,40,1,0,{ bonus2 bSubEle,Ele_Neutral,10; },{},{}
+2513,Celestial_Robe,Heavenly Maiden Robe,5,20,,500,,18,,1,0xFFFFFFFE,7,2,4,,80,1,0,{},{},{}
+2514,Pauldron,Pauldron,5,20,,800,,25,,1,0x000654E2,7,2,4,,80,1,0,{},{},{}
+2515,Wing_Of_Eagle,Eagle Wing,5,20000,,300,,12,,1,0x00810204,7,2,4,,85,1,0,{ if(isequipped(1616)) bonus bSpeedRate,25; },{},{}
+2516,Falcon_Robe,Falcon Muffler,5,30000,,400,,8,,0,0xFFFFFFFE,7,2,4,,65,1,0,{ bonus bFlee,15; bonus bFlee2,5; },{},{}
+2517,Vali's_Manteau,Vali's Manteau,5,30000,,600,,13,,0,0xFFFFFFFE,7,2,4,,65,1,0,{ bonus2 bSubEle,Ele_Neutral,15; },{},{}
+2518,Morpheus's_Shawl,Morpheus's Shawl,5,30000,,600,,8,,0,0xFFFFFFFE,7,2,4,,33,1,0,{ bonus bMaxSPrate,10; bonus bMdef,3; },{},{}
+2519,Morrigane's_Manteau,Morrigane's Manteau,5,30000,,600,,9,,0,0xFFFFFFFE,7,2,4,,61,1,0,{ bonus bLuk,2; bonus bFlee2,8; },{},{}
+2520,Goibne's_Shoulder_Arms,Goibne's Spaulders,5,30000,,700,,11,,0,0xFFFFFFFE,7,2,4,,54,1,0,{ bonus bLongAtkDef,10; bonus bMdef,2; bonus bVit,1; },{},{}
+2521,Angel's_Warmth,Angelic Cardigan,5,10000,,400,,5,,1,0x00000001,7,2,4,,20,1,0,{ bonus bHPrecovRate,5; },{},{}
+2522,Undershirt,Undershirt,5,20000,,150,,5,,0,0xFFFFFFFF,7,2,4,,1,1,0,{ bonus bMdef,1; if(isequipped(2339) || isequipped(2371)) { bonus bAgi,5; bonus bFlee,10; } },{},{}
+2523,Undershirt_,Undershirt,5,20000,,150,,5,,1,0xFFFFFFFF,7,2,4,,1,1,0,{ bonus bMdef,1; if(isequipped(2339) || isequipped(2371)) { bonus bAgi,5; bonus bFlee,10; } },{},{}
+2524,Valkyrie_Manteau,Valkyrian Manteau,5,0,,500,,10,,1,0xFFFFFFFE,2,2,4,,1,1,0,{ bonus bUnbreakableGarment,0; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus bFlee2,5+(getequiprefinerycnt(EQI_GARMENT)*2); else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus bShortWeaponDamageReturn,5+(getequiprefinerycnt(EQI_GARMENT)*2); },{},{}
+2525,Cape_Of_Ancient_Lord_,Ancient Cape,5,82000,,600,,9,,1,0xFFFFFFFE,7,2,4,,40,1,0,{ bonus bAgi,1; },{},{}
+2527,Dragon_Breath,Dragon Breath,5,20,,600,,16,,1,0xFFFFFFFE,2,2,4,,48,1,0,{ bonus2 bSubRace,RC_Dragon,15; if (isequipped(1166) || isequipped(13001) || isequipped(1474)) bonus2 bAddRace,RC_Dragon,5; },{},{}
+2528,Wool_Scarf,Wool Scarf,5,20,,500,,11,,1,0xFFFFFFFE,2,2,4,,55,1,0,{ bonus bMdef,4; },{},{}
+2529,Rider_Insignia,Rider Insignia,5,20,,500,,13,,0,0xFFFFFFFE,2,2,4,,55,1,0,{ bonus bAgi,2; if (isequipped(2425) || isequipped(2434)) bonus bFlee,10; },{},{}
+2530,Rider_Insignia_,Rider Insignia,5,20,,500,,13,,1,0xFFFFFFFE,2,2,4,,55,1,0,{ bonus bAgi,2; if (isequipped(2425) || isequipped(2434)) bonus bFlee,10; },{},{}
+2531,Ulfhedinn,Ulfhedinn,5,20,,700,,13,,1,0x000654E2,2,2,4,,70,1,0,{ bonus3 bAutoSpellWhenHit,NPC_STONESKIN,1,20; },{},{}
+2532,Mithril_Magic_Cape,Mithril Magic Cape,5,20,,400,,8,,1,0x00098B1C,2,2,4,,70,1,0,{ bonus bMdef,3; bonus5 bAutoSpellWhenHit,NPC_ANTIMAGIC,1,200,BF_MAGIC,0; },{},{}
+2536,Skin_Of_Ventus,Skin of Ventus,5,20,,250,,7,,1,0xFFFFFFFE,7,2,4,,60,1,0,{ bonus bMdef,2; bonus bMaxHP,200; bonus bFlee,10; },{},{}
+2537,Diabolus_Manteau,Diabolus Manteau,5,20,,250,,15,,1,0x00CFFF80,2,2,4,,0,1,0,{ bonus2 bSubEle,Ele_Neutral,5; bonus bMaxHP,100; bonus2 bAddDamageClass,1916,10; bonus2 bAddDamageClass,1917,10; if (isequipped(2433)) bonus bMaxHPRate,6; },{},{}
+2538,Commander_Manteau,Captain's Manteau,5,10,,0,,28,,1,0x026654E2,7,2,4,,80,1,0,{ bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; },{},{}
+2539,Commander_Manteau_,Commander's Manteau,5,10,,0,,20,,1,0x00898B1C,7,2,4,,80,1,0,{ bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; },{},{}
+2540,Sheriff_Manteau,Sheriff's Manteau,5,10,,0,,20,,1,0x01000000,7,2,4,,80,1,0,{ bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; },{},{}
+2541,Asprika,Asprika,5,20,,400,,40,,0,0xFFFFFFFF,7,2,4,,94,0,0,{ bonus bMdef,5; bonus3 bSubEle,Ele_Neutral,30,BF_SHORT; bonus3 bSubEle,Ele_Water,30,BF_SHORT; bonus3 bSubEle,Ele_Earth,30,BF_SHORT; bonus3 bSubEle,Ele_Fire,30,BF_SHORT; bonus3 bSubEle,Ele_Wind,30,BF_SHORT; bonus3 bSubEle,Ele_Poison,30,BF_SHORT; bonus3 bSubEle,Ele_Holy,30,BF_SHORT; bonus3 bSubEle,Ele_Dark,30,BF_SHORT; bonus3 bSubEle,Ele_Ghost,30,BF_SHORT; bonus3 bSubEle,Ele_Undead,30,BF_SHORT; bonus bFlee,30; skill "AL_TELEPORT",1; bonus bUnbreakableGarment,0; },{},{}
+2542,Flame_Manteau,Flame Manteau of Naght Sieger,5,20,,70,,16,,1,0xFFFFFFFE,2,2,4,,70,1,0,{ bonus bMaxHPRate,5; bonus bMdef,2; bonus bMatkRate,1; bonus2 bAddEle,Ele_Fire,2; },{},{}
+2544,Leather_Of_Tendrilion,Leather of Tendrilion,5,20,,300,,14,,1,0x00CFDF80,2,2,4,,0,1,0,{ bonus2 bSubEle,Ele_Water,5; bonus2 bSubEle,Ele_Earth,5; bonus2 bSubRace,RC_Plant,5; bonus2 bSubRace,RC_Brute,5; },{},{}
+2545,Musika,Musika,5,20,,500,,10,,1,0x00008100,2,2,4,,70,1,0,{ bonus bMdef,3; bonus3 bAutoSpellwhenhit,AL_HEAL,getskilllv("AL_HEAL") ? getskilllv("AL_HEAL") : 1,20; },{},{}
+2548,Muffler_C,Neo Muffler,5,0,,0,,5,,0,0xFFFFFFFE,2,2,4,,95,0,0,{ bonus2 bSubRace,RC_DemiHuman,10; bonus bMaxHPrate,10; bonus2 bSubEle,Ele_Water,5; bonus2 bSubEle,Ele_Fire,5; bonus2 bSubEle,Ele_Holy,5; bonus2 bSubEle,Ele_Dark,5; },{},{}
+2549,Krieger_Muffler1,Glorious Muffler,5,20,,0,,0,,0,0xFFFFFFFE,7,2,4,,81,1,0,{ bonus bMaxHPRate,5; bonus2 bSubRace,RC_DemiHuman,5; },{},{}
+2553,Dragon_Manteau,Dragon Manteau,5,20,,1000,,14,,1,0xFFFFFFFE,2,2,4,,0,1,0,{ bonus bAgi,1; bonus bMdef,5; },{},{}
+2554,Piece_Of_Angent_Skin,Nydhorgg's Shadow Garb,5,20,,400,,25,,1,0xFFFFFFFE,2,2,4,,90,1,0,{ bonus2 bSubEle,Ele_Neutral,7; bonus2 bSubEle,Ele_Water,7; bonus2 bSubEle,Ele_Earth,7; bonus2 bSubEle,Ele_Fire,7; bonus2 bSubEle,Ele_Wind,7; bonus2 bSubEle,Ele_Poison,7; bonus2 bSubEle,Ele_Holy,7; bonus2 bSubEle,Ele_Dark,7; bonus2 bSubEle,Ele_Ghost,7; bonus2 bSubEle,Ele_Undead,7; bonus bMaxSP,(BaseLevel/3)+(getrefine()*10); bonus3 bSPDrainRate,1,1,0; bonus bMdef,3; },{},{}
+2560,Para_Team_Manteau,Eden Team Manteau,5,0,,0,,14,,0,0xFFFFFFFF,7,2,4,,12,0,0,{ bonus2 bSubEle,Ele_Neutral,10; },{},{}
+2564,Feral_Tail,Feral Tail,5,20,,0,,16,,0,0xFFFFFFFF,7,2,4,,75,0,0,{},{},{}
+
+
+//[Ind] keeping these 2 here until we confirm: these ids are conflicting, I think they're wrong.
+// Minstrel And Wanderer Cough Drop
+//11513,Cough_Drop,Cough Drop,3,200,,10,,,,,,,,,,,,,{},{},{}
+
+// Genetic Cure Free
+//11518,Cure_Free,Cure Free,0,10,,30,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(1000,1200),0; sc_end SC_Silence; sc_end SC_Bleeding; sc_end SC_Curse; },{},{}
+
+
+// Unknown Item. Rune Knight Armor???
+//15002,Rune_Plate,Rune Plate,3,10,,10,,,,,,,,,,,,,{},{},{}
+
diff --git a/db/job_db1.txt b/db/job_db1.txt index fb1fe7fdd..10f2ff922 100644 --- a/db/job_db1.txt +++ b/db/job_db1.txt @@ -153,3 +153,74 @@ 4048, 28000,90 ,650 ,470 ,400 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 // Soul Linker 4049, 24000,75 ,500 ,900 ,500 ,575 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,625 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 625 +//************************************************************* +//* 3rds (base 650 3CeAM) +//************************************************************* +// Rune Knight (Base 2nd to 3rd) +4054, 28000,150 ,500 ,300 ,400 ,500 ,500 ,550 ,600 ,600 ,700 ,700 ,650 ,700 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Warlock (Base 2nd to 3rd) +4055, 24000,55 ,500 ,900 ,500 ,575 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,625 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 625 +// Ranger (Base 2nd to 3rd) +4056, 27000,85 ,500 ,400 ,400 ,600 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,600 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Arch Bishop (Base 2nd to 3rd) +4057, 26000,75 ,500 ,800 ,400 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,600 ,600 ,600 ,2000 ,2000 ,2000 ,2000 ,600 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 600 +// Mechanic (Base 2nd to 3rd) +4058, 30000,90 ,500 ,400 ,400 ,600 ,650 ,2000 ,2000 ,2000 ,650 ,650 ,675 ,675 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Guillotine Cross(Base 2nd to 3rd) +4059, 24000,110 ,500 ,400 ,400 ,500 ,650 ,2000 ,2000 ,2000 ,800 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Rune Knight (Trans 2nd to 3rd) +4060, 28000,150 ,500 ,300 ,400 ,500 ,500 ,550 ,600 ,600 ,700 ,700 ,650 ,700 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Warlock (Trans 2nd to 3rd) +4061, 24000,55 ,500 ,900 ,500 ,575 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,625 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 625 +// Ranger (Trans 2nd to 3rd) +4062, 27000,85 ,500 ,400 ,400 ,600 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,600 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Arch Bishop (Trans 2nd to 3rd) +4063, 26000,75 ,500 ,800 ,400 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,600 ,600 ,600 ,2000 ,2000 ,2000 ,2000 ,600 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 600 +// Mechanic (Trans 2nd to 3rd) +4064, 30000,90 ,500 ,400 ,400 ,600 ,650 ,2000 ,2000 ,2000 ,650 ,650 ,675 ,675 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Guillotine Cross(Trans 2nd to 3rd) +4065, 24000,110 ,500 ,400 ,400 ,500 ,650 ,2000 ,2000 ,2000 ,800 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Royal Guard (Base 2nd to 3rd) +4066, 28000,110 ,700 ,470 ,400 ,500 ,500 ,550 ,600 ,600 ,700 ,700 ,650 ,700 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Sorcerer (Base 2nd to 3rd) +4067, 24000,75 ,500 ,700 ,450 ,525 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,625 ,2000 ,2000 ,2000 ,2000 ,550 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 625 +// Minstrel (Base 2nd to 3rd) +4068, 27000,75 ,300 ,600 ,400 ,550 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,650 ,2000 ,575 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Wanderer (Base 2nd to 3rd) +4069, 27000,75 ,300 ,600 ,400 ,550 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,650 ,2000 ,2000 ,575 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Sura (Base 2nd to 3rd) +4070, 26000,90 ,650 ,470 ,400 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,575 ,575 ,575 ,2000 ,475 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 575 +// Genetic (Base 2nd to 3rd) +4071, 30000,90 ,500 ,400 ,400 ,550 ,575 ,2000 ,2000 ,2000 ,675 ,700 ,650 ,650 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Shadow Chaser (Base 2nd to 3rd) +4072, 24000,85 ,500 ,500 ,400 ,500 ,550 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,650 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Royal Guard (Trans 2nd to 3rd) +4073, 28000,110 ,700 ,470 ,400 ,500 ,500 ,550 ,600 ,600 ,700 ,700 ,650 ,700 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Sorcerer (Trans 2nd to 3rd) +4074, 24000,75 ,500 ,700 ,450 ,525 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,625 ,2000 ,2000 ,2000 ,2000 ,550 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 625 +// Minstrel (Trans 2nd to 3rd) +4075, 27000,75 ,300 ,600 ,400 ,550 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,650 ,2000 ,575 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Wanderer (Trans 2nd to 3rd) +4076, 27000,75 ,300 ,600 ,400 ,550 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,650 ,2000 ,2000 ,575 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Sura (Trans 2nd to 3rd) +4077, 26000,90 ,650 ,470 ,400 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,575 ,575 ,575 ,2000 ,475 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 575 +// Genetic (Trans 2nd to 3rd) +4078, 30000,90 ,500 ,400 ,400 ,550 ,575 ,2000 ,2000 ,2000 ,675 ,700 ,650 ,650 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Shadow Chaser (Trans 2nd to 3rd) +4079, 24000,85 ,500 ,500 ,400 ,500 ,550 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,650 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Rune Knight Mount (Base 2nd to 3rd) +4080, 28000,150 ,500 ,300 ,400 ,500 ,500 ,550 ,600 ,600 ,700 ,700 ,650 ,700 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Rune Knight Mount (Trans 2nd to 3rd) +4081, 28000,150 ,500 ,300 ,400 ,500 ,500 ,550 ,600 ,600 ,700 ,700 ,650 ,700 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Royal Guard Mount (Base 2nd to 3rd) +4082, 28000,110 ,700 ,470 ,400 ,500 ,500 ,550 ,600 ,600 ,700 ,700 ,650 ,700 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Royal Guard Mount (Trans 2nd to 3rd) +4083, 28000,110 ,700 ,470 ,400 ,500 ,500 ,550 ,600 ,600 ,700 ,700 ,650 ,700 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Ranger Mount (Base 2nd to 3rd) +4084, 27000,85 ,500 ,400 ,400 ,600 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,600 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Ranger Mount (Trans 2nd to 3rd) +4085, 27000,85 ,500 ,400 ,400 ,600 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,600 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Mechanic Mount (Base 2nd to 3rd) +4086, 30000,90 ,500 ,400 ,400 ,600 ,650 ,2000 ,2000 ,2000 ,650 ,650 ,675 ,675 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 +// Mechanic Mount (Trans 2nd to 3rd) +4087, 30000,90 ,500 ,400 ,400 ,600 ,650 ,2000 ,2000 ,2000 ,650 ,650 ,675 ,675 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000
\ No newline at end of file diff --git a/db/job_db2.txt b/db/job_db2.txt index 0144624b9..a0c88121d 100644 --- a/db/job_db2.txt +++ b/db/job_db2.txt @@ -161,3 +161,74 @@ 4048,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2 // Soul Linker 4049,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5 +//************************************************************* +//* 3rds (base 650 3CeAM) +//************************************************************* +// Rune Knight (Base 2nd to 3rd) +4054,4,4,5,3,4,0,0,0,0,1,1,4,4,3,5,0,0,0,5,2,2,4,3,5,0,0,0,0,0,4,5,3,1,0,0,0,0,0,4,5,2,0,0,5,3,4,6,6,6,4 +// Warlock (Base 2nd to 3rd) +4055,4,4,5,0,0,5,4,2,0,0,0,0,5,0,3,0,0,3,5,2,0,0,4,3,3,0,0,5,2,0,6,0,0,1,4,4,0,0,5,2,4,0,0,4,4,0,2,0,0,4 +// Ranger (Base 2nd to 3rd) +4056,5,4,4,2,0,0,2,5,4,0,0,3,3,3,0,0,5,2,0,0,4,3,5,0,0,1,1,0,0,5,2,3,0,0,0,4,4,4,2,0,0,0,2,5,2,0,0,0,4,2 +// Arch Bishop (Base 2nd to 3rd) +4057,4,0,3,0,5,0,4,4,0,3,3,0,0,5,5,0,0,1,1,0,0,4,0,1,0,2,2,1,0,0,0,4,0,3,0,5,0,2,2,4,4,0,0,5,3,1,0,0,4,5 +// Mechanic (Base 2nd to 3rd) +4058,6,1,0,0,1,0,6,2,5,4,0,0,4,6,0,0,2,0,3,3,4,5,0,0,3,6,0,0,3,0,1,1,3,6,0,0,4,4,0,0,0,3,3,1,1,0,0,5,2,0 +// Guillotine Cross (Base 2nd to 3rd) +4059,2,5,0,1,1,0,0,0,1,2,5,0,0,3,3,1,0,0,3,1,0,0,2,2,5,0,0,4,4,1,3,0,0,0,2,5,5,0,0,0,4,3,2,2,0,0,0,4,5,5 +// Rune Knight (Trans 2nd to 3rd) +4060,4,4,5,3,4,0,0,0,0,1,1,4,4,3,5,0,0,0,5,2,2,4,3,5,0,0,0,0,0,4,5,3,1,0,0,0,0,0,4,5,2,0,0,5,3,4,6,6,6,4 +// Warlock (Trans 2nd to 3rd) +4061,4,4,5,0,0,5,4,2,0,0,0,0,5,0,3,0,0,3,5,2,0,0,4,3,3,0,0,5,2,0,6,0,0,1,4,4,0,0,5,2,4,0,0,4,4,0,2,0,0,4 +// Ranger (Trans 2nd to 3rd) +4062,5,4,4,2,0,0,2,5,4,0,0,3,3,3,0,0,5,2,0,0,4,3,5,0,0,1,1,0,0,5,2,3,0,0,0,4,4,4,2,0,0,0,2,5,2,0,0,0,4,2 +// Arch Bishop (Trans 2nd to 3rd) +4063,4,0,3,0,5,0,4,4,0,3,3,0,0,5,5,0,0,1,1,0,0,4,0,1,0,2,2,1,0,0,0,4,0,3,0,5,0,2,2,4,4,0,0,5,3,1,0,0,4,5 +// Mechanic (Trans 2nd to 3rd) +4064,6,1,0,0,1,0,6,2,5,4,0,0,4,6,0,0,2,0,3,3,4,5,0,0,3,6,0,0,3,0,1,1,3,6,0,0,4,4,0,0,0,3,3,1,1,0,0,5,2,0 +// Guillotine Cross (Trans 2nd to 3rd) +4065,2,5,0,1,1,0,0,0,1,2,5,0,0,3,3,1,0,0,3,1,0,0,2,2,5,0,0,4,4,1,3,0,0,0,2,5,5,0,0,0,4,3,2,2,0,0,0,4,5,5 +// Royal Guard (Base 2nd to 3rd) +4066,5,5,5,5,5,0,0,0,2,2,2,2,2,0,0,0,1,1,1,1,1,0,0,0,0,6,6,6,6,6,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,4,4,4,4,4 +// Sorcerer (Base 2nd to 3rd) +4067,4,4,5,3,4,0,0,0,0,1,1,4,4,3,5,0,0,0,5,2,2,4,3,5,0,0,0,0,0,4,5,3,1,0,0,0,0,0,4,5,2,0,0,5,3,4,6,6,6,4 +// Minstrel (Base 2nd to 3rd) +4068,0,0,3,0,5,0,4,4,0,3,3,0,0,5,5,0,0,1,1,0,0,4,0,1,0,2,2,1,0,0,0,4,0,3,0,5,0,2,0,4,4,0,0,5,3,1,0,0,4,5 +// Wanderer (Base 2nd to 3rd) +4069,5,4,4,2,0,0,2,5,4,0,0,3,3,3,0,0,5,2,0,0,4,3,5,0,0,1,1,0,0,5,2,3,0,0,0,4,4,4,2,0,0,0,2,5,2,0,0,0,4,2 +// Sura (Base 2nd to 3rd) +4070,2,5,0,1,1,0,0,0,1,2,5,0,0,3,3,1,0,0,3,1,0,0,2,2,5,0,0,4,4,1,3,0,0,0,2,5,5,0,0,0,4,3,2,2,0,0,0,4,5,5 +// Genetic (Base 2nd to 3rd) +4071,4,4,5,0,0,5,4,2,0,0,0,4,5,0,0,0,0,3,5,2,0,0,4,3,3,0,0,5,2,0,6,0,0,0,4,4,1,0,5,2,4,0,0,4,4,0,2,0,0,4 +// Shadow Chaser (Base 2nd to 3rd) +4072,6,1,0,0,1,0,6,2,5,4,0,0,4,6,0,0,2,0,3,3,4,5,0,0,3,6,0,0,3,0,1,1,3,6,0,0,4,4,0,0,0,3,3,1,1,0,0,5,2,0 +// Royal Guard (Trans 2nd to 3rd) +4073,5,5,5,5,5,0,0,0,2,2,2,2,2,0,0,0,1,1,1,1,1,0,0,0,0,6,6,6,6,6,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,4,4,4,4,4 +// Sorcerer (Trans 2nd to 3rd) +4074,4,4,5,3,4,0,0,0,0,1,1,4,4,3,5,0,0,0,5,2,2,4,3,5,0,0,0,0,0,4,5,3,1,0,0,0,0,0,4,5,2,0,0,5,3,4,6,6,6,4 +// Minstrel (Trans 2nd to 3rd) +4075,0,0,3,0,5,0,4,4,0,3,3,0,0,5,5,0,0,1,1,0,0,4,0,1,0,2,2,1,0,0,0,4,0,3,0,5,0,2,0,4,4,0,0,5,3,1,0,0,4,5 +// Wanderer (Trans 2nd to 3rd) +4076,5,4,4,2,0,0,2,5,4,0,0,3,3,3,0,0,5,2,0,0,4,3,5,0,0,1,1,0,0,5,2,3,0,0,0,4,4,4,2,0,0,0,2,5,2,0,0,0,4,2 +// Sura (Trans 2nd to 3rd) +4077,2,5,0,1,1,0,0,0,1,2,5,0,0,3,3,1,0,0,3,1,0,0,2,2,5,0,0,4,4,1,3,0,0,0,2,5,5,0,0,0,4,3,2,2,0,0,0,4,5,5 +// Genetic (Trans 2nd to 3rd) +4078,4,4,5,0,0,5,4,2,0,0,0,4,5,0,0,0,0,3,5,2,0,0,4,3,3,0,0,5,2,0,6,0,0,0,4,4,1,0,5,2,4,0,0,4,4,0,2,0,0,4 +// Shadow Chaser (Trans 2nd to 3rd) +4079,6,1,0,0,1,0,6,2,5,4,0,0,4,6,0,0,2,0,3,3,4,5,0,0,3,6,0,0,3,0,1,1,3,6,0,0,4,4,0,0,0,3,3,1,1,0,0,5,2,0 +// Rune Knight Mount (Base 2nd to 3rd) +4080,4,4,5,3,4,0,0,0,0,1,1,4,4,3,5,0,0,0,5,2,2,4,3,5,0,0,0,0,0,4,5,3,1,0,0,0,0,0,4,5,2,0,0,5,3,4,6,6,6,4 +// Rune Knight Mount (Trans 2nd to 3rd) +4081,4,4,5,3,4,0,0,0,0,1,1,4,4,3,5,0,0,0,5,2,2,4,3,5,0,0,0,0,0,4,5,3,1,0,0,0,0,0,4,5,2,0,0,5,3,4,6,6,6,4 +// Royal Guard Mount (Base 2nd to 3rd) +4082,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +// Royal Guard Mount (Trans 2nd to 3rd) +4083,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +// Ranger Mount (Base 2nd to 3rd) +4084,5,4,4,2,0,0,2,5,4,0,0,3,3,3,0,0,5,2,0,0,4,3,5,0,0,1,1,0,0,5,2,3,0,0,0,4,4,4,2,0,0,0,2,5,2,0,0,0,4,2 +// Ranger Mount (Trans 2nd to 3rd) +4085,5,4,4,2,0,0,2,5,4,0,0,3,3,3,0,0,5,2,0,0,4,3,5,0,0,1,1,0,0,5,2,3,0,0,0,4,4,4,2,0,0,0,2,5,2,0,0,0,4,2 +// Mechanic Mount (Base 2nd to 3rd) +4086,6,1,0,0,1,0,6,2,5,4,0,0,4,6,0,0,2,0,3,3,4,5,0,0,3,6,0,0,3,0,1,1,3,6,0,0,4,4,0,0,0,3,3,1,1,0,0,5,2,0 +// Mechanic Mount (Trans 2nd to 3rd) +4087,6,1,0,0,1,0,6,2,5,4,0,0,4,6,0,0,2,0,3,3,4,5,0,0,3,6,0,0,3,0,1,1,3,6,0,0,4,4,0,0,0,3,3,1,1,0,0,5,2,0 diff --git a/db/magicmushroom_db.txt b/db/magicmushroom_db.txt new file mode 100644 index 000000000..9be7f9dff --- /dev/null +++ b/db/magicmushroom_db.txt @@ -0,0 +1,26 @@ +// Magic Mushroom DB.
+// Database for skills that are randomly used trough Magic Mushroom status change.
+// Format: SkillID
+
+7 //SM_MAGNUM
+8 //SM_ENDURE
+10 //MG_SIGHT
+24 //AL_RUWACH
+32 //AL_CRUCIS
+33 //AL_ANGELUS
+45 //AC_CONCENTRATION
+61 //KN_AUTOCOUNTER
+74 //PR_MAGNIFICAT
+110 //BS_HAMMERFALL
+114 //BS_MAXIMIZE
+142 //NV_FIRSTAID
+150 //TF_BACKSLIDING
+151 //TF_PICKSTONE
+157 //MG_ENERGYCOAT
+249 //CR_AUTOGUARD
+261 //MO_CALLSPIRITS
+256 //CR_PROVIDENCE
+318 //BA_FROSTJOKER
+500 //GS_GLITTERING
+527 //NJ_TATAMIGAESHI
+531 //NJ_UTSUSEMI
\ No newline at end of file diff --git a/db/mob_db.txt b/db/mob_db.txt index f49eae46c..67b2b072b 100644 --- a/db/mob_db.txt +++ b/db/mob_db.txt @@ -1095,11 +1095,15 @@ //2039,EXECUTIONER_R,Executioner,Executioner,65,28980,0,0,0,2,570,950,35,35,64,85,40,25,88,60,10,12,2,0,47,0x120,200,768,500,384,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //2040,TIRFING_R,Tirfing,Ogretooth,71,29900,0,0,0,1,950,1146,30,35,58,87,55,35,132,65,10,12,1,0,67,0x120,100,816,500,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //2041,MYSTELTAINN_R,Mysteltainn,Mysteltainn,76,33350,0,0,0,2,1160,1440,30,30,77,139,80,35,159,65,10,12,2,0,87,0x120,250,1152,500,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -//2042,SILVERSNIPER,Silver Sniper,Silver Sniper,1,50,0,0,0,1,7,10,0,5,1,1,1,1,6,30,10,12,1,3,21,0x120,400,1872,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -//2043,MAGICDECOY_FIRE,Magic Decoy,Magic Decoy,1,50,0,0,0,1,7,10,0,5,1,1,1,1,6,30,10,12,1,3,21,0x120,400,1872,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -//2044,MAGICDECOY_WATER,Magic Decoy,Magic Decoy,1,50,0,0,0,1,7,10,0,5,1,1,1,1,6,30,10,12,1,3,21,0x120,400,1872,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -//2045,MAGICDECOY_EARTH,Magic Decoy,Magic Decoy,1,50,0,0,0,1,7,10,0,5,1,1,1,1,6,30,10,12,1,3,21,0x120,400,1872,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -//2046,MAGICDECOY_WIND,Magic Decoy,Magic Decoy,1,50,0,0,0,1,7,10,0,5,1,1,1,1,6,30,10,12,1,3,21,0x120,400,1872,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + +//**** +// NC Mechanic Summons +2042,SILVERSNIPER,Silver Sniper,Silver Sniper,100,4500,0,0,0,9,300,300,80,10,10,60,10,10,100,10,10,12,1,0,20,0x3394,2000,504,1020,360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2043,MAGICDECOY_FIRE,Magic Decoy Fire,Magic Decoy Fire,100,2500,0,0,0,7,150,150,16,60,10,10,10,100,50,10,10,12,1,0,23,0x3394,2000,504,1020,360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2044,MAGICDECOY_WATER,Magic Decoy Water,Magic Decoy Water,100,2500,0,0,0,7,150,150,16,60,10,10,10,100,50,10,10,12,1,0,21,0x3394,2000,504,1020,360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2045,MAGICDECOY_EARTH,Magic Decoy Earth,Magic Decoy Earth,100,2500,0,0,0,7,150,150,16,60,10,10,10,100,50,10,10,12,1,0,22,0x3394,2000,504,1020,360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2046,MAGICDECOY_WIND,Magic Decoy Wind,Magic Decoy Wind,100,2500,0,0,0,7,150,150,16,60,10,10,10,100,50,10,10,12,1,0,24,0x3394,2000,504,1020,360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + //2047,W_NAGA,Naga,Naga,1,50,0,0,0,1,7,10,0,5,1,1,1,1,6,30,10,12,1,3,21,0x120,400,1872,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //2048,W_PINGUICULA_D,Dark Pinguicula,Dark Pinguicula,1,50,0,0,0,1,7,10,0,5,1,1,1,1,6,30,10,12,1,3,21,0x120,400,1872,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //2049,W_BRADIUM_GOLEM,Bradium Golem,Bradium Golem,1,50,0,0,0,1,7,10,0,5,1,1,1,1,6,30,10,12,1,3,21,0x120,400,1872,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/db/mob_skill_db.txt b/db/mob_skill_db.txt index c0dacc9c3..d1e801739 100644 --- a/db/mob_skill_db.txt +++ b/db/mob_skill_db.txt @@ -5781,3 +5781,28 @@ 2082,Piranha@MG_COLDBOLT,chase,14,3,500,1000,5000,yes,target,always,0,,,,,,, 2082,Piranha@WZ_WATERBALL,attack,86,3,500,1000,5000,yes,target,always,0,,,,,,6, 2082,Piranha@NPC_BLOODDRAIN,attack,199,1,500,0,5000,yes,target,always,0,,,,,,, +//**** +// NC Mechanic Summons +2042,Silver Sniper@AL_HEAL,chase,28,10,10000,0,1000,no,self,myhpltmaxrate,99,,,,,,, +2042,Silver Sniper@AL_HEAL,idle,28,10,10000,0,1000,no,self,myhpltmaxrate,99,,,,,,, +2042,Silver Sniper@AL_HEAL,attack,28,10,10000,0,1000,no,self,myhpltmaxrate,99,,,,,,, +2043,Magic Decoy Fire@MG_FIREBOLT,attack,19,10,10000,800,3500,no,target,always,0,,,,,,, +2043,Magic Decoy Fire@MG_FIREBOLT,chase,19,10,10000,800,3500,no,target,always,0,,,,,,, +2043,Magic Decoy Fire@AL_HEAL,chase,28,10,10000,0,1000,no,self,myhpltmaxrate,99,,,,,,, +2043,Magic Decoy Fire@AL_HEAL,idle,28,10,10000,0,1000,no,self,myhpltmaxrate,99,,,,,,, +2043,Magic Decoy Fire@AL_HEAL,attack,28,10,10000,0,1000,no,self,myhpltmaxrate,99,,,,,,, +2044,Magic Decoy Water@MG_COLDBOLT,attack,14,10,10000,800,3500,no,target,always,0,,,,,,, +2044,Magic Decoy Water@MG_COLDBOLT,chase,14,10,10000,800,3500,no,target,always,0,,,,,,, +2044,Magic Decoy Water@AL_HEAL,chase,28,10,10000,0,1000,no,self,myhpltmaxrate,99,,,,,,, +2044,Magic Decoy Water@AL_HEAL,idle,28,10,10000,0,1000,no,self,myhpltmaxrate,99,,,,,,, +2044,Magic Decoy Water@AL_HEAL,attack,28,10,10000,0,1000,no,self,myhpltmaxrate,99,,,,,,, +2045,Magic Decoy Earth@WZ_EARTHSPIKE,attack,90,10,10000,800,3500,no,target,always,0,,,,,,, +2045,Magic Decoy Earth@WZ_EARTHSPIKE,chase,90,10,10000,800,3500,no,target,always,0,,,,,,, +2045,Magic Decoy Earth@AL_HEAL,chase,28,10,10000,0,1000,no,self,myhpltmaxrate,99,,,,,,, +2045,Magic Decoy Earth@AL_HEAL,idle,28,10,10000,0,1000,no,self,myhpltmaxrate,99,,,,,,, +2045,Magic Decoy Earth@AL_HEAL,attack,28,10,10000,0,1000,no,self,myhpltmaxrate,99,,,,,,, +2046,Magic Decoy Wind@MG_LIGHTNINGBOLT,attack,20,10,10000,800,3500,no,target,always,0,,,,,,, +2046,Magic Decoy Wind@MG_LIGHTNINGBOLT,chase,20,10,10000,800,3500,no,target,always,0,,,,,,, +2046,Magic Decoy Wind@AL_HEAL,chase,28,10,10000,0,1000,no,self,myhpltmaxrate,99,,,,,,, +2046,Magic Decoy Wind@AL_HEAL,idle,28,10,10000,0,1000,no,self,myhpltmaxrate,99,,,,,,, +2046,Magic Decoy Wind@AL_HEAL,attack,28,10,10000,0,1000,no,self,myhpltmaxrate,99,,,,,,, diff --git a/db/packet_db.txt b/db/packet_db.txt index f423d1c14..a9517e0c0 100644 --- a/db/packet_db.txt +++ b/db/packet_db.txt @@ -33,8 +33,8 @@ // Main packet version of the DB to use (default = max available version) // Client detection is faster when all clients use this version. // Version 23 is the latest Sakexe (above versions are for Renewal clients) -packet_db_ver: 23 -//packet_db_ver: default +//packet_db_ver: 23 +packet_db_ver: default packet_ver: 5 diff --git a/db/produce_db.txt b/db/produce_db.txt index 938bdeb7d..78252447c 100644 --- a/db/produce_db.txt +++ b/db/produce_db.txt @@ -395,3 +395,50 @@ 12117,23,1007,1,7433,1,1013,3 //============================================== + +//===== Ancilla And Runes === ItemLV=24 ======== +//---- Ancilla --------------------------------- +//-- Ancilla <-- AB_ANCILLA & 1 Blue Gemstone +12333,24,2039,1,717,1 + +//---- Rune Stones ----------------------------- +//-- Runstone Nosiege <-- RK_RUNEMASTERY Lv8, 1 Broken Armor Piece, 1 Old Magic Circle, 1 Light Granule, 1 Elder Branch +12725,24,2010,8,7069,1,7099,1,7938,1,7939,1 +//-- Runstone Rhydo <-- RK_RUNEMASTERY Lv7, 1 Red Gemstone, 1 Light Granule, 1 Elder Branch +12726,24,2010,7,716,1,7938,1,7939,1 +//-- Runstone Verkana <-- RK_RUNEMASTERY Lv9, 1 Dullahan Armor, 1 Elder Branch +12727,24,2010,9,7210,1,7939,1 +//-- Runstone Isia <-- RK_RUNEMASTERY Lv2, 1 Burning Heart, 1 Elder Branch +12728,24,2010,2,7097,1,7939,1 +//-- Runstone Asir <-- RK_RUNEMASTERY Lv5, 1 Ogre Tooth, 1 Light Granule, 1 Elder Branch +12729,24,2010,5,7002,1,7938,1,7939,1 +//-- Runstone Urj <-- RK_RUNEMASTERY Lv6, 1 Honey, 1 Slender Snake, 1 Elder Branch +12730,24,2010,6,518,1,1048,1,7939,1 +//-- Runstone Turisus <-- RK_RUNEMASTERY Lv1, 1 Cobold Hair, 1 Claw Of Desert Wolf, 1 Elder Branch +12731,24,2010,1,1034,1,7030,1,7939,1 +//-- Runstone Pertz <-- RK_RUNEMASTERY Lv3, 1 Dragon Canine, 1 Tangled Chain, 1 Light Granule, 1 Elder Branch +12732,24,2010,3,1035,1,7221,1,7938,1,7939,1 +//-- Runstone Hagalas <-- RK_RUNEMASTERY Lv4, 1 Round Shell, 1 Dragon's Skin, 1 Elder Branch +12733,24,2010,4,1096,1,7123,1,7939,1 +//============================================== + +//===== Guillotine Cross Poisons === ItemLv=25 = +//-- Guillotine Antidote <-- GC_RESEARCHNEWPOISON Lv5, 1 White Herb, 1 Blue Herb, 2 Green Herb +6128,25,2024,5,509,1,510,1,511,2 +//-- Poison Paralysis <-- GC_RESEARCHNEWPOISON Lv1, 1 Medicine Bowl, 20 Poison Toad's Skin, 1 Poison Kit, 1 Poison Herb Amoena +12717,25,2024,1,7134,1,7155,20,7931,1,7937,1 +//-- Poison Leech <-- GC_RESEARCHNEWPOISON Lv4, 1 Medicine Bowl, 1 Poison Kit, 1 Poison Herb Nerium, 1 Poison Herb Scopolia +12718,25,2024,4,7134,1,7931,1,7932,1,7936,1 +//-- Poison Oblivion <-- GC_RESEARCHNEWPOISON Lv9, 1 Izidor, 10 Heart Of Mermaid, 1 Medicine Bowl, 1 Poison Kit +12719,25,2024,9,709,1,950,10,7134,1,7931,1 +//-- Poison Contamination <-- GC_RESEARCHNEWPOISON Lv3, 25 Decayed Nail, 1 Medicine Bowl, 1 Poison Kit, 1 Poison Herb Seratum +12720,25,2024,3,957,25,7134,1,7931,1,7935,1 +//-- Poison Numb <-- GC_RESEARCHNEWPOISON Lv8, 1 Medicine Bowl, 10 Sticky Poison, 1 Poison Kit, 1 Poison Herb Nerium +12721,25,2024,8,7134,1,7565,10,7931,1,7932,1 +//-- Poison Fever <-- GC_RESEARCHNEWPOISON Lv2, 20 Anolian Skin, 1 Medicine Bowl, 1 Poison Kit, 1 Poison Herb Rantana +12722,25,2024,2,7003,20,7134,1,7931,1,7933,1 +//-- Poison Laughing <-- GC_RESEARCHNEWPOISON Lv7, 10 Poison Spore, 1 Medicine Bowl, 1 Poison Kit, 1 Poison Herb Makulata +12723,25,2024,7,7033,10,7134,1,7931,1,7934,1 +//-- Poison Fatigue <-- GC_RESEARCHNEWPOISON Lv6, 1 Izidor, 1 Medicine Bowl, 10 Sticky Poison, 1 Poison Kit +12724,25,2024,6,709,1,7134,1,7565,10,7931,1 +//============================================== diff --git a/db/quest_db.txt b/db/quest_db.txt index 000e7f1de..6932de5dd 100644 --- a/db/quest_db.txt +++ b/db/quest_db.txt @@ -1161,24 +1161,24 @@ 11114,0,1004,10,0,0,0,0,"Request : Hunt Honet" 11115,0,1009,20,0,0,0,0,"Request : Hunt Condor" -11116,0,1052,10,0,0,0,0,"Request : Hunt grasshopper's leg" +11116,0,1052,10,0,0,0,0,"Request : Hunt Grasshopper's Leg" 11117,0,1024,20,0,0,0,0,"Request : Hunt Worm tail" 11118,0,1014,30,0,0,0,0,"Request : Hunt Spore" -11119,0,1048,20,0,0,0,0,"Request : Pest control" +11119,0,1048,20,0,0,0,0,"Request : Pest Control" 11120,0,1055,20,0,0,0,0,"Request : Hunt Muka" 11121,0,1005,20,0,0,0,0,"Request : Hunt Farmiliar" -11122,0,1019,30,0,0,0,0,"Request : Collect feather" -11123,0,1077,30,0,0,0,0,"Request : Collect Poison spore" -11124,86400,0,0,0,0,0,0,"Request : Hunt honet - Complete" -11125,86400,0,0,0,0,0,0,"Request : Hunt condor - Complete" -11126,86400,0,0,0,0,0,0,"Request : Hunt grasshopper's leg - Complete" -11127,86400,0,0,0,0,0,0,"Request : Hunt Worm tail - Complete" -11128,86400,0,0,0,0,0,0,"Request : Hunt spore - Complete" -11129,86400,0,0,0,0,0,0,"Request : Pest control - Complete" -11130,86400,0,0,0,0,0,0,"Request : Hunt muka - Complete" +11122,0,1019,30,0,0,0,0,"Request : Collect Feather" +11123,0,1077,30,0,0,0,0,"Request : Collect Poison Spore" +11124,86400,0,0,0,0,0,0,"Request : Hunt Honet - Complete" +11125,86400,0,0,0,0,0,0,"Request : Hunt Condor - Complete" +11126,86400,0,0,0,0,0,0,"Request : Hunt Grasshopper's Leg - Complete" +11127,86400,0,0,0,0,0,0,"Request : Hunt Worm Tail - Complete" +11128,86400,0,0,0,0,0,0,"Request : Hunt Spore - Complete" +11129,86400,0,0,0,0,0,0,"Request : Pest Control - Complete" +11130,86400,0,0,0,0,0,0,"Request : Hunt Muka - Complete" 11131,86400,0,0,0,0,0,0,"Request : Hunt Farmiliar - Complete" -11132,86400,0,0,0,0,0,0,"Request : Collect feather - Complete" -11133,86400,0,0,0,0,0,0,"Request : Collect Poison spore - Complete" +11132,86400,0,0,0,0,0,0,"Request : Collect Feather - Complete" +11133,86400,0,0,0,0,0,0,"Request : Collect Poison Spore - Complete" 11135,0,0,0,0,0,0,0,"Looking for Maestro Song" 11136,0,0,0,0,0,0,0,"Looking for Maestro Song" diff --git a/db/re_job_db.txt b/db/re_job_db.txt new file mode 100644 index 000000000..d062c8587 --- /dev/null +++ b/db/re_job_db.txt @@ -0,0 +1,230 @@ +// Job-specific values database,
+// Used for Renewal-exclusive values, such as the shield ASPD penalty
+// Job ID, Shield ASPD Penalty (value / 10)
+
+//Novice
+0,100
+//Swordman
+1,50
+//Mage
+2,50
+//Archer
+3,50
+//Acolyte
+4,50
+//Merchant
+5,50
+//Thief
+6,60
+//Knight
+7,50
+//Priest
+8,50
+//Wizard
+9,50
+//Blacksmith
+10,50
+//Hunter
+11,90
+//Assassin
+12,60
+//Knight2
+13,50
+//Crusader
+14,50
+//Monk
+15,50
+//Sage
+16,50
+//Rogue
+17,50
+//Alchem
+18,50
+//Alchemist
+18,50
+//Bard
+19,70
+//Dancer
+20,70
+//Crusader2
+21,50
+//Wedding
+22,50
+//SuperNovice
+23,50
+//Gunslinger
+24,60
+//Ninja
+25,60
+//Xmas
+26,50
+//Summer
+27,50
+//NoviceHigh
+4001,100
+//SwordmanHigh
+4002,50
+//MageHigh
+4003,50
+//ArcherHigh
+4004,50
+//AcolyteHigh
+4005,50
+//MerchantHigh
+4006,50
+//ThiefHigh
+4007,60
+//LordKnight
+4008,50
+//HighPriest
+4009,50
+//HighWizard
+4010,50
+//Whitesmith
+4011,50
+//Sniper
+4012,90
+//AssassinCross
+4013,60
+//LordKnight2
+4014,50
+//Paladin
+4015,50
+//Champion
+4016,50
+//Professor
+4017,50
+//Stalker
+4018,50
+//Creator
+4019,50
+//Clown
+4020,70
+//Gypsy
+4021,70
+//Paladin2
+4022,50
+//Baby
+4023,100
+//BabySwordman
+4024,50
+//BabyMage
+4025,50
+//BabyArcher
+4026,50
+//BabyAcolyte
+4027,50
+//BabyMerchant
+4028,50
+//BabyThief
+4029,60
+//BabyKnight
+4030,50
+//BabyPriest
+4031,50
+//BabyWizard
+4032,50
+//BabyBlacksmith
+4033,50
+//BabyHunter
+4034,90
+//BabyAssassin
+4035,60
+//BabyKnight2
+4036,50
+//BabyCrusader
+4037,50
+//BabyMonk
+4038,50
+//BabySage
+4039,50
+//BabyRogue
+4040,50
+//BabyAlchem
+4041,50
+//BabyAlchemist
+4041,50
+//BabyBard
+4042,70
+//BabyDancer
+4043,70
+//BabyCrusader2
+4044,50
+//SuperBaby
+4045,50
+//Taekwon
+4046,50
+//StarGladiator
+4047,50
+//StarGladiator2
+4048,50
+//SoulLinker
+4049,80
+//RuneKnight
+4054,50
+//Warlock
+4055,50
+//Ranger
+4056,80
+//ArchBishop
+4057,100
+//Mechanic
+4058,60
+//GuillotineCross
+4059,90
+//RuneKnightT
+4060,50
+//WarlockT
+4061,50
+//RangerT
+4062,80
+//ArchBishopT
+4063,100
+//MechanicT
+4064,60
+//GuillotineCrossT
+4065,90
+//RoyalGuard
+4066,50
+//Sorcerer
+4067,50
+//Minstrel
+4068,70
+//Wanderer
+4069,70
+//Sura
+4070,50
+//Genetic
+4071,50
+//ShadowChaser
+4072,40
+//RoyalGuardT
+4073,50
+//SorcererT
+4074,50
+//MinstrelT
+4075,50
+//WandererT
+4076,50
+//SuraT
+4077,50
+//GeneticT
+4078,50
+//ShadowChaserT
+4079,40
+//RuneKnight2
+4080,50
+//RuneKnightT2
+4081,50
+//RoyalGuard2
+4082,50
+//RoyalGuardT2
+4083,50
+//Ranger2
+4084,50
+//RangerT2
+4085,50
+//Mechanic2
+4086,50
+//MechanicT2
+4087,50
\ No newline at end of file diff --git a/db/skill_cast_db.txt b/db/skill_cast_db.txt index 7ded81500..05e44e02b 100644 --- a/db/skill_cast_db.txt +++ b/db/skill_cast_db.txt @@ -1,1137 +1,1860 @@ // Skill Times Database // // Structure of Database: -// SkillID,CastingTime,AfterCastActDelay,AfterCastWalkDelay,Duration1,Duration2 -// -//========================================== -// Rough list of Contents: -//========================================== -// 1. 1st Jobs Skills -// 2. 2-1 Jobs Skills -// 3. 1st Jobs Quest Skills -// 4. NPC Skills (1) -// 5. 2-2 Jobs Skills -// 6. Wedding Skills -// 7. NPC Skills (2) -// 8. Advanced Jobs Skills (1) -// 9. Adoption Skills -// 10. Taekwon Jobs Skills (1) -// 11. Advanced Jobs Skills (2) -// 12. Taekwon Jobs Skills (2) -// 13. 2nd Jobs Quest Skills -// 14. Homunculus Skills -// 15. Mercenary Skills -// 16. Guild Skills -//========================================== -// This is just a rough overview to help -// giving an overview on the document and -// help navigating through it. (Vedurin) +// SkillID,CastingTime,AfterCastActDelay,AfterCastWalkDelay,Duration1,Duration2,Cool Down +//== Explained: +// CastingTime : time to cast this skill, in miliseconds +// AfterCastActDelay : "normal" delay, character cannot use skills, in miliseconds +// AfterCastWalkDleay : amount of time before character can move again, in miliseconds +// Duration1 / Duration2 : usually the durations used by the skill, at special cases it is used to hold special data +// Cool Down : amount of time until character can re-use this skill, in miliseconds +//== Extra +// On all fields you can use ':' as a delimiter to level-specific values, +// - Example using SM_PROVOKE +// - Original:6,0,0,0,30000,0,1000 +// - ModifiedTo:6,0,0,0,30000,0,1000:2500:3000:etc +// - Makes lvl 1 have 1000 (1s) cool down, lvl 2 2500 (2.5s), lvl 3 3000, and so on. //========================================== - - - //===== Swordman =========================== //-- SM_PROVOKE -6,0,0,0,30000,0 +6,0,0,0,30000,0,1000 //-- SM_MAGNUM -7,0,0,0,2000,10000 +7,0,0,0,2000,10000,2000 //-- SM_ENDURE -8,0,0,0,10000:13000:16000:19000:22000:25000:28000:31000:34000:37000,10000 +8,0,0,0,10000:13000:16000:19000:22000:25000:28000:31000:34000:37000,10000,10000 //========================================== //===== Mage =============================== //-- MG_SIGHT -10,0,0,0,10000,0 +10,0,0,0,10000,0,0 //-- MG_NAPALMBEAT -11,1000,1000:1000:1000:900:900:800:800:700:600:500,0,0,0 +11,1000,1000:1000:1000:900:900:800:800:700:600:500,0,0,0,0 //-- MG_SAFETYWALL -12,4000:3500:3500:2500:2000:1500:1000:1000:1000:1000,0,0,5000:10000:15000:20000:25000:30000:35000:40000:45000:50000,0 +12,4000:3500:3500:2500:2000:1500:1000:1000:1000:1000,0,0,5000:10000:15000:20000:25000:30000:35000:40000:45000:50000,0,0 //-- MG_SOULSTRIKE -13,500,1200:1000:1400:1200:1600:1400:1800:1600:2000:1800,0,0,0 +13,500,1200:1000:1400:1200:1600:1400:1800:1600:2000:1800,0,0,0,0 //-- MG_COLDBOLT -14,700:1400:2100:2800:3500:4200:4900:5600:6300:7000,1000:1200:1400:1600:1800:2000:2200:2400:2600:2800,0,0,0 +14,700:1400:2100:2800:3500:4200:4900:5600:6300:7000,1000:1200:1400:1600:1800:2000:2200:2400:2600:2800,0,0,0,0 //-- MG_FROSTDRIVER -15,800,1500,0,0,3000:6000:9000:12000:15000:18000:21000:24000:27000:30000 +15,800,1500,0,0,3000:6000:9000:12000:15000:18000:21000:24000:27000:30000,0 //-- MG_STONECURSE -16,1000,0,0,5000,20000 +16,1000,0,0,5000,20000,0 //-- MG_FIREBALL -17,1500:1500:1500:1500:1500:1000:1000:1000:1000:1000,1500:1500:1500:1500:1500:1000:1000:1000:1000:1000,0,0,0 +17,1500:1500:1500:1500:1500:1000:1000:1000:1000:1000,1500:1500:1500:1500:1500:1000:1000:1000:1000:1000,0,0,0,0 //-- MG_FIREWALL -18,2000:1850:1700:1550:1400:1250:1100:950:800:650,0,0,5000:6000:7000:8000:9000:10000:11000:12000:13000:14000,0 +18,2000:1850:1700:1550:1400:1250:1100:950:800:650,0,0,5000:6000:7000:8000:9000:10000:11000:12000:13000:14000,0,0 //-- MG_FIREBOLT -19,700:1400:2100:2800:3500:4200:4900:5600:6300:7000,1000:1200:1400:1600:1800:2000:2200:2400:2600:2800,0,0,0 +19,700:1400:2100:2800:3500:4200:4900:5600:6300:7000,1000:1200:1400:1600:1800:2000:2200:2400:2600:2800,0,0,0,0 //-- MG_LIGHTNINGBOLT -20,700:1400:2100:2800:3500:4200:4900:5600:6300:7000,1000:1200:1400:1600:1800:2000:2200:2400:2600:2800,0,0,0 +20,700:1400:2100:2800:3500:4200:4900:5600:6300:7000,1000:1200:1400:1600:1800:2000:2200:2400:2600:2800,0,0,0,0 //-- MG_THUNDERSTORM -21,1000:2000:3000:4000:5000:6000:7000:8000:9000:10000,2000,0,500,0 +21,1000:2000:3000:4000:5000:6000:7000:8000:9000:10000,2000,0,500,0,0 //========================================== //===== Acolyte ============================ //-- AL_RUWACH -24,0,0,0,10000,0 +24,0,0,0,10000,0,0 //-- AL_PNEUMA -25,0,0,0,10000,0 +25,0,0,0,10000,0,0 //-- AL_TELEPORT -26,0,0,0,0,0 +26,0,0,0,0,0,0 //-- AL_WARP -27,1000,0,0,5000:10000:15000:20000:25000:30000:35000:40000:45000:50000,0 +27,1000,0,0,5000:10000:15000:20000:25000:30000:35000:40000:45000:50000,0,0 //-- AL_HEAL -28,0,1000,0,0,0 +28,0,1000,0,0,0,0 //-- AL_INCAGI -29,1000,1000,0,60000:80000:100000:120000:140000:160000:180000:200000:220000:240000,0 +29,1000,1000,0,60000:80000:100000:120000:140000:160000:180000:200000:220000:240000,0,0 //-- AL_DECAGI -30,1000,1000,0,40000:50000:60000:70000:80000:90000:100000:110000:120000:130000,0 +30,1000,1000,0,40000:50000:60000:70000:80000:90000:100000:110000:120000:130000,0,0 //-- AL_HOLYWATER -31,1000,500,0,0,0 +31,1000,500,0,0,0,0 //-- AL_CRUCIS -32,500,2000,0,60000,0 +32,500,2000,0,0,0,0 //-- AL ANGELUS -33,500,3500,0,30000:60000:90000:120000:150000:180000:210000:240000:270000:300000,0 +33,500,3500,0,30000:60000:90000:120000:150000:180000:210000:240000:270000:300000,0,0 //-- AL_BLESSING -34,0,0,0,60000:80000:100000:120000:140000:160000:180000:200000:220000:240000,0 +34,0,0,0,60000:80000:100000:120000:140000:160000:180000:200000:220000:240000,0,0 //-- AL_CURE -35,0,1000,0,0,6000 +35,0,1000,0,0,6000,0 //========================================== //===== Archer ============================= //-- AC_CONCENTRATION -45,0,0,0,60000:80000:100000:120000:140000:160000:180000:200000:220000:240000,0 +45,0,0,0,60000:80000:100000:120000:140000:160000:180000:200000:220000:240000,0,0 //-- AC_DOUBLE -46,0,0,0,100,0 +46,0,0,0,100,0,0 //-- AC_SHOWER -47,0,0,0,100,0 +47,0,0,0,100,0,0 //========================================== //===== Thief ============================== //-- TF_HIDING -51,0,0,0,30000:60000:90000:120000:150000:180000:210000:240000:270000:300000,0 +51,0,0,0,30000:60000:90000:120000:150000:180000:210000:240000:270000:300000,0,0 //-- TF_POISON -52,0,0,0,0,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000 +52,0,0,0,0,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000,0 //========================================== //===== First planned to be shared ========= //-- ALL_RESURRECTION -54,6000:4000:2000:0,0:1000:2000:3000,0,0,0 +54,6000:4000:2000:0,0:1000:2000:3000,0,0,0,0 //========================================== //===== Knight ============================= //-- KN_BRANDISHSPEAR -57,700,0,0,0,0 +57,700,0,0,0,0,0 //-- KN_SPEARBOOMERANG -59,0,1000,0,0,0 +59,0,1000,0,0,0,0 //-- KN_TWOHANDQUICKEN -60,0,0,0,30000:60000:90000:120000:150000:180000:210000:240000:270000:300000,0 +60,0,0,0,30000:60000:90000:120000:150000:180000:210000:240000:270000:300000,0,0 //-- KN_AUTOCOUNTER -61,0,0,0,400:800:1200:1600:2000,0 +61,0,0,0,400:800:1200:1600:2000,0,0 //-- KN_BOWLINGBASH -62,700,0,0,0,0 +62,700,0,0,0,0,0 //========================================== //===== Priest ============================= //-- PR_IMPOSITIO -66,0,3000,0,60000,0 +66,0,3000,0,60000,0,0 //-- PR_SUFFRAGIUM -67,0,2000,0,30000:20000:10000,0 +67,0,2000,0,30000:20000:10000,0,0 //-- PR_ASPERSIO -68,0,2000,0,60000:90000:120000:150000:180000,0 +68,0,2000,0,60000:90000:120000:150000:180000,0,0 //-- PR_BENEDICTIO -69,0,0,0,40000:80000:120000:160000:200000,0 +69,0,0,0,40000:80000:120000:160000:200000,0,0 //-- PR_SANCTUARY -70,5000,0,0,4000:7000:10000:13000:16000:19000:22000:25000:28000:31000,0 +70,5000,0,0,4000:7000:10000:13000:16000:19000:22000:25000:28000:31000,0,0 //-- PR_SLOWPOISON -71,0,0,0,10000:20000:30000:40000,0 +71,0,0,0,10000:20000:30000:40000,0,0 //-- PR_STRECOVERY -72,0,2000,0,0,30000 +72,0,2000,0,0,30000,0 //-- PR_KYRIE -73,2000,2000,0,120000,0 +73,2000,2000,0,120000,0,0 //-- PR_MAGNIFICAT -74,4000,2000,0,30000:45000:60000:75000:90000,0 +74,4000,2000,0,30000:45000:60000:75000:90000,0,0 //-- PR_GLORIA -75,0,2000,0,10000:15000:20000:25000:30000,0 +75,0,2000,0,10000:15000:20000:25000:30000,0,0 //-- PR_LEXDIVINA -76,0,3000,0,30000:35000:40000:45000:50000:60000:60000:60000:60000:60000,0 +76,0,3000,0,30000:35000:40000:45000:50000:60000:60000:60000:60000:60000,0,0 //-- PR_TURNUNDEAD -77,1000,3000,0,0,0 +77,1000,3000,0,0,0,0 //-- PR_LEXAETERNA -78,0,3000,0,600000,0 +78,0,3000,0,600000,0,0 //-- PR_MAGNUS -79,15000,4000,0,5000:6000:7000:8000:9000:10000:11000:12000:13000:14000,0 +79,15000,4000,0,5000:6000:7000:8000:9000:10000:11000:12000:13000:14000,0,0 //========================================== //===== Wizard ============================= //-- WZ_FIREPILLAR -80,3000:2700:2400:2100:1800:1500:1200:900:600:300,1000,0,30000,600:800:1000:1200:1400:1600:1800:2000:2200:2400 +80,3000:2700:2400:2100:1800:1500:1200:900:600:300,1000,0,30000,600:800:1000:1200:1400:1600:1800:2000:2200:2400,0 //-- WZ_SIGHTRASHER -81,700,2000,0,500,0 - +81,700,2000,0,500,0,0 +//-- WZ_FIREIVY +82,5000:4500:4000:3500:3000:2500:2000:1500:1000:500,800,600,5000,5000,0 //-- WZ_METEOR -83,15000,2000:3000:3000:4000:4000:5000:5000:6000:6000:7000,0,500,5000 +83,15000,2000:3000:3000:4000:4000:5000:5000:6000:6000:7000,0,500,5000,0 //-- WZ_JUPITEL -84,2500:3000:3500:4000:4500:5000:5500:6000:6500:7000,0,0,0,0 +84,2500:3000:3500:4000:4500:5000:5500:6000:6500:7000,0,0,0,0,0 //-- WZ_VERMILION -85,15000:14500:14000:13500:13000:12500:12000:11500:11000:10500,5000,0,4000,5500:6000:6500:7000:7500:8000:8500:9000:9500:10000 +85,15000:14500:14000:13500:13000:12500:12000:11500:11000:10500,5000,0,4000,5500:6000:6500:7000:7500:8000:8500:9000:9500:10000,0 //-- WZ_WATERBALL -86,1000:2000:3000:4000:5000:6000:7000:8000:9000:10000,0,0,0,0 +86,1000:2000:3000:4000:5000:6000:7000:8000:9000:10000,0,0,0,0,0 //-- WZ_ICEWALL -87,0,0,0,5000:10000:15000:20000:25000:30000:35000:40000:45000:50000,0 +87,0,0,0,5000:10000:15000:20000:25000:30000:35000:40000:45000:50000,0,0 //-- WZ_FROSTNOVA -88,5000:4700:4400:4100:3800:3500:3200:2900:2700:2500,1000,0,0,1500:3000:4500:6000:7500:9000:10500:12000:13500:15000 +88,5000:4700:4400:4100:3800:3500:3200:2900:2700:2500,1000,0,0,1500:3000:4500:6000:7500:9000:10500:12000:13500:15000,0 //-- WZ_STORMGUST -89,6000:7000:8000:9000:10000:11000:12000:13000:14000:15000,5000,0,4600,12000 +89,6000:7000:8000:9000:10000:11000:12000:13000:14000:15000,5000,0,4600,12000,0 //-- WZ_EARTHSPIKE -90,1000:2000:3000:4000:5000,700,0,0,0 +90,1000:2000:3000:4000:5000,700,0,0,0,0 //-- WZ_HEAVENDRIVE -91,1000:2000:3000:4000:5000,700,0,500,0 +91,1000:2000:3000:4000:5000,700,0,500,0,0 //-- WZ_QUAGMIRE -92,0,1000,0,5000:10000:15000:20000:25000,5000:10000:15000:20000:25000 +92,0,1000,0,5000:10000:15000:20000:25000,5000:10000:15000:20000:25000,0 //========================================== //===== Blacksmith ========================= //-- BS_REPAIRWEAPON -108,7500,0,0,0,0 +108,7500,0,0,0,0,0 //-- BS_HAMMERFALL -110,0,0,0,0,5000 +110,0,0,0,0,5000,0 //-- BS_ADRENALINE -111,0,0,0,30000:60000:90000:120000:150000,0 +111,0,0,0,30000:60000:90000:120000:150000,0,0 //-- BS_WEAPONPEFECT -112,0,0,0,10000:20000:30000:40000:50000,0 +112,0,0,0,10000:20000:30000:40000:50000,0,0 //-- BS_OVERTHRUST -113,0,0,0,20000:40000:60000:80000:100000,0 +113,0,0,0,20000:40000:60000:80000:100000,0,0 //-- BS_MAXIMIZE -114,0,0,0,1000:2000:3000:4000:5000,0 +114,0,0,0,1000:2000:3000:4000:5000,0,0 //========================================== //===== Hunter ============================= //-- HT_SKIDTRAP -115,0,0,0,300000:240000:180000:120000:60000,0 +115,0,0,0,300000:240000:180000:120000:60000,0,0 //-- HT_LANDMINE -116,0,0,0,200000:160000:120000:80000:40000,5000 +116,0,0,0,200000:160000:120000:80000:40000,5000,0 //-- HT_ANKLESNARE -117,0,0,0,250000:200000:150000:100000:50000,4000:8000:12000:16000:20000 +117,0,0,0,250000:200000:150000:100000:50000,4000:8000:12000:16000:20000,0 //-- HT_SHOCKWAVE -118,0,0,0,200000:160000:120000:80000:40000,0 +118,0,0,0,200000:160000:120000:80000:40000,0,0 //-- HT_SANDMAN -119,0,0,0,150000:120000:90000:60000:30000,12000:14000:16000:18000:20000 +119,0,0,0,150000:120000:90000:60000:30000,12000:14000:16000:18000:20000,0 //-- HT_FLASHER -120,0,0,0,150000:120000:90000:60000:30000,10000:11000:12000:13000:14000 +120,0,0,0,150000:120000:90000:60000:30000,10000:11000:12000:13000:14000,0 //-- HT_FREEZINGTRAP -121,0,0,0,150000:120000:90000:60000:30000,3000:6000:9000:12000:15000 +121,0,0,0,150000:120000:90000:60000:30000,3000:6000:9000:12000:15000,0 //-- HT_BLASTMINE -122,0,0,0,25000:20000:15000:10000:5000,0 +122,0,0,0,25000:20000:15000:10000:5000,0,0 //-- HT_CLAYMORETRAP -123,0,0,0,20000:40000:60000:80000:100000,0 +123,0,0,0,20000:40000:60000:80000:100000,0,0 //-- HT_TALKIEBOX -125,0,0,0,600000,0 +125,0,0,0,600000,0,0 //-- HT_BLITZBEAT -129,1500,1000,0,0,0 +129,1500,1000,0,0,0,0 //========================================== //===== Assassin =========================== //-- AS_CLOAKING -135,0,0,0,500:1000:2000:3000:4000:5000:6000:7000:8000:9000,0 +135,0,0,0,500:1000:2000:3000:4000:5000:6000:7000:8000:9000,0,0 //-- AS_SONICBLOW -136,0,2000,2000,0,5000 +136,0,2000,2000,0,5000,0 //-- AS_ENCHANTPOISON -138,0,0,0,30000:45000:60000:75000:90000:105000:120000:135000:150000:165000,10000:20000:30000:40000:50000:60000:70000:80000:90000:100000 +138,0,0,0,30000:45000:60000:75000:90000:105000:120000:135000:150000:165000,10000:20000:30000:40000:50000:60000:70000:80000:90000:100000,0 //-- AS_POISONREACT -139,0,0,0,20000:25000:30000:35000:40000:45000:50000:55000:60000:65000,0 +139,0,0,0,20000:25000:30000:35000:40000:45000:50000:55000:60000:65000,0,0 //-- AS_VENOMDUST -140,0,0,0,5000:10000:15000:20000:25000:30000:35000:40000:45000:50000,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000 +140,0,0,0,5000:10000:15000:20000:25000:30000:35000:40000:45000:50000,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000,0 //-- AS_SPLASHER -141,1000,0,0,5000:5500:6000:6500:7000:7500:8000:8500:9000:9500,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000 +141,1000,0,0,5000:5500:6000:6500:7000:7500:8000:8500:9000:9500,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000,0 //========================================== //===== 1st Jobs Quest Skills=============== //-- NV_TRICKDEAD -143,0,0,0,600000,0 +143,0,0,0,600000,0,0 //-- SM_FATALBLOW -145,0,0,0,0,5000 +145,0,0,0,0,5000,0 //-- AC_CHARGEARROW -148,1500,0,0,0,0 +148,1500,0,0,0,0,0 //-- TF_SPRINKLESAND -149,0,0,0,0,10000 +149,0,0,0,0,10000,0 //-- TF_PICKSTONE -151,500,0,0,0,0 +151,500,0,0,0,0,0 //-- TF_THROWSTONE -152,0,0,0,5000,8000 +152,0,0,0,5000,8000,0 //-- MC_LOUD -155,0,0,0,300000,0 +155,0,0,0,300000,0,0 //-- AL_HOLYLIGHT -156,2000,0,0,0,0 +156,2000,0,0,0,0,0 //-- MG_ENERGYCOAT -157,5000,0,0,300000,0 +157,5000,0,0,300000,0,0 //========================================== //===== NPC Skills Part 1 ================== //-- NPC_ATTRICHANGE -161,0,0,0,1800000,0 +161,0,0,0,1800000,0,0 //-- NPC_CHANGEWATER -162,0,0,0,1800000,0 +162,0,0,0,1800000,0,0 //-- NPC_CHANGEGROUND -163,0,0,0,1800000,0 +163,0,0,0,1800000,0,0 //-- NPC_CHANGEFIRE -164,0,0,0,1800000,0 +164,0,0,0,1800000,0,0 //-- NPC_CHANGEWIND -165,0,0,0,1800000,0 +165,0,0,0,1800000,0,0 //-- NPC_CHANGEPOISON -166,0,0,0,1800000,0 +166,0,0,0,1800000,0,0 //-- NPC_CHANGEHOLY -167,0,0,0,1800000,0 +167,0,0,0,1800000,0,0 //-- NPC_CHANGEDARKNESS -168,0,0,0,1800000,0 +168,0,0,0,1800000,0,0 //-- NPC_CHANGETELEKINESIS -169,0,0,0,1800000,0 +169,0,0,0,1800000,0,0 //-- NPC_SELFDESTRUCTION -173,0,0,0,3500,0 +173,0,0,0,3500,0,0 //-- NPC_POISON -176,0,0,0,0,60000 +176,0,0,0,0,60000,0 //-- NPC_BLINDATTACK -177,0,0,0,0,30000 +177,0,0,0,0,30000,0 //-- NPC_SILENCEATTACK -178,0,0,0,0,30000 -//-- NPC_STUNATTACK -179,0,0,0,0,5000 +178,0,0,0,0,30000,0 +//-- NPC0,_STUNATTACK +179,0,0,0,0,5000,0 //-- NPC_PETRIFYATTACK -180,0,0,0,0,20000 +180,0,0,0,0,20000,0 //-- NPC_CURSEATTACK -181,0,0,0,0,30000 +181,0,0,0,0,30000,0 //-- NPC_SLEEPATTACK -182,0,0,0,0,30000 +182,0,0,0,0,30000,0 //-- NPC_MAGICALATTACK -192,0,0,0,15000,0 +192,0,0,0,15000,0,0 //-- NPC_KEEPING -201,0,0,0,60000:70000:80000:90000:100000:110000:120000:130000:140000:150000,0 +201,0,0,0,60000:70000:80000:90000:100000:110000:120000:130000:140000:150000,0,0 //-- NPC_BARRIER -204,0,0,0,60000:70000:80000:90000:100000:110000:120000:130000:140000:150000,0 +204,0,0,0,60000:70000:80000:90000:100000:110000:120000:130000:140000:150000,0,0 //-- NPC_DEFENDER -205,0,0,0,60000:70000:80000:90000:100000:110000:120000:130000:140000:150000,0 +205,0,0,0,60000:70000:80000:90000:100000:110000:120000:130000:140000:150000,0,0 //-- NPC_LICK -206,0,0,0,0,3000 +206,0,0,0,0,3000,0 //-- NPC_HALLUCINATION -207,0,0,0,30000:40000:50000:60000:70000:80000:90000:100000:110000:120000,0 +207,0,0,0,30000:40000:50000:60000:70000:80000:90000:100000:110000:120000,0,0 //========================================== //===== Rogue ============================== //-- RG_BACKSTAB -212,0,500,0,0,0 +212,0,500,0,0,0,0 //-- RG_RAID -214,0,0,0,5000,8000:9000:10000:11000:12000 +214,0,0,0,5000,8000:9000:10000:11000:12000,0 //-- RG_STRIPEWEAPON -215,1000,1000,0,75000:90000:105000:120000:135000,0 +215,1000,1000,0,75000:90000:105000:120000:135000,0,0 //-- RG_STRIPSHIELD -216,1000,1000,0,75000:90000:105000:120000:135000,0 +216,1000,1000,0,75000:90000:105000:120000:135000,0,0 //-- RG_STRIPWEAPON -217,1000,1000,0,75000:90000:105000:120000:135000,0 +217,1000,1000,0,75000:90000:105000:120000:135000,0,0 //-- RG_STRIPHELM -218,1000,1000,0,75000:90000:105000:120000:135000,0 +218,1000,1000,0,75000:90000:105000:120000:135000,0,0 //-- RG_GRAFITTI -220,0,0,0,180000,0 +220,0,0,0,180000,0,0 //========================================== //===== Alchemist ========================== //-- AM_DEMONSTRATION -229,1000,0,0,40000:45000:50000:55000:60000,0 +229,1000,0,0,40000:45000:50000:55000:60000,0,0 //-- AM_ACIDTERROR -230,1000,0,0,3:7:10:12:13,120000 +230,1000,0,0,3:7:10:12:13,120000,0 //-- AM_POTIONPITCHER -231,0,500,0,0,0 +231,0,500,0,0,0,0 //-- AM_CANNIBALIZE -232,2000,500,0,300000:240000:180000:120000:60000,0 +232,2000,500,0,300000:240000:180000:120000:60000,0,0 //-- AM_SPHEREMINE -233,2000,500,0,30000,0 +233,2000,500,0,30000,0,0 //-- AM_CP_WEAPON -234,2000,0,0,120000:240000:360000:480000:600000,0 +234,2000,0,0,120000:240000:360000:480000:600000,0,0 //-- AM_CP_SHIELD -235,2000,0,0,120000:240000:360000:480000:600000,0 +235,2000,0,0,120000:240000:360000:480000:600000,0,0 //-- AM_CP_ARMOR -236,2000,0,0,120000:240000:360000:480000:600000,0 +236,2000,0,0,120000:240000:360000:480000:600000,0,0 //-- AM_CP_HELM -237,2000,0,0,120000:240000:360000:480000:600000,0 +237,2000,0,0,120000:240000:360000:480000:600000,0,0 //-- AM_RESURRECTHOMUN -247,2000,0,0,0,0 +247,2000,0,0,0,0,0 //========================================== //===== Crusader =========================== //-- CR_AUTOGUARD -249,0,0,0,300000,0 +249,0,0,0,300000,0,0 //-- CR_SHIELDCHARGE -250,0,0,0,0,5000 +250,0,0,0,0,5000,0 //-- CR_SHIELDBOOMERANG -251,0,700,0,0,0 +251,0,700,0,0,0,0 //-- CR_REFLECTSHIELD -252,0,0,0,300000,0 +252,0,0,0,300000,0,0 //-- CR_HOLYCROSS -253,0,0,0,0,10000:11000:12000:13000:14000:15000:16000:17000:18000:19000 +253,0,0,0,0,10000:11000:12000:13000:14000:15000:16000:17000:18000:19000,0 //-- CR_GRANDCROSS -254,2000,1500,900,900,10000:11000:12000:13000:14000:15000:16000:17000:18000:19000 +254,2000,1500,900,900,10000:11000:12000:13000:14000:15000:16000:17000:18000:19000,0 //-- CR_DEVOTION -255,3000,0,0,0,30000:45000:60000:75000:90000 +255,3000,0,0,0,30000:45000:60000:75000:90000,0 //-- CR_PROVIDENCE -256,3000,0,0,180000,0 +256,3000,0,0,180000,0,0 //-- CR_DEFENDER -257,0,800,0,180000,0 +257,0,800,0,180000,0,0 //-- CR_SPEARQUICKEN -258,0,0,0,30000:60000:90000:120000:150000:180000:210000:240000:270000:300000,0 +258,0,0,0,30000:60000:90000:120000:150000:180000:210000:240000:270000:300000,0,0 //========================================== //===== Monk =============================== //-- MO_CALLSPIRITS -261,1000,0,0,600000,0 +261,1000,0,0,600000,0,0 //-- MO_ABSORBSPIRITS -262,2000,0,0,0,0 +262,2000,0,0,0,0,0 //-- MO_TRIPLEATTACK -263,0,1000,0,0,0 +263,0,1000,0,0,0,0 //-- MO_INVESTIGATE -266,1000,500,0,0,0 +266,1000,500,0,0,0,0 //-- MO_FINGEROFFENSIVE -267,1000,500,0:200:400:600:800,0,0 +267,1000,500,0:200:400:600:800,0,0,0 //-- MO_STEELBODY -268,5000,0,0,30000:60000:90000:120000:150000,0 +268,5000,0,0,30000:60000:90000:120000:150000,0,0 //-- MO_BLADESTOP -269,0,0,0,500:700:900:1100:1300,20000:30000:40000:50000:60000 +269,0,0,0,500:700:900:1100:1300,20000:30000:40000:50000:60000,0 //-- MO_EXPLOSIONSPIRITS -270,0,0,0,180000,0 +270,0,0,0,180000,0,0 //-- MO_EXTREMITYFIST -271,4000:3500:3000:2500:2000,3000:2500:2000:1500:1000,0,0,300000 +271,4000:3500:3000:2500:2000,3000:2500:2000:1500:1000,0,0,300000,0 //-- MO_CHAINCOMBO -272,0,1000,0,0,0 +272,0,1000,0,0,0,0 //-- MO_COMBOFINISH -273,0,700,0,0,0 +273,0,700,0,0,0,0 //========================================== //===== Sage =============================== //-- SA_MAGICROD -276,0,0,0,400:600:800:1000:1200,0 +276,0,0,0,400:600:800:1000:1200,0,0 //-- SA_SPELLBREAKER -277,700,0,0,0,0 +277,700,0,0,0,0,0 //-- SA_AUTOSPELL -279,3000,0,0,120000:150000:180000:210000:240000:270000:300000:330000:360000:390000,0 +279,3000,0,0,120000:150000:180000:210000:240000:270000:300000:330000:360000:390000,0,0 //-- SA_FLAMELAUNCHER -280,3000,0,0,1200000:1200000:1200000:1200000:1800000,0 +280,3000,0,0,1200000:1200000:1200000:1200000:1800000,0,0 //-- SA_FROSTWEAPON -281,3000,0,0,1200000:1200000:1200000:1200000:1800000,0 +281,3000,0,0,1200000:1200000:1200000:1200000:1800000,0,0 //-- SA_LIGHTNINGLOADER -282,3000,0,0,1200000:1200000:1200000:1200000:1800000,0 +282,3000,0,0,1200000:1200000:1200000:1200000:1800000,0,0 //-- SA_SEISMICWEAPON -283,3000,0,0,1200000:1200000:1200000:1200000:1800000,0 +283,3000,0,0,1200000:1200000:1200000:1200000:1800000,0,0 //-- SA_VOLCANO -285,5000,0,0,60000:120000:180000:240000:300000,0 +285,5000,0,0,60000:120000:180000:240000:300000,0,0 //-- SA_DELUGE -286,5000,0,0,60000:120000:180000:240000:300000,0 +286,5000,0,0,60000:120000:180000:240000:300000,0,0 //-- SA_VIOLENTGALE -287,5000,0,0,60000:120000:180000:240000:300000,0 +287,5000,0,0,60000:120000:180000:240000:300000,0,0 //-- SA_LANDPROTECTOR -288,5000,0,0,165000:210000:255000:300000:345000,0 +288,5000,0,0,165000:210000:255000:300000:345000,0,0 //-- SA_DISPELL -289,2000,0,0,0,0 +289,2000,0,0,0,0,0 //-- SA_REVERSEORCISH -294,0,0,0,1200000,0 +294,0,0,0,1200000,0,0 //========================================== //===== Bard & Dancer (Ensemble Skills) ==== //-- BD_ADAPTATION -304,0,0,0,0,5000 +304,0,0,0,0,5000,0 //-- BD_LULLABY -306,0,0,0,60000,15000 +306,0,0,0,60000,15000,0 //-- BD_RICHMANKIM -307,0,0,0,60000,60000 +307,0,0,0,60000,60000,0 //-- BD_ETERNALCHAOS -308,0,0,0,60000,60000 +308,0,0,0,60000,60000,0 //-- BD_DRUMBATTLEFIELD -309,0,0,0,60000,60000 +309,0,0,0,60000,60000,0 //-- BD_RINGNIBELUNGEN -310,0,0,0,60000,60000 +310,0,0,0,60000,60000,0 //-- BD_ROKISWEIL -311,0,0,0,60000,60000 +311,0,0,0,60000,60000,0 //-- BD_INTOABYSS -312,0,0,0,60000,60000 +312,0,0,0,60000,60000,0 //-- BD_SIEGFRIED -313,0,0,0,60000,60000 +313,0,0,0,60000,60000,0 //========================================== //===== Bard =============================== //-- BA_MUSICALSTRIKE -316,1500,0,0,0,0 +316,1500,0,0,0,0,0 //-- BA_DISSONANCE -317,0,0,0,30000,3000 +317,0,0,0,30000,3000,0 //-- BA_FROSTJOKE -318,0,3000,0,0,10000:11000:12000:13000:14000 +318,0,3000,0,0,10000:11000:12000:13000:14000,0 //-- BA_WHISTLE -319,0,0,0,60000,20000 +319,0,0,0,60000,20000,0 //-- BA_ASSASSINCROSS -320,0,0,0,120000,20000 +320,0,0,0,120000,20000,0 //-- BA_POEMBRAGI -321,0,0,0,180000,20000 +321,0,0,0,180000,20000,0 //-- BA_APPLEIDUN -322,0,0,0,180000,20000 +322,0,0,0,180000,20000,0 //========================================== //===== Dancer ============================= //-- DC_THROWARROW -324,1500,0,0,0,0 +324,1500,0,0,0,0,0 //-- DC_UGLYDANCE -325,0,0,0,30000,3000 +325,0,0,0,30000,3000,0 //-- DC_SCREAM -326,0,3000,0,0,5000 +326,0,3000,0,0,5000,0 //-- DC_HUMMING -327,0,0,0,60000,20000 +327,0,0,0,60000,20000,0 //-- DC_DONTFORGETME -328,0,0,0,180000,20000 +328,0,0,0,180000,20000,0 //-- DC_FORTUNEKISS -329,0,0,0,120000,20000 +329,0,0,0,120000,20000,0 //-- DC_SERVICEFORYOU -330,0,0,0,180000,20000 +330,0,0,0,180000,20000,0 //========================================== //===== Wedding Skills ===================== //-- WE_MALE -334,3000,0,0,0,0 +334,3000,0,0,0,0,0 //-- WE_FEMALE -335,3000,0,0,0,0 +335,3000,0,0,0,0,0 //-- WE_CALLPARTNER -336,0,0,0,20000,0 +336,0,0,0,20000,0,0 //========================================== //===== NPC Skills Part 2 ================== //-- NPC_GRANDDARKNESS -339,2000,1500,900,900,10000:11000:12000:13000:14000:15000:16000:17000:18000:19000 +339,2000,1500,900,900,10000:11000:12000:13000:14000:15000:16000:17000:18000:19000,0 //-- NPC_STOP -342,0,0,0,10000,0 +342,0,0,0,10000,0,0 //-- NPC_CHANGEUNDEAD -348,0,0,0,30000,0 +348,0,0,0,30000,0,0 //-- NPC_POWERUP -349,0,0,0,10000:15000:20000:25000:30000,0 +349,0,0,0,10000:15000:20000:25000:30000,0,0 //-- NPC_AGIUP -350,0,0,0,10000:15000:20000:25000:30000,0 +350,0,0,0,10000:15000:20000:25000:30000,0,0 //-- NPC_INVISIBLE -353,0,0,0,30000,0 +353,0,0,0,30000,0,0 //-- NPC_RUN -354,0,0:500:1000:1500:2000:2500,0,0,0 +354,0,0:500:1000:1500:2000:2500,0,0,0,0 //========================================== //===== Lord Knight ======================== //-- LK_AURABLADE -355,0,0,0,40000:60000:80000:100000:120000,0 +355,0,0,0,40000:60000:80000:100000:120000,0,0 //-- LK_PARRYING -356,0,0,0,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000,0 +356,0,0,0,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000,0,0 //-- LK_CONCENTRATION -357,0,0,0,25000:30000:35000:40000:45000,0 +357,0,0,0,25000:30000:35000:40000:45000,0,0 //-- LK_TENSIONRELAX -358,0,0,0,180000,0 +358,0,0,0,180000,0,0 //-- LK_BERSERK -359,0,0,0,300000,15000 +359,0,0,0,300000,15000,0 //-- LK_FURY -360,0,0,0,300000,0 +360,0,0,0,300000,0,0 //========================================== //===== High Priest ======================== //-- HP_ASSUMPTIO -361,1000:1500:2000:2500:3000,1100:1200:1300:1400:1500,0,20000:40000:60000:80000:100000,0 +361,1000:1500:2000:2500:3000,1100:1200:1300:1400:1500,0,20000:40000:60000:80000:100000,0,0 //-- HP_BASILICA -362,5000:6000:7000:8000:9000,2000:3000:4000:5000:6000,0,20000:25000:30000:35000:40000,20000:25000:30000:35000:40000 +362,5000:6000:7000:8000:9000,2000:3000:4000:5000:6000,0,20000:25000:30000:35000:40000,20000:25000:30000:35000:40000,0 //========================================== //===== High Wzard ========================= //-- HW_MAGICCRASHER -365,300,300,0,0,0 +365,300,300,0,0,0,0 //-- HW_MAGICPOWER -366,700,0,0,30000,0 +366,700,0,0,30000,0,0 //========================================== //===== Paladin ============================ //-- PA_PRESSURE -367,2000:2500:3000:3500:4000,2000:2500:3000:3500:4000,0,0,2000:3000:4000:5000:6000 +367,2000:2500:3000:3500:4000,2000:2500:3000:3500:4000,0,0,2000:3000:4000:5000:6000,0 //-- PA_SACRIFICE -368,0,2000,0,0,0 +368,0,2000,0,0,0,0 //-- PA_GOSPEL -369,0,0,0,60000,60000 +369,0,0,0,60000,60000,0 //========================================== //===== Champion =========================== //-- CH_PALMSTRIKE -370,0,300,0,0,0 +370,0,300,0,0,0,0 //-- CH_TIGERFIST -371,0,700,0,0,2000:4000:6000:8000:10000 +371,0,700,0,0,2000:4000:6000:8000:10000,0 //-- CH_CHAINCRUSH -372,0,800:800:800:800:800:1000:1000:1000:1000:1000,0,0,0 +372,0,800:800:800:800:800:1000:1000:1000:1000:1000,0,0,0,0 //========================================== //===== Professor ========================== //-- PF_HPCONVERSION -373,0,1000:1200:1400:1600:1800,0,0,0 +373,0,1000:1200:1400:1600:1800,0,0,0,0 //-- PF_SOULCHANGE -374,3000,5000,0,0,0 +374,3000,5000,0,0,0,0 //-- PF_SOULBURN -375,0,0,0,0,0 +375,0,0,0,0,0,10000:10000:10000:10000:15000 //========================================== //===== Assassin Cross ===================== //-- ASC_EDP -378,0,2000,0,40000:45000:50000:55000:60000,20000:30000:40000:50000:60000 +378,0,2000,0,40000:45000:50000:55000:60000,20000:30000:40000:50000:60000,0 //-- ASC_BREAKER -379,700,1000:1200:1400:1600:1800:2000:2200:2400:2600:2800,0,0,0 +379,700,1000:1200:1400:1600:1800:2000:2200:2400:2600:2800,0,0,0,0 //========================================== //===== Sniper ============================= //-- SN_SIGHT -380,0,0,0,30000,0 +380,0,0,0,30000,0,0 //-- SN_FALCONASSAULT -381,1000,3000,0,0,0 +381,1000,3000,0,0,0,0 //-- SN_SHARPSHOOTING -382,2000,1500,0,0,0 +382,2000,1500,0,0,0,0 //-- SN_WINDWALK -383,2000:2400:2800:3200:3600:4000:4400:4800:5200:5600,2000,0,130000:160000:190000:220000:250000:280000:310000:340000:370000:400000,0 +383,2000:2400:2800:3200:3600:4000:4400:4800:5200:5600,2000,0,130000:160000:190000:220000:250000:280000:310000:340000:370000:400000,0,0 //========================================== //===== Whitesmith ========================= //-- WS_MELTDOWN -384,500:500:600:600:700:700:800:800:900:1000,0,0,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000,5000 +384,500:500:600:600:700:700:800:800:900:1000,0,0,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000,5000,0 //-- WS_CARTBOOST -387,0,0,0,60000,0 +387,0,0,0,60000,0,0 //========================================== //===== Stalker ============================ //-- ST_CHASEWALK -389,1200,0,0,10000,30000 +389,1200,0,0,10000,30000,0 //-- ST_REJECTSWORD -390,0,0,0,300000,0 +390,0,0,0,300000,0,0 //========================================== //===== Clown / Gypsy ====================== //-- CG_ARROWVULCAN -394,2000:2200:2400:2600:2800:3000:3200:3400:3600:3800,2800:2800:2800:2800:2800:3000:3000:3000:3000:3000,2000,0,0 +394,2000:2200:2400:2600:2800:3000:3200:3400:3600:3800,2800:2800:2800:2800:2800:3000:3000:3000:3000:3000,2000,0,0,0 //-- CG_MOONLIT -395,0,0,0,20000:25000:30000:35000:40000,0 +395,0,0,0,20000:25000:30000:35000:40000,0,0 //-- CG_MARIONETTE -396,0,0,0,1000,0 +396,0,0,0,1000,0,0 //========================================== //===== Mixed Advanced Skills ============== //-- LK_SPIRALPIERCE -397,300:500:700:900:1000,1200:1400:1600:1800:2000,0,0,1000 +397,300:500:700:900:1000,1200:1400:1600:1800:2000,0,0,1000,0 //-- LK_HEADCRUSH -398,0,500,0,0,120000 +398,0,500,0,0,120000,0 //-- LK_JOINTBEAT -399,0,800:800:800:800:800:1000:1000:1000:1000:1000,0,0,30000 +399,0,800:800:800:800:800:1000:1000:1000:1000:1000,0,0,30000,0 //-- HW_NAPALMVULCAN -400,1000,1000,0,0,45000 +400,1000,1000,0,0,45000,0 //-- CH_SOULCOLLECT -401,2000,0,0,600000,0 +401,2000,0,0,600000,0,0 //-- PF_MINDBREAKER -402,0,800:900:1000:1100:1200,0,30000,0 +402,0,800:900:1000:1100:1200,0,30000,0,0 //-- PF_MEMORIZE -403,5000,0,0,0,0 +403,5000,0,0,0,0,0 //-- PF_FOGWALL -404,0,0,0,20000,10000 +404,0,0,0,20000,10000,0 //-- PF_SPIDERWEB -405,0,0,0,30000,8000 +405,0,0,0,30000,8000,0 //-- ASC_METEORASSAULT (Upkeep2 times are duration of: blind(lv1), stun(lv2) or bleeding (lv3)) -406,500,500,0,0,10000:5000:120000 +406,500,500,0,0,10000:5000:120000,0 //-- ASC_CDP -407,0,500,0,0,0 +407,0,500,0,0,0,0 //========================================== //===== Adoption Skills ==================== //-- WE_BABY -408,3000,0,0,300000,0 +408,3000,0,0,300000,0,0 //-- WE_CALLPARENT -409,0,0,0,20000,0 +409,0,0,0,20000,0,0 //-- WE_CALLBABY -410,0,0,0,20000,0 +410,0,0,0,20000,0,0 //========================================== //===== Taekwon ============================ //-- TK_RUN -411,6000:5000:4000:3000:2000:1000:0:0:0:0,0,0,1000,150000 +411,6000:5000:4000:3000:2000:1000:0:0:0:0,0,0,1000,150000,0 //-- TK_DOWNKICK -415,0,0,0,0,3000 +415,0,0,0,0,3000,0 //-- TK_TURNKICK -417,0,0,0,0,2000 +417,0,0,0,0,2000,0 //-- TK_SPTIME -423,0,0,0,1800000,0 +423,0,0,0,1800000,0,0 //-- TK_SEVENWIND -425,0,0,0,300000,0 +425,0,0,0,300000,0,0 //-- TK_HIGHJUMP -426,5000:4000:3000:2000:1000,0,0,0,0 +426,5000:4000:3000:2000:1000,0,0,0,0,0 //========================================== //===== Star Gladiator ===================== //-- SG_FEEL -427,1000,0,0,0,0 +427,1000,0,0,0,0,0 //SG_SUN_WARM -428,0,1000,0,10000:20000:60000,0 +428,0,1000,0,10000:20000:60000,0,0 //SG_MOON_WARM -429,0,1000,0,10000:20000:60000,0 +429,0,1000,0,10000:20000:60000,0,0 //SG_STAR_WARM -430,0,1000,0,10000:20000:60000,0 +430,0,1000,0,10000:20000:60000,0,0 //SG_SUN_COMFORT -431,0,1000,0,80000:160000:240000:320000,0 +431,0,1000,0,80000:160000:240000:320000,0,0 //SG_MOON_COMFORT -432,0,1000,0,80000:160000:240000:320000,0 +432,0,1000,0,80000:160000:240000:320000,0,0 //SG_STAR_COMFORT -433,0,1000,0,80000:160000:240000:320000,0 +433,0,1000,0,80000:160000:240000:320000,0,0 //-- SG_HATE -434,1000,0,0,0,0 +434,1000,0,0,0,0,0 //SG_FRIEND -442,0,0,0,10000,0 +442,0,0,0,10000,0,0 //SG_KNOWLEDGE -443,0,0,0,600000,0 +443,0,0,0,600000,0,0 //SG_FUSION -444,0,1000,0,600000,0 +444,0,1000,0,600000,0,0 //========================================== //===== Soul Linker ======================== //-- SL_ALCHEMIST -445,1000,500,0,150000:200000:250000:300000:350000,0 +445,1000,500,0,150000:200000:250000:300000:350000,0,0 //-- AM_BERSERKPITCHER - Copy of AM_POTIONPITCHER for now -446,0,500,0,0,0 +446,0,500,0,0,0,0 //-- SL_MONK -447,1000,500,0,150000:200000:250000:300000:350000,0 +447,1000,500,0,150000:200000:250000:300000:350000,0,0 //-- SL_STAR -448,1000,500,0,150000:200000:250000:300000:350000,0 +448,1000,500,0,150000:200000:250000:300000:350000,0,0 //-- SL_SAGE -449,1000,500,0,150000:200000:250000:300000:350000,0 +449,1000,500,0,150000:200000:250000:300000:350000,0,0 //-- SL_CRUSADER -450,1000,500,0,150000:200000:250000:300000:350000,0 +450,1000,500,0,150000:200000:250000:300000:350000,0,0 //-- SL_SUPERNOVICE -451,1000,500,0,150000:200000:250000:300000:350000,0 +451,1000,500,0,150000:200000:250000:300000:350000,0,0 //-- SL_KNIGHT -452,1000,500,0,150000:200000:250000:300000:350000,0 +452,1000,500,0,150000:200000:250000:300000:350000,0,0 //-- SL_WIZARD -453,1000,500,0,150000:200000:250000:300000:350000,0 +453,1000,500,0,150000:200000:250000:300000:350000,0,0 //-- SL_PRIEST -454,1000,500,0,150000:200000:250000:300000:350000,0 +454,1000,500,0,150000:200000:250000:300000:350000,0,0 //-- SL_BARDDANCER -455,1000,500,0,150000:200000:250000:300000:350000,0 +455,1000,500,0,150000:200000:250000:300000:350000,0,0 //-- SL_ROGUE -456,1000,500,0,150000:200000:250000:300000:350000,0 +456,1000,500,0,150000:200000:250000:300000:350000,0,0 //-- SL_ASSASSIN -457,1000,500,0,150000:200000:250000:300000:350000,0 +457,1000,500,0,150000:200000:250000:300000:350000,0,0 //-- SL_BLACKSMITH -458,1000,500,0,150000:200000:250000:300000:350000,0 +458,1000,500,0,150000:200000:250000:300000:350000,0,0 //-- BS_ADRENALINE2 -459,0,0,0,150000,0 +459,0,0,0,150000,0,0 //-- SL_HUNTER -460,1000,500,0,150000:200000:250000:300000:350000,0 +460,1000,500,0,150000:200000:250000:300000:350000,0,0 //-- SL_SOULLINKER -461,1000,500,0,150000:200000:250000:300000:350000,0 +461,1000,500,0,150000:200000:250000:300000:350000,0,0 //-- SL_KAIZEL -462,4500:4000:3500:3000:2500:2000:1500,0,0,1800000,2000 +462,4500:4000:3500:3000:2500:2000:1500,0,0,1800000,2000,0 //-- SL_KAAHI -463,0,500,0,1800000,500 +463,0,500,0,1800000,500,0 //-- SL_KAUPE -464,500,500,0,600000,0 +464,500,500,0,600000,0,0 //-- SL_KAITE -465,6000:5500:5000:4500:4000:3500:3000,0,0,60000:120000:180000:240000:300000:360000:600000,0 +465,6000:5500:5000:4500:4000:3500:3000,0,0,60000:120000:180000:240000:300000:360000:600000,0,0 //-- SL_STIN -467,100,500,0,0,0 +467,100,500,0,0,0,0 //-- SL_STUN -468,100,500,0,2000,0 +468,100,500,0,2000,0,0 //-- SL_SMA -469,2000,500,0,3000,0 +469,2000,500,0,3000,0,0 //-- SL_SWOO -470,1000,500,0,1000:2000:3000:4000:5000:6000:7000,0 +470,1000,500,0,1000:2000:3000:4000:5000:6000:7000,0,0 //-- SL_SKE -471,3000:2000:1000,500,0,10000:20000:30000,3000 +471,3000:2000:1000,500,0,10000:20000:30000,3000,0 //-- SL_SKA -472,3000:2000:1000,500,0,10000:20000:30000,0 +472,3000:2000:1000,500,0,10000:20000:30000,0,0 //========================================== //-- SM_SELFPROVOKE -473,0,0,0,30000,0 +473,0,0,0,30000,0,0 //===== Mixed Advanced Skills ============== //-- ST_PRESERVE -475,1000,0,0,600000,0 +475,1000,0,0,600000,0,0 //-- ST_FULLSTRIP -476,0,1000,0,75000:90000:105000:120000:135000,0 +476,0,1000,0,75000:90000:105000:120000:135000,0,0 //-- CR_SLIMPITCHER -478,1000,1000,0,0,0 +478,1000,1000,0,0,0,0 //-- CR_FULLPROTECTION -479,2000,0,0,120000:240000:360000:480000:600000,0 +479,2000,0,0,120000:240000:360000:480000:600000,0,0 //-- PA_SHIELDCHAIN -480,1000,1000,0,0,0 +480,1000,1000,0,0,0,0 //-- PF_DOUBLECASTING -482,2000,0,0,90000,0 +482,2000,0,0,90000,0,0 //-- HW_GANBANTEIN -483,3000,2000,0,0,0 +483,3000,2000,0,0,0,0 //-- HW_GRAVITATION -484,5000,2000,0,5000:6000:7000:8000:9000,0 +484,5000,2000,0,5000:6000:7000:8000:9000,0,0 //-- WS_CARTTERMINATION -485,0,0,0,0,5000 +485,0,0,0,0,5000,0 //-- WS_OVERTHRUSTMAX -486,0,0,0,180000,0 +486,0,0,0,180000,0,0 //-- CG_LONGINGFREEDOM -487,0,0,0,180000,0 +487,0,0,0,180000,0,0 //-- CG_HERMODE -488,0,0,0,10000:15000:20000:25000:30000,10000:15000:20000:25000:30000 +488,0,0,0,10000:15000:20000:25000:30000,10000:15000:20000:25000:30000,0 //-- CG_TAROTCARD -489,1000,3000,0,0,30000 +489,1000,3000,0,0,30000,0 //-- CR_ACIDDEMONSTRATION -490,1000,1000,0,0,0 +490,1000,1000,0,0,0,0 //-- CR_CULTIVATION -491,0,0,0,300000,0 +491,0,0,0,300000,0,0 //========================================== //-- ITEM_ENCHANTARMS -492,0,0,0,180000,0 +492,0,0,0,180000,0,0 //===== Mixed Taekwon Skills =============== //-- TK_MISSION -493,1000,0,0,0,0 +493,1000,0,0,0,0,0 //-- SL_HIGH -494,1000,500,0,150000:200000:250000:300000:350000,0 +494,1000,500,0,150000:200000:250000:300000:350000,0,0 //-- KN_ONEHAND -495,0,0,0,300000,0 +495,0,0,0,300000,0,0 //-- AM_TWILIGHT1 -496,3000,10000,0,0,0 +496,3000,10000,0,0,0,0 //-- AM_TWILIGHT2 -497,3000,10000,0,0,0 +497,3000,10000,0,0,0,0 //-- AM_TWILIGHT3 -498,3000,10000,0,0,0 +498,3000,10000,0,0,0,0 //-- HT_POWER -499,0,0,0,100,0 +499,0,0,0,100,0,0 //========================================== //===== Gunslinger ========================= //-- GS_GLITTERING -500,0,0,0,600000,0 +500,0,0,0,600000,0,0 //-- GS_FLING -501,0,0,0,30000,0 +501,0,0,0,30000,0,0 //-- GS_BULLSEYE -503,500,0,0,0,0 +503,500,0,0,0,0,0 //-- GS_MADNESSCANCEL -504,3000,4000,0,15000,0 +504,3000,4000,0,15000,0,0 //-- GS_ADJUSTMENT -505,1000,1000,0,30000,0 +505,1000,1000,0,30000,0,0 //-- GS_INCREASING -506,0,1000,0,60000,0 +506,0,1000,0,60000,0,0 //-- GS_CRACKER -508,0,1000,0,0,5000 +508,0,1000,0,0,5000,0 //-- GS_TRACKING -512,1200:1400:1600:1800:2000:2200:2400:2600:2800:3000,0,0,0,0 +512,1200:1400:1600:1800:2000:2200:2400:2600:2800:3000,0,0,0,0,0 //-- GS_DISARM -513,0,0,0,30000,0 +513,0,0,0,30000,0,0 //-- GS_PIERCINGSHOT -514,1500,0,0,0,120000 +514,1500,0,0,0,120000,0 //-- GS_RAPIDSHOWER -515,0,1000,0,0,0 +515,0,1000,0,0,0,0 //-- GS_DESPERADO -516,0,1000,1000,1000,0 +516,0,1000,1000,1000,0,0 //-- GS_GATLINGFEVER -517,0,0,0,30000:45000:60000:75000:90000:105000:120000:135000:150000:165000,0 +517,0,0,0,30000:45000:60000:75000:90000:105000:120000:135000:150000:165000,0,0 //-- GS_DUST -518,1000,1000,0,0,0 +518,1000,1000,0,0,0,0 //-- GS_FULLBUSTER -519,0,1200:1400:1600:1800:2000:2200:2400:2600:2800:3000,0,0,10000 +519,0,1200:1400:1600:1800:2000:2200:2400:2600:2800:3000,0,0,10000,0 //-- GS_GROUNDDRIFT -521,2000,0,0,3000:6000:9000:12000:15000:18000:21000:24000:27000:30000,10000 +521,2000,0,0,3000:6000:9000:12000:15000:18000:21000:24000:27000:30000,10000,0 //========================================== //===== Ninja ============================== //-- NJ_KUNAI -524,0,1000,0,0,0 +524,0,1000,0,0,0,0 //-- NJ_HUUMA -525,3000,2000,0,0,0 +525,3000,2000,0,0,0,0 //-- NJ_ZENYNAGE -526,0,5000,0,0,0 +526,0,5000,0,0,0,0 //-- NJ_TATAMIGAESHI -527,0,3000,0,3000,3000 +527,0,3000,0,3000,3000,0 //-- NJ_KASUMIKIRI -528,0,1000,0,30000:60000:90000:120000:150000:180000:210000:240000:270000:300000,0 +528,0,1000,0,30000:60000:90000:120000:150000:180000:210000:240000:270000:300000,0,0 //-- NJ_SHADOWJUMP -529,0,1000,0,0,0 +529,0,1000,0,0,0,0 //-- NJ_KIRIKAGE // Seems to have no delay (English Translation Project) -530,0,0,0,0,0 +530,0,0,0,0,0,0 //-- NJ_UTSUSEMI -531,0,1000,0,20000:30000:40000:50000:60000,0 +531,0,1000,0,20000:30000:40000:50000:60000,0,0 //-- NJ_BUNSINJYUTSU -532,4000:3500:3000:2500:2000:1500:1000:1000:1000:1000,1000,0,60000:80000:100000:120000:140000:160000:180000:200000:220000:240000,0 +532,4000:3500:3000:2500:2000:1500:1000:1000:1000:1000,1000,0,60000:80000:100000:120000:140000:160000:180000:200000:220000:240000,0,0 //-- NJ_KOUENKA -534,700:1400:2100:2800:3500:4200:4900:5600:6300:7000,0,0,0,0 +534,700:1400:2100:2800:3500:4200:4900:5600:6300:7000,0,0,0,0,0 //-- NJ_KAENSIN -535,6000:5500:5000:4500:4000:3500:3000:2500:2000:1500,1000,0,20000,0 +535,6000:5500:5000:4500:4000:3500:3000:2500:2000:1500,1000,0,20000,0,0 //-- NJ_BAKUENRYU -536,3000,2000,0,0,0 +536,3000,2000,0,0,0,0 //-- NJ_HYOUSENSOU -537,700:1400:2100:2800:3500:4200:4900:5600:6300:7000,0,0,0,0 +537,700:1400:2100:2800:3500:4200:4900:5600:6300:7000,0,0,0,0,0 //-- NJ_SUITON -538,3000,0,0,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000 +538,3000,0,0,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000,0 //-- NJ_HYOUSYOURAKU -539,2000:2500:3000:3500:4000,2000,0,0,10000:11000:12000:13000:14000:15000:16000:17000:18000:19000 +539,2000:2500:3000:3500:4000,2000,0,0,10000:11000:12000:13000:14000:15000:16000:17000:18000:19000,0 //-- NJ_HUUJIN -540,1000:1500:2000:2500:3000:3500:4000:5000:5500:6000,1000,0,0,0 +540,1000:1500:2000:2500:3000:3500:4000:5000:5500:6000,1000,0,0,0,0 //-- NJ_RAIGEKISAI -541,4000,0,0,0,0 +541,4000,0,0,0,0,0 //-- NJ_KAMAITACHI -542,4000,0,0,0,0 +542,4000,0,0,0,0,0 //-- NJ_NEN -543,5000:4000:3000:2000:1000,0,0,30000:45000:60000:75000:90000,0 +543,5000:4000:3000:2000:1000,0,0,30000:45000:60000:75000:90000,0,0 +//========================================== + +//===== Gangsi Branch and Other Skills ===== +//-- MB_PETPITCHER +//551,1000:1000:1000:1000:1000:500:500:500:500:500,0,0,0,0,0 + +//-- MB_B_GAIN +//556,2200:2000:1800:1600:1400:1200:1000,0,0,0,0,0 + +//-- MB_MUNAKBALL +//560,1500:1500:1500:1500:1000:1000:1000:1000:500:500,0,0,0,0,0 + +//-- MB_B_GATHERING +//562,10000,0,0,0,0,0 + +//-- MB_B_EXCLUDE +//564,30000:25000:20000:15000:10000,0,0,0,0,0 + +//-- MB_B_WALLSHIFT +//568,1000:800:600:400:200,0,0,0,0,0 + +//-- SL_DEATHKNIGHT +572,1000,500,0,150000:200000:250000:300000:350000,0,0 +//-- SL_COLLECTOR +573,1000,500,0,150000:200000:250000:300000:350000,0,0 +//-- SL_NINJA +574,1000,500,0,150000:200000:250000:300000:350000,0,0 +//-- SL_GUNNER +575,1000,500,0,150000:200000:250000:300000:350000,0,0 +//-- AM_TWILIGHT4 +//576,3000,10000,0,0,0,0 + +//-- DE_WINDATTACK +//617,1000:1000:1000:1000:1000:0:0:0:0:0,0,0,0,0,0 + +//-- DA_EXPLOSION +//625,7000:6000:5000:4000:3000,0,0,0,0,0 + +//-- DA_MAGICCART +//640,5000:4000:3000:2000:1000,0,0,0,0,0 +//-- DA_COPY +//641,20000,0,0,0,0,0 + +//-- DA_EDARKNESS +//647,13000:11000:9000:7000:5000,0,0,0,0,0 + +//-- DA_TIMEOUT +//649,5000:3000:1000,0,0,0,0,0 +//-- ALL_TIMEIN +//650,0,0,0,0,0,0,1000 //========================================== //===== New Monster Skills ================= //-- NPC_ICEBREATH -655,0,0,0,0,12000 +655,0,0,0,0,12000,0 //-- NPC_ACIDBREATH -657,0,0,0,0,60000 +657,0,0,0,0,60000,0 //-- NPC_DRAGONFEAR (Upkeep2 times are duration of: Stun(lv1), Silence(lv2), Confusion(lv3) and Bleeding(lv4)) -659,0,0,0,0,5000:30000:30000:120000 +659,0,0,0,0,5000:30000:30000:120000,0 //-- NPC_BLEEDING -660,0,0,0,0,120000 +660,0,0,0,0,120000,0 //-- NPC_HELLJUDGEMENT -662,0,0,0,0,30000 +662,0,0,0,0,30000,0 //-- NPC_WIDESILENCE -663,0,0,0,0,30000 +663,0,0,0,0,30000,0 //-- NPC_WIDEFREEZE -664,0,0,0,0,12000 +664,0,0,0,0,12000,0 //-- NPC_WIDEBLEEDING -665,0,0,0,0,120000 +665,0,0,0,0,120000,0 //-- NPC_WIDESTONE -666,0,0,0,0,20000 +666,0,0,0,0,20000,0 //-- NPC_WIDECONFUSE -667,0,0,0,0,30000 +667,0,0,0,0,30000,0 //-- NPC_WIDESLEEP -668,0,0,0,0,30000 +668,0,0,0,0,30000,0 //-- NPC_WIDESIGHT -669,0,0,0,10000,0 +669,0,0,0,10000,0,0 //-- NPC_EVILLAND -670,0,0,0,30000,30000 +670,0,0,0,30000,30000,0 //-- NPC_MAGICMIRROR -671,0,0,0,30000,0 +671,0,0,0,30000,0,0 //-- NPC_SLOWCAST -672,0,0,0,0,30000 +672,0,0,0,0,30000,0 //-- NPC_CRITICALWOUND -673,0,0,0,0,30000 +673,0,0,0,0,30000,0 //-- NPC_STONESKIN -675,0,0,0,30000,0 +675,0,0,0,30000,0,0 //-- NPC_ANTIMAGIC -676,0,0,0,30000,0 +676,0,0,0,30000,0,0 //-- NPC_WIDECURSE -677,0,0,0,0,30000 +677,0,0,0,0,30000,0 //-- NPC_WIDESTUN -678,0,0,0,0,5000 +678,0,0,0,0,5000,0 //========================================== //===== New Monster Skills (12.1) ========== //-- NPC_HELLPOWER -683,0,0,0,0,300000 +683,0,0,0,0,300000,0 //-- NPC_WIDEHELLDIGNITY -684,0,0,0,0,300000 +684,0,0,0,0,300000,0 //-- NPC_INVINCIBLE -685,0,0,0,-1,0 +685,0,0,0,-1,0,0 //-- NPC_INVINCIBLEOFF -686,0,0,0,60000,0 +686,0,0,0,60000,0,0 //===== Item Use-Only Skills =============== //-- CASH_BLESSING -689,0,0,0,60000:80000:100000:120000:140000:160000:180000:200000:220000:240000,0 +689,0,0,0,60000:80000:100000:120000:140000:160000:180000:200000:220000:240000,0,0 //-- CASH_INCAGI -690,0,0,0,60000:80000:100000:120000:140000:160000:180000:200000:220000:240000,0 +690,0,0,0,60000:80000:100000:120000:140000:160000:180000:200000:220000:240000,0,0 //-- CASH_ASSUMPTIO -691,0,0,0,20000:40000:60000:80000:100000,0 +691,0,0,0,20000:40000:60000:80000:100000,0,0 +//-- ALL_CATCRY +692,0,5000,0,0,0,0 + +//-- ALL_DREAM_SUMMERNIGHT +695,0,12000,0,0,0,0 + //-- ALL_WEWISH -698,0,20000,0,0,0 +698,0,20000,0,0,0,0 //========================================== //===== 2nd Jobs Quest Skills ============== //-- KN_CHARGEATK -1001,300,300,0,0,0 +1001,300,300,0,0,0,0 //-- CR_SHRINK -1002,0,0,0,300000,0 +1002,0,0,0,300000,0,0 //-- AS_VENOMKNIFE -1004,0,0,0,0,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000 +1004,0,0,0,0,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000,0 //-- RG_CLOSECONFINE -1005,0,0,0,10000,0 +1005,0,0,0,10000,0,0 //-- WZ_SIGHTBLASTER -1006,2000,0,0,120000,0 +1006,2000,0,0,120000,0,0 //-- SA_ELEMENTWATER -1008,2000,1000,0,1800000,0 +1008,2000,1000,0,1800000,0,0 //-- HT_PHANTASMIC -1009,0,0,0,0,0 +1009,0,0,0,0,0,0 //-- BA_PANGVOICE -1010,1000,2000,0,17000,0 +1010,1000,2000,0,17000,0,0 //-- DC_WINKCHARM (time1: Charm, time2: Confusion) -1011,1000,2000,0,10000,17000 +1011,1000,2000,0,10000,17000,0 //-- BS_GREED -1013,0,1000,0,0,0 +1013,0,1000,0,0,0,0 //-- PR_REDEMPTIO -1014,4000,0,0,0,0 +1014,4000,0,0,0,0,0 //-- MO_KITRANSLATION -1015,2000,1000,0,600000,0 +1015,2000,1000,0,600000,0,0 //-- MO_BALKYOUNG -1016,0,2000,0,0,2000 +1016,0,2000,0,0,2000,0 //-- SA_ELEMENTGROUND -1017,2000,1000,0,1800000,0 +1017,2000,1000,0,1800000,0,0 //-- SA_ELEMENTFIRE -1018,2000,1000,0,1800000,0 +1018,2000,1000,0,1800000,0,0 //-- SA_ELEMENTWIND -1019,2000,1000,0,1800000,0 +1019,2000,1000,0,1800000,0,0 +//========================================== + +//===== Rune Knight ======================== +//-- RK_ENCHANTBLADE +2001,1000,0,0,300000,0,0 +//-- RK_SONICWAVE +2002,0,1000,0,0,0,2000 +//-- RK_DEATHBOUND +2003,0,2000,0,2000,0,3000 +//-- RK_HUNDREDSPEAR +2004,1000,500,0,0,0,0 +//-- RK_WINDCUTTER //CHECK duration 1 +2005,0,0,0,0,0,2000 +//-- RK_IGNITIONBREAK +2006,1000,0,0,0,0,2000 + +//-- RK_DRAGONBREATH //CHECK duration 1 burning +2008,500:500:500:1500:1500:1500:2000:2000:2500:2500,2000,0,5000,0,0 +//-- RK_DRAGONHOWLING +2009,0,0,0,15000,0,60000 + +//-- RK_MILLENNIUMSHIELD //CHECK duration 2 +2011,0,1000,0,300000,0,60000 +//-- RK_CRUSHSTRIKE +2012,1000,0,0,0,0,30000 +//-- RK_REFRESH //CHECK duration 1 +2013,1000,0,0,30000,0,120000 +//-- RK_GIANTGROWTH +2014,1000,0,0,300000,0,0 +//-- RK_STONEHARDSKIN //CHECK duration 2 +2015,2000,0,0,300000,10000,0 +//-- RK_VITALITYACTIVATION +2016,0,0,0,30000,0,0 +//-- RK_STORMBLAST //CHECK duration 1 +2017,2000,1000,0,1000,0,0 +//-- RK_FIGHTINGSPIRIT +2018,0,0,0,300000,0,0 +//-- RK_ABUNDANCE +2019,0,0,0,300000,0,0 +//========================================== + +//===== Gillotine Cross ==================== +//-- GC_VENOMIMPRESS +2021,0,3000:2500:2000:1500:1000,0,10000:20000:30000:40000:50000,0,0 +//-- GC_CROSSIMPACT +2022,0,2500:2000:1500:1000:500,2000,0,0,0 +//-- GC_DARKILLUSION +2023,0,1500,0,0,0,0 + +//-- GC_CREATENEWPOISON +2025,0,500,0,0,0,0 +//-- GC_ANTIDOTE +2026,0,0,0,0,0,0 +//-- GC_POISONINGWEAPON -- VenomBleed Note : As poison says 15 seconds, on kRO is doing 300 seconds. +2027,0,1000,0,60000:120000:180000:240000:300000,300000:300000:300000:300000:0:300000:300000:300000:300000:0,0 +//-- GC_WEAPONBLOCKING +2028,0,2000,0,180000,0,0 +//-- GC_COUNTERSLASH +2029,0,2000,0,0,0,0 +//-- GC_WEAPONCRUSH //CHECK duration 1 devist +2030,0,1000,0,40000:80000:120000:160000:200000,0,0 +//-- GC_VENOMPRESSURE +2031,0,1000,0,0,0,0 +//-- GC_POISONSMOKE //CHECK Cast time is said 2 second fixed, but no variable. Check duration 1 (was added / thought to be AoE duration) +2032,2000,2000,0,6000:8000:10000:12000:14000,0,0 +//-- GC_CLOAKINGEXCEED +2033,0,2000,0,0,0,0 +//-- GC_PHANTOMMENACE +2034,0,1000,0,0,0,0 +//-- GC_HALLUCINATIONWALK +2035,0,0,0,30000:35000:40000:45000:50000,25000,300000 +//-- GC_ROLLINGCUTTER //CHECK duration 1 (should be as long as esma status?) +2036,0,200,0,4000,0,0 +//-- GC_CROSSRIPPERSLASHER +2037,0,1000,0,0,0,0 +//========================================== + +//===== Arch Bishop ======================== +//-- AB_JUDEX +2038,2500,500,0,0,0,0 +//-- AB_ANCILLA +2039,1000,1000,0,0,0,0 +//-- AB_ADORAMUS //CHECK Duration 1 is blindness and duration 2 is reduced AGI. FIX ME!!!! +2040,2000,500,0,6000:7000:8000:9000:10000:11000:12000:13000:14000:15000,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000,2000 +//-- AB_CLEMENTIA +2041,4000,0,0,120000:180000:240000,0,0 +//-- AB_CANTO +2042,4000,0,0,120000:180000:240000,0,0 +//-- AB_CHEAL +2043,4000:3500:3000,0,0,0,0,1000:2000:3000 +//-- AB_EPICLESIS +2044,4000:4500:5000:5500:6000,2000,0,18000:21000:24000:27000:30000,0,60000 +//-- AB_PRAEFATIO +2045,3000,0,0,120000,0,13000:16000:19000:22000:25000:28000:31000:34000:37000:40000 +//-- AB_ORATIO +2046,5000,0,0,30000,0,2000 +//-- AB_LAUDAAGNUS +2047,1000,0,0,60000,0,3000 +//-- AB_LAUDARAMUS +2048,1000,0,0,60000,0,3000 + +//-- AB_RENOVATIO +2050,5000,0,0,90000,0,1000 +//-- AB_HIGHNESSHEAL +2051,1000,1000,0,0,0,3000:6000:9000:12000:15000 +//-- AB_CLEARANCE +2052,4000,0,0,0,0,10000 +//-- AB_EXPIATIO +2053,2000,0,0,150000:180000:210000:240000:270000,0,0 +//-- AB_DUPLELIGHT +2054,4000,1000,0,90000:120000:150000:180000:210000:240000:270000:300000:330000:360000,0,0 + +//-- AB_SILENTIUM +2057,4000,0,0,20000:30000:40000:50000:60000,0,15000 +//========================================== + +//===== Warlock ============================ +//-- WL_WHITEIMPRISON //CHECK Is reuse delay hard coded to work only if successful? Duration 1 may be incorrect. Is duration 2 for if casted on self? +2201,0,0,0,10000:12000:14000:16000:18000,5000,0 +//-- WL_SOULEXPANSION +2202,2000,500,0,0,0,0 +//-- WL_FROSTMISTY +2203,2500,2000,0,40000,0,8000 +//-- WL_JACKFROST +2204,3000,2000,0,10000:15000:20000:25000:30000,0,0 +//-- WL_MARSHOFABYSS //CHECK Duration 1 time +2205,500,1000,0,20000,0,2500:3000:3500:4000:4500 +//-- WL_RECOGNIZEDSPELL +2206,2000,1000,0,20000:30000:40000:50000:60000,0,60000 +//-- WL_SIENNAEXECRATE // Duration of the status for this skill appears to be hard coded. Fix later???? +2207,2000,2000,0,10000:12000:14000:16000:18000,0,0 + +//-- WL_STASIS // Duration for the status will need to be hard coded soon to make stats reduce the duration. +2209,4000,2000,0,20000:30000:40000:50000:60000,0,180000:190000:200000:210000:220000 +//-- WL_DRAINLIFE +2210,5000,0,0,0,0,2000 +//-- WL_CRIMSONROCK //CHECK Whats duration 1 for? +2211,6000,2000,0,3000:4000:5000:6000:7000,0,5000 +//-- WL_HELLINFERNO +2212,4000,1000,0,20000:30000:40000:50000:60000,0,0 +//-- WL_COMET //CHECK Is burning on duration 1 correct? +2213,11000:12500:14000:15500:17000,5000,0,20000,0,180000 +//-- WL_CHAINLIGHTNING //CHECK Whats duration 1 used for? +2214,4500:5000:5500:6000:6500,3000,0,1000,0,0 + +//-- WL_EARTHSTRAIN //CHECK What is duration 2 used for? +2216,3000:4000:5000:6000:7000,1000,0,500,60000,10000 +//-- WL_TETRAVORTEX //CHECK Duration 1 might be correct? +2217,6000:7000:8000:9000:10000,2000,0,20000,0,15000 + +//-- WL_SUMMONFB +2222,2000,0,0,30000:40000:50000:60000:70000,0,0 +//-- WL_SUMMONBL +2223,2000,0,0,30000:40000:50000:60000:70000,0,0 +//-- WL_SUMMONWB +2224,2000,0,0,30000:40000:50000:60000:70000,0,0 + +//-- WL_SUMMONSTONE +2229,2000,0,0,30000:40000:50000:60000:70000,0,0 + +//-- WL_READING_SB //CHECK Is duration 1 how long the spell will be stored for? +2231,4000,500,0,30000,0,5000 +//========================================== + +//===== Ranger ============================= +//-- RA_ARROWSTORM +2233,2500,0,0,0,0,3000 +//-- RA_FEARBREEZE +2234,2000,0,0,60000:90000:120000:150000:180000,0,0 + +//-- RA_AIMEDBOLT +2236,5000,1000,0,0,0,0 +//-- RA_DETONATOR //CHECK Is this timer needed for this skill at all??? +2237,0,0,0,1000,0,0 +//-- RA_ELECTRICSHOCKER //CHECK Is duration 1 and 2 what I think it is? +2238,0,0,0,15000,20000,0 +//-- RA_CLUSTERBOMB //CHECK Thinking the same for this one too. +2239,0,0,0,15000,0,0 +//-- RA_WUGMASTERY +2240,0,1000,0,0,0,0 +//-- RA_WUGRIDER +2241,0,500,0,0,0,0 +//-- RA_WUGDASH +2242,0,2000,0,0,0,0 + +//-- RA_WUGBITE //CHECK Its found that the no movement duration is bugged. Keeping this at 10 sec for now. +2244,0,2000,0,10000,0,5000 + +//-- RA_SENSITIVEKEEN +2246,0,3000,0,0,0,0 +//-- RA_CAMOUFLAGE +2247,0,0,0,10000,0,0 + +//-- RA_MAGENTATRAP //CHECK Duration 1 and 2 should be correct? +2249,0,2000,0,15000,10000,0 +//-- RA_COBALTTRAP +2250,0,2000,0,15000,10000,0 +//-- RA_MAIZETRAP +2251,0,2000,0,15000,10000,0 +//-- RA_VERDURETRAP +2252,0,2000,0,15000,10000,0 +//-- RA_FIRINGTRAP +2253,0,0,0,15000,25000,0 +//-- RA_ICEBOUNDTRAP +2254,0,0,0,15000,25000,0 +//========================================== + +//===== Mechanic =========================== +//-- NC_BOOSTKNUCKLE +2256,1000:1200:1400:1600:1800,0,0,0,0,0 +//-- NC_PILEBUNKER +2257,0,2000,0,0,0,5000 +//-- NC_VULCANARM +2258,0,500:300:100,0,0,0,0 +//-- NC_FLAMELAUNCHER +2259,1500:1900:2300,1500:1000:500,0,7000:14000:21000,0,0 +//-- NC_COLDSLOWER //CHECK Are freezing and frozen durations correct? +2260,1000,1000:2000:3000,0,5000:10000:15000,10000:15000:20000,0 +// -- NC_ARMSCANNON +2261,1400:1600:1800,500:1000:2000,0,0,0,0 +//-- NC_ACCELERATION +2262,0,0,0,30000:60000:90000,0,0 +//-- NC_HOVERING +2263,0,0,0,30000,0,0 +//-- NC_F_SIDESLIDE +2264,0,500,0,0,0,0 +//-- NC_B_SIDESLIDE +2265,0,500,0,0,0,0 + +//-- NC_SELFDESTRUCTION +2267,3500:3000:2500,0,0,0,0,0 +//-- NC_SHAPESHIFT +2268,2000,2000,0,300000,0,0 +//-- NC_EMERGENCYCOOL +2269,0,500,0,0,0,5000 +//-- NC_INFRAREDSCAN +2270,1000,500,0,10000,0,15000 +//-- NC_ANALYZE +2271,1000,1000,0,20000,0,0 +//-- NC_MAGNETICFIELD +2272,500:1000:1500,0,0,15000,0,300000 +//-- NC_NEUTRALBARRIER +2273,500:1000:1500,0,0,30000:45000:60000,0,120000 +//-- NC_STEALTHFIELD +2274,500:1000:1500,0,0,15000:20000:25000,0,120000 +//-- NC_REPAIR +2275,500,1000,0,0,0,0 + +//-- NC_AXEBOOMERANG +2278,0,0,0,0,0,5000 +//-- NC_POWERSWING //CHECK Duration 1 is stun? +2279,0,1000,0,3000,0,0 +//-- NC_AXETORNADO +2280,0,500,0,0,0,4000:3500:3000:2500:2000 +//-- NC_SILVERSNIPER +2281,1800:1600:1400:1200:1000,0,0,10000:15000:20000:25000:30000,0,0 +//-- NC_MAGICDECOY +2282,1800:1600:1400:1200:1000,0,0,10000:15000:20000:25000:30000,0,0 +//-- NC_DISJOINT +2283,2000,0,0,0,0,0 +//========================================== + +//===== Shadow Chaser ====================== +//-- SC_FATALMENACE +2284,0,500,0,0,0,0 +//-- SC_REPRODUCE //CHECK Does a duration limit still exist, or it just stays on until reused? +2285,0,1000,0,60000,0,0 +//-- SC_AUTOSHADOWSPELL +2286,6000:5600:5200:4800:4400:4000:3600:3200:2800:2400,0,0,60000:80000:100000:120000:140000:160000:180000:200000:220000:300000,0,0 +//-- SC_SHADOWFORM +2287,0,1000,0,30000:40000:50000:60000:70000,0,0 +//-- SC_TRIANGLESHOT +2288,1000,500,0,0,0,0 +//-- SC_BODYPAINT //CHECK Whats duration 2 do? +2289,0,1000,0,5000:7000:9000:11000:13000,5000,2000 +//-- SC_INVISIBILITY //CHECK Is duration 1 needed for this or it lasts until your out of SP? +2290,1000,1000,0,20000,0,300000 +//-- SC_DEADLYINFECT +2291,0,1000,0,10000:15000:20000:25000:30000,0,2000 +//-- SC_ENERVATION +2292,2000,1000,0,10000:15000:20000,0,2000 +//-- SC_GROOMY +2293,2000,1000,0,10000:15000:20000,0,2000 +//-- SC_IGNORANCE +2294,2000,1000,0,10000:15000:20000,0,2000 +//-- SC_LAZINESS +2295,2000,1000,0,10000:15000:20000,0,2000 +//-- SC_UNLUCKY +2296,2000,1000,0,10000:15000:20000,0,2000 +//-- SC_WEAKNESS +2297,2000,1000,0,10000:15000:20000,0,2000 +//-- SC_STRIPACCESORY +2298,1000,1000,0,60000:70000:80000:90000:100000,0,0 +//-- SC_MANHOLE +2299,1000,2000,0,5000:1000:15000,5000:1000:15000,0 +//-- SC_DIMENSIONDOOR +2300,1000,2000,0,4000:8000:12000,0,0 +//-- SC_CHAOSPANIC +2301,2000,2000,0,5000:10000:15000,30000,0 +//-- SC_MAELSTROM +2302,2000,2000,0,7000:14000:21000,0,0 +//-- SC_BLOODYLUST +2303,2000,2000,0,10000:20000:30000,30000,0 +//-- SC_FEINTBOMB +2304,1000,0,0,1000,0,5000 +//========================================== + +//==== Royal Guard skills ================== +//-- LG_CANNONSPEAR +2307,0,0,0,0,0,2000 + +//-- LG_TRAMPLE +2309,0,1000,0,0,0,0 +//-- LG_SHIELDPRESS +2310,0,0,0,5500:6000:6500:7000:7500,0,2000 +//-- LG_REFLECTDAMAGE +2311,0,0,0,300000,0,0 +//-- LG_PINPOINTATTACK //CHECK Whats duration 1 for? +2312,0,1000,0,5000,0,5000 +//-- LG_FORCEOFVANGUARD +2313,1000,1000,0,120000,0,0 +//-- LG_RAGEBURST +2314,0,3000,0,0,0,0 +//-- LG_SHIELDSPELL //CHECK Shound spells the shield casts use the original duration of that skill? +2315,1000,1000,0,3000:30000:30000,0,2000 +//-- LG_EXEEDBREAK +2316,5000:5500:6000:6500:7000,1000,0,300000,0,0 +//-- LG_OVERBRAND +2317,500,2000,0,0,0,0 +//-- LG_PRESTIGE +2318,3000,0,0,30000:45000:60000:75000:90000,0,60000 +//-- LG_BANDING +2319,0,0,0,-1,2000:4000:6000:8000:10000,0 +//-- LG_MOONSLASHER +2320,1000,1000,0,0,0,6000:5000:4000:3000:2000 +//-- LG_RAYOFGENESIS +2321,2500:3000:3500:4000:4500,2000,0,10000,0,5000 +//-- LG_PIETY +2322,3000:2500:2000:1500:1000,0,0,60000:80000:100000:120000:140000,0,0 +//-- LG_EARTHDRIVE +2323,1000,1000,0,3000:6000:9000:12000:15000,0,7000:6000:5000:4000:3000 +//-- LG_HESPERUSLIT +2324,1000,3000,0,0,0,20000 +//-- LG_INSPIRATION +2325,3000,2000,0,30000:45000:60000:75000:90000,0,540000:480000:420000:360000:300000 +//========================================== + +//===== Sura Skills ======================== +//-- SR_DRAGONCOMBO //CHECK Is stun on duration 1 correct? +2326,0,0,0,3000,0,0 +//-- SR_SKYNETBLOW +2327,0,500,0,0,0,0 +//-- SR_EARTHSHAKER //CHECK Duration 1 is correct, but is the stun working? +2328,0,0,0,1000:2000:2000:3000:3000,0,3000 +//-- SR_FALLENEMPIRE //CHECK The immoble is working? +2329,0,0,0,500:1000:1500:2000:2500,0,0 +//-- SR_TIGERCANNON +2330,1100:1200:1300:1400:1500:1600:1700:1800:1900:2000,1000,0,0,0,5000 + +//-- SR_RAMPAGEBLASTER +2332,0,1000,0,0,0,10000 +//-- SR_CRESCENTELBOW +2333,0,1000,0,10000:15000:20000:25000:30000,0,5000 +//-- SR_CURSEDCIRCLE +2334,0,1000,0,3000:4000:5000:6000:7000,0,10000 +//-- SR_LIGHTNINGWALK +2335,0,1000,0,10000:15000:20000:25000:30000,0,5000 +//-- SR_KNUCKLEARROW +2336,0,1000,0,0,0,0 +//-- SR_WINDMILL +2337,1000,500,0,0,0,3000 +//-- SR_RAISINGDRAGON //CHECK Whats the set 5 seconds in the last column for? +2338,0,1000,0,30000:45000:60000:75000:90000:105000:120000:135000:150000:165000,5000,30000 + +//-- SR_ASSIMILATEPOWER +2340,0,1000,0,0,0,5000 +//-- SR_POWERVELOCITY +2341,2000,0,0,0,0,0 + +//-- SR_GATEOFHELL +2343,1000:1200:1400:1600:1800:2000:2200:2400:2600:2800,100:200:300:400:500:600:700:800:900:1000,0,0,0,5000 +//-- SR_GENTLETOUCH_QUIET +2344,0,0,0,5000:7000:9000:11000:13000,0,1000:1500:2000:2500:3000 +//-- SR_GENTLETOUCH_CURE +2345,0,1000,0,0,0,0 +//-- SR_GENTLETOUCH_ENERGYGAIN //CHECK Desc shows these durations. Are they good as is? +2346,1000,1000,0,60000:120000:180000:240000:300000,0,0 +//-- SR_GENTLETOUCH_CHANGE +2347,1000,1000,0,60000:120000:180000:240000:300000,0,0 +//-- SR_GENTLETOUCH_REVITALIZE +2348,1000,1000,0,60000:120000:180000:240000:300000,0,0 +//========================================== + +//==== Wanderer skills ===================== +//-- WA_SWING_DANCE +2350,1000,2000,0,60000,0,0 +//-- WA_SYMPHONY_OF_LOVER +2351,1000,2000,0,60000,0,0 +//-- WA_MOONLIT_SERENADE +2352,1000,2000,0,60000,0,0 +//========================================== + +//==== Minstresl skills ==================== +//-- MI_RUSH_WINDMILL +2381,1000,2000,0,60000,0,0 +//-- MI_ECHOSONG +2382,1000,2000,0,60000,0,0 +//-- MI_HARMONIZE +2383,1000,1000,0,60000,0,5000 +//========================================== + +//==== Minstrel/Wanderer skills ============ +//-- WM_METALICSOUND +2413,1000:1500:2000:2500:3000,1000,0,0,0,2000:2500:3000:3500:4000 +//-- WM_REVERBERATION +2414,1100:1200:1300:1400:1500,1000,0,9000:10000:11000:12000:13000,0,0 + +//-- WM_DOMINION_IMPULSE +2417,0,1000,0,0,0,0 +//-- WM_SEVERE_RAINSTORM +2418,2000:2500:3000:3500:4000,1000,0,900:1500:2100:2700:3000,0,5000 +//-- WM_POEMOFNETHERWORLD +2419,3000,0,0,9000:11000:13000:15000:17000,8000:10000:12000:14000:16000,0 +//-- WM_VOICEOFSIREN +2420,2000:2200:2400:2600:2800,1000,0,15000:18000:21000:24000:27000,0,5000 +//-- WM_DEADHILLHERE +2421,4000:3500:3000:2500:2000,1000,0,0,0,0 +//-- WM_LULLABY_DEEPSLEEP +2422,3000,1000,0,12000:14000:16000:18000:20000,0,10000 +//-- WM_SIRCLEOFNATURE +2423,2000,1000,0,60000,0,15000 +//-- WM_RANDOMIZESPELL +2424,0,1000,0,0,0,3000 +//-- WM_GLOOMYDAY +2425,1500,1000,0,30000:45000:60000:75000:90000,0,3000 +//-- WM_GREAT_ECHO +2426,2500:2700:2900:3100:3300,1000,0,0,0,10000 +//-- WM_SONG_OF_MANA +2427,1500,1000,0,30000:60000:90000:120000:150000,0,90000 +//-- WM_DANCE_WITH_WUG +2428,2000:2500:3000:3500:4000,1000,0,30000:60000:90000:120000:150000,0,90000 +//-- WM_SOUND_OF_DESTRUCTION +2429,500:1000:1500:2000:2500,1000,0,0,0,20000 +//-- WM_SATURDAY_NIGHT_FEVER +2430,2000:3000:4000:5000:6000,1000,0,20000:30000:40000:50000:60000,3000,180000 +//-- WM_LERADS_DEW +2431,1500,1000,0,20000:30000:40000:50000:60000,0,180000 +//-- WM_MELODYOFSINK +2432,1500,1000,0,20000:30000:40000:50000:60000,0,180000 +//-- WM_BEYOND_OF_WARCRY +2433,1500,1000,0,20000:30000:40000:50000:60000,0,180000 +//-- WM_UNLIMITED_HUMMING_VOICE +2434,1500,1000,0,20000:30000:40000:50000:60000,0,180000 +//========================================== + +//==== Sorcerer skills ===================== +//-- SO_FIREWALK //CHECK Duration 2 needs to be added for the PROPERTYWALK status ID. Ask me for more info. [Rytech] +2443,1000,1000,0,12000,0,0 +//-- SO_ELECTRICWALK //CHECK Duration 2 needs to be added for the PROPERTYWALK status ID. Ask me for more info. [Rytech] +2444,1000,1000,0,12000,0,0 +//-- SO_SPELLFIST +2445,0,1000,0,20000:25000:30000:35000:40000,0,0 +//-- SO_EARTHGRAVE +2446,2200:2400:2600:2800:3000,1000,0,500,8000:11000:14000:17000:20000,5000 +//-- SO_DIAMONDDUST +2447,5500:6000:6500:7000:7500,1000,0,500,12000:14000:16000:18000:20000,5000 +//-- SO_POISON_BUSTER +2450,2000:3000:4000:5000:6000,1000,0,0,0,2000 +//-- SO_PSYCHIC_WAVE +2449,9000:9900:10800:11700:12600,1000,0,1200:1700:2200:2700:3200,0,5000 +//-- SO_CLOUD_KILL +2450,3300:3500:3700:3900:4100,1000,0,8000:10000:12000:14000:16000,10000:15000:20000:25000:30000,5000 +//-- SO_STRIKING +2451,3000,1000,0,60000,0,2000 +//-- SO_WARMER +2452,1700:1900:2100:2300:2500,1000,0,40000:45000:50000:55000:60000,30000,60000 +//-- SO_VACUUM_EXTREME //CHECK Whats duration 2 used for? Is it part of holding the player in place until duration 1 ends? +2453,1000:1500:2000:2500:3000,1000,0,4000:6000:8000:10000:12000,1000,5000 +//-- SO_VARETYR_SPEAR //CHECK Duration 2 is used for the stun? +2454,1700:1900:2100:2300:2500,1000,0,0,3000,2000 +//-- SO_ARULLO +2455,1500:2000:2500:3000:3500,1000,0,8000:10000:12000:14000:16000,0,5000:6000:7000:8000:9000 +//-- SO_EL_CONTROL +2456,2000,0,0,0,0,5000 +//-- SO_SUMMON_AGNI //CHECK Yoyo says the cooldown is 5 seconds. Need to confirm. +2457,3000:4000:5000,0,0,600000:900000:1200000,0,60000 +//-- SO_SUMMON_AQUA //CHECK Yoyo says the cooldown is 5 seconds. Need to confirm. +2458,3000:4000:5000,0,0,600000:900000:1200000,0,60000 +//-- SO_SUMMON_VENTUS //CHECK Yoyo says the cooldown is 5 seconds. Need to confirm. +2459,3000:4000:5000,0,0,600000:900000:1200000,0,60000 +//-- SO_SUMMON_TERA //CHECK Yoyo says the cooldown is 5 seconds. Need to confirm. +2460,3000:4000:5000,0,0,600000:900000:1200000,0,60000 +//-- SO_EL_ACTION +2461,0,0,0,0,0,5000 +//-- SO_EL_ANALYSIS +2462,2000,0,0,0,0,0 + +//-- SO_EL_CURE +2464,2000,1000,0,0,0,0 +//-- SO_FIRE_INSIGNIA +2465,2000,0,0,60000,0,60000 +//-- SO_WATER_INSIGNIA +2466,2000,0,0,60000,0,60000 +//-- SO_WIND_INSIGNIA +2467,2000,0,0,60000,0,60000 +//-- SO_EARTH_INSIGNIA +2468,2000,0,0,60000,0,60000 +//========================================== + +//==== Genetic skills ====================== +//-- GN_CART_TORNADO //CHECK Duration 1 used for stun? +2476,0,500,0,5000,0,0:500:1000:1500:2000 +//-- GN_CARTCANNON +2477,1000:1500:2000:2500:3000,500,0,0,0,0 +//-- GN_CARTBOOST +2478,1500,500,0,90000,0,0 +//-- GN_THORNS_TRAP +2479,1500,500,0,10000:12000:14000:16000:18000,20000,0 +//-- GN_BLOOD_SUCKER +2480,1500,500,0,20000:22000:24000:26000:28000,0,0 +//-- GN_SPORE_EXPLOSION +2481,1500,500,0,2000:2000:3000:3000:4000,0,5000 +//-- GN_WALLOFTHORN +2482,1500,500,0,10000:11000:12000:13000:14000,0,5000 +//-- GN_CRAZYWEED //CHECK Will need to recheck this skill later if durations needs to be set. +2483,3000:3500:4000:4500:5000:5500:6000:6500:7000:7500,500,0,0,0,5000 + +//-- GN_DEMONIC_FIRE //CHECK Is duration 2 the burning? +2485,3000:3500:4000:4500:5000,500,0,10000:12000:14000:16000:18000,10000,5000 +//-- GN_FIRE_EXPANSION +2486,2000,500,0,0,0,0 +//-- GN_FIRE_EXPANSION_SMOKE_POWDER +2487,0,0,0,10000:12000:14000:16000:18000,0,0 +//-- GN_FIRE_EXPANSION_TEAR_GAS +2488,0,0,0,10000:12000:14000:16000:18000,0,0 + +//-- GN_HELLS_PLANT +2490,3000:3500:4000:4500:5000,500,0,40000,0,0 +//-- GN_HELLS_PLANT_ATK //CHECK Guessing durations 1 and 2 are for stun and bleeding. +2491,0,0,0,6000,16000,0 +//-- GN_MANDRAGORA +2492,1000,500,0,30000,0,10000 +//-- GN_SLINGITEM //CHECK Whats durations 1 and 2 used for? +2493,0,0,0,77000,10000,1000 + +//-- GN_SLINGITEM_RANGEMELEEATK //CHECK Whats duration 1 used for? +2498,0,0,0,3000,0,0 +//========================================== + +//===== Extra 3rd Class Skills ============= +//-- AB_SECRAMENT +2515,2000,500,0,60000:90000:120000:150000:180000,0,0 + +//-- SR_HOWLINGOFLION //CHECK Is duration 1 correct for fear? +2517,1500,0,0,10000,0,10000 +//-- SR_RIDEINLIGHTNING +2518,0,200,0,0,0,1000 +//========================================== + +//===== Misc. Skills ======================= +//-- ALL_ODINS_RECALL +2533,10000,0,0,0,0,300000 +//-- RETURN_TO_ELDICASTES +2534,2000,0,0,0,2000,300000 + +//-- ALL_GUARDIAN_RECALL +//2536,2000,0,0,0,2000,300000 //========================================== //===== Homunculus Skills ================== //-- HLIF_HEAL -8001,0,2000,0,0,0 +8001,0,2000,0,0,0,0 //-- HLIF_AVOID -8002,0,35000,0,40000:35000:30000:25000:20000,0 +8002,0,35000,0,40000:35000:30000:25000:20000,0,0 //-- HLIF_CHANGE -8004,0,600000:900000:1200000,0,60000:120000:180000,0 +8004,0,600000:900000:1200000,0,60000:120000:180000,0,0 //-- HAMI_CASTLE -8005,0,0,0,0,60000:70000:80000:90000:129000 +8005,0,0,0,0,60000:70000:80000:90000:129000,0 //-- HAMI_DEFENCE -8006,0,0,0,40000:35000:30000:25000:20000,0 +8006,0,0,0,40000:35000:30000:25000:20000,0,0 //-- HAMI_BLOODLUST -8008,0,0,0,60000:180000:300000,300000:600000:900000 +8008,0,0,0,60000:180000:300000,300000:600000:900000,0 //-- HFLI_MOON -8009,0,0,1000,0,0 +8009,0,0,1000,0,0,0 //-- HFLI_FLEET -8010,0,0,0,60000:55000:50000:45000:40000,60000:70000:80000:90000:120000 +8010,0,0,0,60000:55000:50000:45000:40000,60000:70000:80000:90000:120000,0 //-- HFLI_SPEED -8011,0,0,0,60000:55000:50000:45000:40000,60000:70000:80000:90000:120000 +8011,0,0,0,60000:55000:50000:45000:40000,60000:70000:80000:90000:120000,0 //-- HVAN_CAPRICE -8013,0,1000:1200:1400:1600:1800,0,0,0 +8013,0,1000:1200:1400:1600:1800,0,0,0,0 //-- HVAN_CHAOTIC -8014,0,1000,1000,0,0 +8014,0,1000,1000,0,0,0 //-- HVAN_EXPLOSION -8016,0,0,1000,0,0 +8016,0,0,1000,0,0,0 +//========================================== + +//===== Mutated Homunculus Skills ========== CHECK - Need Aftercast and Cooldown times for these skills [Rytech] +//-- MH_SUMMON_LEGION +8018,2000,0,0,20000:30000:40000:50000:60000,0,0 +//-- MH_NEEDLE_OF_PARALYZE = Whats the duration of the paralyze status? [Rytech] +8019,1500,0,0,0,0,0 +//-- MH_POISON_MIST +8020,1000:1200:1400:1600:1800,0,0,12000:14000:16000:18000:20000,0,0 +//-- MH_PAIN_KILLER +8021,2000,0,0,20000:30000:40000:50000:60000,0,0 +//-- MH_LIGHT_OF_REGENE +8022,1600:1400:1200:1000:800,0,0,360000:420000:480000:540000:600000,0,0 +//-- MH_OVERED_BOOST +8023,1000,0,0,30000:45000:60000:75000:90000,0,0 +//-- MH_ERASER_CUTTER +8024,1000:1500:2000:2500:3000,0,0,0,0,0 +//-- MH_XENO_SLASHER - CHECK Whats the duration of bleeding status? [Rytech] +8025,2000:3000:4000:5000:6000,0,0,500,0,0 +//-- MH_SILENT_BREEZE +8026,2000,0,0,9000:12000:15000:18000:21000,0,0 +//-- MH_STYLE_CHANGE +//8027,0,0,0,0,0,0,0 +//-- MH_SONIC_CRAW +//8028,0,0,0,0,0,0,0 +//-- MH_SILVERVEIN_RUSH +//8029,0,0,0,0,0,0,0 +//-- MH_MIDNIGHT_FRENZY +//8030,0,0,0,0,0,0,0 +//-- MH_STAHL_HORN - CHECK Stun duration is the same as regular stun? [Rytech] +8031,1000,0,0,0,0,0 +//-- MH_GOLDENE_FERSE +8032,1000:1200:1400:1600:1800,0,0,30000:45000:60000:75000:90000,0,0 +//-- MH_STEINWAND +8033,1000,0,0,30000:45000:60000:75000:90000,0,0 +//-- MH_HEILIGE_STANGE +8034,2000,0,0,0,0,0 +//-- MH_ANGRIFFS_MODUS +8035,200:400:600:800:1000,0,0,30000:45000:60000:75000:90000,0,0 +//-- MH_TINDER_BREAKER +//8036,0,0,0,0,0,0,0 +//-- MH_CBC +//8037,0,0,0,0,0,0,0 +//-- MH_EQC +//8038,0,0,0,0,0,0,0 +//-- MH_MAGMA_FLOW +8039,4000,0,0,30000:45000:60000:75000:90000,0,0 +//-- MH_GRANITIC_ARMOR +8040,6000:5500:5000:4500:4000,0,0,0,0,0 +//-- MH_LAVA_SLIDE +8041,6000:5500:5000:4500:4000,0,0,12000:14000:16000:18000:20000,0,0 +//-- MH_PYROCLASTIC +8042,6000:5500:5000:4500:4000,0,0,60000:90000:120000:150000:180000,0,0 +//-- MH_VOLCANIC_ASH +8043,5000:4500:4000:3500:3000,0,0,12000:14000:16000:18000:20000,0,0 //========================================== //===== Mercenary Skills =================== //-- MS_MAGNUM -8202,0,0,0,2000,10000 +8202,0,0,2000,2000,10000,0 //-- KN_BOWLINGBASH -8203,700,0,0,0,0 +8203,700,0,0,0,0,0 //-- LK_PARRYING -8204,0,0,0,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000,0 +8204,0,0,0,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000,0,0 //-- CR_REFLECTSHIELD -8205,0,0,0,300000,0 +8205,0,0,0,300000,0,0 //-- MS_BERSERK -8206,0,0,0,300000,15000 +8206,0,0,0,300000,15000,0 //-- MA_DOUBLE -8207,0,0,0,100,0 +8207,0,0,0,100,0,0 //-- MA_SHOWER -8208,0,0,0,100,0 +8208,0,0,0,100,0,0 //-- MA_SKIDTRAP -8209,0,0,0,300000:240000:180000:120000:60000,0 +8209,0,0,0,300000:240000:180000:120000:60000,0,0 //-- MA_LANDMINE -8210,0,0,0,200000:160000:120000:80000:40000,5000 +8210,0,0,0,200000:160000:120000:80000:40000,5000,0 //-- MA_SANDMAN -8211,0,0,0,150000:120000:90000:60000:30000,12000:14000:16000:18000:20000 +8211,0,0,0,150000:120000:90000:60000:30000,12000:14000:16000:18000:20000,0 //-- MA_FREEZINGTRAP -8212,0,0,0,150000:120000:90000:60000:30000,3000:6000:9000:12000:15000 +8212,0,0,0,150000:120000:90000:60000:30000,3000:6000:9000:12000:15000,0 //-- MA_CHARGEARROW -8214,1500,0,0,0,0 +8214,1500,0,0,0,0,0 //-- MA_SHARPSHOOTING -8215,2000,1500,0,0,0 +8215,2000,1500,0,0,0,0 //-- ML_BRANDISHSPEAR -8217,700,0,0,0,0 +8217,700,0,0,0,0,0 //-- ML_SPIRALPIERCE -8218,300:500:700:900:1000,1200:1400:1600:1800:2000,0,0,1000 +8218,300:500:700:900:1000,1200:1400:1600:1800:2000,0,0,1000,0 //-- ML_DEFENDER -8219,0,800,0,180000,0 +8219,0,800,0,180000,0,0 //-- ML_AUTOGUARD -8220,0,0,0,300000,0 +8220,0,0,0,300000,0,0 //-- ML_DEVOTION -8221,3000,0,0,0,30000:45000:60000:75000:90000 +8221,3000,0,0,0,30000:45000:60000:75000:90000,0 //-- MER_MAGNIFICAT -8222,4000,2000,0,30000:45000:60000:75000:90000,0 +8222,4000,2000,0,30000:45000:60000:75000:90000,0,0 //-- MER_QUICKEN -8223,0,0,0,30000:60000:90000:120000:150000:180000:210000:240000:270000:300000,0 +8223,0,0,0,30000:60000:90000:120000:150000:180000:210000:240000:270000:300000,0,0 //-- MER_SIGHT -8224,0,0,0,10000,0 +8224,0,0,0,10000,0,0 //-- MER_CRASH -8225,1000,2000,0,0,5000 +8225,1000,2000,0,0,5000,0 //-- MER_PROVOKE -8232,0,0,0,30000,0 +8232,0,0,0,30000,0,0 //-- MER_DECAGI -8234,1000,1000,0,40000:50000:60000:70000:80000:90000:100000:110000:120000:130000,0 +8234,1000,1000,0,40000:50000:60000:70000:80000:90000:100000:110000:120000:130000,0,0 //-- MER_SCAPEGOAT -8235,3000,0,0,0,0 +8235,3000,0,0,0,0,0 //-- MER_LEXDIVINA -8236,0,3000,0,30000:35000:40000:45000:50000:60000:60000:60000:60000:60000,0 +8236,0,3000,0,30000:35000:40000:45000:50000:60000:60000:60000:60000:60000,0,0 //-- MER_KYRIE -8238,2000,2000,0,120000,0 +8238,2000,2000,0,120000,0,0 //-- MER_BLESSING -8239,0,0,0,60000:80000:100000:120000:140000:160000:180000:200000:220000:240000,0 +8239,0,0,0,60000:80000:100000:120000:140000:160000:180000:200000:220000:240000,0,0 //-- MER_INCAGI -8240,1000,1000,0,60000:80000:100000:120000:140000:160000:180000:200000:220000:240000,0 +8240,1000,1000,0,60000:80000:100000:120000:140000:160000:180000:200000:220000:240000,0,0 +//========================================== + +//===== Elemental Skills ======================= +//-- EL_CIRCLE_OF_FIRE +8401,0,0,0,-1,0,0 +//-- EL_FIRE_CLOAK +8402,0,0,0,-1,0,0 +//-- EL_FIRE_MANTLE +8403,0,0,0,15000,0,0 +//-- EL_WATER_SCREEN +8404,0,0,0,-1,0,0 +//-- EL_WATER_DROP +8405,0,0,0,-1,0,0 +//-- EL_WATER_BARRIER +8406,1000,0,0,15000,0,0 +//-- EL_WIND_STEP +8407,0,0,0,-1,0,0 +//-- EL_WIND_CURTAIN +8408,0,0,0,-1,0,0 +//-- EL_ZEPHYR +8409,0,0,0,15000,0,0 +//-- EL_STONE_SHIELD +8411,0,0,0,-1,0,0 +//-- EL_POWER_OF_GAIA +8412,0,0,0,15000,0,0 +//-- EL_PYROTECHNIC +8413,0,0,0,-1,0,0 +//-- EL_HEATER +8414,0,0,0,-1,0,0 +//-- EL_TROPIC +8415,0,0,0,-1,0,0 +//-- EL_AQUAPLAY +8416,0,0,0,-1,0,0 +//-- EL_COOLER +8417,0,0,0,-1,0,0 +//-- EL_CHILLY_AIR +8418,0,0,0,-1,0,0 +//-- EL_GUST +8419,0,0,0,-1,0,0 +//-- EL_BLAST +8420,0,0,0,-1,0,0 +//-- EL_WILD_STORM +8421,0,0,0,-1,0,0 +//-- EL_PETROLOGY +8422,0,0,0,-1,0,0 +//-- EL_CURSED_SOIL +8423,0,0,0,-1,0,0 +//-- EL_UPHEAVAL +8424,0,0,0,-1,0,0 +//-- EL_TIDAL_WEAPON +8433,0,0,0,-1,0,0 +//-- EL_TYPOON_MIS +8437,0,0,0,15000,0,0 +//-- EL_STONE_HAMMER +8439,0,0,0,5000,0,0 +//-- EL_ROCK_CRUSHER +8440,0,0,0,15000,0,0 +//-- EL_ROCK_CRUSHER_ATK +8441,0,0,0,15000,0,0 //========================================== //===== Guild Skills ======================= //-- GD_LEADERSHIP -10006,0,0,0,300000,0 +10006,0,0,0,300000,0,0 //-- GD_GLORYWOUNDS -10007,0,0,0,300000,0 +10007,0,0,0,300000,0,0 //-- GD_SOULCOLD -10008,0,0,0,300000,0 +10008,0,0,0,300000,0,0 //-- GD_HAWKEYES -10009,0,0,0,300000,0 +10009,0,0,0,300000,0,0 //-- GD_BATTLEORDER -10010,0,0,0,60000,300000 +10010,0,0,0,60000,300000,0 //-- GD_REGENERATION -10011,0,0,0,60000,300000 +10011,0,0,0,60000,300000,0 //-- GD_RESTORE -10012,10000,0,0,0,300000 +10012,10000,0,0,0,300000,0 //-- GD_EMERGENCYCALL -10013,5000,0,0,0,300000 +10013,5000,0,0,0,300000,0 //========================================== diff --git a/db/skill_db.txt b/db/skill_db.txt index 2a39740df..eba695928 100644 --- a/db/skill_db.txt +++ b/db/skill_db.txt @@ -124,7 +124,8 @@ 79,9,8,2,6,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0, PR_MAGNUS,Magnus Exorcismus 80,9,8,2,3,0x20,1:1:1:1:1:2:2:2:2:2:2,10,3:4:5:6:7:8:9:10:11:12:12,yes,0,0x80,5,magic,0, WZ_FIREPILLAR,Fire Pillar 81,0,6,4,3,0,3,10,1,yes,0,0,0,magic,5, WZ_SIGHTRASHER,Sightrasher -//82,9,6,2,3,0,0,10,1,yes,0,0,0,magic,0, WZ_FIREIVY,Fire Ivy +82,9,8,2,4,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0, WZ_FIREIVY,Fire Ivy +//82,9,6,2,3,0,0,10,1,yes,0,0x200,1,magic,0, WZ_FIREIVY,Fire Ivy 83,9,8,2,3,0,3:3:3:3:3:3:3:3:3:3:14,10,1:1:2:2:3:3:4:4:5:5:15,yes,0,0,0,magic,0, WZ_METEOR,Meteor Storm 84,9,8,1,4,0,0,10,3:4:5:6:7:8:9:10:11:12,yes,0,0,0,magic,2:3:3:4:4:5:5:6:6:7, WZ_JUPITEL,Jupitel Thunder 85,9,8,2,4,0,0,10,-10,yes,0,0,0,magic,0, WZ_VERMILION,Lord of Vermilion @@ -663,27 +664,155 @@ 1018,9,6,1,3,0x1,0,1,1,yes,0,0x1,0,magic,0, SA_ELEMENTFIRE,Elemental Change Fire 1019,9,6,1,4,0x1,0,1,1,yes,0,0x1,0,magic,0, SA_ELEMENTWIND,Elemental Change Wind -// Third Job Skills -//2001,0,0,0,0,0,0,9,0,no,0,0,0,none,0 RK_ENCHANTBLADE, -//2002,0,0,0,0,0,0,9,0,no,0,0,0,none,0 RK_SONICWAVE, -//2003,0,0,0,0,0,0,9,0,no,0,0,0,none,0 RK_DEATHBOUND, -//2004,0,0,0,0,0,0,9,0,no,0,0,0,none,0 RK_HUNDREDSPEAR, -//2005,0,0,0,0,0,0,9,0,no,0,0,0,none,0 RK_WINDCUTTER, -//2006,0,0,0,0,0,0,9,0,no,0,0,0,none,0 RK_IGNITIONBREAK, -//2007,0,0,0,0,0,0,9,0,no,0,0,0,none,0 RK_DRAGONTRAINING, -//2008,0,0,0,0,0,0,9,0,no,0,0,0,none,0 RK_DRAGONBREATH, -//2009,0,0,0,0,0,0,9,0,no,0,0,0,none,0 RK_DRAGONHOWLING, -//2010,0,0,0,0,0,0,9,0,no,0,0,0,none,0 RK_RUNEMASTERY, -//2011,0,0,0,0,0,0,9,0,no,0,0,0,none,0 RK_MILLENNIUMSHIELD, -//2012,0,0,0,0,0,0,9,0,no,0,0,0,none,0 RK_CRUSHSTRIKE, -//2013,0,0,0,0,0,0,9,0,no,0,0,0,none,0 RK_REFRESH, -//2014,0,0,0,0,0,0,9,0,no,0,0,0,none,0 RK_GIANTGROWTH, -//2015,0,0,0,0,0,0,9,0,no,0,0,0,none,0 RK_STONEHARDSKIN, -//2016,0,0,0,0,0,0,9,0,no,0,0,0,none,0 RK_VITALITYACTIVATION, -//2017,0,0,0,0,0,0,9,0,no,0,0,0,none,0 RK_STORMBLAST, -//2018,0,0,0,0,0,0,9,0,no,0,0,0,none,0 RK_FIGHTINGSPIRIT, -//2019,0,0,0,0,0,0,9,0,no,0,0,0,none,0 RK_ABUNDANCE, -//2020,0,0,0,0,0,0,9,0,no,0,0,0,none,0 RK_PHANTOMTHRUST, +//**** +// RK Rune Knight +//**** +2001,1,6,16,0,0x1,0,5,1,yes,0,0,0,none,0, RK_ENCHANTBLADE,Enchant Blade +2002,7:8:9:10:11,6,1,-1,0,0,5,1,no,0,0,0,weapon,0, RK_SONICWAVE,Sonic Wave +2003,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0, RK_DEATHBOUND,Death Bound +2004,1,8,1,-1,0,0,10,-5,no,0,0,0,weapon,0, RK_HUNDREDSPEAR,Hundred Spear +2005,1,6,2,4,0x2,2,5,1,no,0,0,0,weapon,3, RK_WINDCUTTER,Wind Cutter +2006,0,6,4,-1,0x2,5,5,1,no,0,0,0,weapon,0, RK_IGNITIONBREAK,Ignition Break +2007,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0, RK_DRAGONTRAINING,Dragon Training +2008,9,6,2,3,0xC2,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0,0,misc,0, RK_DRAGONBREATH,Dragon Breath //CHECK May have to change this back to a weapon type attack. +2009,0,6,4,0,0x3,3:4:5:6:7,5,1,yes,0,0,0,weapon,0, RK_DRAGONHOWLING,Dragon Howling +2010,0,0,0,0,0,0,10,0,no,0,0,0,none,0, RK_RUNEMASTERY,Rune Mastery +2011,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0, RK_MILLENNIUMSHIELD,Millenium Shield +2012,1,6,1,-1,0,0x8,1,1,yes,0,0,0,weapon,0, RK_CRUSHSTRIKE,Crush Strike +2013,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0, RK_REFRESH,Refresh +2014,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0, RK_GIANTGROWTH,Giant Growth +2015,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0, RK_STONEHARDSKIN,Stone Hard Skin +2016,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0, RK_VITALITYACTIVATION,Vitality Activation +2017,0,6,4,-1,0x2,3,1,1,no,0,0,0,weapon,7, RK_STORMBLAST,Storm Blast +2018,0,6,4,0,0x3,-1,1,1,yes,0,0,0,none,0, RK_FIGHTINGSPIRIT,Fighting Spirit //CHECK Is this splash needed? +2019,9,6,4,6,0x1,0,1,1,yes,0,0,0,none,0, RK_ABUNDANCE,Abundance +2020,5:6:7:8:9,6,1,-1,0,0,5,1,yes,0,0,0,weapon,0, RK_PHANTOMTHRUST,Phantom Thrust + +//**** +// WL Warlock +//**** +2201,11,6,16,0,0,0,5,1,yes,0,0,0,magic,0, WL_WHITEIMPRISON,White Imprison +2202,11,8,1,8,0x2,1:1:1:2:2,5,-2,yes,0,0,0,magic,0, WL_SOULEXPANSION,Soul Expansion +2203,0,8,4,1,0x2,13,5,-3:-4:-5:-6:-7,yes,0,0,0,magic,0, WL_FROSTMISTY,Frosty Misty +2204,0,8,4,1,0x2,13,5,-5,yes,0,0,0,magic,0, WL_JACKFROST,Jack Frost +2205,11,6,1,0,0x1,0,5,1,yes,0,0,0,magic,0, WL_MARSHOFABYSS,Marsh of Abyss +2206,0,6,4,0,0x1,0,5,1,yes,0,0,0,magic,0, WL_RECOGNIZEDSPELL,Recognized Spell +2207,7,6,1,2,0x3,1:2:2:3:3,5,1,yes,0,0,0,magic,0, WL_SIENNAEXECRATE,Sienna Execrate +2208,0,0,0,0,0,0,3,0,no,0,0,0,none,0, WL_RADIUS,Radius +2209,0,6,4,0,0x3,9:10:11:12:13,5,1,yes,0,0,0,magic,0, WL_STASIS,Stasis +2210,11,6,1,0,0,0,5,1,yes,0,0,0,magic,0, WL_DRAINLIFE,Drain Life +2211,11,8,1,3,0x2,3,5,-7,yes,0,0,0,magic,3, WL_CRIMSONROCK,Crimson Rock +2212,11,6,1,3,0,0,5,1,yes,0,0,0,magic,0, WL_HELLINFERNO,Hell Inferno +2213,11,8,2,0,0x2,15,5,-20,yes,0,0,0,magic,2, WL_COMET,Comet //CHECK AoE in official code appears to be 15 x 15, yet casting circle is much bigger then that. +2214,11,6,1,0,0,3,5,1,yes,0,0,0,magic,0, WL_CHAINLIGHTNING,Chain Lightning //CHECK Is the splash being used for the target search? +2215,11,6,1,4,0,0,5,1,no,0,0,0,magic,0, WL_CHAINLIGHTNING_ATK,Chain Lightning Attack +2216,3,8,2,2,0,0,5,-6:-7:-8:-9:-10,yes,0,0,0,magic,0, WL_EARTHSTRAIN,Earth Strain +2217,11,6,1,0,0,0,5,1,yes,0,0,0,magic,0, WL_TETRAVORTEX,Tetra Vortex +2218,11,6,1,3,0,0,5,1,no,0,0,0,magic,0, WL_TETRAVORTEX_FIRE,Tetra Vortex Fire +2219,11,6,1,1,0,0,5,1,no,0,0,0,magic,0, WL_TETRAVORTEX_WATER,Tetra Vortex Water +2220,11,6,1,4,0,0,5,1,no,0,0,0,magic,0, WL_TETRAVORTEX_WIND,Tetra Vortex Wind +2221,11,6,1,2,0,0,5,1,no,0,0,0,magic,0, WL_TETRAVORTEX_GROUND,Tetra Vortex Earth +2222,0,6,4,3,0x1,0,5,1,yes,0,0,0,magic,0, WL_SUMMONFB,Summon Fire Ball +2223,0,6,4,4,0x1,0,5,1,yes,0,0,0,magic,0, WL_SUMMONBL,Summon Lightning Ball +2224,0,6,4,1,0x1,0,5,1,yes,0,0,0,magic,0, WL_SUMMONWB,Summon Water Ball +2225,11,6,1,3,0,0,5,1,no,0,0,1,magic,0, WL_SUMMON_ATK_FIRE,Summon Attack Fire //CHECK Summon attack ID's dont appear to have a range. +2226,11,6,1,4,0,0,5,1,no,0,0,1,magic,0, WL_SUMMON_ATK_WIND,Summon Attack Wind +2227,11,6,1,1,0,0,5,1,no,0,0,1,magic,0, WL_SUMMON_ATK_WATER,Summon Attack Water +2228,11,6,1,2,0,0,5,1,no,0,0,1,magic,0, WL_SUMMON_ATK_GROUND,Summon Attack Earth +2229,0,6,4,2,0x1,0,5,1,yes,0,0,0,magic,0, WL_SUMMONSTONE,Summon Stone +2230,11,8,1,0,0,0,2,1,yes,0,0,0,magic,0, WL_RELEASE,Release //CHECK Should it be left to do multi hit or single hit? +2231,0,6,4,0,0x1,0,1,1,yes,0,0,0,magic,0, WL_READING_SB,Reading Spellbook +2232,0,0,0,0,0,0,5,0,no,0,0,0,none,0, WL_FREEZE_SP,Freeze Spell + + +//**** +// GC Guillotine Cross +//**** + +//**** +// AB Arch Bishop +//**** +2038,11,8,1,6,0x2,3,5,-3,yes,0,0,0,magic,0, AB_JUDEX,Judex +2039,0,6,4,0,0x1,0,1,1,yes,0,0,0,magic,0, AB_ANCILLA,Ancilla +2040,11,8,1,6,0,0,10,-10,yes,0,0,0,magic,0, AB_ADORAMUS,Adoramus +2041,0,6,4,6,0x3,3:7:15,3,1,yes,0,0,0,magic,0, AB_CLEMENTIA,Crementia +2042,0,6,4,6,0x3,3:7:15,3,1,yes,0,0,0,magic,0, AB_CANTO,Canto Candidus +2043,0,6,4,6,0x3,3:7:15,3,1,yes,0,0,0,magic,0, AB_CHEAL,Coluceo Heal +2044,11,6,2,6,0x1,0,5,1,yes,0,0,1,magic,0, AB_EPICLESIS,Epiclesis +2045,0,6,4,6,0x3,15,10,1,yes,0,0,0,magic,0, AB_PRAEFATIO,Praefatio +2046,0,6,4,6,0x3,15,10,1,yes,0,0,0,magic,0, AB_ORATIO,Oratio +2047,0,6,4,6,0x3,15,4,1,yes,0,0,0,magic,0, AB_LAUDAAGNUS,Lauda Agnus +2048,0,6,4,6,0x3,15,4,1,yes,0,0,0,magic,0, AB_LAUDARAMUS,Lauda Ramus +2049,0,0,0,0,0,0,10,0,no,0,0,0,none,0, AB_EUCHARISTICA,Eucharistica +2050,11,6,16,6,0x1,0,1,1,yes,0,0,0,magic,0, AB_RENOVATIO,Renovatio +2051,11,6,16,6,0x21,0,5,1,yes,0,0,0,magic,0, AB_HIGHNESSHEAL,Highness Heal //CHECK Info shows this has magic attack. +2052,11,6,1,0,0x1,0,5,1,yes,0,0xA00,0,magic,0, AB_CLEARANCE,Clearance //CHECK Also shows this as a magic attack. Why? +2053,0,6,4,0,0x1,0,5,1,yes,0,0,0,magic,0, AB_EXPIATIO,Expiatio //CHECK Does this also give the buff to party members? +2054,0,6,4,6,0x1,0,10,1,yes,0,0,0,none,0, AB_DUPLELIGHT,Duple Light //CHECK Had issues adding a skill level check to make the % go higher with the skills level. Will do later. +2055,-1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0, AB_DUPLELIGHT_MELEE,Duple Light Melee +2056,-1,6,1,0,0,0,10,1,no,0,0,0,magic,0, AB_DUPLELIGHT_MAGIC,Duple Light Magic +2057,0,6,4,6,0x3,4:5:6:7:8,5,1,yes,0,0,0,magic,0, AB_SILENTIUM,Silentium //CHECk Marked magic attack as well. Hmmmm.... + +2515,11,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0, AB_SECRAMENT,Secrament + +//**** +// RA Ranger +//**** +2233,9,8,1,-1,0x2,2:2:2:2:2:3:3:3:3:4,10,3,yes,0,0,0,weapon,0, RA_ARROWSTORM,Arrow Storm +2234,0,6,4,0,0,0,5,1,yes,0,0,0,none,0, RA_FEARBREEZE,Fear Breeze +2235,0,0,0,0,0,0,10,0,no,0,0,0,none,0, RA_RANGERMAIN,Ranger Main +2236,9,8,1,-1,0,0,10,1,yes,0,0,0,weapon,0, RA_AIMEDBOLT,Aimed Bolt +2237,9,6,2,0,0x3,3,1,1,no,0,0,0,none,0, RA_DETONATOR,Detonator +2238,3,6,2,0,0x3,2,5,1,no,0,0x80,3,misc,0, RA_ELECTRICSHOCKER,Electric Shocker +2239,3,6,2,0,0x42,3,5,1,no,0,0x80,3,misc,0, RA_CLUSTERBOMB,Cluster Bomb +2240,0,6,4,0,0,0,1,1,no,0,0,0,none,0, RA_WUGMASTERY,Warg Mastery +2241,0,6,4,0,0,0,3,1,no,0,0,0,none,0, RA_WUGRIDER,Warg Rider +2242,0,6,4,-1,0x2,1,1,0,no,0,0,0,weapon,0, RA_WUGDASH,Warg Dash +2243,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0, RA_WUGSTRIKE,Warg Strike +2244,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0, RA_WUGBITE,Warg Bite +2245,0,0,0,0,0,0,10,0,no,0,0,0,none,0, RA_TOOTHOFWUG,Tooth of Warg +2246,0,6,4,0,0x2,3:4:5:6:7,5,1,no,0,0,0,weapon,0, RA_SENSITIVEKEEN,Sensitive Keen +2247,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0, RA_CAMOUFLAGE,Camouflage +2248,0,0,0,0,0,0,5,0,no,0,0,0,none,0, RA_RESEARCHTRAP,Research Trap +2249,3,6,2,3,0x43,2,1,1,no,0,0x80,1,misc,0, RA_MAGENTATRAP,Magenta Trap +2250,3,6,2,1,0x43,2,1,1,no,0,0x80,1,misc,0, RA_COBALTTRAP,Cobalt Trap +2251,3,6,2,2,0x43,2,1,1,no,0,0x80,1,misc,0, RA_MAIZETRAP,Maize Trap +2252,3,6,2,4,0x43,2,1,1,no,0,0x80,1,misc,0, RA_VERDURETRAP,Verdure Trap +2253,3,6,2,0,0x42,2,5,1,no,0,0x80,2,misc,0, RA_FIRINGTRAP,Firing Trap +2254,3,6,2,0,0x42,2,5,1,no,0,0x80,2,misc,0, RA_ICEBOUNDTRAP,Icebound Trap + +//**** +// NC Mechanic +2255,0,0,0,0,0,0,5,0,no,0,0,0,none,0, NC_MADOLICENCE,Mado License +2256,11,6,1,-1,0,0,5,1,no,0,0,0,weapon,0, NC_BOOSTKNUCKLE,Boost Knuckle +2257,3,6,1,-1,0,0,3,1,no,0,0,0,weapon,0, NC_PILEBUNKER,Pile Bunker +2258,13,6,1,-1,0,0,3,1,no,0,0,0,weapon,0, NC_VULCANARM,Vulcan Arm +2259,5,6,1,3,0,2,3,1,no,0,0,5,weapon,0, NC_FLAMELAUNCHER,Flame Launcher +2260,7,6,2,1,0x2,2:3:4,3,1,no,0,0,0,weapon,0, NC_COLDSLOWER,Cold Slower +2261,7,6,2,-1,0x42,3:2:1,3,1,no,0,0,0,weapon,0, NC_ARMSCANNON,Arm Cannon +2262,0,6,4,0,0x1,0,3,1,no,0,0,0,none,0, NC_ACCELERATION,Acceleration +2263,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0, NC_HOVERING,Hovering +2264,0,6,4,0,0x1,0,1,1,no,0,0,0,none,7, NC_F_SIDESLIDE,Front-Side Slide +2265,0,6,4,0,0x1,0,1,1,no,0,0,0,none,7, NC_B_SIDESLIDE,Back-Side Slide +2266,0,0,0,0,0,0,4,0,no,0,0,0,none,0, NC_MAINFRAME,Mainframe Restructure // Check me. Part of the code notes translated to "The amount of fuel have". +2267,0,6,4,-1,0x42,2:3:4,3,1,no,0,0,0,misc,5, NC_SELFDESTRUCTION,Self Destruction +2268,0,6,4,0,0x1,0,4,1,yes,0,0,0,none,0, NC_SHAPESHIFT,Shape Shift +2269,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0, NC_EMERGENCYCOOL,Emergency Cool +2270,0,6,4,0,0x3,7,1,1,yes,0,0,0,none,0, NC_INFRAREDSCAN,Infrared Scan +2271,9,6,1,0,0x1,0,3,1,yes,0,0,0,none,0, NC_ANALYZE,Analyze +2272,0,6,4,0,0x3,1:2:3,3,1,yes,0,0,0,none,0, NC_MAGNETICFIELD,Magnetic Field +2273,0,6,4,0,0x1,0,3,1,yes,0,0,0,none,0, NC_NEUTRALBARRIER,Neutral Barrier +2274,0,6,4,0,0x1,0,3,1,yes,0,0,0,none,0, NC_STEALTHFIELD,Stealth Field +2275,5,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0, NC_REPAIR,Repair +2276,0,0,0,0,0,0,10,0,no,0,0,0,none,0, NC_TRAININGAXE,Axe Training +2277,0,0,0,0,0,0,5,0,no,0,0,0,none,0, NC_RESEARCHFE,Research Fire/Earth +2278,4:5:6:7:8,6,1,-1,0,0,5,1,no,0,0,0,weapon,2:3:4:5:6, NC_AXEBOOMERANG,Axe Boomerang +2279,1,6,1,-1,0,0,5,1,no,0,0,0,weapon,0, NC_POWERSWING,Power Swing +2280,0,8,4,-1,0x2,2:2:3:3:3,5,-6,no,0,0,0,weapon,0, NC_AXETORNADO,Axe Tornado // Check me. Takes 20 * Skill LV amount of HP each use. +2281,2,6,2,0,0x1,0,5,1,yes,0,0,2,none,0, NC_SILVERSNIPER,FAW - Silver Sniper +2282,2,6,2,0,0x1,0,5,1,yes,0,0,2,none,0, NC_MAGICDECOY,FAW - Magic Decoy //CHECK FIX ME!!!! Wind and Earth stones spawning opposite decoys. +2283,2,6,1,0,0x1,0,1,1,no,0,0,0,none,0, NC_DISJOINT,FAW Removal + //2021,0,0,0,0,0,0,9,0,no,0,0,0,none,0 GC_VENOMIMPRESS, //2022,0,0,0,0,0,0,9,0,no,0,0,0,none,0 GC_CROSSIMPACT, //2023,0,0,0,0,0,0,9,0,no,0,0,0,none,0 GC_DARKILLUSION, diff --git a/db/skill_require_db.txt b/db/skill_require_db.txt index 9e9f385f0..08ea26839 100644 --- a/db/skill_require_db.txt +++ b/db/skill_require_db.txt @@ -89,7 +89,7 @@ 79,0,0,40:42:44:46:48:50:52:54:56:58,0,0,0,99,0,0,none,0,717,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //PR_MAGNUS#ƒ}ƒOƒkƒXƒGƒNƒ\ƒVƒYƒ€# 80,0,0,75,0,0,0,99,0,0,none,0,717,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_FIREPILLAR#ƒtƒ@ƒCƒA?ƒsƒ‰?# 81,0,0,35:37:39:41:43:45:47:49:51:53,0,0,0,99,0,0,sight,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_SIGHTRASHER#ƒTƒCƒgƒ‰ƒbƒVƒƒ?# - +82,0,0,12:14:16:18:20:22:24:26:28:30,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_FIREIVY#ƒ†ƒsƒeƒ‹ƒTƒ“ƒ_?# 83,0,0,20:24:30:34:40:44:50:54:60:64,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_METEOR#ƒƒeƒIƒXƒg?ƒ€# 84,0,0,20:23:26:29:32:35:38:41:44:47,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_JUPITEL#ƒ†ƒsƒeƒ‹ƒTƒ“ƒ_?# 85,0,0,60:64:68:72:76:80:84:88:92:96,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WZ_VERMILION#ƒ?ƒhƒIƒuƒ”ƒ@?ƒ~ƒŠƒIƒ“# @@ -454,6 +454,164 @@ 1018,0,0,30,0,0,0,99,0,0,none,0,12114,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SA_ELEMENTFIRE 1019,0,0,30,0,0,0,99,0,0,none,0,12117,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SA_ELEMENTWIND +//***** +// RK Rune Knight +2001,0,0,40:45:50:55:60,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RK_ENCHANTBLADE#Enchant Blade# +2002,0,0,30:35:40:45:50,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RK_SONICWAVE#Sonic Wave# +2003,0,0,55:60:65:70:75:80:85:90:95:100,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RK_DEATHBOUND#Death Bound# +2004,0,0,60,0,0,0,4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RK_HUNDREDSPEAR#Hundred Spear# +2005,0,0,20:24:28:32:36,0,0,0,1:2:3:4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RK_WINDCUTTER#Wind Cutter# +2006,0,0,35:40:45:50:55,0,0,0,1:2:3:4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RK_IGNITIONBREAK#Ignition Break# +2008,0,0,30:35:40:45:50:55:60:65:70:75,0,0,0,99,0,0,dragon,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RK_DRAGONBREATH#Dragon Breath# +2009,0,0,70,0,0,0,99,0,0,dragon,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RK_DRAGONHOWLING#Dragon Howling# +2011,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RK_MILLENNIUMSHIELD#Millenium Shield# +2012,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RK_CRUSHSTRIKE#Crush Strike# +2013,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RK_REFRESH#Refresh# +2014,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RK_GIANTGROWTH#Giant Growth# +2015,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RK_STONEHARDSKIN#Stone Hard Skin# +2016,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RK_VITALITYACTIVATION#Vitality Activation# +2017,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RK_STORMBLAST#Storm Blast# +2018,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RK_FIGHTINGSPIRIT#Fighting Spirit# +2019,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RK_ABUNDANCE#Abundance# +2020,0,0,15:18:21:24:27,0,0,0,4:5,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RK_PHANTOMTHRUST#Phantom Thrust# + +//**** +// GC Guilottine Cross +2021,0,0,12:16:20:24:28,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GC_VENOMIMPRESS#Venom Impress# +2022,0,0,25,0,0,0,99,0,0,move_enable,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GC_CROSSIMPACT#Cross Impact# //CHECK Is this move_enable needed? +2023,0,0,40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GC_DARKILLUSION#Dark Illusion# + +2025,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GC_CREATENEWPOISON#Create New Poison# +2026,0,0,10,0,0,0,99,0,0,none,0,6128,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GC_ANTIDOTE#Antidote# +2027,0,0,20:24:28:32:36,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GC_POISONINGWEAPON#Poisoning Weapon# +2028,0,0,40:36:32:28:24,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GC_WEAPONBLOCKING#Weapon Blocking# +2029,0,0,5:8:11:14:17,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GC_COUNTERSLASH#Counter Slash# +2030,0,0,20,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GC_WEAPONCRUSH#Weapon Crush# +2031,0,0,30:40:50:60:70,0,0,0,99,0,0,poisonweapon,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GC_VENOMPRESSURE#Venom Pressure# +2032,0,0,40,0,0,0,99,0,0,poisonweapon,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GC_POISONSMOKE#Poison Smoke# +2033,0,0,45,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GC_CLOAKINGEXCEED#Cloaking Exceed# +2034,0,0,30,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GC_PHANTOMMENACE#Phantom Menace# +2035,0,0,100,10,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GC_HALLUCINATIONWALK#Hallucination Walk# +2036,0,0,5,0,0,0,16,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GC_ROLLINGCUTTER#Rolling Cutter# +2037,0,0,20:24:28:32:36,0,0,0,16,0,0,rollingcutter,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GC_CROSSRIPPERSLASHER#Cross Ripper Slasher# + + +//**** +// WL Warlock +2201,0,0,50:55:60:65:70,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_WHITEIMPRISON#White Imprison# +2202,0,0,30:35:40:45:50,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_SOULEXPANSION#Soul Expansion# +2203,0,0,40:48:56:64:72,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_FROSTMISTY#Frosty Misty# +2204,0,0,50:60:70:80:90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_JACKFROST#Jack Frost# +2205,0,0,40:42:44:46:48,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_MARSHOFABYSS#Marsh of Abyss# +2206,0,0,50:60:70:80:90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_RECOGNIZEDSPELL#Recognized Spell# +2207,0,0,32:34:36:38:40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_SIENNAEXECRATE#Sienna Execrate# + +2209,0,0,50:60:70:80:90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_STASIS#Stasis# +2210,0,0,20:24:28:32:36,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_DRAINLIFE#Drain Life# +2211,0,0,60:70:80:90:100,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_CRIMSONROCK#Crimson Rock# +2212,0,0,35:40:45:50:55,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_HELLINFERNO#Hell Inferno# +2213,0,0,240:280:320:360:400,0,0,0,99,0,0,none,0,716,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_COMET#Comet# +2214,0,0,80:90:100:110:120,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_CHAINLIGHTNING#Chain Lightning# +2215,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_CHAINLIGHTNING_ATK#Chain Lightning Attack# +2216,0,0,70:78:86:94:102,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_EARTHSTRAIN#Earth Strain# +2217,0,0,120:150:180:210:240,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_TETRAVORTEX#Tetra Vortex# +2218,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_TETRAVORTEX_FIRE#Tetra Vortex Fire# +2219,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_TETRAVORTEX_WATER#Tetra Vortex Water# +2220,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_TETRAVORTEX_WIND#Tetra Vortex Wind# +2221,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_TETRAVORTEX_GROUND#Tetra Vortex Earth# +2222,0,0,10:12:14:16:18,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_SUMMONFB#Summon Fire Ball# +2223,0,0,10:12:14:16:18,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_SUMMONBL#Summon Lightning Ball# +2224,0,0,10:12:14:16:18,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_SUMMONWB#Summon Water Ball# +2225,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_SUMMON_ATK_FIRE#Summon Attack Fire# +2226,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_SUMMON_ATK_WIND#Summon Attack Wind# +2227,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_SUMMON_ATK_WATER#Summon Attack Water# +2228,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_SUMMON_ATK_GROUND#Summon Attack Earth# +2229,0,0,10:12:14:16:18,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_SUMMONSTONE#Summon Stone# +2230,0,0,3:20,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_RELEASE#Release# +2231,0,0,40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_READING_SB#Reading Spellbook# +//2232,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WL_FREEZE_SP#Freeze Spell# (Passive Skill) + + +//**** +// AB Arch Bishop +2038,0,0,20:23:26:29:32,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_JUDEX#Judex# +2039,0,0,30,0,-30,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_ANCILLA#Ancilla# +2040,0,0,20:24:28:32:36:40:44:48:52:56,0,0,0,99,0,0,none,0,717,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_ADORAMUS#Adoramus# +2041,0,0,200:220:240,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_CLEMENTIA#Crementia# +2042,0,0,145:160:175,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_CANTO#Canto Candidus# +2043,0,0,130:145:160,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_CHEAL#Coluceo Heal# +2044,0,0,300,0,0,0,99,0,0,none,0,12333,1,523,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_EPICLESIS#Epiclesis# +2045,0,0,60:70:80:90:100:110:120:130:140:150,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_PRAEFATIO#Praefatio# +2046,0,0,35:38:41:44:47:50:53:56:59:62,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_ORATIO#Oratio# +2047,0,0,50:60:70:80,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_LAUDAAGNUS#Lauda Agnus# +2048,0,0,50:60:70:80,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_LAUDARAMUS#Lauda Ramus# + +2050,0,0,70,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_RENOVATIO#Renovatio# +2051,0,0,70:100:130:160:190,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_HIGHNESSHEAL#Highness Heal# +2052,0,0,54:60:66:72:78,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_CLEARANCE#Clearance# +2053,0,0,35:40:45:50:55,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_EXPIATIO#Expiatio# +2054,0,0,55:60:65:70:75:80:85:90:95:100,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_DUPLELIGHT#Duple Light# +2055,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_DUPLELIGHT_MELEE#Duple Light Melee# +2056,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_DUPLELIGHT_MAGIC#Duple Light Magic# +2057,0,0,64:68:72:76:80,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_SILENTIUM#Silentium# + +2515,0,0,100:120:140:160:180,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_SECRAMENT#Sacrament# + +//**** +// RA Ranger +2233,0,0,30:32:34:36:38:40:42:44:46:48,0,0,0,11,1,10,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RA_ARROWSTORM#Arrow Storm# +2234,0,0,36:40:44:48:52,0,0,0,11,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RA_FEARBREEZE#Fear Breeze# + +2236,0,0,30:32:34:36:38:40:42:44:46:48,0,0,0,11,1,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RA_AIMEDBOLT#Aimed Bolt# //How many arrows does it require??? +2237,0,0,15,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RA_DETONATOR#Detonator# +2238,0,0,35,0,0,0,99,0,0,none,0,7940,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RA_ELECTRICSHOCKER#Electric Shocker# +2239,0,0,20,0,0,0,99,0,0,none,0,7940,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RA_CLUSTERBOMB#Cluster Bomb# +2240,0,0,5,0,0,0,99,0,0,none,0,6124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RA_WUGMASTERY#Warg Mastery# +2241,0,0,20,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RA_WUGRIDER#Warg Rider# +2242,0,0,40,0,0,0,99,0,0,move_enable,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RA_WUGDASH#Warg Dash# +2243,0,0,20:22:24:26:28,0,0,0,99,0,0,ridingwarg,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RA_WUGSTRIKE#Warg Strike# +2244,0,0,42:44:46:48:50,0,0,0,99,0,0,warg,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RA_WUGBITE#Warg Bite# + +2246,0,0,12,0,0,0,99,0,0,warg,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RA_SENSITIVEKEEN#Sensitive Keen# +2247,0,0,40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RA_CAMOUFLAGE#Camouflage# + +2249,0,0,10,0,0,0,99,0,0,none,0,7940,1,990,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RA_MAGENTATRAP#Magenta Trap# +2250,0,0,10,0,0,0,99,0,0,none,0,7940,1,991,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RA_COBALTTRAP#Cobalt Trap# +2251,0,0,10,0,0,0,99,0,0,none,0,7940,1,993,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RA_MAIZETRAP#Maize Trap# +2252,0,0,10,0,0,0,99,0,0,none,0,7940,1,992,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RA_VERDURETRAP#Verdure Trap# +2253,0,0,10,0,0,0,99,0,0,none,0,7940,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RA_FIRINGTRAP#Firing Trap# +2254,0,0,10,0,0,0,99,0,0,none,0,7940,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RA_ICEBOUNDTRAP#Icebound Trap# + +//**** +// NC Mechanic +2256,0,0,3:6:9:12:15,0,0,0,99,0,0,mado,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_BOOSTKNUCKLE#Boost Knuckle# +2257,0,0,50,0,0,0,99,0,0,mado,0,1549,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_PILEBUNKER#Pile Bunker# +2258,0,0,2,0,0,0,99,0,0,mado,0,6145,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_VULCANARM#Vulcan Arm# +2259,0,0,20,0,0,0,99,0,0,mado,0,2139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_FLAMELAUNCHER#Flame Launcher# +2260,0,0,20,0,0,0,99,0,0,mado,0,6147,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_COLDSLOWER#Cold Slower# +2261,0,0,30:45:60,0,0,0,99,8,1,mado,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_ARMSCANNON#Arm Cannon# +2262,0,0,20:40:60,0,0,0,99,0,0,mado,0,6146,1,2800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_ACCELERATION#Acceleration# +2263,0,0,25,0,0,0,99,0,0,mado,0,6146,1,2801,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_HOVERING#Hovering# +2264,0,0,5,0,0,0,99,0,0,mado,0,6146,1,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_F_SIDESLIDE#Front - Side Slide# +2265,0,0,5,0,0,0,99,0,0,mado,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_B_SIDESLIDE#Back - Side Slide# + +2267,0,0,200,0,0,0,99,0,0,mado,0,6146,5,2802,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_SELFDESTRUCTION#Self Destruction# +2268,0,0,100,0,0,0,99,0,0,mado,0,994,1,997,1,996,1,995,1,6146,2,2803,0,0,0,0,0,0,0,0,0 //NC_SHAPESHIFT#Shape Shift# //CHECK Shouldnt the different stones all be in the same slot? +2269,0,0,20,0,0,0,99,0,0,mado,0,6146,2,2804,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_EMERGENCYCOOL#Emergency Cool# +2270,0,0,45,0,0,0,99,0,0,mado,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_INFRAREDSCAN#Infrared Scan# +2271,0,0,30,0,0,0,99,0,0,mado,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_ANALYZE#Analyze# +2272,0,0,90,0,0,0,99,0,0,mado,0,6146,3,2805,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_MAGNETICFIELD#Magnetic Field# +2273,0,0,90,0,0,0,99,0,0,mado,0,6146,1,2806,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_NEUTRALBARRIER#Neutral Barrier# +2274,0,0,100:150:200,0,0,0,99,0,0,mado,0,6146,2,2808,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_STEALTHFIELD#Stealth Field# +2275,0,0,25:30:35:40:45,0,0,0,99,0,0,mado,0,2807,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_REPAIR#Repair# + +2278,0,0,20:22:24:26:28,0,0,0,6:7,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_AXEBOOMERANG#Axe Boomerang# +2279,0,0,10:12:14:16:18,0,0,0,6:7,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_POWERSWING#Power Swing# +2280,0,0,18:20:22:24:26,0,0,0,6:7,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_AXETORNADO#Axe Tornado# +2281,0,0,25:30:35:40:45,0,0,0,99,0,0,none,0,998,1,999,2,612,0,615,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_SILVERSNIPER#FAW - Silver Sniper# +2282,0,0,40:45:50:55:60,0,0,0,99,0,0,none,0,998,2,7054,1,612,0,615,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_MAGICDECOY#FAW - Magic Decoy# +2283,0,0,15,0,0,0,99,0,0,none,0,6186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_DISJOINT#FAW Removal# + 2535,0,0,1,0,0,0,99,0,0,none,0,6377,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store 10010,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GD_BATTLEORDER## diff --git a/db/skill_tree.txt b/db/skill_tree.txt index 27f616c11..51c30f181 100644 --- a/db/skill_tree.txt +++ b/db/skill_tree.txt @@ -187,7 +187,7 @@ 9,157,1,0,0,0,0,0,0,0,0,0,0 //MG_ENERGYCOAT#Energy Coat# 9,80,10,18,1,0,0,0,0,0,0,0,0 //WZ_FIREPILLAR#Fire Pillar# 9,81,10,20,1,10,1,0,0,0,0,0,0 //WZ_SIGHTRASHER#Sightrasher# -//9,82,10,0,0,0,0,0,0,0,0,0,0 //WZ_FIREIVY#Fire Ivy# +9,82,10,19,3,0,0,0,0,0,0,0,0 //WZ_FIREIVY#Fire Ivy# 9,83,10,81,2,21,1,0,0,0,0,0,0 //WZ_METEOR#Meteor Storm# 9,84,10,11,1,20,1,0,0,0,0,0,0 //WZ_JUPITEL#Jupiter Thunder# 9,85,10,21,1,84,5,0,0,0,0,0,0 //WZ_VERMILION#Lord of Vermilion# @@ -2263,3 +2263,671 @@ 4049,494,5,451,1,0,0,0,0,0,0,0,0 //SL_HIGH#Spirit of Rebirth# 4049,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby# 4049,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R# +//Rune Knight (non-trans) +4054,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill# +4054,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid# +4054,2,10,0,0,0,0,0,0,0,0,0,0 //SM_SWORD#Sword Mastery# +4054,3,10,2,1,0,0,0,0,0,0,0,0 //SM_TWOHAND#Two-Handed Sword Mastery# +4054,4,10,0,0,0,0,0,0,0,0,0,0 //SM_RECOVERY#Increase HP Recovery# +4054,5,10,0,0,0,0,0,0,0,0,0,0 //SM_BASH#Bash# +4054,6,10,0,0,0,0,0,0,0,0,0,0 //SM_PROVOKE#Provoke# +4054,7,10,5,5,0,0,0,0,0,0,0,0 //SM_MAGNUM#Magnum Break# +4054,8,10,6,5,0,0,0,0,0,0,0,0 //SM_ENDURE#Endure# +4054,144,1,0,0,0,0,0,0,0,0,0,0 //SM_MOVINGRECOVERY#Moving HP-Recovery# +4054,145,1,0,0,0,0,0,0,0,0,0,0 //SM_FATALBLOW#Attack Weak Point# +4054,146,1,0,0,0,0,0,0,0,0,0,0 //SM_AUTOBERSERK#Auto Berserk# +4054,55,10,0,0,0,0,0,0,0,0,0,0 //KN_SPEARMASTERY#Spear Mastery# +4054,56,10,55,1,0,0,0,0,0,0,0,0 //KN_PIERCE#Pierce# +4054,57,10,63,1,58,3,0,0,0,0,0,0 //KN_BRANDISHSPEAR#Brandish Spear# +4054,58,10,56,5,0,0,0,0,0,0,0,0 //KN_SPEARSTAB#Spear Stab# +4054,59,5,56,3,0,0,0,0,0,0,0,0 //KN_SPEARBOOMERANG#Spear Boomerang# +4054,60,10,3,1,0,0,0,0,0,0,0,0 //KN_TWOHANDQUICKEN#Twohand Quicken# +4054,61,5,3,1,0,0,0,0,0,0,0,0 //KN_AUTOCOUNTER#Counter Attack# +4054,62,10,5,10,7,3,3,5,60,10,61,5//KN_BOWLINGBASH#Bowling Bash# +4054,63,1,8,1,0,0,0,0,0,0,0,0 //KN_RIDING#Peco Peco Riding# +4054,64,5,63,1,0,0,0,0,0,0,0,0 //KN_CAVALIERMASTERY#Cavalier Mastery# +4054,1001,1,0,0,0,0,0,0,0,0,0,0 //KN_CHARGEATK#Charge Attack# +4054,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby# +4054,495,1,60,10,0,0,0,0,0,0,0,0 //KN_ONEHAND#Onehand Quicken# +4054,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R# +4054,2001,5,2010,2,0,0,0,0,0,0,0,0 //RK_ENCHANTBLADE#Enchant Blade# +4054,2002,5,2001,3,0,0,0,0,0,0,0,0 //RK_SONICWAVE#Sonic Wave# +4054,2003,10,61,1,2001,2,0,0,0,0,0,0 //RK_DEATHBOUND#Death Bound# +4054,2004,10,2020,3,0,0,0,0,0,0,0,0 //RK_HUNDREDSPEAR#Hundred Spear# +4054,2005,5,2001,5,0,0,0,0,0,0,0,0 //RK_WINDCUTTER#Wind Cutter# +4054,2006,5,2002,2,2003,5,2005,3,0,0,0,0 //RK_IGNITIONBREAK#Ignition Break# +4054,2007,5,64,1,0,0,0,0,0,0,0,0 //RK_DRAGONTRAINING#Dragon Training# +4054,2008,10,2007,2,0,0,0,0,0,0,0,0 //RK_DRAGONBREATH#Dragon Breath# +4054,2009,5,2007,2,0,0,0,0,0,0,0,0 //RK_DRAGONHOWLING#Dragon Howling# +4054,2010,10,0,0,0,0,0,0,0,0,0,0 //RK_RUNEMASTERY#Rune Mastery# +4054,2020,5,57,2,0,0,0,0,0,0,0,0 //RK_PHANTOMTHRUST#Phantom Thrust# +//Warlock (non-trans) +4055,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill# +4055,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid# +4055,9,10,0,0,0,0,0,0,0,0,0,0 //MG_SRECOVERY#Increase SP Recovery# +4055,10,1,0,0,0,0,0,0,0,0,0,0 //MG_SIGHT#Sight# +4055,11,10,0,0,0,0,0,0,0,0,0,0 //MG_NAPALMBEAT#Napalm Beat# +4055,12,10,11,7,13,5,0,0,0,0,0,0 //MG_SAFETYWALL#Safety Wall# +4055,13,10,11,4,0,0,0,0,0,0,0,0 //MG_SOULSTRIKE#Soul Strike# +4055,14,10,0,0,0,0,0,0,0,0,0,0 //MG_COLDBOLT#Cold Bolt# +4055,15,10,14,5,0,0,0,0,0,0,0,0 //MG_FROSTDIVER#Frost Diver# +4055,16,10,0,0,0,0,0,0,0,0,0,0 //MG_STONECURSE#Stone Curse# +4055,17,10,19,4,0,0,0,0,0,0,0,0 //MG_FIREBALL#Fire Ball# +4055,18,10,17,5,10,1,0,0,0,0,0,0 //MG_FIREWALL#Fire Wall# +4055,19,10,0,0,0,0,0,0,0,0,0,0 //MG_FIREBOLT#Fire Bolt# +4055,20,10,0,0,0,0,0,0,0,0,0,0 //MG_LIGHTNINGBOLT#Lightning Bolt# +4055,21,10,20,4,0,0,0,0,0,0,0,0 //MG_THUNDERSTORM#Thunderstorm# +4055,157,1,0,0,0,0,0,0,0,0,0,0 //MG_ENERGYCOAT#Energy Coat# +4055,80,10,18,1,0,0,0,0,0,0,0,0 //WZ_FIREPILLAR#Fire Pillar# +4055,81,10,20,1,10,1,0,0,0,0,0,0 //WZ_SIGHTRASHER#Sightrasher# +4055,83,10,81,2,21,1,0,0,0,0,0,0 //WZ_METEOR#Meteor Storm# +4055,84,10,11,1,20,1,0,0,0,0,0,0 //WZ_JUPITEL#Jupiter Thunder# +4055,85,10,21,1,84,5,0,0,0,0,0,0 //WZ_VERMILION#Lord of Vermilion# +4055,86,5,14,1,20,1,0,0,0,0,0,0 //WZ_WATERBALL#Water Ball# +4055,87,10,16,1,15,1,0,0,0,0,0,0 //WZ_ICEWALL#Ice Wall# +4055,88,10,87,1,0,0,0,0,0,0,0,0 //WZ_FROSTNOVA#Frost Nova# +4055,89,10,15,1,84,3,0,0,0,0,0,0 //WZ_STORMGUST#Storm Gust# +4055,90,5,16,1,0,0,0,0,0,0,0,0 //WZ_EARTHSPIKE#Earth Spike# +4055,91,5,90,3,0,0,0,0,0,0,0,0 //WZ_HEAVENDRIVE#Heaven's Drive# +4055,92,5,91,1,0,0,0,0,0,0,0,0 //WZ_QUAGMIRE#Quagmire# +4055,93,1,0,0,0,0,0,0,0,0,0,0 //WZ_ESTIMATION#Sense# +4055,1006,1,0,0,0,0,0,0,0,0,0,0 //WZ_SIGHTBLASTER#Sight Blaster# +4055,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby# +4055,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R# +4055,2201,5,2202,3,0,0,0,0,0,0,0,0 //WL_WHITEIMPRISON#White Imprison# +4055,2202,5,2210,1,0,0,0,0,0,0,0,0 //WL_SOULEXPANSION#Soul Expansion# +4055,2203,5,2224,1,0,0,0,0,0,0,0,0 //WL_FROSTMISTY#Frosty Misty# +4055,2204,5,2203,2,0,0,0,0,0,0,0,0 //WL_JACKFROST#Jack Frost# +4055,2205,5,92,1,0,0,0,0,0,0,0,0 //WL_MARSHOFABYSS#Marsh of Abyss# +4055,2206,5,2201,1,2209,1,2230,2,0,0,0,0 //WL_RECOGNIZEDSPELL#Recognized Spell# +4055,2207,5,2229,1,0,0,0,0,0,0,0,0 //WL_SIENNAEXECRATE#Sienna Execrate# +4055,2208,3,0,0,0,0,0,0,0,0,0,0 //WL_RADIUS#Radius# +4055,2209,5,2210,1,0,0,0,0,0,0,0,0 //WL_STASIS#Stasis# +4055,2210,5,2208,1,0,0,0,0,0,0,0,0 //WL_DRAINLIFE#Drain Life# +4055,2211,5,2222,1,0,0,0,0,0,0,0,0 //WL_CRIMSONROCK#Crimson Rock# +4055,2212,5,2211,2,0,0,0,0,0,0,0,0 //WL_HELLINFERNO#Hell Inferno# +4055,2213,5,2212,3,0,0,0,0,0,0,0,0 //WL_COMET#Comet# +4055,2214,5,2223,1,0,0,0,0,0,0,0,0 //WL_CHAINLIGHTNING#Chain Lightning# +4055,2216,5,2207,2,0,0,0,0,0,0,0,0 //WL_EARTHSTRAIN#Earth Strain# +4055,2217,5,2204,5,2212,5,2214,5,2216,5,0,0 //WL_TETRAVORTEX#Tetra Vortex# +4055,2222,5,83,1,0,0,0,0,0,0,0,0 //WL_SUMMONFB#Summon Fire Ball# +4055,2223,5,85,1,0,0,0,0,0,0,0,0 //WL_SUMMONBL#Summon Lightning Ball# +4055,2224,5,89,1,0,0,0,0,0,0,0,0 //WL_SUMMONWB#Summon Water Ball# +4055,2229,5,91,1,0,0,0,0,0,0,0,0 //WL_SUMMONSTONE#Summon Stone# +4055,2230,2,0,0,0,0,0,0,0,0,0,0 //WL_RELEASE#Release# +4055,2231,1,0,0,0,0,0,0,0,0,0,0 //WL_READING_SB#Reading Spellbook# +4055,2232,5,0,0,0,0,0,0,0,0,0,0 //WL_FREEZE_SP#Freeze Spell# +//Ranger (non-trans) +4056,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill# +4056,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid# +4056,43,10,0,0,0,0,0,0,0,0,0,0 //AC_OWL#Owl's Eye# +4056,44,10,43,3,0,0,0,0,0,0,0,0 //AC_VULTURE#Vulture's Eye# +4056,45,10,44,1,0,0,0,0,0,0,0,0 //AC_CONCENTRATION#Improve Concentration# +4056,46,10,0,0,0,0,0,0,0,0,0,0 //AC_DOUBLE#Double Strafe# +4056,47,10,46,5,0,0,0,0,0,0,0,0 //AC_SHOWER#Arrow Shower# +4056,147,1,0,0,0,0,0,0,0,0,0,0 //AC_MAKINGARROW#Arrow Crafting# +4056,148,1,0,0,0,0,0,0,0,0,0,0 //AC_CHARGEARROW#Arrow Repel# +4056,115,5,0,0,0,0,0,0,0,0,0,0 //HT_SKIDTRAP#Skid Trap# +4056,116,5,0,0,0,0,0,0,0,0,0,0 //HT_LANDMINE#Land Mine# +4056,117,5,115,1,0,0,0,0,0,0,0,0 //HT_ANKLESNARE#Ankle Snare# +4056,118,5,117,1,0,0,0,0,0,0,0,0 //HT_SHOCKWAVE#Shockwave Trap# +4056,119,5,120,1,0,0,0,0,0,0,0,0 //HT_SANDMAN#Sandman# +4056,120,5,115,1,0,0,0,0,0,0,0,0 //HT_FLASHER#Flasher# +4056,121,5,120,1,0,0,0,0,0,0,0,0 //HT_FREEZINGTRAP#Freezing Trap# +4056,122,5,116,1,119,1,121,1,0,0,0,0 //HT_BLASTMINE#Blast Mine# +4056,123,5,118,1,122,1,0,0,0,0,0,0 //HT_CLAYMORETRAP#Claymore Trap# +4056,124,1,116,1,0,0,0,0,0,0,0,0 //HT_REMOVETRAP#Remove Trap# +4056,125,1,118,1,124,1,0,0,0,0,0,0 //HT_TALKIEBOX#Talkie Box# +4056,126,10,0,0,0,0,0,0,0,0,0,0 //HT_BEASTBANE#Beast Bane# +4056,127,1,126,1,0,0,0,0,0,0,0,0 //HT_FALCON#Falconry Mastery# +4056,128,10,129,5,0,0,0,0,0,0,0,0 //HT_STEELCROW#Steel Crow# +4056,129,5,127,1,0,0,0,0,0,0,0,0 //HT_BLITZBEAT#Blitz Beat# +4056,130,4,45,1,127,1,0,0,0,0,0,0 //HT_DETECTING#Detect# +4056,131,5,124,1,127,1,0,0,0,0,0,0 //HT_SPRINGTRAP#Spring Trap# +4056,1009,1,0,0,0,0,0,0,0,0,0,0 //HT_PHANTASMIC#Phantasmic Arrow# +4056,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby# +4056,499,1,46,10,0,0,0,0,0,0,0,0 //HT_POWER#Beast Strafing# +4056,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R# +4056,2233,10,2236,5,0,0,0,0,0,0,0,0 //RA_ARROWSTORM#Arrow Storm# +4056,2234,5,2233,5,2247,1,0,0,0,0,0,0 //RA_FEARBREEZE#Fear Breeze# +4056,2235,10,0,0,0,0,0,0,0,0,0,0 //RA_RANGERMAIN#Ranger Main# +4056,2236,10,117,5,0,0,0,0,0,0,0,0 //RA_AIMEDBOLT#Aimed Bolt# +4056,2237,1,2239,3,0,0,0,0,0,0,0,0 //RA_DETONATOR#Detonator# +4056,2238,5,118,5,0,0,0,0,0,0,0,0 //RA_ELECTRICSHOCKER#Electric Shocker# +4056,2239,5,2248,3,0,0,0,0,0,0,0,0 //RA_CLUSTERBOMB#Cluster Bomb# +4056,2240,1,0,0,0,0,0,0,0,0,0,0 //RA_WUGMASTERY#Warg Mastery# +4056,2241,3,2240,1,0,0,0,0,0,0,0,0 //RA_WUGRIDER#Warg Rider# +4056,2242,1,2241,1,0,0,0,0,0,0,0,0 //RA_WUGDASH#Warg Dash# +4056,2243,5,2245,1,0,0,0,0,0,0,0,0 //RA_WUGSTRIKE#Warg Strike# +4056,2244,5,2240,1,0,0,0,0,0,0,0,0 //RA_WUGBITE#Warg Bite# +4056,2245,10,2240,1,0,0,0,0,0,0,0,0 //RA_TOOTHOFWUG#Tooth Of Warg# +4056,2246,5,2245,3,0,0,0,0,0,0,0,0 //RA_SENSITIVEKEEN#Sensitive Keen# +4056,2247,5,2235,1,0,0,0,0,0,0,0,0 //RA_CAMOUFLAGE#Camouflage# +4056,2248,5,123,1,124,1,0,0,0,0,0,0 //RA_RESEARCHTRAP#Research Trap# +4056,2249,1,2248,1,0,0,0,0,0,0,0,0 //RA_MAGENTATRAP#Magenta Trap# +4056,2250,1,2248,1,0,0,0,0,0,0,0,0 //RA_COBALTTRAP#Cobalt Trap# +4056,2251,1,2248,1,0,0,0,0,0,0,0,0 //RA_MAIZETRAP#Maize Trap# +4056,2252,1,2248,1,0,0,0,0,0,0,0,0 //RA_VERDURETRAP#Verdure Trap# +4056,2253,5,2237,1,0,0,0,0,0,0,0,0 //RA_FIRINGTRAP#Firing Trap# +4056,2254,5,2237,1,0,0,0,0,0,0,0,0 //RA_ICEBOUNDTRAP#Icebound Trap# +//Arch Bishop (non-trans) +4057,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill# +4057,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid# +4057,22,10,0,0,0,0,0,0,0,0,0,0 //AL_DP#Divine Protection# +4057,23,10,22,3,0,0,0,0,0,0,0,0 //AL_DEMONBANE#Demon Bane# +4057,24,1,0,0,0,0,0,0,0,0,0,0 //AL_RUWACH#Ruwach# +4057,25,1,27,4,0,0,0,0,0,0,0,0 //AL_PNEUMA#Pneuma# +4057,26,2,24,1,0,0,0,0,0,0,0,0 //AL_TELEPORT#Teleport# +4057,27,4,26,2,0,0,0,0,0,0,0,0 //AL_WARP#Warp Portal# +4057,28,10,0,0,0,0,0,0,0,0,0,0 //AL_HEAL#Heal# +4057,29,10,28,3,0,0,0,0,0,0,0,0 //AL_INCAGI#Increase AGI# +4057,30,10,29,1,0,0,0,0,0,0,0,0 //AL_DECAGI#Decrease AGI# +4057,31,1,0,0,0,0,0,0,0,0,0,0 //AL_HOLYWATER#Aqua Benedicta# +4057,32,10,23,3,0,0,0,0,0,0,0,0 //AL_CRUCIS#Signum Crusis# +4057,33,10,22,3,0,0,0,0,0,0,0,0 //AL_ANGELUS#Angelus# +4057,34,10,22,5,0,0,0,0,0,0,0,0 //AL_BLESSING#Blessing# +4057,35,1,28,2,0,0,0,0,0,0,0,0 //AL_CURE#Cure# +4057,156,1,0,0,0,0,0,0,0,0,0,0 //AL_HOLYLIGHT#Holy Light# +4057,9,10,0,0,0,0,0,0,0,0,0,0 //MG_SRECOVERY#Increase SP Recovery# +4057,12,10,68,4,70,3,0,0,0,0,0,0 //MG_SAFETYWALL#Safety Wall# +4057,54,4,72,1,9,4,0,0,0,0,0,0 //ALL_RESURRECTION#Resurrection# +4057,65,10,0,0,0,0,0,0,0,0,0,0 //PR_MACEMASTERY#Mace Mastery# +4057,66,5,0,0,0,0,0,0,0,0,0,0 //PR_IMPOSITIO#Impositio Manus# +4057,67,3,66,2,0,0,0,0,0,0,0,0 //PR_SUFFRAGIUM#Suffragium# +4057,68,5,31,1,66,3,0,0,0,0,0,0 //PR_ASPERSIO#Aspersio# +4057,69,5,75,3,68,5,0,0,0,0,0,0 //PR_BENEDICTIO#B.S Sacramenti# +4057,70,10,28,1,0,0,0,0,0,0,0,0 //PR_SANCTUARY#Sanctuary# +4057,71,4,0,0,0,0,0,0,0,0,0,0 //PR_SLOWPOISON#Slow Poison# +4057,72,1,0,0,0,0,0,0,0,0,0,0 //PR_STRECOVERY#Status Recovery# +4057,73,10,33,2,0,0,0,0,0,0,0,0 //PR_KYRIE#Kyrie Eleison# +4057,74,5,0,0,0,0,0,0,0,0,0,0 //PR_MAGNIFICAT#Magnificat# +4057,75,5,73,4,74,3,0,0,0,0,0,0 //PR_GLORIA#Gloria# +4057,76,10,24,1,0,0,0,0,0,0,0,0 //PR_LEXDIVINA#Lex Divina# +4057,77,10,54,1,76,3,0,0,0,0,0,0 //PR_TURNUNDEAD#Turn Undead# +4057,78,1,76,5,0,0,0,0,0,0,0,0 //PR_LEXAETERNA#Lex Aeterna# +4057,79,10,12,1,78,1,77,3,0,0,0,0 //PR_MAGNUS#Magnus Exorcismus# +4057,1014,1,0,0,0,0,0,0,0,0,0,0 //PR_REDEMPTIO#Redemptio# +4057,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby# +4057,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R# +4057,2038,5,77,1,0,0,0,0,0,0,0,0 //AB_JUDEX#Judex# +4057,2039,1,2041,3,0,0,0,0,0,0,0,0 //AB_ANCILLA#Ancilla# +4057,2040,10,79,1,2038,1,2039,1,0,0,0,0 //AB_ADORAMUS#Adoramus# +4057,2041,3,34,1,0,0,0,0,0,0,0,0 //AB_CLEMENTIA#Crementia# +4057,2042,3,29,1,0,0,0,0,0,0,0,0 //AB_CANTO#Canto Candidus# +4057,2043,3,28,1,0,0,0,0,0,0,0,0 //AB_CHEAL#Coluceo Heal# +4057,2044,5,2039,1,2051,1,0,0,0,0,0,0 //AB_EPICLESIS#Epiclesis# +4057,2045,10,73,1,0,0,0,0,0,0,0,0 //AB_PRAEFATIO#Praefatio# +4057,2046,10,2045,5,0,0,0,0,0,0,0,0 //AB_ORATIO#Oratio# +4057,2047,4,72,1,0,0,0,0,0,0,0,0 //AB_LAUDAAGNUS#Lauda Agnus# +4057,2048,4,2047,2,0,0,0,0,0,0,0,0 //AB_LAUDARAMUS#Lauda Ramus# +4057,2049,10,2044,1,2053,1,0,0,0,0,0,0 //AB_EUCHARISTICA#Eucharistica# +4057,2050,1,2043,3,0,0,0,0,0,0,0,0 //AB_RENOVATIO#Renovatio# +4057,2051,5,2050,1,0,0,0,0,0,0,0,0 //AB_HIGHNESSHEAL#Highness Heal# +4057,2052,5,2048,2,0,0,0,0,0,0,0,0 //AB_CLEARANCE#Clearance# +4057,2053,5,2046,5,2054,5,0,0,0,0,0,0 //AB_EXPIATIO#Expiatio# +4057,2054,10,68,1,0,0,0,0,0,0,0,0 //AB_DUPLELIGHT#Duple Light# +4057,2057,5,2052,1,0,0,0,0,0,0,0,0 //AB_SILENTIUM#Silentium# +4057,2515,5,2044,1,2053,1,0,0,0,0,0,0 //AB_SECRAMENT#Secrament# +//Mechanic (non-trans) +4058,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill# +4058,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid# +4058,36,10,0,0,0,0,0,0,0,0,0,0 //MC_INCCARRY#Enlarge Weight Limit# +4058,37,10,36,3,0,0,0,0,0,0,0,0 //MC_DISCOUNT#Discount# +4058,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge# +4058,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart# +4058,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal# +4058,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending# +4058,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite# +4058,153,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#Cart Revolution# +4058,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart# +4058,155,1,0,0,0,0,0,0,0,0,0,0 //MC_LOUD#Crazy Uproar# +4058,94,5,0,0,0,0,0,0,0,0,0,0 //BS_IRON#Iron Tempering# +4058,95,5,94,1,0,0,0,0,0,0,0,0 //BS_STEEL#Steel Tempering# +4058,96,5,94,1,0,0,0,0,0,0,0,0 //BS_ENCHANTEDSTONE#Enchanted Stone Craft# +4058,97,5,96,1,0,0,0,0,0,0,0,0 //BS_ORIDEOCON#Oridecon Research# +4058,98,3,0,0,0,0,0,0,0,0,0,0 //BS_DAGGER#Smith Dagger# +4058,99,3,98,1,0,0,0,0,0,0,0,0 //BS_SWORD#Smith Sword# +4058,100,3,99,1,0,0,0,0,0,0,0,0 //BS_TWOHANDSWORD#Smith Two-handed Sword# +4058,101,3,99,2,0,0,0,0,0,0,0,0 //BS_AXE#Smith Axe# +4058,102,3,103,1,0,0,0,0,0,0,0,0 //BS_MACE#Smith Mace# +4058,103,3,98,1,0,0,0,0,0,0,0,0 //BS_KNUCKLE#Smith Knucklebrace# +4058,104,3,98,2,0,0,0,0,0,0,0,0 //BS_SPEAR#Smith Spear# +4058,105,1,0,0,0,0,0,0,0,0,0,0 //BS_HILTBINDING#Hilt Binding# +4058,106,1,95,1,105,1,0,0,0,0,0,0 //BS_FINDINGORE#Ore Discovery# +4058,107,10,105,1,0,0,0,0,0,0,0,0 //BS_WEAPONRESEARCH#Weaponry Research# +4058,108,1,107,1,0,0,0,0,0,0,0,0 //BS_REPAIRWEAPON#Weapon Repair# +4058,109,5,0,0,0,0,0,0,0,0,0,0 //BS_SKINTEMPER#Skin Tempering# +4058,110,5,0,0,0,0,0,0,0,0,0,0 //BS_HAMMERFALL#Hammer Fall# +4058,111,5,110,2,0,0,0,0,0,0,0,0 //BS_ADRENALINE#Adrenaline Rush# +4058,112,5,107,2,111,2,0,0,0,0,0,0 //BS_WEAPONPERFECT#Weapon Perfection# +4058,113,5,111,3,0,0,0,0,0,0,0,0 //BS_OVERTHRUST#Power-Thrust# +4058,114,5,112,3,113,2,0,0,0,0,0,0 //BS_MAXIMIZE#Maximize Power# +4058,1012,1,0,0,0,0,0,0,0,0,0,0 //BS_UNFAIRLYTRICK#Unfair Trick# +4058,1013,1,0,0,0,0,0,0,0,0,0,0 //BS_GREED#Greed# +4058,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby# +4058,459,1,111,5,0,0,0,0,0,0,0,0 //BS_ADRENALINE2#Full Adrenaline Rush# +4058,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R# +4058,2255,5,0,0,0,0,0,0,0,0,0,0 //NC_MADOLICENCE#Mado License# +4058,2256,5,2255,1,0,0,0,0,0,0,0,0 //NC_BOOSTKNUCKLE#Boost Knuckle# +4058,2257,3,2256,2,0,0,0,0,0,0,0,0 //NC_PILEBUNKER#Pile Bunker# +4058,2258,3,2256,2,0,0,0,0,0,0,0,0 //NC_VULCANARM#Vulcan Arm# +4058,2259,3,2258,3,0,0,0,0,0,0,0,0 //NC_FLAMELAUNCHER#Flame Launcher# +4058,2260,3,2258,3,0,0,0,0,0,0,0,0 //NC_COLDSLOWER#Cold Slower# +4058,2261,3,2259,2,2260,2,0,0,0,0,0,0 //NC_ARMSCANNON#Arm Cannon# +4058,2262,3,2255,1,0,0,0,0,0,0,0,0 //NC_ACCELERATION#Acceleration# +4058,2263,1,2262,1,0,0,0,0,0,0,0,0 //NC_HOVERING#Hovering# +4058,2264,1,2263,1,0,0,0,0,0,0,0,0 //NC_F_SIDESLIDE#Front-Side Slide# +4058,2265,1,2263,1,0,0,0,0,0,0,0,0 //NC_B_SIDESLIDE#Back-Side Slide# +4058,2266,4,2255,4,0,0,0,0,0,0,0,0 //NC_MAINFRAME#Mainframe Restructure# +4058,2267,3,2266,2,0,0,0,0,0,0,0,0 //NC_SELFDESTRUCTION#Self Destruction# +4058,2268,4,2266,2,0,0,0,0,0,0,0,0 //NC_SHAPESHIFT#Shape Shift# +4058,2269,1,2267,2,0,0,0,0,0,0,0,0 //NC_EMERGENCYCOOL#Emergency Cool# +4058,2270,1,2268,2,0,0,0,0,0,0,0,0 //NC_INFRAREDSCAN#Infrared Scan# +4058,2271,3,2270,1,0,0,0,0,0,0,0,0 //NC_ANALYZE#Analyze# +4058,2272,3,2269,1,0,0,0,0,0,0,0,0 //NC_MAGNETICFIELD#Magnetic Field# +4058,2273,3,2272,2,0,0,0,0,0,0,0,0 //NC_NEUTRALBARRIER#Neutral Barrier# +4058,2274,3,2271,3,2273,2,0,0,0,0,0,0 //NC_STEALTHFIELD#Stealth Field# +4058,2275,5,2255,1,0,0,0,0,0,0,0,0 //NC_REPAIR#Repair# +4058,2276,10,0,0,0,0,0,0,0,0,0,0 //NC_TRAININGAXE#Axe Training# +4058,2277,5,0,0,0,0,0,0,0,0,0,0 //NC_RESEARCHFE#Research Fire/Earth# +4058,2278,5,2276,1,0,0,0,0,0,0,0,0 //NC_AXEBOOMERANG#Axe Boomerang# +4058,2279,5,2278,3,0,0,0,0,0,0,0,0 //NC_POWERSWING#Power Swing# +4058,2280,5,2276,1,0,0,0,0,0,0,0,0 //NC_AXETORNADO#Axe Tornado# +4058,2281,5,2277,2,0,0,0,0,0,0,0,0 //NC_SILVERSNIPER#FAW - Silver Sniper# +4058,2282,5,2277,2,0,0,0,0,0,0,0,0 //NC_MAGICDECOY#FAW - Magic Decoy# +4058,2283,1,2281,1,0,0,0,0,0,0,0,0 //NC_DISJOINT#FAW Removal# +4058,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store# +//Guillotine Cross (non-trans) +4059,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill# +4059,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid# +4059,48,10,0,0,0,0,0,0,0,0,0,0 //TF_DOUBLE#Double Attack# +4059,49,10,0,0,0,0,0,0,0,0,0,0 //TF_MISS#Improve Dodge# +4059,50,10,0,0,0,0,0,0,0,0,0,0 //TF_STEAL#Steal# +4059,51,10,50,5,0,0,0,0,0,0,0,0 //TF_HIDING#Hiding# +4059,52,10,0,0,0,0,0,0,0,0,0,0 //TF_POISON#Envenom# +4059,53,1,52,3,0,0,0,0,0,0,0,0 //TF_DETOXIFY#Detoxify# +4059,149,1,0,0,0,0,0,0,0,0,0,0 //TF_SPRINKLESAND#Throw Sand# +4059,150,1,0,0,0,0,0,0,0,0,0,0 //TF_BACKSLIDING#Back Sliding# +4059,151,1,0,0,0,0,0,0,0,0,0,0 //TF_PICKSTONE#Find Stone# +4059,152,1,0,0,0,0,0,0,0,0,0,0 //TF_THROWSTONE#Stone Fling# +4059,132,5,0,0,0,0,0,0,0,0,0,0 //AS_RIGHT#Righthand Mastery# +4059,133,5,132,2,0,0,0,0,0,0,0,0 //AS_LEFT#Lefthand Mastery# +4059,134,10,0,0,0,0,0,0,0,0,0,0 //AS_KATAR#Katar Mastery# +4059,135,10,51,2,0,0,0,0,0,0,0,0 //AS_CLOAKING#Cloaking# +4059,136,10,134,4,0,0,0,0,0,0,0,0 //AS_SONICBLOW#Sonic Blow# +4059,137,5,135,2,136,5,0,0,0,0,0,0 //AS_GRIMTOOTH#Grimtooth# +4059,138,10,52,1,0,0,0,0,0,0,0,0 //AS_ENCHANTPOISON#Enchant Poison# +4059,139,10,138,3,0,0,0,0,0,0,0,0 //AS_POISONREACT#Poison React# +4059,140,10,138,5,0,0,0,0,0,0,0,0 //AS_VENOMDUST#Venom Dust# +4059,141,10,139,5,140,5,0,0,0,0,0,0 //AS_SPLASHER#Venom Splasher# +4059,1003,1,0,0,0,0,0,0,0,0,0,0 //AS_SONICACCEL#Sonic Acceleration# +4059,1004,1,0,0,0,0,0,0,0,0,0,0 //AS_VENOMKNIFE#Throw Venom Knife# +4059,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby# +4059,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R# +4059,2021,5,138,3,0,0,0,0,0,0,0,0 //GC_VENOMIMPRESS#Venom Impress# +4059,2022,5,136,10,0,0,0,0,0,0,0,0 //GC_CROSSIMPACT#Cross Impact# +4059,2023,5,2022,3,0,0,0,0,0,0,0,0 //GC_DARKILLUSION#Dark Illusion# +4059,2024,10,0,0,0,0,0,0,0,0,0,0 //GC_RESEARCHNEWPOISON#Research New Poison# +4059,2025,1,2024,1,0,0,0,0,0,0,0,0 //GC_CREATENEWPOISON#Create New Poison# +4059,2026,1,2024,5,0,0,0,0,0,0,0,0 //GC_ANTIDOTE#Antidote# +4059,2027,5,2025,1,0,0,0,0,0,0,0,0 //GC_POISONINGWEAPON#Poisoning Weapon# +4059,2028,5,133,5,0,0,0,0,0,0,0,0 //GC_WEAPONBLOCKING#Weapon Blocking# +4059,2029,5,2028,1,0,0,0,0,0,0,0,0 //GC_COUNTERSLASH#Counter Slash# +4059,2030,5,2028,1,0,0,0,0,0,0,0,0 //GC_WEAPONCRUSH#Weapon Crush# +4059,2031,5,2027,3,2028,1,0,0,0,0,0,0 //GC_VENOMPRESSURE#Venom Pressure# +4059,2032,5,2027,5,2031,5,0,0,0,0,0,0 //GC_POISONSMOKE#Poison Smoke# +4059,2033,5,135,3,0,0,0,0,0,0,0,0 //GC_CLOAKINGEXCEED#Cloaking Exceed# +4059,2034,1,2023,5,2033,5,0,0,0,0,0,0 //GC_PHANTOMMENACE#Phantom Menace# +4059,2035,5,2034,1,0,0,0,0,0,0,0,0 //GC_HALLUCINATIONWALK#Hallucination Walk# +4059,2036,5,136,10,0,0,0,0,0,0,0,0 //GC_ROLLINGCUTTER#Rolling Cutter# +4059,2037,5,2036,1,0,0,0,0,0,0,0,0 //GC_CROSSRIPPERSLASHER#Cross Ripper Slasher# +//Rune Knight (Trans) +4060,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill# +4060,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid# +4060,2,10,0,0,0,0,0,0,0,0,0,0 //SM_SWORD#Sword Mastery# +4060,3,10,2,1,0,0,0,0,0,0,0,0 //SM_TWOHAND#Two-Handed Sword Mastery# +4060,4,10,0,0,0,0,0,0,0,0,0,0 //SM_RECOVERY#Increase HP Recovery# +4060,5,10,0,0,0,0,0,0,0,0,0,0 //SM_BASH#Bash# +4060,6,10,0,0,0,0,0,0,0,0,0,0 //SM_PROVOKE#Provoke# +4060,7,10,5,5,0,0,0,0,0,0,0,0 //SM_MAGNUM#Magnum Break# +4060,8,10,6,5,0,0,0,0,0,0,0,0 //SM_ENDURE#Endure# +4060,144,1,0,0,0,0,0,0,0,0,0,0 //SM_MOVINGRECOVERY#Moving HP-Recovery# +4060,145,1,0,0,0,0,0,0,0,0,0,0 //SM_FATALBLOW#Attack Weak Point# +4060,146,1,0,0,0,0,0,0,0,0,0,0 //SM_AUTOBERSERK#Auto Berserk# +4060,55,10,0,0,0,0,0,0,0,0,0,0 //KN_SPEARMASTERY#Spear Mastery# +4060,56,10,55,1,0,0,0,0,0,0,0,0 //KN_PIERCE#Pierce# +4060,57,10,63,1,58,3,0,0,0,0,0,0 //KN_BRANDISHSPEAR#Brandish Spear# +4060,58,10,56,5,0,0,0,0,0,0,0,0 //KN_SPEARSTAB#Spear Stab# +4060,59,5,56,3,0,0,0,0,0,0,0,0 //KN_SPEARBOOMERANG#Spear Boomerang# +4060,60,10,3,1,0,0,0,0,0,0,0,0 //KN_TWOHANDQUICKEN#Twohand Quicken# +4060,61,5,3,1,0,0,0,0,0,0,0,0 //KN_AUTOCOUNTER#Counter Attack# +4060,62,10,5,10,7,3,3,5,60,10,61,5//KN_BOWLINGBASH#Bowling Bash# +4060,63,1,8,1,0,0,0,0,0,0,0,0 //KN_RIDING#Peco Peco Riding# +4060,64,5,63,1,0,0,0,0,0,0,0,0 //KN_CAVALIERMASTERY#Cavalier Mastery# +4060,1001,1,0,0,0,0,0,0,0,0,0,0 //KN_CHARGEATK#Charge Attack# +4060,355,5,5,5,7,5,3,5,0,0,0,0 //LK_AURABLADE#Aura Blade# +4060,356,10,3,10,6,5,60,3,0,0,0,0 //LK_PARRYING#Parrying# +4060,357,5,4,1,55,5,63,1,0,0,0,0 //LK_CONCENTRATION#Concentration# +4060,358,1,4,10,6,5,8,3,0,0,0,0 //LK_TENSIONRELAX#Relax# +4060,359,1,0,0,0,0,0,0,0,0,0,0 //LK_BERSERK#Frenzy# //Extra column removed. Rune Knights dont require job level 50 to use Berserk. +4060,397,5,55,10,56,5,58,5,63,1,0,0 //LK_SPIRALPIERCE#Spiral Pierce# +4060,398,5,55,9,63,1,0,0,0,0,0,0 //LK_HEADCRUSH#Traumatic Blow# +4060,399,10,55,9,64,3,398,3,0,0,0,0 //LK_JOINTBEAT#Vital Strike# +4060,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby# +4060,495,1,60,10,0,0,0,0,0,0,0,0 //KN_ONEHAND#Onehand Quicken# +4060,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R# +4060,2001,5,2010,2,0,0,0,0,0,0,0,0 //RK_ENCHANTBLADE#Enchant Blade# +4060,2002,5,2001,3,0,0,0,0,0,0,0,0 //RK_SONICWAVE#Sonic Wave# +4060,2003,10,61,1,2001,2,0,0,0,0,0,0 //RK_DEATHBOUND#Death Bound# +4060,2004,10,2020,3,0,0,0,0,0,0,0,0 //RK_HUNDREDSPEAR#Hundred Spear# +4060,2005,5,2001,5,0,0,0,0,0,0,0,0 //RK_WINDCUTTER#Wind Cutter# +4060,2006,5,2002,2,2003,5,2005,3,0,0,0,0 //RK_IGNITIONBREAK#Ignition Break# +4060,2007,5,64,1,0,0,0,0,0,0,0,0 //RK_DRAGONTRAINING#Dragon Training# +4060,2008,10,2007,2,0,0,0,0,0,0,0,0 //RK_DRAGONBREATH#Dragon Breath# +4060,2009,5,2007,2,0,0,0,0,0,0,0,0 //RK_DRAGONHOWLING#Dragon Howling# +4060,2010,10,0,0,0,0,0,0,0,0,0,0 //RK_RUNEMASTERY#Rune Mastery# +4060,2020,5,57,2,0,0,0,0,0,0,0,0 //RK_PHANTOMTHRUST#Phantom Thrust# +//Warlock (Trans) +4061,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill# +4061,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid# +4061,9,10,0,0,0,0,0,0,0,0,0,0 //MG_SRECOVERY#Increase SP Recovery# +4061,10,1,0,0,0,0,0,0,0,0,0,0 //MG_SIGHT#Sight# +4061,11,10,0,0,0,0,0,0,0,0,0,0 //MG_NAPALMBEAT#Napalm Beat# +4061,12,10,11,7,13,5,0,0,0,0,0,0 //MG_SAFETYWALL#Safety Wall# +4061,13,10,11,4,0,0,0,0,0,0,0,0 //MG_SOULSTRIKE#Soul Strike# +4061,14,10,0,0,0,0,0,0,0,0,0,0 //MG_COLDBOLT#Cold Bolt# +4061,15,10,14,5,0,0,0,0,0,0,0,0 //MG_FROSTDIVER#Frost Diver# +4061,16,10,0,0,0,0,0,0,0,0,0,0 //MG_STONECURSE#Stone Curse# +4061,17,10,19,4,0,0,0,0,0,0,0,0 //MG_FIREBALL#Fire Ball# +4061,18,10,17,5,10,1,0,0,0,0,0,0 //MG_FIREWALL#Fire Wall# +4061,19,10,0,0,0,0,0,0,0,0,0,0 //MG_FIREBOLT#Fire Bolt# +4061,20,10,0,0,0,0,0,0,0,0,0,0 //MG_LIGHTNINGBOLT#Lightning Bolt# +4061,21,10,20,4,0,0,0,0,0,0,0,0 //MG_THUNDERSTORM#Thunderstorm# +4061,157,1,0,0,0,0,0,0,0,0,0,0 //MG_ENERGYCOAT#Energy Coat# +4061,80,10,18,1,0,0,0,0,0,0,0,0 //WZ_FIREPILLAR#Fire Pillar# +4061,81,10,20,1,10,1,0,0,0,0,0,0 //WZ_SIGHTRASHER#Sightrasher# +4061,83,10,81,2,21,1,0,0,0,0,0,0 //WZ_METEOR#Meteor Storm# +4061,84,10,11,1,20,1,0,0,0,0,0,0 //WZ_JUPITEL#Jupiter Thunder# +4061,85,10,21,1,84,5,0,0,0,0,0,0 //WZ_VERMILION#Lord of Vermilion# +4061,86,5,14,1,20,1,0,0,0,0,0,0 //WZ_WATERBALL#Water Ball# +4061,87,10,16,1,15,1,0,0,0,0,0,0 //WZ_ICEWALL#Ice Wall# +4061,88,10,87,1,0,0,0,0,0,0,0,0 //WZ_FROSTNOVA#Frost Nova# +4061,89,10,15,1,84,3,0,0,0,0,0,0 //WZ_STORMGUST#Storm Gust# +4061,90,5,16,1,0,0,0,0,0,0,0,0 //WZ_EARTHSPIKE#Earth Spike# +4061,91,5,90,3,0,0,0,0,0,0,0,0 //WZ_HEAVENDRIVE#Heaven's Drive# +4061,92,5,91,1,0,0,0,0,0,0,0,0 //WZ_QUAGMIRE#Quagmire# +4061,93,1,0,0,0,0,0,0,0,0,0,0 //WZ_ESTIMATION#Sense# +4061,1006,1,0,0,0,0,0,0,0,0,0,0 //WZ_SIGHTBLASTER#Sight Blaster# +4061,364,10,9,5,13,7,0,0,0,0,0,0 //HW_SOULDRAIN#Soul Drain# +4061,365,1,9,1,0,0,0,0,0,0,0,0 //HW_MAGICCRASHER#Stave Crasher# +4061,366,10,0,0,0,0,0,0,0,0,0,0 //HW_MAGICPOWER#Mystical Amplification# +4061,400,5,11,5,0,0,0,0,0,0,0,0 //HW_NAPALMVULCAN#Napalm Vulcan# +4061,483,1,93,1,87,1,0,0,0,0,0,0 //HW_GANBANTEIN#Ganbantein# +4061,484,5,365,1,366,10,92,1,0,0,0,0 //HW_GRAVITATION#Gravitation# +4061,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby# +4061,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R# +4061,2201,5,2202,3,0,0,0,0,0,0,0,0 //WL_WHITEIMPRISON#White Imprison# +4061,2202,5,2210,1,0,0,0,0,0,0,0,0 //WL_SOULEXPANSION#Soul Expansion# +4061,2203,5,2224,1,0,0,0,0,0,0,0,0 //WL_FROSTMISTY#Frosty Misty# +4061,2204,5,2203,2,0,0,0,0,0,0,0,0 //WL_JACKFROST#Jack Frost# +4061,2205,5,92,1,0,0,0,0,0,0,0,0 //WL_MARSHOFABYSS#Marsh of Abyss# +4061,2206,5,2201,1,2209,1,2230,2,0,0,0,0 //WL_RECOGNIZEDSPELL#Recognized Spell# +4061,2207,5,2229,1,0,0,0,0,0,0,0,0 //WL_SIENNAEXECRATE#Sienna Execrate# +4061,2208,3,0,0,0,0,0,0,0,0,0,0 //WL_RADIUS#Radius# +4061,2209,5,2210,1,0,0,0,0,0,0,0,0 //WL_STASIS#Stasis# +4061,2210,5,2208,1,0,0,0,0,0,0,0,0 //WL_DRAINLIFE#Drain Life# +4061,2211,5,2222,1,0,0,0,0,0,0,0,0 //WL_CRIMSONROCK#Crimson Rock# +4061,2212,5,2211,2,0,0,0,0,0,0,0,0 //WL_HELLINFERNO#Hell Inferno# +4061,2213,5,2212,3,0,0,0,0,0,0,0,0 //WL_COMET#Comet# +4061,2214,5,2223,1,0,0,0,0,0,0,0,0 //WL_CHAINLIGHTNING#Chain Lightning# +4061,2216,5,2207,2,0,0,0,0,0,0,0,0 //WL_EARTHSTRAIN#Earth Strain# +4061,2217,5,2204,5,2212,5,2214,5,2216,5,0,0 //WL_TETRAVORTEX#Tetra Vortex# +4061,2222,5,83,1,0,0,0,0,0,0,0,0 //WL_SUMMONFB#Summon Fire Ball# +4061,2223,5,85,1,0,0,0,0,0,0,0,0 //WL_SUMMONBL#Summon Lightning Ball# +4061,2224,5,89,1,0,0,0,0,0,0,0,0 //WL_SUMMONWB#Summon Water Ball# +4061,2229,5,91,1,0,0,0,0,0,0,0,0 //WL_SUMMONSTONE#Summon Stone# +4061,2230,2,0,0,0,0,0,0,0,0,0,0 //WL_RELEASE#Release# +4061,2231,1,0,0,0,0,0,0,0,0,0,0 //WL_READING_SB#Reading Spellbook# +4061,2232,5,0,0,0,0,0,0,0,0,0,0 //WL_FREEZE_SP#Freeze Spell# +//Ranger (Trans) +4062,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill# +4062,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid# +4062,43,10,0,0,0,0,0,0,0,0,0,0 //AC_OWL#Owl's Eye# +4062,44,10,43,3,0,0,0,0,0,0,0,0 //AC_VULTURE#Vulture's Eye# +4062,45,10,44,1,0,0,0,0,0,0,0,0 //AC_CONCENTRATION#Improve Concentration# +4062,46,10,0,0,0,0,0,0,0,0,0,0 //AC_DOUBLE#Double Strafe# +4062,47,10,46,5,0,0,0,0,0,0,0,0 //AC_SHOWER#Arrow Shower# +4062,147,1,0,0,0,0,0,0,0,0,0,0 //AC_MAKINGARROW#Arrow Crafting# +4062,148,1,0,0,0,0,0,0,0,0,0,0 //AC_CHARGEARROW#Arrow Repel# +4062,115,5,0,0,0,0,0,0,0,0,0,0 //HT_SKIDTRAP#Skid Trap# +4062,116,5,0,0,0,0,0,0,0,0,0,0 //HT_LANDMINE#Land Mine# +4062,117,5,115,1,0,0,0,0,0,0,0,0 //HT_ANKLESNARE#Ankle Snare# +4062,118,5,117,1,0,0,0,0,0,0,0,0 //HT_SHOCKWAVE#Shockwave Trap# +4062,119,5,120,1,0,0,0,0,0,0,0,0 //HT_SANDMAN#Sandman# +4062,120,5,115,1,0,0,0,0,0,0,0,0 //HT_FLASHER#Flasher# +4062,121,5,120,1,0,0,0,0,0,0,0,0 //HT_FREEZINGTRAP#Freezing Trap# +4062,122,5,116,1,119,1,121,1,0,0,0,0 //HT_BLASTMINE#Blast Mine# +4062,123,5,118,1,122,1,0,0,0,0,0,0 //HT_CLAYMORETRAP#Claymore Trap# +4062,124,1,116,1,0,0,0,0,0,0,0,0 //HT_REMOVETRAP#Remove Trap# +4062,125,1,118,1,124,1,0,0,0,0,0,0 //HT_TALKIEBOX#Talkie Box# +4062,126,10,0,0,0,0,0,0,0,0,0,0 //HT_BEASTBANE#Beast Bane# +4062,127,1,126,1,0,0,0,0,0,0,0,0 //HT_FALCON#Falconry Mastery# +4062,128,10,129,5,0,0,0,0,0,0,0,0 //HT_STEELCROW#Steel Crow# +4062,129,5,127,1,0,0,0,0,0,0,0,0 //HT_BLITZBEAT#Blitz Beat# +4062,130,4,45,1,127,1,0,0,0,0,0,0 //HT_DETECTING#Detect# +4062,131,5,124,1,127,1,0,0,0,0,0,0 //HT_SPRINGTRAP#Spring Trap# +4062,1009,1,0,0,0,0,0,0,0,0,0,0 //HT_PHANTASMIC#Phantasmic Arrow# +4062,380,10,43,10,44,10,45,10,127,1,0,0 //SN_SIGHT#Falcon Eyes# +4062,381,5,128,3,44,5,129,5,127,1,0,0 //SN_FALCONASSAULT#Falcon Assault# +4062,382,5,45,10,46,5,0,0,0,0,0,0 //SN_SHARPSHOOTING#Focused Arrow Strike# +4062,383,10,45,9,0,0,0,0,0,0,0,0 //SN_WINDWALK#Wind Walker# +4062,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby# +4062,499,1,46,10,0,0,0,0,0,0,0,0 //HT_POWER#Beast Strafing# +4062,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R# +4062,2233,10,2236,5,0,0,0,0,0,0,0,0 //RA_ARROWSTORM#Arrow Storm# +4062,2234,5,2233,5,2247,1,0,0,0,0,0,0 //RA_FEARBREEZE#Fear Breeze# +4062,2235,10,0,0,0,0,0,0,0,0,0,0 //RA_RANGERMAIN#Ranger Main# +4062,2236,10,117,5,0,0,0,0,0,0,0,0 //RA_AIMEDBOLT#Aimed Bolt# +4062,2237,1,2239,3,0,0,0,0,0,0,0,0 //RA_DETONATOR#Detonator# +4062,2238,5,118,5,0,0,0,0,0,0,0,0 //RA_ELECTRICSHOCKER#Electric Shocker# +4062,2239,5,2248,3,0,0,0,0,0,0,0,0 //RA_CLUSTERBOMB#Cluster Bomb# +4062,2240,1,0,0,0,0,0,0,0,0,0,0 //RA_WUGMASTERY#Warg Mastery# +4062,2241,3,2240,1,0,0,0,0,0,0,0,0 //RA_WUGRIDER#Warg Rider# +4062,2242,1,2241,1,0,0,0,0,0,0,0,0 //RA_WUGDASH#Warg Dash# +4062,2243,5,2245,1,0,0,0,0,0,0,0,0 //RA_WUGSTRIKE#Warg Strike# +4062,2244,5,2240,1,0,0,0,0,0,0,0,0 //RA_WUGBITE#Warg Bite# +4062,2245,10,2240,1,0,0,0,0,0,0,0,0 //RA_TOOTHOFWUG#Tooth Of Warg# +4062,2246,5,2245,3,0,0,0,0,0,0,0,0 //RA_SENSITIVEKEEN#Sensitive Keen# +4062,2247,5,2235,1,0,0,0,0,0,0,0,0 //RA_CAMOUFLAGE#Camouflage# +4062,2248,5,123,1,124,1,0,0,0,0,0,0 //RA_RESEARCHTRAP#Research Trap# +4062,2249,1,2248,1,0,0,0,0,0,0,0,0 //RA_MAGENTATRAP#Magenta Trap# +4062,2250,1,2248,1,0,0,0,0,0,0,0,0 //RA_COBALTTRAP#Cobalt Trap# +4062,2251,1,2248,1,0,0,0,0,0,0,0,0 //RA_MAIZETRAP#Maize Trap# +4062,2252,1,2248,1,0,0,0,0,0,0,0,0 //RA_VERDURETRAP#Verdure Trap# +4062,2253,5,2237,1,0,0,0,0,0,0,0,0 //RA_FIRINGTRAP#Firing Trap# +4062,2254,5,2237,1,0,0,0,0,0,0,0,0 //RA_ICEBOUNDTRAP#Icebound Trap# +//Arch Bishop (Trans) +4063,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill# +4063,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid# +4063,22,10,0,0,0,0,0,0,0,0,0,0 //AL_DP#Divine Protection# +4063,23,10,22,3,0,0,0,0,0,0,0,0 //AL_DEMONBANE#Demon Bane# +4063,24,1,0,0,0,0,0,0,0,0,0,0 //AL_RUWACH#Ruwach# +4063,25,1,27,4,0,0,0,0,0,0,0,0 //AL_PNEUMA#Pneuma# +4063,26,2,24,1,0,0,0,0,0,0,0,0 //AL_TELEPORT#Teleport# +4063,27,4,26,2,0,0,0,0,0,0,0,0 //AL_WARP#Warp Portal# +4063,28,10,0,0,0,0,0,0,0,0,0,0 //AL_HEAL#Heal# +4063,29,10,28,3,0,0,0,0,0,0,0,0 //AL_INCAGI#Increase AGI# +4063,30,10,29,1,0,0,0,0,0,0,0,0 //AL_DECAGI#Decrease AGI# +4063,31,1,0,0,0,0,0,0,0,0,0,0 //AL_HOLYWATER#Aqua Benedicta# +4063,32,10,23,3,0,0,0,0,0,0,0,0 //AL_CRUCIS#Signum Crusis# +4063,33,10,22,3,0,0,0,0,0,0,0,0 //AL_ANGELUS#Angelus# +4063,34,10,22,5,0,0,0,0,0,0,0,0 //AL_BLESSING#Blessing# +4063,35,1,28,2,0,0,0,0,0,0,0,0 //AL_CURE#Cure# +4063,156,1,0,0,0,0,0,0,0,0,0,0 //AL_HOLYLIGHT#Holy Light# +4063,9,10,0,0,0,0,0,0,0,0,0,0 //MG_SRECOVERY#Increase SP Recovery# +4063,12,10,68,4,70,3,0,0,0,0,0,0 //MG_SAFETYWALL#Safety Wall# +4063,54,4,72,1,9,4,0,0,0,0,0,0 //ALL_RESURRECTION#Resurrection# +4063,65,10,0,0,0,0,0,0,0,0,0,0 //PR_MACEMASTERY#Mace Mastery# +4063,66,5,0,0,0,0,0,0,0,0,0,0 //PR_IMPOSITIO#Impositio Manus# +4063,67,3,66,2,0,0,0,0,0,0,0,0 //PR_SUFFRAGIUM#Suffragium# +4063,68,5,31,1,66,3,0,0,0,0,0,0 //PR_ASPERSIO#Aspersio# +4063,69,5,75,3,68,5,0,0,0,0,0,0 //PR_BENEDICTIO#B.S Sacramenti# +4063,70,10,28,1,0,0,0,0,0,0,0,0 //PR_SANCTUARY#Sanctuary# +4063,71,4,72,1,0,0,0,0,0,0,0,0 //PR_SLOWPOISON#Slow Poison# +4063,72,1,0,0,0,0,0,0,0,0,0,0 //PR_STRECOVERY#Status Recovery# +4063,73,10,33,2,0,0,0,0,0,0,0,0 //PR_KYRIE#Kyrie Eleison# +4063,74,5,0,0,0,0,0,0,0,0,0,0 //PR_MAGNIFICAT#Magnificat# +4063,75,5,73,4,74,3,0,0,0,0,0,0 //PR_GLORIA#Gloria# +4063,76,10,24,1,0,0,0,0,0,0,0,0 //PR_LEXDIVINA#Lex Divina# +4063,77,10,54,1,76,3,0,0,0,0,0,0 //PR_TURNUNDEAD#Turn Undead# +4063,78,1,76,5,0,0,0,0,0,0,0,0 //PR_LEXAETERNA#Lex Aeterna# +4063,79,10,12,1,78,1,77,3,0,0,0,0 //PR_MAGNUS#Magnus Exorcismus# +4063,1014,1,0,0,0,0,0,0,0,0,0,0 //PR_REDEMPTIO#Redemptio# +4063,361,5,33,1,9,3,66,3,0,0,0,0 //HP_ASSUMPTIO#Assumptio# +4063,362,5,75,2,9,1,73,3,0,0,0,0 //HP_BASILICA#Basilica# +4063,363,10,68,3,9,5,76,5,0,0,0,0 //HP_MEDITATIO#Meditatio# +4063,481,5,65,10,23,10,0,0,0,0,0,0 //HP_MANARECHARGE#Mana Recharge# +4063,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby# +4063,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R# +4063,2038,5,77,1,0,0,0,0,0,0,0,0 //AB_JUDEX#Judex# +4063,2039,1,2041,3,0,0,0,0,0,0,0,0 //AB_ANCILLA#Ancilla# +4063,2040,10,79,1,2038,1,2039,1,0,0,0,0 //AB_ADORAMUS#Adoramus# +4063,2041,3,34,1,0,0,0,0,0,0,0,0 //AB_CLEMENTIA#Crementia# +4063,2042,3,29,1,0,0,0,0,0,0,0,0 //AB_CANTO#Canto Candidus# +4063,2043,3,28,1,0,0,0,0,0,0,0,0 //AB_CHEAL#Coluceo Heal# +4063,2044,5,2039,1,2051,1,0,0,0,0,0,0 //AB_EPICLESIS#Epiclesis# +4063,2045,10,73,1,0,0,0,0,0,0,0,0 //AB_PRAEFATIO#Praefatio# +4063,2046,10,2045,5,0,0,0,0,0,0,0,0 //AB_ORATIO#Oratio# +4063,2047,4,72,1,0,0,0,0,0,0,0,0 //AB_LAUDAAGNUS#Lauda Agnus# +4063,2048,4,2047,2,0,0,0,0,0,0,0,0 //AB_LAUDARAMUS#Lauda Ramus# +4063,2049,10,2044,1,2053,1,0,0,0,0,0,0 //AB_EUCHARISTICA#Eucharistica# +4063,2050,1,2043,3,0,0,0,0,0,0,0,0 //AB_RENOVATIO#Renovatio# +4063,2051,5,2050,1,0,0,0,0,0,0,0,0 //AB_HIGHNESSHEAL#Highness Heal# +4063,2052,5,2048,2,0,0,0,0,0,0,0,0 //AB_CLEARANCE#Clearance# +4063,2053,5,2046,5,2054,5,0,0,0,0,0,0 //AB_EXPIATIO#Expiatio# +4063,2054,10,68,1,0,0,0,0,0,0,0,0 //AB_DUPLELIGHT#Duple Light# +4063,2057,5,2052,1,0,0,0,0,0,0,0,0 //AB_SILENTIUM#Silentium# +4063,2515,5,2044,1,2053,1,0,0,0,0,0,0 //AB_SECRAMENT#Secrament# +//Mechanic (Trans) +4064,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill# +4064,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid# +4064,36,10,0,0,0,0,0,0,0,0,0,0 //MC_INCCARRY#Enlarge Weight Limit# +4064,37,10,36,3,0,0,0,0,0,0,0,0 //MC_DISCOUNT#Discount# +4064,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge# +4064,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart# +4064,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal# +4064,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending# +4064,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite# +4064,153,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#Cart Revolution# +4064,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart# +4064,155,1,0,0,0,0,0,0,0,0,0,0 //MC_LOUD#Crazy Uproar# +4064,94,5,0,0,0,0,0,0,0,0,0,0 //BS_IRON#Iron Tempering# +4064,95,5,94,1,0,0,0,0,0,0,0,0 //BS_STEEL#Steel Tempering# +4064,96,5,94,1,0,0,0,0,0,0,0,0 //BS_ENCHANTEDSTONE#Enchanted Stone Craft# +4064,97,5,96,1,0,0,0,0,0,0,0,0 //BS_ORIDEOCON#Oridecon Research# +4064,98,3,0,0,0,0,0,0,0,0,0,0 //BS_DAGGER#Smith Dagger# +4064,99,3,98,1,0,0,0,0,0,0,0,0 //BS_SWORD#Smith Sword# +4064,100,3,99,1,0,0,0,0,0,0,0,0 //BS_TWOHANDSWORD#Smith Two-handed Sword# +4064,101,3,99,2,0,0,0,0,0,0,0,0 //BS_AXE#Smith Axe# +4064,102,3,103,1,0,0,0,0,0,0,0,0 //BS_MACE#Smith Mace# +4064,103,3,98,1,0,0,0,0,0,0,0,0 //BS_KNUCKLE#Smith Knucklebrace# +4064,104,3,98,2,0,0,0,0,0,0,0,0 //BS_SPEAR#Smith Spear# +4064,105,1,0,0,0,0,0,0,0,0,0,0 //BS_HILTBINDING#Hilt Binding# +4064,106,1,95,1,105,1,0,0,0,0,0,0 //BS_FINDINGORE#Ore Discovery# +4064,107,10,105,1,0,0,0,0,0,0,0,0 //BS_WEAPONRESEARCH#Weaponry Research# +4064,108,1,107,1,0,0,0,0,0,0,0,0 //BS_REPAIRWEAPON#Weapon Repair# +4064,109,5,0,0,0,0,0,0,0,0,0,0 //BS_SKINTEMPER#Skin Tempering# +4064,110,5,0,0,0,0,0,0,0,0,0,0 //BS_HAMMERFALL#Hammer Fall# +4064,111,5,110,2,0,0,0,0,0,0,0,0 //BS_ADRENALINE#Adrenaline Rush# +4064,112,5,107,2,111,2,0,0,0,0,0,0 //BS_WEAPONPERFECT#Weapon Perfection# +4064,113,5,111,3,0,0,0,0,0,0,0,0 //BS_OVERTHRUST#Power-Thrust# +4064,114,5,112,3,113,2,0,0,0,0,0,0 //BS_MAXIMIZE#Maximize Power# +4064,1012,1,0,0,0,0,0,0,0,0,0,0 //BS_UNFAIRLYTRICK#Unfair Trick# +4064,1013,1,0,0,0,0,0,0,0,0,0,0 //BS_GREED#Greed# +4064,384,10,109,3,105,1,107,5,113,3,0,0 //WS_MELTDOWN#Shattering Strike# +4064,387,1,39,5,153,1,154,1,105,1,0,0 //WS_CARTBOOST#Cart Boost# +4064,477,10,107,10,0,0,0,0,0,0,0,0 //WS_WEAPONREFINE#Upgrade Weapon# +4064,485,10,42,10,110,5,387,1,0,0,0,0 //WS_CARTTERMINATION#Cart Termination# +4064,486,5,113,5,0,0,0,0,0,0,0,0 //WS_OVERTHRUSTMAX#Maximum Power Thrust# +4064,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby# +4064,459,1,111,5,0,0,0,0,0,0,0,0 //BS_ADRENALINE2#Full Adrenaline Rush# +4064,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R# +4064,2255,5,0,0,0,0,0,0,0,0,0,0 //NC_MADOLICENCE#Mado License# +4064,2256,5,2255,1,0,0,0,0,0,0,0,0 //NC_BOOSTKNUCKLE#Boost Knuckle# +4064,2257,3,2256,2,0,0,0,0,0,0,0,0 //NC_PILEBUNKER#Pile Bunker# +4064,2258,3,2256,2,0,0,0,0,0,0,0,0 //NC_VULCANARM#Vulcan Arm# +4064,2259,3,2258,3,0,0,0,0,0,0,0,0 //NC_FLAMELAUNCHER#Flame Launcher# +4064,2260,3,2258,3,0,0,0,0,0,0,0,0 //NC_COLDSLOWER#Cold Slower# +4064,2261,3,2259,2,2260,2,0,0,0,0,0,0 //NC_ARMSCANNON#Arm Cannon# +4064,2262,3,2255,1,0,0,0,0,0,0,0,0 //NC_ACCELERATION#Acceleration# +4064,2263,1,2262,1,0,0,0,0,0,0,0,0 //NC_HOVERING#Hovering# +4064,2264,1,2263,1,0,0,0,0,0,0,0,0 //NC_F_SIDESLIDE#Front-Side Slide# +4064,2265,1,2263,1,0,0,0,0,0,0,0,0 //NC_B_SIDESLIDE#Back-Side Slide# +4064,2266,4,2255,4,0,0,0,0,0,0,0,0 //NC_MAINFRAME#Mainframe Restructure# +4064,2267,3,2266,2,0,0,0,0,0,0,0,0 //NC_SELFDESTRUCTION#Self Destruction# +4064,2268,4,2266,2,0,0,0,0,0,0,0,0 //NC_SHAPESHIFT#Shape Shift# +4064,2269,1,2267,2,0,0,0,0,0,0,0,0 //NC_EMERGENCYCOOL#Emergency Cool# +4064,2270,1,2268,2,0,0,0,0,0,0,0,0 //NC_INFRAREDSCAN#Infrared Scan# +4064,2271,3,2270,1,0,0,0,0,0,0,0,0 //NC_ANALYZE#Analyze# +4064,2272,3,2269,1,0,0,0,0,0,0,0,0 //NC_MAGNETICFIELD#Magnetic Field# +4064,2273,3,2272,2,0,0,0,0,0,0,0,0 //NC_NEUTRALBARRIER#Neutral Barrier# +4064,2274,3,2271,3,2273,2,0,0,0,0,0,0 //NC_STEALTHFIELD#Stealth Field# +4064,2275,5,2255,1,0,0,0,0,0,0,0,0 //NC_REPAIR#Repair# +4064,2276,10,0,0,0,0,0,0,0,0,0,0 //NC_TRAININGAXE#Axe Training# +4064,2277,5,0,0,0,0,0,0,0,0,0,0 //NC_RESEARCHFE#Research Fire/Earth# +4064,2278,5,2276,1,0,0,0,0,0,0,0,0 //NC_AXEBOOMERANG#Axe Boomerang# +4064,2279,5,2278,3,0,0,0,0,0,0,0,0 //NC_POWERSWING#Power Swing# +4064,2280,5,2276,1,0,0,0,0,0,0,0,0 //NC_AXETORNADO#Axe Tornado# +4064,2281,5,2277,2,0,0,0,0,0,0,0,0 //NC_SILVERSNIPER#FAW - Silver Sniper# +4064,2282,5,2277,2,0,0,0,0,0,0,0,0 //NC_MAGICDECOY#FAW - Magic Decoy# +4064,2283,1,2281,1,0,0,0,0,0,0,0,0 //NC_DISJOINT#FAW Removal# +4064,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store# +//Guillotine Cross (Trans) +4065,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill# +4065,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid# +4065,48,10,0,0,0,0,0,0,0,0,0,0 //TF_DOUBLE#Double Attack# +4065,49,10,0,0,0,0,0,0,0,0,0,0 //TF_MISS#Improve Dodge# +4065,50,10,0,0,0,0,0,0,0,0,0,0 //TF_STEAL#Steal# +4065,51,10,50,5,0,0,0,0,0,0,0,0 //TF_HIDING#Hiding# +4065,52,10,0,0,0,0,0,0,0,0,0,0 //TF_POISON#Envenom# +4065,53,1,52,3,0,0,0,0,0,0,0,0 //TF_DETOXIFY#Detoxify# +4065,149,1,0,0,0,0,0,0,0,0,0,0 //TF_SPRINKLESAND#Throw Sand# +4065,150,1,0,0,0,0,0,0,0,0,0,0 //TF_BACKSLIDING#Back Sliding# +4065,151,1,0,0,0,0,0,0,0,0,0,0 //TF_PICKSTONE#Find Stone# +4065,152,1,0,0,0,0,0,0,0,0,0,0 //TF_THROWSTONE#Stone Fling# +4065,132,5,0,0,0,0,0,0,0,0,0,0 //AS_RIGHT#Righthand Mastery# +4065,133,5,132,2,0,0,0,0,0,0,0,0 //AS_LEFT#Lefthand Mastery# +4065,134,10,0,0,0,0,0,0,0,0,0,0 //AS_KATAR#Katar Mastery# +4065,135,10,51,2,0,0,0,0,0,0,0,0 //AS_CLOAKING#Cloaking# +4065,136,10,134,4,0,0,0,0,0,0,0,0 //AS_SONICBLOW#Sonic Blow# +4065,137,5,135,2,136,5,0,0,0,0,0,0 //AS_GRIMTOOTH#Grimtooth# +4065,138,10,52,1,0,0,0,0,0,0,0,0 //AS_ENCHANTPOISON#Enchant Poison# +4065,139,10,138,3,0,0,0,0,0,0,0,0 //AS_POISONREACT#Poison React# +4065,140,10,138,5,0,0,0,0,0,0,0,0 //AS_VENOMDUST#Venom Dust# +4065,141,10,139,5,140,5,0,0,0,0,0,0 //AS_SPLASHER#Venom Splasher# +4065,1003,1,0,0,0,0,0,0,0,0,0,0 //AS_SONICACCEL#Sonic Acceleration# +4065,1004,1,0,0,0,0,0,0,0,0,0,0 //AS_VENOMKNIFE#Throw Venom Knife# +4065,376,5,48,5,134,7,0,0,0,0,0,0 //ASC_KATAR#Advanced Katar Mastery# +4065,378,5,407,1,0,0,0,0,0,0,0,0 //ASC_EDP#Deadly Poison Enchantment# +4065,379,10,48,5,135,3,138,6,52,5,0,0 //ASC_BREAKER#Soul Destroyer# +4065,406,10,132,3,134,5,136,5,379,1,0,0 //ASC_METEORASSAULT#Meteor Assault# +4065,407,1,52,10,53,1,138,5,0,0,0,0 //ASC_CDP#Create Deadly Poison# +4065,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby# +4065,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R# +4065,2021,5,138,3,0,0,0,0,0,0,0,0 //GC_VENOMIMPRESS#Venom Impress# +4065,2022,5,136,10,0,0,0,0,0,0,0,0 //GC_CROSSIMPACT#Cross Impact# +4065,2023,5,2022,3,0,0,0,0,0,0,0,0 //GC_DARKILLUSION#Dark Illusion# +4065,2024,10,0,0,0,0,0,0,0,0,0,0 //GC_RESEARCHNEWPOISON#Research New Poison# +4065,2025,1,2024,1,0,0,0,0,0,0,0,0 //GC_CREATENEWPOISON#Create New Poison# +4065,2026,1,2024,5,0,0,0,0,0,0,0,0 //GC_ANTIDOTE#Antidote# +4065,2027,5,2025,1,0,0,0,0,0,0,0,0 //GC_POISONINGWEAPON#Poisoning Weapon# +4065,2028,5,133,5,0,0,0,0,0,0,0,0 //GC_WEAPONBLOCKING#Weapon Blocking# +4065,2029,5,2028,1,0,0,0,0,0,0,0,0 //GC_COUNTERSLASH#Counter Slash# +4065,2030,5,2028,1,0,0,0,0,0,0,0,0 //GC_WEAPONCRUSH#Weapon Crush# +4065,2031,5,2027,3,2028,1,0,0,0,0,0,0 //GC_VENOMPRESSURE#Venom Pressure# +4065,2032,5,2027,5,2031,5,0,0,0,0,0,0 //GC_POISONSMOKE#Poison Smoke# +4065,2033,5,135,3,0,0,0,0,0,0,0,0 //GC_CLOAKINGEXCEED#Cloaking Exceed# +4065,2034,1,2023,5,2033,5,0,0,0,0,0,0 //GC_PHANTOMMENACE#Phantom Menace# +4065,2035,5,2034,1,0,0,0,0,0,0,0,0 //GC_HALLUCINATIONWALK#Hallucination Walk# +4065,2036,5,136,10,0,0,0,0,0,0,0,0 //GC_ROLLINGCUTTER#Rolling Cutter# +4065,2037,5,2036,1,0,0,0,0,0,0,0,0 //GC_CROSSRIPPERSLASHER#Cross Ripper Slasher#
\ No newline at end of file diff --git a/db/skill_unit_db.txt b/db/skill_unit_db.txt index 244f56ab0..45ecbc767 100644 --- a/db/skill_unit_db.txt +++ b/db/skill_unit_db.txt @@ -33,6 +33,7 @@ 70,0x83, , -1, 1,1000,all, 0x018 //PR_SANCTUARY 79,0x84, , -1, 1,3000,enemy, 0x018 //PR_MAGNUS 80,0x87,0x88, 0, 1,2000,enemy, 0x006 //WZ_FIREPILLAR + 82,0x86, , 0, 3,1000,enemy, 0x018 //WZ_FIREIVY 83,0x86, , 0, 3,1000,enemy, 0x010 //WZ_METEOR 85,0x86, , 0, 6:6:6:6:6:6:6:6:6:6:8,1250,enemy,0x018 //WZ_VERMILION 87,0x8d, , -1, 0, -1,all, 0x010 //WZ_ICEWALL @@ -95,6 +96,26 @@ 535,0xbd, , -1, 0, 20,enemy, 0x010 //NJ_KAENSIN 538,0xbb, , 1:1:1:2:2:2:3:3:3:4,0,-1,all,0x010 //NJ_SUITON 670,0xc7, , 1, 4:7:10:13:16:19:22:25:28:31,1000,all,0x008 //NPC_EVILLAND + +2044,0xca, , 0, 3,1000,all, 0x018 //AB_EPICLESIS + +2032,0xe1, , 2, 0,1000,enemy, 0x018 //GC_POISONSMOKE + +2214,0x86, , 0, 5, 100,enemy, 0x080 //WL_CHAINLIGHTNING +2216,0xcb, , -1, 2,2000,enemy, 0x018 //WL_EARTHSTRAIN + +2238,0xd8, , 0, 1,1000,enemy, 0x006 //RA_ELECTRICSHOCKER +2239,0xd9, , 0, 1,1000,enemy, 0x006 //RA_CLUSTERBOMB +2249,0xd2, , 0, 1,1000,enemy, 0x026 //RA_MAGENTATRAP +2250,0xd3, , 0, 1,1000,enemy, 0x026 //RA_COBALTTRAP +2251,0xd4, , 0, 1,1000,enemy, 0x026 //RA_MAIZETRAP +2252,0xd5, , 0, 1,1000,enemy, 0x026 //RA_VERDURETRAP +2253,0xd6, , 0, 1,1000,enemy, 0x006 //RA_FIRINGTRAP +2254,0xd7, , 0, 1,1000,enemy, 0x006 //RA_ICEBOUNDTRAP + +2273,0xe2, , 1, 0, 500,friend,0x000 //NC_NEUTRALBARRIER +2274,0xe3, , 1, 0, 500,all, 0x000 //NC_STEALTHFIELD + 8208,0x86, , 0, 2,1000,enemy, 0x080 //MA_SHOWER 8209,0x90, , 0, 1,1000,enemy, 0x006 //MA_SKIDTRAP 8210,0x93, , 0, 0,1000,enemy, 0x006 //MA_LANDMINE diff --git a/db/spellbook_db.txt b/db/spellbook_db.txt new file mode 100644 index 000000000..ee3a0c323 --- /dev/null +++ b/db/spellbook_db.txt @@ -0,0 +1,29 @@ +//============================================================
+// Preserve points database for Reading Spellbook. [LimitLine/3CeAm]
+// Structure:
+// SkillID,PreservePoints,Required Book
+//============================================================
+//To add more entries skill.h MAX_SKILL_SPELLBOOK_DB must be increased
+
+//Mage
+14,7,6190 //Cold Bolt
+19,7,6189 //Fire Bolt
+20,7,6191 //Lightning Bolt
+21,9,6197 //Thunder Storm
+
+//Wizard
+83,10,6194 //Meteor Storm
+84,9,6198 //Jupitel Thunder
+85,10,6193 //Lord of Vermillion
+86,9,6199 //Water Ball
+89,10,6192 //Storm Gust
+90,8,6201 //Earth Spike
+91,9,6200 //Heaven's Drive
+
+//Warlock
+2210,8,6205 //Drain Life
+2211,12,6204 //Crimson Rock
+2213,22,6195 //Comet
+2214,12,6203 //Chain Lightning
+2216,12,6202 //Earth Strain
+2217,22,6196 //Tetra Vortex
diff --git a/db/statpoint_renewal.txt b/db/statpoint_renewal.txt new file mode 100644 index 000000000..cd876c4cd --- /dev/null +++ b/db/statpoint_renewal.txt @@ -0,0 +1,255 @@ +48
+51
+54
+57
+60
+64
+68
+72
+76
+80
+85
+90
+95
+100
+105
+111
+117
+123
+129
+135
+142
+149
+156
+163
+170
+178
+186
+194
+202
+210
+219
+228
+237
+246
+255
+265
+275
+285
+295
+305
+316
+327
+338
+349
+360
+372
+384
+396
+408
+420
+433
+446
+459
+472
+485
+499
+513
+527
+541
+555
+570
+585
+600
+615
+630
+646
+662
+678
+694
+710
+727
+744
+761
+778
+795
+813
+831
+849
+867
+885
+904
+923
+942
+961
+980
+1000
+1020
+1040
+1060
+1080
+1101
+1122
+1143
+1164
+1185
+1207
+1229
+1251
+1273
+1295
+1318
+1341
+1364
+1387
+1410
+1433
+1456
+1479
+1502
+1525
+1549
+1573
+1597
+1621
+1645
+1669
+1693
+1717
+1741
+1765
+1790
+1815
+1840
+1865
+1890
+1915
+1940
+1965
+1990
+2015
+2041
+2067
+2093
+2119
+2145
+2171
+2197
+2223
+2249
+2275
+2302
+2329
+2356
+2383
+2410
+2437
+2464
+2491
+2518
+2545
+2573
+2601
+2629
+2657
+2685
+2713
+2743
+2769
+2797
+2825
+2854
+2883
+2912
+2941
+2970
+2999
+3028
+3057
+3086
+3115
+3145
+3175
+3205
+3235
+3265
+3295
+3325
+3355
+3385
+3415
+3446
+3477
+3508
+3539
+3570
+3601
+3632
+3663
+3694
+3725
+3757
+3789
+3821
+3853
+3885
+3917
+3949
+3981
+4013
+4045
+4078
+4111
+4114
+4177
+4210
+4243
+4276
+4309
+4342
+4375
+4409
+4443
+4477
+4511
+4545
+4579
+4613
+4647
+4681
+4715
+4750
+4785
+4820
+4855
+4890
+4925
+4960
+5030
+5065
+5100
+5136
+5172
+5208
+5244
+5280
+5316
+5352
+5388
+5424
+5460
+5497
+5537
+5571
+5608
+5645
+5682
+5719
+5793
+5830
+5868
+5906
+5944
+5982
+6020
+6058
\ No newline at end of file diff --git a/sql-files/main.sql b/sql-files/main.sql index feafcae3e..22ccc186f 100644 --- a/sql-files/main.sql +++ b/sql-files/main.sql @@ -164,7 +164,7 @@ CREATE TABLE IF NOT EXISTS `global_reg_value` ( `char_id` int(11) unsigned NOT NULL default '0', `str` varchar(255) NOT NULL default '', `value` varchar(255) NOT NULL default '0', - `type` int(11) NOT NULL default '3', + `type` tinyint(1) NOT NULL default '3', `account_id` int(11) unsigned NOT NULL default '0', PRIMARY KEY (`char_id`,`str`,`account_id`), KEY `account_id` (`account_id`), diff --git a/sql-files/upgrade_svn15003.sql b/sql-files/upgrade_svn15003.sql new file mode 100644 index 000000000..28b4f451e --- /dev/null +++ b/sql-files/upgrade_svn15003.sql @@ -0,0 +1 @@ +ALTER TABLE `global_reg_value` MODIFY `type` TINYINT(1) UNSIGNED NOT NULL DEFAULT '3';
diff --git a/src/common/mmo.h b/src/common/mmo.h index 239e1dddd..f8ef63390 100644 --- a/src/common/mmo.h +++ b/src/common/mmo.h @@ -44,8 +44,8 @@ // 20110928 - 2011-09-28aRagexeRE+ - 0x6b, 0x6d #ifndef PACKETVER - #define PACKETVER 20081126 - //#define PACKETVER 20100707 + #define PACKETVER 20110609 + //#define PACKETVER 20100730 #endif // backward compatible PACKETVER 8 and 9 #if PACKETVER == 8 @@ -176,6 +176,7 @@ enum item_types { IT_UNKNOWN2,//9 IT_AMMO, //10 IT_DELAYCONSUME,//11 + IT_THROWWEAPON= 17,//17 IT_CASH = 18, IT_MAX }; @@ -646,6 +647,56 @@ enum { JOB_STAR_GLADIATOR, JOB_STAR_GLADIATOR2, JOB_SOUL_LINKER, + /** + * 3.1 (2.1) + **/ + JOB_RUNE_KNIGHT = 4054, + JOB_WARLOCK, + JOB_RANGER, + JOB_ARCH_BISHOP, + JOB_MECHANIC, + JOB_GUILLOTINE_CROSS, + /** + * 3.1 (2.1 Trans) + **/ + JOB_RUNE_KNIGHT_T, + JOB_WARLOCK_T, + JOB_RANGER_T, + JOB_ARCH_BISHOP_T, + JOB_MECHANIC_T, + JOB_GUILLOTINE_CROSS_T, + /** + * 3.2 (2.2) + **/ + JOB_ROYAL_GUARD, + JOB_SORCERER, + JOB_MINSTREL, + JOB_WANDERER, + JOB_SURA, + JOB_GENETIC, + JOB_SHADOW_CHASER, + /** + * 3.2 (2.2 Trans) + **/ + JOB_ROYAL_GUARD_T, + JOB_SORCERER_T, + JOB_MINSTREL_T, + JOB_WANDERER_T, + JOB_SURA_T, + JOB_GENETIC_T, + JOB_SHADOW_CHASER_T, + /** + * 3.x Mounts / Vehicles + **/ + JOB_RUNE_KNIGHT2, + JOB_RUNE_KNIGHT_T2, + JOB_ROYAL_GUARD2, + JOB_ROYAL_GUARD_T2, + JOB_RANGER2, + JOB_RANGER_T2, + JOB_MECHANIC2, + JOB_MECHANIC_T2, + JOB_MAX, }; diff --git a/src/common/showmsg.c b/src/common/showmsg.c index fc1badd26..a69c73ba2 100644 --- a/src/common/showmsg.c +++ b/src/common/showmsg.c @@ -4,6 +4,8 @@ #include "../common/cbasetypes.h" #include "../common/strlib.h" // StringBuf #include "showmsg.h" +#include "core.h" //[Ind] - For SERVER_TYPE +#include "version.h" //[Ind] - For SERVER_TYPE values #include <stdio.h> #include <string.h> @@ -51,6 +53,8 @@ int stdout_with_ansisequence = 0; int msg_silent = 0; //Specifies how silent the console is. +int console_msg_log = 0;//[Ind] msg error logging + /////////////////////////////////////////////////////////////////////////////// /// static/dynamic buffer for the messages @@ -684,6 +688,29 @@ int _vShowMessage(enum msg_type flag, const char *string, va_list ap) return 1; } if( + ( flag == MSG_WARNING && console_msg_log&1 ) || + ( ( flag == MSG_ERROR || flag == MSG_SQL ) && console_msg_log&2 ) || + ( flag == MSG_DEBUG && console_msg_log&4 ) ) {//[Ind] + FILE *log = NULL; + if( (log = fopen(SERVER_TYPE == ATHENA_SERVER_MAP ? "./log/map-msg_log.log" : "./log/unknown.log","a+")) ) { + char timestring[255]; + time_t curtime; + time(&curtime); + strftime(timestring, 254, "%m/%d/%Y %H:%M:%S", localtime(&curtime)); + fprintf(log,"(%s) [ %s ] : ", + timestring, + flag == MSG_WARNING ? "Warning" : + flag == MSG_ERROR ? "Error" : + flag == MSG_SQL ? "SQL Error" : + flag == MSG_DEBUG ? "Debug" : + "Unknown"); + va_copy(apcopy, ap); + vfprintf(log,string,apcopy); + va_end(apcopy); + fclose(log); + } + } + if( (flag == MSG_INFORMATION && msg_silent&1) || (flag == MSG_STATUS && msg_silent&2) || (flag == MSG_NOTICE && msg_silent&4) || diff --git a/src/common/showmsg.h b/src/common/showmsg.h index 998296b66..5f80a4312 100644 --- a/src/common/showmsg.h +++ b/src/common/showmsg.h @@ -67,6 +67,7 @@ extern int stdout_with_ansisequence; //If the color ansi sequences are to be used. [flaviojs] extern int msg_silent; //Specifies how silent the console is. [Skotlex] +extern int console_msg_log; //Specifies what error messages to log. [Ind] extern char timestamp_format[20]; //For displaying Timestamps [Skotlex] enum msg_type { diff --git a/src/map/Makefile.in b/src/map/Makefile.in index 09e92dde2..60fc49f7c 100644 --- a/src/map/Makefile.in +++ b/src/map/Makefile.in @@ -34,7 +34,9 @@ MAP_H = map.h chrif.h clif.h pc.h status.h npc.h \ storage.h skill.h atcommand.h battle.h battleground.h \ intif.h trade.h party.h vending.h guild.h pet.h \ log.h mail.h date.h unit.h homunculus.h mercenary.h quest.h instance.h mapreg.h \ - buyingstore.h searchstore.h duel.h + buyingstore.h searchstore.h duel.h \ + RRConfig/Core.h RRConfig/Renewal.h RRConfig/Secure.h RRConfig/Data/Const.h \ + RRConfig/Skills/General.h RRConfig/Skills/Mage_Classes.h RRConfig/Skills/Swordsman_Classes.h HAVE_MYSQL=@HAVE_MYSQL@ ifeq ($(HAVE_MYSQL),yes) diff --git a/src/map/RRConfig/Core.h b/src/map/RRConfig/Core.h new file mode 100644 index 000000000..9cb161a3f --- /dev/null +++ b/src/map/RRConfig/Core.h @@ -0,0 +1,28 @@ +#ifndef _RRCONFIGS_
+#define _RRCONFIGS_
+/**
+ * Ragnarok Resources Configuration File (http://ro-resources.net)
+ * The following settings are applied upon compiling the program,
+ * therefore any settings you disable will not even be added to the program
+ * making these settings the most performance-effiecient possible
+ **/
+
+/**
+ * @INFO: RREmu Settings Core
+ * - For detailed guidance on these check http://trac.ro-resources.net/wiki/CoreConfiguration
+ **/
+
+/**
+ * No settings past this point
+ **/
+#include "./Renewal.h"
+#include "./Secure.h"
+#include "./Skills/General.h"
+/**
+ * Constants come last; so they process anything that could've been modified in early includes
+ **/
+#include "./Data/Const.h"
+/**
+ * End of File
+ **/
+#endif
diff --git a/src/map/RRConfig/Data/Const.h b/src/map/RRConfig/Data/Const.h new file mode 100644 index 000000000..6da8cdf13 --- /dev/null +++ b/src/map/RRConfig/Data/Const.h @@ -0,0 +1,33 @@ +#ifndef _RRCONFIGS_CONST_
+#define _RRCONFIGS_CONST_
+/**
+ * Ragnarok Resources Configuration File (http://ro-resources.net)
+ * The following settings are applied upon compiling the program,
+ * therefore any settings you disable will not even be added to the program
+ * making these settings the most performance-effiecient possible
+ **/
+
+/**
+ * @INFO: This file holds constants that aims at making code smoother and more efficient
+ */
+
+/**
+ * "Constants"
+ **/
+#define CONST_CASTRATE_SCALE ( RECASTING ? RECASTING_VMIN : battle_config.castrate_dex_scale )
+#define CONST_CASTRATE_CALC ( RECASTING ? ((status_get_dex(bl)*2)+status_get_int(bl)) : status_get_dex(bl) )
+
+/**
+ * "Sane Checks" to save you from compiling with cool bugs
+ **/
+#if SECURE_NPCTIMEOUT_INTERVAL <= 0
+ #error SECURE_NPCTIMEOUT_INTERVAL should be at least 1 (1s)
+#endif
+#if SECURE_NPCTIMEOUT < 0
+ #error SECURE_NPCTIMEOUT cannot be lower than 0
+#endif
+
+/**
+ * End of File
+ **/
+#endif
\ No newline at end of file diff --git a/src/map/RRConfig/Renewal.h b/src/map/RRConfig/Renewal.h new file mode 100644 index 000000000..db5a99008 --- /dev/null +++ b/src/map/RRConfig/Renewal.h @@ -0,0 +1,53 @@ +#ifndef _RRCONFIGS_RE_
+#define _RRCONFIGS_RE_
+/**
+ * Ragnarok Resources Configuration File (http://ro-resources.net)
+ * The following settings are applied upon compiling the program,
+ * therefore any settings you disable will not even be added to the program
+ * making these settings the most performance-effiecient possible
+ **/
+
+/**
+ * @INFO: This file holds general-purpose renewal settings, for class-specific ones check /src/map/RRConfig/Skills folder
+ **/
+
+/**
+ * Game Server Mode
+ * @values: 1 or 0
+ * 1 : renewal support, such as renewal-exclusive formulas
+ * -> Note some features may be enabled/disabled at this file despite this setting being ON
+ * 0 : renewal support disabled, use original formulas
+ **/
+#define RRMODE 1
+
+/**
+ * Renewal Cast Time
+ * @values: 1 (enabled) or 0 (disabled)
+ * 1 : Cast Time is decreased by DEX*2+INT, 20% of the cast time is not reduced by stats,
+ * - for example, on a skill whose cast time is 10s, only 8s may be reduced. other 2s are
+ * - part of a "fixed cast time" that is only reduced by special items and skills (such as
+ * - Arch Bishop's Sacrament skill).
+ * 0 : the old cast time method, influenced by dex, items and skills.
+ **/
+#define RECASTING 1
+
+/**
+ * Renewal Cast Time : Variable-Free
+ * - Value required for no variable cast time with stats.
+ * - Formula: (casterDex x 2) + (casterInt)
+ * Default: 530
+ **/
+#define RECASTING_VMIN 530
+
+/**
+ * Renewal Enchant Deadly Poison Change
+ * - In RE EDP no longer increases final damage by 400%.
+ * - it increases your weapon atk and your stat atk
+ * - it doesn't affect grimtooth
+ **/
+#define RE_EDP 1
+
+/**
+ * End of File
+ **/
+#endif
\ No newline at end of file diff --git a/src/map/RRConfig/Secure.h b/src/map/RRConfig/Secure.h new file mode 100644 index 000000000..1288b259f --- /dev/null +++ b/src/map/RRConfig/Secure.h @@ -0,0 +1,36 @@ +#ifndef _RRCONFIGS_SECURE_
+#define _RRCONFIGS_SECURE_
+/**
+ * Ragnarok Resources Configuration File (http://ro-resources.net)
+ * The following settings are applied upon compiling the program,
+ * therefore any settings you disable will not even be added to the program
+ * making these settings the most performance-effiecient possible
+ **/
+
+/**
+ * @INFO: This file holds optional security settings
+ **/
+
+/**
+ * Optional NPC Dialog Timer
+ * When enabled all npcs dialog will 'timeout' if user is on idle for longer than the amount of seconds allowed
+ * - On 'timeout' the npc dialog window changes it's next/menu to a 'close' button
+ * @values
+ * - ? : Desired idle time in seconds (e.g. 10)
+ * - 0 : Disabled
+ **/
+#define SECURE_NPCTIMEOUT 0
+
+/**
+ * (Secure) Optional NPC Dialog Timer
+ * @requirement : SECURE_NPCTIMEOUT must be enabled
+ * Minimum Interval Between timeout checks in seconds
+ * Default: 1s
+ **/
+#define SECURE_NPCTIMEOUT_INTERVAL 1
+
+
+/**
+ * End of File
+ **/
+#endif
\ No newline at end of file diff --git a/src/map/RRConfig/Skills/General.h b/src/map/RRConfig/Skills/General.h new file mode 100644 index 000000000..5944d6844 --- /dev/null +++ b/src/map/RRConfig/Skills/General.h @@ -0,0 +1,23 @@ +#ifndef _RRCONFIGS_SKILLS_GENERAL_
+#define _RRCONFIGS_SKILLS_GENERAL_
+/**
+ * Ragnarok Resources Configuration File (http://ro-resources.net)
+ * The following settings are applied upon compiling the program,
+ * therefore any settings you disable will not even be added to the program
+ * making these settings the most performance-effiecient possible
+ **/
+
+/**
+ * Default Magical Reflection Behavior
+ * - When reflecting, reflected damage depends on gears caster is wearing, not target
+ * - When disabled damage depends on gears target is wearing, not caster.
+ * @values 1 (enabled) or 0 (disabled)
+ **/
+#define RR_MAGIC_REFLECTION 1
+
+/**
+ * No settings past this point
+ **/
+#include "Mage_Classes.h"
+#include "Swordsman_Classes.h"
+#endif
diff --git a/src/map/RRConfig/Skills/Mage_Classes.h b/src/map/RRConfig/Skills/Mage_Classes.h new file mode 100644 index 000000000..cf0777787 --- /dev/null +++ b/src/map/RRConfig/Skills/Mage_Classes.h @@ -0,0 +1,19 @@ +#ifndef _RRCONFIGS_SKILLS_MAGE_
+#define _RRCONFIGS_SKILLS_MAGE_
+/**
+ * Ragnarok Resources Configuration File (http://ro-resources.net)
+ * The following settings are applied upon compiling the program,
+ * therefore any settings you disable will not even be added to the program
+ * making these settings the most performance-effiecient possible
+ **/
+
+/**
+ * (Wizard/HW/Warlock) enable Fire Ivy skill? (1 OR 0)
+ * Default: 0 (disabled)
+ **/
+#define FIREIVY_ON 0
+
+/**
+ * No settings past this point
+ **/
+#endif
diff --git a/src/map/RRConfig/Skills/Swordsman_Classes.h b/src/map/RRConfig/Skills/Swordsman_Classes.h new file mode 100644 index 000000000..4dddeec54 --- /dev/null +++ b/src/map/RRConfig/Skills/Swordsman_Classes.h @@ -0,0 +1,19 @@ +#ifndef _RRCONFIGS_SKILLS_SWORDS_
+#define _RRCONFIGS_SKILLS_SWORDS_
+/**
+ * Ragnarok Resources Configuration File (http://ro-resources.net)
+ * The following settings are applied upon compiling the program,
+ * therefore any settings you disable will not even be added to the program
+ * making these settings the most performance-effiecient possible
+ **/
+
+/**
+ * (Rune Knight) the maximum rune items a character may have of the same type
+ * Default: 20
+ **/
+#define MAX_RUNE 20
+
+/**
+ * No settings past this point
+ **/
+#endif
diff --git a/src/map/atcommand.c b/src/map/atcommand.c index e98481f22..e87074883 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -1255,7 +1255,7 @@ ACMD_FUNC(jobchange) if (!message || !*message || sscanf(message, "%d %d", &job, &upper) < 1) { int i, found = 0; - const struct { char name[16]; int id; } jobs[] = { + const struct { char name[24]; int id; } jobs[] = { { "novice", 0 }, { "swordsman", 1 }, { "mage", 2 }, @@ -1330,6 +1330,32 @@ ACMD_FUNC(jobchange) { "taekwon girl", 4046 }, { "star gladiator", 4047 }, { "soul linker", 4049 }, + { "rune knight", 4054 }, + { "warlock", 4055 }, + { "ranger", 4056 }, + { "arch bishop", 4057 }, + { "mechanic", 4058 }, + { "guillotine", 4059 }, + { "rune knight (Trans)", 4060 }, + { "warlock (Trans)", 4061 }, + { "ranger (Trans)", 4062 }, + { "arch bishop (Trans)", 4063 }, + { "mechanic (Trans)", 4064 }, + { "guillotine (Trans)", 4065 }, + { "royal guard", 4066 }, + { "sorcerer", 4067 }, + { "minstrel", 4068 }, + { "wanderer", 4069 }, + { "sura", 4070 }, + { "genetic", 4071 }, + { "shadow chaser", 4072 }, + { "royal guard (Trans)", 4073 }, + { "sorcerer (Trans)", 4074 }, + { "minstrel (Trans)", 4075 }, + { "wanderer (Trans)", 4076 }, + { "sura (Trans)", 4077 }, + { "genetic (Trans)", 4078 }, + { "shadow chaser (Trans)", 4079 }, }; for (i=0; i < ARRAYLENGTH(jobs); i++) { @@ -1343,28 +1369,56 @@ ACMD_FUNC(jobchange) if (!found) { clif_displaymessage(fd, "Please, enter job ID (usage: @job/@jobchange <job name/ID>)."); - clif_displaymessage(fd, " 0 Novice 7 Knight 14 Crusader 21 N/A"); - clif_displaymessage(fd, " 1 Swordman 8 Priest 15 Monk 22 N/A"); - clif_displaymessage(fd, " 2 Mage 9 Wizard 16 Sage 23 Super Novice"); - clif_displaymessage(fd, " 3 Archer 10 Blacksmith 17 Rogue 24 Gunslinger"); - clif_displaymessage(fd, " 4 Acolyte 11 Hunter 18 Alchemist 25 Ninja"); - clif_displaymessage(fd, " 5 Merchant 12 Assassin 19 Bard 26 N/A"); - clif_displaymessage(fd, " 6 Thief 13 N/A 20 Dancer 27 N/A"); - clif_displaymessage(fd, "4001 Novice High 4008 Lord Knight 4015 Paladin 4022 N/A"); - clif_displaymessage(fd, "4002 Swordman High 4009 High Priest 4016 Champion"); - clif_displaymessage(fd, "4003 Mage High 4010 High Wizard 4017 Professor"); - clif_displaymessage(fd, "4004 Archer High 4011 Whitesmith 4018 Stalker"); - clif_displaymessage(fd, "4005 Acolyte High 4012 Sniper 4019 Creator"); - clif_displaymessage(fd, "4006 Merchant High 4013 Assassin Cross 4020 Clown"); - clif_displaymessage(fd, "4007 Thief High 4014 N/A 4021 Gypsy"); - clif_displaymessage(fd, "4023 Baby Novice 4030 Baby Knight 4037 Baby Crusader 4044 N/A"); - clif_displaymessage(fd, "4024 Baby Swordsman 4031 Baby Priest 4038 Baby Monk 4045 Super Baby"); - clif_displaymessage(fd, "4025 Baby Mage 4032 Baby Wizard 4039 Baby Sage 4046 Taekwon Kid"); - clif_displaymessage(fd, "4026 Baby Archer 4033 Baby Blacksmith 4040 Baby Rogue 4047 Taekwon Master"); - clif_displaymessage(fd, "4027 Baby Acolyte 4034 Baby Hunter 4041 Baby Alchemist 4048 N/A"); - clif_displaymessage(fd, "4028 Baby Merchant 4035 Baby Assassin 4042 Baby Bard 4049 Soul Linker"); - clif_displaymessage(fd, "4029 Baby Thief 4036 N/A 4043 Baby Dancer"); - clif_displaymessage(fd, "[upper]: -1 (default) to automatically determine the 'level', 0 to force normal job, 1 to force high job."); + clif_displaymessage(fd, "----- Novice / 1st Class -----"); + clif_displaymessage(fd, " 0 Novice 1 Swordman 2 Mage 3 Archer"); + clif_displaymessage(fd, " 4 Acolyte 5 Merchant 6 Thief"); + clif_displaymessage(fd, "----- 2nd Class -----"); + clif_displaymessage(fd, " 7 Knight 8 Priest 9 Wizard 10 Blacksmith"); + clif_displaymessage(fd, " 11 Hunter 12 Assassin 14 Crusader 15 Monk"); + clif_displaymessage(fd, " 16 Sage 17 Rogue 18 Alchemist 19 Bard"); + clif_displaymessage(fd, " 20 Dancer"); + clif_displaymessage(fd, "----- High Novice / High 1st Class -----"); + clif_displaymessage(fd, "4001 Novice High 4002 Swordman High 4003 Mage High 4004 Archer High"); + clif_displaymessage(fd, "4005 Acolyte High 4006 Merchant High 4007 Thief High"); + clif_displaymessage(fd, "----- Transcendent 2nd Class -----"); + clif_displaymessage(fd, "4008 Lord Knight 4009 High Priest 4010 High Wizard 4011 Whitesmith"); + clif_displaymessage(fd, "4012 Sniper 4013 Assassin Cross 4015 Paladin 4016 Champion"); + clif_displaymessage(fd, "4017 Professor 4018 Stalker 4019 Creator 4020 Clown"); + clif_displaymessage(fd, "4021 Gypsy"); + clif_displaymessage(fd, "----- 3rd Class (Regular to 3rd) -----"); + clif_displaymessage(fd, "4054 Rune Knight 4055 Warlock 4056 Ranger 4057 Arch Bishop"); + clif_displaymessage(fd, "4058 Mechanic 4059 Guillotine Cross 4066 Royal Guard 4067 Sorcerer"); + clif_displaymessage(fd, "4068 Minstrel 4069 Wanderer 4070 Sura 4071 Genetic"); + clif_displaymessage(fd, "4072 Shadow Chaser"); + clif_displaymessage(fd, "----- 3rd Class (Transcendent to 3rd) -----"); + clif_displaymessage(fd, "4060 Rune Knight 4061 Warlock 4062 Ranger 4063 Arch Bishop"); + clif_displaymessage(fd, "4064 Mechanic 4065 Guillotine Cross 4073 Royal Guard 4074 Sorcerer"); + clif_displaymessage(fd, "4075 Minstrel 4076 Wanderer 4077 Sura 4078 Genetic"); + clif_displaymessage(fd, "4079 Shadow Chaser"); + clif_displaymessage(fd, "----- Expanded Class -----"); + clif_displaymessage(fd, " 23 Super Novice 24 Gunslinger 25 Ninja 26 Xmas"); + clif_displaymessage(fd, " 27 Summer 4046 Taekwon 4047 Star Gladiator 4049 Soul Linker"); + //clif_displaymessage(fd, "4050 Gangsi 4051 Death Knight 4052 Dark Collector"); + clif_displaymessage(fd, "---- 1st And 2nd Baby Class ----"); + clif_displaymessage(fd, "4023 Baby Novice 4024 Baby Swordsman 4025 Baby Mage 4026 Baby Archer"); + clif_displaymessage(fd, "4027 Baby Acolyte 4028 Baby Merchant 4029 Baby Thief 4030 Baby Knight"); + clif_displaymessage(fd, "4031 Baby Priest 4032 Baby Wizard 4033 Baby Blacksmith 4034 Baby Hunter"); + clif_displaymessage(fd, "4035 Baby Assassin 4037 Baby Crusader 4038 Baby Monk 4039 Baby Sage"); + clif_displaymessage(fd, "4040 Baby Rogue 4041 Baby Alchemist 4042 Baby Bard 4043 Baby Dancer"); + clif_displaymessage(fd, "4045 Super Baby"); + //clif_displaymessage(fd, "---- 3rd Baby Class ----"); + //clif_displaymessage(fd, "4096 Baby Rune Knight 4097 Baby Warlock 4098 Baby Ranger"); + //clif_displaymessage(fd, "4099 Baby Arch Bishop 4100 Baby Mechanic 4101 Baby Guillotine Cross"); + //clif_displaymessage(fd, "4102 Baby Royal Guard 4103 Baby Sorcerer 4104 Baby Minstrel"); + //clif_displaymessage(fd, "4105 Baby Wanderer 4106 Baby Sura 4107 Baby Genetic"); + //clif_displaymessage(fd, "4108 Baby Shadow Chaser"); + //clif_displaymessage(fd, "---- Mounts, Modes, And Others ----"); + //clif_displaymessage(fd, " 13 Knight (Peco) 21 Crusader (Peco) 22 Wedding 26 Christmas"); + //clif_displaymessage(fd, " 27 Summer 4014 Lord Knight (Peco) 4022 Paladin (Peco) 4036 Baby Knight (Peco)"); + //clif_displaymessage(fd, "4044 Baby Crusader (Peco) 4048 Star Gladiator (Union) 4080 Rune Knight (Dragon)"); + //clif_displaymessage(fd, "4081 Rune Knight Trans (Dragon) 4082 Royal Guard (Gryphon)"); + //clif_displaymessage(fd, "4083 Royal Guard Trans (Gryphon) 4084 Ranger (Warg) 4085 Ranger Trans (Warg)"); + //clif_displaymessage(fd, "4086 Mechanic (Mado) 4087 Mechanic Trans (Mado)"); return -1; } } @@ -1384,28 +1438,56 @@ ACMD_FUNC(jobchange) } } else { clif_displaymessage(fd, "Please, enter job ID (usage: @job/@jobchange <job name/ID>)."); - clif_displaymessage(fd, " 0 Novice 7 Knight 14 Crusader 21 N/A"); - clif_displaymessage(fd, " 1 Swordman 8 Priest 15 Monk 22 N/A"); - clif_displaymessage(fd, " 2 Mage 9 Wizard 16 Sage 23 Super Novice"); - clif_displaymessage(fd, " 3 Archer 10 Blacksmith 17 Rogue 24 Gunslinger"); - clif_displaymessage(fd, " 4 Acolyte 11 Hunter 18 Alchemist 25 Ninja"); - clif_displaymessage(fd, " 5 Merchant 12 Assassin 19 Bard 26 N/A"); - clif_displaymessage(fd, " 6 Thief 13 N/A 20 Dancer 27 N/A"); - clif_displaymessage(fd, "4001 Novice High 4008 Lord Knight 4015 Paladin 4022 N/A"); - clif_displaymessage(fd, "4002 Swordman High 4009 High Priest 4016 Champion"); - clif_displaymessage(fd, "4003 Mage High 4010 High Wizard 4017 Professor"); - clif_displaymessage(fd, "4004 Archer High 4011 Whitesmith 4018 Stalker"); - clif_displaymessage(fd, "4005 Acolyte High 4012 Sniper 4019 Creator"); - clif_displaymessage(fd, "4006 Merchant High 4013 Assassin Cross 4020 Clown"); - clif_displaymessage(fd, "4007 Thief High 4014 N/A 4021 Gypsy"); - clif_displaymessage(fd, "4023 Baby Novice 4030 Baby Knight 4037 Baby Crusader 4044 N/A"); - clif_displaymessage(fd, "4024 Baby Swordsman 4031 Baby Priest 4038 Baby Monk 4045 Super Baby"); - clif_displaymessage(fd, "4025 Baby Mage 4032 Baby Wizard 4039 Baby Sage 4046 Taekwon Kid"); - clif_displaymessage(fd, "4026 Baby Archer 4033 Baby Blacksmith 4040 Baby Rogue 4047 Taekwon Master"); - clif_displaymessage(fd, "4027 Baby Acolyte 4034 Baby Hunter 4041 Baby Alchemist 4048 N/A"); - clif_displaymessage(fd, "4028 Baby Merchant 4035 Baby Assassin 4042 Baby Bard 4049 Soul Linker"); - clif_displaymessage(fd, "4029 Baby Thief 4036 N/A 4043 Baby Dancer"); - clif_displaymessage(fd, "[upper]: -1 (default) to automatically determine the 'level', 0 to force normal job, 1 to force high job."); + clif_displaymessage(fd, "----- Novice / 1st Class -----"); + clif_displaymessage(fd, " 0 Novice 1 Swordman 2 Mage 3 Archer"); + clif_displaymessage(fd, " 4 Acolyte 5 Merchant 6 Thief"); + clif_displaymessage(fd, "----- 2nd Class -----"); + clif_displaymessage(fd, " 7 Knight 8 Priest 9 Wizard 10 Blacksmith"); + clif_displaymessage(fd, " 11 Hunter 12 Assassin 14 Crusader 15 Monk"); + clif_displaymessage(fd, " 16 Sage 17 Rogue 18 Alchemist 19 Bard"); + clif_displaymessage(fd, " 20 Dancer"); + clif_displaymessage(fd, "----- High Novice / High 1st Class -----"); + clif_displaymessage(fd, "4001 Novice High 4002 Swordman High 4003 Mage High 4004 Archer High"); + clif_displaymessage(fd, "4005 Acolyte High 4006 Merchant High 4007 Thief High"); + clif_displaymessage(fd, "----- Transcendent 2nd Class -----"); + clif_displaymessage(fd, "4008 Lord Knight 4009 High Priest 4010 High Wizard 4011 Whitesmith"); + clif_displaymessage(fd, "4012 Sniper 4013 Assassin Cross 4015 Paladin 4016 Champion"); + clif_displaymessage(fd, "4017 Professor 4018 Stalker 4019 Creator 4020 Clown"); + clif_displaymessage(fd, "4021 Gypsy"); + clif_displaymessage(fd, "----- 3rd Class (Regular to 3rd) -----"); + clif_displaymessage(fd, "4054 Rune Knight 4055 Warlock 4056 Ranger 4057 Arch Bishop"); + clif_displaymessage(fd, "4058 Mechanic 4059 Guillotine Cross 4066 Royal Guard 4067 Sorcerer"); + clif_displaymessage(fd, "4068 Minstrel 4069 Wanderer 4070 Sura 4071 Genetic"); + clif_displaymessage(fd, "4072 Shadow Chaser"); + clif_displaymessage(fd, "----- 3rd Class (Transcendent to 3rd) -----"); + clif_displaymessage(fd, "4060 Rune Knight 4061 Warlock 4062 Ranger 4063 Arch Bishop"); + clif_displaymessage(fd, "4064 Mechanic 4065 Guillotine Cross 4073 Royal Guard 4074 Sorcerer"); + clif_displaymessage(fd, "4075 Minstrel 4076 Wanderer 4077 Sura 4078 Genetic"); + clif_displaymessage(fd, "4079 Shadow Chaser"); + clif_displaymessage(fd, "----- Expanded Class -----"); + clif_displaymessage(fd, " 23 Super Novice 24 Gunslinger 25 Ninja 26 Xmas"); + clif_displaymessage(fd, " 27 Summer 4046 Taekwon 4047 Star Gladiator 4049 Soul Linker"); + //clif_displaymessage(fd, "4050 Gangsi 4051 Death Knight 4052 Dark Collector"); + clif_displaymessage(fd, "---- 1st And 2nd Baby Class ----"); + clif_displaymessage(fd, "4023 Baby Novice 4024 Baby Swordsman 4025 Baby Mage 4026 Baby Archer"); + clif_displaymessage(fd, "4027 Baby Acolyte 4028 Baby Merchant 4029 Baby Thief 4030 Baby Knight"); + clif_displaymessage(fd, "4031 Baby Priest 4032 Baby Wizard 4033 Baby Blacksmith 4034 Baby Hunter"); + clif_displaymessage(fd, "4035 Baby Assassin 4037 Baby Crusader 4038 Baby Monk 4039 Baby Sage"); + clif_displaymessage(fd, "4040 Baby Rogue 4041 Baby Alchemist 4042 Baby Bard 4043 Baby Dancer"); + clif_displaymessage(fd, "4045 Super Baby"); + //clif_displaymessage(fd, "---- 3rd Baby Class ----"); + //clif_displaymessage(fd, "4096 Baby Rune Knight 4097 Baby Warlock 4098 Baby Ranger"); + //clif_displaymessage(fd, "4099 Baby Arch Bishop 4100 Baby Mechanic 4101 Baby Guillotine Cross"); + //clif_displaymessage(fd, "4102 Baby Royal Guard 4103 Baby Sorcerer 4104 Baby Minstrel"); + //clif_displaymessage(fd, "4105 Baby Wanderer 4106 Baby Sura 4107 Baby Genetic"); + //clif_displaymessage(fd, "4108 Baby Shadow Chaser"); + //clif_displaymessage(fd, "---- Mounts, Modes, And Others ----"); + //clif_displaymessage(fd, " 13 Knight (Peco) 21 Crusader (Peco) 22 Wedding 26 Christmas"); + //clif_displaymessage(fd, " 27 Summer 4014 Lord Knight (Peco) 4022 Paladin (Peco) 4036 Baby Knight (Peco)"); + //clif_displaymessage(fd, "4044 Baby Crusader (Peco) 4048 Star Gladiator (Union) 4080 Rune Knight (Dragon)"); + //clif_displaymessage(fd, "4081 Rune Knight Trans (Dragon) 4082 Royal Guard (Gryphon)"); + //clif_displaymessage(fd, "4083 Royal Guard Trans (Gryphon) 4084 Ranger (Warg) 4085 Ranger Trans (Warg)"); + //clif_displaymessage(fd, "4086 Mechanic (Mado) 4087 Mechanic Trans (Mado)"); return -1; } @@ -2842,7 +2924,7 @@ ACMD_FUNC(displaystatus) if (i < 2) flag = 1; if (i < 3) tick = 0; - clif_status_change(&sd->bl, type, flag, tick); + clif_status_change(&sd->bl, type, flag, tick, 0, 0, 0); return 0; } @@ -4395,8 +4477,11 @@ ACMD_FUNC(mapinfo) strcat(atcmd_output, "Fireworks | "); if (map[m_id].flag.leaves) strcat(atcmd_output, "Leaves | "); - if (map[m_id].flag.rain) - strcat(atcmd_output, "Rain | "); + /** + * No longer available, keeping here just in case it's back someday. [Ind] + **/ + //if (map[m_id].flag.rain) + // strcat(atcmd_output, "Rain | "); if (map[m_id].flag.nightenabled) strcat(atcmd_output, "Displays Night | "); clif_displaymessage(fd, atcmd_output); @@ -4510,7 +4595,26 @@ ACMD_FUNC(mapinfo) ACMD_FUNC(mount_peco) { nullpo_retr(-1, sd); - + if( pc_checkskill(sd,RK_DRAGONTRAINING) > 0 ) { + if( !(sd->sc.option&OPTION_DRAGON1) ) { + clif_displaymessage(sd->fd,"You have mounted your Dragon"); + pc_setoption(sd, sd->sc.option|OPTION_DRAGON1); + } else { + clif_displaymessage(sd->fd,"You have released your Dragon"); + pc_setoption(sd, sd->sc.option&~OPTION_DRAGON1); + } + return 0; + } + if( (sd->class_&MAPID_THIRDMASK) == MAPID_MECHANIC ) { + if( !(sd->sc.option&OPTION_MADOGEAR) ) { + clif_displaymessage(sd->fd,"You have mounted your Mado Gear"); + pc_setoption(sd, sd->sc.option|OPTION_MADOGEAR); + } else { + clif_displaymessage(sd->fd,"You have released your Mado Gear"); + pc_setoption(sd, sd->sc.option&~OPTION_MADOGEAR); + } + return 0; + } if (!pc_isriding(sd)) { // if actually no peco if (!pc_checkskill(sd, KN_RIDING)) { @@ -6117,24 +6221,26 @@ ACMD_FUNC(autolootitem) return 0; } - +/** + * No longer available, keeping here just in case it's back someday. [Ind] + **/ /*========================================== * It is made to rain. *------------------------------------------*/ -ACMD_FUNC(rain) -{ - nullpo_retr(-1, sd); - if (map[sd->bl.m].flag.rain) { - map[sd->bl.m].flag.rain=0; - clif_weather(sd->bl.m); - clif_displaymessage(fd, "The rain has stopped."); - } else { - map[sd->bl.m].flag.rain=1; - clif_weather(sd->bl.m); - clif_displaymessage(fd, "It is made to rain."); - } - return 0; -} +//ACMD_FUNC(rain) +//{ +// nullpo_retr(-1, sd); +// if (map[sd->bl.m].flag.rain) { +// map[sd->bl.m].flag.rain=0; +// clif_weather(sd->bl.m); +// clif_displaymessage(fd, "The rain has stopped."); +// } else { +// map[sd->bl.m].flag.rain=1; +// clif_weather(sd->bl.m); +// clif_displaymessage(fd, "It is made to rain."); +// } +// return 0; +//} /*========================================== * It is made to snow. @@ -6273,7 +6379,10 @@ ACMD_FUNC(fireworks) ACMD_FUNC(clearweather) { nullpo_retr(-1, sd); - map[sd->bl.m].flag.rain=0; + /** + * No longer available, keeping here just in case it's back someday. [Ind] + **/ + //map[sd->bl.m].flag.rain=0; map[sd->bl.m].flag.snow=0; map[sd->bl.m].flag.sakura=0; map[sd->bl.m].flag.clouds=0; @@ -7763,13 +7872,72 @@ ACMD_FUNC(fakename) } /*========================================== - * @mapflag [flag name] [1|0|on|off] [map name] by Lupus - * => Shows information about the map flags [map name] - * Also set flags + * Ragnarok Resources *------------------------------------------*/ -ACMD_FUNC(mapflag) -{ -// WIP +ACMD_FUNC(mapflag) { +#define checkflag( cmd ) if ( map[ sd->bl.m ].flag.cmd ) clif_displaymessage(sd->fd,#cmd) +#define setflag( cmd ) \ + if ( strcmp( flag_name , #cmd ) == 0 && ( flag == 0 || flag == 1 ) ){\ + map[ sd->bl.m ].flag.cmd = flag;\ + sprintf(atcmd_output,"[ @mapflag ] %s flag has been set to %s",#cmd,flag?"On":"Off");\ + clif_displaymessage(sd->fd,atcmd_output);\ + return 0;\ + } + unsigned char flag_name[100]; + int flag=9,i; + nullpo_retr(-1, sd); + memset(flag_name, '\0', sizeof(flag_name)); + + if (!message || !*message || (sscanf(message, "%99s %d", flag_name, &flag) < 1)) { + clif_displaymessage(sd->fd,"Enabled Mapflags in this map:"); + clif_displaymessage(sd->fd,"----------------------------------"); + checkflag(autotrade); checkflag(allowks); checkflag(nomemo); checkflag(noteleport); + checkflag(noreturn); checkflag(monster_noteleport); checkflag(nosave); checkflag(nobranch); + checkflag(noexppenalty); checkflag(pvp); checkflag(pvp_noparty); checkflag(pvp_noguild); + checkflag(pvp_nightmaredrop); checkflag(pvp_nocalcrank); checkflag(gvg_castle); checkflag(gvg); + checkflag(gvg_dungeon); checkflag(gvg_noparty); checkflag(battleground);checkflag(nozenypenalty); + checkflag(notrade); checkflag(noskill); checkflag(nowarp); checkflag(nowarpto); + checkflag(noicewall); checkflag(snow); checkflag(clouds); checkflag(clouds2); + checkflag(fog); checkflag(fireworks); checkflag(sakura); checkflag(leaves); + checkflag(nogo); checkflag(nobaseexp); + checkflag(nojobexp); checkflag(nomobloot); checkflag(nomvploot); checkflag(nightenabled); + checkflag(restricted); checkflag(nodrop); checkflag(novending); checkflag(loadevent); + checkflag(nochat); checkflag(partylock); checkflag(guildlock); checkflag(src4instance); + clif_displaymessage(sd->fd," "); + clif_displaymessage(sd->fd,"Usage: \"@mapflag monster_teleport 1\" (0=Off 1=On)"); + clif_displaymessage(sd->fd,"Use: \"@mapflag available\" to list the available mapflags"); + return 1; + } + for (i = 0; flag_name[i]; i++) flag_name[i] = tolower(flag_name[i]); //lowercase + + setflag(autotrade); setflag(allowks); setflag(nomemo); setflag(noteleport); + setflag(noreturn); setflag(monster_noteleport);setflag(nosave); setflag(nobranch); + setflag(noexppenalty); setflag(pvp); setflag(pvp_noparty); setflag(pvp_noguild); + setflag(pvp_nightmaredrop); setflag(pvp_nocalcrank); setflag(gvg_castle); setflag(gvg); + setflag(gvg_dungeon); setflag(gvg_noparty); setflag(battleground); setflag(nozenypenalty); + setflag(notrade); setflag(noskill); setflag(nowarp); setflag(nowarpto); + setflag(noicewall); setflag(snow); setflag(clouds); setflag(clouds2); + setflag(fog); setflag(fireworks); setflag(sakura); setflag(leaves); + setflag(nogo); setflag(nobaseexp); + setflag(nojobexp); setflag(nomobloot); setflag(nomvploot); setflag(nightenabled); + setflag(restricted); setflag(nodrop); setflag(novending); setflag(loadevent); + setflag(nochat); setflag(partylock); setflag(guildlock); setflag(src4instance); + + clif_displaymessage(sd->fd,"Invalid flag name or flag"); + clif_displaymessage(sd->fd,"Usage: \"@mapflag monster_teleport 1\" (0=Off | 1=On)"); + clif_displaymessage(sd->fd,"Available Flags:"); + clif_displaymessage(sd->fd,"----------------------------------"); + clif_displaymessage(sd->fd,"town, autotrade, allowks, nomemo, noteleport, noreturn, monster_noteleport, nosave,"); + clif_displaymessage(sd->fd,"nobranch, noexppenalty, pvp, pvp_noparty, pvp_noguild, pvp_nightmaredrop,"); + clif_displaymessage(sd->fd,"pvp_nocalcrank, gvg_castle, gvg, gvg_dungeon, gvg_noparty, battleground,"); + clif_displaymessage(sd->fd,"nozenypenalty, notrade, noskill, nowarp, nowarpto, noicewall, snow, clouds, clouds2,"); + clif_displaymessage(sd->fd,"fog, fireworks, sakura, leaves, nogo, nobaseexp, nojobexp, nomobloot,"); + clif_displaymessage(sd->fd,"nomvploot, nightenabled, restricted, nodrop, novending, loadevent, nochat, partylock,"); + clif_displaymessage(sd->fd,"guildlock, src4instance"); + +#undef checkflag +#undef setflag + return 0; } @@ -8581,8 +8749,17 @@ ACMD_FUNC(font) return 0; } - - +ACMD_FUNC(new_mount) { + clif_displaymessage(sd->fd,"NOTICE: If you crash with mount your LUA is outdated"); + if( !(sd->sc.option&OPTION_MOUNTING) ) { + clif_displaymessage(sd->fd,"You have mounted."); + pc_setoption(sd, sd->sc.option|OPTION_MOUNTING); + } else { + clif_displaymessage(sd->fd,"You have released your mount"); + pc_setoption(sd, sd->sc.option&~OPTION_MOUNTING); + } + return 0; +} /*========================================== * atcommand_info[] structure definition *------------------------------------------*/ @@ -8885,6 +9062,10 @@ AtCommandInfo atcommand_info[] = { { "delitem", 60,60, atcommand_delitem }, { "charcommands", 1,1, atcommand_commands }, { "font", 1,1, atcommand_font }, + /** + * For Testing Purposes, not going to be here after we're done. + **/ + { "newmount", 0,99, atcommand_new_mount }, }; @@ -9025,9 +9206,12 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message info = get_atcommandinfo_byname(command); if( info == NULL || info->func == NULL || ( type && ((*atcmd_msg == atcommand_symbol && pc_isGM(sd) < info->level) || (*atcmd_msg == charcommand_symbol && pc_isGM(sd) < info->level2)) ) ) { + if( pc_isGM(sd) ) { sprintf(output, msg_txt(153), command); // "%s is Unknown Command." clif_displaymessage(fd, output); return true; + } else + return false; } //Attempt to use the command diff --git a/src/map/battle.c b/src/map/battle.c index b9a408a84..556b51bbd 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -118,7 +118,7 @@ static int battle_getenemy_sub(struct block_list *bl, va_list ap) if (bl->id == target->id) return 0; - if (*c >= 24) + if (*c >= 23) return 0; if (status_isdead(bl)) return 0; @@ -136,8 +136,47 @@ struct block_list* battle_getenemy(struct block_list *target, int type, int rang int c = 0; memset(bl_list, 0, sizeof(bl_list)); map_foreachinrange(battle_getenemy_sub, target, range, type, bl_list, &c, target); - if (c == 0 || c > 24) + if (c == 0 ) + return NULL; + if( c >= 24 ) + c = 23; + return bl_list[rand()%c]; +} +static int battle_getenemyarea_sub(struct block_list *bl, va_list ap) +{ + struct block_list **bl_list, *src; + int *c, ignore_id; + + bl_list = va_arg(ap, struct block_list **); + c = va_arg(ap, int *); + src = va_arg(ap, struct block_list *); + ignore_id = va_arg(ap, int); + + if( bl->id == src->id || bl->id == ignore_id ) + return 0; // Ignores Caster and a possible pre-target + if( *c >= 23 ) + return 0; + if( status_isdead(bl) ) + return 0; + if( battle_check_target(src, bl, BCT_ENEMY) > 0 ) + { // Is Enemy!... + bl_list[(*c)++] = bl; + return 1; + } + return 0; +} + +// Pick a random enemy +struct block_list* battle_getenemyarea(struct block_list *src, int x, int y, int range, int type, int ignore_id) +{ + struct block_list *bl_list[24]; + int c = 0; + memset(bl_list, 0, sizeof(bl_list)); + map_foreachinarea(battle_getenemyarea_sub, src->m, x - range, y - range, x + range, y + range, type, bl_list, &c, src, ignore_id); + if( c == 0 ) return NULL; + if( c >= 24 ) + c = 23; return bl_list[rand()%c]; } @@ -212,7 +251,6 @@ int battle_delay_damage (unsigned int tick, int amotion, struct block_list *src, return 0; } - int battle_attr_ratio(int atk_elem,int def_type, int def_lv) { @@ -316,6 +354,20 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag d->dmg_lv = ATK_BLOCK; return 0; } + if( sc->data[SC_WHITEIMPRISON] && skill_num != HW_GRAVITATION && skill_num != PA_PRESSURE ) { // Gravitation and Pressure do damage without removing the effect + if( skill_num == MG_NAPALMBEAT || + skill_num == MG_SOULSTRIKE || + skill_num == WL_SOULEXPANSION || + (skill_num && skill_get_ele(skill_num, skill_lv) == ELE_GHOST) || + (!skill_num && (status_get_status_data(src))->rhw.ele == ELE_GHOST) + ) + status_change_end(bl,SC_WHITEIMPRISON,-1); // Those skills do damage and removes effect + else + { + d->dmg_lv = ATK_BLOCK; + return 0; + } + } if( sc->data[SC_SAFETYWALL] && (flag&(BF_SHORT|BF_MAGIC))==BF_SHORT ) { @@ -334,7 +386,13 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag d->dmg_lv = ATK_BLOCK; return 0; } - + if( sc->data[SC_WEAPONBLOCKING] && flag&(BF_SHORT|BF_WEAPON) && rand()%100 < sc->data[SC_WEAPONBLOCKING]->val2 ) + { + clif_skill_nodamage(bl,src,GC_WEAPONBLOCKING,1,1); + d->dmg_lv = ATK_NONE; + sc_start2(bl,SC_COMBO,100,GC_WEAPONBLOCKING,src->id,2000); + return 0; + } if( (sce=sc->data[SC_AUTOGUARD]) && flag&BF_WEAPON && !(skill_get_nk(skill_num)&NK_NO_CARDFIX_ATK) && rand()%100 < sce->val2 ) { int delay; @@ -487,6 +545,14 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag status_change_end(bl, SC_REJECTSWORD, INVALID_TIMER); } + //Finally added to remove the status of immobile when aimedbolt is used. [Jobbie] + if( skill_num == RA_AIMEDBOLT && (sc->data[SC_BITE] || sc->data[SC_ANKLE] || sc->data[SC_ELECTRICSHOCKER]) ) + { + status_change_end(bl, SC_BITE, -1); + status_change_end(bl, SC_ANKLE, -1); + status_change_end(bl, SC_ELECTRICSHOCKER, -1); + } + //Finally Kyrie because it may, or not, reduce damage to 0. if((sce = sc->data[SC_KYRIE]) && damage > 0){ sce->val2-=damage; @@ -539,6 +605,8 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag break; } } + if( sc->data[SC_POISONINGWEAPON] && skill_num != GC_VENOMPRESSURE && (flag&BF_WEAPON) && damage > 0 && rand()%100 < sc->data[SC_POISONINGWEAPON]->val3 ) + sc_start(bl,sc->data[SC_POISONINGWEAPON]->val2,100,sc->data[SC_POISONINGWEAPON]->val1,skill_get_time2(GC_POISONINGWEAPON,sc->data[SC_POISONINGWEAPON]->val1)); } if (battle_config.pk_mode && sd && bl->type == BL_PC && damage) @@ -720,6 +788,12 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int (battle_check_undead(status->race,status->def_ele) || status->race==RC_DEMON) ) damage += (skill*(int)(3+(sd->status.base_level+1)*0.05)); // submitted by orn //damage += (skill * 3); + if( (skill = pc_checkskill(sd, RA_RANGERMAIN)) > 0 && (status->race == RC_BRUTE || status->race == RC_PLANT || status->race == RC_FISH) ) + damage += (skill * 5); + if( (skill = pc_checkskill(sd,NC_RESEARCHFE)) > 0 && (status->def_ele == ELE_FIRE || status->def_ele == ELE_EARTH) ) + damage += (skill * 10); + if( (sd->sc.option&OPTION_MADOGEAR) ) + damage += 20 + 20 * pc_checkskill(sd, NC_MADOLICENCE); if((skill = pc_checkskill(sd,HT_BEASTBANE)) > 0 && (status->race==RC_BRUTE || status->race==RC_INSECT) ) { damage += (skill * 4); @@ -755,11 +829,15 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int case W_2HAXE: if((skill = pc_checkskill(sd,AM_AXEMASTERY)) > 0) damage += (skill * 3); + if((skill = pc_checkskill(sd,NC_TRAININGAXE)) > 0) + damage += (skill * 5); break; case W_MACE: case W_2HMACE: if((skill = pc_checkskill(sd,PR_MACEMASTERY)) > 0) damage += (skill * 3); + if((skill = pc_checkskill(sd,NC_TRAININGAXE)) > 0) + damage += (skill * 5); break; case W_FIST: if((skill = pc_checkskill(sd,TK_RUN)) > 0) @@ -1278,6 +1356,9 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo if(sd && pc_checkskill(sd,AS_SONICACCEL)>0) hitrate += hitrate * 50 / 100; break; + case GC_VENOMPRESSURE: + hitrate += 10 + 4 * skill_lv; + break; } // Weaponry Research hidden bonus @@ -1727,6 +1808,160 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo case NPC_VAMPIRE_GIFT: skillratio += ((skill_lv-1)%5+1)*100; break; + case RK_SONICWAVE: { + int level = status_get_lv(src); + skillratio += 400 + 100 * skill_lv; + if( level > 100 ) + skillratio += skillratio * (level - 100) / 200; + } + break; + case RK_HUNDREDSPEAR: { + int level = status_get_lv(src); + skillratio += 500 + 40 * skill_lv; + if( level > 100 ) + skillratio += skillratio * (level - 100) / 200; + } + break; + case RK_WINDCUTTER: { + int level = status_get_lv(src); + skillratio += 50 * skill_lv; + if( level > 100 ) + skillratio += skillratio * (level - 50) / 200; + } + break; + case RK_IGNITIONBREAK: { + int level = status_get_lv(src); + i = distance_bl(src,target); + if( i < 2 ) + skillratio = 200 + 200 * skill_lv; + else if( i < 4 ) + skillratio = 100 + 200 * skill_lv; + else + skillratio = 100 + 100 * skill_lv; + if( level > 100 ) + skillratio += skillratio * (level - 100) / 200; + if( sstatus->rhw.ele == ELE_FIRE ) + skillratio += skillratio / 2; + } + break; + case RK_CRUSHSTRIKE: + if( sd ) + { + short index = sd->equip_index[EQI_HAND_R]; + if( index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->type == IT_WEAPON ) + skillratio = sstatus->rhw.atk + 100 * sd->inventory_data[index]->wlv * (sd->status.inventory[index].refine + 6); + } + break; + case RK_STORMBLAST: + skillratio = 100 * (sd ? pc_checkskill(sd,RK_RUNEMASTERY) : 1) + 100 * (sstatus->int_ / 4); + break; + case RK_PHANTOMTHRUST: + skillratio = 50 * skill_lv + 10 * ( sd ? pc_checkskill(sd,KN_SPEARMASTERY) : 10); + //if( s_level > 100 ) skillratio += skillratio * s_level / 150; // Base level bonus. This is official, but is disabled until I can confirm something with was changed or not. [Rytech] + //if( s_level > 100 ) skillratio += skillratio * (s_level - 100) / 200; // Base level bonus. + break; + /** + * GC Guilotine Cross + **/ + case GC_CROSSIMPACT: + skillratio += 1050 + 50 * skill_lv; + break; + case GC_PHANTOMMENACE: + skillratio += 200; + break; + case GC_COUNTERSLASH: + skillratio += 200 + (100 * skill_lv) + sstatus->agi; + break; + case GC_ROLLINGCUTTER: + skillratio += 20 * skill_lv; + break; + case GC_CROSSRIPPERSLASHER: + skillratio += 60 + 40 * skill_lv; + if( sc && sc->data[SC_ROLLINGCUTTER] ) + skillratio += 25 * sc->data[SC_ROLLINGCUTTER]->val1; + break; + /** + * Arch Bishop + **/ + case AB_DUPLELIGHT_MELEE: + skillratio += 10 * skill_lv; + break; + /** + * Ranger + **/ + case RA_ARROWSTORM: + skillratio += 100 + 50 * skill_lv; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + break; + case RA_AIMEDBOLT: + skillratio += 400 + 50 * skill_lv; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + if( tsc && (tsc->data[SC_BITE] || tsc->data[SC_ANKLE] || tsc->data[SC_ELECTRICSHOCKER]) ) + wd.div_ = tstatus->size + 2 + rand()%2; + break; + case RA_CLUSTERBOMB: + skillratio += 100 + 100 * skill_lv; + break; + case RA_WUGDASH: + skillratio = 500; + break; + case RA_WUGSTRIKE: + skillratio = 200 * skill_lv; + break; + case RA_WUGBITE: + skillratio += 300 + 200 * skill_lv; + if ( skill_lv == 5 ) skillratio += 100; + break; + case RA_SENSITIVEKEEN: + skillratio += 50 * skill_lv; + break; + /** + * Mechanic + **/ + case NC_BOOSTKNUCKLE: + skillratio += 100 + 100 * skill_lv + sstatus->dex; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + break; + case NC_PILEBUNKER: + skillratio += 200 + 100 * skill_lv + sstatus->str; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + break; + case NC_VULCANARM: + skillratio = 70 * skill_lv + sstatus->dex; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + break; + case NC_FLAMELAUNCHER: + case NC_COLDSLOWER: + skillratio += 200 + 300 * skill_lv; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + break; + case NC_ARMSCANNON: + switch( tstatus->size ) { + case 0: skillratio += 100 + 500 * skill_lv; break;// Small + case 1: skillratio += 100 + 400 * skill_lv; break;// Medium + case 2: skillratio += 100 + 300 * skill_lv; break;// Large + } + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + //NOTE: Their's some other factors that affects damage, but not sure how exactly. Will recheck one day. [Rytech] + break; + case NC_AXEBOOMERANG: + skillratio += 60 + 40 * skill_lv; + if( sd ) { + short index = sd->equip_index[EQI_HAND_R]; + if( index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->type == IT_WEAPON ) + skillratio += sd->inventory_data[index]->weight / 10;// Weight is divided by 10 since 10 weight in coding make 1 whole actural weight. [Rytech] + } + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + break; + case NC_POWERSWING: + skillratio += 80 + 20 * skill_lv + sstatus->str + sstatus->dex; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + break; + case NC_AXETORNADO: + skillratio += 100 + 100 * skill_lv + sstatus->vit; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + break; + } ATK_RATE(skillratio); @@ -1755,6 +1990,16 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo case NJ_SYURIKEN: ATK_ADD(4*skill_lv); break; + /** + * Ranger + **/ + case RA_WUGDASH: + case RA_WUGSTRIKE: + case RA_WUGBITE: + if(sd) + ATK_ADD(30*pc_checkskill(sd, RA_TOOTHOFWUG)); + break; + } } //Div fix. @@ -1764,13 +2009,17 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo if (sc) { if(sc->data[SC_TRUESIGHT]) ATK_ADDRATE(2*sc->data[SC_TRUESIGHT]->val1); - + #if RE_EDP == 0 + /** + * In RE EDP doesn't affect your final damage but your atk and weapon atk + **/ if(sc->data[SC_EDP] && skill_num != ASC_BREAKER && skill_num != ASC_METEORASSAULT && skill_num != AS_SPLASHER && skill_num != AS_VENOMKNIFE) ATK_ADDRATE(sc->data[SC_EDP]->val3); + #endif } switch (skill_num) { @@ -1787,6 +2036,10 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo sc->data[SC_SPIRIT]->val2 == SL_CRUSADER) ATK_ADDRATE(100); break; + case NC_AXETORNADO: + if( (sstatus->rhw.ele) == ELE_WIND || (sstatus->lhw.ele) == ELE_WIND ) + ATK_ADDRATE(50); + break; } if( sd ) @@ -1881,6 +2134,9 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo if((battle_check_undead(sstatus->race,sstatus->def_ele) || sstatus->race==RC_DEMON) && //This bonus already doesnt work vs players src->type == BL_MOB && (skill=pc_checkskill(tsd,AL_DP)) > 0) vit_def += skill*(int)(3 +(tsd->status.base_level+1)*0.04); // submitted by orn + if( src->type == BL_MOB && (skill=pc_checkskill(tsd,RA_RANGERMAIN))>0 && + (sstatus->race == RC_BRUTE || sstatus->race == RC_FISH || sstatus->race == RC_PLANT) ) + vit_def += skill*5; } else { //Mob-Pet vit-eq //VIT + rnd(0,[VIT/20]^2-1) vit_def = (def2/20)*(def2/20); @@ -2293,20 +2549,34 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo struct Damage md = battle_calc_misc_attack(src, target, skill_num, skill_lv, wflag); wd.damage += md.damage; } - - //SG_FUSION hp penalty [Komurka] - if (sc && sc->data[SC_FUSION]) - { - int hp= sstatus->max_hp; - if (sd && tsd) { - hp = 8*hp/100; - if (100*sstatus->hp <= 20*sstatus->max_hp) - hp = sstatus->hp; - } else - hp = 2*hp/100; //2% hp loss per hit - status_zap(src, hp, 0); + if( sc ) { + //SG_FUSION hp penalty [Komurka] + if (sc->data[SC_FUSION]) + { + int hp= sstatus->max_hp; + if (sd && tsd) { + hp = 8*hp/100; + if (100*sstatus->hp <= 20*sstatus->max_hp) + hp = sstatus->hp; + } else + hp = 2*hp/100; //2% hp loss per hit + status_zap(src, hp, 0); + } + /** + * affecting non-skills + **/ + if( !skill_num ) { + /** + * RK Enchant Blade + **/ + if( sc->data[SC_ENCHANTBLADE] && sd && ( (flag.rh && sd->weapontype1) || (flag.lh && sd->weapontype2) ) ) { + struct Damage md = battle_calc_magic_attack(src, target, RK_ENCHANTBLADE, pc_checkskill(sd,RK_ENCHANTBLADE), wflag); + wd.damage += md.damage; + wd.flag |= md.flag; + } } + } return wd; } @@ -2398,6 +2668,10 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list case AL_HEAL: case PR_BENEDICTIO: case PR_SANCTUARY: + /** + * Arch Bishop + **/ + case AB_HIGHNESSHEAL: ad.damage = skill_calc_heal(src, target, skill_num, skill_lv, false); break; case PR_ASPERSIO: @@ -2417,14 +2691,31 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list case PF_SOULBURN: ad.damage = tstatus->sp * 2; break; + /** + * Arch Bishop + **/ + case AB_RENOVATIO: + //Damage calculation from iRO wiki. [Jobbie] + ad.damage = (int)((15 * status_get_lv(src)) + (1.5 * sstatus->int_)); + break; default: { + #if RRMODE //Renewal MATK Appliance according to doddler (?title=Renewal_Changes#Upgrade_MATK) + /** + * min: (weaponMATK+upgradeMATK) * 2 + 1.5 * statusMATK + * max: [weaponMATK+upgradeMATK+(wMatk*wLvl)/10] * 2 + 1.5 * statusMATK + * yes this formula MATCHES their site: matk_max already holds weaponmatk+upgradematk, and + * -> statusMATK holds the %Matk modifier stuff from earlier and lastly: + * -> the mdef part is not applied at this point, but later. + **/ + MATK_ADD(sstatus->matk_max * 2 + 15/10 * sstatus->matk_min + rand()% ( sstatus->matk_max + (sstatus->matk_max*sstatus->wlv) / 10 * 2 * 10/15 * sstatus->matk_min ) ); + #else //Ancient MATK Appliance if (sstatus->matk_max > sstatus->matk_min) { MATK_ADD(sstatus->matk_min+rand()%(1+sstatus->matk_max-sstatus->matk_min)); } else { MATK_ADD(sstatus->matk_min); } - + #endif if(nk&NK_SPLASHSPLIT){ // Divide MATK in case of multiple targets skill if(mflag>0) ad.damage/= mflag; @@ -2470,6 +2761,11 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list case WZ_SIGHTRASHER: skillratio += 20*skill_lv; break; +#if FIREIVY_ON + case WZ_FIREIVY: + skillratio += 20*skill_lv-15; + break; +#endif case WZ_VERMILION: skillratio += 20*skill_lv-20; break; @@ -2513,6 +2809,193 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list case NPC_EARTHQUAKE: skillratio += 100 +100*skill_lv +100*(skill_lv/2); break; + /** + * Arch Bishop + **/ + case AB_JUDEX: + skillratio += 180 + 20 * skill_lv; + if (skill_lv > 4) skillratio += 20; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + break; + case AB_ADORAMUS: + skillratio += 400 + 100 * skill_lv; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + break; + case AB_DUPLELIGHT_MAGIC: + skillratio += 100 + 20 * skill_lv; + break; + /** + * Warlock + **/ + case WL_SOULEXPANSION: + skillratio += 300 + 100 * skill_lv + sstatus->int_; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + break; + case WL_FROSTMISTY: + skillratio += 100 + 100 * skill_lv; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + break; + case WL_JACKFROST: + { + struct status_change *tsc = status_get_sc(target); + if( tsc && tsc->data[SC_FREEZING] ) + { + skillratio += 900 + 300 * skill_lv; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + } + else + skillratio += 400 + 100 * skill_lv; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + } + break; + case WL_DRAINLIFE: + skillratio = 200 * skill_lv + sstatus->int_; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + break; + case WL_CRIMSONROCK: + skillratio += 1200 + 300 * skill_lv; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + break; + case WL_HELLINFERNO: + if( status_get_element(target) == ELE_FIRE ) + skillratio = 60 * skill_lv; + else + skillratio = 240 * skill_lv; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + break; + case WL_COMET: { + struct status_change * sc = status_get_sc(src); + if( sc ) + i = distance_xy(target->x, target->y, sc->comet_x, sc->comet_y); + else + i = 8; + if( i < 2 ) skillratio = 2500 + 500 * skill_lv; + else + if( i < 4 ) skillratio = 1600 + 400 * skill_lv; + else + if( i < 6 ) skillratio = 1200 + 300 * skill_lv; + else + skillratio = 800 + 200 * skill_lv; + } + break; + case WL_CHAINLIGHTNING_ATK: + skillratio += 100 + 300 * skill_lv; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + break; + case WL_EARTHSTRAIN: + skillratio += 1900 + 100 * skill_lv; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + break; + case WL_TETRAVORTEX_FIRE: + case WL_TETRAVORTEX_WATER: + case WL_TETRAVORTEX_WIND: + case WL_TETRAVORTEX_GROUND: + skillratio += 400 + 500 * skill_lv; + break; + case WL_SUMMON_ATK_FIRE: + case WL_SUMMON_ATK_WATER: + case WL_SUMMON_ATK_WIND: + case WL_SUMMON_ATK_GROUND: + skillratio = skill_lv * (status_get_lv(src) + ( sd ? sd->status.job_level : 50 ));// This is close to official, but lacking a little info to finalize. [Rytech] + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + break; + case LG_RAYOFGENESIS: + skillratio = (skillratio + 200) * skill_lv; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + break; + case WM_METALICSOUND: + skillratio += 120 * skill_lv + 60 * ( sd? pc_checkskill(sd, WM_LESSON) : 10 ) - 100; + break; + case WM_SEVERE_RAINSTORM: + skillratio += 50 * skill_lv; + break; + case WM_REVERBERATION_MAGIC: + skillratio += 100 * (sd ? pc_checkskill(sd, WM_REVERBERATION) : 1); + break; + case SO_FIREWALK: { + struct status_change * sc = status_get_sc(src); + skillratio = 300; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + if( sc && sc->data[SC_HEATER_OPTION] ) + skillratio += skillratio * sc->data[SC_HEATER_OPTION]->val3 / 100; + } + break; + case SO_ELECTRICWALK: { + struct status_change * sc = status_get_sc(src); + skillratio = 300; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + if( sc && sc->data[SC_BLAST_OPTION] ) + skillratio += skillratio * sc->data[SC_BLAST_OPTION]->val2 / 100; + } + break; + case SO_EARTHGRAVE: { + struct status_change * sc = status_get_sc(src); + skillratio = ( 200 * ( sd ? pc_checkskill(sd, SA_SEISMICWEAPON) : 10 ) + sstatus->int_ * skill_lv ); + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + if( sc && sc->data[SC_CURSED_SOIL_OPTION] ) + skillratio += skillratio * sc->data[SC_CURSED_SOIL_OPTION]->val2 / 100; + } + break; + case SO_DIAMONDDUST: { + struct status_change * sc = status_get_sc(src); + skillratio = ( 200 * ( sd ? pc_checkskill(sd, SA_FROSTWEAPON) : 10 ) + sstatus->int_ * skill_lv ); + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + if( sc && sc->data[SC_COOLER_OPTION] ) + skillratio += skillratio * sc->data[SC_COOLER_OPTION]->val3 / 100; + } + break; + case SO_POISON_BUSTER: { + struct status_change * sc = status_get_sc(src); + skillratio += 1100 + 300 * skill_lv; + if( sc && sc->data[SC_CURSED_SOIL_OPTION] ) + skillratio += skillratio * sc->data[SC_CURSED_SOIL_OPTION]->val2 / 100; + } + break; + case SO_PSYCHIC_WAVE: { + struct status_change * sc = status_get_sc(src); + skillratio += -100 + skill_lv * 70 + (sstatus->int_ * 3); + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + if( sc ){ + if( sc->data[SC_HEATER_OPTION] ) + skillratio += skillratio * sc->data[SC_HEATER_OPTION]->val3 / 100; + else if(sc->data[SC_COOLER_OPTION] ) + skillratio += skillratio * sc->data[SC_COOLER_OPTION]->val3 / 100; + else if(sc->data[SC_BLAST_OPTION] ) + skillratio += skillratio * sc->data[SC_BLAST_OPTION]->val2 / 100; + else if(sc->data[SC_CURSED_SOIL_OPTION] ) + skillratio += skillratio * sc->data[SC_CURSED_SOIL_OPTION]->val3 / 100; + } + } + break; + case SO_VARETYR_SPEAR: { + struct status_change * sc = status_get_sc(src); + skillratio += -100 + ( 100 * ( sd ? pc_checkskill(sd, SA_LIGHTNINGLOADER) : 10 ) + sstatus->int_ * skill_lv ); + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + if( sc && sc->data[SC_BLAST_OPTION] ) + skillratio += skillratio * sc->data[SC_BLAST_OPTION]->val2 / 100; + } + break; + case SO_CLOUD_KILL: { + struct status_change * sc = status_get_sc(src); + skillratio += -100 + skill_lv * 40; + if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus. + if( sc && sc->data[SC_CURSED_SOIL_OPTION] ) + skillratio += skillratio * sc->data[SC_CURSED_SOIL_OPTION]->val2 / 100; + } + break; + case GN_DEMONIC_FIRE: + if( skill_lv > 20) + { // Fire expansion Lv.2 + skillratio += 110 + 20 * (skill_lv - 20) + status_get_int(src) * 3; // Need official INT bonus. [LimitLine] + } + else if( skill_lv > 10 ) + { // Fire expansion Lv.1 + skillratio += 110 + 20 * (skill_lv - 10) / 2; + } + else + skillratio += 110 + 20 * skill_lv; + break; + } MATK_RATE(skillratio); @@ -2550,10 +3033,19 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list //mdef2-= mdef2* i/100; } } + #if RRMODE + /** + * RE MDEF Reduction (from doddler:?title=Renewal_Changes#MDEF) + * Damage from magic = Magic Attack * 111.5/(111.5+eMDEF) + * Damage = Magic Attack * 111.5/(111.5+eMDEF) - sMDEF + **/ + ad.damage = ad.damage * ((1115/10) - mdef)/(1115/10) - mdef2; + #else if(battle_config.magic_defense_type) ad.damage = ad.damage - mdef*battle_config.magic_defense_type - mdef2; else ad.damage = ad.damage * (100-mdef)/100 - mdef2; + #endif } if (skill_num == NPC_EARTHQUAKE) @@ -2805,6 +3297,32 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * case NPC_EVILLAND: md.damage = skill_calc_heal(src,target,skill_num,skill_lv,false); break; + case RK_DRAGONBREATH: + md.damage = ((status_get_hp(src) / 50) + (status_get_max_sp(src) / 4)) * skill_lv; + if (status_get_lv(src) > 100) md.damage = md.damage * status_get_lv(src) / 150; + if (sd) md.damage = md.damage * (100 + 5 * (pc_checkskill(sd,RK_DRAGONTRAINING) - 1)) / 100; + break; + /** + * Ranger + **/ + case RA_CLUSTERBOMB: + case RA_FIRINGTRAP: + case RA_ICEBOUNDTRAP: + md.damage = (2 * skill_lv * (sstatus->dex + 100)); + if (status_get_lv(src) > 100) md.damage += md.damage * (status_get_lv(src) - 50) / 200 + 15 / 10; + md.damage = md.damage * 2;// Without BaseLv Bonus + md.damage = md.damage + (5 * sstatus->int_) + (40 * ( sd ? pc_checkskill(sd,RA_RESEARCHTRAP) : 10 ) ); + break; + /** + * Mechanic + **/ + case NC_SELFDESTRUCTION: + md.damage = (sd?pc_checkskill(sd,NC_MAINFRAME):10) * skill_lv * (status_get_sp(src) + sstatus->vit); + if (status_get_lv(src) > 100) md.damage = md.damage * status_get_lv(src) / 150;// Base level bonus. + if (sd) md.damage = md.damage + status_get_hp(src); + status_set_sp(src, 0, 0); + break; + } if (nk&NK_SPLASHSPLIT){ // Divide ATK among targets @@ -2906,11 +3424,23 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * else if( map[target->m].flag.battleground ) md.damage=battle_calc_bg_damage(src,target,md.damage,md.div_,skill_num,skill_lv,md.flag); - if (skill_num == NJ_ZENYNAGE && sd) - { //Time to Pay Up. - if ( md.damage > sd->status.zeny ) - md.damage=sd->status.zeny; - pc_payzeny(sd, md.damage); + switch( skill_num ) { + case RA_CLUSTERBOMB: + case RA_FIRINGTRAP: + case RA_ICEBOUNDTRAP: + { + struct Damage wd; + wd = battle_calc_weapon_attack(src,target,skill_num,skill_lv,mflag); + md.damage += wd.damage; + } + break; + case NJ_ZENYNAGE: + if( sd ) { + if ( md.damage > sd->status.zeny ) + md.damage = sd->status.zeny; + pc_payzeny(sd, md.damage); + } + break; } return md; @@ -2943,10 +3473,10 @@ struct Damage battle_calc_attack(int attack_type,struct block_list *bl,struct bl } //Calculates BF_WEAPON returned damage. -int battle_calc_return_damage(struct block_list* bl, int damage, int flag) +int battle_calc_return_damage(struct block_list* bl, struct block_list *src, int *dmg, int flag) { struct map_session_data* sd = NULL; - int rdamage = 0; + int rdamage = 0, damage = *dmg; sd = BL_CAST(BL_PC, bl); @@ -2959,10 +3489,24 @@ int battle_calc_return_damage(struct block_list* bl, int damage, int flag) if(rdamage < 1) rdamage = 1; } sc = status_get_sc(bl); - if (sc && sc->data[SC_REFLECTSHIELD]) - { - rdamage += damage * sc->data[SC_REFLECTSHIELD]->val2 / 100; - if (rdamage < 1) rdamage = 1; + if( sc && sc->count ) { + if (sc->data[SC_REFLECTSHIELD]) { + rdamage += damage * sc->data[SC_REFLECTSHIELD]->val2 / 100; + if (rdamage < 1) rdamage = 1; + } + if(sc->data[SC_DEATHBOUND] && !(src->type == BL_MOB && is_boss(src)) ) { + int dir = map_calc_dir(bl,src->x,src->y), + t_dir = unit_getdir(bl), rd1 = 0; + + if( distance_bl(src,bl) <= 0 || !map_check_dir(dir,t_dir) ) { + rd1 = min(damage,status_get_max_hp(bl)) * sc->data[SC_DEATHBOUND]->val2 / 100; // Amplify damage. + *dmg = rd1 * 30 / 100; // Received damge = 30% of amplifly damage. + clif_skill_damage(src,bl,gettick(), status_get_amotion(src), 0, -30000, 1, RK_DEATHBOUND, sc->data[SC_DEATHBOUND]->val1,6); + status_change_end(bl,SC_DEATHBOUND,-1); + rdamage += rd1; + if (rdamage < 1) rdamage = 1; + } + } } } else { if (sd && sd->long_weapon_damage_return) @@ -3165,7 +3709,17 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t damage = wd.damage + wd.damage2; if( damage > 0 && src != target ) { - rdamage = battle_calc_return_damage(target, damage, wd.flag); + if( sc && sc->data[SC_DUPLELIGHT] && (wd.flag&BF_SHORT) && rand()%100 <= 10+2*sc->data[SC_DUPLELIGHT]->val1 ) + { // Activates it only from melee damage + int skillid; + if( rand()%2 == 1 ) + skillid = AB_DUPLELIGHT_MELEE; + else + skillid = AB_DUPLELIGHT_MAGIC; + skill_attack(skill_get_type(skillid), src, src, target, skillid, sc->data[SC_DUPLELIGHT]->val1, tick, SD_LEVEL); + } + + rdamage = battle_calc_return_damage(target,src, &damage, wd.flag); if( rdamage > 0 ) { rdelay = clif_damage(src, src, tick, wd.amotion, sstatus->dmotion, rdamage, 1, 4, 0); @@ -3373,6 +3927,8 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f case WZ_SIGHTBLASTER: case SM_MAGNUM: case MS_MAGNUM: + case RA_DETONATOR: + case RA_SENSITIVEKEEN: state |= BCT_ENEMY; strip_enemy = 0; break; @@ -4023,6 +4579,10 @@ static const struct _battle_data { { "bg_magic_attack_damage_rate", &battle_config.bg_magic_damage_rate, 60, 0, INT_MAX, }, { "bg_misc_attack_damage_rate", &battle_config.bg_misc_damage_rate, 60, 0, INT_MAX, }, { "bg_flee_penalty", &battle_config.bg_flee_penalty, 20, 0, INT_MAX, }, + /** + * RR-Specific + **/ + { "max_third_parameter", &battle_config.max_third_parameter, 20, 0, INT_MAX, }, }; diff --git a/src/map/battle.h b/src/map/battle.h index 007499afe..a64c81041 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -35,7 +35,7 @@ struct block_list; struct Damage battle_calc_attack(int attack_type,struct block_list *bl,struct block_list *target,int skill_num,int skill_lv,int count); -int battle_calc_return_damage(struct block_list *bl, int damage, int flag); +int battle_calc_return_damage(struct block_list *bl, struct block_list *src, int *, int flag); void battle_drain(struct map_session_data *sd, struct block_list *tbl, int rdamage, int ldamage, int race, int boss); @@ -497,6 +497,8 @@ extern struct Battle_Config int bg_magic_damage_rate; int bg_misc_damage_rate; int bg_flee_penalty; + //[RR] + int max_third_parameter; } battle_config; void do_init_battle(void); @@ -507,4 +509,7 @@ extern void battle_set_defaults(void); int battle_set_value(const char* w1, const char* w2); int battle_get_value(const char* w1); +// +struct block_list* battle_getenemyarea(struct block_list *src, int x, int y, int range, int type, int ignore_id); + #endif /* _BATTLE_H_ */ diff --git a/src/map/chrif.c b/src/map/chrif.c index d1332fab2..947cb0bdc 100644 --- a/src/map/chrif.c +++ b/src/map/chrif.c @@ -505,7 +505,13 @@ void chrif_on_ready(void) ShowStatus("Map Server is now online.\n"); chrif_state = 2; chrif_check_shutdown(); - + /** + * while we're not fully ready + **/ + ShowMessage(""CL_XXBL""CL_BT_YELLOW"============= WARNING ============="CL_XXBL""CL_CLL""CL_NORMAL"\n"); + ShowMessage(""CL_XXBL"- "CL_BT_YELLOW"This version is under development and shouldn't be used as a real server"CL_XXBL""CL_CLL""CL_NORMAL"\n"); + ShowMessage(""CL_XXBL"- "CL_BT_YELLOW"For bugs, comments and suggestions: http://ro-resources.net "CL_XXBL""CL_CLL""CL_NORMAL"\n"); + ShowMessage(""CL_XXBL"- "CL_BT_YELLOW"Thank you for trying out"CL_XXBL""CL_CLL""CL_NORMAL"\n"); //If there are players online, send them to the char-server. [Skotlex] send_users_tochar(); diff --git a/src/map/clif.c b/src/map/clif.c index da2abe0f3..780b1af56 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -154,7 +154,8 @@ void clif_setbindip(const char* ip) } /*========================================== - * mapŽI‚ÌportÝ’è + * Sets map port to 'port' + * is run from map.c upon loading map server configuration *------------------------------------------*/ void clif_setport(uint16 port) { @@ -162,7 +163,7 @@ void clif_setport(uint16 port) } /*========================================== - * mapŽI‚Ìip“Ç‚Ýo‚µ + * Returns map server IP *------------------------------------------*/ uint32 clif_getip(void) { @@ -184,7 +185,7 @@ uint32 clif_refresh_ip(void) } /*========================================== - * mapŽI‚Ìport“Ç‚Ýo‚µ + * Returns map port which is set by clif_setport() *------------------------------------------*/ uint16 clif_getport(void) { @@ -210,7 +211,14 @@ static inline unsigned char clif_bl_type(struct block_list *bl) { #endif /*========================================== - * clif_send‚ÅAREA*Žw’莞—p + * sub process of clif_send + * Called from a map_foreachinarea (grabs all players in specific area and subjects them to this function) + * In order to send area-wise packets, such as: + * - AREA : everyone nearby your area + * - AREA_WOSC (AREA WITHOUT SAME CHAT) : Not run for people in the same chat as yours + * - AREA_WOC (AREA WITHOUT CHAT) : Not run for people inside a chat + * - AREA_WOS (AREA WITHOUT SELF) : Not run for self + * - AREA_CHAT_WOC : Everyone in the area of your chat without a chat *------------------------------------------*/ int clif_send_sub(struct block_list *bl, va_list ap) { @@ -273,7 +281,8 @@ int clif_send_sub(struct block_list *bl, va_list ap) } /*========================================== - * + * Packet Delegation (called on all packets that require data to be sent to more than one client) + * functions that are sent solely to one use whose ID it posses use WFIFOSET *------------------------------------------*/ int clif_send(const uint8* buf, int len, struct block_list* bl, enum send_target type) { @@ -554,11 +563,10 @@ int clif_send(const uint8* buf, int len, struct block_list* bl, enum send_target return 0; } -// -// ƒpƒPƒbƒgì‚Á‚Ä‘—M -// + /*========================================== - * + * Tells client that its player is fully loaded and that it can proceed to the map screen + * Provides client with player position and facing direction *------------------------------------------*/ int clif_authok(struct map_session_data *sd) { @@ -657,7 +665,8 @@ int clif_dropflooritem(struct flooritem_data* fitem) } /*========================================== - * + * Server tells client to remove item of ID ('fitem->bl.id') from FD player area + * If FD is 0 it tells all clients nearby this item that it is gone *------------------------------------------*/ int clif_clearflooritem(struct flooritem_data *fitem, int fd) { @@ -1105,7 +1114,8 @@ static void clif_setdisguise(struct block_list *bl, unsigned char *buf,int len) } /*========================================== - * ƒNƒ‰ƒXƒ`ƒFƒ“ƒW type‚ÍMob‚ÌꇂÍ1‚Å‘¼‚Í0H + * Acronym for 'clif_mob_class_change' used to tell clients around the monster that it's identity changed + * for example, it's run when a pupa transforms into a creamy. *------------------------------------------*/ int clif_class_change(struct block_list *bl,int class_,int type) { @@ -1124,7 +1134,7 @@ int clif_class_change(struct block_list *bl,int class_,int type) } /*========================================== - * + * Server tells client to display (sd->spiritball) amount of spiritballs on target of account id (sd->bl.id) *------------------------------------------*/ static void clif_spiritball_single(int fd, struct map_session_data *sd) { @@ -1136,7 +1146,8 @@ static void clif_spiritball_single(int fd, struct map_session_data *sd) } /*========================================== - * + * Run when player changes map / refreshes + * Tells its client to display all weather settings being used by this map *------------------------------------------*/ static void clif_weather_check(struct map_session_data *sd) { @@ -1148,7 +1159,10 @@ static void clif_weather_check(struct map_session_data *sd) || map[m].flag.fireworks || map[m].flag.sakura || map[m].flag.leaves - || map[m].flag.rain + /** + * No longer available, keeping here just in case it's back someday. [Ind] + **/ + //|| map[m].flag.rain || map[m].flag.clouds2) { if (map[m].flag.snow) @@ -1168,11 +1182,16 @@ static void clif_weather_check(struct map_session_data *sd) clif_specialeffect_single(&sd->bl, 163, fd); if (map[m].flag.leaves) clif_specialeffect_single(&sd->bl, 333, fd); - if (map[m].flag.rain) - clif_specialeffect_single(&sd->bl, 161, fd); + /** + * No longer available, keeping here just in case it's back someday. [Ind] + **/ + //if (map[m].flag.rain) + // clif_specialeffect_single(&sd->bl, 161, fd); } } - +/** + * Run when the weather on a map changes, throws all players in map id 'm' to clif_weather_check function + **/ void clif_weather(int m) { struct s_mapiterator* iter; @@ -1186,7 +1205,9 @@ void clif_weather(int m) } mapit_free(iter); } - +/** + * Main function to spawn a unit on the client (player/mob/pet/etc) + **/ int clif_spawn(struct block_list *bl) { unsigned char buf[128]; @@ -1218,6 +1239,10 @@ int clif_spawn(struct block_list *bl) clif_specialeffect(bl,421,AREA); if( sd->bg_id && map[sd->bl.m].flag.battleground ) clif_sendbgemblem_area(sd); + if( sd->sc.option&OPTION_MOUNTING ) { + //New Mounts are not complaint to the original method, so we gotta tell this guy that he is mounting. + clif_status_load_notick(&sd->bl,SI_ALL_RIDING,2,1,0,0); + } } break; case BL_MOB: @@ -1873,7 +1898,7 @@ int clif_viewpoint(struct map_session_data *sd, int npc_id, int type, int x, int } /*========================================== - * + * Server tells client to display cutin of name 'image' to client, in position 'type' (255, etc) *------------------------------------------*/ int clif_cutin(struct map_session_data* sd, const char* image, int type) { @@ -1945,7 +1970,8 @@ static void clif_addcards(unsigned char* buf, struct item* item) } /*========================================== - * + * Server tells client he got item of index 'n' and amount 'amount', + * when 'fail' is 1 it tells the client it failed to receive said item *------------------------------------------*/ int clif_additem(struct map_session_data *sd, int n, int amount, int fail) { @@ -2014,7 +2040,7 @@ int clif_additem(struct map_session_data *sd, int n, int amount, int fail) } /*========================================== - * + * *------------------------------------------*/ int clif_dropitem(struct map_session_data *sd,int n,int amount) { @@ -2457,8 +2483,9 @@ int clif_guild_xy_remove(struct map_session_data *sd) } /*========================================== - * ƒXƒe[ƒ^ƒX‚ð‘—‚è‚‚¯‚é - * •\Ž¦ê—p”Žš‚Í‚±‚Ì’†‚ÅŒvŽZ‚µ‚Ä‘—‚é + * Server tells client that data 'type' has changed and sends it's new value + * For example, when server updates the client max weight, say, due to higher STR, + * It calls this function with SP_MAXWEIGHT type *------------------------------------------*/ int clif_updatestatus(struct map_session_data *sd,int type) { @@ -2590,7 +2617,9 @@ int clif_updatestatus(struct map_session_data *sd,int type) WFIFOL(fd,4)=pc_nextjobexp(sd); break; - // 00be I—¹ + /** + * SP_U<STAT> are used to update the amount of points necessary to increase that stat + **/ case SP_USTR: case SP_UAGI: case SP_UVIT: @@ -2602,14 +2631,15 @@ int clif_updatestatus(struct map_session_data *sd,int type) len=5; break; - // 013a I—¹ + /** + * Tells the client how far it is allowed to attack (weapon range) + **/ case SP_ATTACKRANGE: WFIFOW(fd,0)=0x13a; WFIFOW(fd,2)=sd->battle_status.rhw.range; len=4; break; - // 0141 I—¹ case SP_STR: WFIFOW(fd,0)=0x141; WFIFOL(fd,2)=type; @@ -2699,7 +2729,7 @@ int clif_changestatus(struct block_list *bl,int type,int val) } /*========================================== - * + * Updates BL unit view data to nearby clients *------------------------------------------*/ void clif_changelook(struct block_list *bl,int type,int val) { @@ -2926,7 +2956,7 @@ int clif_initialstatus(struct map_session_data *sd) } /*========================================== - *–î‘•”õ + * Server tells client item idx 'val' is meant to be shown in equipment's window arrow slot *------------------------------------------*/ int clif_arrowequip(struct map_session_data *sd,int val) { @@ -2968,7 +2998,8 @@ int clif_arrow_fail(struct map_session_data *sd,int type) } /*========================================== - * 쬉”\ –ƒXƒg‘—M + * Server tells client to display a window similar to Mangifier (item) one + * Server populates the window with avilable arrow crafting options according to player's inventory *------------------------------------------*/ int clif_arrow_create_list(struct map_session_data *sd) { @@ -3004,7 +3035,7 @@ int clif_arrow_create_list(struct map_session_data *sd) } /*========================================== - * + * Server tells client his response regarding the earlier request to increase status *------------------------------------------*/ int clif_statusupack(struct map_session_data *sd,int type,int ok,int val) { @@ -3090,7 +3121,7 @@ int clif_misceffect(struct block_list* bl,int type) } /*========================================== - * •\Ž¦ƒIƒvƒVƒ‡ƒ“•ÏX + * Server tells BL unit and all nearby clients that his unit-view options (e.g. stone curse appearance) changed *------------------------------------------*/ int clif_changeoption(struct block_list* bl) { @@ -3483,7 +3514,7 @@ void clif_tradestart(struct map_session_data* sd, uint8 type) } /*========================================== - * ‘ŠŽè•û‚©‚ç‚̃AƒCƒeƒ€’ljÁ + * Server tells 'tsd' player client info on the items 'sd' player just added to the trade window *------------------------------------------*/ void clif_tradeadditem(struct map_session_data* sd, struct map_session_data* tsd, int index, int amount) { @@ -3547,7 +3578,9 @@ void clif_tradeadditem(struct map_session_data* sd, struct map_session_data* tsd } /*========================================== - * ƒAƒCƒeƒ€’ljÁ¬Œ÷/Ž¸”s + * Server tells client on the status of it's OK request + * fail 1 : the other person did 'ok' + * fail 0 : you did 'ok' *------------------------------------------*/ void clif_tradeitemok(struct map_session_data* sd, int index, int fail) { @@ -3563,7 +3596,9 @@ void clif_tradeitemok(struct map_session_data* sd, int index, int fail) } /*========================================== - * Žæ‚èˆø‚«ok‰Ÿ‚µ + * Server tells client on the status of it's lock request + * fail 1 : The other trader lock request + * fail 0 : Your lock request *------------------------------------------*/ void clif_tradedeal_lock(struct map_session_data* sd, int fail) { @@ -3578,7 +3613,7 @@ void clif_tradedeal_lock(struct map_session_data* sd, int fail) } /*========================================== - * Žæ‚èˆø‚«‚ªƒLƒƒƒ“ƒZƒ‹‚³‚ê‚Ü‚µ‚½ + * Server tells client it's trade request was cancelled *------------------------------------------*/ void clif_tradecancelled(struct map_session_data* sd) { @@ -3592,7 +3627,7 @@ void clif_tradecancelled(struct map_session_data* sd) } /*========================================== - * Žæ‚èˆø‚«Š®—¹ + * Server tells client the final status on his trade request *------------------------------------------*/ void clif_tradecompleted(struct map_session_data* sd, int fail) { @@ -3607,7 +3642,7 @@ void clif_tradecompleted(struct map_session_data* sd, int fail) } /*========================================== - * ƒJƒvƒ‰‘qŒÉ‚̃AƒCƒeƒ€”‚ðXV + * Server tells client it's quantity of items in storage changed *------------------------------------------*/ void clif_updatestorageamount(struct map_session_data* sd, int amount) { @@ -3624,7 +3659,7 @@ void clif_updatestorageamount(struct map_session_data* sd, int amount) } /*========================================== - * ƒJƒvƒ‰‘qŒÉ‚ɃAƒCƒeƒ€‚ð’ljÁ‚·‚é + * Server tells client it's status on his request to add a item to storage *------------------------------------------*/ void clif_storageitemadded(struct map_session_data* sd, struct item* i, int index, int amount) { @@ -3679,7 +3714,7 @@ void clif_updateguildstorageamount(struct map_session_data* sd, int amount) } /*========================================== - * ƒJƒvƒ‰‘qŒÉ‚©‚çƒAƒCƒeƒ€‚ðŽæ‚è‹Ž‚é + * Server tells client its status on his request to remove a item from storage *------------------------------------------*/ void clif_storageitemremoved(struct map_session_data* sd, int index, int amount) { @@ -3696,7 +3731,7 @@ void clif_storageitemremoved(struct map_session_data* sd, int index, int amount) } /*========================================== - * ƒJƒvƒ‰‘qŒÉ‚ð•Â‚¶‚é + * Server tells client his storage was closed *------------------------------------------*/ void clif_storageclose(struct map_session_data* sd) { @@ -3709,9 +3744,9 @@ void clif_storageclose(struct map_session_data* sd) WFIFOW(fd,0) = 0xf8; // Storage Closed WFIFOSET(fd,packet_len(0xf8)); } - +int clif_status_load_single(int fd, int id,int type,int flag,int val1, int val2, int val3); /*========================================== - * PC•\Ž¦ + * Server tells 'sd' player client the abouts of 'dstsd' player *------------------------------------------*/ static void clif_getareachar_pc(struct map_session_data* sd,struct map_session_data* dstsd) { @@ -3735,7 +3770,10 @@ static void clif_getareachar_pc(struct map_session_data* sd,struct map_session_d if(dstsd->spiritball > 0) clif_spiritball_single(sd->fd, dstsd); - + if( dstsd->sc.option&OPTION_MOUNTING ) { + //New Mounts are not complaint to the original method, so we gotta tell this guy that I'm mounting. + clif_status_load_single(sd->fd,dstsd->bl.id,SI_ALL_RIDING,2,1,0,0); + } if( (sd->status.party_id && dstsd->status.party_id == sd->status.party_id) || //Party-mate, or hpdisp setting. (sd->bg_id && sd->bg_id == dstsd->bg_id) || //BattleGround (battle_config.disp_hpmeter && (gmlvl = pc_isGM(sd)) >= battle_config.disp_hpmeter && gmlvl >= pc_isGM(dstsd)) ) @@ -4044,7 +4082,7 @@ void clif_getareachar_item(struct map_session_data* sd,struct flooritem_data* fi } /*========================================== - * ꊃXƒLƒ‹ƒGƒtƒFƒNƒg‚ªŽ‹ŠE‚É“ü‚é + * Server tells client 'sd' of all nearby skill units (e.g. safety wall) *------------------------------------------*/ static void clif_getareachar_skillunit(struct map_session_data *sd, struct skill_unit *unit) { @@ -4084,7 +4122,7 @@ static void clif_getareachar_skillunit(struct map_session_data *sd, struct skill } /*========================================== - * ꊃXƒLƒ‹ƒGƒtƒFƒNƒg‚ªŽ‹ŠE‚©‚çÁ‚¦‚é + * Server tells client to remove unit of id 'unit->bl.id' *------------------------------------------*/ static void clif_clearchar_skillunit(struct skill_unit *unit, int fd) { @@ -4100,7 +4138,7 @@ static void clif_clearchar_skillunit(struct skill_unit *unit, int fd) } /*========================================== - * ꊃXƒLƒ‹ƒGƒtƒFƒNƒgíœ + * Server tells all clients in sight of 'unit->bl.id' ID to remove itself from sight (delete) *------------------------------------------*/ void clif_skill_delunit(struct skill_unit *unit) { @@ -4245,7 +4283,7 @@ int clif_insight(struct block_list *bl,va_list ap) } /*========================================== - * ƒXƒLƒ‹ƒŠƒXƒg‚ð‘—M‚·‚é + * Server tells the client information on 'sd' player's skill tree *------------------------------------------*/ int clif_skillinfoblock(struct map_session_data *sd) { @@ -4282,7 +4320,9 @@ int clif_skillinfoblock(struct map_session_data *sd) return 1; } - +/** + * Server tells client 'sd' to add skill of id 'id' to it's skill tree (e.g. with Ice Falcion item) + **/ int clif_addskill(struct map_session_data *sd, int id ) { int fd; @@ -4333,7 +4373,7 @@ int clif_deleteskill(struct map_session_data *sd, int id) } /*========================================== - * ƒXƒLƒ‹Š„‚èU‚è’Ê’m + * Server tells client it's skill of id 'skill_num' level changed *------------------------------------------*/ int clif_skillup(struct map_session_data *sd,int skill_num) { @@ -4668,7 +4708,7 @@ int clif_skill_damage2(struct block_list *src,struct block_list *dst,unsigned in */ /*========================================== - * Žx‰‡/‰ñ•œƒXƒLƒ‹ƒGƒtƒFƒNƒg + * Server tells client(s) that 'src' casted a skill of nodamage type (e.g. heal) on 'dst' *------------------------------------------*/ int clif_skill_nodamage(struct block_list *src,struct block_list *dst,int skill_id,int heal,int fail) { @@ -4701,7 +4741,8 @@ int clif_skill_nodamage(struct block_list *src,struct block_list *dst,int skill_ } /*========================================== - * ꊃXƒLƒ‹ƒGƒtƒFƒNƒg + * Server tells client 'src' to display effect of skill id 'skill_id' on location 'x' and 'y' + * 'val' is used for information that varies from skill to skill, usually it's the skill level *------------------------------------------*/ int clif_skill_poseffect(struct block_list *src,int skill_id,int val,int x,int y,int tick) { @@ -4727,7 +4768,7 @@ int clif_skill_poseffect(struct block_list *src,int skill_id,int val,int x,int y } /*========================================== - * ꊃXƒLƒ‹ƒGƒtƒFƒNƒg•\Ž¦ + * Tells all client's nearby 'unit' sight range that it spawned *------------------------------------------*/ //FIXME: this is just an AREA version of clif_getareachar_skillunit() void clif_skill_setunit(struct skill_unit *unit) @@ -4765,7 +4806,7 @@ void clif_skill_setunit(struct skill_unit *unit) } /*========================================== - * ƒ[ƒvꊑI‘ð + * Used to display 'teleport' and 'warp portal' information on it's respective dialogs *------------------------------------------*/ void clif_skill_warppoint(struct map_session_data* sd, short skill_num, short skill_lv, unsigned short map1, unsigned short map2, unsigned short map3, unsigned short map4) { @@ -4832,7 +4873,7 @@ void clif_skill_teleportmessage(struct map_session_data *sd, int type) } /*========================================== - * ƒ‚ƒ“ƒXƒ^[î•ñ + * Server tells client to display 'estimation' (Sense) information for monster (bl) 'dst' *------------------------------------------*/ int clif_skill_estimation(struct map_session_data *sd,struct block_list *dst) { @@ -4868,14 +4909,15 @@ int clif_skill_estimation(struct map_session_data *sd,struct block_list *dst) return 0; } /*========================================== - * ƒAƒCƒeƒ€‡¬‰Â”\ƒŠƒXƒg + * Server tells client to display a window similar to Mangifier (item) one + * Server populates the window with avilable crafting options according to skill used to call this *------------------------------------------*/ -int clif_skill_produce_mix_list(struct map_session_data *sd, int trigger) +int clif_skill_produce_mix_list(struct map_session_data *sd, int skillid , int trigger) { int i,c,view,fd; nullpo_ret(sd); - if(sd->menuskill_id == AM_PHARMACY) + if(sd->menuskill_id == skillid) return 0; //Avoid resending the menu twice or more times... fd=sd->fd; WFIFOHEAD(fd, MAX_SKILL_PRODUCE_DB * 8 + 8); @@ -4895,7 +4937,7 @@ int clif_skill_produce_mix_list(struct map_session_data *sd, int trigger) WFIFOW(fd, 2)=c*8+8; WFIFOSET(fd,WFIFOW(fd,2)); if(c > 0) { - sd->menuskill_id = AM_PHARMACY; + sd->menuskill_id = skillid; sd->menuskill_val = trigger; return 1; } @@ -4966,9 +5008,9 @@ int clif_status_load(struct block_list *bl,int type, int flag) return 0; } /*========================================== - * ó‘ÔˆÙíƒAƒCƒRƒ“/ƒƒbƒZ[ƒW•\Ž¦ + * Server tell's BL and nearby clients of his status change *------------------------------------------*/ -int clif_status_change(struct block_list *bl,int type,int flag,unsigned int tick) +int clif_status_change(struct block_list *bl,int type,int flag,unsigned int tick,int val1, int val2, int val3) { unsigned char buf[32]; @@ -4996,9 +5038,9 @@ int clif_status_change(struct block_list *bl,int type,int flag,unsigned int tick if( battle_config.display_status_timers && tick>0 ) { WBUFL(buf,9)=tick; - WBUFL(buf,13)=0; - WBUFL(buf,17)=0; - WBUFL(buf,21)=0; + WBUFL(buf,13) = val1; + WBUFL(buf,17) = val2; + WBUFL(buf,21) = val3; } clif_send(buf,packet_len(WBUFW(buf,0)),bl,AREA); return 0; @@ -5031,7 +5073,6 @@ int clif_displaymessage(const int fd, const char* mes) } /*========================================== - * “V‚̺‚ð‘—M‚·‚é * Send broadcast message in yellow or blue (without font formatting). * S 009A <len>.W <message>.?B *------------------------------------------*/ @@ -5055,7 +5096,8 @@ int clif_broadcast(struct block_list* bl, const char* mes, int len, int type, en } /*========================================== - * ƒOƒ[ƒoƒ‹ƒƒbƒZ[ƒW + * Displays a message on a 'bl' to all it's nearby clients + * Used by npc_globalmessage *------------------------------------------*/ void clif_GlobalMessage(struct block_list* bl, const char* message) { @@ -5128,7 +5170,8 @@ int clif_broadcast2(struct block_list* bl, const char* mes, int len, unsigned lo return 0; } /*========================================== - * HPSP‰ñ•œƒGƒtƒFƒNƒg‚ð‘—M‚·‚é + * Server tells self client to heal self for 'val', is either SP_HP or SP_SP + * It displays these green and blue heal numbers that show up at your body and go up until they fade away *------------------------------------------*/ int clif_heal(int fd,int type,int val) { @@ -5142,7 +5185,7 @@ int clif_heal(int fd,int type,int val) } /*========================================== - * •œŠˆ‚·‚é + * Server tells nearby clients of 'bl' that it ressurected (and plays ress effect) *------------------------------------------*/ int clif_resurrection(struct block_list *bl,int type) { @@ -5190,7 +5233,8 @@ void clif_map_type(struct map_session_data* sd, enum map_type type) } /*========================================== - * PVPŽÀ‘•H(‰¼) + * Server tells client on it's pvp rank and map status, + * (it controls the counter on the bottom right of the map existent in pvp rooms) *------------------------------------------*/ int clif_pvpset(struct map_session_data *sd,int pvprank,int pvpnum,int type) { @@ -5239,7 +5283,8 @@ void clif_map_property_mapall(int map, enum map_property property) } /*========================================== - * ¸˜BƒGƒtƒFƒNƒg‚ð‘—M‚·‚é + * Server tells client the status on refine of item index 'index' from refine 'val' + * Message displayed depends on 'fail' (broken(red) or success(blue)) *------------------------------------------*/ void clif_refine(int fd, int fail, int index, int val) { @@ -5308,7 +5353,8 @@ int clif_wis_end(int fd, int flag) } /*========================================== - * ƒLƒƒƒ‰ID–¼‘Oˆø‚«Œ‹‰Ê‚ð‘—M‚·‚é + * Server tells client that char id 'charid' is to be assigned the name of 'name' + * This is used when client requests the server the name written in a item, e.g. crafted alche potions *------------------------------------------*/ int clif_solved_charname(int fd, int charid, const char* name) { @@ -5321,7 +5367,7 @@ int clif_solved_charname(int fd, int charid, const char* name) } /*========================================== - * ƒJ[ƒh‚Ì‘}“ü‰Â”\ƒŠƒXƒg‚ð•Ô‚· + * Server tells client to list all items that may be worn by card item of index 'idx' *------------------------------------------*/ int clif_use_card(struct map_session_data *sd,int idx) { @@ -5371,7 +5417,7 @@ int clif_use_card(struct map_session_data *sd,int idx) return 0; } /*========================================== - * ƒJ[ƒh‚Ì‘}“üI—¹ + * Server tells client his status on the previous clif_use_card (failed or OK) *------------------------------------------*/ int clif_insert_card(struct map_session_data *sd,int idx_equip,int idx_card,int flag) { @@ -5390,7 +5436,7 @@ int clif_insert_card(struct map_session_data *sd,int idx_equip,int idx_card,int } /*========================================== - * ŠÓ’è‰Â”\ƒAƒCƒeƒ€ƒŠƒXƒg‘—M + * Server tells client it's list of unidentified items *------------------------------------------*/ int clif_item_identify_list(struct map_session_data *sd) { @@ -5419,7 +5465,7 @@ int clif_item_identify_list(struct map_session_data *sd) } /*========================================== - * ŠÓ’茋‰Ê + * Server tells client his item of index 'idx' has been identified *------------------------------------------*/ int clif_item_identified(struct map_session_data *sd,int idx,int flag) { @@ -5437,7 +5483,7 @@ int clif_item_identified(struct map_session_data *sd,int idx,int flag) } /*========================================== - * C—‰Â”\ƒAƒCƒeƒ€ƒŠƒXƒg‘—M + * Server tells client the list of broken items *------------------------------------------*/ int clif_item_repair_list(struct map_session_data *sd,struct map_session_data *dstsd) { @@ -5537,7 +5583,9 @@ int clif_item_refine_list(struct map_session_data *sd) } /*========================================== - * ƒAƒCƒeƒ€‚É‚æ‚éˆêŽž“I‚ȃXƒLƒ‹Œø‰Ê + * Server tells client to display the 'green skill name' at the top of the screen + target cursor, + * for skill 'skillid' of 'skilllv' level + * Used for example when player uses a skill scroll (e.g. Fire Bolt Scroll) *------------------------------------------*/ int clif_item_skill(struct map_session_data *sd,int skillid,int skilllv) { @@ -5561,7 +5609,7 @@ int clif_item_skill(struct map_session_data *sd,int skillid,int skilllv) } /*========================================== - * ƒJ[ƒg‚ɃAƒCƒeƒ€’ljÁ + * Server tells client it's status on trying to add item of index 'n' and amount 'amount' to it's cart *------------------------------------------*/ int clif_cart_additem(struct map_session_data *sd,int n,int amount,int fail) { @@ -5611,7 +5659,7 @@ int clif_cart_additem(struct map_session_data *sd,int n,int amount,int fail) } /*========================================== - * ƒJ[ƒg‚©‚çƒAƒCƒeƒ€íœ + * Server tells client it's status on trying to remove item of index 'n' and amount 'amount' from it's cart to invent *------------------------------------------*/ int clif_cart_delitem(struct map_session_data *sd,int n,int amount) { @@ -5996,10 +6044,11 @@ void clif_party_inviteack(struct map_session_data* sd, const char* nick, int res /*========================================== - * ƒp[ƒeƒBÝ’è‘—M - * flag & 0x001=exp•ÏXƒ~ƒX - * 0x010=item•ÏXƒ~ƒX - * 0x100=ˆêl‚É‚Ì‚Ý‘—M + * Server tells client (and it's party members) of a change in the party settings + * 'Flag' Options + * - 0x01 (exp) + * - 0x10 (item) + * - 0x100 (party member logged in / was added to party) *------------------------------------------*/ int clif_party_option(struct party_data *p,struct map_session_data *sd,int flag) { @@ -6034,7 +6083,7 @@ int clif_party_option(struct party_data *p,struct map_session_data *sd,int flag) return 0; } /*========================================== - * ƒp[ƒeƒB’E‘Þi’E‘Þ‘O‚ɌĂԂ±‚Æj + * Server tells party members of party 'p' that 'sd' player left *------------------------------------------*/ int clif_party_withdraw(struct party_data* p, struct map_session_data* sd, int account_id, const char* name, int flag) { @@ -6056,15 +6105,14 @@ int clif_party_withdraw(struct party_data* p, struct map_session_data* sd, int a WBUFL(buf,2)=account_id; memcpy(WBUFP(buf,6),name,NAME_LENGTH); WBUFB(buf,30)=flag&0x0f; - if((flag&0xf0)==0) clif_send(buf,packet_len(0x105),&sd->bl,PARTY); - else + else clif_send(buf,packet_len(0x105),&sd->bl,SELF); return 0; } /*========================================== - * ƒp[ƒeƒBƒƒbƒZ[ƒW‘—M + * Server deploys a message to all party members, called from party.c:party_recv_message() *------------------------------------------*/ int clif_party_message(struct party_data* p, int account_id, const char* mes, int len) { @@ -6086,7 +6134,7 @@ int clif_party_message(struct party_data* p, int account_id, const char* mes, in return 0; } /*========================================== - * ƒp[ƒeƒBÀ•W’Ê’m + * Server tells all party members of 'sd' player that 'sd' player location changed *------------------------------------------*/ int clif_party_xy(struct map_session_data *sd) { @@ -6119,7 +6167,7 @@ int clif_party_xy_single(int fd, struct map_session_data *sd) /*========================================== - * ƒp[ƒeƒBHP’Ê’m + * Server tells nearby party members of 'sd' that his hp bar has updated *------------------------------------------*/ int clif_party_hp(struct map_session_data *sd) { @@ -6224,7 +6272,7 @@ int clif_hpmeter_sub(struct block_list *bl, va_list ap) } /*========================================== - * GM‚ÖꊂÆHP’Ê’m + * Server tells all nearby gms to 'sd' that 'sd' hp bar was updated *------------------------------------------*/ int clif_hpmeter(struct map_session_data *sd) { @@ -6237,7 +6285,7 @@ int clif_hpmeter(struct map_session_data *sd) } /*========================================== - * ƒp[ƒeƒBꊈړ®i–¢Žg—pj + * (?) Server tells 'sd' party members that 'sd' state 'changed' *------------------------------------------*/ void clif_party_move(struct party* p, struct map_session_data* sd, int online) { @@ -6258,7 +6306,8 @@ void clif_party_move(struct party* p, struct map_session_data* sd, int online) clif_send(buf,packet_len(0x104),&sd->bl,PARTY); } /*========================================== - * UŒ‚‚·‚邽‚߂Ɉړ®‚ª•K—v + * Server tells client to attack bl, if not in range of attack (rhw.range) it'll move to bl + * called from unit.c *------------------------------------------*/ int clif_movetoattack(struct map_session_data *sd,struct block_list *bl) { @@ -6280,7 +6329,7 @@ int clif_movetoattack(struct map_session_data *sd,struct block_list *bl) return 0; } /*========================================== - * »‘¢ƒGƒtƒFƒNƒg + * Server tells client to display produce effect (refine-like), success or failure depends on 'flag' *------------------------------------------*/ int clif_produceeffect(struct map_session_data* sd,int flag,int nameid) { @@ -6331,7 +6380,7 @@ int clif_pet_roulette(struct map_session_data *sd,int data) } /*========================================== - * pet—‘ƒŠƒXƒgì¬ + * Server tells client to list it's eggs (used in hatching window to select a egg) *------------------------------------------*/ int clif_sendegg(struct map_session_data *sd) { @@ -6461,7 +6510,7 @@ int clif_pet_food(struct map_session_data *sd,int foodid,int fail) } /*========================================== - * ƒI[ƒgƒXƒyƒ‹ ƒŠƒXƒg‘—M + * Server tells client to display autospell (Sage Skill) skill selection list *------------------------------------------*/ int clif_autospell(struct map_session_data *sd,int skilllv) { @@ -6549,7 +6598,7 @@ void clif_devotion(struct block_list *src, struct map_session_data *tsd) } /*========================================== - * Ÿ†‹… + * Server tells clients nearby 'sd' (and himself) to display 'sd->spiritball' number of spiritballs on 'sd' *------------------------------------------*/ int clif_spiritball(struct map_session_data *sd) { @@ -6581,7 +6630,8 @@ int clif_combo_delay(struct block_list *bl,int wait) return 0; } /*========================================== - *”’nŽæ‚è + * Server tells client to display blade stop animation 'link' from 'src' to 'dst_id' (account id of target) + * active toggles the state *------------------------------------------*/ void clif_bladestop(struct block_list *src, int dst_id, int active) { @@ -6598,7 +6648,7 @@ void clif_bladestop(struct block_list *src, int dst_id, int active) } /*========================================== - * MVPƒGƒtƒFƒNƒg + * Server tells clients nearby 'sd' (and itself) to display MvP killed effect on 'sd' player *------------------------------------------*/ int clif_mvp_effect(struct map_session_data *sd) { @@ -6612,7 +6662,7 @@ int clif_mvp_effect(struct map_session_data *sd) return 0; } /*========================================== - * MVPƒAƒCƒeƒ€Š“¾ + * Server tells client to display mvp drop prize info to player 'sd' for item id 'nameid' *------------------------------------------*/ int clif_mvp_item(struct map_session_data *sd,int nameid) { @@ -6631,7 +6681,7 @@ int clif_mvp_item(struct map_session_data *sd,int nameid) return 0; } /*========================================== - * MVPŒoŒ±’lŠ“¾ + * Server tells client to display mvp exp prize to player 'sd' for amount 'exp' *------------------------------------------*/ int clif_mvp_exp(struct map_session_data *sd, unsigned int exp) { @@ -6693,7 +6743,7 @@ void clif_guild_belonginfo(struct map_session_data *sd, struct guild *g) /*========================================== - * ƒMƒ‹ƒhƒƒ“ƒoƒƒOƒCƒ“’Ê’m + * Server tells all members of 'g' guild that member of index 'idx' is online or offline (flag 1:0) *------------------------------------------*/ int clif_guild_memberlogin_notice(struct guild *g,int idx,int flag) { @@ -6755,7 +6805,7 @@ int clif_guild_send_onlineinfo(struct map_session_data *sd) } /*========================================== - * ƒMƒ‹ƒhƒ}ƒXƒ^[’Ê’m(14d‚ւ̉ž“š) + * Tells 'sd' whether he is the guild master of his guild or not (relies on sd->state.gmaster_flag) *------------------------------------------*/ int clif_guild_masterormember(struct map_session_data *sd) { @@ -6814,7 +6864,7 @@ int clif_guild_basicinfo(struct map_session_data *sd) } /*========================================== - * ƒMƒ‹ƒh“¯–¿/“G‘Îî•ñ + * Server tells client 'sd' it's guild alliances *------------------------------------------*/ int clif_guild_allianceinfo(struct map_session_data *sd) { @@ -6843,7 +6893,7 @@ int clif_guild_allianceinfo(struct map_session_data *sd) } /*========================================== - * ƒMƒ‹ƒhƒƒ“ƒo[ƒŠƒXƒg + * Server tells client it's guild member list *------------------------------------------*/ int clif_guild_memberlist(struct map_session_data *sd) { @@ -6873,7 +6923,7 @@ int clif_guild_memberlist(struct map_session_data *sd) WFIFOL(fd,c*104+22)=(int)cap_value(m->exp,0,INT32_MAX); WFIFOL(fd,c*104+26)=m->online; WFIFOL(fd,c*104+30)=m->position; - memset(WFIFOP(fd,c*104+34),0,50); // ƒƒ‚H + memset(WFIFOP(fd,c*104+34),0,50); //[Ind] - This is displayed in the 'note' column but being you can't edit it it's sent empty. memcpy(WFIFOP(fd,c*104+84),m->name,NAME_LENGTH); c++; } @@ -6882,7 +6932,7 @@ int clif_guild_memberlist(struct map_session_data *sd) return 0; } /*========================================== - * ƒMƒ‹ƒh–ðE–¼ƒŠƒXƒg + * Server tell client it's guild position list *------------------------------------------*/ int clif_guild_positionnamelist(struct map_session_data *sd) { @@ -6905,7 +6955,7 @@ int clif_guild_positionnamelist(struct map_session_data *sd) return 0; } /*========================================== - * ƒMƒ‹ƒh–ðEî•ñƒŠƒXƒg + * Server tell client about it's guild position permissions and tax *------------------------------------------*/ int clif_guild_positioninfolist(struct map_session_data *sd) { @@ -6931,7 +6981,7 @@ int clif_guild_positioninfolist(struct map_session_data *sd) return 0; } /*========================================== - * ƒMƒ‹ƒh–ðE•ÏX’Ê’m + * Server tells client about position 'idx' information, being it changed *------------------------------------------*/ int clif_guild_positionchanged(struct guild *g,int idx) { @@ -6952,7 +7002,7 @@ int clif_guild_positionchanged(struct guild *g,int idx) return 0; } /*========================================== - * ƒMƒ‹ƒhƒƒ“ƒo•ÏX’Ê’m + * Server tells client about a specific guild member index that changed *------------------------------------------*/ int clif_guild_memberpositionchanged(struct guild *g,int idx) { @@ -6971,7 +7021,7 @@ int clif_guild_memberpositionchanged(struct guild *g,int idx) return 0; } /*========================================== - * ƒMƒ‹ƒhƒGƒ“ƒuƒŒƒ€‘—M + * Server tells client about this new cool emblem a specific guild got *------------------------------------------*/ int clif_guild_emblem(struct map_session_data *sd,struct guild *g) { @@ -7076,7 +7126,7 @@ int clif_guild_notice(struct map_session_data* sd, struct guild* g) } /*========================================== - * ƒMƒ‹ƒhƒƒ“ƒoŠ©—U + * Server tells client 'sd' that guild 'g' wants to invite him *------------------------------------------*/ int clif_guild_invite(struct map_session_data *sd,struct guild *g) { @@ -7116,7 +7166,7 @@ int clif_guild_inviteack(struct map_session_data *sd,int flag) } /*========================================== - * ƒMƒ‹ƒhƒƒ“ƒo’E‘Þ’Ê’m + * Server tells guild members of 'sd' that he left his guild for a reason *------------------------------------------*/ int clif_guild_leave(struct map_session_data *sd,const char *name,const char *mes) { @@ -7132,7 +7182,7 @@ int clif_guild_leave(struct map_session_data *sd,const char *name,const char *me } /*========================================== - * ƒMƒ‹ƒhƒƒ“ƒo’Ç•ú’Ê’m + * Server tells guild members of 'sd' that 'name' of account id 'account_id' was expelled for reason 'mes' *------------------------------------------*/ void clif_guild_expulsion(struct map_session_data* sd, const char* name, const char* mes, int account_id) { @@ -7155,7 +7205,7 @@ void clif_guild_expulsion(struct map_session_data* sd, const char* name, const c } /*========================================== - * ƒMƒ‹ƒh’Ç•úƒƒ“ƒoƒŠƒXƒg + * Server tells client on sd's guild expulsion records *------------------------------------------*/ void clif_guild_expulsionlist(struct map_session_data* sd) { @@ -7225,7 +7275,7 @@ void clif_guild_message(struct guild *g,int account_id,const char *mes,int len) /*========================================== - * ƒMƒ‹ƒhƒXƒLƒ‹Š„‚èU‚è’Ê’m + * Server tells client 'sd' that his guild skill 'skill_num' gone to level 'lv' *------------------------------------------*/ int clif_guild_skillup(struct map_session_data *sd,int skill_num,int lv) { @@ -7245,7 +7295,7 @@ int clif_guild_skillup(struct map_session_data *sd,int skill_num,int lv) return 0; } /*========================================== - * ƒMƒ‹ƒh“¯–¿—v¿ + * Server tells client 'sd' that 'account_id' from guild name 'name' wants to invite 'sd's guild for alliance *------------------------------------------*/ int clif_guild_reqalliance(struct map_session_data *sd,int account_id,const char *name) { @@ -7284,7 +7334,7 @@ int clif_guild_allianceack(struct map_session_data *sd,int flag) return 0; } /*========================================== - * ƒMƒ‹ƒhŠÖŒW‰ðÁ’Ê’m + * Server tells client 'sd' that guild_id is either in or out of it's alliance list (depend on flag) *------------------------------------------*/ int clif_guild_delalliance(struct map_session_data *sd,int guild_id,int flag) { @@ -7337,7 +7387,7 @@ int clif_guild_oppositionack(struct map_session_data *sd,int flag) }*/ /*========================================== - * ƒMƒ‹ƒh‰ðŽU’Ê’m + * Server tells client 'sd' that guild broke because of 'flag' reason *------------------------------------------*/ int clif_guild_broken(struct map_session_data *sd,int flag) { @@ -7354,7 +7404,7 @@ int clif_guild_broken(struct map_session_data *sd,int flag) } /*========================================== - * ƒGƒ‚[ƒVƒ‡ƒ“ + * Server tells all nearby clients of 'bl' to display emoticon number 'type' *------------------------------------------*/ void clif_emotion(struct block_list *bl,int type) { @@ -7369,7 +7419,7 @@ void clif_emotion(struct block_list *bl,int type) } /*========================================== - * ƒg[ƒL[ƒ{ƒbƒNƒX + * Server tells all clients nearby 'bl' that he stepped in a talkie box (and displays the message) *------------------------------------------*/ void clif_talkiebox(struct block_list* bl, const char* talkie) { @@ -7383,7 +7433,7 @@ void clif_talkiebox(struct block_list* bl, const char* talkie) } /*========================================== - * Œ‹¥ƒGƒtƒFƒNƒg + * Server tells bl and nearby clients to display marriage effect *------------------------------------------*/ void clif_wedding_effect(struct block_list *bl) { @@ -7396,7 +7446,7 @@ void clif_wedding_effect(struct block_list *bl) clif_send(buf, packet_len(0x1ea), bl, AREA); } /*========================================== - * ?‚È‚½‚Ɉ§‚¢‚½‚¢Žg—pŽž–¼‘O‹©‚Ñ + * Server tells client 'sd' to create a warp to call his partner (wedding skill) *------------------------------------------*/ void clif_callpartner(struct map_session_data *sd) @@ -7562,41 +7612,41 @@ void clif_GM_silence(struct map_session_data* sd, struct map_session_data* tsd, } /*========================================== - * Wis‹‘”Û‹–‰Â‰ž“š + * ? Unknown functionality : not called anywhere *------------------------------------------*/ -int clif_wisexin(struct map_session_data *sd,int type,int flag) -{ - int fd; - - nullpo_ret(sd); - - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0xd1)); - WFIFOW(fd,0)=0xd1; - WFIFOB(fd,2)=type; - WFIFOB(fd,3)=flag; - WFIFOSET(fd,packet_len(0xd1)); - - return 0; -} +//int clif_wisexin(struct map_session_data *sd,int type,int flag) +//{ +// int fd; +// +// nullpo_ret(sd); +// +// fd=sd->fd; +// WFIFOHEAD(fd,packet_len(0xd1)); +// WFIFOW(fd,0)=0xd1; +// WFIFOB(fd,2)=type; +// WFIFOB(fd,3)=flag; +// WFIFOSET(fd,packet_len(0xd1)); +// +// return 0; +//} /*========================================== - * Wis‘S‹‘”Û‹–‰Â‰ž“š + * ? Unknown functionality : not called anywhere *------------------------------------------*/ -int clif_wisall(struct map_session_data *sd,int type,int flag) -{ - int fd; - - nullpo_ret(sd); - - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0xd2)); - WFIFOW(fd,0)=0xd2; - WFIFOB(fd,2)=type; - WFIFOB(fd,3)=flag; - WFIFOSET(fd,packet_len(0xd2)); - - return 0; -} +//int clif_wisall(struct map_session_data *sd,int type,int flag) +//{ +// int fd; +// +// nullpo_ret(sd); +// +// fd=sd->fd; +// WFIFOHEAD(fd,packet_len(0xd2)); +// WFIFOW(fd,0)=0xd2; +// WFIFOB(fd,2)=type; +// WFIFOB(fd,3)=flag; +// WFIFOSET(fd,packet_len(0xd2)); +// +// return 0; +//} /*========================================== * Play a BGM! [Rikter/Yommy] @@ -7615,7 +7665,8 @@ void clif_playBGM(struct map_session_data* sd, const char* name) } /*========================================== - * ƒTƒEƒ“ƒhƒGƒtƒFƒNƒg + * Server tells 'bl' to play a .wav music file in client's /wav/ folder named 'name' + * functionality of 'type' is unclear. it's normally sent as '0' *------------------------------------------*/ void clif_soundeffect(struct map_session_data* sd, struct block_list* bl, const char* name, int type) { @@ -8459,7 +8510,7 @@ static int clif_guess_PacketVer(int fd, int get_previous, int *error) // ------------ // clif_parse_* // ------------ -// ƒpƒPƒbƒg“Ç‚ÝŽæ‚Á‚ÄFX‘€ì +// Parses incoming (player) connection /*========================================== * *------------------------------------------*/ @@ -8548,8 +8599,9 @@ void clif_parse_WantToConnection(int fd, TBL_PC* sd) } /*========================================== - * 007d ƒNƒ‰ƒCƒAƒ“ƒg‘¤ƒ}ƒbƒv“Ç‚Ýž‚ÝŠ®—¹ - * mapN“üŽž‚É•K—v‚ȃf[ƒ^‚ð‘S‚Ä‘—‚è‚‚¯‚é + * 007d : Server/Client tells that he is able to proceed + * This is run by both server (from pc.c) and client (on map load/refresh + * (teleport/warping in same map also triggers this) *------------------------------------------*/ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) { @@ -9020,9 +9072,11 @@ void clif_parse_GlobalMessage(int fd, struct map_session_data* sd) const char* text = (char*)RFIFOP(fd,4); int textlen = RFIFOW(fd,2) - 4; - char *name, *message; + char *name, *message, *fakename = NULL; int namelen, messagelen; + bool is_fake; + // validate packet and retrieve name and message if( !clif_process_message(sd, 0, &name, &namelen, &message, &messagelen) ) return; @@ -9039,21 +9093,35 @@ void clif_parse_GlobalMessage(int fd, struct map_session_data* sd) return; sd->cantalk_tick = gettick() + battle_config.min_chat_delay; } - + /** + * Fake Name Design by FatalEror (bug report #9) + **/ + if( ( is_fake = ( sd->fakename[0] ) ) ) { + fakename = (char*) malloc(strlen(sd->fakename)+messagelen+3); + strcpy(fakename, sd->fakename); + strcat(fakename, " : "); + strcat(fakename, message); + textlen = strlen(fakename) + 1; + } // send message to others (using the send buffer for temp. storage) WFIFOHEAD(fd, 8 + textlen); WFIFOW(fd,0) = 0x8d; WFIFOW(fd,2) = 8 + textlen; WFIFOL(fd,4) = sd->bl.id; - safestrncpy((char*)WFIFOP(fd,8), text, textlen); + safestrncpy((char*)WFIFOP(fd,8), is_fake ? fakename : text, textlen); //FIXME: chat has range of 9 only clif_send(WFIFOP(fd,0), WFIFOW(fd,2), &sd->bl, sd->chatID ? CHAT_WOS : AREA_CHAT_WOC); // send back message to the speaker - memcpy(WFIFOP(fd,0), RFIFOP(fd,0), RFIFOW(fd,2)); - WFIFOW(fd,0) = 0x8e; + if( is_fake ) { + WFIFOW(fd,0) = 0x8e; + WFIFOW(fd,2) = textlen + 4; + safestrncpy((char*)WFIFOP(fd,4), fakename, textlen); + } else { + memcpy(WFIFOP(fd,0), RFIFOP(fd,0), RFIFOW(fd,2)); + WFIFOW(fd,0) = 0x8e; + } WFIFOSET(fd, WFIFOW(fd,2)); - #ifdef PCRE_SUPPORT // trigger listening npcs map_foreachinrange(npc_chat_sub, &sd->bl, AREA_SIZE, BL_NPC, text, textlen, &sd->bl); @@ -9837,7 +9905,7 @@ static void clif_noask_sub(struct map_session_data *src, struct map_session_data } /*========================================== - * Žæˆø—v¿‚ð‘ŠŽè‚É‘—‚é + * Client tells server to send a trade request to char id RFIFOL(fd,2) *------------------------------------------*/ void clif_parse_TradeRequest(int fd,struct map_session_data *sd) { @@ -9864,7 +9932,7 @@ void clif_parse_TradeRequest(int fd,struct map_session_data *sd) } /*========================================== - * Žæˆø—v¿ + * Client tells server he replied to a trade request sent to him *------------------------------------------*/ void clif_parse_TradeAck(int fd,struct map_session_data *sd) { @@ -9872,7 +9940,7 @@ void clif_parse_TradeAck(int fd,struct map_session_data *sd) } /*========================================== - * ƒAƒCƒeƒ€’ljÁ + * Client tells server to add RFIFOL(fd,4) quantity of item index RFIFOW(fd,2) *------------------------------------------*/ void clif_parse_TradeAddItem(int fd,struct map_session_data *sd) { @@ -9886,7 +9954,7 @@ void clif_parse_TradeAddItem(int fd,struct map_session_data *sd) } /*========================================== - * ƒAƒCƒeƒ€’ljÁŠ®—¹(ok‰Ÿ‚µ) + * Client tells server player he is done adding items to his trade window *------------------------------------------*/ void clif_parse_TradeOk(int fd,struct map_session_data *sd) { @@ -9894,7 +9962,7 @@ void clif_parse_TradeOk(int fd,struct map_session_data *sd) } /*========================================== - * ŽæˆøƒLƒƒƒ“ƒZƒ‹ + * Client tells server player cancelled the trade *------------------------------------------*/ void clif_parse_TradeCancel(int fd,struct map_session_data *sd) { @@ -9902,7 +9970,7 @@ void clif_parse_TradeCancel(int fd,struct map_session_data *sd) } /*========================================== - * Žæˆø‹–‘ø(trade‰Ÿ‚µ) + * Client tells server player 'locked' the trade screen (can't add/remove items) *------------------------------------------*/ void clif_parse_TradeCommit(int fd,struct map_session_data *sd) { @@ -9918,7 +9986,7 @@ void clif_parse_StopAttack(int fd,struct map_session_data *sd) } /*========================================== - * ƒJ[ƒg‚ÖƒAƒCƒeƒ€‚ðˆÚ‚· + * Client tells server player dragged (RFIFOL(fd,4))x of item idx RIFOFW(fd,2)-2 to cart *------------------------------------------*/ void clif_parse_PutItemToCart(int fd,struct map_session_data *sd) { @@ -9929,7 +9997,7 @@ void clif_parse_PutItemToCart(int fd,struct map_session_data *sd) pc_putitemtocart(sd,RFIFOW(fd,2)-2,RFIFOL(fd,4)); } /*========================================== - * ƒJ[ƒg‚©‚çƒAƒCƒeƒ€‚ðo‚· + * Client tells server to take y (RFIFOL(fd,4)) amount of item (idx:RFIFOW(fd,2)-2) from cart and add to inventory *------------------------------------------*/ void clif_parse_GetItemFromCart(int fd,struct map_session_data *sd) { @@ -9939,16 +10007,18 @@ void clif_parse_GetItemFromCart(int fd,struct map_session_data *sd) } /*========================================== - * •t‘®•i(‘é,ƒyƒR,ƒJ[ƒg)‚ð‚Í‚¸‚· + * Client tells server the user hit the 'OFF' button in the equip window (appears when mounting, with falcon, etc) *------------------------------------------*/ void clif_parse_RemoveOption(int fd,struct map_session_data *sd) { - //Can only remove Cart/Riding/Falcon. - pc_setoption(sd,sd->sc.option&~(OPTION_CART|OPTION_RIDING|OPTION_FALCON)); + /** + * Attempts to remove these options when this function is called (will remove all available) + **/ + pc_setoption(sd,sd->sc.option&~(OPTION_CART|OPTION_RIDING|OPTION_FALCON|OPTION_DRAGON|OPTION_MADOGEAR)); } /*========================================== - * ƒ`ƒFƒ“ƒWƒJ[ƒg + * Client tells server the user selected cart type 'type', comes from cart selection screen (Change Cart Skill) *------------------------------------------*/ void clif_parse_ChangeCart(int fd,struct map_session_data *sd) { @@ -9968,7 +10038,7 @@ void clif_parse_ChangeCart(int fd,struct map_session_data *sd) } /*========================================== - * ƒXƒe[ƒ^ƒXƒAƒbƒv + * Client tells Server to process a /str, /vit, etc(others) *------------------------------------------*/ void clif_parse_StatusUp(int fd,struct map_session_data *sd) { @@ -9976,7 +10046,7 @@ void clif_parse_StatusUp(int fd,struct map_session_data *sd) } /*========================================== - * ƒXƒLƒ‹ƒŒƒxƒ‹ƒAƒbƒv + * Client tells server to level up skill (RFIFOW(fd,2)) by 1 *------------------------------------------*/ void clif_parse_SkillUp(int fd,struct map_session_data *sd) { @@ -10056,7 +10126,7 @@ static void clif_parse_UseSkillToPos_mercenary(struct mercenary_data *md, struct } /*========================================== - * ƒXƒLƒ‹Žg—piIDŽw’èj + * Client tells server he'd like to use skill of id 'skillnum' and level 'skilllv' on 'target_id' *------------------------------------------*/ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) { @@ -10163,7 +10233,7 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) } /*========================================== - * ƒXƒLƒ‹Žg—piꊎw’èj + * Client tells server he'd like to use AoE skill id 'skillnum' of level 'skilllv' on 'x','y' location *------------------------------------------*/ void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, short skilllv, short skillnum, short x, short y, int skillmoreinfo) { @@ -10273,7 +10343,7 @@ void clif_parse_UseSkillToPosMoreInfo(int fd, struct map_session_data *sd) ); } /*========================================== - * ƒXƒLƒ‹Žg—pimapŽw’èj + * (?) I *think* this one is for skills cast on self, not entirely sure *------------------------------------------*/ void clif_parse_UseSkillMap(int fd, struct map_session_data* sd) { @@ -10294,7 +10364,7 @@ void clif_parse_UseSkillMap(int fd, struct map_session_data* sd) skill_castend_map(sd,skill_num,map_name); } /*========================================== - * ƒƒ‚—v‹ + * Client tells server he did '/memo' *------------------------------------------*/ void clif_parse_RequestMemo(int fd,struct map_session_data *sd) { @@ -10302,13 +10372,12 @@ void clif_parse_RequestMemo(int fd,struct map_session_data *sd) pc_memo(sd,-1); } /*========================================== - * ƒAƒCƒeƒ€‡¬ + * Client tells server he selected something from a crafting window (e.g. pharmacy) *------------------------------------------*/ void clif_parse_ProduceMix(int fd,struct map_session_data *sd) { - if (sd->menuskill_id != AM_PHARMACY) + if( sd->menuskill_id != -1 && sd->menuskill_id != AM_PHARMACY && sd->menuskill_id != RK_RUNEMASTERY ) return; - if (pc_istrading(sd)) { //Make it fail to avoid shop exploits where you sell something different than you see. clif_skill_fail(sd,sd->ud.skillid,0,0); @@ -10341,7 +10410,7 @@ void clif_parse_Cooking(int fd,struct map_session_data *sd) sd->menuskill_val = sd->menuskill_id = 0; } /*========================================== - * •ŠíC— + * Client tells server he selected something in his 'repair item list' *------------------------------------------*/ void clif_parse_RepairItem(int fd, struct map_session_data *sd) { @@ -10446,7 +10515,7 @@ void clif_parse_NpcCloseClicked(int fd,struct map_session_data *sd) } /*========================================== - * ƒAƒCƒeƒ€ŠÓ’è + * Client tells server he selected something in his 'magnifier item list' *------------------------------------------*/ void clif_parse_ItemIdentify(int fd,struct map_session_data *sd) { @@ -10463,23 +10532,35 @@ void clif_parse_ItemIdentify(int fd,struct map_session_data *sd) sd->menuskill_val = sd->menuskill_id = 0; } /*========================================== - * –îì¬ + * Client tells server he selected something in his 'arrow crafting list' *------------------------------------------*/ void clif_parse_SelectArrow(int fd,struct map_session_data *sd) { - if (sd->menuskill_id != AC_MAKINGARROW) - return; if (pc_istrading(sd)) { //Make it fail to avoid shop exploits where you sell something different than you see. clif_skill_fail(sd,sd->ud.skillid,0,0); sd->menuskill_val = sd->menuskill_id = 0; return; } - skill_arrow_create(sd,RFIFOW(fd,2)); + switch( sd->menuskill_id ) { + case AC_MAKINGARROW: + skill_arrow_create(sd,RFIFOW(fd,2)); + break; + case WL_READING_SB: + skill_spellbook(sd,RFIFOW(fd,2)); + break; + case GC_POISONINGWEAPON: + skill_poisoningweapon(sd,RFIFOW(fd,2)); + break; + case NC_MAGICDECOY: + skill_magicdecoy(sd,RFIFOW(fd,2)); + break; + } + sd->menuskill_val = sd->menuskill_id = 0; } /*========================================== - * ƒI[ƒgƒXƒyƒ‹ŽóM + * Client tells server he selected something in his 'autospell skill list' *------------------------------------------*/ void clif_parse_AutoSpell(int fd,struct map_session_data *sd) { @@ -10489,7 +10570,7 @@ void clif_parse_AutoSpell(int fd,struct map_session_data *sd) sd->menuskill_val = sd->menuskill_id = 0; } /*========================================== - * ƒJ[ƒhŽg—p + * Client tells server he clicked on a card item, requests the can-add-to list *------------------------------------------*/ void clif_parse_UseCard(int fd,struct map_session_data *sd) { @@ -10498,7 +10579,7 @@ void clif_parse_UseCard(int fd,struct map_session_data *sd) clif_use_card(sd,RFIFOW(fd,2)-2); } /*========================================== - * ƒJ[ƒh‘}“ü‘•”õ‘I‘ð + * Client tells server he selected something in his 'carding list' (the one that lists all items you got that can receive that card) *------------------------------------------*/ void clif_parse_InsertCard(int fd,struct map_session_data *sd) { @@ -10508,7 +10589,7 @@ void clif_parse_InsertCard(int fd,struct map_session_data *sd) } /*========================================== - * 0193 ƒLƒƒƒ‰ID–¼‘Oˆø‚« + * 0193 : Client asks server for nick reference to a specific char id *------------------------------------------*/ void clif_parse_SolveCharName(int fd, struct map_session_data *sd) { @@ -10567,7 +10648,7 @@ void clif_parse_LocalBroadcast(int fd, struct map_session_data* sd) } /*========================================== - * ƒJƒvƒ‰‘qŒÉ‚Ö“ü‚ê‚é + * Client tells server to move (item_amount) quantity of item idx (item_index) from inventory to storage *------------------------------------------*/ void clif_parse_MoveToKafra(int fd, struct map_session_data *sd) { @@ -10589,7 +10670,7 @@ void clif_parse_MoveToKafra(int fd, struct map_session_data *sd) } /*========================================== - * ƒJƒvƒ‰‘qŒÉ‚©‚ço‚· + * Client tells server to move (item_amount) quantity of item idx (item_index) from storage to inventory *------------------------------------------*/ void clif_parse_MoveFromKafra(int fd,struct map_session_data *sd) { @@ -10606,7 +10687,7 @@ void clif_parse_MoveFromKafra(int fd,struct map_session_data *sd) } /*========================================== - * ƒJƒvƒ‰‘qŒÉ‚ÖƒJ[ƒg‚©‚ç“ü‚ê‚é + * Client tells server to move RFIFOL(fd,4) quantity of item idx RFIFOW(fd,2) from cart to storage *------------------------------------------*/ void clif_parse_MoveToKafraFromCart(int fd, struct map_session_data *sd) { @@ -10623,7 +10704,7 @@ void clif_parse_MoveToKafraFromCart(int fd, struct map_session_data *sd) } /*========================================== - * ƒJƒvƒ‰‘qŒÉ‚©‚ço‚· + * Client tells server to move RFIFOL(fd,4) quantity of item idx RFIFOW(fd,2) from storage to cart *------------------------------------------*/ void clif_parse_MoveFromKafraToCart(int fd, struct map_session_data *sd) { @@ -10640,7 +10721,7 @@ void clif_parse_MoveFromKafraToCart(int fd, struct map_session_data *sd) } /*========================================== - * ƒJƒvƒ‰‘qŒÉ‚ð•Â‚¶‚é + * Client tells server to close the kafra *------------------------------------------*/ void clif_parse_CloseKafra(int fd, struct map_session_data *sd) { @@ -10771,7 +10852,7 @@ void clif_parse_ReplyPartyInvite2(int fd,struct map_session_data *sd) } /*========================================== - * ƒp[ƒeƒB’E‘Þ—v‹ + * Client tells server to remove itself from it's party *------------------------------------------*/ void clif_parse_LeaveParty(int fd, struct map_session_data *sd) { @@ -10784,7 +10865,7 @@ void clif_parse_LeaveParty(int fd, struct map_session_data *sd) } /*========================================== - * ƒp[ƒeƒBœ–¼—v‹ + * Client tells server to remove player account id RFIFOL(fd,2) with char name RFIFOP(fd,6) from his party *------------------------------------------*/ void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd) { @@ -10797,7 +10878,11 @@ void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd) } /*========================================== - * ƒp[ƒeƒBÝ’è•ÏX—v‹ + * Client tells server to change it's party configuration + * - clients before 20090603 + * -- It only may toggle exp sharing + * - 20090603 or newer + * -- It may toggle exp (RFIFOW(fd,2) and item sharing options (RFIFOB(fd,6) and RFIFOB(fd,7)) *------------------------------------------*/ void clif_parse_PartyChangeOption(int fd, struct map_session_data *sd) { @@ -11251,7 +11336,7 @@ void clif_parse_GuildChangeNotice(int fd, struct map_session_data* sd) } /*========================================== - * ƒMƒ‹ƒhŠ©—U + * Client tells server to invite account id RFIFOL(fd,2) to his guild *------------------------------------------*/ void clif_parse_GuildInvite(int fd,struct map_session_data *sd) { @@ -11275,7 +11360,8 @@ void clif_parse_GuildInvite(int fd,struct map_session_data *sd) } /*========================================== - * ƒMƒ‹ƒhŠ©—U•ÔM + * Client tells server his reply on the request from guild ID RFIFOL(fd,2), + * - based on RFIFOB(fd,6) which is either 1 (accept) or 0 (reject) *------------------------------------------*/ void clif_parse_GuildReplyInvite(int fd,struct map_session_data *sd) { @@ -11283,7 +11369,7 @@ void clif_parse_GuildReplyInvite(int fd,struct map_session_data *sd) } /*========================================== - * ƒMƒ‹ƒh’E‘Þ + * Client tells server he wants to leave his current guild *------------------------------------------*/ void clif_parse_GuildLeave(int fd,struct map_session_data *sd) { @@ -11351,7 +11437,7 @@ void clif_parse_GuildMessage(int fd, struct map_session_data* sd) } /*========================================== - * ƒMƒ‹ƒh“¯–¿—v‹ + * Client tells server he'd like to send a alliance request to account id RFIFOL(fd,2) *------------------------------------------*/ void clif_parse_GuildRequestAlliance(int fd, struct map_session_data *sd) { @@ -11378,7 +11464,8 @@ void clif_parse_GuildRequestAlliance(int fd, struct map_session_data *sd) } /*========================================== - * ƒMƒ‹ƒh“¯–¿—v‹•ÔM + * Client tells server his response to the alliance request from, + * Guild ID RFIFOL(fd,2) based on RFIFOL(fd,6) which is 1 (accepted) or 0 (rejected) *------------------------------------------*/ void clif_parse_GuildReplyAlliance(int fd, struct map_session_data *sd) { @@ -11386,7 +11473,8 @@ void clif_parse_GuildReplyAlliance(int fd, struct map_session_data *sd) } /*========================================== - * ƒMƒ‹ƒhŠÖŒW‰ðÁ + * Client tells server he'd like to delete alliance from guild ID RFIFOL(fd,2), + * RFIFOL(fd,6) returns a 1 or 0 flag but apparently it is no longer used *------------------------------------------*/ void clif_parse_GuildDelAlliance(int fd, struct map_session_data *sd) { @@ -11402,7 +11490,7 @@ void clif_parse_GuildDelAlliance(int fd, struct map_session_data *sd) } /*========================================== - * ƒMƒ‹ƒh“G‘Î + * Client tells server he'd like his guild to be set antagonist of account id RFIFOL(fd,2)'s guild *------------------------------------------*/ void clif_parse_GuildOpposition(int fd, struct map_session_data *sd) { @@ -11429,7 +11517,7 @@ void clif_parse_GuildOpposition(int fd, struct map_session_data *sd) } /*========================================== - * ƒMƒ‹ƒh‰ðŽU + * Client tells server he'd like to break (delete) his own guild *------------------------------------------*/ void clif_parse_GuildBreak(int fd, struct map_session_data *sd) { @@ -11476,7 +11564,7 @@ void clif_parse_ChangePetName(int fd, struct map_session_data *sd) } /*========================================== - * /kill <???> + * /kill <account_id> * (or right click menu for GM "(name) force to quit") * S 00cc <id>.L *------------------------------------------*/ @@ -11997,7 +12085,7 @@ void clif_parse_PMIgnoreAll(int fd, struct map_session_data *sd) } /*========================================== - * Wis‹‘”ÛƒŠƒXƒg + * Client tells server he'd like the server to list him his ignore list *------------------------------------------*/ void clif_parse_PMIgnoreList(int fd,struct map_session_data *sd) { @@ -12015,7 +12103,7 @@ void clif_parse_PMIgnoreList(int fd,struct map_session_data *sd) } /*========================================== - * ƒXƒpƒmƒr‚Ì/doridori‚É‚æ‚éSPR2”{ + * Client tells server he did a /doridori *------------------------------------------*/ void clif_parse_NoviceDoriDori(int fd, struct map_session_data *sd) { @@ -13214,7 +13302,6 @@ void clif_parse_Auction_setitem(int fd, struct map_session_data *sd) clif_Auction_setitem(fd, idx + 2, false); } - /// Result from an auction action (ZC_AUCTION_RESULT) /// 0250 <result>.B /// result: @@ -14329,7 +14416,7 @@ void clif_displayexp(struct map_session_data *sd, unsigned int exp, char type, b /// 0: Displays 'value' for 5 seconds. /// 1: Incremental counter (1 tick/second), negated 'value' specifies start value (e.g. using -10 lets the counter start at 10). /// 2: Decremental counter (1 tick/second), negated 'value' specifies start value (does not stop when reaching 0, but overflows). -/// 3: Decremental counter (2 ticks/second), 'value' specifies start value (stops when reaching 0, displays at most 2 digits). +/// 3: Decremental counter (1 tick/second), 'value' specifies start value (stops when reaching 0, displays at most 2 digits). /// value: /// Except for type 3 it is interpreted as seconds for displaying as DD:HH:MM:SS, HH:MM:SS, MM:SS or SS (leftmost '00' is not displayed). void clif_showdigit(struct map_session_data* sd, unsigned char type, int value) @@ -14886,6 +14973,183 @@ void clif_parse_debug(int fd,struct map_session_data *sd) ShowDump(RFIFOP(fd,0), packet_len); } +/** + * Rune Knight + **/ +void clif_millenniumshield(struct map_session_data *sd, short shields ) { +#if PACKETVER >= 20081217 + unsigned char buf[10]; + + WBUFW(buf,0) = 0x440; + WBUFL(buf,2) = sd->bl.id; + WBUFW(buf,6) = shields; + WBUFW(buf,8) = 0; + clif_send(buf,packet_len(0x440),&sd->bl,AREA); +#endif +} +/** + * Warlock + **/ +/*========================================== + * Spellbook list [LimitLine/3CeAM] + *------------------------------------------*/ +int clif_spellbook_list(struct map_session_data *sd) +{ + int i, c; + int fd; + + nullpo_ret(sd); + + fd = sd->fd; + WFIFOHEAD(fd, 8 * 8 + 8); + WFIFOW(fd,0) = 0x1ad; + + for( i = 0, c = 0; i < MAX_INVENTORY; i ++ ) + { + if( itemdb_is_spellbook(sd->status.inventory[i].nameid) ) + { + WFIFOW(fd, c * 2 + 4) = sd->status.inventory[i].nameid; + c ++; + } + } + + if( c > 0 ) + { + WFIFOW(fd,2) = c * 2 + 4; + WFIFOSET(fd, WFIFOW(fd, 2)); + sd->menuskill_id = WL_READING_SB; + sd->menuskill_val = c; + } + else + status_change_end(&sd->bl,SC_STOP,-1); + + return 1; +} +/** + * Mechanic + **/ +/*========================================== + * Magic Decoy Material List + *------------------------------------------*/ +int clif_magicdecoy_list(struct map_session_data *sd, int skill_lv, short x, short y) { + int i, c; + int fd; + + nullpo_ret(sd); + + fd = sd->fd; + WFIFOHEAD(fd, 8 * 8 + 8); + WFIFOW(fd,0) = 0x1ad; // This is the official packet. [pakpil] + + for( i = 0, c = 0; i < MAX_INVENTORY; i ++ ) { + if( itemdb_is_element(sd->status.inventory[i].nameid) ) { + WFIFOW(fd, c * 2 + 4) = sd->status.inventory[i].nameid; + c ++; + } + } + if( c > 0 ) { + sd->menuskill_id = NC_MAGICDECOY; + sd->menuskill_val = skill_lv; + sd->sc.comet_x = x; + sd->sc.comet_y = y; + WFIFOW(fd,2) = c * 2 + 4; + WFIFOSET(fd, WFIFOW(fd, 2)); + } else { + clif_skill_fail(sd,NC_MAGICDECOY,0,0); + return 0; + } + + return 1; +} +/** + * Guilotine Cross + **/ +/*========================================== + * Guillotine Cross Poisons List + *------------------------------------------*/ +int clif_poison_list(struct map_session_data *sd, int skill_lv) { + int i, c; + int fd; + + nullpo_ret(sd); + + fd = sd->fd; + WFIFOHEAD(fd, 8 * 8 + 8); + WFIFOW(fd,0) = 0x1ad; // This is the official packet. [pakpil] + + for( i = 0, c = 0; i < MAX_INVENTORY; i ++ ) { + if( itemdb_is_poison(sd->status.inventory[i].nameid) ) { + WFIFOW(fd, c * 2 + 4) = sd->status.inventory[i].nameid; + c ++; + } + } + if( c > 0 ) { + sd->menuskill_id = GC_POISONINGWEAPON; + sd->menuskill_val = skill_lv; + WFIFOW(fd,2) = c * 2 + 4; + WFIFOSET(fd, WFIFOW(fd, 2)); + } else { + clif_skill_fail(sd,GC_POISONINGWEAPON,0x2b,0); + return 0; + } + + return 1; +} +/** + * Sends a new status without a tick (currently used by the new mounts) + **/ +int clif_status_load_notick(struct block_list *bl,int type,int flag,int val1, int val2, int val3) { + unsigned char buf[32]; + + nullpo_ret(bl); + + WBUFW(buf,0)=0x043f; + WBUFW(buf,2)=type; + WBUFL(buf,4)=bl->id; + WBUFB(buf,8)=flag; + WBUFL(buf,9) = 0; + WBUFL(buf,13) = val1; + WBUFL(buf,17) = val2; + WBUFL(buf,21) = val3; + + clif_send(buf,packet_len(WBUFW(buf,0)),bl,AREA); + return 0; +} +//Notifies FD of ID's type +int clif_status_load_single(int fd, int id,int type,int flag,int val1, int val2, int val3) { + WFIFOHEAD(fd, packet_len(0x043f)); + WFIFOW(fd,0)=0x043f; + WFIFOW(fd,2)=type; + WFIFOL(fd,4)=id; + WFIFOB(fd,8)=flag; + WFIFOL(fd,9) = 0; + WFIFOL(fd,13) = val1; + WFIFOL(fd,17) = val2; + WFIFOL(fd,21) = val3; + WFIFOSET(fd, packet_len(0x043f)); + return 0; +} +// msgstringtable.txt +// 0x291 <line>.W +void clif_msgtable(int fd, int line) { + WFIFOHEAD(fd, packet_len(0x291)); + WFIFOW(fd, 0) = 0x291; + WFIFOW(fd, 2) = line; + WFIFOSET(fd, packet_len(0x291)); +} + +// msgstringtable.txt +// 0x7e2 <line>.W <value>.L +void clif_msgtable_num(int fd, int line, int num) { +#if PACKETVER >= 20090805 + WFIFOHEAD(fd, packet_len(0x7e2)); + WFIFOW(fd, 0) = 0x7e2; + WFIFOW(fd, 2) = line; + WFIFOL(fd, 4) = num; + WFIFOSET(fd, packet_len(0x7e2)); +#endif +} + /*========================================== * Main client packet processing function *------------------------------------------*/ @@ -15055,7 +15319,7 @@ int clif_parse(int fd) } /*========================================== - * ƒpƒPƒbƒgƒf[ƒ^ƒx[ƒX“Ç‚Ýž‚Ý + * Reads packet_db.txt and setups its array reference *------------------------------------------*/ static int packetdb_readdb(void) { diff --git a/src/map/clif.h b/src/map/clif.h index 783c8f4a1..8b6271075 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -343,7 +343,7 @@ int clif_skill_estimation(struct map_session_data *sd,struct block_list *dst); void clif_skill_warppoint(struct map_session_data* sd, short skill_num, short skill_lv, unsigned short map1, unsigned short map2, unsigned short map3, unsigned short map4); void clif_skill_memomessage(struct map_session_data* sd, int type); void clif_skill_teleportmessage(struct map_session_data* sd, int type); -int clif_skill_produce_mix_list(struct map_session_data *sd, int trigger); +int clif_skill_produce_mix_list(struct map_session_data *sd, int skillid, int trigger); void clif_cooking_list(struct map_session_data *sd, int trigger); int clif_produceeffect(struct map_session_data* sd,int flag,int nameid); @@ -361,7 +361,7 @@ void clif_bladestop(struct block_list* src, int dst_id, int active); void clif_changemapcell(int fd, int m, int x, int y, int type, enum send_target target); int clif_status_load(struct block_list *bl,int type, int flag); -int clif_status_change(struct block_list *bl,int type,int flag,unsigned int tick); +int clif_status_change(struct block_list *bl,int type,int flag,unsigned int tick,int val1, int val2, int val3); int clif_wis_message(int fd, const char* nick, const char* mes, int mes_len); int clif_wis_end(int fd,int flag); @@ -629,5 +629,29 @@ void clif_search_store_info_ack(struct map_session_data* sd); void clif_search_store_info_failed(struct map_session_data* sd, unsigned char reason); void clif_open_search_store_info(struct map_session_data* sd); void clif_search_store_info_click_ack(struct map_session_data* sd, short x, short y); - +/** + * 3CeAM + **/ +void clif_msgtable(int fd, int line); +void clif_msgtable_num(int fd, int line, int num); +/** + * Rune Knight + **/ +void clif_millenniumshield(struct map_session_data *sd, short shields ); +/** + * Warlock + **/ +int clif_spellbook_list(struct map_session_data *sd); +/** + * Mechanic + **/ +int clif_magicdecoy_list(struct map_session_data *sd, int skill_lv, short x, short y); +/** + * Guilotine Cross + **/ +int clif_poison_list(struct map_session_data *sd, int skill_lv); +/** + * [RRInd] for the new mounts + **/ +int clif_status_load_notick(struct block_list *bl,int type,int flag,int val1, int val2, int val3); #endif /* _CLIF_H_ */ diff --git a/src/map/itemdb.c b/src/map/itemdb.c index d8a8bb2cc..00d4176c5 100644 --- a/src/map/itemdb.c +++ b/src/map/itemdb.c @@ -706,7 +706,35 @@ static int itemdb_gendercheck(struct item_data *id) return (battle_config.ignore_items_gender) ? 2 : id->sex; } - +/** + * [RRInd] + * For backwards compatibility, in Renewal mode, MATK from weapons comes from the atk slot + * We use a ':' delimiter which, if not found, assumes the weapon does not provide any matk. + **/ +void itemdb_rr_split_atoi(char *str, int *atk, int *matk) { + int i, val[2]; + + for (i=0; i<2; i++) { + if (!str) break; + val[i] = atoi(str); + str = strchr(str,':'); + if (str) + *str++=0; + } + if( i == 0 ) { + *atk = *matk = 0; + return;//no data found + } + if( i == 1 ) {//Single Value, we assume it's the ATK + *atk = val[0]; + *matk = 0; + return; + } + //We assume we have 2 values. + *atk = val[0]; + *matk = val[1]; + return; +} /*========================================== * processes one itemdb entry *------------------------------------------*/ @@ -736,7 +764,7 @@ static bool itemdb_parse_dbrow(char** str, const char* source, int line, int scr id->type = atoi(str[3]); - if( id->type < 0 || id->type == IT_UNKNOWN || id->type == IT_UNKNOWN2 || ( id->type > IT_DELAYCONSUME && id->type < IT_CASH ) || id->type >= IT_MAX ) + if( id->type < 0 || id->type == IT_UNKNOWN || id->type == IT_UNKNOWN2 || ( id->type > IT_THROWWEAPON && id->type < IT_CASH ) || id->type >= IT_MAX ) {// catch invalid item types ShowWarning("itemdb_parse_dbrow: Invalid item type %d for item %d. IT_ETC will be used.\n", id->type, nameid); id->type = IT_ETC; @@ -773,7 +801,11 @@ static bool itemdb_parse_dbrow(char** str, const char* source, int line, int scr id->value_buy, id->value_sell, nameid, id->jname); id->weight = atoi(str[6]); +#if RRMODE + itemdb_rr_split_atoi(str[7],&id->atk,&id->matk); +#else id->atk = atoi(str[7]); +#endif id->def = atoi(str[8]); id->range = atoi(str[9]); id->slot = atoi(str[10]); @@ -835,7 +867,14 @@ static bool itemdb_parse_dbrow(char** str, const char* source, int line, int scr *------------------------------------------*/ static int itemdb_readdb(void) { - const char* filename[] = { "item_db.txt", "item_db2.txt" }; + /** + * ro-resources inheritance: item_db -> item_db_re -> item_db2 (user customs) + **/ +#if RRMODE + const char* filename[] = { "item_db.txt","item_db_re.txt","item_db2.txt" }; +#else + const char* filename[] = { "item_db.txt","item_db2.txt" }; +#endif int fi; for( fi = 0; fi < ARRAYLENGTH(filename); ++fi ) @@ -947,7 +986,11 @@ static int itemdb_readdb(void) *======================================*/ static int itemdb_read_sqldb(void) { +#if RRMODE + const char* item_db_name[] = { item_db_db, item_db_re_db, item_db2_db }; +#else const char* item_db_name[] = { item_db_db, item_db2_db }; +#endif int fi; for( fi = 0; fi < ARRAYLENGTH(item_db_name); ++fi ) diff --git a/src/map/itemdb.h b/src/map/itemdb.h index 5b54acd67..801b81be8 100644 --- a/src/map/itemdb.h +++ b/src/map/itemdb.h @@ -5,6 +5,7 @@ #define _ITEMDB_H_ #include "../common/mmo.h" // ITEM_NAME_LENGTH +#include "map.h" //RRMODE #define MAX_RANDITEM 11000 @@ -13,6 +14,11 @@ #define MAX_SEARCH 5 //Designed for search functions, species max number of matches to display. +/** + * Arch Bishop + **/ +#define ITEMID_ANCILLA 12333 + #define ITEMID_YELLOW_GEMSTONE 715 #define ITEMID_RED_GEMSTONE 716 #define ITEMID_BLUE_GEMSTONE 717 @@ -50,6 +56,9 @@ struct item_data { int equip; int weight; int atk; +#if RRMODE + int matk;//[RRInd] -- used in RE for matk +#endif int def; int range; int slot; @@ -61,7 +70,7 @@ struct item_data { //Lupus: I rearranged order of these fields due to compatibility with ITEMINFO script command // some script commands should be revised as well... unsigned int class_base[3]; //Specifies if the base can wear this item (split in 3 indexes per type: 1-1, 2-1, 2-2) - unsigned class_upper : 3; //Specifies if the upper-type can equip it (bitfield, 1: normal, 2: upper, 3: baby) + unsigned class_upper : 4; //Specifies if the upper-type can equip it (bitfield, 1: normal, 2: upper, 3: baby,4:third) struct { unsigned short chance; int id; @@ -143,4 +152,35 @@ void itemdb_reload(void); void do_final_itemdb(void); int do_init_itemdb(void); +/** + * Rune Knight + **/ +enum { + ITEMID_NAUTHIZ = 12725, + ITEMID_RAIDO, + ITEMID_BERKANA, + ITEMID_ISA, + ITEMID_OTHILA, + ITEMID_URUZ, + ITEMID_THURISAZ, + ITEMID_WYRD, + ITEMID_HAGALAZ, +} rune_list; +#define itemdb_is_rune(n) (n >= ITEMID_NAUTHIZ && n <= ITEMID_HAGALAZ) +/** + * Warlock + **/ +#define itemdb_is_spellbook(n) (n >= 6188 && n <= 6205) +/** + * Ranger + **/ +#define ITEMID_TRAP_ALLOY 7940 +/** + * Mechanic + **/ +#define itemdb_is_element(n) (n >= 990 && n <= 993) +/** + * Guilotine Cross + **/ +#define itemdb_is_poison(n) (n >= 12717 && n <= 12724) #endif /* _ITEMDB_H_ */ diff --git a/src/map/map.c b/src/map/map.c index 39077de6c..9155a11f3 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -68,6 +68,7 @@ Sql* mmysql_handle; int db_use_sqldbs = 0; char item_db_db[32] = "item_db"; char item_db2_db[32] = "item_db2"; +char item_db_re_db[32] = "item_db_re"; char mob_db_db[32] = "mob_db"; char mob_db2_db[32] = "mob_db2"; @@ -3205,6 +3206,9 @@ int map_config_read(char *cfgName) if (strcmpi(w1, "import") == 0) map_config_read(w2); else + if (strcmpi(w1, "console_msg_log") == 0) + console_msg_log = atoi(w2);//[Ind] + else ShowWarning("Unknown setting '%s' in file %s\n", w1, cfgName); } @@ -3526,41 +3530,39 @@ void do_abort(void) /*====================================================== * Map-Server Version Screen [MC Cameri] *------------------------------------------------------*/ -void map_helpscreen(int flag) -{ - puts("Usage: map-server [options]"); - puts("Options:"); - puts(CL_WHITE" Commands\t\t\tDescription"CL_RESET); - puts("-----------------------------------------------------------------------------"); - puts(" --help, --h, --?, /? Displays this help screen"); - puts(" --map-config <file> Load map-server configuration from <file>"); - puts(" --battle-config <file> Load battle configuration from <file>"); - puts(" --atcommand-config <file> Load atcommand configuration from <file>"); - puts(" --script-config <file> Load script configuration from <file>"); - puts(" --msg-config <file> Load message configuration from <file>"); - puts(" --grf-path-file <file> Load grf path file configuration from <file>"); - puts(" --sql-config <file> Load inter-server configuration from <file>"); - puts(" (SQL Only)"); - puts(" --log-config <file> Load logging configuration from <file>"); - puts(" (SQL Only)"); - puts(" --version, --v, -v, /v Displays the server's version"); - puts("\n"); - if (flag) exit(EXIT_FAILURE); +static void map_helpscreen(bool do_exit) +{ + ShowInfo("Usage: %s [options]\n", SERVER_NAME); + ShowInfo("\n"); + ShowInfo("Options:\n"); + ShowInfo(" -?, -h [--help]\t\tDisplays this help screen.\n"); + ShowInfo(" -v [--version]\t\tDisplays the server's version.\n"); + ShowInfo(" --run-once\t\t\tCloses server after loading (testing).\n"); + ShowInfo(" --map-config <file>\t\tAlternative map-server configuration.\n"); + ShowInfo(" --battle-config <file>\tAlternative battle configuration.\n"); + ShowInfo(" --atcommand-config <file>\tAlternative atcommand configuration.\n"); + ShowInfo(" --script-config <file>\tAlternative script configuration.\n"); + ShowInfo(" --msg-config <file>\t\tAlternative message configuration.\n"); + ShowInfo(" --grf-path <file>\t\tAlternative GRF path configuration.\n"); + ShowInfo(" --inter-config <file>\t\tAlternative inter-server configuration.\n"); + ShowInfo(" --log-config <file>\t\tAlternative logging configuration.\n"); + if( do_exit ) + exit(EXIT_SUCCESS); } /*====================================================== * Map-Server Version Screen [MC Cameri] *------------------------------------------------------*/ -void map_versionscreen(int flag) +static void map_versionscreen(bool do_exit) { - ShowInfo(CL_WHITE "eAthena version %d.%02d.%02d, Athena Mod version %d" CL_RESET"\n", - ATHENA_MAJOR_VERSION, ATHENA_MINOR_VERSION, ATHENA_REVISION, - ATHENA_MOD_VERSION); - ShowInfo(CL_GREEN "Website/Forum:" CL_RESET "\thttp://eathena.deltaanime.net/\n"); - ShowInfo(CL_GREEN "IRC Channel:" CL_RESET "\tirc://irc.deltaanime.net/#athena\n"); - ShowInfo("\nOpen " CL_WHITE "readme.html" CL_RESET " for more information."); - if (ATHENA_RELEASE_FLAG) ShowNotice("This version is not for release.\n"); - if (flag) exit(EXIT_FAILURE); + ShowInfo(CL_WHITE"eAthena version %d.%02d.%02d, Athena Mod version %d" CL_RESET"\n", ATHENA_MAJOR_VERSION, ATHENA_MINOR_VERSION, ATHENA_REVISION, ATHENA_MOD_VERSION); + ShowInfo(CL_GREEN"Website/Forum:"CL_RESET"\thttp://eathena.ws/\n"); + ShowInfo(CL_GREEN"IRC Channel:"CL_RESET"\tirc://irc.deltaanime.net/#athena\n"); + ShowInfo("Open "CL_WHITE"readme.html"CL_RESET" for more information.\n"); + if(ATHENA_RELEASE_FLAG) + ShowNotice("This version is not for release.\n"); + if( do_exit ) + exit(EXIT_SUCCESS); } /*====================================================== @@ -3591,6 +3593,16 @@ void do_shutdown(void) } } +static bool map_arg_next_value(const char* option, int i, int argc) +{ + if( i >= argc-1 ) + { + ShowWarning("Missing value for option '%s'.\n", option); + return false; + } + + return true; +} int do_init(int argc, char *argv[]) { @@ -3611,31 +3623,67 @@ int do_init(int argc, char *argv[]) srand(gettick()); - for (i = 1; i < argc ; i++) { - if (strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "--h") == 0 || strcmp(argv[i], "--?") == 0 || strcmp(argv[i], "/?") == 0) - map_helpscreen(1); - else if (strcmp(argv[i], "--version") == 0 || strcmp(argv[i], "--v") == 0 || strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "/v") == 0) - map_versionscreen(1); - else if (strcmp(argv[i], "--map_config") == 0 || strcmp(argv[i], "--map-config") == 0) - MAP_CONF_NAME=argv[i+1]; - else if (strcmp(argv[i],"--battle_config") == 0 || strcmp(argv[i],"--battle-config") == 0) - BATTLE_CONF_FILENAME = argv[i+1]; - else if (strcmp(argv[i],"--atcommand_config") == 0 || strcmp(argv[i],"--atcommand-config") == 0) - ATCOMMAND_CONF_FILENAME = argv[i+1]; - else if (strcmp(argv[i],"--script_config") == 0 || strcmp(argv[i],"--script-config") == 0) - SCRIPT_CONF_NAME = argv[i+1]; - else if (strcmp(argv[i],"--msg_config") == 0 || strcmp(argv[i],"--msg-config") == 0) - MSG_CONF_NAME = argv[i+1]; - else if (strcmp(argv[i],"--grf_path_file") == 0 || strcmp(argv[i],"--grf-path-file") == 0) - GRF_PATH_FILENAME = argv[i+1]; -#ifndef TXT_ONLY - else if (strcmp(argv[i],"--inter_config") == 0 || strcmp(argv[i],"--inter-config") == 0) - INTER_CONF_NAME = argv[i+1]; -#endif - else if (strcmp(argv[i],"--log_config") == 0 || strcmp(argv[i],"--log-config") == 0) - LOG_CONF_NAME = argv[i+1]; - else if (strcmp(argv[i],"--run_once") == 0) // close the map-server as soon as its done.. for testing [Celest] - runflag = 0; + for( i = 1; i < argc ; i++ ) + { + const char* arg = argv[i]; + + if( arg[0] != '-' && ( arg[0] != '/' || arg[1] == '-' ) ) + {// -, -- and / + ShowError("Unknown option '%s'.\n", argv[i]); + exit(EXIT_FAILURE); + } + else if( (++arg)[0] == '-' ) + {// long option + arg++; + + if( strcmp(arg, "help") == 0 ) + map_helpscreen(true); + else if( strcmp(arg, "version") == 0 ) + map_versionscreen(true); + else if( strcmp(arg, "map-config") == 0 ) { + if( map_arg_next_value(arg, i, argc) ) + MAP_CONF_NAME = argv[++i]; + } else if( strcmp(arg, "battle-config") == 0 ) { + if( map_arg_next_value(arg, i, argc) ) + BATTLE_CONF_FILENAME = argv[++i]; + } else if( strcmp(arg, "atcommand-config") == 0 ) { + if( map_arg_next_value(arg, i, argc) ) + ATCOMMAND_CONF_FILENAME = argv[++i]; + } else if( strcmp(arg, "script-config") == 0 ) { + if( map_arg_next_value(arg, i, argc) ) + SCRIPT_CONF_NAME = argv[++i]; + } else if( strcmp(arg, "msg-config") == 0 ) { + if( map_arg_next_value(arg, i, argc) ) + MSG_CONF_NAME = argv[++i]; + } else if( strcmp(arg, "grf-path-file") == 0 ) { + if( map_arg_next_value(arg, i, argc) ) + GRF_PATH_FILENAME = argv[++i]; + } else if( strcmp(arg, "inter-config") == 0 ) { + if( map_arg_next_value(arg, i, argc) ) + INTER_CONF_NAME = argv[++i]; + } else if( strcmp(arg, "log-config") == 0 ) { + if( map_arg_next_value(arg, i, argc) ) + LOG_CONF_NAME = argv[++i]; + } else if( strcmp(arg, "run-once") == 0 ) // close the map-server as soon as its done.. for testing [Celest] + runflag = CORE_ST_STOP; + else { + ShowError("Unknown option '%s'.\n", argv[i]); + exit(EXIT_FAILURE); + } + } + else switch( arg[0] ) + {// short option + case '?': + case 'h': + map_helpscreen(true); + break; + case 'v': + map_versionscreen(true); + break; + default: + ShowError("Unknown option '%s'.\n", argv[i]); + exit(EXIT_FAILURE); + } } map_config_read(MAP_CONF_NAME); diff --git a/src/map/map.h b/src/map/map.h index 8e4507599..18f5f3928 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -10,6 +10,11 @@ #include "../common/mapindex.h" #include "../common/db.h" +/** + * [ro-resources.net] + **/ +#include "./RRConfig/Core.h" + #include <stdarg.h> struct npc_data; @@ -46,7 +51,7 @@ enum E_MAPSERVER_ST #define NATURAL_HEAL_INTERVAL 500 #define MIN_FLOORITEM 2 #define MAX_FLOORITEM START_ACCOUNT_NUM -#define MAX_LEVEL 99 +#define MAX_LEVEL 150 #define MAX_DROP_PER_MAP 48 #define MAX_IGNORE_LIST 20 // official is 14 #define MAX_VENDING 12 @@ -68,10 +73,12 @@ enum E_MAPSERVER_ST #define JOBL_UPPER 0x1000 //4096 #define JOBL_BABY 0x2000 //8192 +#define JOBL_THIRD 0x4000 //16384 //for filtering and quick checking. #define MAPID_UPPERMASK 0x0fff #define MAPID_BASEMASK 0x00ff +#define MAPID_THIRDMASK (JOBL_THIRD|MAPID_UPPERMASK) //First Jobs //Note the oddity of the novice: //Super Novices are considered the 2-1 version of the novice! Novices are considered a first class type, too... @@ -154,6 +161,31 @@ enum { MAPID_BABY_ALCHEMIST, MAPID_BABY_ROGUE, MAPID_BABY_SOUL_LINKER, + MAPID_RUNE_KNIGHT = JOBL_THIRD|JOBL_2_1|0x1, + MAPID_WARLOCK, + MAPID_RANGER, + MAPID_ARCH_BISHOP, + MAPID_MECHANIC, + MAPID_GUILLOTINE_CROSS, + MAPID_ROYAL_GUARD = JOBL_THIRD|JOBL_2_2|0x1, + MAPID_SORCERER, + MAPID_MINSTRELWANDERER, + MAPID_SURA, + MAPID_GENETIC, + MAPID_SHADOW_CHASER, + MAPID_RUNE_KNIGHT_T = JOBL_THIRD|JOBL_UPPER|JOBL_2_1|0x1, + MAPID_WARLOCK_T, + MAPID_RANGER_T, + MAPID_ARCH_BISHOP_T, + MAPID_MECHANIC_T, + MAPID_GUILLOTINE_CROSS_T, + MAPID_ROYAL_GUARD_T = JOBL_THIRD|JOBL_UPPER|JOBL_2_2|0x1, + MAPID_SORCERER_T, + MAPID_MINSTRELWANDERER_T, + MAPID_SURA_T, + MAPID_GENETIC_T, + MAPID_SHADOW_CHASER_T, + }; //Max size for inputs to Graffiti, Talkie Box and Vending text prompts @@ -476,7 +508,10 @@ struct map_data { unsigned fireworks : 1; unsigned sakura : 1; // [Valaris] unsigned leaves : 1; // [Valaris] - unsigned rain : 1; // [Valaris] + /** + * No longer available, keeping here just in case it's back someday. [Ind] + **/ + //unsigned rain : 1; // [Valaris] unsigned nogo : 1; // [Valaris] unsigned nobaseexp : 1; // [Lorky] added by Lupus unsigned nojobexp : 1; // [Lorky] @@ -643,7 +678,6 @@ int map_random_dir(struct block_list *bl, short *x, short *y); // [Skotlex] int cleanup_sub(struct block_list *bl, va_list ap); -void map_helpscreen(int flag); // [Valaris] int map_delmap(char* mapname); void map_flags_init(void); @@ -667,8 +701,6 @@ extern char *SCRIPT_CONF_NAME; extern char *MSG_CONF_NAME; extern char *GRF_PATH_FILENAME; -extern char *map_server_dns; - //Useful typedefs from jA [Skotlex] typedef struct map_session_data TBL_PC; typedef struct npc_data TBL_NPC; @@ -697,6 +729,7 @@ extern Sql* logmysql_handle; extern char item_db_db[32]; extern char item_db2_db[32]; +extern char item_db_re_db[32]; extern char mob_db_db[32]; extern char mob_db2_db[32]; diff --git a/src/map/mob.c b/src/map/mob.c index 5272b17e8..8181fb5e7 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -2163,8 +2163,12 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) merc_hom_gainexp(tmpsd[i]->hd, base_exp); if(base_exp || job_exp) { - if( md->dmglog[i].flag != MDLF_PET || battle_config.pet_attack_exp_to_master ) + if( md->dmglog[i].flag != MDLF_PET || battle_config.pet_attack_exp_to_master ) { +#if RRMODE + party_renewal_exp_mod(&base_exp,&job_exp,tmpsd[i]->status.base_level,md->level); +#endif pc_gainexp(tmpsd[i], &md->bl, base_exp, job_exp, false); + } } if(zeny) // zeny from mobs [Valaris] pc_getzeny(tmpsd[i], zeny); @@ -2185,6 +2189,11 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) struct item_drop_list *dlist = ers_alloc(item_drop_list_ers, struct item_drop_list); struct item_drop *ditem; int drop_rate; +#if RRMODE + int drop_modifier = mvp_sd ? party_renewal_drop_mod(mvp_sd->status.base_level - md->level) : + second_sd ? party_renewal_drop_mod(second_sd->status.base_level - md->level) : + third_sd ? party_renewal_drop_mod(third_sd->status.base_level - md->level) : 100; +#endif dlist->m = md->bl.m; dlist->x = md->bl.x; dlist->y = md->bl.y; @@ -2226,7 +2235,10 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) // Increase drop rate if user has SC_ITEMBOOST if (sd && sd->sc.data[SC_ITEMBOOST]) // now rig the drop rate to never be over 90% unless it is originally >90%. drop_rate = max(drop_rate,cap_value((int)(0.5+drop_rate*(sd->sc.data[SC_ITEMBOOST]->val1)/100.),0,9000)); - +#if RRMODE + if( drop_modifier != 100 ) + drop_rate = drop_rate * drop_modifier / 100; +#endif // attempt to drop the item if (rand() % 10000 >= drop_rate) continue; @@ -2437,8 +2449,11 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) delete_timer(md->deletetimer,mob_timer_delete); md->deletetimer = INVALID_TIMER; } - - mob_deleteslave(md); + /** + * Only loops if necessary (e.g. a poring would never need to loop) + **/ + if( md->can_summon ) + mob_deleteslave(md); map_freeblock_unlock(); @@ -2700,6 +2715,10 @@ int mob_summonslave(struct mob_data *md2,int *value,int amount,int skill_id) if(mobdb_checkid(value[0]) == 0) return 0; + /** + * Flags this monster is able to summon; saves a worth amount of memory upon deletion + **/ + md2->can_summon = 1; while(count < 5 && mobdb_checkid(value[count])) count++; if(count < 1) return 0; diff --git a/src/map/mob.h b/src/map/mob.h index 9e86b8d63..2c6d882c9 100644 --- a/src/map/mob.h +++ b/src/map/mob.h @@ -161,6 +161,11 @@ struct mob_data { short skillidx; unsigned int skilldelay[MAX_MOBSKILL]; char npc_event[EVENT_NAME_LENGTH]; + /** + * Did this monster summon something? + * Used to flag summon deletions, saves a worth amount of memory + **/ + bool can_summon : 1; }; diff --git a/src/map/npc.c b/src/map/npc.c index dae395876..1762bc73b 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -199,7 +199,33 @@ struct npc_data* npc_name2id(const char* name) { return (struct npc_data *) strdb_get(npcname_db, name); } - +/** + * For the Secure NPC Timeout option (check RRConfig/Secure.h) [RR] + **/ +#if SECURE_NPCTIMEOUT +/** + * Timer to check for idle time and timeout the dialog if necessary + **/ +int npc_rr_secure_timeout_timer(int tid, unsigned int tick, int id, intptr_t data) { + struct map_session_data* sd = NULL; + if( (sd = map_id2sd(id)) == NULL || !sd->npc_id ) + return 0;//Not logged in anymore OR no longer attached to a npc + + if( DIFF_TICK(tick,sd->npc_idle_tick) > (SECURE_NPCTIMEOUT*1000) ) { + /** + * If we still have the NPC script attached, tell it to stop. + **/ + if( sd->st ) + sd->st->state = END; + /** + * This guy's been idle for longer than allowed, close him. + **/ + clif_scriptclose(sd,sd->npc_id); + } else //Create a new instance of ourselves to continue + sd->npc_idle_timer = add_timer(gettick() + (SECURE_NPCTIMEOUT_INTERVAL*1000),npc_rr_secure_timeout_timer,sd->bl.id,0); + return 0; +} +#endif /*========================================== * ƒCƒxƒ“ƒgƒLƒ…[‚̃Cƒxƒ“ƒgˆ— *------------------------------------------*/ @@ -1114,6 +1140,15 @@ int npc_scriptcont(struct map_session_data* sd, int id) return 1; } } + /** + * For the Secure NPC Timeout option (check RRConfig/Secure.h) [RR] + **/ +#if SECURE_NPCTIMEOUT + /** + * Update the last NPC iteration + **/ + sd->npc_idle_tick = gettick(); +#endif run_script_main(sd->st); return 0; @@ -3058,8 +3093,11 @@ static const char* npc_parse_mapflag(char* w1, char* w2, char* w3, char* w4, con map[m].flag.sakura=state; else if (!strcmpi(w3,"leaves")) map[m].flag.leaves=state; - else if (!strcmpi(w3,"rain")) - map[m].flag.rain=state; + /** + * No longer available, keeping here just in case it's back someday. [Ind] + **/ + //else if (!strcmpi(w3,"rain")) + // map[m].flag.rain=state; else if (!strcmpi(w3,"nightenabled")) map[m].flag.nightenabled=state; else if (!strcmpi(w3,"nogo")) diff --git a/src/map/npc.h b/src/map/npc.h index d40fb63b4..8f8d7eca9 100644 --- a/src/map/npc.h +++ b/src/map/npc.h @@ -157,4 +157,11 @@ int npc_cashshop_buy(struct map_session_data *sd, int nameid, int amount, int po extern struct npc_data* fake_nd; +/** + * For the Secure NPC Timeout option (check RRConfig/Secure.h) [RR] + **/ +#if SECURE_NPCTIMEOUT +int npc_rr_secure_timeout_timer(int tid, unsigned int tick, int id, intptr_t data); +#endif + #endif /* _NPC_H_ */ diff --git a/src/map/party.c b/src/map/party.c index 9649505b4..f47f8e5c9 100644 --- a/src/map/party.c +++ b/src/map/party.c @@ -566,7 +566,7 @@ int party_member_withdraw(int party_id, int account_id, int char_id) ARR_FIND( 0, MAX_PARTY, i, p->party.member[i].account_id == account_id && p->party.member[i].char_id == char_id ); if( i < MAX_PARTY ) { - clif_party_withdraw(p,sd,account_id,p->party.member[i].name,0x00); + clif_party_withdraw(p,sd,account_id,p->party.member[i].name,0x0); memset(&p->party.member[i], 0, sizeof(p->party.member[0])); memset(&p->data[i], 0, sizeof(p->data[0])); p->party.count--; @@ -912,13 +912,64 @@ int party_send_xy_clear(struct party_data *p) } return 0; } - +#if RRMODE +/** + * Renewal Drop Earning Modifier + **/ +int party_renewal_drop_mod(int diff) { + if( diff >= -10 && diff <= 5 ) + return 100;//no change. + if( diff > 0 ) { + if( diff > 5 && diff < 10 ) + return 90; + if( diff > 9 && diff < 15 ) + return 75; + if( diff > 14 && diff < 30 ) + return 60; + } else { + if( diff <= -10 && diff <= -14 ) + return 75;//75% + } + //other chases: 50% + return 50; +} +/** + * Renewal Experience Earning Mode + **/ +void party_renewal_exp_mod(unsigned int *base_exp, unsigned int *job_exp, int lvl, int moblvl) { + int diff = lvl - moblvl, boost = 0; + //-2 ~ +5: 100% + if( diff >= -2 && diff <= 5 ) + return;//we don't change anything, it's 100% boost + //-3 ~ -10: +5% boost for each + if( diff >= -10 && diff <= -3 ) + boost = 100 + (( -diff * 5 ) - 15 ); + // 40% boost if difference is <= -10 + else if ( diff <= -10 ) + boost = 40; + else { + boost = ( diff > 5 && diff < 11 ) ? 95 : + ( diff > 10 && diff < 16 ) ? 90 : + ( diff > 15 && diff < 21 ) ? 85 : + ( diff > 20 && diff < 26 ) ? 60 : + ( diff > 25 && diff < 31 ) ? 35 : + 10; + } + if( *base_exp ) + *base_exp = (unsigned int)cap_value(*base_exp * boost / 100, 1, UINT_MAX); + if( *job_exp ) + *job_exp = (unsigned int)cap_value(*job_exp * boost / 100, 1, UINT_MAX); + return; +} +#endif // exp share and added zeny share [Valaris] int party_exp_share(struct party_data* p, struct block_list* src, unsigned int base_exp, unsigned int job_exp, int zeny) { struct map_session_data* sd[MAX_PARTY]; unsigned int i, c; - +#if RRMODE + int src_lvl = status_get_lv(src); +#endif nullpo_ret(p); // count the number of players eligible for exp sharing @@ -945,8 +996,10 @@ int party_exp_share(struct party_data* p, struct block_list* src, unsigned int b zeny = (unsigned int) cap_value(zeny * bonus/100, INT_MIN, INT_MAX); } - for (i = 0; i < c; i++) - { + for (i = 0; i < c; i++) { +#if RRMODE + party_renewal_exp_mod(&base_exp,&job_exp,sd[i]->status.base_level,src_lvl); +#endif pc_gainexp(sd[i], src, base_exp, job_exp, false); if (zeny) // zeny from mobs [Valaris] pc_getzeny(sd[i],zeny); diff --git a/src/map/party.h b/src/map/party.h index 9fde5a6a4..4918d9a3a 100644 --- a/src/map/party.h +++ b/src/map/party.h @@ -92,4 +92,9 @@ void party_booking_update(struct map_session_data *sd, short* job); void party_booking_search(struct map_session_data *sd, short level, short mapid, short job, unsigned long lastindex, short resultcount); bool party_booking_delete(struct map_session_data *sd); +#if RRMODE +void party_renewal_exp_mod(unsigned int *base_exp, unsigned int *job_exp, int lvl, int moblvl); +int party_renewal_drop_mod(int diff); +#endif + #endif /* _PARTY_H_ */ diff --git a/src/map/pc.c b/src/map/pc.c index b93334f35..6a6c24398 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -395,7 +395,7 @@ int pc_makesavestatus(struct map_session_data *sd) //Only copy the Cart/Peco/Falcon options, the rest are handled via //status change load/saving. [Skotlex] - sd->status.option = sd->sc.option&(OPTION_CART|OPTION_FALCON|OPTION_RIDING); + sd->status.option = sd->sc.option&(OPTION_CART|OPTION_FALCON|OPTION_RIDING|OPTION_DRAGON|OPTION_WUGRIDER|OPTION_WUG|OPTION_MADOGEAR|OPTION_MOUNTING); if (sd->sc.data[SC_JAILED]) { //When Jailed, do not move last point. @@ -765,10 +765,14 @@ int pc_isequip(struct map_session_data *sd,int n) //Not equipable by class. [Skotlex] if (!(1<<(sd->class_&MAPID_BASEMASK)&item->class_base[(sd->class_&JOBL_2_1)?1:((sd->class_&JOBL_2_2)?2:0)])) return 0; - - //Not equipable by upper class. [Skotlex] - if(!(1<<((sd->class_&JOBL_UPPER)?1:((sd->class_&JOBL_BABY)?2:0))&item->class_upper)) + //Not usable by upper class. [Inkfish] + while( 1 ) { + if( item->class_upper&1 && !(sd->class_&(JOBL_UPPER|JOBL_THIRD|JOBL_BABY)) ) break; + if( item->class_upper&2 && sd->class_&(JOBL_UPPER|JOBL_THIRD) ) break; + if( item->class_upper&4 && sd->class_&JOBL_BABY ) break; + if( item->class_upper&8 && sd->class_&JOBL_THIRD ) break; return 0; + } return 1; } @@ -825,7 +829,17 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim sd->invincible_timer = INVALID_TIMER; sd->npc_timer_id = INVALID_TIMER; sd->pvp_timer = INVALID_TIMER; - + /** + * For the Secure NPC Timeout option (check RRConfig/Secure.h) [RR] + **/ +#if SECURE_NPCTIMEOUT + /** + * Initialize to defaults/expected + **/ + sd->npc_idle_timer = INVALID_TIMER; + sd->npc_idle_tick = tick; +#endif + sd->canuseitem_tick = tick; sd->canusecashfood_tick = tick; sd->canequip_tick = tick; @@ -915,7 +929,7 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim if (battle_config.display_version == 1){ char buf[256]; - sprintf(buf, "eAthena SVN version: %s", get_svn_revision()); + sprintf(buf, "SVN version: %s", get_svn_revision()); clif_displaymessage(sd->fd, buf); } @@ -3379,7 +3393,15 @@ int pc_additem(struct map_session_data *sd,struct item *item_data,int amount) w = data->weight*amount; if(sd->weight + w > sd->max_weight) return 2; - + if( itemdb_is_rune(item_data->nameid) ) { + int rune = pc_search_inventory(sd,item_data->nameid); + if( ( rune >= 0 && sd->status.inventory[rune].amount + amount > MAX_RUNE ) || + ( rune == -1 && amount > MAX_RUNE ) + ) { + clif_msgtable(sd->fd,0x61b); + return 1; + } + } i = MAX_INVENTORY; if( itemdb_isstackable2(data) && item_data->expire_time == 0 ) @@ -3662,6 +3684,17 @@ int pc_isUseitem(struct map_session_data *sd,int n) if( nameid >= 12153 && nameid <= 12182 && sd->md != NULL ) return 0; // Mercenary Scrolls + /** + * Only Rune Knights may use runes + **/ + if( itemdb_is_rune(nameid) && (sd->class_&MAPID_THIRDMASK) != MAPID_RUNE_KNIGHT ) + return 0; + /** + * Only GCross may use poisons + **/ + else if( itemdb_is_poison(nameid) && (sd->class_&MAPID_THIRDMASK) != MAPID_GUILLOTINE_CROSS ) + return 0; + //added item_noequip.txt items check by Maya&[Lupus] if ( (!map_flag_vs(sd->bl.m) && item->flag.no_equip&1) || // Normal @@ -3685,13 +3718,14 @@ int pc_isUseitem(struct map_session_data *sd,int n) (item->class_base[sd->class_&JOBL_2_1?1:(sd->class_&JOBL_2_2?2:0)]) )) return 0; - - //Not usable by upper class. [Skotlex] - if(!( - (1<<(sd->class_&JOBL_UPPER?1:(sd->class_&JOBL_BABY?2:0))) & - item->class_upper - )) + //Not usable by upper class. [Inkfish] + while( 1 ) { + if( item->class_upper&1 && !(sd->class_&(JOBL_UPPER|JOBL_THIRD|JOBL_BABY)) ) break; + if( item->class_upper&2 && sd->class_&(JOBL_UPPER|JOBL_THIRD) ) break; + if( item->class_upper&4 && sd->class_&JOBL_BABY ) break; + if( item->class_upper&8 && sd->class_&JOBL_THIRD ) break; return 0; + } //Dead Branch & Bloody Branch & Porings Box if((log_config.branch > 0) && (nameid == 604 || nameid == 12103 || nameid == 12109)) @@ -4534,6 +4568,36 @@ int pc_jobid2mapid(unsigned short b_class) case JOB_BABY_MONK: return MAPID_BABY_MONK; case JOB_BABY_ALCHEMIST: return MAPID_BABY_ALCHEMIST; case JOB_BABY_ROGUE: return MAPID_BABY_ROGUE; + //3.1 non-trans + case JOB_RUNE_KNIGHT: return MAPID_RUNE_KNIGHT; + case JOB_WARLOCK: return MAPID_WARLOCK; + case JOB_RANGER: return MAPID_RANGER; + case JOB_ARCH_BISHOP: return MAPID_ARCH_BISHOP; + case JOB_MECHANIC: return MAPID_MECHANIC; + case JOB_GUILLOTINE_CROSS: return MAPID_GUILLOTINE_CROSS; + //3.1 trans + case JOB_RUNE_KNIGHT_T: return MAPID_RUNE_KNIGHT_T; + case JOB_WARLOCK_T: return MAPID_WARLOCK_T; + case JOB_RANGER_T: return MAPID_RANGER_T; + case JOB_ARCH_BISHOP_T: return MAPID_ARCH_BISHOP_T; + case JOB_MECHANIC_T: return MAPID_MECHANIC_T; + case JOB_GUILLOTINE_CROSS_T:return MAPID_GUILLOTINE_CROSS_T; + //3.2 non-trans + case JOB_ROYAL_GUARD: return MAPID_ROYAL_GUARD; + case JOB_SORCERER: return MAPID_SORCERER; + case JOB_MINSTREL: return MAPID_MINSTRELWANDERER; + case JOB_WANDERER: return MAPID_MINSTRELWANDERER; + case JOB_SURA: return MAPID_SURA; + case JOB_GENETIC: return MAPID_GENETIC; + case JOB_SHADOW_CHASER: return MAPID_SHADOW_CHASER; + //3.2 trans + case JOB_ROYAL_GUARD_T: return MAPID_ROYAL_GUARD_T; + case JOB_SORCERER_T: return MAPID_SORCERER_T; + case JOB_MINSTREL_T: return MAPID_MINSTRELWANDERER_T; + case JOB_WANDERER_T: return MAPID_MINSTRELWANDERER_T; + case JOB_SURA_T: return MAPID_SURA_T; + case JOB_GENETIC_T: return MAPID_GENETIC_T; + case JOB_SHADOW_CHASER_T: return MAPID_SHADOW_CHASER_T; default: return -1; } @@ -4620,6 +4684,34 @@ int pc_mapid2jobid(unsigned short class_, int sex) case MAPID_BABY_MONK: return JOB_BABY_MONK; case MAPID_BABY_ALCHEMIST: return JOB_BABY_ALCHEMIST; case MAPID_BABY_ROGUE: return JOB_BABY_ROGUE; + //3.1 non-trans + case MAPID_RUNE_KNIGHT: return JOB_RUNE_KNIGHT; + case MAPID_WARLOCK: return JOB_WARLOCK; + case MAPID_RANGER: return JOB_RANGER; + case MAPID_ARCH_BISHOP: return JOB_ARCH_BISHOP; + case MAPID_MECHANIC: return JOB_MECHANIC; + case MAPID_GUILLOTINE_CROSS:return JOB_GUILLOTINE_CROSS; + //3.1 trans + case MAPID_RUNE_KNIGHT_T: return JOB_RUNE_KNIGHT_T; + case MAPID_WARLOCK_T: return JOB_WARLOCK_T; + case MAPID_RANGER_T: return JOB_RANGER_T; + case MAPID_ARCH_BISHOP_T: return JOB_ARCH_BISHOP_T; + case MAPID_MECHANIC_T: return JOB_MECHANIC_T; + case MAPID_GUILLOTINE_CROSS_T:return JOB_GUILLOTINE_CROSS_T; + //3.2 non-trans + case MAPID_ROYAL_GUARD: return JOB_ROYAL_GUARD; + case MAPID_SORCERER: return JOB_SORCERER; + case MAPID_MINSTRELWANDERER:return sex?JOB_MINSTREL:JOB_WANDERER; + case MAPID_SURA: return JOB_SURA; + case MAPID_GENETIC: return JOB_GENETIC; + case MAPID_SHADOW_CHASER: return JOB_SHADOW_CHASER; + //3.2 trans + case MAPID_ROYAL_GUARD_T: return JOB_ROYAL_GUARD_T; + case MAPID_SORCERER_T: return JOB_SORCERER_T; + case MAPID_MINSTRELWANDERER_T:return sex?JOB_MINSTREL_T:JOB_WANDERER_T; + case MAPID_SURA_T: return JOB_SURA_T; + case MAPID_GENETIC_T: return JOB_GENETIC_T; + case MAPID_SHADOW_CHASER_T: return JOB_SHADOW_CHASER_T; default: return -1; } @@ -4898,7 +4990,7 @@ int pc_checkjoblevelup(struct map_session_data *sd) status_calc_pc(sd,0); clif_misceffect(&sd->bl,1); if (pc_checkskill(sd, SG_DEVIL) && !pc_nextjobexp(sd)) - clif_status_change(&sd->bl,SI_DEVIL, 1, 0); //Permanent blind effect from SG_DEVIL. + clif_status_change(&sd->bl,SI_DEVIL, 1, 0, 0, 0, 1); //Permanent blind effect from SG_DEVIL. npc_script_event(sd, NPCE_JOBLVUP); return 1; @@ -5131,7 +5223,11 @@ int pc_need_status_point(struct map_session_data* sd, int type, int val) swap(low, high); for ( ; low < high; low++ ) +#if RRMODE //Renewal Stat Cost Formula + sp += (low < 100) ? (2 + (low - 1) / 10) : (16 + 4 * ((low - 100) / 5)); +#else sp += ( 1 + (low + 9) / 10 ); +#endif return sp; } @@ -5480,7 +5576,16 @@ int pc_resetskill(struct map_session_data* sd, int flag) i &= ~OPTION_CART; if( i&OPTION_FALCON && pc_checkskill(sd, HT_FALCON) ) i &= ~OPTION_FALCON; - + if( i&OPTION_DRAGON && pc_checkskill(sd, RK_DRAGONTRAINING) ) + i &= ~OPTION_DRAGON; + if( i&OPTION_WUG && pc_checkskill(sd, RA_WUGMASTERY) ) + i &= ~OPTION_WUG; + if( i&OPTION_WUGRIDER && pc_checkskill(sd, RA_WUGRIDER) ) + i &= ~OPTION_WUGRIDER; + if( i&OPTION_MADOGEAR && ( sd->class_&MAPID_THIRDMASK ) == MAPID_MECHANIC ) + i &= ~OPTION_MADOGEAR; + if( i&OPTION_MOUNTING ) + i &= ~OPTION_MOUNTING; if( i != sd->sc.option ) pc_setoption(sd, i); @@ -6400,7 +6505,14 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper) i&=~OPTION_CART; if(i&OPTION_FALCON && !pc_checkskill(sd, HT_FALCON)) i&=~OPTION_FALCON; - + if( i&OPTION_DRAGON && !pc_checkskill(sd,RK_DRAGONTRAINING) ) + i&=~OPTION_DRAGON; + if( i&OPTION_WUGRIDER && !pc_checkskill(sd,RA_WUGMASTERY) ) + i&=~OPTION_WUGRIDER; + if( i&OPTION_WUG && !pc_checkskill(sd,RA_WUGMASTERY) ) + i&=~OPTION_WUG; + if( i&OPTION_MADOGEAR ) //You do not need a skill for this. + i&=~OPTION_MADOGEAR; if(i != sd->sc.option) pc_setoption(sd, i); @@ -6528,15 +6640,15 @@ int pc_setoption(struct map_session_data *sd,int type) sd->sc.option=type; clif_changeoption(&sd->bl); - if (type&OPTION_RIDING && !(p_type&OPTION_RIDING) && (sd->class_&MAPID_BASEMASK) == MAPID_SWORDMAN) - { //We are going to mount. [Skotlex] + if( (type&OPTION_RIDING && !(p_type&OPTION_RIDING)) || (type&OPTION_DRAGON && !(p_type&OPTION_DRAGON) && pc_checkskill(sd,RK_DRAGONTRAINING) > 0) ) + { // Mounting clif_status_load(&sd->bl,SI_RIDING,1); - status_calc_pc(sd,0); //Mounting/Umounting affects walk and attack speeds. + status_calc_pc(sd,0); } - else if (!(type&OPTION_RIDING) && p_type&OPTION_RIDING && (sd->class_&MAPID_BASEMASK) == MAPID_SWORDMAN) - { //We are going to dismount. + else if( (!(type&OPTION_RIDING) && p_type&OPTION_RIDING) || (!(type&OPTION_DRAGON) && p_type&OPTION_DRAGON && pc_checkskill(sd,RK_DRAGONTRAINING) > 0) ) + { // Dismount clif_status_load(&sd->bl,SI_RIDING,0); - status_calc_pc(sd,0); //Mounting/Umounting affects walk and attack speeds. + status_calc_pc(sd,0); } if(type&OPTION_CART && !(p_type&OPTION_CART)) @@ -6553,11 +6665,49 @@ int pc_setoption(struct map_session_data *sd,int type) status_calc_pc(sd,0); //Remove speed penalty. } + if (type&OPTION_MOUNTING && !(p_type&OPTION_MOUNTING)) { + clif_status_load_notick(&sd->bl,SI_ALL_RIDING,2,1,0,0); + status_calc_pc(sd,0); + } else if (!(type&OPTION_MOUNTING) && p_type&OPTION_MOUNTING) { + clif_status_load_notick(&sd->bl,SI_ALL_RIDING,0,0,0,0); + status_calc_pc(sd,0); + } + + if (type&OPTION_FALCON && !(p_type&OPTION_FALCON)) //Falcon ON clif_status_load(&sd->bl,SI_FALCON,1); else if (!(type&OPTION_FALCON) && p_type&OPTION_FALCON) //Falcon OFF clif_status_load(&sd->bl,SI_FALCON,0); + if( (sd->class_&MAPID_THIRDMASK) == MAPID_RANGER ) { + if( type&OPTION_WUGRIDER && !(p_type&OPTION_WUGRIDER) ) { // Mounting + clif_status_load(&sd->bl,SI_WUGRIDER,1); + status_calc_pc(sd,0); + } else if( !(type&OPTION_WUGRIDER) && p_type&OPTION_WUGRIDER ) { // Dismount + clif_status_load(&sd->bl,SI_WUGRIDER,0); + status_calc_pc(sd,0); + } + } + if( (sd->class_&MAPID_THIRDMASK) == MAPID_MECHANIC ) { + if( type&OPTION_MADOGEAR && !(p_type&OPTION_MADOGEAR) ) { + status_calc_pc(sd, 0); + status_change_end(&sd->bl,SC_MAXIMIZEPOWER,-1); + status_change_end(&sd->bl,SC_OVERTHRUST,-1); + status_change_end(&sd->bl,SC_WEAPONPERFECTION,-1); + status_change_end(&sd->bl,SC_ADRENALINE,-1); + status_change_end(&sd->bl,SC_CARTBOOST,-1); + status_change_end(&sd->bl,SC_MELTDOWN,-1); + status_change_end(&sd->bl,SC_MAXOVERTHRUST,-1); + } else if( !(type&OPTION_MADOGEAR) && p_type&OPTION_MADOGEAR ) { + status_calc_pc(sd, 0); + status_change_end(&sd->bl,SC_SHAPESHIFT,-1); + status_change_end(&sd->bl,SC_HOVERING,-1); + status_change_end(&sd->bl,SC_ACCELERATION,-1); + status_change_end(&sd->bl,SC_OVERHEAT_LIMITPOINT,-1); + status_change_end(&sd->bl,SC_OVERHEAT,-1); + } + } + if (type&OPTION_FLYING && !(p_type&OPTION_FLYING)) new_look = JOB_STAR_GLADIATOR2; else if (!(type&OPTION_FLYING) && p_type&OPTION_FLYING) @@ -6644,7 +6794,7 @@ int pc_setriding(TBL_PC* sd, int flag) if( pc_checkskill(sd,KN_RIDING) > 0 ) // ƒ‰ƒCƒfƒBƒ“ƒOƒXƒLƒ‹ŠŽ pc_setoption(sd, sd->sc.option|OPTION_RIDING); } else if( pc_isriding(sd) ){ - pc_setoption(sd, sd->sc.option&~OPTION_RIDING); + pc_setoption(sd, sd->sc.option&~OPTION_RIDING); } return 0; @@ -7801,6 +7951,30 @@ void pc_setstand(struct map_session_data *sd){ sd->state.dead_sit = sd->vd.dead_sit = 0; } +/** + * Mechanic (MADO GEAR) + **/ +void pc_overheat(struct map_session_data *sd, int val) { + int heat = val, skill, + limit[] = { 10, 20, 28, 46, 66 }; + + if( !(sd->sc.option&OPTION_MADOGEAR) || sd->sc.data[SC_OVERHEAT] ) + return; // already burning + + skill = cap_value(pc_checkskill(sd,NC_MAINFRAME),0,4); + if( sd->sc.data[SC_OVERHEAT_LIMITPOINT] ) { + heat += sd->sc.data[SC_OVERHEAT_LIMITPOINT]->val1; + status_change_end(&sd->bl,SC_OVERHEAT_LIMITPOINT,-1); + } + + heat = max(0,heat); // Avoid negative HEAT + if( heat >= limit[skill] ) + sc_start(&sd->bl,SC_OVERHEAT,100,0,1000); + else + sc_start(&sd->bl,SC_OVERHEAT_LIMITPOINT,100,heat,30000); + + return; +} int pc_split_str(char *str,char **val,int num) { int i; @@ -8060,7 +8234,11 @@ int pc_readdb(void) // ƒXƒLƒ‹ƒcƒŠ? memset(statp,0,sizeof(statp)); i=1; +#if RRMODE + sprintf(line, "%s/statpoint_renewal.txt", db_path); +#else sprintf(line, "%s/statpoint.txt", db_path); +#endif fp=fopen(line,"r"); if(fp == NULL){ ShowWarning("Can't read '"CL_WHITE"%s"CL_RESET"'... Generating DB.\n",line); @@ -8079,7 +8257,11 @@ int pc_readdb(void) i++; } fclose(fp); + #if RRMODE + ShowStatus("Done reading '"CL_WHITE"%s"CL_RESET"'.\n","statpoint_renewal.txt"); + #else ShowStatus("Done reading '"CL_WHITE"%s"CL_RESET"'.\n","statpoint.txt"); + #endif } // generate the remaining parts of the db if necessary k = battle_config.use_statpoint_table; //save setting diff --git a/src/map/pc.h b/src/map/pc.h index 4d1e929a0..51588c842 100644 --- a/src/map/pc.h +++ b/src/map/pc.h @@ -21,6 +21,9 @@ #define MAX_PC_SKILL_REQUIRE 5 #define MAX_PC_FEELHATE 3 +//For Warlock +#define MAX_SPELLBOOK 10 + struct weapon_data { int atkmods[3]; // all the variables except atkmods get zero'ed in each call of status_calc_pc @@ -405,6 +408,13 @@ struct map_session_data { bool changed; // if true, should sync with charserver on next mailbox request } mail; + // Reading SpellBook + struct { + unsigned short skillid; + unsigned char level; + unsigned char points; + } rsb[MAX_SPELLBOOK]; + //Quest log system [Kevin] [Inkfish] int num_quests; int avail_quests; @@ -420,13 +430,33 @@ struct map_session_data { unsigned int bg_id; unsigned short user_font; + /** + * For the Secure NPC Timeout option (check RRConfig/Secure.h) [RR] + **/ +#if SECURE_NPCTIMEOUT + /** + * ID of the timer + * @info + * - value is -1 (INVALID_TIMER constant) when not being used + * - timer is cancelled upon closure of the current npc's instance + **/ + int npc_idle_timer; + /** + * Tick on the last recorded NPC iteration (next/menu/whatever) + * @info + * - It is updated on every NPC iteration as mentioned above + **/ + unsigned int npc_idle_tick; +#endif + // temporary debugging of bug #3504 const char* delunit_prevfile; int delunit_prevline; }; //Update this max as necessary. 55 is the value needed for Super Baby currently -#define MAX_SKILL_TREE 55 +//Raised to 75 due to 3rds +#define MAX_SKILL_TREE 75 //Total number of classes (for data storage) #define CLASS_COUNT (JOB_MAX - JOB_NOVICE_HIGH + JOB_MAX_BASIC) @@ -538,7 +568,12 @@ enum equip_index { #define pc_isinvisible(sd) ( (sd)->sc.option&OPTION_INVISIBLE ) #define pc_is50overweight(sd) ( (sd)->weight*100 >= (sd)->max_weight*battle_config.natural_heal_weight_rate ) #define pc_is90overweight(sd) ( (sd)->weight*10 >= (sd)->max_weight*9 ) -#define pc_maxparameter(sd) ( (sd)->class_&JOBL_BABY ? battle_config.max_baby_parameter : battle_config.max_parameter ) +#define pc_maxparameter(sd) ( (sd)->class_&JOBL_THIRD ? battle_config.max_third_parameter : (sd)->class_&JOBL_BABY ? battle_config.max_baby_parameter : battle_config.max_parameter ) +/** + * Ranger + **/ +#define pc_iswug(sd) ( (sd)->sc.option&OPTION_WUG ) +#define pc_isridingwug(sd) ( (sd)->sc.option&OPTION_WUGRIDER ) #define pc_stop_walking(sd, type) unit_stop_walking(&(sd)->bl, type) #define pc_stop_attack(sd) unit_stop_attack(&(sd)->bl) @@ -550,7 +585,8 @@ enum equip_index { #define pcdb_checkid(class_) \ ( \ ( (class_) >= JOB_NOVICE && (class_) < JOB_MAX_BASIC ) \ -|| ( (class_) >= JOB_NOVICE_HIGH && (class_) < JOB_MAX ) \ +|| ( (class_) >= JOB_NOVICE_HIGH && (class_) <= JOB_SOUL_LINKER ) \ +|| ( (class_) >= JOB_RUNE_KNIGHT && (class_) < JOB_MAX ) \ ) int pc_class2idx(int class_); @@ -785,5 +821,8 @@ void pc_inventory_rental_add(struct map_session_data *sd, int seconds); int pc_read_motd(void); // [Valaris] int pc_disguise(struct map_session_data *sd, int class_); - +/** + * Mechanic (Mado Gear) + **/ +void pc_overheat(struct map_session_data *sd, int val); #endif /* _PC_H_ */ diff --git a/src/map/script.c b/src/map/script.c index 151535c2f..452212a7d 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -325,7 +325,10 @@ enum { MF_FOG, MF_SAKURA, MF_LEAVES, - MF_RAIN, //20 + /** + * No longer available, keeping here just in case it's back someday. [Ind] + **/ + //MF_RAIN, //20 // 21 free MF_NOGO = 22, MF_CLOUDS, @@ -3365,7 +3368,18 @@ static void script_detach_state(struct script_state* st, bool dequeue_event) { sd->st = st->bk_st; sd->npc_id = st->bk_npcid; - + /** + * For the Secure NPC Timeout option (check RRConfig/Secure.h) [RR] + **/ + #if SECURE_NPCTIMEOUT + /** + * We're done with this NPC session, so we cancel the timer (if existent) and move on + **/ + if( sd->npc_idle_timer != INVALID_TIMER ) { + delete_timer(sd->npc_idle_timer,npc_rr_secure_timeout_timer); + sd->npc_idle_timer = INVALID_TIMER; + } + #endif if(st->bk_st) { //Remove tag for removal. @@ -3407,6 +3421,14 @@ static void script_attach_state(struct script_state* st) } sd->st = st; sd->npc_id = st->oid; +/** + * For the Secure NPC Timeout option (check RRConfig/Secure.h) [RR] + **/ +#if SECURE_NPCTIMEOUT + if( sd->npc_idle_timer == INVALID_TIMER ) + sd->npc_idle_timer = add_timer(gettick() + (SECURE_NPCTIMEOUT_INTERVAL*1000),npc_rr_secure_timeout_timer,sd->bl.id,0); + sd->npc_idle_tick = gettick(); +#endif } } @@ -7549,7 +7571,7 @@ BUILDIN_FUNC(checkriding) if( sd == NULL ) return 0;// no player attached, report source - if( pc_isriding(sd) ) + if( pc_isriding(sd) || sd->sc.option&OPTION_MOUNTING ) script_pushint(st, 1); else script_pushint(st, 0); @@ -7771,7 +7793,7 @@ BUILDIN_FUNC(produce) return 0; trigger=script_getnum(st,2); - clif_skill_produce_mix_list(sd, trigger); + clif_skill_produce_mix_list(sd, -1, trigger); return 0; } /*========================================== @@ -9146,7 +9168,7 @@ BUILDIN_FUNC(roclass) } /*========================================== - *Œg‘Ñ—‘›z‰»‹@Žg—p + * Tells client to open a hatching window, used for pet incubator *------------------------------------------*/ BUILDIN_FUNC(birthpet) { @@ -9616,7 +9638,10 @@ BUILDIN_FUNC(getmapflag) case MF_FIREWORKS: script_pushint(st,map[m].flag.fireworks); break; case MF_SAKURA: script_pushint(st,map[m].flag.sakura); break; case MF_LEAVES: script_pushint(st,map[m].flag.leaves); break; - case MF_RAIN: script_pushint(st,map[m].flag.rain); break; + /** + * No longer available, keeping here just in case it's back someday. [Ind] + **/ + //case MF_RAIN: script_pushint(st,map[m].flag.rain); break; case MF_NIGHTENABLED: script_pushint(st,map[m].flag.nightenabled); break; case MF_NOGO: script_pushint(st,map[m].flag.nogo); break; case MF_NOBASEEXP: script_pushint(st,map[m].flag.nobaseexp); break; @@ -9686,7 +9711,10 @@ BUILDIN_FUNC(setmapflag) case MF_FIREWORKS: map[m].flag.fireworks=1; break; case MF_SAKURA: map[m].flag.sakura=1; break; case MF_LEAVES: map[m].flag.leaves=1; break; - case MF_RAIN: map[m].flag.rain=1; break; + /** + * No longer available, keeping here just in case it's back someday. [Ind] + **/ + //case MF_RAIN: map[m].flag.rain=1; break; case MF_NIGHTENABLED: map[m].flag.nightenabled=1; break; case MF_NOGO: map[m].flag.nogo=1; break; case MF_NOBASEEXP: map[m].flag.nobaseexp=1; break; @@ -9753,7 +9781,10 @@ BUILDIN_FUNC(removemapflag) case MF_FIREWORKS: map[m].flag.fireworks=0; break; case MF_SAKURA: map[m].flag.sakura=0; break; case MF_LEAVES: map[m].flag.leaves=0; break; - case MF_RAIN: map[m].flag.rain=0; break; + /** + * No longer available, keeping here just in case it's back someday. [Ind] + **/ + //case MF_RAIN: map[m].flag.rain=0; break; case MF_NIGHTENABLED: map[m].flag.nightenabled=0; break; case MF_NOGO: map[m].flag.nogo=0; break; case MF_NOBASEEXP: map[m].flag.nobaseexp=0; break; @@ -14951,8 +14982,133 @@ BUILDIN_FUNC(searchstores) searchstore_open(sd, uses, effect); return 0; } +/// Displays a number as large digital clock. +/// showdigit <value>[,<type>]; +BUILDIN_FUNC(showdigit) +{ + unsigned int type = 0; + int value; + struct map_session_data* sd; + + if( ( sd = script_rid2sd(st) ) == NULL ) + { + return 0; + } + + value = script_getnum(st,2); + + if( script_hasdata(st,3) ) + { + type = script_getnum(st,3); + if( type > 3 ) + { + ShowError("buildin_showdigit: Invalid type %u.\n", type); + return 1; + } + } + clif_showdigit(sd, (unsigned char)type, value); + return 0; +} +/** + * Rune Knight + **/ +BUILDIN_FUNC(makerune) { + TBL_PC* sd; + if( (sd = script_rid2sd(st)) == NULL ) + return 0; + clif_skill_produce_mix_list(sd,RK_RUNEMASTERY,24); + sd->itemid = script_getnum(st,2); + return 0; +} +/** + * checkdragon() returns 1 if mounting a dragon or 0 otherwise. + **/ +BUILDIN_FUNC(checkdragon) { + TBL_PC* sd; + if( (sd = script_rid2sd(st)) == NULL ) + return 0; + if( sd->sc.option&OPTION_DRAGON ) + script_pushint(st,1); + else + script_pushint(st,0); + return 0; +} +/** + * setdragon({optional Color}) returns 1 on success or 0 otherwise + * - Toggles the dragon on a RK if he can mount; + * @param Color - when not provided uses the green dragon; + * - 1 : Green Dragon + * - 2 : Brown Dragon + * - 3 : Gray Dragon + * - 4 : Blue Dragon + * - 5 : Red Dragon + **/ +BUILDIN_FUNC(setdragon) { + TBL_PC* sd; + int color = script_hasdata(st,2) ? script_getnum(st,2) : 0; + unsigned int option = OPTION_DRAGON1; + if( (sd = script_rid2sd(st)) == NULL ) + return 0; + if( !pc_checkskill(sd,RK_DRAGONTRAINING) || (sd->class_&MAPID_THIRDMASK) != MAPID_RUNE_KNIGHT ) + script_pushint(st,0);//Doesn't have the skill or it's not a Rune Knight + else if ( sd->sc.option&OPTION_DRAGON ) {//Is mounted; release + pc_setoption(sd, sd->sc.option&~OPTION_DRAGON); + script_pushint(st,1); + } else {//Not mounted; Mount now. + if( color ) { + option = ( color == 1 ? OPTION_DRAGON1 : + color == 2 ? OPTION_DRAGON2 : + color == 3 ? OPTION_DRAGON3 : + color == 4 ? OPTION_DRAGON4 : + color == 5 ? OPTION_DRAGON5 : 0); + if( !option ) { + ShowWarning("script_setdragon: Unknown Color %d used; changing to green (1)\n",color); + option = OPTION_DRAGON1; + } + } + pc_setoption(sd, sd->sc.option|option); + script_pushint(st,1); + } + return 0; +} + +/** + * ismounting() returns 1 if mounting a new mount or 0 otherwise + **/ +BUILDIN_FUNC(ismounting) { + TBL_PC* sd; + if( (sd = script_rid2sd(st)) == NULL ) + return 0; + if( sd->sc.option&OPTION_MOUNTING ) + script_pushint(st,1); + else + script_pushint(st,0); + return 0; +} + +/** + * setmounting() returns 1 on success or 0 otherwise + * - Toggles new mounts on a player when he can mount + * - Will fail if the player is mounting a non-new mount, e.g. dragon, peco, wug, etc. + * - Will unmount the player is he is already mounting + **/ +BUILDIN_FUNC(setmounting) { + TBL_PC* sd; + if( (sd = script_rid2sd(st)) == NULL ) + return 0; + if( sd->sc.option&(OPTION_WUGRIDER|OPTION_RIDING|OPTION_DRAGON|OPTION_MADOGEAR) ) + script_pushint(st,0);//can't mount with one of these + else { + if( sd->sc.option&OPTION_MOUNTING ) + pc_setoption(sd, sd->sc.option&~OPTION_MOUNTING);//release mount + else + pc_setoption(sd, sd->sc.option|OPTION_MOUNTING);//mount + script_pushint(st,1);//in both cases, return 1. + } + return 0; +} // declarations that were supposed to be exported from npc_chat.c #ifdef PCRE_SUPPORT BUILDIN_FUNC(defpattern); @@ -15317,6 +15473,7 @@ struct script_function buildin_func[] = { BUILDIN_DEF(pushpc,"ii"), BUILDIN_DEF(buyingstore,"i"), BUILDIN_DEF(searchstores,"ii"), + BUILDIN_DEF(showdigit,"i?"), // WoE SE BUILDIN_DEF(agitstart2,""), BUILDIN_DEF(agitend2,""), @@ -15348,7 +15505,14 @@ struct script_function buildin_func[] = { BUILDIN_DEF(instance_npcname,"s?"), BUILDIN_DEF(has_instance,"s?"), BUILDIN_DEF(instance_warpall,"sii?"), - + /** + * 3rd-related + **/ + BUILDIN_DEF(makerune,"i"), + BUILDIN_DEF(checkdragon,""),//[Ind] + BUILDIN_DEF(setdragon,"?"),//[Ind] + BUILDIN_DEF(ismounting,""),//[Ind] + BUILDIN_DEF(setmounting,""),//[Ind] //Quest Log System [Inkfish] BUILDIN_DEF(setquest, "i"), BUILDIN_DEF(erasequest, "i"), diff --git a/src/map/skill.c b/src/map/skill.c index 28bb9e389..41c3580ae 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -59,11 +59,23 @@ struct s_skill_db skill_db[MAX_SKILL_DB]; struct s_skill_produce_db skill_produce_db[MAX_SKILL_PRODUCE_DB]; struct s_skill_arrow_db skill_arrow_db[MAX_SKILL_ARROW_DB]; struct s_skill_abra_db skill_abra_db[MAX_SKILL_ABRA_DB]; +//Warlock +struct s_skill_spellbook_db { + int nameid; + int skillid; + int points; +}; + +struct s_skill_spellbook_db skill_spellbook_db[MAX_SKILL_SPELLBOOK_DB]; +//Guillotine Cross +struct s_skill_magicmushroom_db skill_magicmushroom_db[MAX_SKILL_MAGICMUSHROOM_DB]; struct s_skill_unit_layout skill_unit_layout[MAX_SKILL_UNIT_LAYOUT]; int firewall_unit_pos; int icewall_unit_pos; - +int earthstrain_unit_pos; +//early declaration +int skill_stasis_check(struct block_list *bl, int src_id, int skillid); //Since only mob-casted splash skills can hit ice-walls static inline int splash_target(struct block_list* bl) { @@ -170,6 +182,7 @@ int skill_get_unit_target( int id ) { skill_get (skill_db[id].unit_target& int skill_get_unit_bl_target( int id ) { skill_get (skill_db[id].unit_target&BL_ALL, id, 1); } int skill_get_unit_flag( int id ) { skill_get (skill_db[id].unit_flag, id, 1); } int skill_get_unit_layout_type( int id ,int lv ){ skill_get (skill_db[id].unit_layout_type[lv-1], id, lv); } +int skill_get_cooldown( int id ,int lv ) { skill_get (skill_db[id].cooldown[lv-1], id, lv); } int skill_tree_get_max(int id, int b_class) { @@ -241,6 +254,12 @@ int skill_get_range2 (struct block_list *bl, int id, int lv) case MA_CHARGEARROW: case SN_FALCONASSAULT: case HT_POWER: + /** + * Ranger + **/ + case RA_ARROWSTORM: + case RA_AIMEDBOLT: + case RA_WUGBITE: if( bl->type == BL_PC ) range += pc_checkskill((TBL_PC*)bl, AC_VULTURE); else @@ -261,6 +280,36 @@ int skill_get_range2 (struct block_list *bl, int id, int lv) if (bl->type == BL_PC) range = skill_get_range(NJ_SHADOWJUMP,pc_checkskill((TBL_PC*)bl,NJ_SHADOWJUMP)); break; + /** + * Warlock + **/ + case WL_WHITEIMPRISON: + case WL_SOULEXPANSION: + case WL_FROSTMISTY: + case WL_MARSHOFABYSS: + case WL_SIENNAEXECRATE: + case WL_DRAINLIFE: + case WL_CRIMSONROCK: + case WL_HELLINFERNO: + case WL_COMET: + case WL_CHAINLIGHTNING: + case WL_TETRAVORTEX: + case WL_RELEASE: + if( bl->type == BL_PC ) + range += pc_checkskill((TBL_PC*)bl, WL_RADIUS); + break; + /** + * Ranger Bonus + **/ + case HT_LANDMINE: + case HT_FREEZINGTRAP: + case HT_BLASTMINE: + case HT_CLAYMORETRAP: + case RA_CLUSTERBOMB: + case RA_FIRINGTRAP: + case RA_ICEBOUNDTRAP: + if( bl->type == BL_PC ) + range += (1 + pc_checkskill((TBL_PC*)bl, RA_RESEARCHTRAP))/2; } if( !range && bl->type != BL_PC ) @@ -291,14 +340,25 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, int skill default: if (skill_lv >= battle_config.max_heal_lv) return battle_config.max_heal; - - hp = ( status_get_lv(src)+status_get_int(src) )/8 *(4+ skill_lv*8); + #if RRMODE + /** + * Renewal Heal Formula (from Doddler) + * TODO: whats that( 1+ %Modifier / 100 ) ? currently using 'x1' (100/100) until found out + * - Min = ( [ ( BaseLvl + INT ) / 5 ] * 30 ) * (1+( %Modifier / 100)) * (HealLvl * 0.1) + StatusMATK + EquipMATK - [(WeaponMATK * WeaponLvl) / 10] + * - Max = ( [ ( BaseLvl + INT ) / 5 ] * 30 ) * (1+( %Modifier / 100)) * (HealLvl * 0.1) + StatusMATK + EquipMATK + [(WeaponMATK * WeaponLvl) / 10] + **/ + hp = ( ( ( ( status_get_lv(src) + status_get_int(src) ) / 5 ) * 30 ) * ( skill_lv / 10 ) + status_get_matk_min(src) + status_get_matk_max(src) - ( ( status_get_matk_max(src) * status_get_wlv(src) ) / 10 ) ) + rand()%( ( ( ( status_get_lv(src) + status_get_int(src) ) / 5 ) * 30 ) * ( skill_lv / 10 ) + status_get_matk_min(src) + status_get_matk_max(src) + ( ( status_get_matk_max(src) * status_get_wlv(src) ) / 10 ) ); + #else + hp = ( status_get_lv(src) + status_get_int(src) ) / 8 * (4 + ( skill_id == AB_HIGHNESSHEAL ? ( sd ? pc_checkskill(sd,AL_HEAL) : 10 ) : skill_lv ) * 8); + #endif if( sd && ((skill = pc_checkskill(sd, HP_MEDITATIO)) > 0) ) hp += hp * skill * 2 / 100; else if( src->type == BL_HOM && (skill = merc_hom_checkskill(((TBL_HOM*)src), HLIF_BRAIN)) > 0 ) hp += hp * skill * 2 / 100; break; } + if( skill_id == AB_HIGHNESSHEAL ) + hp = (hp * (20 + 3 * (skill_lv - 1))) / 10; if( ( (target && target->type == BL_MER) || !heal ) && skill_id != NPC_EVILLAND ) hp >>= 1; @@ -378,6 +438,9 @@ int skillnotok (int skillid, struct map_session_data *sd) if(map[m].flag.restricted && map[m].zone && skill_get_nocast (skillid) & (8*map[m].zone)) return 1; + if( sd->sc.option&OPTION_MOUNTING ) + return 1;//You can't use skills while in the new mounts (The client doesn't let you, this is to make cheat-safe) + switch (skillid) { case AL_WARP: if(map[m].flag.nowarp) { @@ -410,6 +473,12 @@ int skillnotok (int skillid, struct map_session_data *sd) return 1; } break; + case GC_DARKILLUSION: + if( map_flag_gvg(m) ) { + clif_skill_fail(sd,skillid,0,0); + return 1; + } + break; case GD_EMERGENCYCALL: if ( !(battle_config.emergency_call&((agit_flag || agit2_flag)?2:1)) || @@ -420,6 +489,23 @@ int skillnotok (int skillid, struct map_session_data *sd) return 1; } break; + case BS_GREED: + case WS_CARTBOOST: + case BS_HAMMERFALL: + case BS_ADRENALINE: + case MC_CARTREVOLUTION: + case MC_MAMMONITE: + case WS_MELTDOWN: + case MG_SIGHT: + case TF_HIDING: + /** + * These skills cannot be used while in mado gear (credits to Xantara) + **/ + if(sd->sc.option&OPTION_MADOGEAR) { + clif_skill_fail(sd,skillid,0,0); + return 1; + } + break; } return (map[m].flag.noskill); } @@ -471,6 +557,8 @@ struct s_skill_unit_layout* skill_get_unit_layout (int skillid, int skilllv, str return &skill_unit_layout [firewall_unit_pos + dir]; else if (skillid == WZ_ICEWALL) return &skill_unit_layout [icewall_unit_pos + dir]; + else if( skillid == WL_EARTHSTRAIN ) //Warlock + return &skill_unit_layout [earthstrain_unit_pos + dir]; ShowError("skill_get_unit_layout: unknown unit layout for skill %d (level %d)\n", skillid, skilllv); return &skill_unit_layout[0]; // default 1x1 layout @@ -587,6 +675,9 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int rate=(sd->status.job_level+9)/10; skill_castend_damage_id(src,bl,HT_BLITZBEAT,(skill<rate)?skill:rate,tick,SD_LEVEL); } + // Automatic trigger of Warg Strike [Jobbie] + if( pc_iswug(sd) && (sd->status.weapon == W_BOW || sd->status.weapon == W_FIST) && (skill=pc_checkskill(sd,RA_WUGSTRIKE)) > 0 && rand()%1000 <= sstatus->luk*10/3+1 ) + skill_castend_damage_id(src,bl,RA_WUGSTRIKE,skill,tick,0); // Gank if(dstmd && sd->status.weapon != W_BOW && (skill=pc_checkskill(sd,RG_SNATCHER)) > 0 && @@ -683,7 +774,14 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int case WZ_METEOR: sc_start(bl,SC_STUN,3*skilllv,skilllv,skill_get_time2(skillid,skilllv)); break; - +#if FIREIVY_ON + //case WZ_FIREIVY: + // Testing for Fire Ivy + //sc_start(bl,SC_STUN,3*skilllv,skilllv,skill_get_time2(skillid,skilllv)); + //sc_start(bl,SC_STUN,(5*skilllv+35),skilllv,skill_get_time2(skillid,skilllv)); + //sc_start(bl,SC_BURNING,(8*skilllv+35),skilllv,skill_get_time2(skillid,skilllv)); + //break; +#endif case WZ_VERMILION: sc_start(bl,SC_BLIND,4*skilllv,skilllv,skill_get_time2(skillid,skilllv)); break; @@ -929,6 +1027,104 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int case NPC_CRITICALWOUND: sc_start(bl,SC_CRITICALWOUND,100,skilllv,skill_get_time2(skillid,skilllv)); break; + /** + * Rune Knight + **/ + case RK_HUNDREDSPEAR: + if( !sd || pc_checkskill(sd,KN_SPEARBOOMERANG) == 0 ) + break; // Spear Boomerang auto cast chance only works if you have mastered Spear Boomerang. + rate = 10 + 3 * skilllv; + if( rand()%100 < rate ) + skill_castend_damage_id(src,bl,KN_SPEARBOOMERANG,1,tick,0); + break; + case RK_WINDCUTTER: + sc_start(bl,SC_FEAR,3+2*skilllv,skilllv,skill_get_time(skillid,skilllv)); + break; + case RK_DRAGONBREATH: + sc_start4(bl,SC_BURNING,5+5*skilllv,skilllv,1000,src->id,0,skill_get_time(skillid,skilllv)); + break; + /** + * Arch Bishop + **/ + case AB_ADORAMUS: + if( tsc && !tsc->data[SC_DECREASEAGI] ) //Prevent duplicate agi-down effect. + sc_start(bl, SC_ADORAMUS, 100, skilllv, skill_get_time(skillid, skilllv)); + break; + /** + * Warlock + **/ + case WL_CRIMSONROCK: + sc_start(bl, SC_STUN, 40, skilllv, skill_get_time(skillid, skilllv)); + break; + case WL_COMET: + sc_start4(bl,SC_BURNING,100,skilllv,1000,src->id,0,skill_get_time(skillid,skilllv)); + break; + case WL_EARTHSTRAIN: + { + int rate = 0, i; + const int pos[5] = { EQP_WEAPON, EQP_HELM, EQP_SHIELD, EQP_ARMOR, EQP_ACC }; + rate = 6 * skilllv + sstatus->dex / 10 + (sd? sd->status.job_level / 4 : 0) - tstatus->dex /5;// The tstatus->dex / 5 part is unofficial, but players gotta have some kind of way to have resistance. [Rytech] + //rate -= rate * tstatus->dex / 200; // Disabled until official resistance is found. + + for( i = 0; i < skilllv; i++ ) + skill_strip_equip(bl,pos[i],rate,skilllv,skill_get_time2(skillid,skilllv)); + } + break; + case WL_JACKFROST: + sc_start(bl,SC_FREEZE,100,skilllv,skill_get_time(skillid,skilllv)); + break; + /** + * Ranger + **/ + case RA_WUGBITE: + sc_start(bl, SC_BITE, 70, skilllv, skill_get_time(skillid, skilllv) + (sd ? pc_checkskill(sd,RA_TOOTHOFWUG) * 1000 : 0)); // Need official chance. + break; + case RA_SENSITIVEKEEN: + if( rand()%100 < 8 * skilllv ) + skill_castend_damage_id(src, bl, RA_WUGBITE, sd ? pc_checkskill(sd, RA_WUGBITE):skilllv, tick, SD_ANIMATION); + break; + case RA_MAGENTATRAP: + case RA_COBALTTRAP: + case RA_MAIZETRAP: + case RA_VERDURETRAP: + if( dstmd && !(dstmd->status.mode&MD_BOSS) ) + sc_start2(bl,SC_ELEMENTALCHANGE,100,skilllv,skill_get_ele(skillid,skilllv),skill_get_time2(skillid,skilllv)); + break; + case RA_FIRINGTRAP: + case RA_ICEBOUNDTRAP: + sc_start(bl, (skillid == RA_FIRINGTRAP) ? SC_BURNING:SC_FREEZING, 40 + 10 * skilllv, skilllv, skill_get_time2(skillid, skilllv)); + break; + /** + * Mechanic + **/ + case NC_PILEBUNKER: + if( rand()%100 < 5 + 15*skilllv ) + { //Deactivatable Statuses: Kyrie Eleison, Auto Guard, Steel Body, Assumptio, and Millennium Shield + status_change_end(bl, SC_KYRIE, -1); + status_change_end(bl, SC_AUTOGUARD, -1); + status_change_end(bl, SC_STEELBODY, -1); + status_change_end(bl, SC_ASSUMPTIO, -1); + status_change_end(bl, SC_MILLENNIUMSHIELD, -1); + } + break; + case NC_FLAMELAUNCHER: + sc_start4(bl, SC_BURNING, 50 + 10 * skilllv, skilllv, 1000, src->id, 0, skill_get_time2(skillid, skilllv)); + break; + case NC_COLDSLOWER: + sc_start(bl, SC_FREEZE, 10 * skilllv, skilllv, skill_get_time(skillid, skilllv)); + sc_start(bl, SC_FREEZING, 20 + 10 * skilllv, skilllv, skill_get_time2(skillid, skilllv)); + break; + case NC_POWERSWING: + sc_start(bl, SC_STUN, 5*skilllv, skilllv, skill_get_time(skillid, skilllv)); + if( rand()%100 < 5*skilllv ) + skill_castend_damage_id(src, bl, NC_AXEBOOMERANG, pc_checkskill(sd, NC_AXEBOOMERANG), tick, 1); + break; + /** + * Guilotine Cross + **/ + case GC_WEAPONCRUSH: + skill_castend_nodamage_id(src,bl,skillid,skilllv,tick,BCT_ENEMY); + break; } if (md && battle_config.summons_trigger_autospells && md->master_id && md->special_state.ai) @@ -1039,7 +1235,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int if (DIFF_TICK(ud->canact_tick, tick + rate) < 0){ ud->canact_tick = tick+rate; if ( battle_config.display_status_timers && sd ) - clif_status_change(src, SI_ACTIONDELAY, 1, rate); + clif_status_change(src, SI_ACTIONDELAY, 1, rate, 0, 0, 0); } } } @@ -1315,7 +1511,7 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list * if (DIFF_TICK(ud->canact_tick, tick + rate) < 0){ ud->canact_tick = tick+rate; if ( battle_config.display_status_timers && dstsd ) - clif_status_change(bl, SI_ACTIONDELAY, 1, rate); + clif_status_change(bl, SI_ACTIONDELAY, 1, rate, 0, 0, 0); } } } @@ -1450,7 +1646,7 @@ int skill_strip_equip(struct block_list *bl, unsigned short where, int rate, int return 0; sc = status_get_sc(bl); - if (!sc) + if (!sc || sc->option&OPTION_MADOGEAR ) //Mado Gear cannot be divested [Ind] return 0; for (i = 0; i < ARRAYLENGTH(pos); i++) { @@ -1465,8 +1661,8 @@ int skill_strip_equip(struct block_list *bl, unsigned short where, int rate, int } return where?1:0; } - - +//Early declaration +static int skill_area_temp[8]; /*========================================================================= Used to knock back players, monsters, traps, etc - 'count' is the number of squares to knock back @@ -1655,8 +1851,14 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds sc->data[SC_SPIRIT]->val4 = dsrc->id; } } + /** + * Official Magic Reflection Behavior : damage reflected depends on gears caster wears, not target + **/ + #if RR_MAGIC_REFLECTION + if( dmg.dmg_lv != ATK_MISS )//Wiz SL cancelled and consumed fragment + dmg = battle_calc_attack(BF_MAGIC,bl,bl,skillid,skilllv,flag&0xFFF); + #endif } - if(sc && sc->data[SC_MAGICROD] && src == dsrc) { int sp = skill_get_sp(skillid,skilllv); dmg.damage = dmg.damage2 = 0; @@ -1678,7 +1880,7 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds if( damage > 0 && dmg.flag&BF_WEAPON && src != bl && ( src == dsrc || ( dsrc->type == BL_SKILL && ( skillid == SG_SUN_WARM || skillid == SG_MOON_WARM || skillid == SG_STAR_WARM ) ) ) && skillid != WS_CARTTERMINATION ) - rdamage = battle_calc_return_damage(bl, damage, dmg.flag); + rdamage = battle_calc_return_damage(bl,src, &damage, dmg.flag); //Skill hit type type=(skillid==0)?5:skill_get_hit(skillid); @@ -1804,7 +2006,31 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds else // the central target doesn't display an animation dmg.dmotion = clif_skill_damage(dsrc,bl,tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, skillid, -2, 5); // needs -2(!) as skill level break; - + /** + * Warlock + **/ + case WL_HELLINFERNO: + dmg.dmotion = clif_skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,1,skillid,-2,6); + break; + case WL_SOULEXPANSION: + case WL_COMET: + dmg.dmotion = clif_skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,dmg.div_,skillid,skilllv,8); + break; + case WL_CHAINLIGHTNING_ATK: + dmg.dmotion = clif_skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,1,WL_CHAINLIGHTNING,-2,6); + break; + case WL_TETRAVORTEX_FIRE: + case WL_TETRAVORTEX_WATER: + case WL_TETRAVORTEX_WIND: + case WL_TETRAVORTEX_GROUND: + dmg.dmotion = clif_skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,1,WL_TETRAVORTEX_FIRE,-2,type); + break; + /** + * Arch Bishop + **/ + case AB_DUPLELIGHT_MELEE: + case AB_DUPLELIGHT_MAGIC: + dmg.amotion = 300; default: if( flag&SD_ANIMATION && dmg.div_ < 2 ) //Disabling skill animation doesn't works on multi-hit. type = 5; @@ -1819,8 +2045,22 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds && (!sc || !sc->data[SC_PRESERVE]) && damage < tsd->battle_status.hp) { //Updated to not be able to copy skills if the blow will kill you. [Skotlex] - if ((tsd->status.skill[skillid].id == 0 || tsd->status.skill[skillid].flag == SKILL_FLAG_PLAGIARIZED) && - can_copy(tsd,skillid,bl)) // Split all the check into their own function [Aru] + int copy_skill = skillid; + /** + * Copy Referal: dummy skills should point to their source upon copying + **/ + switch( skillid ) { + case AB_DUPLELIGHT_MELEE: + case AB_DUPLELIGHT_MAGIC: + copy_skill = AB_DUPLELIGHT; + break; + case WL_CHAINLIGHTNING_ATK: + copy_skill = WL_CHAINLIGHTNING; + break; + } + + if ((tsd->status.skill[copy_skill].id == 0 || tsd->status.skill[copy_skill].flag == SKILL_FLAG_PLAGIARIZED) && + can_copy(tsd,copy_skill,bl)) // Split all the check into their own function [Aru] { int lv = skilllv; if (tsd->cloneskill_id && tsd->status.skill[tsd->cloneskill_id].flag == SKILL_FLAG_PLAGIARIZED){ @@ -1833,11 +2073,11 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds if ((type = pc_checkskill(tsd,RG_PLAGIARISM)) < lv) lv = type; - tsd->cloneskill_id = skillid; - pc_setglobalreg(tsd, "CLONE_SKILL", skillid); + tsd->cloneskill_id = copy_skill; + pc_setglobalreg(tsd, "CLONE_SKILL", copy_skill); pc_setglobalreg(tsd, "CLONE_SKILL_LV", lv); - tsd->status.skill[skillid].id = skillid; + tsd->status.skill[skillid].id = copy_skill; tsd->status.skill[skillid].lv = lv; tsd->status.skill[skillid].flag = SKILL_FLAG_PLAGIARIZED; clif_addskill(tsd,skillid); @@ -1871,6 +2111,12 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds if( damage > 0 ) //Counter status effects [Skotlex] skill_counter_additional_effect(src,bl,skillid,skilllv,dmg.flag,tick); } + // Hell Inferno burning status only starts if Fire part hits. + if( skillid == WL_HELLINFERNO && dmg.damage > 0 ) + sc_start4(bl,SC_BURNING,55+5*skilllv,skilllv,1000,src->id,0,skill_get_time(skillid,skilllv)); + // Apply knock back chance in SC_TRIANGLESHOT skill. + else if( skillid == SC_TRIANGLESHOT && rand()%100 > (1 + skilllv) ) + dmg.blewcount = 0; //Only knockback if it's still alive, otherwise a "ghost" is left behind. [Skotlex] //Reflected spells do not bounce back (bl == dsrc since it only happens for direct skills) @@ -1882,6 +2128,8 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds case MG_FIREWALL: direction = unit_getdir(bl); break; // backwards case WZ_STORMGUST: direction = rand()%8; break; // randomly case PR_SANCTUARY: direction = unit_getdir(bl); break; // backwards + case WL_CRIMSONROCK: direction = map_calc_dir(bl,skill_area_temp[4],skill_area_temp[5]); break; + } skill_blown(dsrc,bl,dmg.blewcount,direction,0); } @@ -1937,6 +2185,19 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds battle_drain(tsd, src, rdamage, rdamage, sstatus->race, is_boss(src)); skill_additional_effect(bl, src, CR_REFLECTSHIELD, 1, BF_WEAPON|BF_SHORT|BF_NORMAL,ATK_DEF,tick); } + if( damage > 0 ) { + if( skillid == RK_CRUSHSTRIKE ) // Your weapon will not be broken if you miss. + skill_break_equip(src,EQP_WEAPON,10000,BCT_SELF); + + if( skillid == GC_VENOMPRESSURE ) { + struct status_change *ssc = status_get_sc(src); + if( ssc && ssc->data[SC_POISONINGWEAPON] && rand()%100 < 70 + 5*skilllv ) { + sc_start(bl,ssc->data[SC_POISONINGWEAPON]->val2,100,ssc->data[SC_POISONINGWEAPON]->val1,skill_get_time2(GC_POISONINGWEAPON,ssc->data[SC_POISONINGWEAPON]->val1)); + status_change_end(src,SC_POISONINGWEAPON,-1); + clif_skill_nodamage(src,bl,skillid,skilllv,1); + } + } + } if (!(flag&2) && ( @@ -1963,7 +2224,6 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds * ffff=Ž©—R‚ÉŽg—p‰Â”\ * 0 =—\–ñ?B0‚ɌŒè *------------------------------------------*/ -static int skill_area_temp[8]; typedef int (*SkillFunc)(struct block_list *, struct block_list *, int, int, unsigned int, int); int skill_area_sub (struct block_list *bl, va_list ap) { @@ -2034,6 +2294,17 @@ static int skill_check_unit_range_sub (struct block_list *bl, va_list ap) case HT_CLAYMORETRAP: case HT_TALKIEBOX: case HP_BASILICA: + /** + * Ranger + **/ + case RA_ELECTRICSHOCKER: + case RA_CLUSTERBOMB: + case RA_MAGENTATRAP: + case RA_COBALTTRAP: + case RA_MAIZETRAP: + case RA_VERDURETRAP: + case RA_FIRINGTRAP: + case RA_ICEBOUNDTRAP: //Non stackable on themselves and traps (including venom dust which does not has the trap inf2 set) if (skillid != g_skillid && !(skill_get_inf2(g_skillid)&INF2_TRAP) && g_skillid != AS_VENOMDUST) return 0; @@ -2346,6 +2617,61 @@ static int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data) } } break; + /** + * Warlock + **/ + case WL_CHAINLIGHTNING_ATK: + { + struct block_list *nbl = NULL; // Next Target of Chain + skill_attack(BF_MAGIC,src,src,target,skl->skill_id,skl->skill_lv,tick,skl->flag); // Hit a Lightning on the current Target + if( skl->type > 1 ) + { // Remaining Chains Hit + nbl = battle_getenemyarea(src,target->x,target->y,2,BL_CHAR|BL_SKILL,target->id); // Search for a new Target around current one... + if( nbl == NULL && skl->x > 1 ) + { + nbl = target; + skl->x--; + } + else skl->x = 3; + } + + if( nbl ) + skill_addtimerskill(src,tick+status_get_adelay(src),nbl->id,skl->x,0,WL_CHAINLIGHTNING_ATK,skl->skill_lv,skl->type-1,skl->flag); + } + break; + case WL_TETRAVORTEX_FIRE: + case WL_TETRAVORTEX_WATER: + case WL_TETRAVORTEX_WIND: + case WL_TETRAVORTEX_GROUND: + skill_attack(BF_MAGIC,src,src,target,skl->skill_id,skl->skill_lv,tick,skl->flag); + if( skl->type >= 3 ) + { // Final Hit + status_change_end(src,SC_MAGICPOWER,-1); // Removes Magic Power + if( !status_isdead(target) ) + { // Final Status Effect + int effects[4] = { SC_BURNING, SC_FREEZING, SC_BLEEDING, SC_STUN }, + applyeffects[4] = { 0, 0, 0, 0 }, + i, j = 0, k = 0; + for( i = 1; i <= 8; i = i + i ) + { + if( skl->x&i ) + { + applyeffects[j] = effects[k]; + j++; + } + k++; + } + if( j ) + { + i = applyeffects[rand()%j]; + status_change_start(target, i, 10000, skl->skill_lv, + (i == SC_BURNING ? 1000 : 0), + (i == SC_BURNING ? src->id : 0), + 0, skill_get_time(WL_TETRAVORTEX,skl->skill_lv), 0); + } + } + } + break; default: skill_attack(skl->type,src,src,target,skl->skill_id,skl->skill_lv,tick,skl->flag); break; @@ -2368,7 +2694,13 @@ static int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data) else if( path_search_long(NULL, src->m, src->x, src->y, skl->x, skl->y, CELL_CHKWALL) ) skill_unitsetting(src,skl->skill_id,skl->skill_lv,skl->x,skl->y,skl->flag); break; + case WL_EARTHSTRAIN: + skill_unitsetting(src,skl->skill_id,skl->skill_lv,skl->x,skl->y,(skl->type<<16)|skl->flag); + break; + } + if( skl->skill_id >= WL_TETRAVORTEX_FIRE && skl->skill_id <= WL_TETRAVORTEX_GROUND ) + status_change_end(src,SC_MAGICPOWER,-1); } } while (0); //Free skl now that it is no longer needed. @@ -2569,6 +2901,43 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int case NPC_BLEEDING: case NPC_CRITICALWOUND: case NPC_HELLPOWER: + /** + * Rune Knight + **/ + case RK_SONICWAVE: + case RK_HUNDREDSPEAR: + case RK_WINDCUTTER: + /** + * Arch Bishop + **/ + case AB_DUPLELIGHT_MELEE: + /** + * Ranger + **/ + case RA_AIMEDBOLT: + /** + * Mechanic + **/ + case NC_AXEBOOMERANG: + case NC_POWERSWING: + /** + * Guilotinne Cross + **/ + case GC_CROSSIMPACT: + case GC_VENOMPRESSURE: + + skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); + break; + + /** + * Mechanic (MADO GEAR) + **/ + case NC_BOOSTKNUCKLE: + case NC_PILEBUNKER: + case NC_VULCANARM: + case NC_COLDSLOWER: + case NC_ARMSCANNON: + if (sd) pc_overheat(sd,1); skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); break; @@ -2637,6 +3006,8 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int } break; + case NC_FLAMELAUNCHER: + if (sd) pc_overheat(sd,1); case SN_SHARPSHOOTING: case MA_SHARPSHOOTING: case NJ_KAMAITACHI: @@ -2766,6 +3137,35 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int case NPC_PULSESTRIKE: case NPC_HELLJUDGEMENT: case NPC_VAMPIRE_GIFT: + /** + * Rune Knight + **/ + case RK_IGNITIONBREAK: + /** + * Arch Bishop + **/ + case AB_JUDEX: + /** + * Warlock + **/ + case WL_SOULEXPANSION: + case WL_CRIMSONROCK: + case WL_COMET: + /** + * Ranger + **/ + case RA_ARROWSTORM: + case RA_WUGDASH: + /** + * Mechanic + **/ + case NC_SELFDESTRUCTION: + case NC_AXETORNADO: + /** + * Guilotine Cross + **/ + case GC_ROLLINGCUTTER: + case GC_COUNTERSLASH: if( flag&1 ) { //Recursive invocation // skill_area_temp[0] holds number of targets in area @@ -2792,7 +3192,10 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int skill_area_temp[0] = 0; skill_area_temp[1] = bl->id; skill_area_temp[2] = 0; - + if( skillid == WL_CRIMSONROCK ) { + skill_area_temp[4] = bl->x; + skill_area_temp[5] = bl->y; + } // if skill damage should be split among targets, count them //SD_LEVEL -> Forced splash damage for Auto Blitz-Beat -> count targets //special case: Venom Splasher uses a different range for searching than for splashing @@ -2800,7 +3203,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int skill_area_temp[0] = map_foreachinrange(skill_area_sub, bl, (skillid == AS_SPLASHER)?1:skill_get_splash(skillid, skilllv), BL_CHAR, src, skillid, skilllv, tick, BCT_ENEMY, skill_area_sub_count); // recursive invocation of skill_castend_damage_id() with flag|1 - map_foreachinrange(skill_area_sub, bl, skill_get_splash(skillid, skilllv), splash_target(src), src, skillid, skilllv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id); + map_foreachinrange(skill_area_sub, bl, skill_get_splash(skillid, skilllv), (skillid == WL_CRIMSONROCK)?BL_CHAR|BL_SKILL:splash_target(src), src, skillid, skilllv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id); //FIXME: Isn't EarthQuake a ground skill after all? if( skillid == NPC_EARTHQUAKE ) @@ -2920,6 +3323,20 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int case NJ_KOUENKA: case NJ_HYOUSENSOU: case NJ_HUUJIN: +#if FIREIVY_ON + case WZ_FIREIVY: +#endif + /** + * Arch Bishop + **/ + case AB_ADORAMUS: + case AB_RENOVATIO: + case AB_HIGHNESSHEAL: + case AB_DUPLELIGHT_MAGIC: + /** + * Warlock + **/ + case WL_HELLINFERNO: skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); break; @@ -3006,6 +3423,10 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int case NPC_SMOKING: case GS_FLING: case NJ_ZENYNAGE: + /** + * Rune Knight + **/ + case RK_DRAGONBREATH: skill_attack(BF_MISC,src,src,bl,skillid,skilllv,tick,flag); break; @@ -3062,6 +3483,330 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int status_change_end(src, SC_HIDING, INVALID_TIMER); skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); break; + /** + * Rune Knight + **/ + case RK_PHANTOMTHRUST: + unit_setdir(src,map_calc_dir(src, bl->x, bl->y)); + clif_skill_nodamage(src,bl,skillid,skilllv,1); + + skill_blown(src,bl,distance_bl(src,bl)-1,unit_getdir(src),0); + if( battle_check_target(src,bl,BCT_ENEMY) ) + skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); + break; + + case RK_STORMBLAST: + case RK_CRUSHSTRIKE: + if( sd ) { + if( pc_checkskill(sd,RK_RUNEMASTERY) >= ( skillid == RK_CRUSHSTRIKE ? 7 : 3 ) ) + skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); + else + clif_skill_fail(sd,skillid,0,0); + } else //non-sd support + skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); + break; + /** + * Guilotinne Cross + **/ + case GC_DARKILLUSION: + { + short x, y; + short dir = map_calc_dir(src,bl->x,bl->y); + + if( dir > 4 ) x = -1; + else if( dir > 0 && dir < 4 ) x = 1; + else x = 0; + if( dir < 3 || dir > 5 ) y = -1; + else if( dir > 3 && dir < 5 ) y = 1; + else y = 0; + + if( unit_movepos(src, bl->x+x, bl->y+y, 1, 1) ) + { + clif_slide(src,bl->x+x,bl->y+y); + clif_fixpos(src); // the official server send these two packts. + skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); + if( rand()%100 < 4 * skilllv ) + skill_castend_damage_id(src,bl,GC_CROSSIMPACT,skilllv,tick,flag); + } + + } + break; + + case GC_WEAPONCRUSH: + if( sc && sc->data[SC_COMBO] && sc->data[SC_COMBO]->val1 == GC_WEAPONBLOCKING ) + skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); + else if( sd ) + clif_skill_fail(sd,skillid,0x1f,0); + break; + + case GC_CROSSRIPPERSLASHER: + if( sd && !(sc && sc->data[SC_ROLLINGCUTTER]) ) + clif_skill_fail(sd,skillid,0x17,0); + else + { + skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); + status_change_end(src,SC_ROLLINGCUTTER,-1); + } + break; + + case GC_PHANTOMMENACE: + if( flag&1 ) + { // Only Hits Invisible Targets + struct status_change *tsc = status_get_sc(bl); + if(tsc && (tsc->option&(OPTION_HIDE|OPTION_CLOAK|OPTION_CHASEWALK) || tsc->data[SC__INVISIBILITY]) ) + skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); + } + break; + /** + * Warlock + **/ + case WL_CHAINLIGHTNING: + clif_skill_nodamage(src,bl,skillid,skilllv,1); + skill_addtimerskill(src,tick + 150,bl->id,3,0,WL_CHAINLIGHTNING_ATK,skilllv,4+skilllv,flag); + break; + case WL_DRAINLIFE: + { + int heal = skill_attack(skill_get_type(skillid), src, src, bl, skillid, skilllv, tick, flag); + int rate = 70 + 4 * skilllv + ( sd ? sd->status.job_level : 50 ) / 5; + + heal = 8 * skilllv; + if( status_get_lv(src) > 100 ) heal = heal * status_get_lv(src) / 100; // Base level bonus. + + if( bl->type == BL_SKILL ) + heal = 0; // Don't absorb heal from Ice Walls or other skill units. + + if( heal && rand()%100 < rate ) + { + status_heal(src, heal, 0, 0); + clif_skill_nodamage(NULL, src, AL_HEAL, heal, 1); + } + } + break; + + case WL_TETRAVORTEX: + if( sd ) + { + int spheres[5] = { 0, 0, 0, 0, 0 }, + positions[5] = {-1,-1,-1,-1,-1 }, + i, j = 0, k, subskill = 0; + + for( i = SC_SPHERE_1; i <= SC_SPHERE_5; i++ ) + if( sc && sc->data[i] ) + { + spheres[j] = i; + positions[j] = sc->data[i]->val2; + j++; // + } + + if( j < 4 ) + { // Need 4 spheres minimum + clif_skill_fail(sd,skillid,0,0); + break; + } + + // Sphere Sort, this time from new to old + for( i = 0; i <= j - 2; i++ ) + for( k = i + 1; k <= j - 1; k++ ) + if( positions[i] < positions[k] ) + { + swap(positions[i],positions[k]); + swap(spheres[i],spheres[k]); + } + + k = 0; + for( i = 0; i < 4; i++ ) + { + switch( sc->data[spheres[i]]->val1 ) + { + case WLS_FIRE: subskill = WL_TETRAVORTEX_FIRE; k |= 1; break; + case WLS_WIND: subskill = WL_TETRAVORTEX_WIND; k |= 4; break; + case WLS_WATER: subskill = WL_TETRAVORTEX_WATER; k |= 2; break; + case WLS_STONE: subskill = WL_TETRAVORTEX_GROUND; k |= 8; break; + } + + skill_addtimerskill(src,tick+status_get_adelay(src)*i,bl->id,k,0,subskill,skilllv,i,flag); + status_change_end(src, spheres[i], INVALID_TIMER); + } + } + break; + + case WL_RELEASE: + if( sd ) + { + int i; + // Priority is to release SpellBook + ARR_FIND(0,MAX_SPELLBOOK,i,sd->rsb[i].skillid != 0); + if( i < MAX_SPELLBOOK ) + { // SpellBook + int rsb_skillid, rsb_skilllv; + + if( skilllv > 1 ) + { + ARR_FIND(0,MAX_SPELLBOOK,i,sd->rsb[i].skillid == 0); + i--; // At skilllvl 2, Release uses the last learned skill in spellbook + } + + rsb_skillid = sd->rsb[i].skillid; + rsb_skilllv = sd->rsb[i].level; + + if( skilllv > 1 ) + sd->rsb[i].skillid = 0; // Last position - only remove it from list + else + memmove(&sd->rsb[0],&sd->rsb[1],sizeof(sd->rsb) - sizeof(sd->rsb[0])); + + if( sd->rsb[0].skillid == 0 ) + status_change_end(src, SC_READING_SB, INVALID_TIMER); + + status_change_end(src, SC_MAGICPOWER, INVALID_TIMER); + + clif_skill_nodamage(src,bl,skillid,skilllv,1); + if( !skill_check_condition_castbegin(sd,rsb_skillid,rsb_skilllv) ) + break; + + switch( skill_get_casttype(rsb_skillid) ) + { + case CAST_GROUND: + skill_castend_pos2(src,bl->x,bl->y,rsb_skillid,rsb_skilllv,tick,0); + break; + case CAST_NODAMAGE: + skill_castend_nodamage_id(src,bl,rsb_skillid,rsb_skilllv,tick,0); + break; + case CAST_DAMAGE: + skill_castend_damage_id(src,bl,rsb_skillid,rsb_skilllv,tick,0); + break; + } + + sd->ud.canact_tick = tick + skill_delayfix(src, rsb_skillid, rsb_skilllv); + clif_status_change(src, SI_ACTIONDELAY, 1, skill_delayfix(src, rsb_skillid, rsb_skilllv), 0, 0, 0); + } + else + { // Summon Balls + int j = 0, k, skele; + int spheres[5] = { 0, 0, 0, 0, 0 }, + positions[5] = {-1,-1,-1,-1,-1 }; + + for( i = SC_SPHERE_1; i <= SC_SPHERE_5; i++ ) + if( sc && sc->data[i] ) + { + spheres[j] = i; + positions[j] = sc->data[i]->val2; + sc->data[i]->val2--; // Prepares for next position + j++; + } + + if( j == 0 ) + { // No Spheres + clif_skill_fail(sd,skillid,0,0); + break; + } + + // Sphere Sort + for( i = 0; i <= j - 2; i++ ) + for( k = i + 1; k <= j - 1; k++ ) + if( positions[i] > positions[k] ) + { + swap(positions[i],positions[k]); + swap(spheres[i],spheres[k]); + } + + status_change_end(src, SC_MAGICPOWER, INVALID_TIMER); + + if( skilllv == 1 ) j = 1; // Limit only to one ball + for( i = 0; i < j; i++ ) + { + skele = WL_RELEASE - 5 + sc->data[spheres[i]]->val1 - WLS_FIRE; // Convert Ball Element into Skill ATK for balls + // WL_SUMMON_ATK_FIRE, WL_SUMMON_ATK_WIND, WL_SUMMON_ATK_WATER, WL_SUMMON_ATK_GROUND + skill_addtimerskill(src,tick+status_get_adelay(src)*i,bl->id,0,0,skele,sc->data[spheres[i]]->val3,BF_MAGIC,flag|SD_LEVEL); + status_change_end(src, spheres[i], INVALID_TIMER); // Eliminate ball + } + clif_skill_nodamage(src,bl,skillid,0,1); + } + } + break; + case WL_FROSTMISTY: + { + struct status_change *tsc = status_get_sc(bl); + if( tsc && (tsc->option&(OPTION_HIDE|OPTION_CLOAK|OPTION_CHASEWALK) || tsc->data[SC__INVISIBILITY]) ) + break; // Doesn't hit/cause Freezing to invisible enemy + // Causes Freezing status through walls. + sc_start(bl,status_skill2sc(skillid),20+12*skilllv+(sd ? sd->status.job_level : 50)/5,skilllv,skill_get_time(skillid,skilllv)); + // Doesn't deal damage through non-shootable walls. + if( path_search(NULL,src->m,src->x,src->y,bl->x,bl->y,1,CELL_CHKWALL) ) + skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag); + } + break; + + case WL_JACKFROST: { + struct status_change *tsc = status_get_sc(bl); + if( tsc && (tsc->option&(OPTION_HIDE|OPTION_CLOAK|OPTION_CHASEWALK) || tsc->data[SC__INVISIBILITY]) ) + break; // Do not hit invisible enemy + skill_attack(skill_get_type(skillid), src, src, bl, skillid, skilllv, tick, flag); + } + break; + /** + * Ranger + **/ + case RA_WUGSTRIKE: + case RA_WUGBITE: + if( path_search(NULL,src->m,src->x,src->y,bl->x,bl->y,1,CELL_CHKNOREACH) ) { + if( skillid == RA_WUGSTRIKE ) { + if( sd && pc_isridingwug(sd) && !map_flag_gvg(src->m) && !map[src->m].flag.battleground && unit_movepos(src,bl->x,bl->y,1,1) ) + clif_slide(src, bl->x, bl->y); + } + skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); + } + break; + + case RA_SENSITIVEKEEN: + if( bl->type != BL_SKILL ) { // Only Hits Invisible Targets + struct status_change * tsc = status_get_sc(bl); + if(tsc && (tsc->option&(OPTION_HIDE|OPTION_CLOAK) || tsc->data[SC__INVISIBILITY]) ) + skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); + } + else + { + struct skill_unit *su = BL_CAST(BL_SKILL,bl); + struct skill_unit_group* sg; + + if( su && (sg=su->group) && skill_get_inf2(sg->skill_id)&INF2_TRAP && sg->src_id != src->id && + battle_check_target(src, map_id2bl(sg->src_id), BCT_ENEMY) > 0 ) + { + if( sd && !(sg->unit_id == UNT_USED_TRAPS || (sg->unit_id == UNT_ANKLESNARE && sg->val2 != 0 )) ) + { + struct item item_tmp; + memset(&item_tmp,0,sizeof(item_tmp)); + item_tmp.nameid = ( sg->unit_id >= UNT_MAGENTATRAP && sg->unit_id <= UNT_CLUSTERBOMB )?ITEMID_TRAP_ALLOY:ITEMID_TRAP; + item_tmp.identify = 1; + if( item_tmp.nameid ) + map_addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); + } + skill_delunit(su); + } + } + break; + /** + * Mechanic + **/ + case NC_INFRAREDSCAN: + if( flag&1 ) + { //TODO: Need a confirmation if the other type of hidden status is included to be scanned. [Jobbie] + if( rand()%100 < 50 ) + sc_start(bl, SC_INFRAREDSCAN, 10000, skilllv, skill_get_time(skillid, skilllv)); + status_change_end(bl, SC_HIDING, -1); + status_change_end(bl, SC_CLOAKING, -1); + status_change_end(bl, SC_CLOAKINGEXCEED, -1); // Need confirm it. + } + else + { + map_foreachinrange(skill_area_sub, bl, skill_get_splash(skillid, skilllv), splash_target(src), src, skillid, skilllv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id); + clif_skill_damage(src,src,tick, status_get_amotion(src), 0, -30000, 1, skillid, skilllv, 6); + if( sd ) pc_overheat(sd,1); + } + break; + + case NC_MAGNETICFIELD: + sc_start2(bl,SC_MAGNETICFIELD,100,skilllv,src->id,skill_get_time(skillid,skilllv)); + break; case 0: if(sd) { if (flag & 3){ @@ -3153,6 +3898,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case AL_HEAL: case ALL_RESURRECTION: case PR_ASPERSIO: + /** + * Arch Bishop + **/ + case AB_RENOVATIO: + case AB_HIGHNESSHEAL: //Apparently only player casted skills can be offensive like this. if (sd && battle_check_undead(tstatus->race,tstatus->def_ele)) { if (battle_check_target(src, bl, BCT_ENEMY) < 1) { @@ -3186,11 +3936,17 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in { case HLIF_HEAL: //[orn] case AL_HEAL: + /** + * Arch Bishop + **/ + case AB_HIGHNESSHEAL: { int heal = skill_calc_heal(src, bl, skillid, skilllv, true); int heal_get_jobexp; - if( status_isimmune(bl) || (dstmd && (dstmd->class_ == MOBID_EMPERIUM || mob_is_battleground(dstmd))) ) + if( status_isimmune(bl) || + (dstmd && (dstmd->class_ == MOBID_EMPERIUM || mob_is_battleground(dstmd))) || + (skillid == AL_HEAL && dstsd && dstsd->sc.option&OPTION_MADOGEAR) )//Mado is immune to AL_HEAL heal=0; if( sd && dstsd && sd->status.partner_id == dstsd->status.char_id && (sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE && sd->status.sex == 0 ) @@ -3599,7 +4355,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in sc_start4(src,SC_WATK_ELEMENT,100,3,20,0,0,skill_get_time2(skillid, skilllv)); if (sd) skill_blockpc_start (sd, skillid, skill_get_time(skillid, skilllv)); break; - + case ASC_EDP: + clif_skill_nodamage(src,bl,skillid,skilllv, + sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv) + ( sd ? 3000 * pc_checkskill(sd,GC_RESEARCHNEWPOISON) : 0 ))); + break; case AL_INCAGI: case AL_BLESSING: case MER_INCAGI: @@ -3640,7 +4399,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case HW_MAGICPOWER: case PF_MEMORIZE: case PA_SACRIFICE: - case ASC_EDP: case PF_DOUBLECASTING: case SG_SUN_COMFORT: case SG_MOON_COMFORT: @@ -3657,6 +4415,32 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case ST_PRESERVE: case NPC_INVINCIBLE: case NPC_INVINCIBLEOFF: + /** + * Rune Knight + **/ + case RK_DEATHBOUND: + /** + * Arch Bishop + **/ + case AB_RENOVATIO: + case AB_EXPIATIO: + case AB_DUPLELIGHT: + case AB_SECRAMENT: + /** + * Mechanic + **/ + case NC_ACCELERATION: + case NC_HOVERING: + case NC_SHAPESHIFT: + /** + * Warlock + **/ + case WL_RECOGNIZEDSPELL: + /** + * Guillotine Cross + **/ + case GC_VENOMIMPRESS: + clif_skill_nodamage(src,bl,skillid,skilllv, sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); break; @@ -3914,14 +4698,14 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case AM_PHARMACY: if(sd) { - clif_skill_produce_mix_list(sd,22); + clif_skill_produce_mix_list(sd,skillid,22); clif_skill_nodamage(src,bl,skillid,skilllv,1); } break; case SA_CREATECON: if(sd) { - clif_skill_produce_mix_list(sd,23); + clif_skill_produce_mix_list(sd,skillid,23); clif_skill_nodamage(src,bl,skillid,skilllv,1); } break; @@ -3942,12 +4726,32 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case ASC_METEORASSAULT: case GS_SPREADATTACK: + /** + * Rune Knight + **/ + case RK_STORMBLAST: + /** + * Mechanic + **/ + case NC_AXETORNADO: + /** + * Guilotine Cross + **/ + case GC_COUNTERSLASH: skill_area_temp[1] = 0; clif_skill_nodamage(src,bl,skillid,skilllv,1); - map_foreachinrange(skill_area_sub, bl, skill_get_splash(skillid, skilllv), splash_target(src), + i = map_foreachinrange(skill_area_sub, bl, skill_get_splash(skillid, skilllv), splash_target(src), src, skillid, skilllv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id); + if( !i && skillid == NC_AXETORNADO ) + clif_skill_damage(src,src,tick, status_get_amotion(src), 0, -30000, 1, skillid, skilllv, 6); break; + case NC_EMERGENCYCOOL: + clif_skill_nodamage(src,bl,skillid,skilllv,1); + status_change_end(src,SC_OVERHEAT_LIMITPOINT,-1); + status_change_end(src,SC_OVERHEAT,-1); + break; + case NC_INFRAREDSCAN: case NPC_EARTHQUAKE: case NPC_VAMPIRE_GIFT: case NPC_HELLJUDGEMENT: @@ -4091,6 +4895,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in clif_skill_nodamage(src,bl,skillid,-1,status_change_end(bl, type, INVALID_TIMER)); //Hide skill-scream animation. map_freeblock_unlock(); return 0; + } else if( tsc && tsc->option&OPTION_MADOGEAR ) { + //Mado Gear cannot hide + if( sd ) clif_skill_fail(sd,skillid,0,0); + map_freeblock_unlock(); + return 0; } clif_skill_nodamage(src,bl,skillid,-1,sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); break; @@ -4106,6 +4915,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in clif_walkok(sd); // So aegis has to resend the walk ok. break; case AS_CLOAKING: + case RA_CAMOUFLAGE: + /** + * Guilotine Cross + **/ + case GC_CLOAKINGEXCEED: if (tsce) { i = status_change_end(bl, type, INVALID_TIMER); @@ -4425,6 +5239,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case RG_STRIPARMOR: case RG_STRIPHELM: case ST_FULLSTRIP: + case GC_WEAPONCRUSH: { unsigned short location = 0; int d = 0; @@ -4443,6 +5258,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in switch (skillid) { case RG_STRIPWEAPON: + case GC_WEAPONCRUSH: location = EQP_WEAPON; break; case RG_STRIPSHIELD: @@ -4460,14 +5276,14 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in } //Special message when trying to use strip on FCP [Jobbie] - if( sd && skillid == ST_FULLSTRIP && tsc && tsc->data[SC_CP_WEAPON] && tsc->data[SC_CP_HELM] && tsc->data[SC_CP_ARMOR] && tsc->data[SC_CP_SHIELD] ) + if( sd && skillid == ST_FULLSTRIP && tsc && tsc->data[SC_CP_WEAPON] && tsc->data[SC_CP_HELM] && tsc->data[SC_CP_ARMOR] && tsc->data[SC_CP_SHIELD]) { clif_gospel_info(sd, 0x28); break; } //Attempts to strip at rate i and duration d - if( (i = skill_strip_equip(bl, location, i, skilllv, d)) || skillid != ST_FULLSTRIP ) + if( (i = skill_strip_equip(bl, location, i, skilllv, d)) || (skillid != ST_FULLSTRIP && skillid != GC_WEAPONCRUSH ) ) clif_skill_nodamage(src,bl,skillid,skilllv,i); //Nothing stripped. @@ -4631,7 +5447,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in clif_skill_nodamage(src,bl,skillid,skilllv,1); if((dstsd && (dstsd->class_&MAPID_UPPERMASK) == MAPID_SOUL_LINKER) || (tsc && tsc->data[SC_SPIRIT] && tsc->data[SC_SPIRIT]->val2 == SL_ROGUE) //Rogue's spirit defends againt dispel. - || rand()%100 >= 50+10*skilllv) + || rand()%100 >= 50+10*skilllv + || ( tsc && tsc->option&OPTION_MADOGEAR ) )//Mado Gear is immune to dispell according to bug report 49 [Ind] { if (sd) clif_skill_fail(sd,skillid,0,0); @@ -5654,6 +6471,610 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in clif_skill_nodamage(src, bl, skillid, skilllv, buyingstore_setup(sd, MAX_BUYINGSTORE_SLOTS)); } break; + case RK_ENCHANTBLADE: + clif_skill_nodamage(src,bl,skillid,skilllv,// formula not confirmed + sc_start2(bl,type,100,skilllv,100+20*skilllv/*+sstatus->int_/2+status_get_lv(bl)/10*/,skill_get_time(skillid,skilllv))); + break; + case RK_DRAGONHOWLING: + if( flag&1) + sc_start(bl,type,50 + 6 * skilllv,skilllv,skill_get_time(skillid,skilllv)); + else + { + skill_area_temp[2] = 0; + clif_skill_nodamage(src,bl,skillid,skilllv,1); + map_foreachinrange(skill_area_sub, src, + skill_get_splash(skillid,skilllv),BL_CHAR, + src,skillid,skilllv,tick,flag|BCT_ENEMY|SD_PREAMBLE|1, + skill_castend_nodamage_id); + } + break; + case RK_IGNITIONBREAK: + //case LG_EARTHDRIVE: + clif_skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skillid, skilllv, 6); + //if( skillid == LG_EARTHDRIVE ) + //{ + // int dummy = 1; + // i = skill_get_splash(skillid,skilllv); + // map_foreachinarea(skill_cell_overlap, src->m, src->x-i, src->y-i, src->x+i, src->y+i, BL_SKILL, LG_EARTHDRIVE, &dummy, src); + //} + map_foreachinrange(skill_area_sub, bl,skill_get_splash(skillid,skilllv),BL_CHAR, + src,skillid,skilllv,tick,flag|BCT_ENEMY|1,skill_castend_damage_id); + break; + case RK_STONEHARDSKIN: + if( sd && pc_checkskill(sd,RK_RUNEMASTERY) >= 4 ) + { + int heal = sstatus->hp / 4; // 25% HP + if( status_charge(bl,heal,0) ) + clif_skill_nodamage(src,bl,skillid,skilllv,sc_start2(bl,type,100,skilllv,heal,skill_get_time(skillid,skilllv))); + else + clif_skill_fail(sd,skillid,0,0); + } + break; + case RK_REFRESH: + if( sd && pc_checkskill(sd,RK_RUNEMASTERY) >= 8 ) + { + int heal = status_get_max_hp(bl) * 25 / 100; + clif_skill_nodamage(src,bl,skillid,skilllv, + sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); + status_heal(bl,heal,0,1); + status_change_clear_buffs(bl,2); + } + break; + + case RK_MILLENNIUMSHIELD: + if( sd && pc_checkskill(sd,RK_RUNEMASTERY) >= 9 ) + { + short shields = (rand()%100<50) ? 4 : ((rand()%100<80) ? 3 : 2); + sc_start4(bl,type,100,skilllv,shields,1000,0,skill_get_time(skillid,skilllv)); + clif_millenniumshield(sd,shields); + clif_skill_nodamage(src,bl,skillid,1,1); + } + break; + + case RK_GIANTGROWTH: + case RK_VITALITYACTIVATION: + case RK_ABUNDANCE: + if( sd ) + { + int lv = 1; // RK_GIANTGROWTH + if( skillid == RK_VITALITYACTIVATION ) + lv = 2; + else if( skillid == RK_ABUNDANCE ) + lv = 6; + if( pc_checkskill(sd,RK_RUNEMASTERY) >= lv ) + clif_skill_nodamage(src,bl,skillid,skilllv,sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); + } + break; + + case RK_FIGHTINGSPIRIT: + if( flag&1 ) { + if( src == bl ) + sc_start2(bl,type,100,skill_area_temp[5],10*(sd?pc_checkskill(sd,RK_RUNEMASTERY):10),skill_get_time(skillid,skilllv)); + else + sc_start(bl,type,100,skill_area_temp[5]/4,skill_get_time(skillid,skilllv)); + } else if( sd && pc_checkskill(sd,RK_RUNEMASTERY) >= 5 ) { + if( sd->status.party_id ) { + i = party_foreachsamemap(skill_area_sub,sd,skill_get_splash(skillid,skilllv),src,skillid,skilllv,tick,BCT_PARTY,skill_area_sub_count); + skill_area_temp[5] = 7 * i; // ATK + party_foreachsamemap(skill_area_sub,sd,skill_get_splash(skillid,skilllv),src,skillid,skilllv,tick,flag|BCT_PARTY|1,skill_castend_nodamage_id); + } else + sc_start2(bl,type,100,7,5,skill_get_time(skillid,skilllv)); + } + clif_skill_nodamage(src,bl,skillid,1,1); + break; + /** + * Guilotine Cross + **/ + case GC_ROLLINGCUTTER: + { + short count = 1; + skill_area_temp[2] = 0; + map_foreachinrange(skill_area_sub,src,skill_get_splash(skillid,skilllv),BL_CHAR,src,skillid,skilllv,tick,flag|BCT_ENEMY|SD_PREAMBLE|SD_SPLASH|1,skill_castend_damage_id); + if( tsc && tsc->data[SC_ROLLINGCUTTER] ) + { // Every time the skill is casted the status change is reseted adding a counter. + count += (short)tsc->data[SC_ROLLINGCUTTER]->val1; + if( count > 10 ) + count = 10; // Max coounter + status_change_end(bl, SC_ROLLINGCUTTER, INVALID_TIMER); + } + sc_start(bl,SC_ROLLINGCUTTER,100,count,skill_get_time(skillid,skilllv)); + clif_skill_nodamage(src,src,skillid,skilllv,1); + } + break; + + case GC_WEAPONBLOCKING: + if( tsc && tsc->data[SC_WEAPONBLOCKING] ) + status_change_end(bl, SC_WEAPONBLOCKING, INVALID_TIMER); + else + sc_start(bl,SC_WEAPONBLOCKING,100,skilllv,skill_get_time(skillid,skilllv)); + clif_skill_nodamage(src,bl,skillid,skilllv,1); + break; + + case GC_CREATENEWPOISON: + if( sd ) + { + clif_skill_produce_mix_list(sd,skillid,25); + clif_skill_nodamage(src, bl, skillid, skilllv, 1); + } + break; + + case GC_POISONINGWEAPON: + if( sd ) { + clif_poison_list(sd,skilllv); + clif_skill_nodamage(src,bl,skillid,skilllv,1); + } + break; + + case GC_ANTIDOTE: + clif_skill_nodamage(src,bl,skillid,skilllv,1); + if( tsc ) + { + status_change_end(bl, SC_PARALYSE, INVALID_TIMER); + status_change_end(bl, SC_PYREXIA, INVALID_TIMER); + status_change_end(bl, SC_DEATHHURT, INVALID_TIMER); + status_change_end(bl, SC_LEECHESEND, INVALID_TIMER); + status_change_end(bl, SC_VENOMBLEED, INVALID_TIMER); + status_change_end(bl, SC_MAGICMUSHROOM, INVALID_TIMER); + status_change_end(bl, SC_TOXIN, INVALID_TIMER); + status_change_end(bl, SC_OBLIVIONCURSE, INVALID_TIMER); + } + break; + + case GC_PHANTOMMENACE: + clif_skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skillid, skilllv, 6); + clif_skill_nodamage(src,bl,skillid,skilllv,1); + map_foreachinrange(skill_area_sub,src,skill_get_splash(skillid,skilllv),BL_CHAR, + src,skillid,skilllv,tick,flag|BCT_ENEMY|1,skill_castend_damage_id); + break; + + case GC_HALLUCINATIONWALK: + { + int heal = status_get_max_hp(bl) / 10; + if( status_get_hp(bl) < heal ) { // if you haven't enough HP skill fails. + if( sd ) clif_skill_fail(sd,skillid,0x02,0); + break; + } + if( !status_charge(bl,heal,0) ) + { + if( sd ) clif_skill_fail(sd,skillid,0x02,0); + break; + } + clif_skill_nodamage(src,bl,skillid,skilllv,sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); + } + break; + /** + * Arch Bishop + **/ + case AB_ANCILLA: + if( sd ) { + clif_skill_nodamage(src,bl,skillid,skilllv,1); + skill_produce_mix(sd, skillid, ITEMID_ANCILLA, 0, 0, 0, 1); + } + break; + + case AB_CLEMENTIA: + case AB_CANTO: + { + int bless_lv = pc_checkskill(sd,AL_BLESSING); + int agi_lv = pc_checkskill(sd,AL_INCAGI); + if( sd == NULL || sd->status.party_id == 0 || flag&1 ) + clif_skill_nodamage(bl, bl, skillid, skilllv, sc_start(bl,type,100, + (skillid == AB_CLEMENTIA)? bless_lv : (skillid == AB_CANTO)? agi_lv : skilllv, skill_get_time(skillid,skilllv))); + else if( sd ) + party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skillid, skilllv), src, skillid, skilllv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); + } + break; + + case AB_PRAEFATIO: + if( sd == NULL || sd->status.party_id == 0 || flag&1 ) + clif_skill_nodamage(bl, bl, skillid, skilllv, sc_start4(bl, type, 100, skilllv, 0, 0, 1, skill_get_time(skillid, skilllv))); + else if( sd ) + party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skillid, skilllv), src, skillid, skilllv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); + break; + + case AB_CHEAL: + if( sd == NULL || sd->status.party_id == 0 || flag&1 ) + { + if( sd && tstatus && !battle_check_undead(tstatus->race, tstatus->def_ele) ) + { + i = skill_calc_heal(src, bl, AL_HEAL, pc_checkskill(sd, AL_HEAL), true); + status_heal(bl, i, 0, 1); + clif_skill_nodamage(bl, bl, skillid, i, 1); + } + } + else if( sd ) + party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skillid, skilllv), src, skillid, skilllv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); + break; + + case AB_ORATIO: + if( flag&1 ) + sc_start(bl, type, 40 + 5 * skilllv, skilllv, skill_get_time(skillid, skilllv)); + else + { + map_foreachinrange(skill_area_sub, src, skill_get_splash(skillid, skilllv), BL_CHAR, + src, skillid, skilllv, tick, flag|BCT_ENEMY|1, skill_castend_nodamage_id); + clif_skill_nodamage(src, bl, skillid, skilllv, 1); + } + break; + + case AB_LAUDAAGNUS: + if( flag&1 || sd == NULL ) + { + if( (tsc && (tsc->data[SC_FREEZE] || tsc->data[SC_STONE] || + tsc->data[SC_BLIND]))&& (rand()%100 < 30+5*skilllv) ) + { + status_change_end(bl, SC_FREEZE, -1); + status_change_end(bl, SC_STONE, -1); + status_change_end(bl, SC_BLIND, -1); + } + // Success rate only applies to the curing effect and not stat bonus. + clif_skill_nodamage(bl, bl, skillid, skilllv, + sc_start(bl, type, 100, skilllv, skill_get_time(skillid, skilllv))); + } + else if( sd ) + party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skillid, skilllv), + src, skillid, skilllv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); + break; + + case AB_LAUDARAMUS: + if( flag&1 || sd == NULL ) + { + if( (tsc && (tsc->data[SC_SLEEP] || tsc->data[SC_STUN] || + tsc->data[SC_SILENCE]))&& (rand()%100 < 30+5*skilllv) ) + { + status_change_end(bl, SC_SLEEP, -1); + status_change_end(bl, SC_STUN, -1); + status_change_end(bl, SC_SILENCE, -1); + } + clif_skill_nodamage(bl, bl, skillid, skilllv, + sc_start(bl, type, 100, skilllv, skill_get_time(skillid, skilllv))); + //Success rate only applies to the curing effect and not stat bonus. + } + else if( sd ) + party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skillid, skilllv), + src, skillid, skilllv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); + break; + + case AB_CLEARANCE: + if( flag&1 || (i = skill_get_splash(skillid, skilllv)) < 1 ) + { //As of the behavior in official server Clearance is just a super version of Dispell skill. [Jobbie] + clif_skill_nodamage(src,bl,skillid,skilllv,1); + if((dstsd && (dstsd->class_&MAPID_UPPERMASK) == MAPID_SOUL_LINKER) || rand()%100 >= 30 + 10 * skilllv) + { + if (sd) + clif_skill_fail(sd,skillid,0,0); + break; + } + if(status_isimmune(bl) || !tsc || !tsc->count) + break; + for(i=0;i<SC_MAX;i++) + { + if (!tsc->data[i]) + continue; + switch (i) { + case SC_WEIGHT50: case SC_WEIGHT90: case SC_HALLUCINATION: + case SC_STRIPWEAPON: case SC_STRIPSHIELD: case SC_STRIPARMOR: + case SC_STRIPHELM: case SC_CP_WEAPON: case SC_CP_SHIELD: + case SC_CP_ARMOR: case SC_CP_HELM: case SC_COMBO: + case SC_STRFOOD: case SC_AGIFOOD: case SC_VITFOOD: + case SC_INTFOOD: case SC_DEXFOOD: case SC_LUKFOOD: + case SC_HITFOOD: case SC_FLEEFOOD: case SC_BATKFOOD: + case SC_WATKFOOD: case SC_MATKFOOD: case SC_DANCING: + case SC_GUILDAURA: case SC_SPIRIT: case SC_AUTOBERSERK: + case SC_CARTBOOST: case SC_MELTDOWN: case SC_SAFETYWALL: + case SC_SMA: case SC_SPEEDUP0: case SC_NOCHAT: + case SC_ANKLE: case SC_SPIDERWEB: case SC_JAILED: + case SC_ITEMBOOST: case SC_EXPBOOST: case SC_LIFEINSURANCE: + case SC_BOSSMAPINFO: case SC_PNEUMA: case SC_AUTOSPELL: + case SC_INCHITRATE: case SC_INCATKRATE: case SC_NEN: + case SC_READYSTORM: case SC_READYDOWN: case SC_READYTURN: + case SC_READYCOUNTER:case SC_DODGE: case SC_WARM: + case SC_SPEEDUP1: case SC_AUTOTRADE: case SC_CRITICALWOUND: + case SC_JEXPBOOST: case SC_INVINCIBLE: case SC_INVINCIBLEOFF: + case SC_HELLPOWER: case SC_MANU_ATK: case SC_MANU_DEF: + case SC_SPL_ATK: case SC_SPL_DEF: case SC_MANU_MATK: + case SC_SPL_MATK: case SC_RICHMANKIM: case SC_ETERNALCHAOS: + case SC_DRUMBATTLE: case SC_NIBELUNGEN: case SC_ROKISWEIL: + case SC_INTOABYSS: case SC_SIEGFRIED: case SC_WHISTLE: + case SC_ASSNCROS: case SC_POEMBRAGI: case SC_APPLEIDUN: + case SC_HUMMING: case SC_DONTFORGETME: case SC_FORTUNE: + case SC_SERVICE4U: case SC_FOOD_STR_CASH: case SC_FOOD_AGI_CASH: + case SC_FOOD_VIT_CASH: case SC_FOOD_DEX_CASH: case SC_FOOD_INT_CASH: + case SC_FOOD_LUK_CASH: /* case SC_ELECTRICSHOCKER: case SC_BITE: + case SC__STRIPACCESSORY: case SC__ENERVATION: case SC__GROOMY: + case SC__IGNORANCE: case SC__LAZINESS: case SC__UNLUCKY: + case SC__WEAKNESS: case SC_SAVAGE_STEAK: case SC_COCKTAIL_WARG_BLOOD: + case SC_MAGNETICFIELD:case SC_MINOR_BBQ: case SC_SIROMA_ICE_TEA: + case SC_DROCERA_HERB_STEAMED: case SC_PUTTI_TAILS_NOODLES: + case SC_NEUTRALBARRIER_MASTER: case SC_NEUTRALBARRIER: + case SC_STEALTHFIELD_MASTER: case SC_STEALTHFIELD: */ + continue; + case SC_ASSUMPTIO: + if( bl->type == BL_MOB ) + continue; + break; + } + if(i==SC_BERSERK /*|| i==SC_SATURDAYNIGHTFEVER*/) tsc->data[i]->val2=0; //Mark a dispelled berserk to avoid setting hp to 100 by setting hp penalty to 0. + status_change_end(bl,(sc_type)i,-1); + } + break; + } + map_foreachinrange(skill_area_sub, bl, i, BL_CHAR, src, skillid, skilllv, tick, flag|1, skill_castend_damage_id); + break; + + case AB_SILENTIUM: + // Should the level of Lex Divina be equivalent to the level of Silentium or should the highest level learned be used? [LimitLine] + map_foreachinrange(skill_area_sub, src, skill_get_splash(skillid, skilllv), BL_CHAR, + src, PR_LEXDIVINA, skilllv, tick, flag|BCT_ENEMY|1, skill_castend_nodamage_id); + clif_skill_nodamage(src, bl, skillid, skilllv, 1); + break; + /** + * Warlock + **/ + case WL_STASIS: + if( flag&1 ) + sc_start2(bl,type,100,skilllv,src->id,skill_get_time(skillid,skilllv)); + else + { + map_foreachinrange(skill_area_sub,src,skill_get_splash(skillid, skilllv),BL_CHAR,src,skillid,skilllv,tick,(map_flag_vs(src->m)?BCT_ALL:BCT_ENEMY|BCT_SELF)|flag|1,skill_castend_nodamage_id); + clif_skill_nodamage(src, bl, skillid, skilllv, 1); + } + break; + + case WL_WHITEIMPRISON: + if( !(tsc && tsc->data[type]) && (src == bl || battle_check_target(src, bl, BCT_ENEMY)) ) + { + int rate = 50 + 3 * skilllv + ( sd? sd->status.job_level : 50 ) / 4; + i = sc_start2(bl,type,rate,skilllv,src->id,(src == bl)?skill_get_time2(skillid,skilllv):skill_get_time(skillid, skilllv)); + clif_skill_nodamage(src,bl,skillid,skilllv,i); + if( sd && i ) + skill_blockpc_start(sd,skillid,4000); // Reuse Delay only activated on success + } + else if( sd ) + clif_skill_fail(sd,skillid,0,0); + break; + + case WL_FROSTMISTY: + clif_skill_nodamage(src,bl,skillid,skilllv,1); + map_foreachinrange(skill_area_sub,bl,skill_get_splash(skillid,skilllv),BL_CHAR|BL_SKILL,src,skillid,skilllv,tick,flag|BCT_ENEMY,skill_castend_damage_id); + break; + + case WL_JACKFROST: + clif_skill_nodamage(src,bl,skillid,skilllv,1); + map_foreachinshootrange(skill_area_sub,bl,skill_get_splash(skillid,skilllv),BL_CHAR|BL_SKILL,src,skillid,skilllv,tick,flag|BCT_ENEMY|1,skill_castend_damage_id); + break; + + case WL_MARSHOFABYSS: + // Should marsh of abyss still apply half reduction to players after the 28/10 patch? [LimitLine] + clif_skill_nodamage(src, bl, skillid, skilllv, + sc_start4(bl, type, 100, skilllv, status_get_int(src), sd ? sd->status.job_level : 50, 0, + skill_get_time(skillid, skilllv))); + break; + + case WL_SIENNAEXECRATE: + if( status_isimmune(bl) || !tsc ) + break; + + if( flag&1 ) + { + if( bl->id == skill_area_temp[1] ) + break; // Already work on this target + + if( tsc && tsc->data[SC_STONE] ) + status_change_end(bl,SC_STONE,-1); + else + status_change_start(bl,SC_STONE,10000,skilllv,0,0,1000,(8+2*skilllv)*1000,2); + } + else + { + int rate = 40 + 8 * skilllv + ( sd? sd->status.job_level : 50 ) / 4; + // IroWiki says Rate should be reduced by target stats, but currently unknown + if( rand()%100 < rate ) + { // Success on First Target + rate = 0; + if( !tsc->data[SC_STONE] ) + rate = status_change_start(bl,SC_STONE,10000,skilllv,0,0,1000,(8+2*skilllv)*1000,2); + else + { + rate = 1; + status_change_end(bl,SC_STONE,-1); + } + + if( rate ) + { + skill_area_temp[1] = bl->id; + map_foreachinrange(skill_area_sub,bl,skill_get_splash(skillid,skilllv),BL_CHAR,src,skillid,skilllv,tick,flag|BCT_ENEMY|1,skill_castend_nodamage_id); + } + // Doesn't send failure packet if it fails on defense. + } + else if( sd ) // Failure on Rate + clif_skill_fail(sd,skillid,0,0); + } + break; + + case WL_SUMMONFB: + case WL_SUMMONBL: + case WL_SUMMONWB: + case WL_SUMMONSTONE: + { + short element = 0, sctype = 0, pos = -1; + struct status_change *sc = status_get_sc(src); + if( !sc ) break; + + for( i = SC_SPHERE_1; i <= SC_SPHERE_5; i++ ) + { + if( !sctype && !sc->data[i] ) + sctype = i; // Take the free SC + if( sc->data[i] ) + pos = max(sc->data[i]->val2,pos); + } + + if( !sctype ) + { + if( sd ) // No free slots to put SC + clif_skill_fail(sd,skillid,0x13,0); + break; + } + + pos++; // Used in val2 for SC. Indicates the order of this ball + switch( skillid ) + { // Set val1. The SC element for this ball + case WL_SUMMONFB: element = WLS_FIRE; break; + case WL_SUMMONBL: element = WLS_WIND; break; + case WL_SUMMONWB: element = WLS_WATER; break; + case WL_SUMMONSTONE: element = WLS_STONE; break; + } + + sc_start4(src,sctype,100,element,pos,skilllv,0,skill_get_time(skillid,skilllv)); + clif_skill_nodamage(src,bl,skillid,0,0); + } + break; + + case WL_READING_SB: + if( sd ) + { + int i, preserved = 0, max_preserve = 4 * pc_checkskill(sd,WL_FREEZE_SP) + sstatus->int_ / 10 + sd->status.base_level / 10; + ARR_FIND(0, MAX_SPELLBOOK, i, sd->rsb[i].skillid == 0); // Search for a Free Slot + if( i == MAX_SPELLBOOK ) + { + clif_skill_fail(sd,skillid,0x04,0); + break; + } + for( i = 0; i < MAX_SPELLBOOK && sd->rsb[i].skillid; i++ ) + preserved += sd->rsb[i].points; + + if( preserved >= max_preserve ) + { + clif_skill_fail(sd,skillid,0x04,0); + break; + } + + sc_start(bl,SC_STOP,100,skilllv,-1); //Can't move while selecting a spellbook. + clif_spellbook_list(sd); + clif_skill_nodamage(src,bl,skillid,skilllv,1); + } + break; + /** + * Ranger + **/ + case RA_FEARBREEZE: + clif_skill_damage(src, src, tick, status_get_amotion(src), 0, -30000, 1, skillid, skilllv, 6); + clif_skill_nodamage(src, bl, skillid, skilllv, sc_start(bl, type, 100, skilllv, skill_get_time(skillid, skilllv))); + break; + + case RA_WUGMASTERY: + if( sd ) + { + if( pc_isridingwug(sd) ) + clif_skill_fail(sd,skillid,0,0); + else if( !pc_iswug(sd) ) + pc_setoption(sd,sd->sc.option|OPTION_WUG); + else + pc_setoption(sd,sd->sc.option&~OPTION_WUG); + clif_skill_nodamage(src,bl,skillid,skilllv,1); + } + break; + + case RA_WUGRIDER: + if( sd ) { + if( !pc_isridingwug(sd) && pc_iswug(sd) ) { + pc_setoption(sd,sd->sc.option&~OPTION_WUG); + pc_setoption(sd,sd->sc.option|OPTION_WUGRIDER); + } else if( pc_isridingwug(sd) ) { + pc_setoption(sd,sd->sc.option&~OPTION_WUGRIDER); + pc_setoption(sd,sd->sc.option|OPTION_WUG); + } else if( sd ) { + clif_skill_fail(sd,skillid,0,0); + } + clif_skill_nodamage(src,bl,skillid,skilllv,1); + } + break; + + case RA_WUGDASH: + if( tsce ) { + clif_skill_nodamage(src,bl,skillid,skilllv,status_change_end(bl, type, -1)); + map_freeblock_unlock(); + return 0; + } + if( sd && pc_isridingwug(sd) ) { + clif_skill_nodamage(src,bl,skillid,skilllv,sc_start4(bl,type,100,skilllv,unit_getdir(bl),0,0,1)); + clif_walkok(sd); + } + break; + + case RA_SENSITIVEKEEN: + clif_skill_nodamage(src,bl,skillid,skilllv,1); + clif_skill_damage(src,src,tick, status_get_amotion(src), 0, -30000, 1, skillid, skilllv, 6); + map_foreachinrange(skill_area_sub,src,skill_get_splash(skillid,skilllv),BL_CHAR|BL_SKILL,src,skillid,skilllv,tick,flag|BCT_ENEMY,skill_castend_damage_id); + break; + /** + * Mechanic + **/ + case NC_F_SIDESLIDE: + case NC_B_SIDESLIDE: + { + int dir = (skillid == NC_F_SIDESLIDE) ? (unit_getdir(src)+4)%8 : unit_getdir(src); + skill_blown(src,bl,skill_get_blewcount(skillid,skilllv),dir,0x1); + clif_slide(src,src->x,src->y); + clif_fixpos(src); //Aegis sent this packet + clif_skill_nodamage(src,bl,skillid,skilllv,1); + } + break; + + case NC_SELFDESTRUCTION: + if( sd ) { + if( sd->sc.option&OPTION_MADOGEAR ) + pc_setoption(sd, sd->sc.option&~OPTION_MADOGEAR); + clif_skill_nodamage(src, bl, skillid, skilllv, 1); + skill_castend_damage_id(src, src, skillid, skilllv, tick, flag); + } + break; + + case NC_ANALYZE: + clif_skill_damage(src, bl, tick, status_get_amotion(src), 0, -30000, 1, skillid, skilllv, 6); + clif_skill_nodamage(src, bl, skillid, skilllv, + sc_start(bl,type, 30 + 12 * skilllv,skilllv,skill_get_time(skillid,skilllv))); + if( sd ) pc_overheat(sd,1); + break; + + case NC_MAGNETICFIELD: + if( (i = sc_start2(bl,type,100,skilllv,src->id,skill_get_time(skillid,skilllv))) ) + { + map_foreachinrange(skill_area_sub,src,skill_get_splash(skillid,skilllv),splash_target(src),src,skillid,skilllv,tick,flag|BCT_ENEMY|SD_SPLASH|1,skill_castend_damage_id);; + clif_skill_damage(src,src,tick,status_get_amotion(src),0,-30000,1,skillid,skilllv,6); + pc_overheat(sd,1); + } + clif_skill_nodamage(src,src,skillid,skilllv,i); + break; + + case NC_REPAIR: + if( sd ) + { + int heal; + if( dstsd && (dstsd->sc.option&OPTION_MADOGEAR) ) + { + heal = dstsd->status.max_hp * (3+3*skilllv) / 100; + status_heal(bl,heal,0,2); + } else { + heal = sd->status.max_hp * (3+3*skilllv) / 100; + status_heal(src,heal,0,2); + } + + clif_skill_damage(src, src, tick, status_get_amotion(src), 0, -30000, 1, skillid, skilllv, 6); + clif_skill_nodamage(src, bl, skillid, skilllv, heal); + } + break; + + case NC_DISJOINT: + { + if( bl->type != BL_MOB ) break; + md = map_id2md(bl->id); + if( md && md->class_ >= 2042 && md->class_ <= 2046 ) + status_kill(bl); + clif_skill_nodamage(src, bl, skillid, skilllv, 1); + } + break; + default: ShowWarning("skill_castend_nodamage_id: Unknown skill used:%d\n",skillid); clif_skill_nodamage(src,bl,skillid,skilllv,1); @@ -5858,13 +7279,15 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr_t data) if (ud->state.running && ud->skillid == TK_JUMPKICK) flag = 1; - if (ud->walktimer != INVALID_TIMER && ud->skillid != TK_RUN) + if (ud->walktimer != INVALID_TIMER && ud->skillid != TK_RUN && ud->skillid != RA_WUGDASH) unit_stop_walking(src,1); if( !sd || sd->skillitem != ud->skillid || skill_get_delay(ud->skillid,ud->skilllv) ) ud->canact_tick = tick + skill_delayfix(src, ud->skillid, ud->skilllv); //Tests show wings don't overwrite the delay but skill scrolls do. [Inkfish] + if( sd && skill_get_cooldown(ud->skillid,ud->skilllv) > 0 ) + skill_blockpc_start(sd, ud->skillid, skill_get_cooldown(ud->skillid, ud->skilllv)); if( battle_config.display_status_timers && sd ) - clif_status_change(src, SI_ACTIONDELAY, 1, skill_delayfix(src, ud->skillid, ud->skilllv)); + clif_status_change(src, SI_ACTIONDELAY, 1, skill_delayfix(src, ud->skillid, ud->skilllv), 0, 0, 0); if( sd ) { switch( ud->skillid ) @@ -5900,7 +7323,7 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr_t data) sc = status_get_sc(src); if(sc && sc->count) { if(sc->data[SC_MAGICPOWER] && - ud->skillid != HW_MAGICPOWER && ud->skillid != WZ_WATERBALL) + ud->skillid != HW_MAGICPOWER && ud->skillid != WZ_WATERBALL && ud->skillid != WL_TETRAVORTEX) status_change_end(src, SC_MAGICPOWER, INVALID_TIMER); if(sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_WIZARD && @@ -6077,7 +7500,7 @@ int skill_castend_pos(int tid, unsigned int tick, int id, intptr_t data) if( !sd || sd->skillitem != ud->skillid || skill_get_delay(ud->skillid,ud->skilllv) ) ud->canact_tick = tick + skill_delayfix(src, ud->skillid, ud->skilllv); if( battle_config.display_status_timers && sd ) - clif_status_change(src, SI_ACTIONDELAY, 1, skill_delayfix(src, ud->skillid, ud->skilllv)); + clif_status_change(src, SI_ACTIONDELAY, 1, skill_delayfix(src, ud->skillid, ud->skilllv), 0, 0, 0); // if( sd ) // { // switch( ud->skillid ) @@ -6209,6 +7632,9 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk case MG_SAFETYWALL: case MG_FIREWALL: case MG_THUNDERSTORM: +#if FIREIVY_ON + case WZ_FIREIVY: +#endif case AL_PNEUMA: case WZ_ICEWALL: case WZ_FIREPILLAR: @@ -6271,6 +7697,17 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk case NJ_RAIGEKISAI: case NJ_KAMAITACHI: case NPC_EVILLAND: + /** + * Ranger + **/ + case RA_ELECTRICSHOCKER: + case RA_CLUSTERBOMB: + case RA_MAGENTATRAP: + case RA_COBALTTRAP: + case RA_MAIZETRAP: + case RA_VERDURETRAP: + case RA_FIRINGTRAP: + case RA_ICEBOUNDTRAP: flag|=1;//Set flag to 1 to prevent deleting ammo (it will be deleted on group-delete). case GS_GROUNDDRIFT: //Ammo should be deleted right away. skill_unitsetting(src,skillid,skilllv,x,y,0); @@ -6518,6 +7955,118 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk } } break; + /** + * Mechanic + **/ + case NC_COLDSLOWER: + case NC_ARMSCANNON: + /** + * Rune Knight + **/ + case RK_DRAGONBREATH: + case RK_WINDCUTTER: + i = skill_get_splash(skillid,skilllv); + map_foreachinarea(skill_area_sub,src->m,x-i,y-i,x+i,y+i,BL_CHAR, + src,skillid,skilllv,tick,flag|BCT_ENEMY|1,skill_castend_damage_id); + break; + /** + * Guilotine Cross + **/ + case GC_POISONSMOKE: + if( !(sc && sc->data[SC_POISONINGWEAPON]) ) { + if( sd ) + clif_skill_fail(sd,skillid,0x20,0); + return 0; + } + clif_skill_damage(src,src,tick,status_get_amotion(src),0,-30000,1,skillid,skilllv,6); + skill_unitsetting(src, skillid, skilllv, x, y, flag); + status_change_end(src,SC_POISONINGWEAPON,-1); + break; + /** + * Arch Bishop + **/ + case AB_EPICLESIS: + if( (sg = skill_unitsetting(src, skillid, skilllv, x, y, 0)) ) { + i = sg->unit->range; + map_foreachinarea(skill_area_sub, src->m, x - i, y - i, x + i, y + i, BL_CHAR, src, ALL_RESURRECTION, 1, tick, flag|BCT_NOENEMY|1,skill_castend_nodamage_id); + } + break; + /** + * Warlock + **/ + case WL_COMET: + if( sc ) { + sc->comet_x = x; + sc->comet_y = y; + } + i = skill_get_splash(skillid,skilllv); + map_foreachinarea(skill_area_sub,src->m,x-i,y-i,x+i,y+i,BL_CHAR,src,skillid,skilllv,tick,flag|BCT_ENEMY|1,skill_castend_damage_id); + break; + + case WL_EARTHSTRAIN: + { + int i, wave = skilllv + 4, dir = map_calc_dir(src,x,y); + int sx = x, sy = y; + + if( sc && sc->data[SC_MAGICPOWER] ) + flag = flag|2; //Store the magic power flag + + for( i = 0; i < wave; i++ ) + { + switch( dir ) + { + case 0: case 1: case 7: sy = src->y + i; break; + case 3: case 4: case 5: sy = src->y - i; break; + case 2: sx = src->x - i; break; + case 6: sx = src->x + i; break; + } + skill_addtimerskill(src,gettick() + (200 * i),0,sx,sy,skillid,skilllv,dir,flag&2); // Temp code until animation is replaced. [Rytech] + //skill_addtimerskill(src,gettick() + (150 * i),0,sx,sy,skillid,skilllv,dir,flag&2); // Official steping timer, but disabled due to too much noise. + } + } + break; + /** + * Ranger + **/ + case RA_DETONATOR: + i = skill_get_splash(skillid, skilllv); + map_foreachinarea(skill_detonator, src->m, x-i, y-i, x+i, y+i, BL_SKILL, src); + clif_skill_damage(src, src, tick, status_get_amotion(src), 0, -30000, 1, skillid, skilllv, 6); + break; + /** + * Mechanic + **/ + case NC_NEUTRALBARRIER: + case NC_STEALTHFIELD: + skill_clear_unitgroup(src); // To remove previous skills - cannot used combined + if( (sg = skill_unitsetting(src,skillid,skilllv,src->x,src->y,0)) != NULL ) + { + sc_start2(src,skillid == NC_NEUTRALBARRIER ? SC_NEUTRALBARRIER_MASTER : SC_STEALTHFIELD_MASTER,100,skilllv,sg->group_id,skill_get_time(skillid,skilllv)); + if( sd ) pc_overheat(sd,1); + } + break; + + case NC_SILVERSNIPER: + { + int class_ = 2042; + struct mob_data *md; + + md = mob_once_spawn_sub(src, src->m, x, y, status_get_name(src), class_, ""); + if( md ) + { + md->master_id = src->id; + md->special_state.ai = 3; + if( md->deletetimer != INVALID_TIMER ) + delete_timer(md->deletetimer, mob_timer_delete); + md->deletetimer = add_timer (gettick() + skill_get_time(skillid, skilllv), mob_timer_delete, md->bl.id, 0); + mob_spawn( md ); + } + } + break; + + case NC_MAGICDECOY: + if( sd ) clif_magicdecoy_list(sd,skilllv,x,y); + break; default: ShowWarning("skill_castend_pos2: Unknown skill used:%d\n",skillid); @@ -6566,7 +8115,12 @@ int skill_castend_map (struct map_session_data *sd, short skill_num, const char sd->sc.data[SC_DANCING] || sd->sc.data[SC_BERSERK] || sd->sc.data[SC_BASILICA] || - sd->sc.data[SC_MARIONETTE] + sd->sc.data[SC_MARIONETTE] || + /** + * Warlock + **/ + sd->sc.data[SC_WHITEIMPRISON] || + (sd->sc.data[SC_STASIS] && skill_stasis_check(&sd->bl, sd->sc.data[SC_STASIS]->val2, skill_num)) )) { skill_failed(sd); return 0; @@ -6855,6 +8409,17 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, short skilli case HT_FREEZINGTRAP: case MA_FREEZINGTRAP: case HT_BLASTMINE: + /** + * Ranger + **/ + case RA_ELECTRICSHOCKER: + case RA_CLUSTERBOMB: + case RA_MAGENTATRAP: + case RA_COBALTTRAP: + case RA_MAIZETRAP: + case RA_VERDURETRAP: + case RA_FIRINGTRAP: + case RA_ICEBOUNDTRAP: if( map_flag_gvg(src->m) || map[src->m].flag.battleground ) limit *= 4; // longer trap times in WOE [celest] if( battle_config.vs_traps_bctall && map_flag_vs(src->m) && (src->type&battle_config.vs_traps_bctall) ) @@ -7004,6 +8569,17 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, short skilli break; } + /** + * Guilotine Cross + **/ + case GC_POISONSMOKE: + if( !(sc && sc->data[SC_POISONINGWEAPON]) ) + return NULL; + val1 = sc->data[SC_POISONINGWEAPON]->val1; // Level of Poison, to determine poisoning time + val2 = sc->data[SC_POISONINGWEAPON]->val2; // Type of Poison + limit = 4000 + 2000 * skilllv; + break; + } nullpo_retr(NULL, group=skill_initunitgroup(src,layout->count,skillid,skilllv,skill_get_unit_id(skillid,flag&1)+subunt, limit, interval)); @@ -7078,6 +8654,17 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, short skilli case HT_TALKIEBOX: case HT_SKIDTRAP: case MA_SKIDTRAP: + /** + * Ranger + **/ + case RA_ELECTRICSHOCKER: + case RA_CLUSTERBOMB: + case RA_MAGENTATRAP: + case RA_COBALTTRAP: + case RA_MAIZETRAP: + case RA_VERDURETRAP: + case RA_FIRINGTRAP: + case RA_ICEBOUNDTRAP: val1 = 3500; break; case GS_DESPERADO: @@ -7157,8 +8744,8 @@ static int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, un sc = status_get_sc(bl); - if (sc && sc->option&OPTION_HIDE && sg->skill_id != WZ_HEAVENDRIVE) - return 0; //Hidden characters are immune to AoE skills except Heaven's Drive. [Skotlex] + if (sc && sc->option&OPTION_HIDE && sg->skill_id != WZ_HEAVENDRIVE && sg->skill_id != WL_EARTHSTRAIN ) + return 0; //Hidden characters are immune to AoE skills except to these. [Skotlex] type = status_skill2sc(sg->skill_id); sce = (sc && type != -1)?sc->data[type]:NULL; @@ -7541,6 +9128,16 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns case UNT_FLASHER: case UNT_FREEZINGTRAP: case UNT_FIREPILLAR_ACTIVE: + /** + * Ranger + **/ + case UNT_CLUSTERBOMB: + case UNT_MAGENTATRAP: + case UNT_COBALTTRAP: + case UNT_MAIZETRAP: + case UNT_VERDURETRAP: + case UNT_FIRINGTRAP: + case UNT_ICEBOUNDTRAP: map_foreachinrange(skill_trap_splash,&src->bl, skill_get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag, &src->bl,tick); if (sg->unit_id != UNT_FIREPILLAR_ACTIVE) clif_changetraplook(&src->bl, sg->unit_id==UNT_LANDMINE?UNT_FIREPILLAR_ACTIVE:UNT_USED_TRAPS); @@ -7707,6 +9304,10 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns break; case UNT_GRAVITATION: + case UNT_EARTHSTRAIN: + case UNT_FIREWALK: + case UNT_ELECTRICWALK: + case UNT_PSYCHIC_WAVE: skill_attack(skill_get_type(sg->skill_id),ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0); break; @@ -7722,6 +9323,71 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns //clif_changetraplook(&src->bl, UNT_FIREPILLAR_ACTIVE); sg->limit=DIFF_TICK(tick,sg->tick)+1500; break; + /** + * 3rd stuff + **/ + case UNT_POISONSMOKE: + if( battle_check_target(ss,bl,BCT_ENEMY) > 0 && !(tsc && tsc->data[sg->val2]) && rand()%100 < 20 ) + sc_start(bl,sg->val2,100,sg->val1,skill_get_time2(GC_POISONINGWEAPON,sg->val1)); + break; + + case UNT_EPICLESIS: + if( bl->type == BL_PC && !battle_check_undead(tstatus->race, tstatus->def_ele) && tstatus->race != RC_DEMON ) + { + int hp, sp; + switch( sg->skill_lv ) + { + case 1: case 2: hp = 3; sp = 2; break; + case 3: case 4: hp = 4; sp = 3; break; + case 5: default: hp = 5; sp = 4; break; + } + hp = tstatus->max_hp * hp / 100; + sp = tstatus->max_sp * sp / 100; + status_heal(bl, hp, sp, 0); + if( tstatus->hp < tstatus->max_hp ) + clif_skill_nodamage(&src->bl, bl, AL_HEAL, hp, 1); + if( tstatus->sp < tstatus->max_sp ) + clif_skill_nodamage(&src->bl, bl, MG_SRECOVERY, sp, 1); + sc_start(bl, type, 100, sg->skill_lv, sg->interval + 100); + sg->val2++; + // Reveal hidden players every 5 seconds. + if( sg->val2 >= 5 ) + { + sg->val2 = 0; + // TODO: check if other hidden status can be removed. + status_change_end(bl,SC_HIDING,-1); + status_change_end(bl,SC_CLOAKING,-1); + } + } + /* Enable this if kRO fix the current skill. Currently no damage on undead and demon monster. [Jobbie] + else if( battle_check_target(ss, bl, BCT_ENEMY) > 0 && battle_check_undead(tstatus->race, tstatus->def_ele) ) + skill_castend_damage_id(&src->bl, bl, sg->skill_id, sg->skill_lv, 0, 0);*/ + break; + + case UNT_STEALTHFIELD: + if( bl->id == sg->src_id ) + break; // Dont work on Self (video shows that) + case UNT_NEUTRALBARRIER: + sc_start(bl,type,100,sg->skill_lv,sg->interval + 100); + break; + + case UNT_DIMENSIONDOOR: + if( tsd && !map[bl->m].flag.noteleport ) + pc_randomwarp(tsd,3); + else if( bl->type == BL_MOB && battle_config.mob_warp&8 ) + unit_warp(bl,-1,-1,-1,3); + break; + + case UNT_REVERBERATION: + clif_changetraplook(&src->bl,UNT_USED_TRAPS); + map_foreachinrange(skill_trap_splash,&src->bl, skill_get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag, &src->bl,tick); + sg->limit = DIFF_TICK(tick,sg->tick) + 1500; + break; + + case UNT_SEVERE_RAINSTORM: + if( battle_check_target(&src->bl, bl, BCT_ENEMY) ) + skill_attack(BF_WEAPON,ss,&src->bl,bl,WM_SEVERE_RAINSTORM_MELEE,sg->skill_lv,tick,0); + break; } if (sg->state.magic_power && sc && !sc->data[SC_MAGICPOWER]) @@ -7759,6 +9425,7 @@ int skill_unit_onout (struct skill_unit *src, struct block_list *bl, unsigned in switch(sg->unit_id){ case UNT_SAFETYWALL: case UNT_PNEUMA: + case UNT_EPICLESIS://Arch Bishop if (sce) status_change_end(bl, type, INVALID_TIMER); break; @@ -7767,7 +9434,6 @@ int skill_unit_onout (struct skill_unit *src, struct block_list *bl, unsigned in if( sce && sce->val4 == src->bl.id ) status_change_end(bl, type, INVALID_TIMER); break; - case UNT_HERMODE: //Clear Hermode if the owner moved. if (sce && sce->val3 == BCT_SELF && sce->val4 == sg->group_id) status_change_end(bl, type, INVALID_TIMER); @@ -8003,6 +9669,19 @@ static int skill_check_condition_char_sub (struct block_list *bl, va_list ap) p_sd[(*c)++]=tsd->bl.id; return 1; } + case AB_ADORAMUS: + { // Adoramus does not consume Blue Gemstone when there is at least 1 Priest class next to the caster + if( (tsd->class_&MAPID_UPPERMASK) == MAPID_PRIEST ) + p_sd[(*c)++] = tsd->bl.id; + return 1; + } + case WL_COMET: + { // Comet does not consume Red Gemstones when there is at least 1 Warlock class next to the caster + if( tsd->status.class_ == 4055 || tsd->status.class_ == 4061 ) + p_sd[(*c)++] = tsd->bl.id; + return 1; + } + default: //Warning: Assuming Ensemble Dance/Songs for code speed. [Skotlex] { int skilllv; @@ -8052,6 +9731,13 @@ int skill_check_pc_partner (struct map_session_data *sd, short skill_id, short* status_charge(&tsd->bl, 0, 10); } return c; + case AB_ADORAMUS: + if( c > 0 && (tsd = map_id2sd(p_sd[0])) != NULL ) + { + i = 2 * (*skill_lv); + status_charge(&tsd->bl, 0, i); + } + break; default: //Warning: Assuming Ensemble skills here (for speed) if (c > 0 && sd->sc.data[SC_DANCING] && (tsd = map_id2sd(p_sd[0])) != NULL) { @@ -8484,6 +10170,97 @@ int skill_check_condition_castbegin(struct map_session_data* sd, short skill, sh return 0; } break; + /** + * Arch Bishop + **/ + case AB_ANCILLA: + { + int count = 0; + for( i = 0; i < MAX_INVENTORY; i ++ ) + if( sd->status.inventory[i].nameid == ITEMID_ANCILLA ) + count += sd->status.inventory[i].amount; + if( count >= 3 ) { + clif_skill_fail(sd, skill, 0x0c, 0); + return 0; + } + } + break; + /** + * Keeping as a note: + * Bug Report #17 provides a link to a sep-2011 changelog that shows this requirement was removed + **/ + //case AB_LAUDAAGNUS: + //case AB_LAUDARAMUS: + // if( !sd->status.party_id ) { + // clif_skill_fail(sd,skill,0,0); + // return 0; + // } + // break; + + case AB_ADORAMUS: + /** + * Warlock + **/ + case WL_COMET: + if( skill_check_pc_partner(sd,skill,&lv,1,0) <= 0 && ((i = pc_search_inventory(sd,require.itemid[0])) < 0 || sd->status.inventory[i].amount < require.amount[0]) ) + { + //clif_skill_fail(sd,skill,0x47,require.amount[0],require.itemid[0]); + clif_skill_fail(sd,skill,0,0); + return 0; + } + break; + case WL_SUMMONFB: + case WL_SUMMONBL: + case WL_SUMMONWB: + case WL_SUMMONSTONE: + if( sc ) + { + ARR_FIND(SC_SPHERE_1,SC_SPHERE_5+1,i,!sc->data[i]); + if( i == SC_SPHERE_5+1 ) + { // No more free slots + clif_skill_fail(sd,skill,0x13,0); + return 0; + } + } + break; + /** + * Guilotine Cross + **/ + case GC_HALLUCINATIONWALK: + if( sc && (sc->data[SC_HALLUCINATIONWALK] || sc->data[SC_HALLUCINATIONWALK_POSTDELAY]) ) { + clif_skill_fail(sd,skill,0x0,0); + return 0; + } + break; + case GC_COUNTERSLASH: + case GC_WEAPONCRUSH: + if( !(sc && sc->data[SC_COMBO] && sc->data[SC_COMBO]->val1 == GC_WEAPONBLOCKING) ) { + clif_skill_fail(sd, skill, 0x1f, 0); + return 0; + } + break; + case GC_CROSSRIPPERSLASHER: + if( !(sc && sc->data[SC_ROLLINGCUTTER]) ) { + clif_skill_fail(sd, skill, 0x17, 0); + return 0; + } + break; + case GC_POISONSMOKE: + case GC_VENOMPRESSURE: + if( !(sc && sc->data[SC_POISONINGWEAPON]) ) { + clif_skill_fail(sd, skill, 0x20, 0); + return 0; + } + break; + /** + * Ranger + **/ + case RA_SENSITIVEKEEN: + if(!pc_iswug(sd)) { + clif_skill_fail(sd,skill,0x17,0); + return 0; + } + break; } switch(require.state) { @@ -8568,6 +10345,51 @@ int skill_check_condition_castbegin(struct map_session_data* sd, short skill, sh break; clif_skill_fail(sd,skill,0,0); return 0; + /** + * Rune Knight + **/ + case ST_RIDINGDRAGON: + if( !(sd->sc.option&OPTION_DRAGON)) { + clif_skill_fail(sd,skill,0,0); + return 0; + } + break; + /** + * Wug + **/ + case ST_WUG: + if( !(sd->sc.option&OPTION_WUG) ) { + clif_skill_fail(sd,skill,0,0); + return 0; + } + break; + /** + * Riding Wug + **/ + case ST_RIDINGWUG: + if( !(sd->sc.option&OPTION_WUGRIDER) ){ + clif_skill_fail(sd,skill,0,0); + return 0; + } + break; + /** + * Mechanic + **/ + case ST_MADO: + if( !(sd->sc.option&OPTION_MADOGEAR) ) { + clif_skill_fail(sd,skill,0,0); + return 0; + } + break; + /** + * Sorcerer + **/ + //case ST_ELEMENTALSPIRIT: + // if(!sd->ed) { + // clif_skill_fail(sd,skill,0x4f,0,0); + // return 0; + // } + // break; } if(require.mhp > 0 && get_percentage(status->hp, status->max_hp) > require.mhp) { @@ -8648,6 +10470,10 @@ int skill_check_condition_castend(struct map_session_data* sd, short skill, shor case PR_BENEDICTIO: skill_check_pc_partner(sd, skill, &lv, 1, 1); break; + case AB_ADORAMUS: + //if( skill_check_pc_partner(sd,skill,&lv, 1, 2) ) + // sd->state.no_gemstone = 1; // Mark this skill as it don't consume ammo because partners gives SP + break; case AM_CANNIBALIZE: case AM_SPHEREMINE: { @@ -8667,6 +10493,32 @@ int skill_check_condition_castend(struct map_session_data* sd, short skill, shor } break; } + case NC_SILVERSNIPER: + case NC_MAGICDECOY: + { + int c = 0, j; + int maxcount = skill_get_maxcount(skill,lv); + int mob_class = 2042; + if( skill == NC_MAGICDECOY ) + mob_class = 2043; + + if( battle_config.land_skill_limit && maxcount > 0 && ( battle_config.land_skill_limit&BL_PC ) ) + { + if( skill == NC_MAGICDECOY ) + { + for( j = mob_class; j <= 2046; j++ ) + i = map_foreachinmap(skill_check_condition_mob_master_sub, sd->bl.m, BL_MOB, sd->bl.id, j, skill, &c); + } + else + i = map_foreachinmap(skill_check_condition_mob_master_sub, sd->bl.m, BL_MOB, sd->bl.id, mob_class, skill, &c); + if( c >= maxcount ) + { + clif_skill_fail(sd , skill, 0, 0); + return 0; + } + } + } + break; } status = &sd->battle_status; @@ -8854,6 +10706,10 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, short if (sd->status.hom_id) //Don't delete items when hom is already out. continue; break; + case NC_SHAPESHIFT: + if( i < 4 ) + continue; + break; case WZ_FIREPILLAR: // celest if (lv <= 5) // no gems required at level 1-5 continue; @@ -8957,12 +10813,12 @@ int skill_castfix (struct block_list *bl, int skill_id, int skill_lv) sd = BL_CAST(BL_PC, bl); // calculate base cast time (reduced by dex) - if( !(skill_get_castnodex(skill_id, skill_lv)&1) ) - { - int scale = battle_config.castrate_dex_scale - status_get_dex(bl); + if( !(skill_get_castnodex(skill_id, skill_lv)&1) ) { + int scale = CONST_CASTRATE_SCALE - CONST_CASTRATE_CALC; if( scale > 0 ) // not instant cast - time = time * scale / battle_config.castrate_dex_scale; - else return 0; // instant cast + time = time * scale / CONST_CASTRATE_SCALE; + else + return 0; // instant cast } // calculate cast time reduced by item/card bonuses @@ -8980,11 +10836,9 @@ int skill_castfix (struct block_list *bl, int skill_id, int skill_lv) } } } - // config cast time multiplier if (battle_config.cast_rate != 100) time = time * battle_config.cast_rate / 100; - // return final cast time return (time > 0) ? time : 0; } @@ -8992,10 +10846,16 @@ int skill_castfix (struct block_list *bl, int skill_id, int skill_lv) /*========================================== * Does cast-time reductions based on sc data. *------------------------------------------*/ -int skill_castfix_sc (struct block_list *bl, int time) +int skill_castfix_sc (struct block_list *bl, int time, int skill_id, int skill_lv) { struct status_change *sc = status_get_sc(bl); - +#if RECASTING + int fixed = skill_get_cast(skill_id, skill_lv); + if( fixed > 1 ) + fixed = fixed * 20 / 100; + else + fixed = 0; +#endif if (sc && sc->count) { if (sc->data[SC_SLOWCAST]) time += time * sc->data[SC_SLOWCAST]->val2 / 100; @@ -9010,8 +10870,24 @@ int skill_castfix_sc (struct block_list *bl, int time) } if (sc->data[SC_POEMBRAGI]) time -= time * sc->data[SC_POEMBRAGI]->val2 / 100; - } +#if RECASTING + /** + * AB Sacrament reduces fixed cast time by (10 x Level)% (up to 50%) + **/ + if( sc->data[SC_SECRAMENT] ) + fixed -= fixed * sc->data[SC_SECRAMENT]->val2 / 100; +#endif + } +#if RECASTING + /** + * WL_RADIUS decreases 10/15/20% fixed cast time from warlock skills + **/ + if( bl->type == BL_PC && skill_id >= WL_WHITEIMPRISON && skill_id <= WL_FREEZE_SP && ( skill_lv = pc_checkskill((TBL_PC*)bl, WL_RADIUS) ) ) + fixed -= fixed * (5+(skill_lv*5)) / 100; + return (time > 0 || fixed > 0) ? cap_value( time , fixed , INT_MAX ) : 0; +#else return (time > 0) ? time : 0; +#endif } /*========================================== @@ -9572,8 +11448,8 @@ int skill_frostjoke_scream (struct block_list *bl, va_list ap) return 0; if (bl->type == BL_PC) { struct map_session_data *sd = (struct map_session_data *)bl; - if (sd && sd->sc.option&OPTION_INVISIBLE) - return 0; + if ( sd && sd->sc.option&(OPTION_INVISIBLE|OPTION_MADOGEAR) ) + return 0;//Frost Joke / Scream cannot target invisible or MADO Gear characters [Ind] } //It has been reported that Scream/Joke works the same regardless of woe-setting. [Skotlex] if(battle_check_target(src,bl,BCT_ENEMY) > 0) @@ -9731,6 +11607,48 @@ int skill_greed (struct block_list *bl, va_list ap) return 0; } +//For Ranger's Detonator [Jobbie/3CeAM] +int skill_detonator(struct block_list *bl, va_list ap) +{ + struct skill_unit *unit=NULL; + struct block_list *src; + int unit_id; + + nullpo_ret(bl); + nullpo_ret(ap); + src = va_arg(ap,struct block_list *); + + if( bl->type != BL_SKILL || (unit = (struct skill_unit *)bl) == NULL || !unit->group ) + return 0; + if( unit->group->src_id != src->id ) + return 0; + + unit_id = unit->group->unit_id; + switch( unit_id ) + { //List of Hunter and Ranger Traps that can be detonate. + case UNT_BLASTMINE: + case UNT_SANDMAN: + case UNT_CLAYMORETRAP: + case UNT_TALKIEBOX: + case UNT_CLUSTERBOMB: + case UNT_FIRINGTRAP: + case UNT_ICEBOUNDTRAP: + if( unit_id == UNT_TALKIEBOX ) + { + clif_talkiebox(bl,unit->group->valstr); + unit->group->val2 = -1; + } + else + map_foreachinrange(skill_trap_splash,bl,skill_get_splash(unit->group->skill_id,unit->group->skill_lv),unit->group->bl_flag,bl,unit->group->tick); + + clif_changetraplook(bl,unit_id == UNT_FIRINGTRAP ? UNT_DUMMYSKILL : UNT_USED_TRAPS); + unit->group->unit_id = UNT_USED_TRAPS; + unit->range = -1; + unit->group->limit = DIFF_TICK(gettick(),unit->group->tick) + (unit_id == UNT_TALKIEBOX ? 5000 : 1500); + break; + } + return 0; +} /*========================================== * @@ -9897,6 +11815,15 @@ static int skill_trap_splash (struct block_list *bl, va_list ap) if(skill_attack(BF_WEAPON,ss,src,bl,sg->skill_id,sg->skill_lv,tick,sg->val1)) skill_blown(src,bl,skill_get_blewcount(sg->skill_id,sg->skill_lv),-1,0); break; + case UNT_ELECTRICSHOCKER: + clif_skill_damage(src,bl,tick,0,0,-30000,1,sg->skill_id,sg->skill_lv,5); + break; + case UNT_FIRINGTRAP: + case UNT_ICEBOUNDTRAP: + case UNT_CLUSTERBOMB: + if(skill_attack(BF_MISC,ss,bl,bl,sg->skill_id,sg->skill_lv,tick,sg->val1)) + clif_skill_damage(bl,bl,tick,0,0,-30000,1,sg->skill_id,sg->skill_lv,5); + break; default: skill_attack(skill_get_type(sg->skill_id),ss,src,bl,sg->skill_id,sg->skill_lv,tick,0); break; @@ -9964,6 +11891,37 @@ bool skill_check_cloaking(struct block_list *bl, struct status_change_entry *sce return wall; } +bool skill_check_camouflage(struct block_list *bl, struct status_change_entry *sce) +{ + static int dx[] = { 0, 1, 0, -1, -1, 1, 1, -1}; + static int dy[] = {-1, 0, 1, 0, -1, -1, 1, 1}; + bool wall = true; + int i; + + if( bl->type == BL_PC ) + { //Check for walls. + ARR_FIND( 0, 8, i, map_getcell(bl->m, bl->x+dx[i], bl->y+dy[i], CELL_CHKNOPASS) != 0 ); + if( i == 8 ) + wall = false; + } + + if( sce ) + { + if( !wall ) + { + if( sce->val1 < 3 ) //End camouflage. + status_change_end(bl, SC_CAMOUFLAGE, -1); + else + if( sce->val3&1 ) + { //Remove wall bonus + sce->val3&=~1; + status_calc_bl(bl,SCB_SPEED); + } + } + } + + return wall; +} /*========================================== * @@ -10005,6 +11963,16 @@ struct skill_unit *skill_initunit (struct skill_unit_group *group, int idx, int case HP_BASILICA: skill_unitsetmapcell(unit,HP_BASILICA,group->skill_lv,CELL_BASILICA,true); break; + /** + * Ranger + **/ + case RA_ELECTRICSHOCKER: + { + struct block_list* target = map_id2bl(group->val2); + if( target ) + status_change_end(target, SC_ELECTRICSHOCKER, -1); + } + break; default: if (group->state.song_dance&0x1) //Check for dissonance. skill_dance_overlap(unit, 1); @@ -10203,14 +12171,36 @@ int skill_delunitgroup_(struct skill_unit_group *group, const char* file, int li } } - if (group->skill_id == SG_SUN_WARM || - group->skill_id == SG_MOON_WARM || - group->skill_id == SG_STAR_WARM) { - struct status_change *sc = status_get_sc(src); - if(sc && sc->data[SC_WARM]) { - sc->data[SC_WARM]->val4 = 0; - status_change_end(src, SC_WARM, INVALID_TIMER); - } + switch( group->skill_id ) { + case SG_SUN_WARM: + case SG_MOON_WARM: + case SG_STAR_WARM: + { + struct status_change *sc = NULL; + if( (sc = status_get_sc(src)) != NULL && sc->data[SC_WARM] ) { + sc->data[SC_WARM]->val4 = 0; + status_change_end(src, SC_WARM, INVALID_TIMER); + } + } + break; + case NC_NEUTRALBARRIER: + { + struct status_change *sc = NULL; + if( (sc = status_get_sc(src)) != NULL && sc->data[SC_NEUTRALBARRIER_MASTER] ) { + sc->data[SC_NEUTRALBARRIER_MASTER]->val2 = 0; + status_change_end(src,SC_NEUTRALBARRIER_MASTER,-1); + } + } + break; + case NC_STEALTHFIELD: + { + struct status_change *sc = NULL; + if( (sc = status_get_sc(src)) != NULL && sc->data[SC_STEALTHFIELD_MASTER] ) { + sc->data[SC_STEALTHFIELD_MASTER]->val2 = 0; + status_change_end(src,SC_STEALTHFIELD_MASTER,-1); + } + } + break; } if (src->type==BL_PC && group->state.ammo_consume) @@ -10379,6 +12369,14 @@ static int skill_unit_timer_sub (DBKey key, void* data, va_list ap) case UNT_FREEZINGTRAP: case UNT_CLAYMORETRAP: case UNT_TALKIEBOX: + case UNT_CLUSTERBOMB: + case UNT_MAGENTATRAP: + case UNT_COBALTTRAP: + case UNT_MAIZETRAP: + case UNT_VERDURETRAP: + case UNT_FIRINGTRAP: + case UNT_ICEBOUNDTRAP: + { struct block_list* src; if( unit->val1 > 0 && (src = map_id2bl(group->src_id)) != NULL && src->type == BL_PC ) @@ -10445,6 +12443,11 @@ static int skill_unit_timer_sub (DBKey key, void* data, va_list ap) case UNT_FREEZINGTRAP: case UNT_TALKIEBOX: case UNT_ANKLESNARE: + /** + * Ranger + **/ + case UNT_ELECTRICSHOCKER: + case UNT_CLUSTERBOMB: if( unit->val1 <= 0 ) { if( group->unit_id == UNT_ANKLESNARE && group->val2 > 0 ) skill_delunit(unit); @@ -10817,6 +12820,9 @@ int skill_produce_mix (struct map_session_data *sd, int skill_id, int nameid, in if (!skill_id) //A skill can be specified for some override cases. skill_id = skill_produce_db[idx].req_skill; + if( skill_id == GC_RESEARCHNEWPOISON ) + skill_id = GC_CREATENEWPOISON; + slot[0]=slot1; slot[1]=slot2; slot[2]=slot3; @@ -10838,13 +12844,35 @@ int skill_produce_mix (struct map_session_data *sd, int skill_id, int nameid, in ele=ele_table[slot[i]-994]; } } + if( skill_id == RK_RUNEMASTERY ) { + int temp_qty, skill_lv = pc_checkskill(sd,skill_id); + if( skill_lv == 10 ) temp_qty = 1 + rand()%3; + else if( skill_lv > 5 ) temp_qty = 1 + rand()%2; + else temp_qty = 1; + for( i = 0; i < MAX_INVENTORY; i++ ) { + if( sd->status.inventory[i].nameid == nameid ) { + if( sd->status.inventory[i].amount >= MAX_RUNE ) { + clif_msgtable(sd->fd,0x61b); + return 0; + } else { + /** + * the amount fits, say we got temp_qty 4 and 19 runes, we trim temp_qty to 1. + **/ + if( temp_qty + sd->status.inventory[i].amount >= MAX_RUNE ) + temp_qty = MAX_RUNE - sd->status.inventory[i].amount; + } + break; + } + } + qty = temp_qty; + } for(i=0;i<MAX_PRODUCE_RESOURCE;i++){ int j,id,x; if( (id=skill_produce_db[idx].mat_id[i]) <= 0 ) continue; num++; - x=qty*skill_produce_db[idx].mat_amount[i]; + x=( skill_id == RK_RUNEMASTERY ? 1 : qty)*skill_produce_db[idx].mat_amount[i]; do{ int y=0; j = pc_search_inventory(sd,id); @@ -10889,6 +12917,10 @@ int skill_produce_mix (struct map_session_data *sd, int skill_id, int nameid, in make_per = (2000 + 40*status->dex + 20*status->luk); break; case AL_HOLYWATER: + /** + * Arch Bishop + **/ + case AB_ANCILLA: make_per = 100000; //100% success break; case AM_PHARMACY: // Potion Preparation - reviewed with the help of various Ragnainfo sources [DracoRPG] @@ -10939,6 +12971,19 @@ int skill_produce_mix (struct map_session_data *sd, int skill_id, int nameid, in case SA_CREATECON: // Elemental Converter Creation make_per = 100000; // should be 100% success rate break; + /** + * Rune Knight + **/ + case RK_RUNEMASTERY: + make_per = 5 * (sd->itemid + pc_checkskill(sd,skill_id)) * 100; + break; + /** + * Guilotine Cross + **/ + case GC_CREATENEWPOISON: + make_per = 3000 + 500 * pc_checkskill(sd,GC_RESEARCHNEWPOISON); + qty = 1+rand()%pc_checkskill(sd,GC_RESEARCHNEWPOISON); + break; default: if (sd->menuskill_id == AM_PHARMACY && sd->menuskill_val > 10 && sd->menuskill_val <= 20) @@ -11008,6 +13053,10 @@ int skill_produce_mix (struct map_session_data *sd, int skill_id, int nameid, in flag = battle_config.produce_item_name_input&0x2; break; case AL_HOLYWATER: + /** + * Arch Bishop + **/ + case AB_ANCILLA: flag = battle_config.produce_item_name_input&0x8; break; case ASC_CDP: @@ -11086,6 +13135,11 @@ int skill_produce_mix (struct map_session_data *sd, int skill_id, int nameid, in clif_produceeffect(sd,0,nameid); clif_misceffect(&sd->bl,3); break; + case RK_RUNEMASTERY: + case GC_CREATENEWPOISON: + clif_produceeffect(sd,2,nameid); + clif_misceffect(&sd->bl,5); + break; default: //Those that don't require a skill? if( skill_produce_db[idx].itemlv > 10 && skill_produce_db[idx].itemlv <= 20) { //Cooking items. @@ -11130,6 +13184,11 @@ int skill_produce_mix (struct map_session_data *sd, int skill_id, int nameid, in clif_produceeffect(sd,1,nameid); clif_misceffect(&sd->bl,2); break; + case RK_RUNEMASTERY: + case GC_CREATENEWPOISON: + clif_produceeffect(sd,3,nameid); + clif_misceffect(&sd->bl,6); + break; default: if( skill_produce_db[idx].itemlv > 10 && skill_produce_db[idx].itemlv <= 20 ) { //Cooking items. @@ -11183,6 +13242,125 @@ int skill_arrow_create (struct map_session_data *sd, int nameid) return 0; } +int skill_poisoningweapon( struct map_session_data *sd, int nameid) { + sc_type type; + int t_lv = 0, chance, i; + nullpo_ret(sd); + if( nameid <= 0 || (i = pc_search_inventory(sd,nameid)) < 0 || pc_delitem(sd,i,1,0,0) ) { + clif_skill_fail(sd,GC_POISONINGWEAPON,0,0); + return 0; + } + switch( nameid ) + { // t_lv used to take duration from skill_get_time2 + case PO_PARALYSE: type = SC_PARALYSE; t_lv = 1; break; + case PO_PYREXIA: type = SC_PYREXIA; t_lv = 2; break; + case PO_DEATHHURT: type = SC_DEATHHURT; t_lv = 3; break; + case PO_LEECHESEND: type = SC_LEECHESEND; t_lv = 4; break; + case PO_VENOMBLEED: type = SC_VENOMBLEED; t_lv = 6; break; + case PO_TOXIN: type = SC_TOXIN; t_lv = 7; break; + case PO_MAGICMUSHROOM: type = SC_MAGICMUSHROOM; t_lv = 8; break; + case PO_OBLIVIONCURSE: type = SC_OBLIVIONCURSE; t_lv = 9; break; + default: + clif_skill_fail(sd,GC_POISONINGWEAPON,0,0); + return 0; + } + + chance = 2 + 2 * sd->menuskill_val; // 2 + 2 * skill_lv + sc_start4(&sd->bl,SC_POISONINGWEAPON,100,t_lv,type,chance,0,skill_get_time(GC_POISONINGWEAPON,sd->menuskill_val)); + + return 0; +} +int skill_magicdecoy(struct map_session_data *sd, int nameid) { + int x, y, i, class_, skill; + struct mob_data *md; + nullpo_ret(sd); + skill = sd->menuskill_val; + + if( nameid <= 0 || !itemdb_is_element(nameid) || (i = pc_search_inventory(sd,nameid)) < 0 || !skill || pc_delitem(sd,i,1,0,0) ) + { + clif_skill_fail(sd,NC_MAGICDECOY,0,0); + return 0; + } + + // Spawn Position + pc_delitem(sd,i,1,0,0); + x = sd->sc.comet_x; + y = sd->sc.comet_y; + sd->sc.comet_x = sd->sc.comet_y = 0; + sd->menuskill_val = 0; + + class_ = (nameid == 990 || nameid == 991) ? 2043 + nameid - 990 : (nameid == 992) ? 2046 : 2045; + + + md = mob_once_spawn_sub(&sd->bl, sd->bl.m, x, y, sd->status.name, class_, ""); + if( md ) { + md->master_id = sd->bl.id; + md->special_state.ai = 3; + if( md->deletetimer != INVALID_TIMER ) + delete_timer(md->deletetimer, mob_timer_delete); + md->deletetimer = add_timer (gettick() + skill_get_time(NC_MAGICDECOY,skill), mob_timer_delete, md->bl.id, 0); + mob_spawn(md); + md->status.matk_min = md->status.matk_max = 250 + (50 * skill); + } + + return 0; +} +// Warlock Spellbooks. [LimitLine/3CeAM] +int skill_spellbook (struct map_session_data *sd, int nameid) { + int i, j, points, skillid, preserved = 0, max_preserve; + nullpo_ret(sd); + + if( sd->sc.data[SC_STOP] ) status_change_end(&sd->bl,SC_STOP,-1); + if( nameid <= 0 ) return 0; + + if( pc_search_inventory(sd,nameid) < 0 ) + { // User with no item on inventory + clif_skill_fail(sd,WL_READING_SB,0x04,0); + return 0; + } + + ARR_FIND(0,MAX_SPELLBOOK,j,sd->rsb[j].skillid == 0); // Search for a free slot + if( j == MAX_SPELLBOOK ) + { // No more free slots + clif_skill_fail(sd,WL_READING_SB,0x35,0); + return 0; + } + + ARR_FIND(0,MAX_SKILL_SPELLBOOK_DB,i,skill_spellbook_db[i].nameid == nameid); // Search for information of this item + if( i == MAX_SKILL_SPELLBOOK_DB ) + { // Fake nameid + clif_skill_fail(sd,WL_READING_SB,0x04,0); + return 0; + } + + skillid = skill_spellbook_db[i].skillid; + points = skill_spellbook_db[i].points; + + if( !pc_checkskill(sd,skillid) ) + { // User don't know the skill + sc_start(&sd->bl,SC_SLEEP,100,1,skill_get_time(WL_READING_SB,pc_checkskill(sd,WL_READING_SB))); + clif_skill_fail(sd,WL_READING_SB,0x34,0); + return 0; + } + + max_preserve = 4 * pc_checkskill(sd,WL_FREEZE_SP) + status_get_int(&sd->bl) / 10 + sd->status.base_level / 10; + for( i = 0; i < MAX_SPELLBOOK && sd->rsb[i].skillid; i++ ) + preserved += sd->rsb[i].points; + + if( preserved + points >= max_preserve ) + { // No more free points + clif_skill_fail(sd,WL_READING_SB,0x04,0); + return 0; + } + + sd->rsb[j].skillid = skillid; + sd->rsb[j].level = pc_checkskill(sd,skillid); + sd->rsb[j].points = points; + sc_start2(&sd->bl,SC_READING_SB,100,0,preserved+points,-1); + + return 1; +} + /*========================================== * @@ -11360,6 +13538,7 @@ void skill_init_unit_layout (void) switch (i) { case MG_FIREWALL: case WZ_ICEWALL: + case WL_EARTHSTRAIN://Warlock // these will be handled later break; case PR_SANCTUARY: @@ -11566,6 +13745,90 @@ void skill_init_unit_layout (void) } pos++; } + earthstrain_unit_pos = pos; + for( i = 0; i < 8; i++ ) + { // For each Direction + skill_unit_layout[pos].count = 3; // Temp code being used as the official method makes too much noise in game. [Rytech] + //skill_unit_layout[pos].count = 15; // This line is here to replace the above one once gravity changes the animation. + switch( i ) + { + case 0: case 1: case 3: case 4: case 5: case 7: + { + int dx[] = {-5, 0, 5}; + int dy[] = { 0, 0, 0}; + //int dx[] = {-7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7}; // Leave this here for future use. + //int dy[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + memcpy(skill_unit_layout[pos].dx,dx,sizeof(dx)); + memcpy(skill_unit_layout[pos].dy,dy,sizeof(dy)); + } + break; + case 2: + case 6: + { + int dx[] = { 0, 0, 0}; + int dy[] = {-5, 0, 5}; + //int dx[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // Leave this here for future use. + //int dy[] = {-7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7}; + memcpy(skill_unit_layout[pos].dx,dx,sizeof(dx)); + memcpy(skill_unit_layout[pos].dy,dy,sizeof(dy)); + } + break; + } + pos++; + } + +} +// Stasis skill usage check. [LimitLine/3CeAM] +int skill_stasis_check(struct block_list *bl, int src_id, int skillid) +{ + int inf = 0; + if( !bl || skillid < 1 ) + return 0; // Can do it + inf = skill_get_inf2(skillid); + if( inf == INF2_SONG_DANCE || /*skill_get_inf2(skillid) == INF2_CHORUS_SKILL ||*/ inf == INF2_SPIRIT_SKILL ) + return 1; // Can't do it. + + switch( skillid ) + { + case NV_FIRSTAID: case TF_HIDING: case AS_CLOAKING: case WZ_SIGHTRASHER: + case RG_STRIPWEAPON: case RG_STRIPSHIELD: case RG_STRIPARMOR: case WZ_METEOR: + case RG_STRIPHELM: case SC_STRIPACCESSARY: case ST_FULLSTRIP: case WZ_SIGHTBLASTER: + case ST_CHASEWALK: case SC_ENERVATION: case SC_GROOMY: case WZ_ICEWALL: + case SC_IGNORANCE: case SC_LAZINESS: case SC_UNLUCKY: case WZ_STORMGUST: + case SC_WEAKNESS: case AL_RUWACH: case AL_PNEUMA: case WZ_JUPITEL: + case AL_HEAL: case AL_BLESSING: case AL_INCAGI: case WZ_VERMILION: + case AL_TELEPORT: case AL_WARP: case AL_HOLYWATER: case WZ_EARTHSPIKE: + case AL_HOLYLIGHT: case PR_IMPOSITIO: case PR_ASPERSIO: case WZ_HEAVENDRIVE: + case PR_SANCTUARY: case PR_STRECOVERY: case PR_MAGNIFICAT: case WZ_QUAGMIRE: + case ALL_RESURRECTION: case PR_LEXDIVINA: case PR_LEXAETERNA: case HW_GRAVITATION: + case PR_MAGNUS: case PR_TURNUNDEAD: case MG_SRECOVERY: case HW_MAGICPOWER: + case MG_SIGHT: case MG_NAPALMBEAT: case MG_SAFETYWALL: case HW_GANBANTEIN: + case MG_SOULSTRIKE: case MG_COLDBOLT: case MG_FROSTDIVER: case WL_DRAINLIFE: + case MG_STONECURSE: case MG_FIREBALL: case MG_FIREWALL: case WL_SOULEXPANSION: + case MG_FIREBOLT: case MG_LIGHTNINGBOLT: case MG_THUNDERSTORM: case MG_ENERGYCOAT: + case WL_WHITEIMPRISON: case WL_SUMMONFB: case WL_SUMMONBL: case WL_SUMMONWB: + case WL_SUMMONSTONE: case WL_SIENNAEXECRATE: case WL_RELEASE: case WL_EARTHSTRAIN: + case WL_RECOGNIZEDSPELL: case WL_READING_SB: case SA_MAGICROD: case SA_SPELLBREAKER: + case SA_DISPELL: case SA_FLAMELAUNCHER: case SA_FROSTWEAPON: case SA_LIGHTNINGLOADER: + case SA_SEISMICWEAPON: case SA_VOLCANO: case SA_DELUGE: case SA_VIOLENTGALE: + case SA_LANDPROTECTOR: case PF_HPCONVERSION: case PF_SOULCHANGE: case PF_SPIDERWEB: + case PF_FOGWALL: case TK_RUN: case TK_HIGHJUMP: case TK_SEVENWIND: + case SL_KAAHI: case SL_KAUPE: case SL_KAITE: +#if FIREIVY_ON + case WZ_FIREIVY: +#endif + // Skills that need to be confirmed. + case SO_FIREWALK: case SO_ELECTRICWALK: case SO_SPELLFIST: case SO_EARTHGRAVE: + case SO_DIAMONDDUST: case SO_POISON_BUSTER: case SO_PSYCHIC_WAVE: case SO_CLOUD_KILL: + case SO_STRIKING: case SO_WARMER: case SO_VACUUM_EXTREME: case SO_VARETYR_SPEAR: + case SO_ARRULLO: + return 1; // Can't do it. + + default: + return 0; // Can do it. + } + + return 0; // Can Cast anything else like Weapon Skills } /*========================================== @@ -11596,7 +13859,10 @@ static bool skill_parse_row_skilldb(char* split[], int columns, int current) i = skill_get_index(id); if( !i ) // invalid skill id return false; - +#if FIREIVY_ON == 0 + if( i == WZ_FIREIVY ) //Disabled + return true; +#endif skill_split_atoi(split[1],skill_db[i].range); skill_db[i].hit = atoi(split[2]); skill_db[i].inf = atoi(split[3]); @@ -11638,7 +13904,10 @@ static bool skill_parse_row_requiredb(char* split[], int columns, int current) i = skill_get_index(i); if( !i ) // invalid skill id return false; - +#if FIREIVY_ON == 0 + if( i == WZ_FIREIVY ) //Disabled + return true; +#endif skill_split_atoi(split[1],skill_db[i].hp); skill_split_atoi(split[2],skill_db[i].mhp); skill_split_atoi(split[3],skill_db[i].sp); @@ -11696,6 +13965,17 @@ static bool skill_parse_row_requiredb(char* split[], int columns, int current) else if( strcmpi(split[10],"recover_weight_rate")==0 ) skill_db[i].state = ST_RECOV_WEIGHT_RATE; else if( strcmpi(split[10],"move_enable")==0 ) skill_db[i].state = ST_MOVE_ENABLE; else if( strcmpi(split[10],"water")==0 ) skill_db[i].state = ST_WATER; + /** + * New States + **/ + else if( strcmpi(split[10],"dragon")==0 ) skill_db[i].state = ST_RIDINGDRAGON; + else if( strcmpi(split[10],"warg")==0 ) skill_db[i].state = ST_WUG; + else if( strcmpi(split[10],"ridingwarg")==0 ) skill_db[i].state = ST_RIDINGWUG; + else if( strcmpi(split[10],"mado")==0 ) skill_db[i].state = ST_MADO; + else if( strcmpi(split[10],"elementalspirit")==0 ) skill_db[i].state = ST_ELEMENTALSPIRIT; + /** + * Unknown or no state + **/ else skill_db[i].state = ST_NONE; skill_split_atoi(split[11],skill_db[i].spiritball); @@ -11713,13 +13993,16 @@ static bool skill_parse_row_castdb(char* split[], int columns, int current) i = skill_get_index(i); if( !i ) // invalid skill id return false; - +#if FIREIVY_ON == 0 + if( i == WZ_FIREIVY ) //Disabled + return true; +#endif skill_split_atoi(split[1],skill_db[i].cast); skill_split_atoi(split[2],skill_db[i].delay); skill_split_atoi(split[3],skill_db[i].walkdelay); skill_split_atoi(split[4],skill_db[i].upkeep_time); skill_split_atoi(split[5],skill_db[i].upkeep_time2); - + skill_split_atoi(split[6],skill_db[i].cooldown); return true; } @@ -11729,7 +14012,10 @@ static bool skill_parse_row_castnodexdb(char* split[], int columns, int current) i = skill_get_index(i); if( !i ) // invalid skill id return false; - +#if FIREIVY_ON == 0 + if( i == WZ_FIREIVY ) //Disabled + return true; +#endif skill_split_atoi(split[1],skill_db[i].castnodex); if( split[2] ) // optional column skill_split_atoi(split[2],skill_db[i].delaynodex); @@ -11743,7 +14029,10 @@ static bool skill_parse_row_nocastdb(char* split[], int columns, int current) i = skill_get_index(i); if( !i ) // invalid skill id return false; - +#if FIREIVY_ON == 0 + if( i == WZ_FIREIVY ) //Disabled + return true; +#endif skill_db[i].nocast |= atoi(split[1]); return true; @@ -11829,6 +14118,50 @@ static bool skill_parse_row_createarrowdb(char* split[], int columns, int curren return true; } +static bool skill_parse_row_spellbookdb(char* split[], int columns, int current) +{// SkillID,PreservePoints + + int skillid = atoi(split[0]), + points = atoi(split[1]), + nameid = atoi(split[2]); + + if( !skill_get_index(skillid) || !skill_get_max(skillid) ) + ShowError("spellbook_db: Invalid skill ID %d\n", skillid); + if ( !skill_get_inf(skillid) ) + ShowError("spellbook_db: Passive skills cannot be memorized (%d/%s)\n", skillid, skill_get_name(skillid)); + if( points < 1 ) + ShowError("spellbook_db: PreservePoints have to be 1 or above! (%d/%s)\n", skillid, skill_get_name(skillid)); + else + { + skill_spellbook_db[current].skillid = skillid; + skill_spellbook_db[current].points = points; + skill_spellbook_db[current].nameid = nameid; + + return true; + } + + return false; +} +static bool skill_parse_row_magicmushroomdb(char* split[], int column, int current) +{ + int i = atoi(split[0]); + + if( !skill_get_index(i) || !skill_get_max(i) ) + { + ShowError("magicmushroom_db: Invalid skill ID %d\n", i); + return false; + } + if ( !skill_get_inf(i) ) + { + ShowError("magicmushroom_db: Passive skills cannot be casted (%d/%s)\n", i, skill_get_name(i)); + return false; + } + + skill_magicmushroom_db[current].skillid = i; + + return true; +} + static bool skill_parse_row_abradb(char* split[], int columns, int current) {// SkillID,DummyName,RequiredHocusPocusLevel,Rate @@ -11843,7 +14176,10 @@ static bool skill_parse_row_abradb(char* split[], int columns, int current) ShowError("abra_db: Passive skills cannot be casted (%d/%s)\n", i, skill_get_name(i)); return false; } - +#if FIREIVY_ON == 0 + if( i == WZ_FIREIVY ) //Disabled + return true; +#endif skill_abra_db[current].skillid = i; skill_abra_db[current].req_lv = atoi(split[2]); skill_abra_db[current].per = atoi(split[3]); @@ -11859,13 +14195,14 @@ static void skill_readdb(void) memset(skill_produce_db,0,sizeof(skill_produce_db)); memset(skill_arrow_db,0,sizeof(skill_arrow_db)); memset(skill_abra_db,0,sizeof(skill_abra_db)); - + memset(skill_spellbook_db,0,sizeof(skill_spellbook_db)); + memset(skill_magicmushroom_db,0,sizeof(skill_magicmushroom_db)); // load skill databases safestrncpy(skill_db[0].name, "UNKNOWN_SKILL", sizeof(skill_db[0].name)); safestrncpy(skill_db[0].desc, "Unknown Skill", sizeof(skill_db[0].desc)); sv_readdb(db_path, "skill_db.txt" , ',', 17, 17, MAX_SKILL_DB, skill_parse_row_skilldb); sv_readdb(db_path, "skill_require_db.txt" , ',', 32, 32, MAX_SKILL_DB, skill_parse_row_requiredb); - sv_readdb(db_path, "skill_cast_db.txt" , ',', 6, 6, MAX_SKILL_DB, skill_parse_row_castdb); + sv_readdb(db_path, "skill_cast_db.txt" , ',', 7, 7, MAX_SKILL_DB, skill_parse_row_castdb); sv_readdb(db_path, "skill_castnodex_db.txt", ',', 2, 3, MAX_SKILL_DB, skill_parse_row_castnodexdb); sv_readdb(db_path, "skill_nocast_db.txt" , ',', 2, 2, MAX_SKILL_DB, skill_parse_row_nocastdb); sv_readdb(db_path, "skill_unit_db.txt" , ',', 8, 8, MAX_SKILL_DB, skill_parse_row_unitdb); @@ -11873,6 +14210,11 @@ static void skill_readdb(void) sv_readdb(db_path, "produce_db.txt" , ',', 4, 4+2*MAX_PRODUCE_RESOURCE, MAX_SKILL_PRODUCE_DB, skill_parse_row_producedb); sv_readdb(db_path, "create_arrow_db.txt" , ',', 1+2, 1+2*MAX_ARROW_RESOURCE, MAX_SKILL_ARROW_DB, skill_parse_row_createarrowdb); sv_readdb(db_path, "abra_db.txt" , ',', 4, 4, MAX_SKILL_ABRA_DB, skill_parse_row_abradb); + //Warlock + sv_readdb(db_path, "spellbook_db.txt" , ',', 3, 3, MAX_SKILL_SPELLBOOK_DB, skill_parse_row_spellbookdb); + //Guillotine Cross + sv_readdb(db_path, "magicmushroom_db.txt" , ',', 1, 1, MAX_SKILL_MAGICMUSHROOM_DB, skill_parse_row_magicmushroomdb); + } void skill_reload (void) diff --git a/src/map/skill.h b/src/map/skill.h index 1ad6ea25a..97bd54252 100644 --- a/src/map/skill.h +++ b/src/map/skill.h @@ -13,7 +13,7 @@ struct skill_unit_group; struct status_change_entry; #define MAX_SKILL_DB MAX_SKILL -#define MAX_SKILL_PRODUCE_DB 150 +#define MAX_SKILL_PRODUCE_DB 170 #define MAX_PRODUCE_RESOURCE 12 #define MAX_SKILL_ARROW_DB 150 #define MAX_ARROW_RESOURCE 5 @@ -91,7 +91,7 @@ struct s_skill_db { int range[MAX_SKILL_LEVEL],hit,inf,element[MAX_SKILL_LEVEL],nk,splash[MAX_SKILL_LEVEL],max; int num[MAX_SKILL_LEVEL]; int cast[MAX_SKILL_LEVEL],walkdelay[MAX_SKILL_LEVEL],delay[MAX_SKILL_LEVEL]; - int upkeep_time[MAX_SKILL_LEVEL],upkeep_time2[MAX_SKILL_LEVEL]; + int upkeep_time[MAX_SKILL_LEVEL],upkeep_time2[MAX_SKILL_LEVEL],cooldown[MAX_SKILL_LEVEL]; int castcancel,cast_def_rate; int inf2,maxcount[MAX_SKILL_LEVEL],skill_type; int blewcount[MAX_SKILL_LEVEL]; @@ -290,7 +290,7 @@ int skill_clear_group(struct block_list *bl, int flag); int skill_unit_ondamaged(struct skill_unit *src,struct block_list *bl,int damage,unsigned int tick); int skill_castfix( struct block_list *bl, int skill_id, int skill_lv); -int skill_castfix_sc( struct block_list *bl, int time); +int skill_castfix_sc( struct block_list *bl, int time, int skill_id, int skill_lv); int skill_delayfix( struct block_list *bl, int skill_id, int skill_lv); // Skill conditions check and remove [Inkfish] @@ -368,6 +368,14 @@ enum { ST_RECOV_WEIGHT_RATE, ST_MOVE_ENABLE, ST_WATER, + /** + * 3rd States + **/ + ST_RIDINGDRAGON, + ST_WUG, + ST_RIDINGWUG, + ST_MADO, + ST_ELEMENTALSPIRIT, }; enum e_skill { @@ -1310,7 +1318,7 @@ enum e_skill { GN_S_PHARMACY, GN_SLINGITEM_RANGEMELEEATK, - AB_SECRAMENT, + AB_SECRAMENT=2515, WM_SEVERE_RAINSTORM_MELEE, SR_HOWLINGOFLION, SR_RIDEINLIGHTNING, @@ -1547,5 +1555,46 @@ enum { UNT_MAX = 0x190 }; - +/** + * Warlock + **/ +#define MAX_SKILL_SPELLBOOK_DB 17 +enum wl_spheres { + WLS_FIRE = 0x44, + WLS_WIND, + WLS_WATER, + WLS_STONE, +}; +int skill_spellbook (struct map_session_data *sd, int nameid); +/** + * Guilottine Cross + **/ +#define MAX_SKILL_MAGICMUSHROOM_DB 22 +struct s_skill_magicmushroom_db { + int skillid; +}; +extern struct s_skill_magicmushroom_db skill_magicmushroom_db[MAX_SKILL_MAGICMUSHROOM_DB]; +/** + * Ranger + **/ +int skill_detonator(struct block_list *bl, va_list ap); +bool skill_check_camouflage(struct block_list *bl, struct status_change_entry *sce); +/** + * Mechanic + **/ +int skill_magicdecoy(struct map_session_data *sd, int nameid); +/** + * Guiltoine Cross + **/ +int skill_poisoningweapon( struct map_session_data *sd, int nameid); +enum gx_poison { + PO_PARALYSE = 12717, + PO_LEECHESEND, + PO_OBLIVIONCURSE, + PO_DEATHHURT, + PO_TOXIN, + PO_PYREXIA, + PO_MAGICMUSHROOM, + PO_VENOMBLEED +}; #endif /* _SKILL_H_ */ diff --git a/src/map/status.c b/src/map/status.c index 4df2c80d6..28506a4f6 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -56,7 +56,13 @@ static int refinebonus[MAX_REFINE_BONUS][3]; // ¸˜Bƒ{[ƒiƒXƒe[ƒuƒ‹(refine_db.t int percentrefinery[5][MAX_REFINE+1]; // ¸˜B¬Œ÷—¦(refine_db.txt) static int atkmods[3][MAX_WEAPON_TYPE]; // •ŠíATKƒTƒCƒYC³(size_fix.txt) static char job_bonus[CLASS_COUNT][MAX_LEVEL]; - +#if RRMODE +enum { + SHIELD_ASPD, + RE_JOB_DB_MAX, +} RE_JOB_DB; +static int re_job_db[CLASS_COUNT][RE_JOB_DB_MAX];//[RRInd] +#endif static struct eri *sc_data_ers; //For sc_data entries static struct status_data dummy_status; @@ -445,6 +451,162 @@ void initChangeTables(void) set_sc( GD_LEADERSHIP , SC_GUILDAURA , SI_BLANK , SCB_STR|SCB_AGI|SCB_VIT|SCB_DEX ); set_sc( GD_BATTLEORDER , SC_BATTLEORDERS , SI_BLANK , SCB_STR|SCB_INT|SCB_DEX ); set_sc( GD_REGENERATION , SC_REGENERATION , SI_BLANK , SCB_REGEN ); + + /** + * Rune Knight + **/ + set_sc( RK_ENCHANTBLADE , SC_ENCHANTBLADE , SI_ENCHANTBLADE , SCB_NONE ); + set_sc( RK_DRAGONHOWLING , SC_FEAR , SI_BLANK , SCB_FLEE|SCB_HIT ); + set_sc( RK_DEATHBOUND , SC_DEATHBOUND , SI_DEATHBOUND , SCB_NONE ); + set_sc( RK_WINDCUTTER , SC_FEAR , SI_BLANK , SCB_FLEE|SCB_HIT ); + add_sc( RK_DRAGONBREATH , SC_BURNING ); + set_sc( RK_MILLENNIUMSHIELD , SC_MILLENNIUMSHIELD , SI_REUSE_MILLENNIUMSHIELD , SCB_NONE ); + set_sc( RK_REFRESH , SC_REFRESH , SI_REFRESH , SCB_NONE ); + set_sc( RK_GIANTGROWTH , SC_GIANTGROWTH , SI_GIANTGROWTH , SCB_STR ); + set_sc( RK_STONEHARDSKIN , SC_STONEHARDSKIN , SI_STONEHARDSKIN , SCB_NONE ); + set_sc( RK_VITALITYACTIVATION, SC_VITALITYACTIVATION, SI_VITALITYACTIVATION, SCB_REGEN ); + set_sc( RK_FIGHTINGSPIRIT , SC_FIGHTINGSPIRIT , SI_FIGHTINGSPIRIT , SCB_WATK|SCB_ASPD ); + set_sc( RK_ABUNDANCE , SC_ABUNDANCE , SI_ABUNDANCE , SCB_NONE ); + /** + * GC Guillotine Cross + **/ + set_sc( GC_VENOMIMPRESS , SC_VENOMIMPRESS , SI_VENOMIMPRESS , SCB_NONE ); + set_sc( GC_POISONINGWEAPON , SC_POISONINGWEAPON , SI_POISONINGWEAPON , SCB_NONE ); + set_sc( GC_WEAPONBLOCKING , SC_WEAPONBLOCKING , SI_WEAPONBLOCKING , SCB_NONE ); + set_sc( GC_CLOAKINGEXCEED , SC_CLOAKINGEXCEED , SI_CLOAKINGEXCEED , SCB_SPEED ); + set_sc( GC_HALLUCINATIONWALK , SC_HALLUCINATIONWALK, SI_HALLUCINATIONWALK, SCB_FLEE ); + set_sc( GC_ROLLINGCUTTER , SC_ROLLINGCUTTER , SI_ROLLINGCUTTER , SCB_NONE ); + /** + * Arch Bishop + **/ + set_sc( AB_ADORAMUS , SC_ADORAMUS , SI_ADORAMUS , SCB_AGI|SCB_SPEED ); + add_sc( AB_CLEMENTIA , SC_BLESSING ); + add_sc( AB_CANTO , SC_INCREASEAGI ); + set_sc( AB_EPICLESIS , SC_EPICLESIS , SI_EPICLESIS , SCB_MAXHP ); + add_sc( AB_PRAEFATIO , SC_KYRIE ); + set_sc( AB_ORATIO , SC_ORATIO , SI_ORATIO , SCB_NONE ); + set_sc( AB_LAUDAAGNUS , SC_LAUDAAGNUS , SI_LAUDAAGNUS , SCB_VIT ); + set_sc( AB_LAUDARAMUS , SC_LAUDARAMUS , SI_LAUDARAMUS , SCB_LUK ); + set_sc( AB_RENOVATIO , SC_RENOVATIO , SI_RENOVATIO , SCB_REGEN ); + set_sc( AB_EXPIATIO , SC_EXPIATIO , SI_EXPIATIO , SCB_ATK_ELE ); + set_sc( AB_DUPLELIGHT , SC_DUPLELIGHT , SI_DUPLELIGHT , SCB_NONE ); + set_sc( AB_SECRAMENT , SC_SECRAMENT , SI_SECRAMENT , SCB_NONE ); + /** + * Warlock + **/ + add_sc( WL_WHITEIMPRISON , SC_WHITEIMPRISON ); + set_sc( WL_FROSTMISTY , SC_FREEZING , SI_FROSTMISTY , SCB_ASPD|SCB_SPEED|SCB_DEF|SCB_DEF2 ); + set_sc( WL_MARSHOFABYSS , SC_MARSHOFABYSS , SI_MARSHOFABYSS , SCB_SPEED|SCB_FLEE|SCB_DEF|SCB_MDEF ); + set_sc( WL_RECOGNIZEDSPELL , SC_RECOGNIZEDSPELL , SI_RECOGNIZEDSPELL , SCB_NONE ); + set_sc( WL_STASIS , SC_STASIS , SI_STASIS , SCB_NONE ); + /** + * Ranger + **/ + set_sc( RA_FEARBREEZE , SC_FEARBREEZE , SI_FEARBREEZE , SCB_NONE ); + set_sc( RA_ELECTRICSHOCKER , SC_ELECTRICSHOCKER , SI_ELECTRICSHOCKER , SCB_NONE ); + set_sc( RA_WUGDASH , SC_WUGDASH , SI_WUGDASH , SCB_SPEED ); + set_sc( RA_CAMOUFLAGE , SC_CAMOUFLAGE , SI_CAMOUFLAGE , SCB_CRI|SCB_SPEED ); + add_sc( RA_MAGENTATRAP , SC_ELEMENTALCHANGE ); + add_sc( RA_COBALTTRAP , SC_ELEMENTALCHANGE ); + add_sc( RA_MAIZETRAP , SC_ELEMENTALCHANGE ); + add_sc( RA_VERDURETRAP , SC_ELEMENTALCHANGE ); + add_sc( RA_FIRINGTRAP , SC_BURNING ); + set_sc( RA_ICEBOUNDTRAP , SC_FREEZING , SI_FROSTMISTY , SCB_NONE ); + /** + * Mechanic + **/ + set_sc( NC_ACCELERATION , SC_ACCELERATION , SI_ACCELERATION , SCB_SPEED ); + set_sc( NC_HOVERING , SC_HOVERING , SI_HOVERING , SCB_SPEED ); + set_sc( NC_SHAPESHIFT , SC_SHAPESHIFT , SI_SHAPESHIFT , SCB_DEF_ELE ); + set_sc( NC_INFRAREDSCAN , SC_INFRAREDSCAN , SI_INFRAREDSCAN , SCB_FLEE ); + set_sc( NC_ANALYZE , SC_ANALYZE , SI_ANALYZE , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2 ); + set_sc( NC_MAGNETICFIELD , SC_MAGNETICFIELD , SI_MAGNETICFIELD , SCB_NONE ); + set_sc( NC_NEUTRALBARRIER , SC_NEUTRALBARRIER , SI_NEUTRALBARRIER , SCB_NONE ); + set_sc( NC_STEALTHFIELD , SC_STEALTHFIELD , SI_STEALTHFIELD , SCB_NONE ); + ///** + // * Shadow Chaser + // **/ + //set_sc( SC_REPRODUCE , SC__REPRODUCE , SI_REPRODUCE , SCB_NONE ); + //set_sc( SC_AUTOSHADOWSPELL , SC__AUTOSHADOWSPELL, SI_AUTOSHADOWSPELL , SCB_NONE ); + //set_sc( SC_SHADOWFORM , SC__SHADOWFORM , SI_SHADOWFORM , SCB_NONE ); + //set_sc( SC_BODYPAINT , SC__BODYPAINT , SI_BODYPAINTING , SCB_ASPD ); + //set_sc( SC_INVISIBILITY , SC__INVISIBILITY , SI_INVISIBILITY , SCB_ASPD|SCB_CRI|SCB_ATK_ELE ); + //set_sc( SC_DEADLYINFECT , SC__DEADLYINFECT , SI_DEADLYINFECT , SCB_NONE ); + //set_sc( SC_ENERVATION , SC__ENERVATION , SI_ENERVATION , SCB_BATK ); + //set_sc( SC_GROOMY , SC__GROOMY , SI_GROOMY , SCB_ASPD|SCB_HIT|SCB_SPEED ); + //set_sc( SC_IGNORANCE , SC__IGNORANCE , SI_IGNORANCE , SCB_NONE ); + //set_sc( SC_LAZINESS , SC__LAZINESS , SI_LAZINESS , SCB_FLEE ); + //set_sc( SC_UNLUCKY , SC__UNLUCKY , SI_UNLUCKY , SCB_CRI|SCB_FLEE2 ); + //set_sc( SC_WEAKNESS , SC__WEAKNESS , SI_WEAKNESS , SCB_FLEE2|SCB_MAXHP ); + //set_sc( SC_STRIPACCESSARY , SC__STRIPACCESSORY , SI_STRIPACCESSORY , SCB_DEX|SCB_INT|SCB_LUK ); + //set_sc( SC_MANHOLE , SC__MANHOLE , SI_MANHOLE , SCB_NONE ); + //add_sc( SC_CHAOSPANIC , SC_CHAOS ); + //set_sc( SC_BLOODYLUST , SC__BLOODYLUST , SI_BLOODYLUST , SCB_DEF|SCB_DEF2|SCB_BATK|SCB_WATK ); + ///** + // * Royal Guard + // **/ + //set_sc( LG_REFLECTDAMAGE , SC_REFLECTDAMAGE , SI_LG_REFLECTDAMAGE, SCB_NONE ); + //set_sc( LG_FORCEOFVANGUARD , SC_FORCEOFVANGUARD , SI_FORCEOFVANGUARD , SCB_MAXHP|SCB_DEF ); + //set_sc( LG_EXEEDBREAK , SC_EXEEDBREAK , SI_EXEEDBREAK , SCB_NONE ); + //set_sc( LG_PRESTIGE , SC_PRESTIGE , SI_PRESTIGE , SCB_DEF2 ); + //set_sc( LG_BANDING , SC_BANDING , SI_BANDING , SCB_DEF2|SCB_WATK );// Renewal: atk2 & def2 + //set_sc( LG_PIETY , SC_BENEDICTIO , SI_BENEDICTIO , SCB_DEF_ELE ); + //set_sc( LG_EARTHDRIVE , SC_EARTHDRIVE , SI_EARTHDRIVE , SCB_DEF|SCB_ASPD ); + //set_sc( LG_INSPIRATION , SC_INSPIRATION , SI_INSPIRATION , SCB_MAXHP|SCB_WATK|SCB_HIT|SCB_VIT|SCB_AGI|SCB_STR|SCB_DEX|SCB_INT|SCB_LUK); + ///** + // * Sura + // **/ + //add_sc( SR_DRAGONCOMBO , SC_STUN ); + //add_sc( SR_EARTHSHAKER , SC_STUN ); + //set_sc( SR_CRESCENTELBOW , SC_CRESCENTELBOW , SI_CRESCENTELBOW , SCB_NONE ); + //set_sc( SR_CURSEDCIRCLE , SC_CURSEDCIRCLE_TARGET, SI_CURSEDCIRCLE_TARGET , SCB_NONE ); + //set_sc( SR_LIGHTNINGWALK , SC_LIGHTNINGWALK , SI_LIGHTNINGWALK , SCB_NONE ); + //set_sc( SR_RAISINGDRAGON , SC_RAISINGDRAGON , SI_RAISINGDRAGON , SCB_REGEN|SCB_MAXHP|SCB_MAXSP/*|SCB_ASPD*/ ); + //set_sc( SR_GENTLETOUCH_ENERGYGAIN, SC_GT_ENERGYGAIN , SI_GENTLETOUCH_ENERGYGAIN, SCB_NONE ); + //set_sc( SR_GENTLETOUCH_CHANGE , SC_GT_CHANGE , SI_GENTLETOUCH_CHANGE , SCB_BATK|SCB_ASPD|SCB_DEF|SCB_MDEF ); + //set_sc( SR_GENTLETOUCH_REVITALIZE, SC_GT_REVITALIZE , SI_GENTLETOUCH_REVITALIZE, SCB_MAXHP|SCB_DEF2|SCB_REGEN|SCB_ASPD|SCB_SPEED ); + ///** + // * Wanderer / Mistrel + // **/ + //set_sc( WA_SWING_DANCE , SC_SWINGDANCE , SI_SWINGDANCE , SCB_SPEED|SCB_ASPD ); + //set_sc( WA_SYMPHONY_OF_LOVER , SC_SYMPHONYOFLOVER , SI_SYMPHONYOFLOVERS , SCB_MDEF ); + //set_sc( WA_MOONLIT_SERENADE , SC_MOONLITSERENADE , SI_MOONLITSERENADE , SCB_MATK ); + //set_sc( MI_RUSH_WINDMILL , SC_RUSHWINDMILL , SI_RUSHWINDMILL , SCB_BATK ); + //set_sc( MI_ECHOSONG , SC_ECHOSONG , SI_ECHOSONG , SCB_DEF2 ); + //set_sc( MI_HARMONIZE , SC_HARMONIZE , SI_HARMONIZE , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK ); + //set_sc( WM_POEMOFNETHERWORLD , SC_STOP , SI_NETHERWORLD , SCB_NONE ); + //set_sc( WM_VOICEOFSIREN , SC_VOICEOFSIREN , SI_VOICEOFSIREN , SCB_NONE ); + //set_sc( WM_LULLABY_DEEPSLEEP , SC_DEEPSLEEP , SI_DEEPSLEEP , SCB_NONE ); + //set_sc( WM_SIRCLEOFNATURE , SC_SIRCLEOFNATURE , SI_SIRCLEOFNATURE , SCB_NONE ); + //set_sc( WM_GLOOMYDAY , SC_GLOOMYDAY , SI_GLOOMYDAY , SCB_FLEE|SCB_ASPD ); + //set_sc( WM_SONG_OF_MANA , SC_SONGOFMANA , SI_SONGOFMANA , SCB_NONE ); + //set_sc( WM_DANCE_WITH_WUG , SC_DANCEWITHWUG , SI_DANCEWITHWUG , SCB_ASPD ); + //set_sc( WM_SATURDAY_NIGHT_FEVER , SC_SATURDAYNIGHTFEVER , SI_SATURDAYNIGHTFEVER , SCB_BATK|SCB_DEF|SCB_FLEE|SCB_REGEN ); + //set_sc( WM_LERADS_DEW , SC_LERADSDEW , SI_LERADSDEW , SCB_MAXHP ); + //set_sc( WM_MELODYOFSINK , SC_MELODYOFSINK , SI_MELODYOFSINK , SCB_BATK|SCB_MATK ); + //set_sc( WM_BEYOND_OF_WARCRY , SC_BEYONDOFWARCRY , SI_WARCRYOFBEYOND , SCB_BATK|SCB_MATK ); + //set_sc( WM_UNLIMITED_HUMMING_VOICE, SC_UNLIMITEDHUMMINGVOICE, SI_UNLIMITEDHUMMINGVOICE, SCB_NONE ); + ///** + // * Sorcerer + // **/ + //set_sc( SO_FIREWALK , SC_PROPERTYWALK , SI_PROPERTYWALK , SCB_NONE ); + //set_sc( SO_ELECTRICWALK , SC_PROPERTYWALK , SI_PROPERTYWALK , SCB_NONE ); + //set_sc( SO_SPELLFIST , SC_SPELLFIST , SI_SPELLFIST , SCB_NONE ); + //set_sc( SO_CLOUD_KILL , SC_POISON , SI_CLOUDKILL , SCB_NONE ); + //set_sc( SO_STRIKING , SC_STRIKING , SI_STRIKING , SCB_WATK|SCB_CRI ); + //set_sc( SO_WARMER , SC_WARMER , SI_WARMER , SCB_NONE ); + //set_sc( SO_VACUUM_EXTREME , SC_VACUUM_EXTREME , SI_VACUUM_EXTREME , SCB_NONE ); + //set_sc( SO_ARRULLO , SC_DEEPSLEEP , SI_DEEPSLEEP , SCB_NONE ); + ///** + // * Genetic + // **/ + //set_sc( GN_CARTBOOST , SC_GN_CARTBOOST, SI_CARTSBOOST , SCB_SPEED ); + //set_sc( GN_THORNS_TRAP , SC_THORNSTRAP , SI_THORNTRAP , SCB_NONE ); + //set_sc( GN_BLOOD_SUCKER , SC_BLOODSUCKER , SI_BLOODSUCKER , SCB_NONE ); + //set_sc( GN_WALLOFTHORN , SC_STOP , SI_BLANK , SCB_NONE ); + //set_sc( GN_FIRE_EXPANSION_SMOKE_POWDER, SC_SMOKEPOWDER , SI_FIRE_EXPANSION_SMOKE_POWDER, SCB_NONE ); + //set_sc( GN_FIRE_EXPANSION_TEAR_GAS , SC_TEARGAS , SI_FIRE_EXPANSION_TEAR_GAS , SCB_NONE ); + //set_sc( GN_MANDRAGORA , SC_MANDRAGORA , SI_MANDRAGORA , SCB_INT ); // Storing the target job rather than simply SC_SPIRIT simplifies code later on. SkillStatusChangeTable[SL_ALCHEMIST] = (sc_type)MAPID_ALCHEMIST, @@ -516,6 +678,81 @@ void initChangeTables(void) StatusIconChangeTable[SC_MERC_HPUP] = SI_MERC_HPUP; StatusIconChangeTable[SC_MERC_SPUP] = SI_MERC_SPUP; StatusIconChangeTable[SC_MERC_HITUP] = SI_MERC_HITUP; + // Warlock Spheres + StatusIconChangeTable[SC_SPHERE_1] = SI_SPHERE_1; + StatusIconChangeTable[SC_SPHERE_2] = SI_SPHERE_2; + StatusIconChangeTable[SC_SPHERE_3] = SI_SPHERE_3; + StatusIconChangeTable[SC_SPHERE_4] = SI_SPHERE_4; + StatusIconChangeTable[SC_SPHERE_5] = SI_SPHERE_5; + + StatusIconChangeTable[SC_NEUTRALBARRIER_MASTER] = SI_NEUTRALBARRIER_MASTER; + StatusIconChangeTable[SC_STEALTHFIELD_MASTER] = SI_STEALTHFIELD_MASTER; + StatusIconChangeTable[SC_OVERHEAT] = SI_OVERHEAT; + StatusIconChangeTable[SC_OVERHEAT_LIMITPOINT] = SI_OVERHEAT_LIMITPOINT; + + StatusIconChangeTable[SC_HALLUCINATIONWALK_POSTDELAY] = SI_HALLUCINATIONWALK_POSTDELAY; + StatusIconChangeTable[SC_TOXIN] = SI_TOXIN; + StatusIconChangeTable[SC_PARALYSE] = SI_PARALYSE; + StatusIconChangeTable[SC_VENOMBLEED] = SI_VENOMBLEED; + StatusIconChangeTable[SC_MAGICMUSHROOM] = SI_MAGICMUSHROOM; + StatusIconChangeTable[SC_DEATHHURT] = SI_DEATHHURT; + StatusIconChangeTable[SC_PYREXIA] = SI_PYREXIA; + StatusIconChangeTable[SC_OBLIVIONCURSE] = SI_OBLIVIONCURSE; + StatusIconChangeTable[SC_LEECHESEND] = SI_LEECHESEND; + + StatusIconChangeTable[SC_SHIELDSPELL_DEF] = SI_SHIELDSPELL_DEF; + StatusIconChangeTable[SC_SHIELDSPELL_MDEF] = SI_SHIELDSPELL_MDEF; + StatusIconChangeTable[SC_SHIELDSPELL_REF] = SI_SHIELDSPELL_REF; + StatusIconChangeTable[SC_BANDING_DEFENCE] = SI_BANDING_DEFENCE; + + StatusIconChangeTable[SC_GLOOMYDAY_SK] = SI_GLOOMYDAY; + + StatusIconChangeTable[SC_CURSEDCIRCLE_ATKER] = SI_CURSEDCIRCLE_ATKER; + + StatusIconChangeTable[SC_STOMACHACHE] = SI_STOMACHACHE; + StatusIconChangeTable[SC_MYSTERIOUS_POWDER] = SI_MYSTERIOUS_POWDER; + StatusIconChangeTable[SC_MELON_BOMB] = SI_MELON_BOMB; + StatusIconChangeTable[SC_BANANA_BOMB] = SI_BANANA_BOMB; + StatusIconChangeTable[SC_BANANA_BOMB_SITDOWN] = SI_BANANA_BOMB_SITDOWN_POSTDELAY; + + //Genetics New Food Items Status Icons + StatusIconChangeTable[SC_SAVAGE_STEAK] = SI_SAVAGE_STEAK; + StatusIconChangeTable[SC_COCKTAIL_WARG_BLOOD] = SI_COCKTAIL_WARG_BLOOD; + StatusIconChangeTable[SC_MINOR_BBQ] = SI_MINOR_BBQ; + StatusIconChangeTable[SC_SIROMA_ICE_TEA] = SI_SIROMA_ICE_TEA; + StatusIconChangeTable[SC_DROCERA_HERB_STEAMED] = SI_DROCERA_HERB_STEAMED; + StatusIconChangeTable[SC_PUTTI_TAILS_NOODLES] = SI_PUTTI_TAILS_NOODLES; + + StatusIconChangeTable[SC_BOOST500] |= SI_BOOST500; + StatusIconChangeTable[SC_FULL_SWING_K] |= SI_FULL_SWING_K; + StatusIconChangeTable[SC_MANA_PLUS] |= SI_MANA_PLUS; + StatusIconChangeTable[SC_MUSTLE_M] |= SI_MUSTLE_M; + StatusIconChangeTable[SC_LIFE_FORCE_F] |= SI_LIFE_FORCE_F; + StatusIconChangeTable[SC_EXTRACT_WHITE_POTION_Z] |= SI_EXTRACT_WHITE_POTION_Z; + StatusIconChangeTable[SC_VITATA_500] |= SI_VITATA_500; + StatusIconChangeTable[SC_EXTRACT_SALAMINE_JUICE] |= SI_EXTRACT_SALAMINE_JUICE; + + // Elemental Spirit's 'side' status change icons. + StatusIconChangeTable[SC_CIRCLE_OF_FIRE] = SI_CIRCLE_OF_FIRE; + StatusIconChangeTable[SC_FIRE_CLOAK] = SI_FIRE_CLOAK; + StatusIconChangeTable[SC_WATER_SCREEN] = SI_WATER_SCREEN; + StatusIconChangeTable[SC_WATER_DROP] = SI_WATER_DROP; + StatusIconChangeTable[SC_WIND_STEP] = SI_WIND_STEP; + StatusIconChangeTable[SC_WIND_CURTAIN] = SI_WIND_CURTAIN; + StatusIconChangeTable[SC_SOLID_SKIN] = SI_SOLID_SKIN; + StatusIconChangeTable[SC_STONE_SHIELD] = SI_STONE_SHIELD; + StatusIconChangeTable[SC_PYROTECHNIC] = SI_PYROTECHNIC; + StatusIconChangeTable[SC_HEATER] = SI_HEATER; + StatusIconChangeTable[SC_TROPIC] = SI_TROPIC; + StatusIconChangeTable[SC_AQUAPLAY] = SI_AQUAPLAY; + StatusIconChangeTable[SC_COOLER] = SI_COOLER; + StatusIconChangeTable[SC_CHILLY_AIR] = SI_CHILLY_AIR; + StatusIconChangeTable[SC_GUST] = SI_GUST; + StatusIconChangeTable[SC_BLAST] = SI_BLAST; + StatusIconChangeTable[SC_WILD_STORM] = SI_WILD_STORM; + StatusIconChangeTable[SC_PETROLOGY] = SI_PETROLOGY; + StatusIconChangeTable[SC_CURSED_SOIL] = SI_CURSED_SOIL; + StatusIconChangeTable[SC_UPHEAVAL] = SI_UPHEAVAL; //Other SC which are not necessarily associated to skills. StatusChangeFlagTable[SC_ASPDPOTION0] = SCB_ASPD; @@ -573,7 +810,12 @@ void initChangeTables(void) StatusChangeFlagTable[SC_MERC_HPUP] |= SCB_MAXHP; StatusChangeFlagTable[SC_MERC_SPUP] |= SCB_MAXSP; StatusChangeFlagTable[SC_MERC_HITUP] |= SCB_HIT; - +#if RE_EDP + /** + * In RE EDP increases your atk and weapon atk + **/ + StatusChangeFlagTable[SC_EDP] |= SCB_BATK|SCB_WATK; +#endif if( !battle_config.display_hallucination ) //Disable Hallucination. StatusIconChangeTable[SC_HALLUCINATION] = SI_BLANK; } @@ -728,6 +970,7 @@ int status_damage(struct block_list *src,struct block_list *target,int hp, int s status_change_end(target, SC_HIDING, INVALID_TIMER); status_change_end(target, SC_CLOAKING, INVALID_TIMER); status_change_end(target, SC_CHASEWALK, INVALID_TIMER); + status_change_end(target, SC_CAMOUFLAGE, INVALID_TIMER); if ((sce=sc->data[SC_ENDURE]) && !sce->val4) { //Endure count is only reduced by non-players on non-gvg maps. //val4 signals infinite endure. [Skotlex] @@ -745,6 +988,8 @@ int status_damage(struct block_list *src,struct block_list *target,int hp, int s } if(sc->data[SC_DANCING] && (unsigned int)hp > status->max_hp>>2) status_change_end(target, SC_DANCING, INVALID_TIMER); + if(sc->data[SC_CLOAKINGEXCEED] && --(sc->data[SC_CLOAKINGEXCEED]->val2) <= 0) + status_change_end(target,SC_CLOAKINGEXCEED,-1); } unit_skillcastcancel(target, 2); } @@ -1176,6 +1421,8 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, int } if (sc->option&OPTION_CHASEWALK && skill_num != ST_CHASEWALK) return 0; + if(sc->option&OPTION_MOUNTING) + return 0;//New mounts can't attack nor use skills in the client; this check makes it cheat-safe [Ind] } if (target == NULL || target == src) //No further checking needed. return 1; @@ -1210,6 +1457,8 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, int if (tsc->option&hide_flag && !(status->mode&MD_BOSS) && (sd->special_state.perfect_hiding || !(status->mode&MD_DETECTOR))) return 0; + if( tsc->data[SC_CAMOUFLAGE] && !(status->mode&(MD_BOSS|MD_DETECTOR)) && !skill_num ) + return 0; } break; case BL_ITEM: //Allow targetting of items to pick'em up (or in the case of mobs, to loot them). @@ -1256,18 +1505,14 @@ int status_check_visibility(struct block_list *src, struct block_list *target) switch (target->type) { //Check for chase-walk/hiding/cloaking opponents. case BL_PC: - if(tsc->option&(OPTION_HIDE|OPTION_CLOAK|OPTION_CHASEWALK) && - !(status->mode&MD_BOSS) && - ( - ((TBL_PC*)target)->special_state.perfect_hiding || - !(status->mode&MD_DETECTOR) - )) + if( (tsc->option&(OPTION_HIDE|OPTION_CLOAK|OPTION_CHASEWALK) || tsc->data[SC_CAMOUFLAGE]) && !(status->mode&MD_BOSS) && + ( ((TBL_PC*)target)->special_state.perfect_hiding || !(status->mode&MD_DETECTOR) ) ) return 0; break; default: - if (tsc && tsc->option&(OPTION_HIDE|OPTION_CLOAK|OPTION_CHASEWALK) && - !(status->mode&(MD_BOSS|MD_DETECTOR))) - return 0; + if( tsc && (tsc->option&(OPTION_HIDE|OPTION_CLOAK|OPTION_CHASEWALK) || tsc->data[SC_CAMOUFLAGE]) && !(status->mode&(MD_BOSS|MD_DETECTOR)) ) + return 0; + } return 1; @@ -1288,7 +1533,24 @@ int status_base_amotion_pc(struct map_session_data* sd, struct status_data* stat // raw delay adjustment from bAspd bonus amotion+= sd->aspd_add; - +#if RRMODE + /** + * Bearing a shield decreases your ASPD by a fixed value depending on your class + **/ + if( sd->status.shield ) + amotion += re_job_db[pc_class2idx(sd->status.class_)][SHIELD_ASPD]; + /** + * RE Absolute aspd modifiers + **/ + if( sd->sc.count ) { + int i; + if ( sd->sc.data[i=SC_ASPDPOTION3] || + sd->sc.data[i=SC_ASPDPOTION2] || + sd->sc.data[i=SC_ASPDPOTION1] || + sd->sc.data[i=SC_ASPDPOTION0] ) + amotion -= sd->sc.data[i]->val1*10; + } +#endif return amotion; } @@ -1331,13 +1593,24 @@ static unsigned short status_base_atk(const struct block_list *bl, const struct static inline unsigned short status_base_matk_max(const struct status_data* status) { - return status->int_+(status->int_/5)*(status->int_/5); + #if RRMODE + return status->matk_max;//In RE maximum MATK signs weapon matk, which we store in this var + #else //Original Max MATK Formula + return status->int_+(status->int_/5)*(status->int_/5); + #endif } - +#if RRMODE +static inline unsigned short status_base_matk_min(const struct status_data* status, int lvl) +#else static inline unsigned short status_base_matk_min(const struct status_data* status) +#endif { - return status->int_+(status->int_/7)*(status->int_/7); + #if RRMODE //Renewal MATK Formula + return status->int_+(status->int_/2)+(status->dex/5)+(status->luk/3)+(lvl/4); + #else //Original Min MATK Formula + return status->int_+(status->int_/7)*(status->int_/7); + #endif } @@ -1350,14 +1623,31 @@ void status_calc_misc(struct block_list *bl, struct status_data *status, int lev status->hit = status->flee = status->def2 = status->mdef2 = status->cri = status->flee2 = 0; - +#if RRMODE + status->matk_min = status_base_matk_min(status, level); +#else status->matk_min = status_base_matk_min(status); +#endif status->matk_max = status_base_matk_max(status); +#if RRMODE //Renewal Formulas + status->hit += level + status->dex;//base level + ( every 1 dex = +1 hit ) + status->hit += status->luk / 3;//every 3 luk = +1 hit + status->flee += level + status->agi;//base level + ( every 1 agi = +1 flee ) + status->flee += status->luk/5;//every 5 luk = +1 flee + status->def2 += status->agi / 5;//every 5 agi = +1 def + status->def2 += status->vit / 2;//every 2 agi = +1 def + status->def2 += level / 2;//every 2 lvls = +1 def + status->mdef2 += status->int_ / 2;//every 2 int = +1 mdef + status->mdef2 += status->dex / 5;//every 5 dex = +1 mdef + status->mdef2 += level /4;//every 4 lvls = +1 mdef + //status->matk_min += level/4;//every 4 lvls = +1 matk +#else //Old Formulas status->hit += level + status->dex; status->flee += level + status->agi; status->def2 += status->vit; status->mdef2 += status->int_ + (status->vit>>1); +#endif if( bl->type&battle_config.enable_critical ) status->cri += status->luk*3 + 10; @@ -1374,6 +1664,10 @@ void status_calc_misc(struct block_list *bl, struct status_data *status, int lev status->batk = cap_value(temp, 0, USHRT_MAX); } else status->batk = status_base_atk(bl, status); +#if RRMODE //Renewal ATK Bonus Formula (after atk is calculated) + status->batk += status->luk / 3;//every 3 luk = +1ATK + status->batk += level / 4;//every 4 levels = +1 ATK +#endif if (status->cri) switch (bl->type) { case BL_MOB: @@ -1684,6 +1978,18 @@ static unsigned int status_base_pc_maxsp(struct map_session_data* sd, struct sta return val; } +#if RRMODE +/** + * Renewal Absolute Bonus to be applied after all bonuses were applied (so % bonuses on say, skills, don't affect them) + **/ +void status_renewal_postcalc(struct status_data* status, int flag) { + if( flag&SCB_FLEE ) + status->flee += 100; + if( flag&SCB_HIT ) + status->hit += 175; + return; +} +#endif //Calculates player data from scratch without counting SC adjustments. //Should be invoked whenever players raise stats, learn passive skills or change equipment. @@ -1909,7 +2215,6 @@ int status_calc_pc_(struct map_session_data* sd, bool first) int r,wlv = sd->inventory_data[index]->wlv; struct weapon_data *wd; struct weapon_atk *wa; - if (wlv >= MAX_REFINE_BONUS) wlv = MAX_REFINE_BONUS - 1; if(i == EQI_HAND_L && sd->status.inventory[index].equip == EQP_HAND_L) { @@ -1921,6 +2226,21 @@ int status_calc_pc_(struct map_session_data* sd, bool first) } wa->atk += sd->inventory_data[index]->atk; wa->atk2 = (r=sd->status.inventory[index].refine)*refinebonus[wlv][0]; + #if RRMODE + /** + * in RE matk_max is used as the weapon's matk. + * += is used so that two-wield weapons (in the case of, say, sinx) bonus stack. + **/ + status->matk_max += sd->inventory_data[index]->matk; + /** + * Refine Bonus + **/ + status->matk_max += sd->status.inventory[index].refine * refinebonus[wlv][0]; + /** + * In RE weapon level is used in several areas, this way we save performance + **/ + status->wlv = wlv; + #endif if((r-=refinebonus[wlv][2])>0) //Overrefine bonus. wd->overrefine = r*refinebonus[wlv][1]; @@ -2277,7 +2597,6 @@ int status_calc_pc_(struct map_session_data* sd, bool first) status->flee += skill*(sd->class_&JOBL_2 && (sd->class_&MAPID_BASEMASK) == MAPID_THIEF? 4 : 3); if((skill=pc_checkskill(sd,MO_DODGE))>0) status->flee += (skill*3)>>1; - // ----- EQUIPMENT-DEF CALCULATION ----- // Apply relative modifiers from equipment @@ -2429,7 +2748,6 @@ int status_calc_pc_(struct map_session_data* sd, bool first) sd->subele[ELE_WIND] += sc->data[SC_ARMOR_RESIST]->val4; } } - status_cpy(&sd->battle_status, status); // ----- CLIENT-SIDE REFRESH ----- @@ -2996,18 +3314,26 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag) if(flag&SCB_MATK) { //New matk + #if RRMODE + status->matk_min = status_base_matk_min(status,status_get_lv(bl)); + #else status->matk_min = status_base_matk_min(status); + #endif status->matk_max = status_base_matk_max(status); if( bl->type&BL_PC && sd->matk_rate != 100 ) { //Bonuses from previous matk + #if RRMODE == 0 //Only changed in non-re [RRInd] status->matk_max = status->matk_max * sd->matk_rate/100; + #endif status->matk_min = status->matk_min * sd->matk_rate/100; } status->matk_min = status_calc_matk(bl, sc, status->matk_min); - status->matk_max = status_calc_matk(bl, sc, status->matk_max); + #if RRMODE == 0 //Only changed in non-re [RRInd] + status->matk_max = status_calc_matk(bl, sc, status->matk_max); + #endif if(sc->data[SC_MAGICPOWER]) { //Store current matk values sc->mp_matk_min = status->matk_min; @@ -3088,14 +3414,15 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag) status->dmotion = status_calc_dmotion(bl, sc, b_status->dmotion); } } - +#if RRMODE + status_renewal_postcalc(status,flag); +#endif if(flag&(SCB_VIT|SCB_MAXHP|SCB_INT|SCB_MAXSP) && bl->type&BL_REGEN) status_calc_regen(bl, status, status_get_regen_data(bl)); if(flag&SCB_REGEN && bl->type&BL_REGEN) status_calc_regen_rate(bl, status_get_regen_data(bl), sc); } - /// Recalculates parts of an object's base status and battle status according to the specified flags. /// Also sends updates to the client wherever applicable. /// @param flag bitfield of values from enum scb_flag @@ -3265,6 +3592,11 @@ static unsigned short status_calc_str(struct block_list *bl, struct status_chang str += ((sc->data[SC_MARIONETTE2]->val3)>>16)&0xFF; if(sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_HIGH && str < 50) str = 50; + /** + * RK Rune Skill + **/ + if(sc->data[SC_GIANTGROWTH]) + str += 30; return (unsigned short)cap_value(str,0,USHRT_MAX); } @@ -3304,6 +3636,11 @@ static unsigned short status_calc_agi(struct block_list *bl, struct status_chang agi += ((sc->data[SC_MARIONETTE2]->val3)>>8)&0xFF; if(sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_HIGH && agi < 50) agi = 50; + /** + * Arch Bishop + **/ + if(sc->data[SC_ADORAMUS]) + agi -= sc->data[SC_ADORAMUS]->val2; return (unsigned short)cap_value(agi,0,USHRT_MAX); } @@ -3481,6 +3818,13 @@ static unsigned short status_calc_batk(struct block_list *bl, struct status_chan batk += sc->data[SC_GATLINGFEVER]->val3; if(sc->data[SC_MADNESSCANCEL]) batk += 100; +#if RE_EDP + /** + * in RE EDP increases your base atk by atk x Skill Level. + **/ + if( sc->data[SC_EDP] ) + batk = batk * sc->data[SC_EDP]->val1; +#endif return (unsigned short)cap_value(batk,0,USHRT_MAX); } @@ -3525,6 +3869,13 @@ static unsigned short status_calc_watk(struct block_list *bl, struct status_chan watk -= watk * sc->data[SC_STRIPWEAPON]->val2/100; if(sc->data[SC_MERC_ATKUP]) watk += sc->data[SC_MERC_ATKUP]->val2; +#if RE_EDP + /** + * in RE EDP increases your weapon atk by watk x Skill Level - 1 + **/ + if( sc->data[SC_EDP] && sc->data[SC_EDP]->val1 > 1 ) + watk = watk * (sc->data[SC_EDP]->val1 - 1); +#endif return (unsigned short)cap_value(watk,0,USHRT_MAX); } @@ -3563,6 +3914,8 @@ static signed short status_calc_critical(struct block_list *bl, struct status_ch critical += sc->data[SC_TRUESIGHT]->val2; if(sc->data[SC_CLOAKING]) critical += critical; + if(sc->data[SC_CAMOUFLAGE]) + critical += 100; return (short)cap_value(critical,10,SHRT_MAX); } @@ -3593,6 +3946,8 @@ static signed short status_calc_hit(struct block_list *bl, struct status_change hit += 20; // RockmanEXE; changed based on updated [Reddozen] if(sc->data[SC_MERC_HITUP]) hit += sc->data[SC_MERC_HITUP]->val2; + if(sc->data[SC_FEAR]) + hit -= hit * 20 / 100; return (short)cap_value(hit,1,SHRT_MAX); } @@ -3640,6 +3995,29 @@ static signed short status_calc_flee(struct block_list *bl, struct status_change flee += 10 + sc->data[SC_SPEED]->val1 * 10; if(sc->data[SC_MERC_FLEEUP]) flee += sc->data[SC_MERC_FLEEUP]->val2; + if(sc->data[SC_FEAR]) + flee -= flee * 20 / 100; + if(sc->data[SC_PARALYSE]) + flee -= flee / 10; // 10% Flee reduction + if(sc->data[SC_INFRAREDSCAN]) + flee -= flee * 30 / 100; + if( sc->data[SC__LAZINESS] ) + flee -= flee * sc->data[SC__LAZINESS]->val3 / 100; + if( sc->data[SC_GLOOMYDAY] ) + flee -= flee * sc->data[SC_GLOOMYDAY]->val2 / 100; + if( sc->data[SC_HALLUCINATIONWALK] ) + flee += sc->data[SC_HALLUCINATIONWALK]->val2; + if( sc->data[SC_SATURDAYNIGHTFEVER] ) + flee -= flee * (40 + 10 * sc->data[SC_SATURDAYNIGHTFEVER]->val1) / 100; + if( sc->data[SC_WATER_BARRIER] ) + flee -= sc->data[SC_WATER_BARRIER]->val3; + if( sc->data[SC_WIND_STEP_OPTION] ) + flee += flee * sc->data[SC_WIND_STEP_OPTION]->val2 / 100; + if( sc->data[SC_ZEPHYR] ) + flee += flee * sc->data[SC_ZEPHYR]->val2 / 100; + if( sc->data[SC_MARSHOFABYSS] ) + flee -= (9 * sc->data[SC_MARSHOFABYSS]->val3 / 10 + sc->data[SC_MARSHOFABYSS]->val2 / 10) * (bl->type == BL_MOB ? 2 : 1); + return (short)cap_value(flee,1,SHRT_MAX); } @@ -3696,6 +4074,26 @@ static signed char status_calc_def(struct block_list *bl, struct status_change * def -= def * sc->data[SC_STRIPSHIELD]->val2/100; if (sc->data[SC_FLING]) def -= def * (sc->data[SC_FLING]->val2)/100; + if( sc->data[SC_FREEZING] ) + def -= def * 3 / 10; + if( sc->data[SC_MARSHOFABYSS] ) + def -= def * ( 6 + 6 * sc->data[SC_MARSHOFABYSS]->val3/10 + (bl->type == BL_MOB ? 5 : 3) * sc->data[SC_MARSHOFABYSS]->val2/36 ) / 100; + if( sc->data[SC_ANALYZE] ) + def -= def * ( 14 * sc->data[SC_ANALYZE]->val1 ) / 100; + if( sc->data[SC__BLOODYLUST] ) + def -= def * 55 / 100; + if( sc->data[SC_FORCEOFVANGUARD] ) + def += def * 2 * sc->data[SC_FORCEOFVANGUARD]->val1 / 100; + if(sc->data[SC_SATURDAYNIGHTFEVER]) + def -= def * (10 + 10 * sc->data[SC_SATURDAYNIGHTFEVER]->val1) / 100; + if(sc->data[SC_EARTHDRIVE]) + def -= def * 25 / 100; + if( sc->data[SC_GT_CHANGE] ) + def -= def * sc->data[SC_GT_CHANGE]->val3 / 100; + if( sc->data[SC_ROCK_CRUSHER] ) + def -= def * sc->data[SC_ROCK_CRUSHER]->val2 / 100; + if( sc->data[SC_POWER_OF_GAIA] ) + def += def * sc->data[SC_POWER_OF_GAIA]->val2 / 100; return (signed char)cap_value(def,CHAR_MIN,CHAR_MAX); } @@ -3728,6 +4126,20 @@ static signed short status_calc_def2(struct block_list *bl, struct status_change + def2 * ( sc->data[SC_JOINTBEAT]->val2&BREAK_WAIST ? 25 : 0 ) / 100; if(sc->data[SC_FLING]) def2 -= def2 * (sc->data[SC_FLING]->val3)/100; + if( sc->data[SC_FREEZING] ) + def2 -= def2 * 3 / 10; + if(sc->data[SC_ANALYZE]) + def2 -= def2 * ( 14 * sc->data[SC_ANALYZE]->val1 ) / 100; + if( sc->data[SC_ECHOSONG] ) + def2 += def2 * sc->data[SC_ECHOSONG]->val2/100; + if( sc->data[SC_PRESTIGE] ) + def2 += def2 * sc->data[SC_PRESTIGE]->val1 / 100; + if( sc->data[SC_SHIELDSPELL_REF] && sc->data[SC_SHIELDSPELL_REF]->val1 == 1 ) + def2 += sc->data[SC_SHIELDSPELL_REF]->val2; + if( sc->data[SC_BANDING] && sc->data[SC_BANDING]->val2 > 0 ) + def2 += (5 + sc->data[SC_BANDING]->val1) * (sc->data[SC_BANDING]->val2); + if( sc->data[SC_GT_REVITALIZE] ) + def2 += def2 * ( 50 + 10 * sc->data[SC_GT_REVITALIZE]->val1 ) / 100; return (short)cap_value(def2,1,SHRT_MAX); } @@ -3755,6 +4167,16 @@ static signed char status_calc_mdef(struct block_list *bl, struct status_change mdef += sc->data[SC_ENDURE]->val1; if(sc->data[SC_CONCENTRATION]) mdef += 1; //Skill info says it adds a fixed 1 Mdef point. + if( sc->data[SC_MARSHOFABYSS] ) + mdef -= mdef * ( 6 + 6 * sc->data[SC_MARSHOFABYSS]->val3/10 + (bl->type == BL_MOB ? 5 : 3) * sc->data[SC_MARSHOFABYSS]->val2/36 ) / 100; + if(sc->data[SC_ANALYZE]) + mdef -= mdef * ( 14 * sc->data[SC_ANALYZE]->val1 ) / 100; + if(sc->data[SC_SYMPHONYOFLOVER]) + mdef += mdef * sc->data[SC_SYMPHONYOFLOVER]->val2 / 100; + if(sc->data[SC_GT_CHANGE]) + mdef -= mdef * sc->data[SC_GT_CHANGE]->val3 / 100; + if(sc->data[SC_WATER_BARRIER]) + mdef += sc->data[SC_WATER_BARRIER]->val2; return (signed char)cap_value(mdef,CHAR_MIN,CHAR_MAX); } @@ -3768,6 +4190,8 @@ static signed short status_calc_mdef2(struct block_list *bl, struct status_chang return 0; if(sc->data[SC_MINDBREAKER]) mdef2 -= mdef2 * sc->data[SC_MINDBREAKER]->val3/100; + if(sc->data[SC_ANALYZE]) + mdef2 -= mdef2 * ( 14 * sc->data[SC_ANALYZE]->val1 ) / 100; return (short)cap_value(mdef2,1,SHRT_MAX); } @@ -3794,9 +4218,17 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha if( sc->data[SC_FUSION] ) val = 25; - else - if( sd && pc_isriding(sd) ) - val = 25; + else if( sd ) { + if( pc_isriding(sd) || sd->sc.option&(OPTION_DRAGON|OPTION_MOUNTING) ) + val = 25;//Same bonus + else if( sd->sc.option&OPTION_WUGRIDER ) + val = 15 + 5 * pc_checkskill(sd, RA_WUGRIDER); + else if( sd->sc.option&OPTION_MADOGEAR ) { + val = (- 10 * (5 - pc_checkskill(sd,NC_MADOLICENCE))); + if( sc->data[SC_ACCELERATION] ) + val += 25; + } + } speed_rate -= val; } @@ -3821,7 +4253,7 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha if( sc->data[SC_DECREASEAGI] ) val = max( val, 25 ); - if( sc->data[SC_QUAGMIRE] ) + if( sc->data[SC_QUAGMIRE] || sc->data[SC_HALLUCINATIONWALK_POSTDELAY]) val = max( val, 50 ); if( sc->data[SC_DONTFORGETME] ) val = max( val, sc->data[SC_DONTFORGETME]->val3 ); @@ -3845,6 +4277,24 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha val = max( val, sc->data[SC_SUITON]->val3 ); if( sc->data[SC_SWOO] ) val = max( val, 300 ); + if( sc->data[SC_FREEZING] ) + val = max( val, 70 ); + if( sc->data[SC_MARSHOFABYSS] ) + val = max( val, 40 + 10 * sc->data[SC_MARSHOFABYSS]->val1 ); + if( sc->data[SC_CAMOUFLAGE] && (sc->data[SC_CAMOUFLAGE]->val3&1) == 0 ) + val = max( val, sc->data[SC_CAMOUFLAGE]->val1 < 3 ? 300 : 25 * (6 - sc->data[SC_CAMOUFLAGE]->val1) ); + if( sc->data[SC__GROOMY] ) + val = max( val, sc->data[SC__GROOMY]->val2); + if( sc->data[SC_STEALTHFIELD_MASTER] ) + val = max( val, 30 ); + if( sc->data[SC_BANDING_DEFENCE] ) + val = max( val, sc->data[SC_BANDING_DEFENCE]->val1 );//+90% walking speed. + if( sc->data[SC_ROCK_CRUSHER_ATK] ) + val = max( val, sc->data[SC_ROCK_CRUSHER_ATK]->val2 ); + if( sc->data[SC_POWER_OF_GAIA] ) + val = max( val, sc->data[SC_POWER_OF_GAIA]->val2 ); + if( sc->data[SC_MELON_BOMB] ) + val = max( val, sc->data[SC_MELON_BOMB]->val1 ); if( sd && sd->speed_rate + sd->speed_add_rate > 0 ) // permanent item-based speedup val = max( val, sd->speed_rate + sd->speed_add_rate ); @@ -3912,7 +4362,12 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha /// Note that the scale of aspd_rate is 1000 = 100%. static short status_calc_aspd_rate(struct block_list *bl, struct status_change *sc, int aspd_rate) { +#if RRMODE == 0 + /** + * this variable is not used unless in non-RE + **/ int i; +#endif if(!sc || !sc->count) return cap_value(aspd_rate,0,SHRT_MAX); @@ -3981,12 +4436,16 @@ static short status_calc_aspd_rate(struct block_list *bl, struct status_change * else if(sc->data[SC_MADNESSCANCEL]) aspd_rate -= 200; } - +#if RRMODE == 0 + /** + * in RE they give a fixed boost -- we do so along SERVICE4U in status_base_amotion_pc + **/ if(sc->data[i=SC_ASPDPOTION3] || sc->data[i=SC_ASPDPOTION2] || sc->data[i=SC_ASPDPOTION1] || sc->data[i=SC_ASPDPOTION0]) aspd_rate -= sc->data[i]->val2; +#endif if(sc->data[SC_DONTFORGETME]) aspd_rate += 10 * sc->data[SC_DONTFORGETME]->val2; if(sc->data[SC_LONGING]) @@ -4007,6 +4466,41 @@ static short status_calc_aspd_rate(struct block_list *bl, struct status_change * if( sc->data[SC_JOINTBEAT]->val2&BREAK_KNEE ) aspd_rate += 100; } + if( sc->data[SC_FREEZING] ) + aspd_rate += 300; + if( sc->data[SC_HALLUCINATIONWALK_POSTDELAY] ) + aspd_rate += 500; + if( sc->data[SC_FIGHTINGSPIRIT] && sc->data[SC_FIGHTINGSPIRIT]->val2 ) + aspd_rate -= sc->data[SC_FIGHTINGSPIRIT]->val2; + if( sc->data[SC_PARALYSE] ) + aspd_rate += 100; + if( sc->data[SC__BODYPAINT] ) + aspd_rate += aspd_rate * (20 + 5 * sc->data[SC__BODYPAINT]->val1) / 100; + if( sc->data[SC__INVISIBILITY] ) + aspd_rate += aspd_rate * sc->data[SC__INVISIBILITY]->val2 / 100; + if( sc->data[SC__GROOMY] ) + aspd_rate += aspd_rate * sc->data[SC__GROOMY]->val2 / 100; + if( sc->data[SC_SWINGDANCE] ) + aspd_rate -= aspd_rate * sc->data[SC_SWINGDANCE]->val2 / 100; + if( sc->data[SC_DANCEWITHWUG] ) + aspd_rate -= aspd_rate * sc->data[SC_DANCEWITHWUG]->val3 / 100; + if( sc->data[SC_GLOOMYDAY] ) + aspd_rate += aspd_rate * sc->data[SC_GLOOMYDAY]->val3 / 100; + if( sc->data[SC_EARTHDRIVE] ) + aspd_rate += aspd_rate * 25 / 100; + /*As far I tested the skill there is no ASPD addition is applied. [Jobbie] */ + //if( sc->data[SC_RAISINGDRAGON] ) + // aspd_rate -= 100; //FIXME: Need official ASPD bonus of this status. [Jobbie] + if( sc->data[SC_GT_CHANGE] ) + aspd_rate -= aspd_rate * (sc->data[SC_GT_CHANGE]->val2/200) / 100; + if( sc->data[SC_GT_REVITALIZE] ) + aspd_rate -= aspd_rate * sc->data[SC_GT_REVITALIZE]->val2 / 100; + if( sc->data[SC_MELON_BOMB] ) + aspd_rate += aspd_rate * sc->data[SC_MELON_BOMB]->val1 / 100; + if( sc->data[SC_BOOST500] ) + aspd_rate -= aspd_rate * sc->data[SC_BOOST500]->val1/100; + if(sc->data[SC_EXTRACT_SALAMINE_JUICE]) + aspd_rate -= aspd_rate * sc->data[SC_EXTRACT_SALAMINE_JUICE]->val1/100; return (short)cap_value(aspd_rate,0,SHRT_MAX); } @@ -4020,7 +4514,7 @@ static unsigned short status_calc_dmotion(struct block_list *bl, struct status_c return 0; if( sc->data[SC_CONCENTRATION] ) return 0; - if( sc->data[SC_RUN] ) + if( sc->data[SC_RUN] || sc->data[SC_WUGDASH] ) return 0; return (unsigned short)cap_value(dmotion,0,USHRT_MAX); @@ -4045,6 +4539,12 @@ static unsigned int status_calc_maxhp(struct block_list *bl, struct status_chang if(sc->data[SC_MERC_HPUP]) maxhp += maxhp * sc->data[SC_MERC_HPUP]->val2/100; + if(sc->data[SC_EPICLESIS]) + maxhp += maxhp * 5 * sc->data[SC_EPICLESIS]->val1 / 100; + if(sc->data[SC_VENOMBLEED]) + maxhp -= maxhp * 15 / 100; + + return cap_value(maxhp,1,UINT_MAX); } @@ -4078,6 +4578,9 @@ static unsigned char status_calc_element(struct block_list *bl, struct status_ch return ELE_UNDEAD; if(sc->data[SC_ELEMENTALCHANGE]) return sc->data[SC_ELEMENTALCHANGE]->val2; + if(sc->data[SC_SHAPESHIFT]) + return sc->data[SC_SHAPESHIFT]->val2; + return (unsigned char)cap_value(element,0,UCHAR_MAX); } @@ -4096,6 +4599,8 @@ static unsigned char status_calc_element_lv(struct block_list *bl, struct status return 1; if(sc->data[SC_ELEMENTALCHANGE]) return sc->data[SC_ELEMENTALCHANGE]->val1; + if(sc->data[SC_SHAPESHIFT]) + return 1; return (unsigned char)cap_value(lv,1,4); } @@ -4567,7 +5072,7 @@ void status_change_init(struct block_list *bl) //the flag values are the same as in status_change_start. int status_get_sc_def(struct block_list *bl, enum sc_type type, int rate, int tick, int flag) { - int sc_def, tick_def = 0; + int sc_def = 0, tick_def = 0; struct status_data* status; struct status_change* sc; struct map_session_data *sd; @@ -4618,6 +5123,7 @@ int status_get_sc_def(struct block_list *bl, enum sc_type type, int rate, int ti sc_def = 3 +status->int_; break; case SC_DECREASEAGI: + case SC_ADORAMUS://Arch Bishop if (sd) tick>>=1; //Half duration for players. case SC_STONE: case SC_FREEZE: @@ -4647,6 +5153,40 @@ int status_get_sc_def(struct block_list *bl, enum sc_type type, int rate, int ti if (sd) //Duration greatly reduced for players. tick /= 15; //No defense against it (buff). + /** + * 3rd stuff + **/ + case SC_WHITEIMPRISON: + rate -= (status_get_lv(bl) / 5 + status->vit / 4 + status->agi / 10)*100; // Lineal Reduction of Rate + //tick_def = (int)floor(log10(status_get_lv(bl)) * 10.); + break; + case SC_BURNING: + // From iROwiki : http://forums.irowiki.org/showpost.php?p=577240&postcount=583 + tick -= 50*status->luk + 60*status->int_ + 170*status->vit; + tick = max(tick,10000); // Minimum Duration 10s. + break; + case SC_FREEZING: + tick -= 1000 * ((status->vit + status->dex) / 20); + tick = max(tick,10000); // Minimum Duration 10s. + break; + case SC_OBLIVIONCURSE: + sc_def = status->int_*4/5; //FIXME: info said this is the formula of status chance. Check again pls. [Jobbie] + break; + case SC_ELECTRICSHOCKER: + case SC_BITE: + { + if( bl->type == BL_MOB ) + tick -= 1000 * (status->agi/10); + if( sd && type != SC_ELECTRICSHOCKER ) + tick >>= 1; + } + break; + case SC_CRYSTALIZE: + tick -= (1000*(status->vit/10))+(status_get_lv(bl)/50); + break; + case SC_VACUUM_EXTREME: + tick -= 50*status->str; + break; default: //Effect that cannot be reduced? Likely a buff. if (!(rand()%10000 < rate)) @@ -4749,7 +5289,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val struct status_change_entry* sce; struct status_data *status; struct view_data *vd; - int opt_flag, calc_flag, undead_flag; + int opt_flag, calc_flag, undead_flag, val_flag = 0, tick_time = 0; nullpo_ret(bl); sc = status_get_sc(bl); @@ -4787,16 +5327,27 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val //Check for inmunities / sc fails switch (type) { - case SC_FREEZE: case SC_STONE: + if(sc->data[SC_POWER_OF_GAIA]) + return 0; + case SC_FREEZE: //Undead are immune to Freeze/Stone if (undead_flag && !(flag&1)) return 0; case SC_SLEEP: case SC_STUN: + case SC_FREEZING: if (sc->opt1) return 0; //Cannot override other opt1 status changes. [Skotlex] + if((type == SC_FREEZE || type == SC_FREEZING) && sc->data[SC_WARMER]) + return 0; //Immune to Frozen and Freezing status if under Warmer status. [Jobbie] + break; + + case SC_BURNING: + if(sc->opt1 || sc->data[SC_FREEZING]) + return 0; break; + case SC_SIGNUMCRUCIS: //Only affects demons and undead element (but not players) if((!undead_flag && status->race!=RC_DEMON) || bl->type == BL_PC) @@ -4813,12 +5364,16 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_OVERTHRUST: if (sc->data[SC_MAXOVERTHRUST]) return 0; //Overthrust can't take effect if under Max Overthrust. [Skotlex] + case SC_MAXOVERTHRUST: + if( sc->option&OPTION_MADOGEAR ) + return 0;//Overthrust and Overthrust Max cannot be used on Mado Gear [Ind] break; case SC_ADRENALINE: if(sd && !pc_check_weapontype(sd,skill_get_weapontype(BS_ADRENALINE))) return 0; if (sc->data[SC_QUAGMIRE] || - sc->data[SC_DECREASEAGI] + sc->data[SC_DECREASEAGI] || + sc->option&OPTION_MADOGEAR //Adrenaline doesn't affect Mado Gear [Ind] ) return 0; break; @@ -4830,6 +5385,9 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val ) return 0; break; + case SC_MAGNIFICAT: + if( sc->option&OPTION_MADOGEAR ) //Mado is immune to magnificat + break; case SC_ONEHAND: case SC_MERC_QUICKEN: case SC_TWOHANDQUICKEN: @@ -4844,6 +5402,8 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_ASSNCROS: if (sc->data[SC_QUAGMIRE]) return 0; + if(sc->option&OPTION_MADOGEAR) + return 0;//Mado is immune to increase agi, wind walk, cart boost, etc (others above) [Ind] break; case SC_CLOAKING: //Avoid cloaking with no wall and low skill level. [Skotlex] @@ -4995,6 +5555,10 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val if (sc->data[SC_LUKFOOD] && sc->data[SC_LUKFOOD]->val1 > val1) return 0; break; + case SC_CAMOUFLAGE: + if( sd && pc_checkskill(sd, RA_CAMOUFLAGE) < 3 && !skill_check_camouflage(bl,NULL) ) + return 0; + break; } //Check for BOSS resistances @@ -5003,8 +5567,6 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val return 0; switch (type) { case SC_BLESSING: - if (!undead_flag && status->race!=RC_DEMON) - break; case SC_DECREASEAGI: case SC_PROVOKE: case SC_COMA: @@ -5013,6 +5575,26 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_RICHMANKIM: case SC_ROKISWEIL: case SC_FOGWALL: + case SC_FREEZING: + case SC_BURNING: // Place here until we have info about its behavior on Boss-monsters. [pakpil] + case SC_MARSHOFABYSS: + case SC_ADORAMUS: + + // Exploid prevention - kRO Fix + case SC_PYREXIA: + case SC_DEATHHURT: + case SC_TOXIN: + case SC_PARALYSE: + case SC_VENOMBLEED: + case SC_MAGICMUSHROOM: + case SC_OBLIVIONCURSE: + case SC_LEECHESEND: + + // Ranger Effects + case SC_BITE: + case SC_ELECTRICSHOCKER: + case SC_MAGNETICFIELD: + return 0; } } @@ -5048,6 +5630,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val status_change_end(bl, SC_TWOHANDQUICKEN, INVALID_TIMER); status_change_end(bl, SC_ONEHAND, INVALID_TIMER); status_change_end(bl, SC_MERC_QUICKEN, INVALID_TIMER); + status_change_end(bl, SC_ACCELERATION, INVALID_TIMER); break; case SC_ONEHAND: //Removes the Aspd potion effect, as reported by Vicious. [Skotlex] @@ -5286,6 +5869,8 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_EDP: // [Celest] val2 = val1 + 2; //Chance to Poison enemies. val3 = 50*(val1+1); //Damage increase (+50 +50*lv%) + if( sd )//[Ind] - iROwiki says each level increases its duration by 3 seconds + tick += pc_checkskill(sd,GC_RESEARCHNEWPOISON)*3000; break; case SC_POISONREACT: val2=(val1+1)/2 + val1/10; // Number of counters [Skotlex] @@ -5421,10 +6006,10 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val //val3 : Brings the skilllv (merged into val1 here) //val4 : Partner if (val1 == CG_MOONLIT) - clif_status_change(bl,SI_MOONLIT,1,tick); + clif_status_change(bl,SI_MOONLIT,1,tick,0, 0, 0); val1|= (val3<<16); val3 = tick/1000; //Tick duration - tick = 1000; + tick_time = 1000; // [GodLesZ] tick time break; case SC_LONGING: val2 = 500-100*val1; //Aspd penalty. @@ -5432,9 +6017,14 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_EXPLOSIONSPIRITS: val2 = 75 + 25*val1; //Cri bonus break; +#if RRMODE == 0 + /** + * Only in non-RE it's var is changed + **/ case SC_ASPDPOTION0: case SC_ASPDPOTION1: case SC_ASPDPOTION2: +#endif case SC_ASPDPOTION3: val2 = 50*(2+type-SC_ASPDPOTION0); break; @@ -5455,6 +6045,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val clif_changelook(bl,LOOK_CLOTHES_COLOR,vd->cloth_color); break; case SC_NOCHAT: + // [GodLesZ] FIXME: is this correct? a hardcoded interval of 60sec? what about configuration ?_? tick = 60000; val1 = battle_config.manner_system; //Mute filters. if (sd) @@ -5486,7 +6077,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_POISON: /* “Å */ val3 = tick/1000; //Damage iterations if(val3 < 1) val3 = 1; - tick = 1000; + tick_time = 1000; // [GodLesZ] tick time //val4: HP damage if (bl->type == BL_PC) val4 = (type == SC_DPOISON) ? 3 + status->max_hp/50 : 3 + status->max_hp*3/200; @@ -5500,7 +6091,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_BLEEDING: val4 = tick/10000; if (!val4) val4 = 1; - tick = 10000; + tick_time = 10000; // [GodLesZ] tick time break; case SC_S_LIFEPOTION: case SC_L_LIFEPOTION: @@ -5511,7 +6102,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val if( val2 < 1 ) val2 = 1; if( (val4 = tick/(val2 * 1000)) < 1 ) val4 = 1; - tick = val2 * 1000; // val2 = Seconds between heals + tick_time = val2 * 1000; // [GodLesZ] tick time break; case SC_BOSSMAPINFO: if( sd != NULL ) @@ -5525,12 +6116,12 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val val1 = boss_md->bl.id; if( (val4 = tick/1000) < 1 ) val4 = 1; - tick = 1000; + tick_time = 1000; // [GodLesZ] tick time } break; case SC_HIDING: val2 = tick/1000; - tick = 1000; + tick_time = 1000; // [GodLesZ] tick time val3 = 0; // unused, previously speed adjustment val4 = val1+3; //Seconds before SP substraction happen. break; @@ -5560,7 +6151,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_SIGHTBLASTER: val3 = skill_get_splash(val2, val1); //Val2 should bring the skill-id. val2 = tick/250; - tick = 10; + tick_time = 10; // [GodLesZ] tick time break; //Permanent effects. @@ -5631,7 +6222,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val val2 = 12; //SP cost val4 = 10000; //Decrease at 10secs intervals. val3 = tick/val4; - tick = val4; + tick_time = val4; // [GodLesZ] tick time break; case SC_PARRYING: val2 = 20 + val1*3; //Block Chance @@ -5654,13 +6245,13 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val if (!val4) val4 = skill_get_time2(status_sc2skill(type),val1); if (!val4) val4 = 10000; //Val4 holds damage interval val3 = tick/val4; //val3 holds skill duration - tick = val4; + tick_time = val4; // [GodLesZ] tick time break; case SC_GOSPEL: if(val4 == BCT_SELF) { // self effect val2 = tick/10000; - tick = 10000; + tick_time = 10000; // [GodLesZ] tick time status_change_clear_buffs(bl,3); //Remove buffs/debuffs } break; @@ -5926,7 +6517,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_SKA: val2 = tick/1000; val3 = rand()%100; //Def changes randomly every second... - tick = 1000; + tick_time = 1000; // [GodLesZ] tick time break; case SC_JAILED: //Val1 is duration in minutes. Use INT_MAX to specify 'unlimited' time. @@ -6062,6 +6653,487 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_SPL_MATK: val2 = 2; // Splendide group break; + /** + * General + **/ + case SC_FEAR: + val2 = 2; + val4 = tick / 1000; + tick_time = 1000; // [GodLesZ] tick time + break; + case SC_BURNING: + val4 = tick / 2000; // Total Ticks to Burn!! + tick_time = 2000; // [GodLesZ] tick time + break; + /** + * Rune Knight + **/ + case SC_DEATHBOUND: + val2 = 500 + 100 * val1; + break; + case SC_FIGHTINGSPIRIT: + val_flag |= 1|2; + break; + case SC_ABUNDANCE: + val4 = tick / 10000; + tick_time = 10000; // [GodLesZ] tick time + break; + case SC_GIANTGROWTH: + val2 = 10; // Triple damage success rate. + break; + /** + * Arch Bishop + **/ + case SC_RENOVATIO: + val4 = tick / 5000; + tick_time = 5000; + break; + case SC_SECRAMENT: + val2 = 10 * val1; + break; + case SC_VENOMIMPRESS: + val2 = 10 * val1; + val_flag |= 1|2; + break; + case SC_POISONINGWEAPON: + val_flag |= 1|2|4; + break; + case SC_WEAPONBLOCKING: + val2 = 10 + 2 * val1; // Chance + val4 = tick / 3000; + tick_time = 3000; // [GodLesZ] tick time + val_flag |= 1|2; + break; + case SC_TOXIN: + val4 = tick / 10000; + tick_time = 10000; // [GodLesZ] tick time + break; + case SC_MAGICMUSHROOM: + val4 = tick / 4000; + tick_time = 4000; // [GodLesZ] tick time + break; + case SC_PYREXIA: + val4 = tick / 3000; + tick_time = 4000; // [GodLesZ] tick time + break; + case SC_LEECHESEND: + val4 = tick / 1000; + tick_time = 1000; // [GodLesZ] tick time + break; + case SC_OBLIVIONCURSE: + val4 = tick / 3000; + tick_time = 3000; // [GodLesZ] tick time + break; + case SC_ROLLINGCUTTER: + val_flag |= 1; + break; + case SC_CLOAKINGEXCEED: + val2 = ( val1 + 1 ) / 2; // Hits + val3 = ( val1 - 1 ) * 10; // Walk speed + val_flag |= 1|2|4; + if (bl->type == BL_PC) + val4 |= battle_config.pc_cloak_check_type&7; + else + val4 |= battle_config.monster_cloak_check_type&7; + tick_time = 1000; // [GodLesZ] tick time + break; + case SC_HALLUCINATIONWALK: + val2 = 50 * val1; // Evasion rate of physical attacks. Flee + val3 = 10 * val1; // Evasion rate of magical attacks. + val_flag |= 1|2|4; + break; + case SC_WHITEIMPRISON: + status_change_end(bl, SC_BURNING, -1); + status_change_end(bl, SC_FREEZING, -1); + status_change_end(bl, SC_FREEZE, -1); + status_change_end(bl, SC_STONE, -1); + break; + case SC_FREEZING: + status_change_end(bl, SC_BURNING, -1); + break; + case SC_READING_SB: + // val2 = sp reduction per second + tick_time = 1000; // [GodLesZ] tick time + break; + case SC_SPHERE_1: + case SC_SPHERE_2: + case SC_SPHERE_3: + case SC_SPHERE_4: + case SC_SPHERE_5: + if( !sd ) + return 0; // Should only work on players. + val4 = tick / 1000; + if( val4 < 1 ) + val4 = 1; + tick_time = 1000; // [GodLesZ] tick time + val_flag |= 1; + break; + case SC_SHAPESHIFT: + switch( val1 ) + { + case 1: val2 = ELE_FIRE; break; + case 2: val2 = ELE_EARTH; break; + case 3: val2 = ELE_WIND; break; + case 4: val2 = ELE_WATER; break; + } + break; + case SC_ELECTRICSHOCKER: + case SC_CRYSTALIZE: + val4 = tick / 1000; + if( val4 < 1 ) + val4 = 1; + tick_time = 1000; // [GodLesZ] tick time + break; + case SC_CAMOUFLAGE: + //val3 |= battle_config.pc_camouflage_check_type&7; + tick_time = 1000; // [GodLesZ] tick time + break; + case SC_WUGDASH: + val4 = gettick(); //Store time at which you started running. + tick = -1; + break; + case SC__SHADOWFORM: + { + //struct map_session_data * s_sd = map_id2sd(val2); + //if( s_sd ) + // s_sd->shadowform_id = bl->id; + val4 = tick / 1000; + val_flag |= 1|2|4; + tick_time = 1000; // [GodLesZ] tick time + } + break; + case SC__STRIPACCESSORY: + if (!sd) + val2 = 20; + break; + case SC__INVISIBILITY: + val2 = 50 - 10 * val1; // ASPD + val3 = 20 * val1; // CRITICAL + val4 = tick / 1000; + tick_time = 1000; // [GodLesZ] tick time + val_flag |= 1|2; + break; + case SC__ENERVATION: + val2 = 20 + 10 * val1; // ATK Reduction + val_flag |= 1|2; + if( sd ) pc_delspiritball(sd,sd->spiritball,0); + break; + case SC__GROOMY: + val2 = 20 + 10 * val1; //ASPD. Need to confirm if Movement Speed reduction is the same. [Jobbie] + val3 = 20 * val1; //HIT + val_flag |= 1|2|4; + if( sd ) + { // Removes Animals + //if( pc_isriding(sd,OPTION_RIDING|OPTION_RIDING_DRAGON|OPTION_RIDING_WUG) ) pc_setriding(sd, 0); + //if( pc_iswarg(sd) ) pc_setoption(sd, sd->sc.option&~OPTION_WUG); + if( pc_isfalcon(sd) ) pc_setoption(sd, sd->sc.option&~OPTION_FALCON); + if( sd->status.pet_id > 0 ) pet_menu(sd, 3); + if( merc_is_hom_active(sd->hd) ) merc_hom_vaporize(sd,1); + if( sd->md ) merc_delete(sd->md,3); + } + break; + case SC__LAZINESS: + val2 = 10 + 10 * val1; // Cast reduction + val3 = 10 * val1; // Flee Reduction + val_flag |= 1|2|4; + break; + case SC__UNLUCKY: + val2 = 10 * val1; // Crit and Flee2 Reduction + val_flag |= 1|2|4; + break; + case SC__WEAKNESS: + val2 = 10 * val1; + val_flag |= 1|2; + skill_strip_equip(bl,EQP_WEAPON|EQP_SHIELD,100,val1,tick); + break; + case SC__BLOODYLUST: + val_flag |= 1|2; + break; + case SC_GN_CARTBOOST: + if( val1 < 3 ) + val2 = 50; + else if( val1 < 5 ) + val2 = 75; + else + val2 = 100; + break; + case SC_PROPERTYWALK: + val_flag |= 1|2; + val3 = 0; + break; + case SC_WARMER: + status_change_end(bl, SC_FREEZE, -1); + status_change_end(bl, SC_FREEZING, -1); + status_change_end(bl, SC_CRYSTALIZE, -1); + break; + case SC_STRIKING: + val4 = tick / 1000; + tick_time = 1000; // [GodLesZ] tick time + break; + case SC_BLOODSUCKER: + val4 = tick / 1000; + tick_time = 1000; // [GodLesZ] tick time + break; + case SC_SWINGDANCE: + val2 = 4 * val1; // Walk speed and aspd reduction. + break; + case SC_SYMPHONYOFLOVER: + case SC_RUSHWINDMILL: + case SC_ECHOSONG: + val2 = 6 * val1; + val2 += val3; //Adding 1% * Lesson Bonus + val2 += (int)(val4*2/10); //Adding 0.2% per JobLevel + break; + case SC_MOONLITSERENADE: + val2 = 10 * val1; + break; + case SC_HARMONIZE: + val2 = 3 + 2 * val1; + break; + case SC_VOICEOFSIREN: + val4 = tick / 2000; + tick_time = 2000; // [GodLesZ] tick time + break; + case SC_DEEPSLEEP: + val4 = tick / 2000; + tick_time = 2000; // [GodLesZ] tick time + break; + case SC_SIRCLEOFNATURE: + val2 = 1 + val1; //SP consume + val3 = 40 * val1; //HP recovery + val4 = tick / 1000; + tick_time = 1000; // [GodLesZ] tick time + break; + case SC_SONGOFMANA: + val3 = 10 + (2 * val2); + val4 = tick/3000; + tick_time = 3000; // [GodLesZ] tick time + break; + case SC_SATURDAYNIGHTFEVER: + if (!val4) val4 = skill_get_time2(status_sc2skill(type),val1); + if (!val4) val4 = 3000; + val3 = tick/val4; + tick_time = val4; // [GodLesZ] tick time + break; + case SC_GLOOMYDAY: + val2 = 3 + 2 * val1; // Flee reduction. + val3 = 3 * val1; // ASPD reduction. + break; + case SC_SITDOWN_FORCE: + case SC_BANANA_BOMB_SITDOWN: + if( sd && !pc_issit(sd) ) + { + pc_setsit(sd); + skill_sit(sd,1); + clif_sitting(bl); + } + break; + case SC_DANCEWITHWUG: + val3 = (5 * val1) + (1 * val2); //Still need official value. + break; + case SC_LERADSDEW: + val3 = (5 * val1) + (1 * val2); + break; + case SC_MELODYOFSINK: + val3 = (5 * val1) + (1 * val2); + break; + case SC_BEYONDOFWARCRY: + val3 = (5 * val1) + (1 * val2); + break; + case SC_UNLIMITEDHUMMINGVOICE: + { + struct unit_data *ud = unit_bl2ud(bl); + if( ud == NULL ) return 0; + ud->state.skillcastcancel = 0; + val3 = 15 - (2 * val2); + } + break; + case SC_REFLECTDAMAGE: + val2 = 15 + 5 * val1; + val3 = (val1==5)?20:(val1+4)*2; // SP consumption + val4 = tick/10000; + tick_time = 10000; // [GodLesZ] tick time + break; + case SC_FORCEOFVANGUARD: // This is not the official way to handle it but I think we should use it. [pakpil] + val2 = 20 + 12 * (val1 - 1); // Chance + val3 = 5 + (2 * val1); // Max rage counters + tick_time = 6000; // [GodLesZ] tick time + val_flag |= 1|2|4; + break; + case SC_EXEEDBREAK: + val1 *= 150; // 150 * skill_lv + if( sd ) + { // Chars. + struct item_data *id = sd->inventory_data[sd->equip_index[EQI_HAND_R]]; + if( id ) val1 += (id->weight/10 * id->wlv * status_get_lv(bl) / 100); // (weapon_weight * weapon_level * base_lvl)/100 + val1 += 15 * sd->status.job_level; // 15 * job_lvl + } + else // Mobs + val1 += (400 * status_get_lv(bl) / 100) + (15 * (status_get_lv(bl) / 2)); // About 1138% at mob_lvl 99. Is an aproximation to a standard weapon. [pakpil] + break; + + case SC_PRESTIGE: // Bassed on suggested formula in iRO Wiki and some test, still need more test. [pakpil] + val2 = ((status->int_ + status->luk) / 6) + 5; // Chance to evade magic damage. + val1 *= 15; // Defence added + if( sd ) + val1 += 10 * pc_checkskill(sd,CR_DEFENDER); + val_flag |= 1|2; + break; + case SC_BANDING: + tick_time = 5000; // [GodLesZ] tick time + val_flag |= 1; + break; + case SC_SHIELDSPELL_DEF: + case SC_SHIELDSPELL_MDEF: + case SC_SHIELDSPELL_REF: + val_flag |= 1|2; + break; + case SC_MAGNETICFIELD: + val3 = tick / 1000; + tick_time = 1000; // [GodLesZ] tick time + break; + case SC_INSPIRATION: + if( sd ) + { + val2 = (40 * val1) + (3 * sd->status.job_level); // ATK bonus + val3 = (sd->status.job_level / 10) * 2 + 12; // All stat bonus + } + val4 = tick / 1000; + tick_time = 1000; // [GodLesZ] tick time + status_change_clear_buffs(bl,3); //Remove buffs/debuffs + break; + case SC_SPELLFIST: + case SC_CURSEDCIRCLE_ATKER: + val_flag |= 1|2|4; + break; + case SC_CRESCENTELBOW: + val2 = 94 + val1; + val_flag |= 1|2; + break; + case SC_LIGHTNINGWALK: + val1 = 88 + 2 * val1; + val_flag |= 1; + break; + case SC_RAISINGDRAGON: + val3 = tick / 5000; + tick_time = 5000; // [GodLesZ] tick time + break; + case SC_GT_CHANGE: + if( sd ) val2 = (13 * val1 / 2) * sd->status.agi; //Aspd - old formula. + val3 = 20 + 1 * val1; //Base Atk, Reduction to DEF & MDEF + break; + case SC_GT_REVITALIZE: + val2 = 5 * val1; //Custom value VIT, ASPD, SPEED bonus. + val3 = 60 + 40 * val1; //HP recovery + break; + case SC_PYROTECHNIC_OPTION: + val2 = 60; // Watk TODO: Renewal (Atk2) + val3 = 11; // % Increase damage. + val_flag |= 1|2|4; + break; + case SC_HEATER_OPTION: + val2 = 120; // Watk. TODO: Renewal (Atk2) + val3 = 33; // % Increase effects. + val4 = 3; // Change into fire element. + val_flag |= 1|2|4; + break; + case SC_TROPIC_OPTION: + val2 = 180; // Watk. TODO: Renewal (Atk2) + val3 = MG_FIREBOLT; + break; + case SC_AQUAPLAY_OPTION: + val2 = 40; // Matk. TODO: Renewal (Matk1) + val3 = 33; // % Increase effects. + val_flag |= 1|2|4; + break; + case SC_COOLER_OPTION: + val2 = 80; // % Freezing chance + val3 = 33; // % increased damage + val4 = 1; // Change into water elemet + val_flag |= 1|2|4; + break; + case SC_CHILLY_AIR_OPTION: + val2 = 120; // Matk. TODO: Renewal (Matk1) + val3 = MG_COLDBOLT; + val_flag |= 1|2; + break; + case SC_GUST_OPTION: + val2 = 33; + val_flag |= 1|2; + break; + case SC_WIND_STEP_OPTION: + val2 = 50; // % Increase speed and flee. + break; + case SC_BLAST_OPTION: + val2 = 33; + val3 = 4; + val_flag |= 1|2|4; + break; + case SC_WILD_STORM_OPTION: + val2 = MG_LIGHTNINGBOLT; + val_flag |= 1|2; + break; + case SC_PETROLOGY_OPTION: + val2 = 5; + val3 = 33; + val_flag |= 1|2|4; + break; + case SC_CURSED_SOIL_OPTION: + val2 = 10; + val3 = 33; + val4 = 2; + val_flag |= 1|2|4; + break; + case SC_UPHEAVAL_OPTION: + val2 = WZ_EARTHSPIKE; + val_flag |= 1|2; + break; + case SC_CIRCLE_OF_FIRE_OPTION: + val2 = 300; + val_flag |= 1|2; + break; + case SC_FIRE_CLOAK_OPTION: + case SC_WATER_DROP_OPTION: + case SC_WIND_CURTAIN_OPTION: + case SC_STONE_SHIELD_OPTION: + val2 = 20; // Elemental modifier. Not confirmed. + break; + case SC_CIRCLE_OF_FIRE: + case SC_FIRE_CLOAK: + case SC_WATER_DROP: + case SC_WATER_SCREEN: + case SC_WIND_CURTAIN: + case SC_WIND_STEP: + case SC_STONE_SHIELD: + case SC_SOLID_SKIN: + val2 = 10; + tick_time = 2000; // [GodLesZ] tick time + break; + case SC_WATER_BARRIER: + val2 = 40; // Increasement. Mdef1 ??? + val3 = 20; // Reductions. Atk2, Flee1, Matk1 ???? + val_flag |= 1|2|4; + break; + case SC_ZEPHYR: + val2 = 22; // Flee. + break; + case SC_TIDAL_WEAPON: + val2 = 20; // Increase Elemental's attack. + break; + case SC_ROCK_CRUSHER: + case SC_ROCK_CRUSHER_ATK: + case SC_POWER_OF_GAIA: + val2 = 33; + break; + case SC_MELON_BOMB: + case SC_BANANA_BOMB: + val1 = 15; + break; + case SC_STOMACHACHE: + val2 = 8; // SP consume. + val4 = tick / 10000; + tick_time = 10000; // [GodLesZ] tick time + break; default: if( calc_flag == SCB_NONE && StatusSkillChangeTable[type] == 0 && StatusIconChangeTable[type] == 0 ) @@ -6107,12 +7179,15 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_CLOSECONFINE2: case SC_ANKLE: case SC_SPIDERWEB: + case SC_ELECTRICSHOCKER: unit_stop_walking(bl,1); break; case SC_HIDING: case SC_CLOAKING: + case SC_CLOAKINGEXCEED: case SC_CHASEWALK: case SC_WEIGHT90: + case SC_CAMOUFLAGE: unit_stop_attack(bl); break; case SC_SILENCE: @@ -6130,6 +7205,8 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_FREEZE: sc->opt1 = OPT1_FREEZE; break; case SC_STUN: sc->opt1 = OPT1_STUN; break; case SC_SLEEP: sc->opt1 = OPT1_SLEEP; break; + case SC_BURNING: sc->opt1 = OPT1_BURNING; break; // Burning need this to be showed correctly. [pakpil] + case SC_WHITEIMPRISON: sc->opt1 = OPT1_IMPRISON; break; //OPT2 case SC_POISON: sc->opt2 |= OPT2_POISON; break; case SC_CURSE: sc->opt2 |= OPT2_CURSE; break; @@ -6234,6 +7311,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val opt_flag = 2; break; case SC_CLOAKING: + case SC_CLOAKINGEXCEED: sc->option |= OPTION_CLOAK; opt_flag = 2; break; @@ -6280,10 +7358,15 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val calc_flag&=~SCB_DYE; } - if( vd && (pcdb_checkid(vd->class_) || bl->type == BL_MER ) ) //Only for players sprites, client crashes if they receive this for a mob o.O [Skotlex] - clif_status_change(bl,StatusIconChangeTable[type],1,tick); + if( vd && (pcdb_checkid(vd->class_) || bl->type == BL_MER || bl->type == BL_MOB ) ) + clif_status_change(bl,StatusIconChangeTable[type],1,tick,(val_flag&1)?val1:1,(val_flag&2)?val2:0,(val_flag&4)?val3:0); else if( sd ) //Send packet to self otherwise (disguised player?) clif_status_load(bl,StatusIconChangeTable[type],1); + /** + * used as temporary storage for scs with interval ticks, so that the actual duration is sent to the client first. + **/ + if( tick_time ) + tick = tick_time; //Don't trust the previous sce assignment, in case the SC ended somewhere between there and here. if((sce=sc->data[type])) @@ -6337,6 +7420,16 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_MERC_SPUP: status_percent_heal(bl, 0, 100); // Recover Full SP break; + /** + * Ranger + **/ + case SC_WUGDASH: + { + struct unit_data *ud = unit_bl2ud(bl); + if( ud ) + ud->state.running = unit_wugdash(bl, sd); + } + break; case SC_COMBO: switch (sce->val1) { case TK_STORMKICK: @@ -6658,7 +7751,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const } if((sce->val1&0xFFFF) == CG_MOONLIT) - clif_status_change(bl,SI_MOONLIT,0,0); + clif_status_change(bl,SI_MOONLIT,0,0,0,0,0); status_change_end(bl, SC_LONGING, INVALID_TIMER); } @@ -6803,6 +7896,88 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const status_change_end(tbl, SC_STOP, INVALID_TIMER); } break; + /** + * 3rd Stuff + **/ + case SC_MILLENNIUMSHIELD: + clif_millenniumshield(sd,0); + break; + case SC_HALLUCINATIONWALK: + sc_start(bl,SC_HALLUCINATIONWALK_POSTDELAY,100,sce->val1,skill_get_time2(GC_HALLUCINATIONWALK,sce->val1)); + break; + case SC_WHITEIMPRISON: + if( tid == -1 ) + break; // Terminated by Damage + clif_damage(bl,bl,0,0,0,400*sce->val1,0,0,0); + status_zap(bl,400*sce->val1,0); + break; + case SC_WUGDASH: + { + struct unit_data *ud = unit_bl2ud(bl); + if (ud) { + ud->state.running = 0; + if (ud->walktimer != -1) + unit_stop_walking(bl,1); + } + } + break; + case SC_ADORAMUS: + status_change_end(bl, SC_BLIND, -1); + break; + /* + case SC__SHADOWFORM: + { + struct map_session_data *s_sd = map_id2sd(sce->val2); + if( !s_sd ) + break; + s_sd->shadowform_id = 0; + } + break; + case SC_SITDOWN_FORCE: + if( sd && pc_issit(sd) ) + { + pc_setstand(sd); + clif_standing(bl,true); + } + break; + case SC_NEUTRALBARRIER_MASTER: + case SC_STEALTHFIELD_MASTER: + if( sce->val2 ) + { + struct skill_unit_group* group = skill_id2group(sce->val2); + sce->val2 = 0; + skill_delunitgroup(group); + } + break; + case SC_BANDING: + { + struct skill_unit_group *group; + if(sce->val4) + { + group = skill_id2group(sce->val4); + sce->val4 = 0; + skill_delunitgroup(group); + } + } + break; + case SC_CURSEDCIRCLE_ATKER: + if( sce->val3 ) + map_foreachinrange(status_change_timer_sub, bl, skill_get_splash(SR_CURSEDCIRCLE, sce->val1),BL_CHAR, bl, sce, SC_CURSEDCIRCLE_TARGET, gettick()); + break; + case SC_RAISINGDRAGON: + if( sd && sce->val2 && !pc_isdead(sd) ) + { + int i; + i = min(sd->spiritball,5); + pc_delspiritball(sd, sd->spiritball, 0); + status_change_end(bl, SC_EXPLOSIONSPIRITS, -1); + while( i > 0 ) + { + pc_addspiritball(sd, skill_get_time(MO_CALLSPIRITS, pc_checkskill(sd,MO_CALLSPIRITS)), 5); + --i; + } + } + break;*/ } opt_flag = 1; @@ -6832,6 +8007,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const opt_flag|= 2|4; //Check for warp trigger + AoE trigger break; case SC_CLOAKING: + case SC_CLOAKINGEXCEED: sc->option &= ~OPTION_CLOAK; opt_flag|= 2; break; @@ -6962,7 +8138,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const //On Aegis, when turning off a status change, first goes the sc packet, then the option packet. if( vd && (pcdb_checkid(vd->class_) || bl->type == BL_MER ) ) - clif_status_change(bl,StatusIconChangeTable[type],0,0); + clif_status_change(bl,StatusIconChangeTable[type],0,0,0,0,0); else if (sd) clif_status_load(bl,StatusIconChangeTable[type],0); @@ -7354,6 +8530,461 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data) return 0; } break; + case SC_ABUNDANCE: + if(--(sce->val4) > 0) + { + if( !sc->data[SC_BERSERK] ) + status_heal(bl,0,60,0); + sc_timer_next(10000+tick, status_change_timer, bl->id, data); + } + break; + + case SC_PYREXIA: + if( --(sce->val4) >= 0 ) + { + bool flag; + map_freeblock_lock(); + clif_damage(bl,bl,tick,status_get_amotion(bl),0,100,0,0,0); + status_fix_damage(NULL,bl,100,0); + flag = !sc->data[type]; + map_freeblock_unlock(); + if( !flag ) + { + if( sce->val4 == 10 ) + sc_start(bl,SC_BLIND,100,sce->val1,30000); // Blind status for the final 30 seconds + sc_timer_next(3000+tick,status_change_timer,bl->id,data); + } + return 0; + } + break; + + case SC_LEECHESEND: + if( --(sce->val4) >= 0 ) + { + bool flag; + int damage = status->max_hp/100; + if( sd && (sd->status.class_ == JOB_GUILLOTINE_CROSS || sd->status.class_ == JOB_GUILLOTINE_CROSS_T ) ) + damage += 3 * status->vit; + else + damage += 7 * status->vit; + + unit_skillcastcancel(bl,2); + + map_freeblock_lock(); + status_zap(bl,damage,0); + flag = !sc->data[type]; + map_freeblock_unlock(); + if( !flag ) { + sc_timer_next(1000 + tick, status_change_timer, bl->id, data ); + } + return 0; + } + break; + + case SC_MAGICMUSHROOM: + if( --(sce->val4) >= 0 ) + { + bool flag = 0; + int damage = status->max_hp * 3 / 100; + if( status->hp <= damage ) + damage = status->hp - 1; // Cannot Kill + + if( damage > 0 ) + { // 3% Damage each 4 seconds + map_freeblock_lock(); + status_zap(bl,damage,0); + flag = !sc->data[type]; // Killed? Should not + map_freeblock_unlock(); + } + + if( !flag ) + { // Random Skill Cast + if( sd ) + { + int mushroom_skillid = 0, i; + unit_stop_attack(bl); + unit_skillcastcancel(bl,1); + do + { + i = rand() % MAX_SKILL_MAGICMUSHROOM_DB; + mushroom_skillid = skill_magicmushroom_db[i].skillid; + } + while( mushroom_skillid == 0 ); + + switch( skill_get_casttype(mushroom_skillid) ) + { // Magic Mushroom skills are buffs or area damage + case CAST_GROUND: + skill_castend_pos2(bl,bl->x,bl->y,mushroom_skillid,1,tick,0); + break; + case CAST_NODAMAGE: + skill_castend_nodamage_id(bl,bl,mushroom_skillid,1,tick,0); + break; + case CAST_DAMAGE: + skill_castend_damage_id(bl,bl,mushroom_skillid,1,tick,0); + break; + } + } + + clif_emotion(bl,18); + sc_timer_next(4000+tick,status_change_timer,bl->id,data); + } + return 0; + } + break; + + case SC_TOXIN: + if( --(sce->val4) >= 0 ) + { //Damage is every 10 seconds including 3%sp drain. + bool flag; + map_freeblock_lock(); + clif_damage(bl,bl,tick,status_get_amotion(bl),1,1,0,0,0); + status_damage(NULL,bl,1,status->max_sp*3/100,0,16); + flag = !sc->data[type]; + map_freeblock_unlock(); + if( !flag ) { + sc_timer_next(10000 + tick, status_change_timer, bl->id, data ); + } + return 0; + } + break; + + case SC_OBLIVIONCURSE: + if( --(sce->val4) >= 0 ) + { + clif_emotion(bl,1); + sc_timer_next(3000 + tick, status_change_timer, bl->id, data ); + return 0; + } + break; + + case SC_WEAPONBLOCKING: + if( --(sce->val4) >= 0 ) + { + if( !status_charge(bl,0,3) ) + break; + sc_timer_next(3000+tick,status_change_timer,bl->id,data); + return 0; + } + break; + + case SC_CLOAKINGEXCEED: + if(!status_charge(bl,0,10-sce->val1)) + break; + sc_timer_next(1000 + tick, status_change_timer, bl->id, data); + return 0; + + case SC_RENOVATIO: + if( --(sce->val4) >= 0 ) + { + status_heal(bl, status->max_hp * 3 / 100, 0, 2); + sc_timer_next(5000 + tick, status_change_timer, bl->id, data); + return 0; + } + break; + + case SC_BURNING: + if( --(sce->val4) >= 0 ) + { + struct block_list *src = map_id2bl(sce->val3); + int flag, damage = 3 * status_get_max_hp(bl) / 100; // Non Elemental Damage + if( status ) + damage += battle_attr_fix(NULL, bl, sce->val2, ELE_FIRE, status->def_ele, status->ele_lv); + + map_freeblock_lock(); + status_fix_damage(src,bl,damage,clif_damage(bl,bl,tick,0,0,damage,0,0,0)); + flag = !sc->data[type]; + map_freeblock_unlock(); + if( !flag ) {// Target still lives. [LimitLine] + sc_timer_next(2000 + tick, status_change_timer, bl->id, data); + } + return 0; + } + break; + + case SC_FEAR: + if( --(sce->val4) >= 0 ) + { + if( sce->val2 > 0 ) + sce->val2--; + sc_timer_next(1000 + tick, status_change_timer, bl->id, data); + return 0; + } + break; + + case SC_SPHERE_1: + case SC_SPHERE_2: + case SC_SPHERE_3: + case SC_SPHERE_4: + case SC_SPHERE_5: + if( --(sce->val4) >= 0 ) + { + if( !status_charge(bl, 0, 1) ) + break; + sc_timer_next(1000 + tick, status_change_timer, bl->id, data); + return 0; + } + break; + + case SC_READING_SB: + if( !status_charge(bl, 0, sce->val2) ) + break; + sc_timer_next(1000 + tick, status_change_timer, bl->id, data); + return 0; + + case SC_ELECTRICSHOCKER: + if( --(sce->val4) >= 0 ) + { + status_charge(bl, 0, status->max_sp / 100 * sce->val1 ); + sc_timer_next(1000 + tick, status_change_timer, bl->id, data); + return 0; + } + break; + + case SC_CAMOUFLAGE: + if( !status_charge(bl,0,7 - sce->val1) ) + break; + sc_timer_next(1000 + tick, status_change_timer, bl->id, data); + return 0; + + case SC__REPRODUCE: + if(!status_charge(bl, 0, 1)) + break; + sc_timer_next(1000+tick, status_change_timer, bl->id, data); + return 0; + + case SC__SHADOWFORM: + if( --(sce->val4) >= 0 ) + { + if( !status_charge(bl, 0, sce->val1 - (sce->val1 - 1)) ) + break; + sc_timer_next(1000 + tick, status_change_timer, bl->id, data); + return 0; + } + break; + + case SC__INVISIBILITY: + if( --(sce->val4) >= 0 ) + { + if( !status_charge(bl, 0, (status->sp * 6 - sce->val1) / 100) )// 6% - skilllv. + break; + sc_timer_next(1000 + tick, status_change_timer, bl->id, data); + return 0; + } + break; + + case SC_STRIKING: + if( --(sce->val4) >= 0 ) + { + if( !status_charge(bl,0, sce->val1 ) ) + break; + sc_timer_next(1000 + tick, status_change_timer, bl->id, data); + return 0; + } + break; + + case SC_BLOODSUCKER: + if( --(sce->val4) >= 0 ) + { + struct block_list *src = map_id2bl(sce->val2); + int damage; + bool flag; + if( !src || (src && (status_isdead(src) || src->m != bl->m || distance_bl(src, bl) >= 12)) ) + break; + map_freeblock_lock(); + damage = skill_attack(skill_get_type(GN_BLOOD_SUCKER), src, src, bl, GN_BLOOD_SUCKER, sce->val1, tick, 0); + flag = !sc->data[type]; + map_freeblock_unlock(); + status_heal(src, damage, 0, 0); + clif_skill_nodamage(src, bl, GN_BLOOD_SUCKER, 0, 1); + if (!flag) { + sc_timer_next(1000 + tick, status_change_timer, bl->id, data); + } + return 0; + } + break; + + case SC_VOICEOFSIREN: + if( --(sce->val4) >= 0 ) + { + clif_emotion(bl,3); + sc_timer_next(2000 + tick, status_change_timer, bl->id, data); + return 0; + } + break; + + case SC_DEEPSLEEP: + if( --(sce->val4) >= 0 ) + { // Recovers 1% HP/SP every 2 seconds. + status_heal(bl, status->max_hp / 100, status->max_sp / 100, 2); + sc_timer_next(2000 + tick, status_change_timer, bl->id, data); + return 0; + } + break; + + case SC_SIRCLEOFNATURE: + if( --(sce->val4) >= 0 ) + { + if( !status_charge(bl,0,sce->val2) ) + break; + status_heal(bl, sce->val3, 0, 1); + sc_timer_next(1000 + tick, status_change_timer, bl->id, data); + return 0; + } + break; + + case SC_SONGOFMANA: + if( --(sce->val4) >= 0 ) + { + status_heal(bl,0,sce->val3,3); + sc_timer_next(3000 + tick, status_change_timer, bl->id, data); + return 0; + } + break; + + + case SC_SATURDAYNIGHTFEVER: + // 1% HP/SP drain every 3 seconds [Jobbie] + if( --(sce->val3) >= 0 ) + { + int hp = status->hp / 100; + int sp = status->sp / 100; + if( !status_charge(bl, hp, sp) ) + break; + sc_timer_next(sce->val4+tick, status_change_timer, bl->id, data); + return 0; + } + break; + + case SC_CRYSTALIZE: + if( --(sce->val4) >= 0 ) + { // Drains 2% of HP and 1% of SP every seconds. + status_charge(bl, status->max_hp * 2 / 100, status->max_sp / 100); + sc_timer_next(1000 + tick, status_change_timer, bl->id, data); + return 0; + } + break; + + case SC_FORCEOFVANGUARD: + if( !status_charge(bl,0,20) ) + break; + sc_timer_next(6000 + tick, status_change_timer, bl->id, data); + return 0; + + case SC_BANDING: + if( status_charge(bl, 0, 7 - sce->val1) ) + { + //if( sd ) pc_banding(sd, sce->val1); + sc_timer_next(5000 + tick, status_change_timer, bl->id, data); + return 0; + } + break; + + case SC_REFLECTDAMAGE: + if( --(sce->val4) >= 0 ) { + if( !status_charge(bl,0,sce->val3) ) + break; + sc_timer_next(10000 + tick, status_change_timer, bl->id, data); + return 0; + } + break; + + case SC_OVERHEAT_LIMITPOINT: + if( --(sce->val1) > 0 ) { // Cooling + sc_timer_next(30000 + tick, status_change_timer, bl->id, data); + } + break; + + case SC_OVERHEAT: + { + int flag, damage = status->max_hp / 100; // Suggestion 1% each second + if( damage >= status->hp ) damage = status->hp - 1; // Do not kill, just keep you with 1 hp minimum + map_freeblock_lock(); + status_fix_damage(NULL,bl,damage,clif_damage(bl,bl,tick,0,0,damage,0,0,0)); + flag = !sc->data[type]; + map_freeblock_unlock(); + if( !flag ) { + sc_timer_next(1000 + tick, status_change_timer, bl->id, data); + } + } + break; + + case SC_MAGNETICFIELD: + { + if( --(sce->val3) <= 0 ) + break; // Time out + if( sce->val2 == bl->id ) + { + if( !status_charge(bl,0,14 + (3 * sce->val1)) ) + break; // No more SP status should end, and in the next second will end for the other affected players + } + else + { + struct block_list *src = map_id2bl(sce->val2); + struct status_change *ssc; + if( !src || (ssc = status_get_sc(src)) == NULL || !ssc->data[SC_MAGNETICFIELD] ) + break; // Source no more under Magnetic Field + } + sc_timer_next(1000 + tick, status_change_timer, bl->id, data); + } + break; + + case SC_INSPIRATION: + if(--(sce->val4) >= 0) + { + int hp = status->max_hp * (7-sce->val1) / 100; + int sp = status->max_sp * (9-sce->val1) / 100; + + if( !status_charge(bl,hp,sp) ) break; + + sc_timer_next(1000+tick,status_change_timer,bl->id, data); + return 0; + } + break; + + case SC_RAISINGDRAGON: + // 1% every 5 seconds [Jobbie] + if( --(sce->val3)>0 && status_charge(bl, sce->val2, 0) ) + { + if( !sc->data[type] ) return 0; + sc_timer_next(5000 + tick, status_change_timer, bl->id, data); + return 0; + } + break; + + case SC_CIRCLE_OF_FIRE: + case SC_FIRE_CLOAK: + case SC_WATER_DROP: + case SC_WATER_SCREEN: + case SC_WIND_CURTAIN: + case SC_WIND_STEP: + case SC_STONE_SHIELD: + case SC_SOLID_SKIN: + if( !status_charge(bl,0,sce->val2) ) + { + struct block_list *s_bl = battle_get_master(bl); + if( s_bl ) + status_change_end(s_bl,type+1,-1); + status_change_end(bl,type,-1); + break; + } + sc_timer_next(2000 + tick, status_change_timer, bl->id, data); + return 0; + + case SC_STOMACHACHE: + if( --(sce->val4) > 0 ) + { + status_charge(bl,0,sce->val2); // Reduce 8 every 10 seconds. + if( sd && !pc_issit(sd) ) // Force to sit every 10 seconds. + { + pc_stop_walking(sd,1|4); + pc_stop_attack(sd); + pc_setsit(sd); + clif_sitting(bl); + } + sc_timer_next(10000 + tick, status_change_timer, bl->id, data); + } + break; + } // default for all non-handled control paths is to end the status @@ -7384,11 +9015,15 @@ int status_change_timer_sub(struct block_list* bl, va_list ap) case SC_CONCENTRATE: status_change_end(bl, SC_HIDING, INVALID_TIMER); status_change_end(bl, SC_CLOAKING, INVALID_TIMER); + status_change_end(bl, SC_CLOAKINGEXCEED, INVALID_TIMER); + status_change_end(bl, SC_CAMOUFLAGE, INVALID_TIMER); break; case SC_RUWACH: /* ƒ‹ƒAƒt */ - if (tsc && (tsc->data[SC_HIDING] || tsc->data[SC_CLOAKING])) { + if (tsc && (tsc->data[SC_HIDING] || tsc->data[SC_CLOAKING] || tsc->data[SC_CAMOUFLAGE] || tsc->data[SC_CLOAKINGEXCEED])) { status_change_end(bl, SC_HIDING, INVALID_TIMER); status_change_end(bl, SC_CLOAKING, INVALID_TIMER); + status_change_end(bl, SC_CAMOUFLAGE, INVALID_TIMER); + status_change_end(bl, SC_CLOAKINGEXCEED, INVALID_TIMER); if(battle_check_target( src, bl, BCT_ENEMY ) > 0) skill_attack(BF_MAGIC,src,src,bl,AL_RUWACH,1,tick,0); } @@ -7716,6 +9351,25 @@ static int status_natural_heal_timer(int tid, unsigned int tick, int id, intptr_ * size_fix.txt - size adjustment table for weapons * refine_db.txt - refining data table *------------------------------------------*/ +#if RRMODE +static bool status_readdb_job_re(char* fields[], int columns, int current) { + int idx, class_; + unsigned int i; + + class_ = atoi(fields[0]); + + if(!pcdb_checkid(class_)) { + ShowWarning("status_readdb_job_re: Invalid job class %d specified.\n", class_); + return false; + } + idx = pc_class2idx(class_); + + for(i = 0; i < RE_JOB_DB_MAX; i++) { + re_job_db[idx][i] = atoi(fields[i+1]); + } + return true; +} +#endif static bool status_readdb_job1(char* fields[], int columns, int current) {// Job-specific values (weight, HP, SP, ASPD) int idx, class_; @@ -7801,7 +9455,9 @@ int status_readdb(void) memset(hp_coefficient2, 0, sizeof(hp_coefficient2)); memset(sp_coefficient, 0, sizeof(sp_coefficient)); memset(aspd_base, 0, sizeof(aspd_base)); - +#if RRMODE + memset(re_job_db, 0, sizeof(re_job_db)); +#endif // job_db2.txt memset(job_bonus,0,sizeof(job_bonus)); // Job-specific stats bonus @@ -7828,6 +9484,10 @@ int status_readdb(void) sv_readdb(db_path, "size_fix.txt", ',', MAX_WEAPON_TYPE, MAX_WEAPON_TYPE, ARRAYLENGTH(atkmods), &status_readdb_sizefix); sv_readdb(db_path, "refine_db.txt", ',', 3+MAX_REFINE+1, 3+MAX_REFINE+1, ARRAYLENGTH(percentrefinery), &status_readdb_refine); +#if RRMODE + sv_readdb(db_path, "re_job_db.txt", ',', 1+RE_JOB_DB_MAX, 1+RE_JOB_DB_MAX, -1, &status_readdb_job_re); +#endif + return 0; } diff --git a/src/map/status.h b/src/map/status.h index dcd532577..8572b1bbb 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -329,7 +329,248 @@ typedef enum sc_type { SC_FOOD_VIT_CASH, SC_FOOD_DEX_CASH, SC_FOOD_INT_CASH, - SC_FOOD_LUK_CASH, + SC_FOOD_LUK_CASH,//308 + /** + * 3rd + **/ + SC_FEAR,//309 + SC_BURNING,//310 + SC_FREEZING,//311 + /** + * Rune Knight + **/ + SC_ENCHANTBLADE,//312 + SC_DEATHBOUND,//313 + SC_MILLENNIUMSHIELD, + SC_CRUSHSTRIKE,//315 + SC_REFRESH, + SC_REUSE_REFRESH, + SC_GIANTGROWTH, + SC_STONEHARDSKIN, + SC_VITALITYACTIVATION,//320 + SC_STORMBLAST, + SC_FIGHTINGSPIRIT, + SC_ABUNDANCE, + /** + * Arch Bishop + **/ + SC_ADORAMUS, + SC_EPICLESIS,//325 + SC_ORATIO, + SC_LAUDAAGNUS, + SC_LAUDARAMUS, + SC_RENOVATIO, + SC_EXPIATIO,//330 + SC_DUPLELIGHT, + SC_SECRAMENT, + /** + * Warlock + **/ + SC_WHITEIMPRISON, + SC_MARSHOFABYSS, + SC_RECOGNIZEDSPELL,//335 + SC_STASIS, + SC_SPHERE_1, + SC_SPHERE_2, + SC_SPHERE_3, + SC_SPHERE_4,//340 + SC_SPHERE_5, + SC_READING_SB, + SC_FREEZINGSPELL, + /** + * Ranger + **/ + SC_FEARBREEZE, + SC_ELECTRICSHOCKER,//345 + SC_WUGDASH, + SC_BITE, + SC_CAMOUFLAGE, + /** + * Mechanic + **/ + SC_ACCELERATION, + SC_HOVERING,//350 + SC_SHAPESHIFT, + SC_INFRAREDSCAN, + SC_ANALYZE, + SC_MAGNETICFIELD, + SC_NEUTRALBARRIER,//355 + SC_NEUTRALBARRIER_MASTER, + SC_STEALTHFIELD, + SC_STEALTHFIELD_MASTER, + SC_OVERHEAT, + SC_OVERHEAT_LIMITPOINT,//360 + /** + * Guillotine Cross + **/ + SC_VENOMIMPRESS, + SC_POISONINGWEAPON, + SC_WEAPONBLOCKING, + SC_CLOAKINGEXCEED, + SC_HALLUCINATIONWALK,//365 + SC_HALLUCINATIONWALK_POSTDELAY, + SC_ROLLINGCUTTER, + SC_TOXIN, + SC_PARALYSE, + SC_VENOMBLEED,//370 + SC_MAGICMUSHROOM, + SC_DEATHHURT, + SC_PYREXIA, + SC_OBLIVIONCURSE, + SC_LEECHESEND,//375 + /** + * Royal Guard + **/ + SC_REFLECTDAMAGE, + SC_FORCEOFVANGUARD, + SC_SHIELDSPELL_DEF, + SC_SHIELDSPELL_MDEF, + SC_SHIELDSPELL_REF,//380 + SC_EXEEDBREAK, + SC_PRESTIGE, + SC_BANDING, + SC_BANDING_DEFENCE, + SC_EARTHDRIVE,//385 + SC_INSPIRATION, + /** + * Sorcerer + **/ + SC_SPELLFIST, + SC_CRYSTALIZE, + SC_STRIKING, + SC_WARMER,//390 + SC_VACUUM_EXTREME, + SC_PROPERTYWALK, + /** + * Minstrel / Wanderer + **/ + SC_SWINGDANCE, + SC_SYMPHONYOFLOVER, + SC_MOONLITSERENADE,//395 + SC_RUSHWINDMILL, + SC_ECHOSONG, + SC_HARMONIZE, + SC_VOICEOFSIREN, + SC_DEEPSLEEP,//400 + SC_SIRCLEOFNATURE, + SC_GLOOMYDAY, + SC_GLOOMYDAY_SK, + SC_SONGOFMANA, + SC_DANCEWITHWUG,//405 + SC_SATURDAYNIGHTFEVER, + SC_LERADSDEW, + SC_MELODYOFSINK, + SC_BEYONDOFWARCRY, + SC_UNLIMITEDHUMMINGVOICE,//410 + SC_SITDOWN_FORCE, + /** + * Sura + **/ + SC_CRESCENTELBOW, + SC_CURSEDCIRCLE_ATKER, + SC_CURSEDCIRCLE_TARGET, + SC_LIGHTNINGWALK,//415 + SC_RAISINGDRAGON, + SC_GT_ENERGYGAIN, + SC_GT_CHANGE, + SC_GT_REVITALIZE, + /** + * Genetic + **/ + SC_GN_CARTBOOST,//420 + SC_THORNSTRAP, + SC_BLOODSUCKER, + SC_SMOKEPOWDER, + SC_TEARGAS, + SC_MANDRAGORA,//425 + SC_STOMACHACHE, + SC_MYSTERIOUS_POWDER, + SC_MELON_BOMB, + SC_BANANA_BOMB, + SC_BANANA_BOMB_SITDOWN,//430 + SC_SAVAGE_STEAK, + SC_COCKTAIL_WARG_BLOOD, + SC_MINOR_BBQ, + SC_SIROMA_ICE_TEA, + SC_DROCERA_HERB_STEAMED,//435 + SC_PUTTI_TAILS_NOODLES, + SC_BOOST500, + SC_FULL_SWING_K, + SC_MANA_PLUS, + SC_MUSTLE_M,//440 + SC_LIFE_FORCE_F, + SC_EXTRACT_WHITE_POTION_Z, + SC_VITATA_500, + SC_EXTRACT_SALAMINE_JUICE, + /** + * Shadow Chaser + **/ + SC__REPRODUCE,//445 + SC__AUTOSHADOWSPELL, + SC__SHADOWFORM, + SC__BODYPAINT, + SC__INVISIBILITY, + SC__DEADLYINFECT,//450 + SC__ENERVATION, + SC__GROOMY, + SC__IGNORANCE, + SC__LAZINESS, + SC__UNLUCKY,//455 + SC__WEAKNESS, + SC__STRIPACCESSORY, + SC__MANHOLE, + SC_CHAOS, + SC__BLOODYLUST,//460 + /** + * Elemental Spirits + **/ + SC_CIRCLE_OF_FIRE, + SC_CIRCLE_OF_FIRE_OPTION, + SC_FIRE_CLOAK, + SC_FIRE_CLOAK_OPTION, + SC_WATER_SCREEN,//465 + SC_WATER_SCREEN_OPTION, + SC_WATER_DROP, + SC_WATER_DROP_OPTION, + SC_WATER_BARRIER, + SC_WIND_STEP,//470 + SC_WIND_STEP_OPTION, + SC_WIND_CURTAIN, + SC_WIND_CURTAIN_OPTION, + SC_ZEPHYR, + SC_SOLID_SKIN,//475 + SC_SOLID_SKIN_OPTION, + SC_STONE_SHIELD, + SC_STONE_SHIELD_OPTION, + SC_POWER_OF_GAIA, + SC_PYROTECHNIC,//480 + SC_PYROTECHNIC_OPTION, + SC_HEATER, + SC_HEATER_OPTION, + SC_TROPIC, + SC_TROPIC_OPTION,//485 + SC_AQUAPLAY, + SC_AQUAPLAY_OPTION, + SC_COOLER, + SC_COOLER_OPTION, + SC_CHILLY_AIR,//490 + SC_CHILLY_AIR_OPTION, + SC_GUST, + SC_GUST_OPTION, + SC_BLAST, + SC_BLAST_OPTION,//495 + SC_WILD_STORM, + SC_WILD_STORM_OPTION, + SC_PETROLOGY, + SC_PETROLOGY_OPTION, + SC_CURSED_SOIL,//500 + SC_CURSED_SOIL_OPTION, + SC_UPHEAVAL, + SC_UPHEAVAL_OPTION, + SC_TIDAL_WEAPON, + SC_TIDAL_WEAPON_OPTION,//505 + SC_ROCK_CRUSHER, + SC_ROCK_CRUSHER_ATK, SC_MAX, //Automatically updated max, used in for's to check we are within bounds. } sc_type; @@ -652,7 +893,7 @@ enum si_type { SI_CASH_PLUSONLYJOBEXP = 312, // SI_PARTYFLEE = 313, // SI_ANGEL_PROTECT = 314, -/* + SI_ENDURE_MDEF = 315, SI_ENCHANTBLADE = 316, SI_DEATHBOUND = 317, @@ -701,11 +942,11 @@ enum si_type { SI_CAMOUFLAGE = 360, SI_ACCELERATION = 361, SI_HOVERING = 362, - SI_SUMMON1 = 363, - SI_SUMMON2 = 364, - SI_SUMMON3 = 365, - SI_SUMMON4 = 366, - SI_SUMMON5 = 367, + SI_SPHERE_1 = 363, + SI_SPHERE_2 = 364, + SI_SPHERE_3 = 365, + SI_SPHERE_4 = 366, + SI_SPHERE_5 = 367, SI_MVPCARD_TAOGUNKA = 368, SI_MVPCARD_MISTRESS = 369, SI_MVPCARD_ORCHERO = 370, @@ -719,15 +960,15 @@ enum si_type { SI_NEUTRALBARRIER_MASTER = 378, SI_STEALTHFIELD = 379, SI_STEALTHFIELD_MASTER = 380, -*/ + SI_MANU_ATK = 381, SI_MANU_DEF = 382, SI_SPL_ATK = 383, SI_SPL_DEF = 384, -// SI_REPRODUCE = 385, + SI_REPRODUCE = 385, SI_MANU_MATK = 386, SI_SPL_MATK = 387, -/* + SI_STR_SCROLL = 388, SI_INT_SCROLL = 389, SI_LG_REFLECTDAMAGE = 390, @@ -812,7 +1053,7 @@ enum si_type { SI_BLOCKING_PLAY = 469, SI_MANDRAGORA = 470, SI_ACTIVATE = 471, - SI_AB_SECRAMENT = 472, + SI_SECRAMENT = 472, SI_ASSUMPTIO2 = 473, SI_TK_SEVENWIND = 474, SI_LIMIT_ODINS_RECALL = 475, @@ -912,7 +1153,7 @@ enum si_type { SI_WIND_INSIGNIA = 569, SI_EARTH_INSIGNIA = 570, SI_EQUIPED_FLOOR = 571, -*/ + SI_ALL_RIDING = 613,//awesome 571-613 gap, we're missing quite a few stuff here. }; // JOINTBEAT stackable ailments @@ -1033,6 +1274,7 @@ enum { OPTION_DRAGON3 = 0x01000000, OPTION_DRAGON4 = 0x02000000, OPTION_DRAGON5 = 0x04000000, + OPTION_MOUNTING = 0x08000000,//dull name (cuz ind named it :/) // compound constants OPTION_CART = OPTION_CART1|OPTION_CART2|OPTION_CART3|OPTION_CART4|OPTION_CART5, OPTION_DRAGON = OPTION_DRAGON1|OPTION_DRAGON2|OPTION_DRAGON3|OPTION_DRAGON4|OPTION_DRAGON5, @@ -1123,6 +1365,12 @@ struct status_data { aspd_rate; unsigned char def_ele, ele_lv, +#if RRMODE + /** + * in RE weapon level is used in several areas, keeping it here saves performance + **/ + wlv, +#endif size, race; signed char def, mdef; @@ -1187,7 +1435,8 @@ struct status_change { //TODO: See if it is possible to implement the following SC's without requiring extra parameters while the SC is inactive. unsigned char jb_flag; //Joint Beat type flag unsigned short mp_matk_min, mp_matk_max; //Previous matk min/max for ground spells (Amplify magic power) - int sg_id; //ID of the previous Storm gust that hit you + //int sg_id; //ID of the previous Storm gust that hit you + short comet_x, comet_y; // Point where src casted Comet - required to calculate damage from this point unsigned char sg_counter; //Storm gust counter (previous hits from storm gust) struct status_change_entry *data[SC_MAX]; }; @@ -1260,6 +1509,12 @@ unsigned char status_calc_attack_element(struct block_list *bl, struct status_ch #define status_get_race(bl) status_get_status_data(bl)->race #define status_get_size(bl) status_get_status_data(bl)->size #define status_get_mode(bl) status_get_status_data(bl)->mode +#if RRMODE + /** + * in RE weapon level is used in several areas, keeping it here saves performance + **/ + #define status_get_wlv(bl) status_get_status_data(bl)->wlv +#endif int status_get_party_id(struct block_list *bl); int status_get_guild_id(struct block_list *bl); int status_get_emblem_id(struct block_list *bl); diff --git a/src/map/unit.c b/src/map/unit.c index a11b5dc28..52b479b25 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -444,7 +444,7 @@ int unit_run(struct block_list *bl) if(to_x == bl->x && to_y == bl->y) { //If you can't run forward, you must be next to a wall, so bounce back. [Skotlex] - clif_status_change(bl, SI_BUMP, 1, 0); + clif_status_change(bl, SI_BUMP, 1, 0, 0, 0, 0); //Set running to 0 beforehand so status_change_end knows not to enable spurt [Kevin] unit_bl2ud(bl)->state.running = 0; @@ -452,7 +452,7 @@ int unit_run(struct block_list *bl) skill_blown(bl,bl,skill_get_blewcount(TK_RUN,lv),unit_getdir(bl),0); clif_fixpos(bl); //Why is a clif_slide (skill_blown) AND a fixpos needed? Ask Aegis. - clif_status_change(bl, SI_BUMP, 0, 0); + clif_status_change(bl, SI_BUMP, 0, 0, 0, 0, 0); return 0; } if (unit_walktoxy(bl, to_x, to_y, 1)) @@ -464,7 +464,7 @@ int unit_run(struct block_list *bl) } while (--i > 0 && !unit_walktoxy(bl, to_x, to_y, 1)); if (i==0) { // copy-paste from above - clif_status_change(bl, SI_BUMP, 1, 0); + clif_status_change(bl, SI_BUMP, 1, 0, 0, 0, 0); //Set running to 0 beforehand so status_change_end knows not to enable spurt [Kevin] unit_bl2ud(bl)->state.running = 0; @@ -472,7 +472,73 @@ int unit_run(struct block_list *bl) skill_blown(bl,bl,skill_get_blewcount(TK_RUN,lv),unit_getdir(bl),0); clif_fixpos(bl); - clif_status_change(bl, SI_BUMP, 0, 0); + clif_status_change(bl, SI_BUMP, 0, 0, 0, 0, 0); + return 0; + } + return 1; +} + +//Exclusive function to Wug Dash state. [Jobbie/3CeAM] +int unit_wugdash(struct block_list *bl, struct map_session_data *sd) { + struct status_change *sc = status_get_sc(bl); + short to_x,to_y,dir_x,dir_y; + int lv; + int i; + if (!(sc && sc->data[SC_WUGDASH])) + return 0; + + nullpo_ret(sd); + nullpo_ret(bl); + + if (!unit_can_move(bl)) { + status_change_end(bl,SC_WUGDASH,-1); + return 0; + } + + lv = sc->data[SC_WUGDASH]->val1; + dir_x = dirx[sc->data[SC_WUGDASH]->val2]; + dir_y = diry[sc->data[SC_WUGDASH]->val2]; + + to_x = bl->x; + to_y = bl->y; + for(i=0;i<AREA_SIZE;i++) + { + if(!map_getcell(bl->m,to_x+dir_x,to_y+dir_y,CELL_CHKPASS)) + break; + + if(sc->data[SC_WUGDASH] && map_count_oncell(bl->m, to_x+dir_x, to_y+dir_y, BL_PC|BL_MOB|BL_NPC)) + break; + + to_x += dir_x; + to_y += dir_y; + } + + if(to_x == bl->x && to_y == bl->y) { + + unit_bl2ud(bl)->state.running = 0; + status_change_end(bl,SC_WUGDASH,-1); + + if( sd ){ + clif_fixpos(bl); + skill_castend_damage_id(bl, &sd->bl, RA_WUGDASH, lv, gettick(), SD_LEVEL); + } + return 0; + } + if (unit_walktoxy(bl, to_x, to_y, 1)) + return 1; + do { + to_x -= dir_x; + to_y -= dir_y; + } while (--i > 0 && !unit_walktoxy(bl, to_x, to_y, 1)); + if (i==0) { + + unit_bl2ud(bl)->state.running = 0; + status_change_end(bl,SC_WUGDASH,-1); + + if( sd ){ + clif_fixpos(bl); + skill_castend_damage_id(bl, &sd->bl, RA_WUGDASH, lv, gettick(), SD_LEVEL); + } return 0; } return 1; @@ -992,7 +1058,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, short skill_num, sh if( !target || src->m != target->m || !src->prev || !target->prev ) return 0; - if( mob_ksprotected(src, target) ) + if( battle_config.ksprotection && sd && mob_ksprotected(src, target) ) return 0; //Normally not needed because clif.c checks for it, but the at/char/script commands don't! [Skotlex] @@ -1130,7 +1196,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, short skill_num, sh // moved here to prevent Suffragium from ending if skill fails if (!(skill_get_castnodex(skill_num, skill_lv)&2)) - casttime = skill_castfix_sc(src, casttime); + casttime = skill_castfix_sc(src, casttime, skill_num, skill_lv); if( casttime > 0 || temp ) { @@ -1272,7 +1338,7 @@ int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, sh // moved here to prevent Suffragium from ending if skill fails if (!(skill_get_castnodex(skill_num, skill_lv)&2)) - casttime = skill_castfix_sc(src, casttime); + casttime = skill_castfix_sc(src, casttime, skill_num, skill_lv); ud->state.skillcastcancel = castcancel&&casttime>0?1:0; if( !sd || sd->skillitem != skill_num || skill_get_cast(skill_num,skill_lv) ) diff --git a/src/map/unit.h b/src/map/unit.h index e349a7466..f7b072739 100644 --- a/src/map/unit.h +++ b/src/map/unit.h @@ -126,6 +126,10 @@ int unit_changeviewsize(struct block_list *bl,short size); // ‰Šú‰»ƒ‹[ƒ`ƒ“ int do_init_unit(void); int do_final_unit(void); +/** + * Ranger + **/ +int unit_wugdash(struct block_list *bl, struct map_session_data *sd); extern const short dirx[8]; extern const short diry[8]; diff --git a/vcproj-10/map-server_sql.vcxproj b/vcproj-10/map-server_sql.vcxproj index 9f9664548..997854d0f 100644 --- a/vcproj-10/map-server_sql.vcxproj +++ b/vcproj-10/map-server_sql.vcxproj @@ -173,6 +173,13 @@ <ClInclude Include="..\src\map\pc.h" /> <ClInclude Include="..\src\map\pet.h" /> <ClInclude Include="..\src\map\quest.h" /> + <ClInclude Include="..\src\map\RRConfig\Core.h" /> + <ClInclude Include="..\src\map\RRConfig\Renewal.h" /> + <ClInclude Include="..\src\map\RRConfig\Secure.h" /> + <ClInclude Include="..\src\map\RRConfig\Data\Const.h" /> + <ClInclude Include="..\src\map\RRConfig\Skills\General.h" /> + <ClInclude Include="..\src\map\RRConfig\Skills\Mage_Classes.h" /> + <ClInclude Include="..\src\map\RRConfig\Skills\Swordsman_Classes.h" /> <ClInclude Include="..\src\map\script.h" /> <ClInclude Include="..\src\map\searchstore.h" /> <ClInclude Include="..\src\map\skill.h" /> diff --git a/vcproj-10/map-server_sql.vcxproj.filters b/vcproj-10/map-server_sql.vcxproj.filters index b290b3c95..5351488d6 100644 --- a/vcproj-10/map-server_sql.vcxproj.filters +++ b/vcproj-10/map-server_sql.vcxproj.filters @@ -115,6 +115,9 @@ <ClCompile Include="..\src\common\core.c"> <Filter>common</Filter> </ClCompile> + <ClCompile Include="..\src\common\des.c"> + <Filter>common</Filter> + </ClCompile> <ClCompile Include="..\src\common\db.c"> <Filter>common</Filter> </ClCompile> diff --git a/vcproj-10/map-server_txt.vcxproj b/vcproj-10/map-server_txt.vcxproj index 171859e1e..a40e6f5e0 100644 --- a/vcproj-10/map-server_txt.vcxproj +++ b/vcproj-10/map-server_txt.vcxproj @@ -205,6 +205,13 @@ <ClInclude Include="..\src\map\pc.h" /> <ClInclude Include="..\src\map\pet.h" /> <ClInclude Include="..\src\map\quest.h" /> + <ClInclude Include="..\src\map\RRConfig\Core.h" /> + <ClInclude Include="..\src\map\RRConfig\Renewal.h" /> + <ClInclude Include="..\src\map\RRConfig\Secure.h" /> + <ClInclude Include="..\src\map\RRConfig\Data\Const.h" /> + <ClInclude Include="..\src\map\RRConfig\Skills\General.h" /> + <ClInclude Include="..\src\map\RRConfig\Skills\Mage_Classes.h" /> + <ClInclude Include="..\src\map\RRConfig\Skills\Swordsman_Classes.h" /> <ClInclude Include="..\src\map\script.h" /> <ClInclude Include="..\src\map\searchstore.h" /> <ClInclude Include="..\src\map\skill.h" /> diff --git a/vcproj-10/map-server_txt.vcxproj.filters b/vcproj-10/map-server_txt.vcxproj.filters index e157f4d40..bf2d728ae 100644 --- a/vcproj-10/map-server_txt.vcxproj.filters +++ b/vcproj-10/map-server_txt.vcxproj.filters @@ -189,6 +189,9 @@ <ClInclude Include="..\src\common\db.h"> <Filter>common</Filter> </ClInclude> + <ClInclude Include="..\src\common\des.h"> + <Filter>common</Filter> + </ClInclude> <ClInclude Include="..\src\common\ers.h"> <Filter>common</Filter> </ClInclude> diff --git a/vcproj-10/mapcache.vcxproj.filters b/vcproj-10/mapcache.vcxproj.filters index 708cab064..713cdb64b 100644 --- a/vcproj-10/mapcache.vcxproj.filters +++ b/vcproj-10/mapcache.vcxproj.filters @@ -4,6 +4,9 @@ <ClCompile Include="..\src\common\core.c"> <Filter>common</Filter> </ClCompile> + <ClCompile Include="..\src\common\des.c"> + <Filter>common</Filter> + </ClCompile> <ClCompile Include="..\src\common\grfio.c"> <Filter>common</Filter> </ClCompile> @@ -30,6 +33,9 @@ <ClInclude Include="..\src\common\core.h"> <Filter>common</Filter> </ClInclude> + <ClInclude Include="..\src\common\des.h"> + <Filter>common</Filter> + </ClInclude> <ClInclude Include="..\src\common\grfio.h"> <Filter>common</Filter> </ClInclude> diff --git a/vcproj-6/char-server_sql.dsp b/vcproj-6/char-server_sql.dsp deleted file mode 100644 index f64c8d67e..000000000 --- a/vcproj-6/char-server_sql.dsp +++ /dev/null @@ -1,324 +0,0 @@ -# Microsoft Developer Studio Project File - Name="char_sql" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=char_sql - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "char-server_sql.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "char-server_sql.mak" CFG="char_sql - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "char_sql - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "char_sql - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "char_sql - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".." -# PROP Intermediate_Dir "tmp\char_sql\Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Zi /O2 /I "..\3rdparty\msinttypes\include" /I "..\3rdparty\mysql\include" /I "..\3rdparty\mt19937ar" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "__WIN32" /D FD_SETSIZE=4096 /D "DB_MANUAL_CAST_TO_UNION" /FD /GF /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x405 /d "NDEBUG" -# ADD RSC /l 0x417 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib ws2_32.lib libmysql.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"..\3rdparty\mysql\lib" - -!ELSEIF "$(CFG)" == "char_sql - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir ".." -# PROP Intermediate_Dir "tmp\char_sql\Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /Gi /ZI /Od /I "..\3rdparty\msinttypes\include" /I "..\3rdparty\mysql\include" /I "..\3rdparty\mt19937ar" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "__WIN32" /D FD_SETSIZE=4096 /D "DB_MANUAL_CAST_TO_UNION" /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x405 /d "_DEBUG" -# ADD RSC /l 0x417 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib ws2_32.lib libmysql.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\3rdparty\mysql\lib" - -!ENDIF - -# Begin Target - -# Name "char_sql - Win32 Release" -# Name "char_sql - Win32 Debug" -# Begin Group "3rdparty" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\3rdparty\mt19937ar\mt19937ar.c -# End Source File -# Begin Source File - -SOURCE=..\3rdparty\mt19937ar\mt19937ar.h -# End Source File -# End Group -# Begin Group "common" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\src\common\cbasetypes.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\core.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\core.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\db.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\db.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\ers.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\ers.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\malloc.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\malloc.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\mapindex.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\mapindex.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\mmo.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\nullpo.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\nullpo.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\plugin.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\plugins.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\plugins.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\random.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\random.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\showmsg.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\showmsg.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\socket.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\socket.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\sql.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\sql.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\strlib.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\strlib.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\timer.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\timer.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\utils.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\utils.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\version.h -# End Source File -# End Group -# Begin Group "char_sql" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\src\char_sql\char.c -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\char.h -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_auction.c -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_auction.h -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_guild.c -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_guild.h -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_homun.c -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_homun.h -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_mail.c -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_mail.h -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_mercenary.c -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_mercenary.h -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_party.c -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_party.h -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_pet.c -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_pet.h -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_quest.c -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_quest.h -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_storage.c -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_storage.h -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\inter.c -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\inter.h -# End Source File -# End Group -# End Target -# End Project diff --git a/vcproj-6/char-server_txt.dsp b/vcproj-6/char-server_txt.dsp deleted file mode 100644 index e5d9db918..000000000 --- a/vcproj-6/char-server_txt.dsp +++ /dev/null @@ -1,300 +0,0 @@ -# Microsoft Developer Studio Project File - Name="char_txt" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=char_txt - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "char-server_txt.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "char-server_txt.mak" CFG="char_txt - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "char_txt - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "char_txt - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "char_txt - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".." -# PROP Intermediate_Dir "tmp\char_txt\Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Zi /O2 /I "..\3rdparty\msinttypes\include" /I "..\3rdparty\mt19937ar" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "__WIN32" /D FD_SETSIZE=4096 /D "DB_MANUAL_CAST_TO_UNION" /D "TXT_ONLY" /FD /GF /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x405 /d "NDEBUG" -# ADD RSC /l 0x417 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 - -!ELSEIF "$(CFG)" == "char_txt - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir ".." -# PROP Intermediate_Dir "tmp\char_txt\Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /Gi /ZI /Od /I "..\3rdparty\msinttypes\include" /I "..\3rdparty\mt19937ar" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "__WIN32" /D FD_SETSIZE=4096 /D "DB_MANUAL_CAST_TO_UNION" /D "TXT_ONLY" /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x405 /d "_DEBUG" -# ADD RSC /l 0x417 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "char_txt - Win32 Release" -# Name "char_txt - Win32 Debug" -# Begin Group "3rdparty" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\3rdparty\mt19937ar\mt19937ar.c -# End Source File -# Begin Source File - -SOURCE=..\3rdparty\mt19937ar\mt19937ar.h -# End Source File -# End Group -# Begin Group "common" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\src\common\cbasetypes.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\core.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\core.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\db.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\db.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\ers.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\ers.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\lock.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\lock.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\malloc.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\malloc.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\mapindex.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\mapindex.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\mmo.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\nullpo.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\nullpo.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\plugin.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\plugins.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\plugins.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\random.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\random.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\showmsg.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\showmsg.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\socket.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\socket.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\strlib.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\strlib.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\timer.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\timer.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\utils.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\utils.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\version.h -# End Source File -# End Group -# Begin Group "char_txt" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\src\char\char.c -# End Source File -# Begin Source File - -SOURCE=..\src\char\char.h -# End Source File -# Begin Source File - -SOURCE=..\src\char\int_guild.c -# End Source File -# Begin Source File - -SOURCE=..\src\char\int_guild.h -# End Source File -# Begin Source File - -SOURCE=..\src\char\int_homun.c -# End Source File -# Begin Source File - -SOURCE=..\src\char\int_homun.h -# End Source File -# Begin Source File - -SOURCE=..\src\char\int_party.c -# End Source File -# Begin Source File - -SOURCE=..\src\char\int_party.h -# End Source File -# Begin Source File - -SOURCE=..\src\char\int_pet.c -# End Source File -# Begin Source File - -SOURCE=..\src\char\int_pet.h -# End Source File -# Begin Source File - -SOURCE=..\src\char\int_status.c -# End Source File -# Begin Source File - -SOURCE=..\src\char\int_status.h -# End Source File -# Begin Source File - -SOURCE=..\src\char\int_storage.c -# End Source File -# Begin Source File - -SOURCE=..\src\char\int_storage.h -# End Source File -# Begin Source File - -SOURCE=..\src\char\inter.c -# End Source File -# Begin Source File - -SOURCE=..\src\char\inter.h -# End Source File -# End Group -# End Target -# End Project diff --git a/vcproj-6/login-server_sql.dsp b/vcproj-6/login-server_sql.dsp deleted file mode 100644 index 54c953466..000000000 --- a/vcproj-6/login-server_sql.dsp +++ /dev/null @@ -1,276 +0,0 @@ -# Microsoft Developer Studio Project File - Name="login_sql" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=login_sql - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "login-server_sql.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "login-server_sql.mak" CFG="login_sql - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "login_sql - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "login_sql - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "login_sql - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".." -# PROP Intermediate_Dir "tmp\login_sql\Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Zi /O2 /I "..\3rdparty\msinttypes\include" /I "..\3rdparty\mysql\include" /I "..\3rdparty\mt19937ar" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "__WIN32" /D FD_SETSIZE=4096 /D "DB_MANUAL_CAST_TO_UNION" /D "WITH_SQL" /FD /GF /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x405 /d "NDEBUG" -# ADD RSC /l 0x417 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib ws2_32.lib libmysql.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"..\3rdparty\mysql\lib" - -!ELSEIF "$(CFG)" == "login_sql - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir ".." -# PROP Intermediate_Dir "tmp\login_sql\Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /Gi /ZI /Od /I "..\3rdparty\msinttypes\include" /I "..\3rdparty\mysql\include" /I "..\3rdparty\mt19937ar" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "__WIN32" /D FD_SETSIZE=4096 /D "DB_MANUAL_CAST_TO_UNION" /D "WITH_SQL" /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x405 /d "_DEBUG" -# ADD RSC /l 0x417 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib ws2_32.lib libmysql.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\3rdparty\mysql\lib" - -!ENDIF - -# Begin Target - -# Name "login_sql - Win32 Release" -# Name "login_sql - Win32 Debug" -# Begin Group "3rdparty" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\3rdparty\mt19937ar\mt19937ar.c -# End Source File -# Begin Source File - -SOURCE=..\3rdparty\mt19937ar\mt19937ar.h -# End Source File -# End Group -# Begin Group "common" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\src\common\cbasetypes.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\core.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\core.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\db.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\db.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\ers.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\ers.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\malloc.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\malloc.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\mapindex.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\mapindex.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\md5calc.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\md5calc.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\mmo.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\nullpo.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\nullpo.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\plugin.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\plugins.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\plugins.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\random.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\random.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\showmsg.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\showmsg.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\socket.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\socket.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\sql.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\sql.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\strlib.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\strlib.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\timer.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\timer.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\utils.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\utils.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\version.h -# End Source File -# End Group -# Begin Group "login_sql" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\src\login\account.h -# End Source File -# Begin Source File - -SOURCE=..\src\login\account_sql.c -# End Source File -# Begin Source File - -SOURCE=..\src\login\ipban.h -# End Source File -# Begin Source File - -SOURCE=..\src\login\ipban_sql.c -# End Source File -# Begin Source File - -SOURCE=..\src\login\login.c -# End Source File -# Begin Source File - -SOURCE=..\src\login\login.h -# End Source File -# Begin Source File - -SOURCE=..\src\login\loginlog.h -# End Source File -# Begin Source File - -SOURCE=..\src\login\loginlog_sql.c -# End Source File -# End Group -# End Target -# End Project diff --git a/vcproj-6/login-server_txt.dsp b/vcproj-6/login-server_txt.dsp deleted file mode 100644 index 642375fb7..000000000 --- a/vcproj-6/login-server_txt.dsp +++ /dev/null @@ -1,276 +0,0 @@ -# Microsoft Developer Studio Project File - Name="login_txt" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=login_txt - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "login-server_txt.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "login-server_txt.mak" CFG="login_txt - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "login_txt - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "login_txt - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "login_txt - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".." -# PROP Intermediate_Dir "tmp\login_txt\Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Zi /O2 /I "..\3rdparty\msinttypes\include" /I "..\3rdparty\mt19937ar" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "__WIN32" /D FD_SETSIZE=4096 /D "DB_MANUAL_CAST_TO_UNION" /D "WITH_TXT" /FD /GF /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x405 /d "NDEBUG" -# ADD RSC /l 0x417 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 - -!ELSEIF "$(CFG)" == "login_txt - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir ".." -# PROP Intermediate_Dir "tmp\login_txt\Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /Gi /ZI /Od /I "..\3rdparty\msinttypes\include" /I "..\3rdparty\mt19937ar" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "__WIN32" /D FD_SETSIZE=4096 /D "DB_MANUAL_CAST_TO_UNION" /D "WITH_TXT" /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x405 /d "_DEBUG" -# ADD RSC /l 0x417 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "login_txt - Win32 Release" -# Name "login_txt - Win32 Debug" -# Begin Group "3rdparty" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\3rdparty\mt19937ar\mt19937ar.c -# End Source File -# Begin Source File - -SOURCE=..\3rdparty\mt19937ar\mt19937ar.h -# End Source File -# End Group -# Begin Group "common" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\src\common\cbasetypes.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\core.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\core.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\db.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\db.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\ers.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\ers.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\lock.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\lock.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\malloc.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\malloc.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\mapindex.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\mapindex.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\md5calc.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\md5calc.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\mmo.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\nullpo.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\nullpo.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\plugin.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\plugins.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\plugins.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\random.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\random.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\showmsg.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\showmsg.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\socket.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\socket.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\strlib.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\strlib.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\timer.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\timer.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\utils.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\utils.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\version.h -# End Source File -# End Group -# Begin Group "login_txt" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\src\login\account.h -# End Source File -# Begin Source File - -SOURCE=..\src\login\account_txt.c -# End Source File -# Begin Source File - -SOURCE=..\src\login\ipban.h -# End Source File -# Begin Source File - -SOURCE=..\src\login\ipban_txt.c -# End Source File -# Begin Source File - -SOURCE=..\src\login\login.c -# End Source File -# Begin Source File - -SOURCE=..\src\login\login.h -# End Source File -# Begin Source File - -SOURCE=..\src\login\loginlog.h -# End Source File -# Begin Source File - -SOURCE=..\src\login\loginlog_txt.c -# End Source File -# End Group -# End Target -# End Project diff --git a/vcproj-6/map-server_sql.dsp b/vcproj-6/map-server_sql.dsp deleted file mode 100644 index 9246c6b17..000000000 --- a/vcproj-6/map-server_sql.dsp +++ /dev/null @@ -1,528 +0,0 @@ -# Microsoft Developer Studio Project File - Name="map_sql" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=map_sql - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "map-server_sql.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "map-server_sql.mak" CFG="map_sql - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "map_sql - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "map_sql - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "map_sql - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".." -# PROP Intermediate_Dir "tmp\map_sql\Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Zi /O2 /I "..\3rdparty\mysql\include" /I "..\3rdparty\msinttypes\include" /I "..\3rdparty\pcre\include" /I "..\3rdparty\zlib\include" /I "..\3rdparty\mt19937ar" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "__WIN32" /D FD_SETSIZE=4096 /D "DB_MANUAL_CAST_TO_UNION" /D "PCRE_SUPPORT" /FD /GF /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x405 /d "NDEBUG" -# ADD RSC /l 0x417 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 libmysql.lib kernel32.lib ws2_32.lib pcre.lib zdll.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"..\3rdparty\mysql\lib" /libpath:"..\3rdparty\pcre\lib" /libpath:"..\3rdparty\zlib\lib" - -!ELSEIF "$(CFG)" == "map_sql - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir ".." -# PROP Intermediate_Dir "tmp\map_sql\Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /Gi /ZI /Od /I "..\3rdparty\mysql\include" /I "..\3rdparty\msinttypes\include" /I "..\3rdparty\pcre\include" /I "..\3rdparty\zlib\include" /I "..\3rdparty\mt19937ar" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "__WIN32" /D FD_SETSIZE=4096 /D "DB_MANUAL_CAST_TO_UNION" /D "PCRE_SUPPORT" /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x405 /d "_DEBUG" -# ADD RSC /l 0x417 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 libmysql.lib kernel32.lib ws2_32.lib pcre.lib zdll.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\3rdparty\mysql\lib" /libpath:"..\3rdparty\pcre\lib" /libpath:"..\3rdparty\zlib\lib" - -!ENDIF - -# Begin Target - -# Name "map_sql - Win32 Release" -# Name "map_sql - Win32 Debug" -# Begin Group "3rdparty" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\3rdparty\mt19937ar\mt19937ar.c -# End Source File -# Begin Source File - -SOURCE=..\3rdparty\mt19937ar\mt19937ar.h -# End Source File -# End Group -# Begin Group "common" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\src\common\cbasetypes.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\core.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\core.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\db.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\db.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\ers.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\ers.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\grfio.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\grfio.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\malloc.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\malloc.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\mapindex.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\mapindex.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\md5calc.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\md5calc.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\mmo.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\nullpo.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\nullpo.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\plugin.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\plugins.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\plugins.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\random.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\random.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\showmsg.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\showmsg.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\socket.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\socket.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\sql.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\sql.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\strlib.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\strlib.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\timer.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\timer.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\utils.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\utils.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\version.h -# End Source File -# End Group -# Begin Group "map_sql" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\src\map\atcommand.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\atcommand.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\battle.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\battle.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\battleground.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\battleground.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\buyingstore.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\buyingstore.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\chat.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\chat.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\chrif.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\chrif.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\clif.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\clif.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\date.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\date.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\duel.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\duel.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\guild.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\guild.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\homunculus.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\homunculus.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\instance.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\instance.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\intif.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\intif.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\itemdb.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\itemdb.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\log.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\log.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\mail.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\mail.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\map.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\map.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\mapreg.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\mapreg_sql.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\mercenary.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\mercenary.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\mob.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\mob.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\npc.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\npc.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\npc_chat.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\party.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\party.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\path.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\path.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\pc.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\pc.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\pet.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\pet.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\quest.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\quest.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\script.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\script.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\searchstore.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\searchstore.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\skill.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\skill.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\status.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\status.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\storage.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\storage.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\trade.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\trade.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\unit.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\unit.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\vending.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\vending.h -# End Source File -# End Group -# End Target -# End Project diff --git a/vcproj-6/map-server_txt.dsp b/vcproj-6/map-server_txt.dsp deleted file mode 100644 index 00e4cf716..000000000 --- a/vcproj-6/map-server_txt.dsp +++ /dev/null @@ -1,528 +0,0 @@ -# Microsoft Developer Studio Project File - Name="map_txt" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=map_txt - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "map-server_txt.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "map-server_txt.mak" CFG="map_txt - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "map_txt - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "map_txt - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "map_txt - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".." -# PROP Intermediate_Dir "tmp\map_txt\Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Zi /O2 /I "..\3rdparty\msinttypes\include" /I "..\3rdparty\pcre\include" /I "..\3rdparty\zlib\include" /I "..\3rdparty\mt19937ar" /D "NDEBUG" /D "TXT_ONLY" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "__WIN32" /D FD_SETSIZE=4096 /D "DB_MANUAL_CAST_TO_UNION" /D "PCRE_SUPPORT" /FD /GF /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x405 /d "NDEBUG" -# ADD RSC /l 0x417 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib ws2_32.lib pcre.lib zdll.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"..\3rdparty\pcre\lib" /libpath:"..\3rdparty\zlib\lib" - -!ELSEIF "$(CFG)" == "map_txt - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir ".." -# PROP Intermediate_Dir "tmp\map_txt\Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /Gi /ZI /Od /I "..\3rdparty\msinttypes\include" /I "..\3rdparty\pcre\include" /I "..\3rdparty\zlib\include" /I "..\3rdparty\mt19937ar" /D "_DEBUG" /D "TXT_ONLY" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "__WIN32" /D FD_SETSIZE=4096 /D "DB_MANUAL_CAST_TO_UNION" /D "PCRE_SUPPORT" /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x405 /d "_DEBUG" -# ADD RSC /l 0x417 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib ws2_32.lib pcre.lib zdll.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\3rdparty\pcre\lib" /libpath:"..\3rdparty\zlib\lib" - -!ENDIF - -# Begin Target - -# Name "map_txt - Win32 Release" -# Name "map_txt - Win32 Debug" -# Begin Group "3rdparty" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\3rdparty\mt19937ar\mt19937ar.c -# End Source File -# Begin Source File - -SOURCE=..\3rdparty\mt19937ar\mt19937ar.h -# End Source File -# End Group -# Begin Group "common" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\src\common\cbasetypes.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\core.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\core.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\db.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\db.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\ers.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\ers.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\grfio.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\grfio.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\lock.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\lock.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\malloc.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\malloc.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\mapindex.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\mapindex.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\md5calc.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\md5calc.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\mmo.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\nullpo.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\nullpo.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\plugin.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\plugins.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\plugins.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\random.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\random.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\showmsg.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\showmsg.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\socket.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\socket.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\strlib.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\strlib.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\timer.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\timer.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\utils.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\utils.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\version.h -# End Source File -# End Group -# Begin Group "map_txt" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\src\map\atcommand.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\atcommand.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\battle.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\battle.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\battleground.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\battleground.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\buyingstore.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\buyingstore.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\chat.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\chat.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\chrif.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\chrif.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\clif.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\clif.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\date.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\date.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\duel.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\duel.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\guild.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\guild.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\homunculus.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\homunculus.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\instance.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\instance.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\intif.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\intif.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\itemdb.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\itemdb.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\log.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\log.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\mail.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\mail.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\map.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\map.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\mapreg.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\mapreg_txt.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\mercenary.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\mercenary.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\mob.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\mob.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\npc.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\npc.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\npc_chat.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\party.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\party.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\path.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\path.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\pc.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\pc.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\pet.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\pet.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\quest.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\quest.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\script.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\script.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\searchstore.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\searchstore.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\skill.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\skill.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\status.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\status.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\storage.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\storage.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\trade.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\trade.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\unit.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\unit.h -# End Source File -# Begin Source File - -SOURCE=..\src\map\vending.c -# End Source File -# Begin Source File - -SOURCE=..\src\map\vending.h -# End Source File -# End Group -# End Target -# End Project diff --git a/vcproj-6/mapcache.dsp b/vcproj-6/mapcache.dsp deleted file mode 100644 index 015835d2d..000000000 --- a/vcproj-6/mapcache.dsp +++ /dev/null @@ -1,160 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mapcache" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mapcache - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mapcache.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mapcache.mak" CFG="mapcache - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mapcache - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "mapcache - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mapcache - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".." -# PROP Intermediate_Dir "tmp\mapcache\Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Zi /O2 /I "..\3rdparty\msinttypes\include" /I "..\3rdparty\zlib\include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "__WIN32" /D "MINICORE" /FD /GF /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x405 /d "NDEBUG" -# ADD RSC /l 0x417 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib zdll.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"..\3rdparty\zlib\lib" - -!ELSEIF "$(CFG)" == "mapcache - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir ".." -# PROP Intermediate_Dir "tmp\mapcache\Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /Gi /ZI /Od /I "..\3rdparty\msinttypes\include" /I "..\3rdparty\zlib\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "__WIN32" /D "MINICORE" /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x405 /d "_DEBUG" -# ADD RSC /l 0x417 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib zdll.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\3rdparty\zlib\lib" - -!ENDIF - -# Begin Target - -# Name "mapcache - Win32 Release" -# Name "mapcache - Win32 Debug" -# Begin Group "common" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\src\common\cbasetypes.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\core.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\core.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\grfio.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\grfio.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\malloc.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\malloc.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\mmo.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\showmsg.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\showmsg.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\strlib.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\strlib.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\utils.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\utils.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\version.h -# End Source File -# End Group -# Begin Group "mapcache" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\src\tool\mapcache.c -# End Source File -# End Group -# End Target -# End Project diff --git a/vcproj-6/plugin-console.dsp b/vcproj-6/plugin-console.dsp deleted file mode 100644 index 3794e60ed..000000000 --- a/vcproj-6/plugin-console.dsp +++ /dev/null @@ -1,107 +0,0 @@ -# Microsoft Developer Studio Project File - Name="plugin_console" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=plugin_console - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "plugin-console.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "plugin-console.mak" CFG="plugin_console - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "plugin_console - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "plugin_console - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "plugin_console - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\plugins" -# PROP Intermediate_Dir "tmp\plugin_console\Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CONSOLE_EXPORTS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /O2 /I "..\3rdparty\msinttypes\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_WIN32" /D "__WIN32" /FD /c -# SUBTRACT CPP /YX -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /Oicf /win32 -# SUBTRACT MTL /mktyplib203 -# ADD BASE RSC /l 0x405 /d "NDEBUG" -# ADD RSC /l 0x417 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib /nologo /dll /machine:I386 /out:"..\plugins\console.dll" - -!ELSEIF "$(CFG)" == "plugin_console - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\plugins" -# PROP Intermediate_Dir "tmp\plugin_console\Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CONSOLE_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "..\3rdparty\msinttypes\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_WIN32" /D "__WIN32" /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /Oicf /win32 -# SUBTRACT MTL /mktyplib203 -# ADD BASE RSC /l 0x405 /d "_DEBUG" -# ADD RSC /l 0x417 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib /nologo /dll /debug /machine:I386 /out:"..\plugins\console.dll" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "plugin_console - Win32 Release" -# Name "plugin_console - Win32 Debug" -# Begin Group "console" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\src\plugins\console.c -# End Source File -# Begin Source File - -SOURCE=..\src\plugins\console.def -# End Source File -# End Group -# End Target -# End Project diff --git a/vcproj-6/plugin-pid.dsp b/vcproj-6/plugin-pid.dsp deleted file mode 100644 index b9dc130e9..000000000 --- a/vcproj-6/plugin-pid.dsp +++ /dev/null @@ -1,107 +0,0 @@ -# Microsoft Developer Studio Project File - Name="plugin_pid" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=plugin_pid - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "plugin-pid.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "plugin-pid.mak" CFG="plugin_pid - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "plugin_pid - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "plugin_pid - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "plugin_pid - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\plugins" -# PROP Intermediate_Dir "tmp\plugin_pid\Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PID_EXPORTS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /O2 /I "..\3rdparty\msinttypes\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_WIN32" /D "__WIN32" /FD /c -# SUBTRACT CPP /YX -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /Oicf /win32 -# SUBTRACT MTL /mktyplib203 -# ADD BASE RSC /l 0x405 /d "NDEBUG" -# ADD RSC /l 0x417 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib /nologo /dll /machine:I386 /out:"..\plugins\pid.dll" - -!ELSEIF "$(CFG)" == "plugin_pid - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\plugins" -# PROP Intermediate_Dir "tmp\plugin_pid\Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PID_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "..\3rdparty\msinttypes\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_WIN32" /D "__WIN32" /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /Oicf /win32 -# SUBTRACT MTL /mktyplib203 -# ADD BASE RSC /l 0x405 /d "_DEBUG" -# ADD RSC /l 0x417 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib /nologo /dll /debug /machine:I386 /out:"..\plugins\pid.dll" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "plugin_pid - Win32 Release" -# Name "plugin_pid - Win32 Debug" -# Begin Group "pid" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\src\plugins\pid.c -# End Source File -# Begin Source File - -SOURCE=..\src\plugins\pid.def -# End Source File -# End Group -# End Target -# End Project diff --git a/vcproj-6/txt-converter-char.dsp b/vcproj-6/txt-converter-char.dsp deleted file mode 100644 index 0a6684e32..000000000 --- a/vcproj-6/txt-converter-char.dsp +++ /dev/null @@ -1,576 +0,0 @@ -# Microsoft Developer Studio Project File - Name="txt_converter_char" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=txt_converter_char - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "txt-converter-char.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "txt-converter-char.mak" CFG="txt_converter_char - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "txt_converter_char - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "txt_converter_char - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".." -# PROP Intermediate_Dir "tmp\txt_converter_char\Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /O2 /I "..\3rdparty\msinttypes\include" /I "..\3rdparty\mysql\include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "__WIN32" /D "DB_MANUAL_CAST_TO_UNION" /D "MINICORE" /D "TXT_SQL_CONVERT" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x405 /d "NDEBUG" -# ADD RSC /l 0x417 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib libmysql.lib /nologo /subsystem:console /machine:I386 /libpath:"..\3rdparty\mysql\lib" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir ".." -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /ZI /Od /I "..\3rdparty\msinttypes\include" /I "..\3rdparty\mysql\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "__WIN32" /D "DB_MANUAL_CAST_TO_UNION" /D "MINICORE" /D "TXT_SQL_CONVERT" /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x405 /d "_DEBUG" -# ADD RSC /l 0x417 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib libmysql.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\3rdparty\mysql\lib" - -!ENDIF - -# Begin Target - -# Name "txt_converter_char - Win32 Release" -# Name "txt_converter_char - Win32 Debug" -# Begin Group "common" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\src\common\cbasetypes.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\core.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\core.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\db.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\db.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\ers.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\ers.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\lock.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\lock.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\malloc.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\malloc.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\mapindex.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\mapindex.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\mmo.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\showmsg.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\showmsg.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\sql.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\sql.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\strlib.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\strlib.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\timer.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\timer.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\utils.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\utils.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\version.h -# End Source File -# End Group -# Begin Group "char_sql" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\src\char_sql\char.c - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_sql" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_sql" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\char.h - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_sql" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_sql" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_guild.c - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_sql" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_sql" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_guild.h - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_sql" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_sql" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_mercenary.c -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_mercenary.h -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_party.c - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_sql" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_sql" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_party.h - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_sql" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_sql" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_pet.c - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_sql" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_sql" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_pet.h - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_sql" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_sql" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_storage.c - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_sql" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_sql" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\int_storage.h - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_sql" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_sql" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\inter.c - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_sql" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_sql" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char_sql\inter.h - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_sql" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_sql" - -!ENDIF - -# End Source File -# End Group -# Begin Group "char_txt" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\src\char\char.c - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_txt" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_txt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char\char.h - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_txt" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_txt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char\int_guild.c - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_txt" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_txt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char\int_guild.h - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_txt" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_txt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char\int_party.c - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_txt" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_txt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char\int_party.h - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_txt" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_txt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char\int_pet.c - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_txt" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_txt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char\int_pet.h - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_txt" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_txt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char\int_storage.c - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_txt" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_txt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char\int_storage.h - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_txt" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_txt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char\inter.c - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_txt" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_txt" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\src\char\inter.h - -!IF "$(CFG)" == "txt_converter_char - Win32 Release" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Release\char_txt" - -!ELSEIF "$(CFG)" == "txt_converter_char - Win32 Debug" - -# PROP Intermediate_Dir "tmp\txt_converter_char\Debug\char_txt" - -!ENDIF - -# End Source File -# End Group -# Begin Group "converter" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE="..\src\txt-converter\char-converter.c" -# End Source File -# End Group -# End Target -# End Project diff --git a/vcproj-6/txt-converter-login.dsp b/vcproj-6/txt-converter-login.dsp deleted file mode 100644 index a5afb569a..000000000 --- a/vcproj-6/txt-converter-login.dsp +++ /dev/null @@ -1,200 +0,0 @@ -# Microsoft Developer Studio Project File - Name="txt_converter_login" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=txt_converter_login - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "txt-converter-login.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "txt-converter-login.mak" CFG="txt_converter_login - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "txt_converter_login - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "txt_converter_login - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "txt_converter_login - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".." -# PROP Intermediate_Dir "tmp\txt_converter_login\Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /O2 /I "..\3rdparty\msinttypes\include" /I "..\3rdparty\mysql\include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "__WIN32" /D "DB_MANUAL_CAST_TO_UNION" /D "MINICORE" /D "TXT_SQL_CONVERT" /D "WITH_SQL" /D "WITH_TXT" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x405 /d "NDEBUG" -# ADD RSC /l 0x417 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib libmysql.lib /nologo /subsystem:console /machine:I386 /libpath:"..\3rdparty\mysql\lib" - -!ELSEIF "$(CFG)" == "txt_converter_login - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir ".." -# PROP Intermediate_Dir "tmp\txt_converter_login\Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /ZI /Od /I "..\3rdparty\msinttypes\include" /I "..\3rdparty\mysql\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "__WIN32" /D "DB_MANUAL_CAST_TO_UNION" /D "MINICORE" /D "TXT_SQL_CONVERT" /D "WITH_SQL" /D "WITH_TXT" /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x405 /d "_DEBUG" -# ADD RSC /l 0x417 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib libmysql.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\3rdparty\mysql\lib" - -!ENDIF - -# Begin Target - -# Name "txt_converter_login - Win32 Release" -# Name "txt_converter_login - Win32 Debug" -# Begin Group "common" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\src\common\cbasetypes.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\core.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\core.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\db.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\db.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\ers.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\ers.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\lock.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\lock.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\malloc.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\malloc.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\mmo.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\showmsg.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\showmsg.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\sql.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\sql.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\strlib.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\timer.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\timer.h -# End Source File -# Begin Source File - -SOURCE=..\src\common\utils.c -# End Source File -# Begin Source File - -SOURCE=..\src\common\version.h -# End Source File -# End Group -# Begin Group "login" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\src\login\account.h -# End Source File -# Begin Source File - -SOURCE=..\src\login\account_sql.c -# End Source File -# Begin Source File - -SOURCE=..\src\login\account_txt.c -# End Source File -# End Group -# Begin Group "converter" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE="..\src\txt-converter\login-converter.c" -# End Source File -# End Group -# End Target -# End Project diff --git a/vcproj-7.1/char-server_sql.vcproj b/vcproj-7.1/char-server_sql.vcproj deleted file mode 100644 index 02ad69ff8..000000000 --- a/vcproj-7.1/char-server_sql.vcproj +++ /dev/null @@ -1,332 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="7.10" - Name="char-server_sql" - ProjectGUID="{D356871D-58E1-450B-967A-E4E9646175AF}" - RootNamespace="char-server_sql" - Keyword="Win32Proj"> - <Platforms> - <Platform - Name="Win32"/> - </Platforms> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="2"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\3rdparty\mysql\include;..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION" - GeneratePreprocessedFile="0" - MinimalRebuild="TRUE" - ExceptionHandling="FALSE" - BasicRuntimeChecks="3" - RuntimeLibrary="3" - BufferSecurityCheck="TRUE" - EnableFunctionLevelLinking="TRUE" - DefaultCharIsUnsigned="FALSE" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="FALSE" - DebugInformationFormat="4" - CompileAs="1"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="msvcrtd.lib oldnames.lib ws2_32.lib libmysql.lib" - OutputFile="$(OutDir)\char-server_sql.exe" - LinkIncremental="2" - AdditionalLibraryDirectories="..\3rdparty\mysql\lib" - IgnoreAllDefaultLibraries="TRUE" - GenerateDebugInformation="TRUE" - ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb" - SubSystem="1" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCWebDeploymentTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="2" - WholeProgramOptimization="TRUE"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - GlobalOptimizations="TRUE" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="TRUE" - ImproveFloatingPointConsistency="TRUE" - FavorSizeOrSpeed="1" - OmitFramePointers="TRUE" - EnableFiberSafeOptimizations="TRUE" - OptimizeForProcessor="2" - OptimizeForWindowsApplication="TRUE" - AdditionalIncludeDirectories="..\3rdparty\mysql\include;..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;NDEBUG;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION" - StringPooling="TRUE" - RuntimeLibrary="3" - DefaultCharIsUnsigned="FALSE" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="FALSE" - DebugInformationFormat="3" - CompileAs="1"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="msvcrt.lib oldnames.lib ws2_32.lib libmysql.lib" - OutputFile="$(OutDir)\char-server_sql.exe" - LinkIncremental="1" - AdditionalLibraryDirectories="..\3rdparty\mysql\lib" - IgnoreAllDefaultLibraries="TRUE" - IgnoreDefaultLibraryNames="" - GenerateDebugInformation="TRUE" - ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - OptimizeForWindows98="1" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCWebDeploymentTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="char_sql" - Filter=""> - <File - RelativePath="..\src\char_sql\char.c"> - </File> - <File - RelativePath="..\src\char_sql\char.h"> - </File> - <File - RelativePath="..\src\char_sql\int_auction.c"> - </File> - <File - RelativePath="..\src\char_sql\int_auction.h"> - </File> - <File - RelativePath="..\src\char_sql\int_guild.c"> - </File> - <File - RelativePath="..\src\char_sql\int_guild.h"> - </File> - <File - RelativePath="..\src\char_sql\int_homun.c"> - </File> - <File - RelativePath="..\src\char_sql\int_homun.h"> - </File> - <File - RelativePath="..\src\char_sql\int_mail.c"> - </File> - <File - RelativePath="..\src\char_sql\int_mail.h"> - </File> - <File - RelativePath="..\src\char_sql\int_mercenary.c"> - </File> - <File - RelativePath="..\src\char_sql\int_mercenary.h"> - </File> - <File - RelativePath="..\src\char_sql\int_party.c"> - </File> - <File - RelativePath="..\src\char_sql\int_party.h"> - </File> - <File - RelativePath="..\src\char_sql\int_pet.c"> - </File> - <File - RelativePath="..\src\char_sql\int_pet.h"> - </File> - <File - RelativePath="..\src\char_sql\int_quest.c"> - </File> - <File - RelativePath="..\src\char_sql\int_quest.h"> - </File> - <File - RelativePath="..\src\char_sql\int_storage.c"> - </File> - <File - RelativePath="..\src\char_sql\int_storage.h"> - </File> - <File - RelativePath="..\src\char_sql\inter.c"> - </File> - <File - RelativePath="..\src\char_sql\inter.h"> - </File> - </Filter> - <Filter - Name="common" - Filter=""> - <File - RelativePath="..\src\common\cbasetypes.h"> - </File> - <File - RelativePath="..\src\common\core.c"> - </File> - <File - RelativePath="..\src\common\core.h"> - </File> - <File - RelativePath="..\src\common\db.c"> - </File> - <File - RelativePath="..\src\common\db.h"> - </File> - <File - RelativePath="..\src\common\ers.c"> - </File> - <File - RelativePath="..\src\common\ers.h"> - </File> - <File - RelativePath="..\src\common\lock.c"> - </File> - <File - RelativePath="..\src\common\lock.h"> - </File> - <File - RelativePath="..\src\common\malloc.c"> - </File> - <File - RelativePath="..\src\common\malloc.h"> - </File> - <File - RelativePath="..\src\common\mapindex.c"> - </File> - <File - RelativePath="..\src\common\mapindex.h"> - </File> - <File - RelativePath="..\src\common\mmo.h"> - </File> - <File - RelativePath="..\src\common\nullpo.c"> - </File> - <File - RelativePath="..\src\common\nullpo.h"> - </File> - <File - RelativePath="..\src\common\plugin.h"> - </File> - <File - RelativePath="..\src\common\plugins.c"> - </File> - <File - RelativePath="..\src\common\plugins.h"> - </File> - <File - RelativePath="..\src\common\random.c"> - </File> - <File - RelativePath="..\src\common\random.h"> - </File> - <File - RelativePath="..\src\common\showmsg.c"> - </File> - <File - RelativePath="..\src\common\showmsg.h"> - </File> - <File - RelativePath="..\src\common\socket.c"> - </File> - <File - RelativePath="..\src\common\socket.h"> - </File> - <File - RelativePath="..\src\common\sql.c"> - </File> - <File - RelativePath="..\src\common\sql.h"> - </File> - <File - RelativePath="..\src\common\strlib.c"> - </File> - <File - RelativePath="..\src\common\strlib.h"> - </File> - <File - RelativePath="..\src\common\timer.c"> - </File> - <File - RelativePath="..\src\common\timer.h"> - </File> - <File - RelativePath="..\src\common\utils.c"> - </File> - <File - RelativePath="..\src\common\utils.h"> - </File> - <File - RelativePath="..\src\common\version.h"> - </File> - </Filter> - <Filter - Name="3rdparty" - Filter=""> - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.c"> - </File> - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.h"> - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/vcproj-7.1/char-server_txt.vcproj b/vcproj-7.1/char-server_txt.vcproj deleted file mode 100644 index cf4606143..000000000 --- a/vcproj-7.1/char-server_txt.vcproj +++ /dev/null @@ -1,307 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="7.10" - Name="char-server_txt" - ProjectGUID="{D356871D-58E1-450B-967A-E3E9646175AF}" - RootNamespace="char-server_txt" - Keyword="Win32Proj"> - <Platforms> - <Platform - Name="Win32"/> - </Platforms> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="2"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;TXT_ONLY;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION" - GeneratePreprocessedFile="0" - MinimalRebuild="TRUE" - ExceptionHandling="FALSE" - BasicRuntimeChecks="3" - RuntimeLibrary="3" - BufferSecurityCheck="TRUE" - EnableFunctionLevelLinking="TRUE" - DefaultCharIsUnsigned="FALSE" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="FALSE" - DebugInformationFormat="4" - CompileAs="1"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="msvcrtd.lib oldnames.lib ws2_32.lib" - OutputFile="$(OutDir)\char-server.exe" - LinkIncremental="2" - AdditionalLibraryDirectories="" - IgnoreAllDefaultLibraries="TRUE" - GenerateDebugInformation="TRUE" - ProgramDatabaseFile="$(OutDir)\char-server.pdb" - SubSystem="1" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCWebDeploymentTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="2" - WholeProgramOptimization="TRUE"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - GlobalOptimizations="TRUE" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="TRUE" - ImproveFloatingPointConsistency="TRUE" - FavorSizeOrSpeed="1" - OmitFramePointers="TRUE" - EnableFiberSafeOptimizations="TRUE" - OptimizeForProcessor="2" - OptimizeForWindowsApplication="TRUE" - AdditionalIncludeDirectories="..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;NDEBUG;TXT_ONLY;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION" - StringPooling="TRUE" - RuntimeLibrary="3" - DefaultCharIsUnsigned="FALSE" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="FALSE" - DebugInformationFormat="3" - CompileAs="1"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="msvcrt.lib oldnames.lib ws2_32.lib" - OutputFile="$(OutDir)\char-server.exe" - LinkIncremental="1" - AdditionalLibraryDirectories="" - IgnoreAllDefaultLibraries="TRUE" - GenerateDebugInformation="TRUE" - ProgramDatabaseFile="$(OutDir)\char-server.pdb" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - OptimizeForWindows98="1" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCWebDeploymentTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="char_txt" - Filter=""> - <File - RelativePath="..\src\char\char.c"> - </File> - <File - RelativePath="..\src\char\char.h"> - </File> - <File - RelativePath="..\src\char\int_guild.c"> - </File> - <File - RelativePath="..\src\char\int_guild.h"> - </File> - <File - RelativePath="..\src\char\int_homun.c"> - </File> - <File - RelativePath="..\src\char\int_homun.h"> - </File> - <File - RelativePath="..\src\char\int_party.c"> - </File> - <File - RelativePath="..\src\char\int_party.h"> - </File> - <File - RelativePath="..\src\char\int_pet.c"> - </File> - <File - RelativePath="..\src\char\int_pet.h"> - </File> - <File - RelativePath="..\src\char\int_status.c"> - </File> - <File - RelativePath="..\src\char\int_status.h"> - </File> - <File - RelativePath="..\src\char\int_storage.c"> - </File> - <File - RelativePath="..\src\char\int_storage.h"> - </File> - <File - RelativePath="..\src\char\inter.c"> - </File> - <File - RelativePath="..\src\char\inter.h"> - </File> - </Filter> - <Filter - Name="common" - Filter=""> - <File - RelativePath="..\src\common\cbasetypes.h"> - </File> - <File - RelativePath="..\src\common\core.c"> - </File> - <File - RelativePath="..\src\common\core.h"> - </File> - <File - RelativePath="..\src\common\db.c"> - </File> - <File - RelativePath="..\src\common\db.h"> - </File> - <File - RelativePath="..\src\common\ers.c"> - </File> - <File - RelativePath="..\src\common\ers.h"> - </File> - <File - RelativePath="..\src\common\lock.c"> - </File> - <File - RelativePath="..\src\common\lock.h"> - </File> - <File - RelativePath="..\src\common\malloc.c"> - </File> - <File - RelativePath="..\src\common\malloc.h"> - </File> - <File - RelativePath="..\src\common\mapindex.c"> - </File> - <File - RelativePath="..\src\common\mapindex.h"> - </File> - <File - RelativePath="..\src\common\mmo.h"> - </File> - <File - RelativePath="..\src\common\nullpo.c"> - </File> - <File - RelativePath="..\src\common\nullpo.h"> - </File> - <File - RelativePath="..\src\common\plugin.h"> - </File> - <File - RelativePath="..\src\common\plugins.c"> - </File> - <File - RelativePath="..\src\common\plugins.h"> - </File> - <File - RelativePath="..\src\common\random.c"> - </File> - <File - RelativePath="..\src\common\random.h"> - </File> - <File - RelativePath="..\src\common\showmsg.c"> - </File> - <File - RelativePath="..\src\common\showmsg.h"> - </File> - <File - RelativePath="..\src\common\socket.c"> - </File> - <File - RelativePath="..\src\common\socket.h"> - </File> - <File - RelativePath="..\src\common\strlib.c"> - </File> - <File - RelativePath="..\src\common\strlib.h"> - </File> - <File - RelativePath="..\src\common\timer.c"> - </File> - <File - RelativePath="..\src\common\timer.h"> - </File> - <File - RelativePath="..\src\common\utils.c"> - </File> - <File - RelativePath="..\src\common\utils.h"> - </File> - <File - RelativePath="..\src\common\version.h"> - </File> - </Filter> - <Filter - Name="3rdparty" - Filter=""> - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.c"> - </File> - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.h"> - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/vcproj-7.1/login-server_sql.vcproj b/vcproj-7.1/login-server_sql.vcproj deleted file mode 100644 index 6ffd56f8f..000000000 --- a/vcproj-7.1/login-server_sql.vcproj +++ /dev/null @@ -1,291 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="7.10" - Name="login-server_sql" - ProjectGUID="{D356871D-58E1-450B-967A-E5E9646175AF}" - Keyword="Win32Proj"> - <Platforms> - <Platform - Name="Win32"/> - </Platforms> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="2"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\3rdparty\mysql\include;..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION;WITH_SQL" - GeneratePreprocessedFile="0" - MinimalRebuild="TRUE" - ExceptionHandling="FALSE" - BasicRuntimeChecks="3" - RuntimeLibrary="3" - BufferSecurityCheck="TRUE" - EnableFunctionLevelLinking="TRUE" - DefaultCharIsUnsigned="FALSE" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="FALSE" - DebugInformationFormat="4" - CompileAs="1"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="msvcrtd.lib oldnames.lib ws2_32.lib libmysql.lib" - OutputFile="$(OutDir)\login-server_sql.exe" - LinkIncremental="2" - AdditionalLibraryDirectories="..\3rdparty\mysql\lib" - IgnoreAllDefaultLibraries="TRUE" - GenerateDebugInformation="TRUE" - ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb" - SubSystem="1" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCWebDeploymentTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="2" - WholeProgramOptimization="TRUE"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - GlobalOptimizations="TRUE" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="TRUE" - ImproveFloatingPointConsistency="TRUE" - FavorSizeOrSpeed="1" - OmitFramePointers="TRUE" - EnableFiberSafeOptimizations="TRUE" - OptimizeForProcessor="2" - OptimizeForWindowsApplication="TRUE" - AdditionalIncludeDirectories="..\3rdparty\mysql\include;..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;NDEBUG;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION;WITH_SQL" - StringPooling="TRUE" - RuntimeLibrary="3" - DefaultCharIsUnsigned="FALSE" - UsePrecompiledHeader="0" - PrecompiledHeaderThrough="" - PrecompiledHeaderFile="" - WarningLevel="3" - Detect64BitPortabilityProblems="FALSE" - DebugInformationFormat="3" - CompileAs="1"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="msvcrt.lib oldnames.lib ws2_32.lib libmysql.lib" - OutputFile="$(OutDir)\login-server_sql.exe" - LinkIncremental="1" - AdditionalLibraryDirectories="..\3rdparty\mysql\lib" - IgnoreAllDefaultLibraries="TRUE" - IgnoreDefaultLibraryNames="" - GenerateDebugInformation="TRUE" - ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - OptimizeForWindows98="1" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCWebDeploymentTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="login_sql" - Filter=""> - <File - RelativePath="..\src\login\account.h"> - </File> - <File - RelativePath="..\src\login\account_sql.c"> - </File> - <File - RelativePath="..\src\login\ipban.h"> - </File> - <File - RelativePath="..\src\login\ipban_sql.c"> - </File> - <File - RelativePath="..\src\login\login.c"> - </File> - <File - RelativePath="..\src\login\login.h"> - </File> - <File - RelativePath="..\src\login\loginlog.h"> - </File> - <File - RelativePath="..\src\login\loginlog_sql.c"> - </File> - </Filter> - <Filter - Name="common" - Filter=""> - <File - RelativePath="..\src\common\cbasetypes.h"> - </File> - <File - RelativePath="..\src\common\core.c"> - </File> - <File - RelativePath="..\src\common\core.h"> - </File> - <File - RelativePath="..\src\common\db.c"> - </File> - <File - RelativePath="..\src\common\db.h"> - </File> - <File - RelativePath="..\src\common\ers.c"> - </File> - <File - RelativePath="..\src\common\ers.h"> - </File> - <File - RelativePath="..\src\common\lock.c"> - </File> - <File - RelativePath="..\src\common\lock.h"> - </File> - <File - RelativePath="..\src\common\malloc.c"> - </File> - <File - RelativePath="..\src\common\malloc.h"> - </File> - <File - RelativePath="..\src\common\md5calc.c"> - </File> - <File - RelativePath="..\src\common\md5calc.h"> - </File> - <File - RelativePath="..\src\common\mmo.h"> - </File> - <File - RelativePath="..\src\common\nullpo.c"> - </File> - <File - RelativePath="..\src\common\nullpo.h"> - </File> - <File - RelativePath="..\src\common\plugin.h"> - </File> - <File - RelativePath="..\src\common\plugins.c"> - </File> - <File - RelativePath="..\src\common\plugins.h"> - </File> - <File - RelativePath="..\src\common\random.c"> - </File> - <File - RelativePath="..\src\common\random.h"> - </File> - <File - RelativePath="..\src\common\showmsg.c"> - </File> - <File - RelativePath="..\src\common\showmsg.h"> - </File> - <File - RelativePath="..\src\common\socket.c"> - </File> - <File - RelativePath="..\src\common\socket.h"> - </File> - <File - RelativePath="..\src\common\sql.c"> - </File> - <File - RelativePath="..\src\common\sql.h"> - </File> - <File - RelativePath="..\src\common\strlib.c"> - </File> - <File - RelativePath="..\src\common\strlib.h"> - </File> - <File - RelativePath="..\src\common\timer.c"> - </File> - <File - RelativePath="..\src\common\timer.h"> - </File> - <File - RelativePath="..\src\common\utils.c"> - </File> - <File - RelativePath="..\src\common\utils.h"> - </File> - <File - RelativePath="..\src\common\version.h"> - </File> - </Filter> - <Filter - Name="3rdparty" - Filter=""> - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.c"> - </File> - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.h"> - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/vcproj-7.1/login-server_txt.vcproj b/vcproj-7.1/login-server_txt.vcproj deleted file mode 100644 index 624bb39d7..000000000 --- a/vcproj-7.1/login-server_txt.vcproj +++ /dev/null @@ -1,288 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="7.10" - Name="login-server_txt" - ProjectGUID="{D356871D-58E1-450B-967A-E2E9646175AF}" - Keyword="Win32Proj"> - <Platforms> - <Platform - Name="Win32"/> - </Platforms> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="2"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION;WITH_TXT" - GeneratePreprocessedFile="0" - MinimalRebuild="TRUE" - ExceptionHandling="FALSE" - BasicRuntimeChecks="3" - RuntimeLibrary="3" - BufferSecurityCheck="TRUE" - EnableFunctionLevelLinking="TRUE" - DisableLanguageExtensions="FALSE" - DefaultCharIsUnsigned="FALSE" - TreatWChar_tAsBuiltInType="FALSE" - ForceConformanceInForLoopScope="FALSE" - RuntimeTypeInfo="FALSE" - UsePrecompiledHeader="0" - WarningLevel="3" - WarnAsError="FALSE" - Detect64BitPortabilityProblems="FALSE" - DebugInformationFormat="4" - CompileAs="1"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="msvcrtd.lib oldnames.lib ws2_32.lib" - ShowProgress="0" - OutputFile="$(OutDir)\login-server.exe" - LinkIncremental="2" - AdditionalLibraryDirectories="" - IgnoreAllDefaultLibraries="TRUE" - GenerateDebugInformation="TRUE" - ProgramDatabaseFile="$(OutDir)\login-server.pdb" - SubSystem="1" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCWebDeploymentTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="2" - WholeProgramOptimization="TRUE"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - GlobalOptimizations="TRUE" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="TRUE" - ImproveFloatingPointConsistency="TRUE" - FavorSizeOrSpeed="1" - OmitFramePointers="TRUE" - EnableFiberSafeOptimizations="TRUE" - OptimizeForProcessor="2" - OptimizeForWindowsApplication="TRUE" - AdditionalIncludeDirectories="..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;NDEBUG;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION;WITH_TXT" - StringPooling="TRUE" - RuntimeLibrary="3" - DefaultCharIsUnsigned="FALSE" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="FALSE" - DebugInformationFormat="3" - CompileAs="1"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="msvcrt.lib oldnames.lib ws2_32.lib" - OutputFile="$(OutDir)\login-server.exe" - LinkIncremental="1" - AdditionalLibraryDirectories="" - IgnoreAllDefaultLibraries="TRUE" - GenerateDebugInformation="TRUE" - ProgramDatabaseFile="$(OutDir)\login-server.pdb" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - OptimizeForWindows98="1" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCWebDeploymentTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="login_txt" - Filter=""> - <File - RelativePath="..\src\login\account.h"> - </File> - <File - RelativePath="..\src\login\account_txt.c"> - </File> - <File - RelativePath="..\src\login\ipban.h"> - </File> - <File - RelativePath="..\src\login\ipban_txt.c"> - </File> - <File - RelativePath="..\src\login\login.c"> - </File> - <File - RelativePath="..\src\login\login.h"> - </File> - <File - RelativePath="..\src\login\loginlog.h"> - </File> - <File - RelativePath="..\src\login\loginlog_txt.c"> - </File> - </Filter> - <Filter - Name="common" - Filter=""> - <File - RelativePath="..\src\common\cbasetypes.h"> - </File> - <File - RelativePath="..\src\common\core.c"> - </File> - <File - RelativePath="..\src\common\core.h"> - </File> - <File - RelativePath="..\src\common\db.c"> - </File> - <File - RelativePath="..\src\common\db.h"> - </File> - <File - RelativePath="..\src\common\ers.c"> - </File> - <File - RelativePath="..\src\common\ers.h"> - </File> - <File - RelativePath="..\src\common\lock.c"> - </File> - <File - RelativePath="..\src\common\lock.h"> - </File> - <File - RelativePath="..\src\common\malloc.c"> - </File> - <File - RelativePath="..\src\common\malloc.h"> - </File> - <File - RelativePath="..\src\common\md5calc.c"> - </File> - <File - RelativePath="..\src\common\md5calc.h"> - </File> - <File - RelativePath="..\src\common\mmo.h"> - </File> - <File - RelativePath="..\src\common\nullpo.c"> - </File> - <File - RelativePath="..\src\common\nullpo.h"> - </File> - <File - RelativePath="..\src\common\plugin.h"> - </File> - <File - RelativePath="..\src\common\plugins.c"> - </File> - <File - RelativePath="..\src\common\plugins.h"> - </File> - <File - RelativePath="..\src\common\random.c"> - </File> - <File - RelativePath="..\src\common\random.h"> - </File> - <File - RelativePath="..\src\common\showmsg.c"> - </File> - <File - RelativePath="..\src\common\showmsg.h"> - </File> - <File - RelativePath="..\src\common\socket.c"> - </File> - <File - RelativePath="..\src\common\socket.h"> - </File> - <File - RelativePath="..\src\common\strlib.c"> - </File> - <File - RelativePath="..\src\common\strlib.h"> - </File> - <File - RelativePath="..\src\common\timer.c"> - </File> - <File - RelativePath="..\src\common\timer.h"> - </File> - <File - RelativePath="..\src\common\utils.c"> - </File> - <File - RelativePath="..\src\common\utils.h"> - </File> - <File - RelativePath="..\src\common\version.h"> - </File> - </Filter> - <Filter - Name="3rdparty" - Filter=""> - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.c"> - </File> - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.h"> - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/vcproj-7.1/map-server_sql.vcproj b/vcproj-7.1/map-server_sql.vcproj deleted file mode 100644 index fa1b7f931..000000000 --- a/vcproj-7.1/map-server_sql.vcproj +++ /dev/null @@ -1,490 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="7.10" - Name="map-server_sql" - ProjectGUID="{D356871D-58E1-450B-967A-E6E9646175AF}" - Keyword="Win32Proj"> - <Platforms> - <Platform - Name="Win32"/> - </Platforms> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="2"> - <Tool - Name="VCCLCompilerTool" - AdditionalOptions="/wd4018 -/wd4100" - Optimization="0" - AdditionalIncludeDirectories="..\3rdparty\mysql\include;..\3rdparty\zlib\include;..\3rdparty\pcre\include;..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;PCRE_SUPPORT;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION" - GeneratePreprocessedFile="0" - MinimalRebuild="TRUE" - ExceptionHandling="FALSE" - BasicRuntimeChecks="3" - RuntimeLibrary="3" - BufferSecurityCheck="TRUE" - EnableFunctionLevelLinking="TRUE" - DefaultCharIsUnsigned="FALSE" - ForceConformanceInForLoopScope="FALSE" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="FALSE" - DebugInformationFormat="4" - CompileAs="1"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="msvcrtd.lib oldnames.lib ws2_32.lib libmysql.lib zdll.lib pcre.lib" - OutputFile="$(OutDir)\map-server_sql.exe" - LinkIncremental="2" - AdditionalLibraryDirectories="..\3rdparty\mysql\lib;..\3rdparty\zlib\lib;..\3rdparty\pcre\lib" - IgnoreAllDefaultLibraries="TRUE" - IgnoreDefaultLibraryNames="" - GenerateDebugInformation="TRUE" - ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb" - SubSystem="1" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCWebDeploymentTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="2" - WholeProgramOptimization="TRUE"> - <Tool - Name="VCCLCompilerTool" - AdditionalOptions="/wd4018 -/wd4100" - Optimization="2" - GlobalOptimizations="TRUE" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="TRUE" - ImproveFloatingPointConsistency="TRUE" - FavorSizeOrSpeed="1" - OmitFramePointers="TRUE" - EnableFiberSafeOptimizations="TRUE" - OptimizeForProcessor="2" - OptimizeForWindowsApplication="TRUE" - AdditionalIncludeDirectories="..\3rdparty\mysql\include;..\3rdparty\zlib\include;..\3rdparty\pcre\include;..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;NDEBUG;PCRE_SUPPORT;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION" - StringPooling="TRUE" - RuntimeLibrary="3" - DefaultCharIsUnsigned="FALSE" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="FALSE" - DebugInformationFormat="3" - CompileAs="1"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="msvcrt.lib oldnames.lib ws2_32.lib libmysql.lib zdll.lib pcre.lib" - OutputFile="$(OutDir)\map-server_sql.exe" - LinkIncremental="1" - AdditionalLibraryDirectories="..\3rdparty\mysql\lib;..\3rdparty\zlib\lib;..\3rdparty\pcre\lib" - IgnoreAllDefaultLibraries="TRUE" - IgnoreDefaultLibraryNames="" - GenerateDebugInformation="TRUE" - ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - OptimizeForWindows98="1" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCWebDeploymentTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="map_sql" - Filter=""> - <File - RelativePath="..\src\map\atcommand.c"> - </File> - <File - RelativePath="..\src\map\atcommand.h"> - </File> - <File - RelativePath="..\src\map\battle.c"> - </File> - <File - RelativePath="..\src\map\battle.h"> - </File> - <File - RelativePath="..\src\map\battleground.c"> - </File> - <File - RelativePath="..\src\map\battleground.h"> - </File> - <File - RelativePath="..\src\map\buyingstore.c"> - </File> - <File - RelativePath="..\src\map\buyingstore.h"> - </File> - <File - RelativePath="..\src\map\chat.c"> - </File> - <File - RelativePath="..\src\map\chat.h"> - </File> - <File - RelativePath="..\src\map\chrif.c"> - </File> - <File - RelativePath="..\src\map\chrif.h"> - </File> - <File - RelativePath="..\src\map\clif.c"> - </File> - <File - RelativePath="..\src\map\clif.h"> - </File> - <File - RelativePath="..\src\map\date.c"> - </File> - <File - RelativePath="..\src\map\date.h"> - </File> - <File - RelativePath="..\src\map\duel.c"> - </File> - <File - RelativePath="..\src\map\duel.h"> - </File> - <File - RelativePath="..\src\map\guild.c"> - </File> - <File - RelativePath="..\src\map\guild.h"> - </File> - <File - RelativePath="..\src\map\intif.c"> - </File> - <File - RelativePath="..\src\map\intif.h"> - </File> - <File - RelativePath="..\src\map\itemdb.c"> - </File> - <File - RelativePath="..\src\map\itemdb.h"> - </File> - <File - RelativePath="..\src\map\log.c"> - </File> - <File - RelativePath="..\src\map\log.h"> - </File> - <File - RelativePath="..\src\map\mail.c"> - </File> - <File - RelativePath="..\src\map\mail.h"> - </File> - <File - RelativePath="..\src\map\map.c"> - </File> - <File - RelativePath="..\src\map\map.h"> - </File> - <File - RelativePath="..\src\map\mapreg.h"> - </File> - <File - RelativePath="..\src\map\mapreg_sql.c"> - </File> - <File - RelativePath="..\src\map\homunculus.c"> - </File> - <File - RelativePath="..\src\map\homunculus.h"> - </File> - <File - RelativePath="..\src\map\instance.c"> - </File> - <File - RelativePath="..\src\map\instance.h"> - </File> - <File - RelativePath="..\src\map\mercenary.c"> - </File> - <File - RelativePath="..\src\map\mercenary.h"> - </File> - <File - RelativePath="..\src\map\mob.c"> - </File> - <File - RelativePath="..\src\map\mob.h"> - </File> - <File - RelativePath="..\src\map\npc.c"> - </File> - <File - RelativePath="..\src\map\npc.h"> - </File> - <File - RelativePath="..\src\map\npc_chat.c"> - </File> - <File - RelativePath="..\src\map\party.c"> - </File> - <File - RelativePath="..\src\map\party.h"> - </File> - <File - RelativePath="..\src\map\path.c"> - </File> - <File - RelativePath="..\src\map\path.h"> - </File> - <File - RelativePath="..\src\map\pc.c"> - </File> - <File - RelativePath="..\src\map\pc.h"> - </File> - <File - RelativePath="..\src\map\pet.c"> - </File> - <File - RelativePath="..\src\map\pet.h"> - </File> - <File - RelativePath="..\src\map\quest.c"> - </File> - <File - RelativePath="..\src\map\quest.h"> - </File> - <File - RelativePath="..\src\map\script.c"> - </File> - <File - RelativePath="..\src\map\script.h"> - </File> - <File - RelativePath="..\src\map\searchstore.c"> - </File> - <File - RelativePath="..\src\map\searchstore.h"> - </File> - <File - RelativePath="..\src\map\skill.c"> - </File> - <File - RelativePath="..\src\map\skill.h"> - </File> - <File - RelativePath="..\src\map\status.c"> - </File> - <File - RelativePath="..\src\map\status.h"> - </File> - <File - RelativePath="..\src\map\storage.c"> - </File> - <File - RelativePath="..\src\map\storage.h"> - </File> - <File - RelativePath="..\src\map\trade.c"> - </File> - <File - RelativePath="..\src\map\trade.h"> - </File> - <File - RelativePath="..\src\map\unit.c"> - </File> - <File - RelativePath="..\src\map\unit.h"> - </File> - <File - RelativePath="..\src\map\vending.c"> - </File> - <File - RelativePath="..\src\map\vending.h"> - </File> - </Filter> - <Filter - Name="common" - Filter=""> - <File - RelativePath="..\src\common\cbasetypes.h"> - </File> - <File - RelativePath="..\src\common\core.c"> - </File> - <File - RelativePath="..\src\common\core.h"> - </File> - <File - RelativePath="..\src\common\db.c"> - </File> - <File - RelativePath="..\src\common\db.h"> - </File> - <File - RelativePath="..\src\common\ers.c"> - </File> - <File - RelativePath="..\src\common\ers.h"> - </File> - <File - RelativePath="..\src\common\grfio.c"> - </File> - <File - RelativePath="..\src\common\grfio.h"> - </File> - <File - RelativePath="..\src\common\lock.c"> - </File> - <File - RelativePath="..\src\common\lock.h"> - </File> - <File - RelativePath="..\src\common\malloc.c"> - </File> - <File - RelativePath="..\src\common\malloc.h"> - </File> - <File - RelativePath="..\src\common\mapindex.c"> - </File> - <File - RelativePath="..\src\common\mapindex.h"> - </File> - <File - RelativePath="..\src\common\md5calc.c"> - </File> - <File - RelativePath="..\src\common\md5calc.h"> - </File> - <File - RelativePath="..\src\common\mmo.h"> - </File> - <File - RelativePath="..\src\common\nullpo.c"> - </File> - <File - RelativePath="..\src\common\nullpo.h"> - </File> - <File - RelativePath="..\src\common\plugin.h"> - </File> - <File - RelativePath="..\src\common\plugins.c"> - </File> - <File - RelativePath="..\src\common\plugins.h"> - </File> - <File - RelativePath="..\src\common\random.c"> - </File> - <File - RelativePath="..\src\common\random.h"> - </File> - <File - RelativePath="..\src\common\showmsg.c"> - </File> - <File - RelativePath="..\src\common\showmsg.h"> - </File> - <File - RelativePath="..\src\common\socket.c"> - </File> - <File - RelativePath="..\src\common\socket.h"> - </File> - <File - RelativePath="..\src\common\sql.c"> - </File> - <File - RelativePath="..\src\common\sql.h"> - </File> - <File - RelativePath="..\src\common\strlib.c"> - </File> - <File - RelativePath="..\src\common\strlib.h"> - </File> - <File - RelativePath="..\src\common\timer.c"> - </File> - <File - RelativePath="..\src\common\timer.h"> - </File> - <File - RelativePath="..\src\common\utils.c"> - </File> - <File - RelativePath="..\src\common\utils.h"> - </File> - <File - RelativePath="..\src\common\version.h"> - </File> - </Filter> - <Filter - Name="3rdparty" - Filter=""> - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.c"> - </File> - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.h"> - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/vcproj-7.1/map-server_txt.vcproj b/vcproj-7.1/map-server_txt.vcproj deleted file mode 100644 index b78fe1759..000000000 --- a/vcproj-7.1/map-server_txt.vcproj +++ /dev/null @@ -1,484 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="7.10" - Name="map-server_txt" - ProjectGUID="{D356871D-58E1-450B-967A-E1E9646175AF}" - Keyword="Win32Proj"> - <Platforms> - <Platform - Name="Win32"/> - </Platforms> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="2"> - <Tool - Name="VCCLCompilerTool" - AdditionalOptions="/wd4018 -/wd4100" - Optimization="0" - AdditionalIncludeDirectories="..\3rdparty\zlib\include;..\3rdparty\pcre\include;..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;PCRE_SUPPORT;TXT_ONLY;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION" - GeneratePreprocessedFile="0" - MinimalRebuild="TRUE" - ExceptionHandling="FALSE" - BasicRuntimeChecks="3" - RuntimeLibrary="3" - BufferSecurityCheck="TRUE" - EnableFunctionLevelLinking="TRUE" - DefaultCharIsUnsigned="FALSE" - ForceConformanceInForLoopScope="FALSE" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="FALSE" - DebugInformationFormat="4" - CompileAs="1"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLinkerTool" - AdditionalOptions="/FIXED:NO" - AdditionalDependencies="msvcrtd.lib oldnames.lib ws2_32.lib zdll.lib pcre.lib" - OutputFile="$(OutDir)\map-server.exe" - LinkIncremental="2" - AdditionalLibraryDirectories="..\3rdparty\zlib\lib;..\3rdparty\pcre\lib" - IgnoreAllDefaultLibraries="TRUE" - GenerateDebugInformation="TRUE" - ProgramDatabaseFile="$(OutDir)\map-server.pdb" - SubSystem="1" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCWebDeploymentTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="2" - WholeProgramOptimization="TRUE"> - <Tool - Name="VCCLCompilerTool" - AdditionalOptions="/wd4018 -/wd4100" - Optimization="2" - GlobalOptimizations="TRUE" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="TRUE" - ImproveFloatingPointConsistency="TRUE" - FavorSizeOrSpeed="1" - OmitFramePointers="TRUE" - EnableFiberSafeOptimizations="TRUE" - OptimizeForProcessor="2" - OptimizeForWindowsApplication="TRUE" - AdditionalIncludeDirectories="..\3rdparty\zlib\include;..\3rdparty\pcre\include;..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;NDEBUG;PCRE_SUPPORT;TXT_ONLY;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION" - StringPooling="TRUE" - RuntimeLibrary="3" - EnableEnhancedInstructionSet="0" - DefaultCharIsUnsigned="FALSE" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="FALSE" - DebugInformationFormat="3" - CompileAs="1"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="msvcrt.lib oldnames.lib ws2_32.lib zdll.lib pcre.lib" - OutputFile="$(OutDir)\map-server.exe" - LinkIncremental="1" - AdditionalLibraryDirectories="..\3rdparty\zlib\lib;..\3rdparty\pcre\lib" - IgnoreAllDefaultLibraries="TRUE" - GenerateDebugInformation="TRUE" - ProgramDatabaseFile="$(OutDir)\map-server.pdb" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - OptimizeForWindows98="1" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCWebDeploymentTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="map_txt" - Filter=""> - <File - RelativePath="..\src\map\atcommand.c"> - </File> - <File - RelativePath="..\src\map\atcommand.h"> - </File> - <File - RelativePath="..\src\map\battle.c"> - </File> - <File - RelativePath="..\src\map\battle.h"> - </File> - <File - RelativePath="..\src\map\battleground.c"> - </File> - <File - RelativePath="..\src\map\battleground.h"> - </File> - <File - RelativePath="..\src\map\buyingstore.c"> - </File> - <File - RelativePath="..\src\map\buyingstore.h"> - </File> - <File - RelativePath="..\src\map\chat.c"> - </File> - <File - RelativePath="..\src\map\chat.h"> - </File> - <File - RelativePath="..\src\map\chrif.c"> - </File> - <File - RelativePath="..\src\map\chrif.h"> - </File> - <File - RelativePath="..\src\map\clif.c"> - </File> - <File - RelativePath="..\src\map\clif.h"> - </File> - <File - RelativePath="..\src\map\date.c"> - </File> - <File - RelativePath="..\src\map\date.h"> - </File> - <File - RelativePath="..\src\map\duel.c"> - </File> - <File - RelativePath="..\src\map\duel.h"> - </File> - <File - RelativePath="..\src\map\guild.c"> - </File> - <File - RelativePath="..\src\map\guild.h"> - </File> - <File - RelativePath="..\src\map\intif.c"> - </File> - <File - RelativePath="..\src\map\intif.h"> - </File> - <File - RelativePath="..\src\map\itemdb.c"> - </File> - <File - RelativePath="..\src\map\itemdb.h"> - </File> - <File - RelativePath="..\src\map\log.c"> - </File> - <File - RelativePath="..\src\map\log.h"> - </File> - <File - RelativePath="..\src\map\mail.c"> - </File> - <File - RelativePath="..\src\map\mail.h"> - </File> - <File - RelativePath="..\src\map\map.c"> - </File> - <File - RelativePath="..\src\map\map.h"> - </File> - <File - RelativePath="..\src\map\mapreg.h"> - </File> - <File - RelativePath="..\src\map\mapreg_txt.c"> - </File> - <File - RelativePath="..\src\map\homunculus.c"> - </File> - <File - RelativePath="..\src\map\homunculus.h"> - </File> - <File - RelativePath="..\src\map\instance.c"> - </File> - <File - RelativePath="..\src\map\instance.h"> - </File> - <File - RelativePath="..\src\map\mercenary.c"> - </File> - <File - RelativePath="..\src\map\mercenary.h"> - </File> - <File - RelativePath="..\src\map\mob.c"> - </File> - <File - RelativePath="..\src\map\mob.h"> - </File> - <File - RelativePath="..\src\map\npc.c"> - </File> - <File - RelativePath="..\src\map\npc.h"> - </File> - <File - RelativePath="..\src\map\npc_chat.c"> - </File> - <File - RelativePath="..\src\map\party.c"> - </File> - <File - RelativePath="..\src\map\party.h"> - </File> - <File - RelativePath="..\src\map\path.c"> - </File> - <File - RelativePath="..\src\map\path.h"> - </File> - <File - RelativePath="..\src\map\pc.c"> - </File> - <File - RelativePath="..\src\map\pc.h"> - </File> - <File - RelativePath="..\src\map\pet.c"> - </File> - <File - RelativePath="..\src\map\pet.h"> - </File> - <File - RelativePath="..\src\map\quest.c"> - </File> - <File - RelativePath="..\src\map\quest.h"> - </File> - <File - RelativePath="..\src\map\script.c"> - </File> - <File - RelativePath="..\src\map\script.h"> - </File> - <File - RelativePath="..\src\map\searchstore.c"> - </File> - <File - RelativePath="..\src\map\searchstore.h"> - </File> - <File - RelativePath="..\src\map\skill.c"> - </File> - <File - RelativePath="..\src\map\skill.h"> - </File> - <File - RelativePath="..\src\map\status.c"> - </File> - <File - RelativePath="..\src\map\status.h"> - </File> - <File - RelativePath="..\src\map\storage.c"> - </File> - <File - RelativePath="..\src\map\storage.h"> - </File> - <File - RelativePath="..\src\map\trade.c"> - </File> - <File - RelativePath="..\src\map\trade.h"> - </File> - <File - RelativePath="..\src\map\unit.c"> - </File> - <File - RelativePath="..\src\map\unit.h"> - </File> - <File - RelativePath="..\src\map\vending.c"> - </File> - <File - RelativePath="..\src\map\vending.h"> - </File> - </Filter> - <Filter - Name="common" - Filter=""> - <File - RelativePath="..\src\common\cbasetypes.h"> - </File> - <File - RelativePath="..\src\common\core.c"> - </File> - <File - RelativePath="..\src\common\core.h"> - </File> - <File - RelativePath="..\src\common\db.c"> - </File> - <File - RelativePath="..\src\common\db.h"> - </File> - <File - RelativePath="..\src\common\ers.c"> - </File> - <File - RelativePath="..\src\common\ers.h"> - </File> - <File - RelativePath="..\src\common\grfio.c"> - </File> - <File - RelativePath="..\src\common\grfio.h"> - </File> - <File - RelativePath="..\src\common\lock.c"> - </File> - <File - RelativePath="..\src\common\lock.h"> - </File> - <File - RelativePath="..\src\common\malloc.c"> - </File> - <File - RelativePath="..\src\common\malloc.h"> - </File> - <File - RelativePath="..\src\common\mapindex.c"> - </File> - <File - RelativePath="..\src\common\mapindex.h"> - </File> - <File - RelativePath="..\src\common\md5calc.c"> - </File> - <File - RelativePath="..\src\common\md5calc.h"> - </File> - <File - RelativePath="..\src\common\mmo.h"> - </File> - <File - RelativePath="..\src\common\nullpo.c"> - </File> - <File - RelativePath="..\src\common\nullpo.h"> - </File> - <File - RelativePath="..\src\common\plugin.h"> - </File> - <File - RelativePath="..\src\common\plugins.c"> - </File> - <File - RelativePath="..\src\common\plugins.h"> - </File> - <File - RelativePath="..\src\common\random.c"> - </File> - <File - RelativePath="..\src\common\random.h"> - </File> - <File - RelativePath="..\src\common\showmsg.c"> - </File> - <File - RelativePath="..\src\common\showmsg.h"> - </File> - <File - RelativePath="..\src\common\socket.c"> - </File> - <File - RelativePath="..\src\common\socket.h"> - </File> - <File - RelativePath="..\src\common\strlib.c"> - </File> - <File - RelativePath="..\src\common\strlib.h"> - </File> - <File - RelativePath="..\src\common\timer.c"> - </File> - <File - RelativePath="..\src\common\timer.h"> - </File> - <File - RelativePath="..\src\common\utils.c"> - </File> - <File - RelativePath="..\src\common\utils.h"> - </File> - <File - RelativePath="..\src\common\version.h"> - </File> - </Filter> - <Filter - Name="3rdparty" - Filter=""> - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.c"> - </File> - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.h"> - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/vcproj-7.1/mapcache.vcproj b/vcproj-7.1/mapcache.vcproj deleted file mode 100644 index af62d5194..000000000 --- a/vcproj-7.1/mapcache.vcproj +++ /dev/null @@ -1,199 +0,0 @@ -<?xml version="1.0" encoding="windows-1250"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="7.10" - Name="mapcache" - ProjectGUID="{BB5C63F0-57AD-42F0-83F8-8F9323BC089C}" - Keyword="Win32Proj"> - <Platforms> - <Platform - Name="Win32"/> - </Platforms> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="2"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\3rdparty\zlib\include;..\3rdparty\msinttypes\include" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;MINICORE" - MinimalRebuild="TRUE" - ExceptionHandling="FALSE" - BasicRuntimeChecks="3" - RuntimeLibrary="3" - BufferSecurityCheck="TRUE" - EnableFunctionLevelLinking="TRUE" - DefaultCharIsUnsigned="FALSE" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="FALSE" - DebugInformationFormat="4" - CompileAs="1"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="msvcrtd.lib oldnames.lib zdll.lib" - OutputFile="$(OutDir)\mapcache.exe" - LinkIncremental="2" - AdditionalLibraryDirectories="..\3rdparty\zlib\lib" - IgnoreAllDefaultLibraries="TRUE" - GenerateDebugInformation="TRUE" - ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb" - SubSystem="1" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCWebDeploymentTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="2" - WholeProgramOptimization="TRUE"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - GlobalOptimizations="TRUE" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="TRUE" - ImproveFloatingPointConsistency="TRUE" - FavorSizeOrSpeed="1" - OmitFramePointers="TRUE" - EnableFiberSafeOptimizations="TRUE" - OptimizeForProcessor="2" - OptimizeForWindowsApplication="TRUE" - AdditionalIncludeDirectories="..\3rdparty\zlib\include;..\3rdparty\msinttypes\include" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;NDEBUG;MINICORE" - StringPooling="TRUE" - RuntimeLibrary="3" - DefaultCharIsUnsigned="FALSE" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="FALSE" - DebugInformationFormat="3" - CompileAs="1"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="msvcrt.lib oldnames.lib zdll.lib" - OutputFile="$(OutDir)\mapcache.exe" - LinkIncremental="1" - AdditionalLibraryDirectories="..\3rdparty\zlib\lib" - IgnoreAllDefaultLibraries="TRUE" - GenerateDebugInformation="TRUE" - ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - OptimizeForWindows98="1" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCWebDeploymentTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="common" - Filter=""> - <File - RelativePath="..\src\common\cbasetypes.h"> - </File> - <File - RelativePath="..\src\common\core.c"> - </File> - <File - RelativePath="..\src\common\core.h"> - </File> - <File - RelativePath="..\src\common\grfio.c"> - </File> - <File - RelativePath="..\src\common\grfio.h"> - </File> - <File - RelativePath="..\src\common\malloc.c"> - </File> - <File - RelativePath="..\src\common\malloc.h"> - </File> - <File - RelativePath="..\src\common\mmo.h"> - </File> - <File - RelativePath="..\src\common\showmsg.c"> - </File> - <File - RelativePath="..\src\common\showmsg.h"> - </File> - <File - RelativePath="..\src\common\strlib.c"> - </File> - <File - RelativePath="..\src\common\strlib.h"> - </File> - <File - RelativePath="..\src\common\utils.c"> - </File> - <File - RelativePath="..\src\common\utils.h"> - </File> - <File - RelativePath="..\src\common\version.h"> - </File> - </Filter> - <Filter - Name="mapcache" - Filter=""> - <File - RelativePath="..\src\tool\mapcache.c"> - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/vcproj-8/char-server_sql.vcproj b/vcproj-8/char-server_sql.vcproj deleted file mode 100644 index ecee855a8..000000000 --- a/vcproj-8/char-server_sql.vcproj +++ /dev/null @@ -1,445 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8,00" - Name="char-server_sql" - ProjectGUID="{D356871D-58E1-450B-967A-E4E9646175AF}" - RootNamespace="char-server_sql" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\3rdparty\mysql\include;..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION" - GeneratePreprocessedFile="0" - MinimalRebuild="true" - ExceptionHandling="0" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - EnableFunctionLevelLinking="true" - DefaultCharIsUnsigned="false" - UsePrecompiledHeader="0" - WarningLevel="3" - DebugInformationFormat="4" - CompileAs="1" - DisableSpecificWarnings="4800" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="libcmtd.lib oldnames.lib ws2_32.lib libmysql.lib" - OutputFile="$(OutDir)\$(ProjectName).exe" - LinkIncremental="2" - AdditionalLibraryDirectories="..\3rdparty\mysql\lib" - IgnoreAllDefaultLibraries="true" - IgnoreDefaultLibraryNames="" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb" - SubSystem="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" - CharacterSet="2" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - OmitFramePointers="true" - EnableFiberSafeOptimizations="true" - WholeProgramOptimization="true" - AdditionalIncludeDirectories="..\3rdparty\mysql\include;..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION" - StringPooling="true" - RuntimeLibrary="0" - DefaultCharIsUnsigned="false" - UsePrecompiledHeader="0" - WarningLevel="3" - DebugInformationFormat="3" - CompileAs="1" - DisableSpecificWarnings="4800" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="libcmt.lib oldnames.lib ws2_32.lib libmysql.lib" - OutputFile="$(OutDir)\$(ProjectName).exe" - LinkIncremental="1" - AdditionalLibraryDirectories="..\3rdparty\mysql\lib" - IgnoreAllDefaultLibraries="true" - IgnoreDefaultLibraryNames="" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - LinkTimeCodeGeneration="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="3rdparty" - > - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.c" - > - </File> - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.h" - > - </File> - </Filter> - <Filter - Name="common" - > - <File - RelativePath="..\src\common\cbasetypes.h" - > - </File> - <File - RelativePath="..\src\common\core.c" - > - </File> - <File - RelativePath="..\src\common\core.h" - > - </File> - <File - RelativePath="..\src\common\db.c" - > - </File> - <File - RelativePath="..\src\common\db.h" - > - </File> - <File - RelativePath="..\src\common\ers.c" - > - </File> - <File - RelativePath="..\src\common\ers.h" - > - </File> - <File - RelativePath="..\src\common\lock.c" - > - </File> - <File - RelativePath="..\src\common\lock.h" - > - </File> - <File - RelativePath="..\src\common\malloc.c" - > - </File> - <File - RelativePath="..\src\common\malloc.h" - > - </File> - <File - RelativePath="..\src\common\mapindex.c" - > - </File> - <File - RelativePath="..\src\common\mapindex.h" - > - </File> - <File - RelativePath="..\src\common\mmo.h" - > - </File> - <File - RelativePath="..\src\common\nullpo.c" - > - </File> - <File - RelativePath="..\src\common\nullpo.h" - > - </File> - <File - RelativePath="..\src\common\plugin.h" - > - </File> - <File - RelativePath="..\src\common\plugins.c" - > - </File> - <File - RelativePath="..\src\common\plugins.h" - > - </File> - <File - RelativePath="..\src\common\random.c" - > - </File> - <File - RelativePath="..\src\common\random.h" - > - </File> - <File - RelativePath="..\src\common\showmsg.c" - > - </File> - <File - RelativePath="..\src\common\showmsg.h" - > - </File> - <File - RelativePath="..\src\common\socket.c" - > - </File> - <File - RelativePath="..\src\common\socket.h" - > - </File> - <File - RelativePath="..\src\common\sql.c" - > - </File> - <File - RelativePath="..\src\common\sql.h" - > - </File> - <File - RelativePath="..\src\common\strlib.c" - > - </File> - <File - RelativePath="..\src\common\strlib.h" - > - </File> - <File - RelativePath="..\src\common\timer.c" - > - </File> - <File - RelativePath="..\src\common\timer.h" - > - </File> - <File - RelativePath="..\src\common\utils.c" - > - </File> - <File - RelativePath="..\src\common\utils.h" - > - </File> - <File - RelativePath="..\src\common\version.h" - > - </File> - </Filter> - <Filter - Name="char_sql" - > - <File - RelativePath="..\src\char_sql\char.c" - > - </File> - <File - RelativePath="..\src\char_sql\char.h" - > - </File> - <File - RelativePath="..\src\char_sql\int_auction.c" - > - </File> - <File - RelativePath="..\src\char_sql\int_auction.h" - > - </File> - <File - RelativePath="..\src\char_sql\int_guild.c" - > - </File> - <File - RelativePath="..\src\char_sql\int_guild.h" - > - </File> - <File - RelativePath="..\src\char_sql\int_homun.c" - > - </File> - <File - RelativePath="..\src\char_sql\int_homun.h" - > - </File> - <File - RelativePath="..\src\char_sql\int_mail.c" - > - </File> - <File - RelativePath="..\src\char_sql\int_mail.h" - > - </File> - <File - RelativePath="..\src\char_sql\int_mercenary.c" - > - </File> - <File - RelativePath="..\src\char_sql\int_mercenary.h" - > - </File> - <File - RelativePath="..\src\char_sql\int_party.c" - > - </File> - <File - RelativePath="..\src\char_sql\int_party.h" - > - </File> - <File - RelativePath="..\src\char_sql\int_pet.c" - > - </File> - <File - RelativePath="..\src\char_sql\int_pet.h" - > - </File> - <File - RelativePath="..\src\char_sql\int_quest.c" - > - </File> - <File - RelativePath="..\src\char_sql\int_quest.h" - > - </File> - <File - RelativePath="..\src\char_sql\int_storage.c" - > - </File> - <File - RelativePath="..\src\char_sql\int_storage.h" - > - </File> - <File - RelativePath="..\src\char_sql\inter.c" - > - </File> - <File - RelativePath="..\src\char_sql\inter.h" - > - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/vcproj-8/char-server_txt.vcproj b/vcproj-8/char-server_txt.vcproj deleted file mode 100644 index da689efe5..000000000 --- a/vcproj-8/char-server_txt.vcproj +++ /dev/null @@ -1,411 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8,00" - Name="char-server_txt" - ProjectGUID="{D356871D-58E1-450B-967A-E3E9646175AF}" - RootNamespace="char-server_txt" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;TXT_ONLY;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION" - GeneratePreprocessedFile="0" - MinimalRebuild="true" - ExceptionHandling="0" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - EnableFunctionLevelLinking="true" - DefaultCharIsUnsigned="false" - UsePrecompiledHeader="0" - WarningLevel="3" - DebugInformationFormat="4" - CompileAs="1" - DisableSpecificWarnings="4800" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="libcmtd.lib oldnames.lib ws2_32.lib" - OutputFile="$(OutDir)\char-server.exe" - LinkIncremental="2" - AdditionalLibraryDirectories="" - IgnoreAllDefaultLibraries="true" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\char-server.pdb" - SubSystem="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" - CharacterSet="2" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - OmitFramePointers="true" - EnableFiberSafeOptimizations="true" - WholeProgramOptimization="true" - AdditionalIncludeDirectories="..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;NDEBUG;TXT_ONLY;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION" - StringPooling="true" - RuntimeLibrary="0" - DefaultCharIsUnsigned="false" - UsePrecompiledHeader="0" - WarningLevel="3" - DebugInformationFormat="3" - CompileAs="1" - DisableSpecificWarnings="4800" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="libcmt.lib oldnames.lib ws2_32.lib" - OutputFile="$(OutDir)\char-server.exe" - LinkIncremental="1" - AdditionalLibraryDirectories="" - IgnoreAllDefaultLibraries="true" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\char-server.pdb" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - LinkTimeCodeGeneration="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="char_txt" - > - <File - RelativePath="..\src\char\char.c" - > - </File> - <File - RelativePath="..\src\char\char.h" - > - </File> - <File - RelativePath="..\src\char\int_guild.c" - > - </File> - <File - RelativePath="..\src\char\int_guild.h" - > - </File> - <File - RelativePath="..\src\char\int_homun.c" - > - </File> - <File - RelativePath="..\src\char\int_homun.h" - > - </File> - <File - RelativePath="..\src\char\int_party.c" - > - </File> - <File - RelativePath="..\src\char\int_party.h" - > - </File> - <File - RelativePath="..\src\char\int_pet.c" - > - </File> - <File - RelativePath="..\src\char\int_pet.h" - > - </File> - <File - RelativePath="..\src\char\int_status.c" - > - </File> - <File - RelativePath="..\src\char\int_status.h" - > - </File> - <File - RelativePath="..\src\char\int_storage.c" - > - </File> - <File - RelativePath="..\src\char\int_storage.h" - > - </File> - <File - RelativePath="..\src\char\inter.c" - > - </File> - <File - RelativePath="..\src\char\inter.h" - > - </File> - </Filter> - <Filter - Name="common" - > - <File - RelativePath="..\src\common\cbasetypes.h" - > - </File> - <File - RelativePath="..\src\common\core.c" - > - </File> - <File - RelativePath="..\src\common\core.h" - > - </File> - <File - RelativePath="..\src\common\db.c" - > - </File> - <File - RelativePath="..\src\common\db.h" - > - </File> - <File - RelativePath="..\src\common\ers.c" - > - </File> - <File - RelativePath="..\src\common\ers.h" - > - </File> - <File - RelativePath="..\src\common\lock.c" - > - </File> - <File - RelativePath="..\src\common\lock.h" - > - </File> - <File - RelativePath="..\src\common\malloc.c" - > - </File> - <File - RelativePath="..\src\common\malloc.h" - > - </File> - <File - RelativePath="..\src\common\mapindex.c" - > - </File> - <File - RelativePath="..\src\common\mapindex.h" - > - </File> - <File - RelativePath="..\src\common\mmo.h" - > - </File> - <File - RelativePath="..\src\common\nullpo.c" - > - </File> - <File - RelativePath="..\src\common\nullpo.h" - > - </File> - <File - RelativePath="..\src\common\plugin.h" - > - </File> - <File - RelativePath="..\src\common\plugins.c" - > - </File> - <File - RelativePath="..\src\common\plugins.h" - > - </File> - <File - RelativePath="..\src\common\random.c" - > - </File> - <File - RelativePath="..\src\common\random.h" - > - </File> - <File - RelativePath="..\src\common\showmsg.c" - > - </File> - <File - RelativePath="..\src\common\showmsg.h" - > - </File> - <File - RelativePath="..\src\common\socket.c" - > - </File> - <File - RelativePath="..\src\common\socket.h" - > - </File> - <File - RelativePath="..\src\common\strlib.c" - > - </File> - <File - RelativePath="..\src\common\strlib.h" - > - </File> - <File - RelativePath="..\src\common\timer.c" - > - </File> - <File - RelativePath="..\src\common\timer.h" - > - </File> - <File - RelativePath="..\src\common\utils.c" - > - </File> - <File - RelativePath="..\src\common\utils.h" - > - </File> - <File - RelativePath="..\src\common\version.h" - > - </File> - </Filter> - <Filter - Name="3rdparty" - > - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.c" - > - </File> - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.h" - > - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/vcproj-8/dbghelpplug.vcproj b/vcproj-8/dbghelpplug.vcproj deleted file mode 100644 index 59d53f5c5..000000000 --- a/vcproj-8/dbghelpplug.vcproj +++ /dev/null @@ -1,211 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8.00" - Name="dbghelpplug" - ProjectGUID="{334742E0-7790-4857-A794-A54625D93487}" - RootNamespace="dbghelpplug" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="2" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;DBGHELPPLUG_EXPORTS;_CRT_SECURE_NO_DEPRECATE" - StringPooling="false" - MinimalRebuild="true" - ExceptionHandling="0" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - BufferSecurityCheck="true" - EnableFunctionLevelLinking="true" - DefaultCharIsUnsigned="false" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="4" - CompileAs="1" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="libcmtd.lib" - OutputFile="$(OutDir)\plugins\$(ProjectName).dll" - LinkIncremental="2" - IgnoreAllDefaultLibraries="true" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\plugins\$(ProjectName).pdb" - SubSystem="2" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="2" - CharacterSet="2" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;DBGHELPPLUG_EXPORTS;_CRT_SECURE_NO_DEPRECATE" - StringPooling="true" - MinimalRebuild="false" - ExceptionHandling="0" - BasicRuntimeChecks="0" - RuntimeLibrary="0" - BufferSecurityCheck="false" - EnableFunctionLevelLinking="false" - DisableLanguageExtensions="false" - DefaultCharIsUnsigned="false" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="0" - CompileAs="1" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="libcmt.lib" - OutputFile="$(OutDir)\plugins\$(ProjectName).dll" - LinkIncremental="1" - IgnoreAllDefaultLibraries="true" - GenerateDebugInformation="false" - SubSystem="2" - OptimizeReferences="2" - EnableCOMDATFolding="2" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="plugin" - UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" - > - <File - RelativePath="..\src\plugins\dbghelpplug.c" - > - </File> - <File - RelativePath="..\src\plugins\dbghelpplug.rc" - > - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/vcproj-8/login-server_sql.vcproj b/vcproj-8/login-server_sql.vcproj deleted file mode 100644 index bf2526125..000000000 --- a/vcproj-8/login-server_sql.vcproj +++ /dev/null @@ -1,391 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8,00" - Name="login-server_sql" - ProjectGUID="{D356871D-58E1-450B-967A-E5E9646175AF}" - RootNamespace="login-server_sql" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\3rdparty\mysql\include;..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION;WITH_SQL" - GeneratePreprocessedFile="0" - MinimalRebuild="true" - ExceptionHandling="0" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - EnableFunctionLevelLinking="true" - DefaultCharIsUnsigned="false" - UsePrecompiledHeader="0" - WarningLevel="3" - DebugInformationFormat="4" - CompileAs="1" - DisableSpecificWarnings="4100;4800" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="libcmtd.lib oldnames.lib ws2_32.lib libmysql.lib" - OutputFile="$(OutDir)\$(ProjectName).exe" - LinkIncremental="2" - AdditionalLibraryDirectories="..\3rdparty\mysql\lib" - IgnoreAllDefaultLibraries="true" - IgnoreDefaultLibraryNames="" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb" - SubSystem="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" - CharacterSet="2" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - OmitFramePointers="true" - EnableFiberSafeOptimizations="true" - WholeProgramOptimization="true" - AdditionalIncludeDirectories="..\3rdparty\mysql\include;..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION;WITH_SQL" - StringPooling="true" - RuntimeLibrary="0" - DefaultCharIsUnsigned="false" - UsePrecompiledHeader="0" - PrecompiledHeaderThrough="" - PrecompiledHeaderFile="" - WarningLevel="3" - DebugInformationFormat="3" - CompileAs="1" - DisableSpecificWarnings="4100;4800" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="libcmt.lib oldnames.lib ws2_32.lib libmysql.lib" - OutputFile="$(OutDir)\$(ProjectName).exe" - LinkIncremental="1" - AdditionalLibraryDirectories="..\3rdparty\mysql\lib" - IgnoreAllDefaultLibraries="true" - IgnoreDefaultLibraryNames="" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - LinkTimeCodeGeneration="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="login_sql" - > - <File - RelativePath="..\src\login\account.h" - > - </File> - <File - RelativePath="..\src\login\account_sql.c" - > - </File> - <File - RelativePath="..\src\login\ipban.h" - > - </File> - <File - RelativePath="..\src\login\ipban_sql.c" - > - </File> - <File - RelativePath="..\src\login\login.c" - > - </File> - <File - RelativePath="..\src\login\login.h" - > - </File> - <File - RelativePath="..\src\login\loginlog.h" - > - </File> - <File - RelativePath="..\src\login\loginlog_sql.c" - > - </File> - </Filter> - <Filter - Name="common" - > - <File - RelativePath="..\src\common\cbasetypes.h" - > - </File> - <File - RelativePath="..\src\common\core.c" - > - </File> - <File - RelativePath="..\src\common\core.h" - > - </File> - <File - RelativePath="..\src\common\db.c" - > - </File> - <File - RelativePath="..\src\common\db.h" - > - </File> - <File - RelativePath="..\src\common\ers.c" - > - </File> - <File - RelativePath="..\src\common\ers.h" - > - </File> - <File - RelativePath="..\src\common\lock.c" - > - </File> - <File - RelativePath="..\src\common\lock.h" - > - </File> - <File - RelativePath="..\src\common\malloc.c" - > - </File> - <File - RelativePath="..\src\common\malloc.h" - > - </File> - <File - RelativePath="..\src\common\md5calc.c" - > - </File> - <File - RelativePath="..\src\common\md5calc.h" - > - </File> - <File - RelativePath="..\src\common\mmo.h" - > - </File> - <File - RelativePath="..\src\common\nullpo.c" - > - </File> - <File - RelativePath="..\src\common\nullpo.h" - > - </File> - <File - RelativePath="..\src\common\plugin.h" - > - </File> - <File - RelativePath="..\src\common\plugins.c" - > - </File> - <File - RelativePath="..\src\common\plugins.h" - > - </File> - <File - RelativePath="..\src\common\random.c" - > - </File> - <File - RelativePath="..\src\common\random.h" - > - </File> - <File - RelativePath="..\src\common\showmsg.c" - > - </File> - <File - RelativePath="..\src\common\showmsg.h" - > - </File> - <File - RelativePath="..\src\common\socket.c" - > - </File> - <File - RelativePath="..\src\common\socket.h" - > - </File> - <File - RelativePath="..\src\common\sql.c" - > - </File> - <File - RelativePath="..\src\common\sql.h" - > - </File> - <File - RelativePath="..\src\common\strlib.c" - > - </File> - <File - RelativePath="..\src\common\strlib.h" - > - </File> - <File - RelativePath="..\src\common\timer.c" - > - </File> - <File - RelativePath="..\src\common\timer.h" - > - </File> - <File - RelativePath="..\src\common\utils.c" - > - </File> - <File - RelativePath="..\src\common\utils.h" - > - </File> - <File - RelativePath="..\src\common\version.h" - > - </File> - </Filter> - <Filter - Name="3rdparty" - > - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.c" - > - </File> - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.h" - > - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/vcproj-8/login-server_txt.vcproj b/vcproj-8/login-server_txt.vcproj deleted file mode 100644 index ba298908e..000000000 --- a/vcproj-8/login-server_txt.vcproj +++ /dev/null @@ -1,374 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8,00" - Name="login-server_txt" - ProjectGUID="{D356871D-58E1-450B-967A-E2E9646175AF}" - RootNamespace="login-server_txt" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION;WITH_TXT" - GeneratePreprocessedFile="0" - MinimalRebuild="true" - ExceptionHandling="0" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - EnableFunctionLevelLinking="true" - DefaultCharIsUnsigned="false" - UsePrecompiledHeader="0" - WarningLevel="3" - DebugInformationFormat="4" - CompileAs="1" - DisableSpecificWarnings="4100;4800" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="libcmtd.lib oldnames.lib ws2_32.lib" - ShowProgress="0" - OutputFile="$(OutDir)\login-server.exe" - LinkIncremental="2" - AdditionalLibraryDirectories="" - IgnoreAllDefaultLibraries="true" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\login-server.pdb" - SubSystem="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="2" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - OmitFramePointers="true" - EnableFiberSafeOptimizations="true" - WholeProgramOptimization="true" - AdditionalIncludeDirectories="..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION;WITH_TXT" - StringPooling="true" - RuntimeLibrary="0" - DefaultCharIsUnsigned="false" - UsePrecompiledHeader="0" - WarningLevel="3" - DebugInformationFormat="3" - CompileAs="1" - DisableSpecificWarnings="4100;4800" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="libcmt.lib oldnames.lib ws2_32.lib" - OutputFile="$(OutDir)\login-server.exe" - LinkIncremental="1" - AdditionalLibraryDirectories="" - IgnoreAllDefaultLibraries="true" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\login-server.pdb" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - LinkTimeCodeGeneration="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="login_txt" - > - <File - RelativePath="..\src\login\account.h" - > - </File> - <File - RelativePath="..\src\login\account_txt.c" - > - </File> - <File - RelativePath="..\src\login\ipban.h" - > - </File> - <File - RelativePath="..\src\login\ipban_txt.c" - > - </File> - <File - RelativePath="..\src\login\login.c" - > - </File> - <File - RelativePath="..\src\login\login.h" - > - </File> - <File - RelativePath="..\src\login\loginlog.h" - > - </File> - <File - RelativePath="..\src\login\loginlog_txt.c" - > - </File> - </Filter> - <Filter - Name="common" - > - <File - RelativePath="..\src\common\cbasetypes.h" - > - </File> - <File - RelativePath="..\src\common\core.c" - > - </File> - <File - RelativePath="..\src\common\core.h" - > - </File> - <File - RelativePath="..\src\common\db.c" - > - </File> - <File - RelativePath="..\src\common\db.h" - > - </File> - <File - RelativePath="..\src\common\ers.c" - > - </File> - <File - RelativePath="..\src\common\lock.c" - > - </File> - <File - RelativePath="..\src\common\lock.h" - > - </File> - <File - RelativePath="..\src\common\malloc.c" - > - </File> - <File - RelativePath="..\src\common\malloc.h" - > - </File> - <File - RelativePath="..\src\common\md5calc.c" - > - </File> - <File - RelativePath="..\src\common\md5calc.h" - > - </File> - <File - RelativePath="..\src\common\mmo.h" - > - </File> - <File - RelativePath="..\src\common\nullpo.c" - > - </File> - <File - RelativePath="..\src\common\nullpo.h" - > - </File> - <File - RelativePath="..\src\common\plugin.h" - > - </File> - <File - RelativePath="..\src\common\plugins.c" - > - </File> - <File - RelativePath="..\src\common\plugins.h" - > - </File> - <File - RelativePath="..\src\common\random.c" - > - </File> - <File - RelativePath="..\src\common\random.h" - > - </File> - <File - RelativePath="..\src\common\showmsg.c" - > - </File> - <File - RelativePath="..\src\common\showmsg.h" - > - </File> - <File - RelativePath="..\src\common\socket.c" - > - </File> - <File - RelativePath="..\src\common\socket.h" - > - </File> - <File - RelativePath="..\src\common\strlib.c" - > - </File> - <File - RelativePath="..\src\common\strlib.h" - > - </File> - <File - RelativePath="..\src\common\timer.c" - > - </File> - <File - RelativePath="..\src\common\timer.h" - > - </File> - <File - RelativePath="..\src\common\utils.c" - > - </File> - <File - RelativePath="..\src\common\utils.h" - > - </File> - <File - RelativePath="..\src\common\version.h" - > - </File> - </Filter> - <Filter - Name="3rdparty" - > - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.c" - > - </File> - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.h" - > - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/vcproj-8/map-server_sql.vcproj b/vcproj-8/map-server_sql.vcproj deleted file mode 100644 index 1f68af297..000000000 --- a/vcproj-8/map-server_sql.vcproj +++ /dev/null @@ -1,654 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8,00" - Name="map-server_sql" - ProjectGUID="{D356871D-58E1-450B-967A-E6E9646175AF}" - RootNamespace="map-server_sql" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\3rdparty\mysql\include;..\3rdparty\zlib\include;..\3rdparty\pcre\include;..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;PCRE_SUPPORT;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION" - GeneratePreprocessedFile="0" - MinimalRebuild="true" - ExceptionHandling="0" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - EnableFunctionLevelLinking="true" - DefaultCharIsUnsigned="false" - UsePrecompiledHeader="0" - WarningLevel="3" - DebugInformationFormat="4" - CompileAs="1" - DisableSpecificWarnings="4018;4100;4800" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="libcmtd.lib oldnames.lib ws2_32.lib libmysql.lib zdll.lib pcre.lib" - OutputFile="$(OutDir)\$(ProjectName).exe" - LinkIncremental="2" - AdditionalLibraryDirectories="..\3rdparty\mysql\lib;..\3rdparty\zlib\lib;..\3rdparty\pcre\lib" - IgnoreAllDefaultLibraries="true" - IgnoreDefaultLibraryNames="" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb" - SubSystem="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" - CharacterSet="2" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - OmitFramePointers="true" - EnableFiberSafeOptimizations="true" - WholeProgramOptimization="true" - AdditionalIncludeDirectories="..\3rdparty\mysql\include;..\3rdparty\zlib\include;..\3rdparty\pcre\include;..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;NDEBUG;PCRE_SUPPORT;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION" - StringPooling="true" - RuntimeLibrary="0" - DefaultCharIsUnsigned="false" - UsePrecompiledHeader="0" - WarningLevel="3" - DebugInformationFormat="3" - CompileAs="1" - DisableSpecificWarnings="4018;4100;4800" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="libcmt.lib oldnames.lib ws2_32.lib libmysql.lib zdll.lib pcre.lib" - OutputFile="$(OutDir)\$(ProjectName).exe" - LinkIncremental="1" - AdditionalLibraryDirectories="..\3rdparty\mysql\lib;..\3rdparty\zlib\lib;..\3rdparty\pcre\lib" - IgnoreAllDefaultLibraries="true" - IgnoreDefaultLibraryNames="" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - LinkTimeCodeGeneration="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="3rdparty" - > - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.c" - > - </File> - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.h" - > - </File> - </Filter> - <Filter - Name="common" - > - <File - RelativePath="..\src\common\cbasetypes.h" - > - </File> - <File - RelativePath="..\src\common\core.c" - > - </File> - <File - RelativePath="..\src\common\core.h" - > - </File> - <File - RelativePath="..\src\common\db.c" - > - </File> - <File - RelativePath="..\src\common\db.h" - > - </File> - <File - RelativePath="..\src\common\ers.c" - > - </File> - <File - RelativePath="..\src\common\ers.h" - > - </File> - <File - RelativePath="..\src\common\grfio.c" - > - </File> - <File - RelativePath="..\src\common\grfio.h" - > - </File> - <File - RelativePath="..\src\common\lock.c" - > - </File> - <File - RelativePath="..\src\common\lock.h" - > - </File> - <File - RelativePath="..\src\common\malloc.c" - > - </File> - <File - RelativePath="..\src\common\malloc.h" - > - </File> - <File - RelativePath="..\src\common\mapindex.c" - > - </File> - <File - RelativePath="..\src\common\mapindex.h" - > - </File> - <File - RelativePath="..\src\common\md5calc.c" - > - </File> - <File - RelativePath="..\src\common\md5calc.h" - > - </File> - <File - RelativePath="..\src\common\mmo.h" - > - </File> - <File - RelativePath="..\src\common\nullpo.c" - > - </File> - <File - RelativePath="..\src\common\nullpo.h" - > - </File> - <File - RelativePath="..\src\common\plugin.h" - > - </File> - <File - RelativePath="..\src\common\plugins.c" - > - </File> - <File - RelativePath="..\src\common\plugins.h" - > - </File> - <File - RelativePath="..\src\common\random.c" - > - </File> - <File - RelativePath="..\src\common\random.h" - > - </File> - <File - RelativePath="..\src\common\showmsg.c" - > - </File> - <File - RelativePath="..\src\common\showmsg.h" - > - </File> - <File - RelativePath="..\src\common\socket.c" - > - </File> - <File - RelativePath="..\src\common\socket.h" - > - </File> - <File - RelativePath="..\src\common\sql.c" - > - </File> - <File - RelativePath="..\src\common\sql.h" - > - </File> - <File - RelativePath="..\src\common\strlib.c" - > - </File> - <File - RelativePath="..\src\common\strlib.h" - > - </File> - <File - RelativePath="..\src\common\timer.c" - > - </File> - <File - RelativePath="..\src\common\timer.h" - > - </File> - <File - RelativePath="..\src\common\utils.c" - > - </File> - <File - RelativePath="..\src\common\utils.h" - > - </File> - <File - RelativePath="..\src\common\version.h" - > - </File> - </Filter> - <Filter - Name="map_sql" - > - <File - RelativePath="..\src\map\atcommand.c" - > - </File> - <File - RelativePath="..\src\map\atcommand.h" - > - </File> - <File - RelativePath="..\src\map\battle.c" - > - </File> - <File - RelativePath="..\src\map\battle.h" - > - </File> - <File - RelativePath="..\src\map\battleground.c" - > - </File> - <File - RelativePath="..\src\map\battleground.h" - > - </File> - <File - RelativePath="..\src\map\buyingstore.c" - > - </File> - <File - RelativePath="..\src\map\buyingstore.h" - > - </File> - <File - RelativePath="..\src\map\chat.c" - > - </File> - <File - RelativePath="..\src\map\chat.h" - > - </File> - <File - RelativePath="..\src\map\chrif.c" - > - </File> - <File - RelativePath="..\src\map\chrif.h" - > - </File> - <File - RelativePath="..\src\map\clif.c" - > - </File> - <File - RelativePath="..\src\map\clif.h" - > - </File> - <File - RelativePath="..\src\map\date.c" - > - </File> - <File - RelativePath="..\src\map\date.h" - > - </File> - <File - RelativePath="..\src\map\duel.c" - > - </File> - <File - RelativePath="..\src\map\duel.h" - > - </File> - <File - RelativePath="..\src\map\guild.c" - > - </File> - <File - RelativePath="..\src\map\guild.h" - > - </File> - <File - RelativePath="..\src\map\homunculus.c" - > - </File> - <File - RelativePath="..\src\map\homunculus.h" - > - </File> - <File - RelativePath="..\src\map\instance.c" - > - </File> - <File - RelativePath="..\src\map\instance.h" - > - </File> - <File - RelativePath="..\src\map\intif.c" - > - </File> - <File - RelativePath="..\src\map\intif.h" - > - </File> - <File - RelativePath="..\src\map\itemdb.c" - > - </File> - <File - RelativePath="..\src\map\itemdb.h" - > - </File> - <File - RelativePath="..\src\map\log.c" - > - </File> - <File - RelativePath="..\src\map\log.h" - > - </File> - <File - RelativePath="..\src\map\mail.c" - > - </File> - <File - RelativePath="..\src\map\mail.h" - > - </File> - <File - RelativePath="..\src\map\map.c" - > - </File> - <File - RelativePath="..\src\map\map.h" - > - </File> - <File - RelativePath="..\src\map\mapreg.h" - > - </File> - <File - RelativePath="..\src\map\mapreg_sql.c" - > - </File> - <File - RelativePath="..\src\map\mercenary.c" - > - </File> - <File - RelativePath="..\src\map\mercenary.h" - > - </File> - <File - RelativePath="..\src\map\mob.c" - > - </File> - <File - RelativePath="..\src\map\mob.h" - > - </File> - <File - RelativePath="..\src\map\npc.c" - > - </File> - <File - RelativePath="..\src\map\npc.h" - > - </File> - <File - RelativePath="..\src\map\npc_chat.c" - > - </File> - <File - RelativePath="..\src\map\party.c" - > - </File> - <File - RelativePath="..\src\map\party.h" - > - </File> - <File - RelativePath="..\src\map\path.c" - > - </File> - <File - RelativePath="..\src\map\path.h" - > - </File> - <File - RelativePath="..\src\map\pc.c" - > - </File> - <File - RelativePath="..\src\map\pc.h" - > - </File> - <File - RelativePath="..\src\map\pet.c" - > - </File> - <File - RelativePath="..\src\map\pet.h" - > - </File> - <File - RelativePath="..\src\map\quest.c" - > - </File> - <File - RelativePath="..\src\map\quest.h" - > - </File> - <File - RelativePath="..\src\map\script.c" - > - </File> - <File - RelativePath="..\src\map\script.h" - > - </File> - <File - RelativePath="..\src\map\searchstore.c" - > - </File> - <File - RelativePath="..\src\map\searchstore.h" - > - </File> - <File - RelativePath="..\src\map\skill.c" - > - </File> - <File - RelativePath="..\src\map\skill.h" - > - </File> - <File - RelativePath="..\src\map\status.c" - > - </File> - <File - RelativePath="..\src\map\status.h" - > - </File> - <File - RelativePath="..\src\map\storage.c" - > - </File> - <File - RelativePath="..\src\map\storage.h" - > - </File> - <File - RelativePath="..\src\map\trade.c" - > - </File> - <File - RelativePath="..\src\map\trade.h" - > - </File> - <File - RelativePath="..\src\map\unit.c" - > - </File> - <File - RelativePath="..\src\map\unit.h" - > - </File> - <File - RelativePath="..\src\map\vending.c" - > - </File> - <File - RelativePath="..\src\map\vending.h" - > - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/vcproj-8/map-server_txt.vcproj b/vcproj-8/map-server_txt.vcproj deleted file mode 100644 index ab7f5ab24..000000000 --- a/vcproj-8/map-server_txt.vcproj +++ /dev/null @@ -1,645 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8,00" - Name="map-server_txt" - ProjectGUID="{D356871D-58E1-450B-967A-E1E9646175AF}" - RootNamespace="map-server_txt" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\3rdparty\zlib\include;..\3rdparty\pcre\include;..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;PCRE_SUPPORT;TXT_ONLY;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION" - GeneratePreprocessedFile="0" - MinimalRebuild="true" - ExceptionHandling="0" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - EnableFunctionLevelLinking="true" - DefaultCharIsUnsigned="false" - UsePrecompiledHeader="0" - WarningLevel="3" - DebugInformationFormat="4" - CompileAs="1" - DisableSpecificWarnings="4018;4100;4800" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalOptions="/FIXED:NO" - AdditionalDependencies="libcmtd.lib oldnames.lib ws2_32.lib zdll.lib pcre.lib" - OutputFile="$(OutDir)\map-server.exe" - LinkIncremental="2" - AdditionalLibraryDirectories="..\3rdparty\zlib\lib;..\3rdparty\pcre\lib" - IgnoreAllDefaultLibraries="true" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\map-server.pdb" - SubSystem="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="2" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - OmitFramePointers="true" - EnableFiberSafeOptimizations="true" - WholeProgramOptimization="true" - AdditionalIncludeDirectories="..\3rdparty\zlib\include;..\3rdparty\pcre\include;..\3rdparty\msinttypes\include;..\3rdparty\mt19937ar" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;NDEBUG;PCRE_SUPPORT;TXT_ONLY;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION" - StringPooling="true" - RuntimeLibrary="0" - EnableFunctionLevelLinking="false" - DefaultCharIsUnsigned="false" - UsePrecompiledHeader="0" - WarningLevel="3" - DebugInformationFormat="3" - CompileAs="1" - DisableSpecificWarnings="4018;4100;4800" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="libcmt.lib oldnames.lib ws2_32.lib zdll.lib pcre.lib" - OutputFile="$(OutDir)\map-server.exe" - LinkIncremental="1" - AdditionalLibraryDirectories="..\3rdparty\zlib\lib;..\3rdparty\pcre\lib" - IgnoreAllDefaultLibraries="true" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\map-server.pdb" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - LinkTimeCodeGeneration="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="map_txt" - > - <File - RelativePath="..\src\map\atcommand.c" - > - </File> - <File - RelativePath="..\src\map\atcommand.h" - > - </File> - <File - RelativePath="..\src\map\battle.c" - > - </File> - <File - RelativePath="..\src\map\battle.h" - > - </File> - <File - RelativePath="..\src\map\battleground.c" - > - </File> - <File - RelativePath="..\src\map\battleground.h" - > - </File> - <File - RelativePath="..\src\map\buyingstore.c" - > - </File> - <File - RelativePath="..\src\map\buyingstore.h" - > - </File> - <File - RelativePath="..\src\map\chat.c" - > - </File> - <File - RelativePath="..\src\map\chat.h" - > - </File> - <File - RelativePath="..\src\map\chrif.c" - > - </File> - <File - RelativePath="..\src\map\chrif.h" - > - </File> - <File - RelativePath="..\src\map\clif.c" - > - </File> - <File - RelativePath="..\src\map\clif.h" - > - </File> - <File - RelativePath="..\src\map\date.c" - > - </File> - <File - RelativePath="..\src\map\date.h" - > - </File> - <File - RelativePath="..\src\map\duel.c" - > - </File> - <File - RelativePath="..\src\map\duel.h" - > - </File> - <File - RelativePath="..\src\map\guild.c" - > - </File> - <File - RelativePath="..\src\map\guild.h" - > - </File> - <File - RelativePath="..\src\map\homunculus.c" - > - </File> - <File - RelativePath="..\src\map\homunculus.h" - > - </File> - <File - RelativePath="..\src\map\instance.c" - > - </File> - <File - RelativePath="..\src\map\instance.h" - > - </File> - <File - RelativePath="..\src\map\intif.c" - > - </File> - <File - RelativePath="..\src\map\intif.h" - > - </File> - <File - RelativePath="..\src\map\itemdb.c" - > - </File> - <File - RelativePath="..\src\map\itemdb.h" - > - </File> - <File - RelativePath="..\src\map\log.c" - > - </File> - <File - RelativePath="..\src\map\log.h" - > - </File> - <File - RelativePath="..\src\map\mail.c" - > - </File> - <File - RelativePath="..\src\map\mail.h" - > - </File> - <File - RelativePath="..\src\map\map.c" - > - </File> - <File - RelativePath="..\src\map\map.h" - > - </File> - <File - RelativePath="..\src\map\mapreg.h" - > - </File> - <File - RelativePath="..\src\map\mapreg_txt.c" - > - </File> - <File - RelativePath="..\src\map\mercenary.c" - > - </File> - <File - RelativePath="..\src\map\mercenary.h" - > - </File> - <File - RelativePath="..\src\map\mob.c" - > - </File> - <File - RelativePath="..\src\map\mob.h" - > - </File> - <File - RelativePath="..\src\map\npc.c" - > - </File> - <File - RelativePath="..\src\map\npc.h" - > - </File> - <File - RelativePath="..\src\map\npc_chat.c" - > - </File> - <File - RelativePath="..\src\map\party.c" - > - </File> - <File - RelativePath="..\src\map\party.h" - > - </File> - <File - RelativePath="..\src\map\path.c" - > - </File> - <File - RelativePath="..\src\map\path.h" - > - </File> - <File - RelativePath="..\src\map\pc.c" - > - </File> - <File - RelativePath="..\src\map\pc.h" - > - </File> - <File - RelativePath="..\src\map\pet.c" - > - </File> - <File - RelativePath="..\src\map\pet.h" - > - </File> - <File - RelativePath="..\src\map\quest.c" - > - </File> - <File - RelativePath="..\src\map\quest.h" - > - </File> - <File - RelativePath="..\src\map\script.c" - > - </File> - <File - RelativePath="..\src\map\script.h" - > - </File> - <File - RelativePath="..\src\map\searchstore.c" - > - </File> - <File - RelativePath="..\src\map\searchstore.h" - > - </File> - <File - RelativePath="..\src\map\skill.c" - > - </File> - <File - RelativePath="..\src\map\skill.h" - > - </File> - <File - RelativePath="..\src\map\status.c" - > - </File> - <File - RelativePath="..\src\map\status.h" - > - </File> - <File - RelativePath="..\src\map\storage.c" - > - </File> - <File - RelativePath="..\src\map\storage.h" - > - </File> - <File - RelativePath="..\src\map\trade.c" - > - </File> - <File - RelativePath="..\src\map\trade.h" - > - </File> - <File - RelativePath="..\src\map\unit.c" - > - </File> - <File - RelativePath="..\src\map\unit.h" - > - </File> - <File - RelativePath="..\src\map\vending.c" - > - </File> - <File - RelativePath="..\src\map\vending.h" - > - </File> - </Filter> - <Filter - Name="common" - > - <File - RelativePath="..\src\common\cbasetypes.h" - > - </File> - <File - RelativePath="..\src\common\core.c" - > - </File> - <File - RelativePath="..\src\common\core.h" - > - </File> - <File - RelativePath="..\src\common\db.c" - > - </File> - <File - RelativePath="..\src\common\db.h" - > - </File> - <File - RelativePath="..\src\common\ers.c" - > - </File> - <File - RelativePath="..\src\common\ers.h" - > - </File> - <File - RelativePath="..\src\common\grfio.c" - > - </File> - <File - RelativePath="..\src\common\grfio.h" - > - </File> - <File - RelativePath="..\src\common\lock.c" - > - </File> - <File - RelativePath="..\src\common\lock.h" - > - </File> - <File - RelativePath="..\src\common\malloc.c" - > - </File> - <File - RelativePath="..\src\common\malloc.h" - > - </File> - <File - RelativePath="..\src\common\mapindex.c" - > - </File> - <File - RelativePath="..\src\common\mapindex.h" - > - </File> - <File - RelativePath="..\src\common\md5calc.c" - > - </File> - <File - RelativePath="..\src\common\md5calc.h" - > - </File> - <File - RelativePath="..\src\common\mmo.h" - > - </File> - <File - RelativePath="..\src\common\nullpo.c" - > - </File> - <File - RelativePath="..\src\common\nullpo.h" - > - </File> - <File - RelativePath="..\src\common\plugin.h" - > - </File> - <File - RelativePath="..\src\common\plugins.c" - > - </File> - <File - RelativePath="..\src\common\plugins.h" - > - </File> - <File - RelativePath="..\src\common\random.c" - > - </File> - <File - RelativePath="..\src\common\random.h" - > - </File> - <File - RelativePath="..\src\common\showmsg.c" - > - </File> - <File - RelativePath="..\src\common\showmsg.h" - > - </File> - <File - RelativePath="..\src\common\socket.c" - > - </File> - <File - RelativePath="..\src\common\socket.h" - > - </File> - <File - RelativePath="..\src\common\strlib.c" - > - </File> - <File - RelativePath="..\src\common\strlib.h" - > - </File> - <File - RelativePath="..\src\common\timer.c" - > - </File> - <File - RelativePath="..\src\common\timer.h" - > - </File> - <File - RelativePath="..\src\common\utils.c" - > - </File> - <File - RelativePath="..\src\common\utils.h" - > - </File> - <File - RelativePath="..\src\common\version.h" - > - </File> - </Filter> - <Filter - Name="3rdparty" - > - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.c" - > - </File> - <File - RelativePath="..\3rdparty\mt19937ar\mt19937ar.h" - > - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/vcproj-8/mapcache.vcproj b/vcproj-8/mapcache.vcproj deleted file mode 100644 index 3c6585c13..000000000 --- a/vcproj-8/mapcache.vcproj +++ /dev/null @@ -1,269 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8,00" - Name="mapcache" - ProjectGUID="{D356871D-58E1-450B-967A-E7E9646175AF}" - RootNamespace="mapcache" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\3rdparty\zlib\include;..\3rdparty\msinttypes\include" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;MINICORE" - GeneratePreprocessedFile="0" - MinimalRebuild="true" - ExceptionHandling="0" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - EnableFunctionLevelLinking="true" - DefaultCharIsUnsigned="false" - UsePrecompiledHeader="0" - WarningLevel="3" - DebugInformationFormat="4" - CompileAs="1" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalOptions="/FIXED:NO" - AdditionalDependencies="libcmtd.lib oldnames.lib zdll.lib" - OutputFile="$(OutDir)\mapcache.exe" - LinkIncremental="2" - AdditionalLibraryDirectories="..\3rdparty\zlib\lib" - IgnoreAllDefaultLibraries="true" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb" - SubSystem="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory=".." - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="2" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - OmitFramePointers="true" - EnableFiberSafeOptimizations="true" - WholeProgramOptimization="true" - AdditionalIncludeDirectories="..\3rdparty\zlib\include;..\3rdparty\msinttypes\include" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;MINICORE" - StringPooling="true" - RuntimeLibrary="0" - EnableFunctionLevelLinking="false" - DefaultCharIsUnsigned="false" - UsePrecompiledHeader="0" - WarningLevel="3" - DebugInformationFormat="3" - CompileAs="1" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="libcmt.lib oldnames.lib zdll.lib" - OutputFile="$(OutDir)\mapcache.exe" - LinkIncremental="1" - AdditionalLibraryDirectories="..\3rdparty\zlib\lib" - IgnoreAllDefaultLibraries="true" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - LinkTimeCodeGeneration="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="common" - > - <File - RelativePath="..\src\common\cbasetypes.h" - > - </File> - <File - RelativePath="..\src\common\core.c" - > - </File> - <File - RelativePath="..\src\common\core.h" - > - </File> - <File - RelativePath="..\src\common\grfio.c" - > - </File> - <File - RelativePath="..\src\common\grfio.h" - > - </File> - <File - RelativePath="..\src\common\malloc.c" - > - </File> - <File - RelativePath="..\src\common\malloc.h" - > - </File> - <File - RelativePath="..\src\common\mmo.h" - > - </File> - <File - RelativePath="..\src\common\showmsg.c" - > - </File> - <File - RelativePath="..\src\common\showmsg.h" - > - </File> - <File - RelativePath="..\src\common\strlib.c" - > - </File> - <File - RelativePath="..\src\common\strlib.h" - > - </File> - <File - RelativePath="..\src\common\utils.c" - > - </File> - <File - RelativePath="..\src\common\utils.h" - > - </File> - <File - RelativePath="..\src\common\version.h" - > - </File> - </Filter> - <Filter - Name="mapcache" - > - <File - RelativePath="..\src\tool\mapcache.c" - > - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/vcproj-8/plugin-console.vcproj b/vcproj-8/plugin-console.vcproj deleted file mode 100644 index ac3c6de6d..000000000 --- a/vcproj-8/plugin-console.vcproj +++ /dev/null @@ -1,234 +0,0 @@ -<?xml version="1.0" encoding="windows-1250"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8,00" - Name="console" - ProjectGUID="{73E1101A-310C-4453-8F45-FD2795ABEF15}" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory=".\Debug/console" - IntermediateDirectory=".\Debug/console" - ConfigurationType="2" - InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="_DEBUG" - SuppressStartupBanner="true" - TargetEnvironment="1" - GenerateStublessProxies="true" - TypeLibraryName=".\Debug/console/console.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="../3rdparty/msinttypes/include" - PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE" - MinimalRebuild="true" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - PrecompiledHeaderFile=".\Debug/console/console.pch" - AssemblerListingLocation=".\Debug/console/" - ObjectFile=".\Debug/console/" - ProgramDataBaseFileName=".\Debug/console/" - WarningLevel="3" - SuppressStartupBanner="true" - DebugInformationFormat="4" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1047" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - OutputFile="../plugins/console.dll" - LinkIncremental="2" - SuppressStartupBanner="true" - ModuleDefinitionFile="..\src\plugins\console.def" - GenerateDebugInformation="true" - ProgramDatabaseFile="../plugins/console.pdb" - ImportLibrary=".\Debug/console/console.lib" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - SuppressStartupBanner="true" - OutputFile=".\Debug/console/console.bsc" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory=".\Release/console" - IntermediateDirectory=".\Release/console" - ConfigurationType="2" - InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="NDEBUG" - SuppressStartupBanner="true" - TargetEnvironment="1" - GenerateStublessProxies="true" - TypeLibraryName=".\Release/console/console.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - AdditionalIncludeDirectories="../3rdparty/msinttypes/include" - PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE" - StringPooling="true" - RuntimeLibrary="0" - EnableFunctionLevelLinking="true" - PrecompiledHeaderFile=".\Release/console/console.pch" - AssemblerListingLocation=".\Release/console/" - ObjectFile=".\Release/console/" - ProgramDataBaseFileName=".\Release/console/" - WarningLevel="3" - SuppressStartupBanner="true" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1047" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - OutputFile="../plugins/console.dll" - LinkIncremental="1" - SuppressStartupBanner="true" - ModuleDefinitionFile="..\src\plugins\console.def" - ProgramDatabaseFile="../plugins/console.pdb" - ImportLibrary=".\Release/console/console.lib" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - SuppressStartupBanner="true" - OutputFile=".\Release/console/console.bsc" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <File - RelativePath="..\src\plugins\console.c" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\src\plugins\console.def" - > - </File> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/vcproj-8/plugin-pid.vcproj b/vcproj-8/plugin-pid.vcproj deleted file mode 100644 index 8b24e03af..000000000 --- a/vcproj-8/plugin-pid.vcproj +++ /dev/null @@ -1,234 +0,0 @@ -<?xml version="1.0" encoding="windows-1250"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8,00" - Name="pid" - ProjectGUID="{9509E1B9-DA2B-4153-9EE0-CBCA6597F198}" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory=".\Debug/pid" - IntermediateDirectory=".\Debug/pid" - ConfigurationType="2" - InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="_DEBUG" - SuppressStartupBanner="true" - TargetEnvironment="1" - GenerateStublessProxies="true" - TypeLibraryName=".\Debug/pid/pid.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="../3rdparty/msinttypes/include" - PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE" - MinimalRebuild="true" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - PrecompiledHeaderFile=".\Debug/pid/pid.pch" - AssemblerListingLocation=".\Debug/pid/" - ObjectFile=".\Debug/pid/" - ProgramDataBaseFileName=".\Debug/pid/" - WarningLevel="3" - SuppressStartupBanner="true" - DebugInformationFormat="4" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1047" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - OutputFile="../plugins/pid.dll" - LinkIncremental="2" - SuppressStartupBanner="true" - ModuleDefinitionFile="..\src\plugins\pid.def" - GenerateDebugInformation="true" - ProgramDatabaseFile="../plugins/pid.pdb" - ImportLibrary=".\Debug/pid/pid.lib" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - SuppressStartupBanner="true" - OutputFile=".\Debug/pid/pid.bsc" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory=".\Release/pid" - IntermediateDirectory=".\Release/pid" - ConfigurationType="2" - InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - PreprocessorDefinitions="NDEBUG" - SuppressStartupBanner="true" - TargetEnvironment="1" - GenerateStublessProxies="true" - TypeLibraryName=".\Release/pid/pid.tlb" - HeaderFileName="" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - AdditionalIncludeDirectories="../3rdparty/msinttypes/include" - PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE" - StringPooling="true" - RuntimeLibrary="0" - EnableFunctionLevelLinking="true" - PrecompiledHeaderFile=".\Release/pid/pid.pch" - AssemblerListingLocation=".\Release/pid/" - ObjectFile=".\Release/pid/" - ProgramDataBaseFileName=".\Release/pid/" - WarningLevel="3" - SuppressStartupBanner="true" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1047" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - OutputFile="../plugins/pid.dll" - LinkIncremental="1" - SuppressStartupBanner="true" - ModuleDefinitionFile="..\src\plugins\pid.def" - ProgramDatabaseFile="../plugins/pid.pdb" - ImportLibrary=".\Release/pid/pid.lib" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - SuppressStartupBanner="true" - OutputFile=".\Release/pid/pid.bsc" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <File - RelativePath="..\src\plugins\pid.c" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\src\plugins\pid.def" - > - </File> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/vcproj-8/txt-converter-char.vcproj b/vcproj-8/txt-converter-char.vcproj deleted file mode 100644 index 7a21cd9cf..000000000 --- a/vcproj-8/txt-converter-char.vcproj +++ /dev/null @@ -1,505 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8,00" - Name="txt-converter-char" - ProjectGUID="{D356871D-58E1-450B-967A-EAE9646175AF}" - RootNamespace="txt-converter-char" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="..\tools" - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\3rdparty\mysql\include;..\3rdparty\msinttypes\include" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION;MINICORE;TXT_SQL_CONVERT" - GeneratePreprocessedFile="0" - MinimalRebuild="true" - ExceptionHandling="0" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - EnableFunctionLevelLinking="true" - DefaultCharIsUnsigned="false" - UsePrecompiledHeader="0" - WarningLevel="3" - DebugInformationFormat="4" - CompileAs="1" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="libcmtd.lib oldnames.lib ws2_32.lib libmysql.lib" - OutputFile="$(OutDir)\char-converter.exe" - LinkIncremental="2" - AdditionalLibraryDirectories="..\3rdparty\mysql\lib" - IgnoreAllDefaultLibraries="true" - IgnoreDefaultLibraryNames="" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\char-converter.pdb" - SubSystem="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="..\tools" - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" - CharacterSet="2" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - OmitFramePointers="true" - EnableFiberSafeOptimizations="true" - WholeProgramOptimization="true" - AdditionalIncludeDirectories="..\3rdparty\mysql\include;..\3rdparty\msinttypes\include" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION;MINICORE;TXT_SQL_CONVERT" - StringPooling="true" - RuntimeLibrary="0" - DefaultCharIsUnsigned="false" - UsePrecompiledHeader="0" - PrecompiledHeaderThrough="" - PrecompiledHeaderFile="" - WarningLevel="3" - DebugInformationFormat="3" - CompileAs="1" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="libcmt.lib oldnames.lib ws2_32.lib libmysql.lib" - OutputFile="$(OutDir)\char-converter.exe" - LinkIncremental="1" - AdditionalLibraryDirectories="..\3rdparty\mysql\lib" - IgnoreAllDefaultLibraries="true" - IgnoreDefaultLibraryNames="" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\char-converter.pdb" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - LinkTimeCodeGeneration="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="char" - > - <File - RelativePath="..\src\char\char.c" - > - </File> - <File - RelativePath="..\src\char\char.h" - > - </File> - <File - RelativePath="..\src\char\int_guild.c" - > - </File> - <File - RelativePath="..\src\char\int_guild.h" - > - </File> - <File - RelativePath="..\src\char\int_party.c" - > - </File> - <File - RelativePath="..\src\char\int_party.h" - > - </File> - <File - RelativePath="..\src\char\int_pet.c" - > - </File> - <File - RelativePath="..\src\char\int_pet.h" - > - </File> - <File - RelativePath="..\src\char\int_storage.c" - > - </File> - <File - RelativePath="..\src\char\int_storage.h" - > - </File> - <File - RelativePath="..\src\char\inter.c" - > - </File> - <File - RelativePath="..\src\char\inter.h" - > - </File> - </Filter> - <Filter - Name="common" - > - <File - RelativePath="..\src\common\core.c" - > - </File> - <File - RelativePath="..\src\common\core.h" - > - </File> - <File - RelativePath="..\src\common\ers.c" - > - </File> - <File - RelativePath="..\src\common\ers.h" - > - </File> - <File - RelativePath="..\src\common\malloc.c" - > - </File> - <File - RelativePath="..\src\common\malloc.h" - > - </File> - <File - RelativePath="..\src\common\mapindex.c" - > - </File> - <File - RelativePath="..\src\common\mapindex.h" - > - </File> - <File - RelativePath="..\src\common\showmsg.c" - > - </File> - <File - RelativePath="..\src\common\showmsg.h" - > - </File> - <File - RelativePath="..\src\common\sql.c" - > - </File> - <File - RelativePath="..\src\common\sql.h" - > - </File> - <File - RelativePath="..\src\common\strlib.c" - > - </File> - <File - RelativePath="..\src\common\strlib.h" - > - </File> - <File - RelativePath="..\src\common\timer.c" - > - </File> - <File - RelativePath="..\src\common\timer.h" - > - </File> - <File - RelativePath="..\src\common\utils.c" - > - </File> - <File - RelativePath="..\src\common\utils.h" - > - </File> - </Filter> - <Filter - Name="char_sql" - > - <File - RelativePath="..\src\char_sql\char.c" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - ObjectFile="$(IntDir)\$(InputName)_sql.obj" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - ObjectFile="$(IntDir)\$(InputName)_sql.obj" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\src\char_sql\char.h" - > - </File> - <File - RelativePath="..\src\char_sql\int_guild.c" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - ObjectFile="$(IntDir)\$(InputName)_sql.obj" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - ObjectFile="$(IntDir)\$(InputName)_sql.obj" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\src\char_sql\int_guild.h" - > - </File> - <File - RelativePath="..\src\char_sql\int_mercenary.c" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - ObjectFile="$(IntDir)\$(InputName)_sql.obj" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - ObjectFile="$(IntDir)\$(InputName)_sql.obj" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\src\char_sql\int_mercenary.h" - > - </File> - <File - RelativePath="..\src\char_sql\int_party.c" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - ObjectFile="$(IntDir)\$(InputName)_sql.obj" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - ObjectFile="$(IntDir)\$(InputName)_sql.obj" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\src\char_sql\int_party.h" - > - </File> - <File - RelativePath="..\src\char_sql\int_pet.c" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - ObjectFile="$(IntDir)\$(InputName)_sql.obj" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - ObjectFile="$(IntDir)\$(InputName)_sql.obj" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\src\char_sql\int_pet.h" - > - </File> - <File - RelativePath="..\src\char_sql\int_storage.c" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - ObjectFile="$(IntDir)\$(InputName)_sql.obj" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - ObjectFile="$(IntDir)\$(InputName)_sql.obj" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\src\char_sql\int_storage.h" - > - </File> - <File - RelativePath="..\src\char_sql\inter.c" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - ObjectFile="$(IntDir)\$(InputName)_sql.obj" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCLCompilerTool" - ObjectFile="$(IntDir)\$(InputName)_sql.obj" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\src\char_sql\inter.h" - > - </File> - </Filter> - <File - RelativePath="..\src\txt-converter\char-converter.c" - > - </File> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/vcproj-8/txt-converter-login.vcproj b/vcproj-8/txt-converter-login.vcproj deleted file mode 100644 index 4e43fd147..000000000 --- a/vcproj-8/txt-converter-login.vcproj +++ /dev/null @@ -1,301 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8,00" - Name="txt-converter-login" - ProjectGUID="{D356871D-58E1-450B-967A-E9E9646175AF}" - RootNamespace="txt-converter-login" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="..\tools" - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\3rdparty\mysql\include;..\3rdparty\msinttypes\include" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION;MINICORE;WITH_TXT;WITH_SQL" - GeneratePreprocessedFile="0" - MinimalRebuild="true" - ExceptionHandling="0" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - EnableFunctionLevelLinking="true" - DefaultCharIsUnsigned="false" - UsePrecompiledHeader="0" - WarningLevel="3" - DebugInformationFormat="4" - CompileAs="1" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="libcmtd.lib oldnames.lib ws2_32.lib libmysql.lib" - OutputFile="$(OutDir)\login-converter.exe" - LinkIncremental="2" - AdditionalLibraryDirectories="..\3rdparty\mysql\lib" - IgnoreAllDefaultLibraries="true" - IgnoreDefaultLibraryNames="" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\login-converter.pdb" - SubSystem="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="..\tools" - IntermediateDirectory="$(ProjectName)\$(ConfigurationName)" - ConfigurationType="1" - InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" - CharacterSet="2" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="2" - EnableIntrinsicFunctions="true" - FavorSizeOrSpeed="1" - OmitFramePointers="true" - EnableFiberSafeOptimizations="true" - WholeProgramOptimization="true" - AdditionalIncludeDirectories="..\3rdparty\mysql\include;..\3rdparty\msinttypes\include" - PreprocessorDefinitions="WIN32;_WIN32;__WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION;MINICORE;WITH_TXT;WITH_SQL" - StringPooling="true" - RuntimeLibrary="0" - DefaultCharIsUnsigned="false" - UsePrecompiledHeader="0" - PrecompiledHeaderThrough="" - PrecompiledHeaderFile="" - WarningLevel="3" - DebugInformationFormat="3" - CompileAs="1" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="libcmt.lib oldnames.lib ws2_32.lib libmysql.lib" - OutputFile="$(OutDir)\login-converter.exe" - LinkIncremental="1" - AdditionalLibraryDirectories="..\3rdparty\mysql\lib" - IgnoreAllDefaultLibraries="true" - IgnoreDefaultLibraryNames="" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(OutDir)\login-converter.pdb" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - LinkTimeCodeGeneration="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="common" - > - <File - RelativePath="..\src\common\core.c" - > - </File> - <File - RelativePath="..\src\common\core.h" - > - </File> - <File - RelativePath="..\src\common\db.c" - > - </File> - <File - RelativePath="..\src\common\db.h" - > - </File> - <File - RelativePath="..\src\common\ers.c" - > - </File> - <File - RelativePath="..\src\common\ers.h" - > - </File> - <File - RelativePath="..\src\common\lock.c" - > - </File> - <File - RelativePath="..\src\common\lock.h" - > - </File> - <File - RelativePath="..\src\common\malloc.c" - > - </File> - <File - RelativePath="..\src\common\malloc.h" - > - </File> - <File - RelativePath="..\src\common\showmsg.c" - > - </File> - <File - RelativePath="..\src\common\showmsg.h" - > - </File> - <File - RelativePath="..\src\common\sql.c" - > - </File> - <File - RelativePath="..\src\common\sql.h" - > - </File> - <File - RelativePath="..\src\common\strlib.c" - > - </File> - <File - RelativePath="..\src\common\strlib.h" - > - </File> - <File - RelativePath="..\src\common\timer.c" - > - </File> - <File - RelativePath="..\src\common\timer.h" - > - </File> - <File - RelativePath="..\src\common\utils.c" - > - </File> - <File - RelativePath="..\src\common\utils.h" - > - </File> - </Filter> - <File - RelativePath="..\src\login\account.h" - > - </File> - <File - RelativePath="..\src\login\account_sql.c" - > - </File> - <File - RelativePath="..\src\login\account_txt.c" - > - </File> - <File - RelativePath="..\src\txt-converter\login-converter.c" - > - </File> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/vcproj-9/char-server_sql.vcproj b/vcproj-9/char-server_sql.vcproj index 64fdf9bac..759fd4f83 100644 --- a/vcproj-9/char-server_sql.vcproj +++ b/vcproj-9/char-server_sql.vcproj @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="Windows-1252"?> <VisualStudioProject ProjectType="Visual C++" - Version="9,00" + Version="9.00" Name="char-server_sql" ProjectGUID="{D356871D-58E1-450B-967A-E4E9646175AF}" RootNamespace="char-server_sql" diff --git a/vcproj-9/char-server_txt.vcproj b/vcproj-9/char-server_txt.vcproj index a6e83d887..690607970 100644 --- a/vcproj-9/char-server_txt.vcproj +++ b/vcproj-9/char-server_txt.vcproj @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="Windows-1252"?> <VisualStudioProject ProjectType="Visual C++" - Version="9,00" + Version="9.00" Name="char-server_txt" ProjectGUID="{D356871D-58E1-450B-967A-E3E9646175AF}" RootNamespace="char-server_txt" diff --git a/vcproj-9/login-server_sql.vcproj b/vcproj-9/login-server_sql.vcproj index 7a725fc36..f962b88fa 100644 --- a/vcproj-9/login-server_sql.vcproj +++ b/vcproj-9/login-server_sql.vcproj @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="Windows-1252"?> <VisualStudioProject ProjectType="Visual C++" - Version="9,00" + Version="9.00" Name="login-server_sql" ProjectGUID="{D356871D-58E1-450B-967A-E5E9646175AF}" RootNamespace="login-server_sql" diff --git a/vcproj-9/login-server_txt.vcproj b/vcproj-9/login-server_txt.vcproj index bb2820edb..7bc8b7d56 100644 --- a/vcproj-9/login-server_txt.vcproj +++ b/vcproj-9/login-server_txt.vcproj @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="Windows-1252"?> <VisualStudioProject ProjectType="Visual C++" - Version="9,00" + Version="9.00" Name="login-server_txt" ProjectGUID="{D356871D-58E1-450B-967A-E2E9646175AF}" RootNamespace="login-server_txt" diff --git a/vcproj-9/map-server_sql.vcproj b/vcproj-9/map-server_sql.vcproj index 8cb57ef3b..7f4bac76f 100644 --- a/vcproj-9/map-server_sql.vcproj +++ b/vcproj-9/map-server_sql.vcproj @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="Windows-1252"?> <VisualStudioProject ProjectType="Visual C++" - Version="9,00" + Version="9.00" Name="map-server_sql" ProjectGUID="{D356871D-58E1-450B-967A-E6E9646175AF}" RootNamespace="map-server_sql" @@ -388,19 +388,19 @@ > </File> <File - RelativePath="..\src\map\battleground.h" + RelativePath="..\src\map\battleground.c" > </File> <File - RelativePath="..\src\map\battleground.c" + RelativePath="..\src\map\battleground.h" > </File> <File - RelativePath="..\src\map\buyingstore.h" + RelativePath="..\src\map\buyingstore.c" > </File> <File - RelativePath="..\src\map\buyingstore.c" + RelativePath="..\src\map\buyingstore.h" > </File> <File @@ -452,67 +452,67 @@ > </File> <File - RelativePath="..\src\map\intif.c" + RelativePath="..\src\map\homunculus.c" > </File> <File - RelativePath="..\src\map\intif.h" + RelativePath="..\src\map\homunculus.h" > </File> <File - RelativePath="..\src\map\itemdb.c" + RelativePath="..\src\map\instance.c" > </File> <File - RelativePath="..\src\map\itemdb.h" + RelativePath="..\src\map\instance.h" > </File> <File - RelativePath="..\src\map\log.c" + RelativePath="..\src\map\intif.c" > </File> <File - RelativePath="..\src\map\log.h" + RelativePath="..\src\map\intif.h" > </File> <File - RelativePath="..\src\map\mail.c" + RelativePath="..\src\map\itemdb.c" > </File> <File - RelativePath="..\src\map\mail.h" + RelativePath="..\src\map\itemdb.h" > </File> <File - RelativePath="..\src\map\map.c" + RelativePath="..\src\map\log.c" > </File> <File - RelativePath="..\src\map\map.h" + RelativePath="..\src\map\log.h" > </File> <File - RelativePath="..\src\map\mapreg.h" + RelativePath="..\src\map\mail.c" > </File> <File - RelativePath="..\src\map\mapreg_sql.c" + RelativePath="..\src\map\mail.h" > </File> <File - RelativePath="..\src\map\homunculus.c" + RelativePath="..\src\map\map.c" > </File> <File - RelativePath="..\src\map\homunculus.h" + RelativePath="..\src\map\map.h" > </File> <File - RelativePath="..\src\map\instance.c" + RelativePath="..\src\map\mapreg.h" > </File> <File - RelativePath="..\src\map\instance.h" + RelativePath="..\src\map\mapreg_sql.c" > </File> <File @@ -584,6 +584,34 @@ > </File> <File + RelativePath="..\src\map\RRConfig\Core.h" + > + </File> + <File + RelativePath="..\src\map\RRConfig\Renewal.h" + > + </File> + <File + RelativePath="..\src\map\RRConfig\Secure.h" + > + </File> + <File + RelativePath="..\src\map\RRConfig\Data\Const.h" + > + </File> + <File + RelativePath="..\src\map\RRConfig\Skills\General.h" + > + </File> + <File + RelativePath="..\src\map\RRConfig\Skills\Mage_Classes.h" + > + </File> + <File + RelativePath="..\src\map\RRConfig\Skills\Swordsman_Classes.h" + > + </File> + <File RelativePath="..\src\map\script.c" > </File> diff --git a/vcproj-9/map-server_txt.vcproj b/vcproj-9/map-server_txt.vcproj index 2b983df98..d4cc1b13b 100644 --- a/vcproj-9/map-server_txt.vcproj +++ b/vcproj-9/map-server_txt.vcproj @@ -415,6 +415,34 @@ > </File> <File + RelativePath="..\src\map\RRConfig\Core.h" + > + </File> + <File + RelativePath="..\src\map\RRConfig\Renewal.h" + > + </File> + <File + RelativePath="..\src\map\RRConfig\Secure.h" + > + </File> + <File + RelativePath="..\src\map\RRConfig\Data\Const.h" + > + </File> + <File + RelativePath="..\src\map\RRConfig\Skills\General.h" + > + </File> + <File + RelativePath="..\src\map\RRConfig\Skills\Mage_Classes.h" + > + </File> + <File + RelativePath="..\src\map\RRConfig\Skills\Swordsman_Classes.h" + > + </File> + <File RelativePath="..\src\map\script.c" > </File> diff --git a/vcproj-9/mapcache.vcproj b/vcproj-9/mapcache.vcproj index 54c2756ff..2fb78f198 100644 --- a/vcproj-9/mapcache.vcproj +++ b/vcproj-9/mapcache.vcproj @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="Windows-1252"?> <VisualStudioProject ProjectType="Visual C++" - Version="9,00" + Version="9.00" Name="mapcache" ProjectGUID="{D356871D-58E1-450B-967A-E7E9646175AF}" RootNamespace="mapcache" @@ -209,7 +209,7 @@ > </File> <File - RelativePath="..\src\common\core.h" + RelativePath="..\src\common\des.h" > </File> <File diff --git a/vcproj-9/plugin-console.vcproj b/vcproj-9/plugin-console.vcproj index 9e7289c59..30337a0c1 100644 --- a/vcproj-9/plugin-console.vcproj +++ b/vcproj-9/plugin-console.vcproj @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="windows-1250"?> <VisualStudioProject ProjectType="Visual C++" - Version="9,00" + Version="9.00" Name="console" ProjectGUID="{73E1101A-310C-4453-8F45-FD2795ABEF15}" TargetFrameworkVersion="0" diff --git a/vcproj-9/plugin-pid.vcproj b/vcproj-9/plugin-pid.vcproj index b9e6b3b7c..caa9a91df 100644 --- a/vcproj-9/plugin-pid.vcproj +++ b/vcproj-9/plugin-pid.vcproj @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="windows-1250"?> <VisualStudioProject ProjectType="Visual C++" - Version="9,00" + Version="9.00" Name="pid" ProjectGUID="{9509E1B9-DA2B-4153-9EE0-CBCA6597F198}" TargetFrameworkVersion="0" diff --git a/vcproj-9/txt-converter-char.vcproj b/vcproj-9/txt-converter-char.vcproj index 83bd5d6d2..6d9b6a846 100644 --- a/vcproj-9/txt-converter-char.vcproj +++ b/vcproj-9/txt-converter-char.vcproj @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="Windows-1252"?> <VisualStudioProject ProjectType="Visual C++" - Version="9,00" + Version="9.00" Name="txt-converter-char" ProjectGUID="{D356871D-58E1-450B-967A-EAE9646175AF}" RootNamespace="txt-converter-char" diff --git a/vcproj-9/txt-converter-login.vcproj b/vcproj-9/txt-converter-login.vcproj index 148009113..e69a7c20c 100644 --- a/vcproj-9/txt-converter-login.vcproj +++ b/vcproj-9/txt-converter-login.vcproj @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="Windows-1252"?> <VisualStudioProject ProjectType="Visual C++" - Version="9,00" + Version="9.00" Name="txt-converter-login" ProjectGUID="{D356871D-58E1-450B-967A-E9E9646175AF}" RootNamespace="txt-converter-login" |