diff --git a/Assets/PerfectWorld/Scripts/Common/AWScriptFile.cs b/Assets/PerfectWorld/Scripts/Common/AWScriptFile.cs new file mode 100644 index 0000000000..ad3eb9d2d9 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Common/AWScriptFile.cs @@ -0,0 +1,255 @@ +using System; +using System.IO; +using ModelRenderer.Scripts.Common; + +namespace BrewMonster.Common +{ + + public struct SCRIPTINFO + { + public byte[] pFileBuf; // Pointer to file data buffer + public byte[] pStart; // Start address of buffer + public byte[] pEnd; // End address of buffer + public byte[] pCur; // Current pointer. Pointer size is 2 bytes + public uint pCurIndex; // Current pointer index + public int iLine; // Line counter + } + + public class AWScriptFile + { + private const int MAX_LINELEN = 2048; + public ushort[] m_szToken = new ushort[MAX_LINELEN]; + + protected SCRIPTINFO m_Script = new SCRIPTINFO(); + + + + public bool Open(FileStream stream) + { + uint dwFilelen = (uint)stream.Length; + if (dwFilelen <= 0) + { + BMLogger.LogError($"EC_StringTab::Open: {stream.Name} File length is 0"); + return false; + } + + byte[] pBuf = new byte[dwFilelen]; + + stream.Read(pBuf, 0, (int)dwFilelen); + + // Check unicode file header + ushort wChar = BitConverter.ToUInt16(new byte[] {pBuf[0], pBuf[1]}); + if (wChar != 0xfeff) + { + BMLogger.LogError($"EC_StringTab::Open: {stream.Name} File is not unicode"); + return false; + } + + m_Script.pFileBuf = pBuf; + m_Script.pStart = new []{m_Script.pFileBuf[2], m_Script.pFileBuf[3]}; // Skip unicode magic number + m_Script.pCur = m_Script.pStart; + m_Script.pEnd = new [] {m_Script.pFileBuf[pBuf.Length - 2], m_Script.pFileBuf[pBuf.Length - 1]}; + m_Script.pCurIndex = 2; + m_Script.iLine = 0; + + return true; + } + + public bool Open(string szFile) + { + if (!File.Exists(szFile)) + { + BMLogger.LogError($"EC_StringTab::Open: {szFile} File not found"); + return false; + } + + using (FileStream stream = new FileStream(szFile, FileMode.Open, FileAccess.Read)) + { + var bRet = Open(stream); + if (!bRet) + { + BMLogger.LogError($"EC_StringTab::Open: {szFile} File open failed"); + return false; + } + stream.Close(); + return true; + } + } + + public void Close() + { + //TODO: May be not needed + m_Script.pFileBuf = null; + m_Script.pStart = null; + m_Script.pCur = null; + m_Script.pEnd = null; + } + + /// + /// Get next token and move file pointer forward. + /// + /// true, search next token until it is found or all buffer has been checked;
false, only search next token in current line + /// true for success, otherwise return false + public bool GetNextToken(bool bCrossLine) + { + NewLine: + while (m_Script.pCurIndex < m_Script.pFileBuf.Length) + { + // get the first byte because the pointer is 2 bytes. The second byte should be 0 in these cases (value < 255) + if (m_Script.pFileBuf[m_Script.pCurIndex] > 32 && m_Script.pFileBuf[m_Script.pCurIndex] != ';' && + m_Script.pFileBuf[m_Script.pCurIndex] != ',') + break; + + m_Script.pCurIndex += 2; // move pointer forward 2 bytes because it's w_char (2 bytes) + if (m_Script.pCurIndex >= m_Script.pFileBuf.Length) + return false; + m_Script.pCur[0] = m_Script.pFileBuf[m_Script.pCurIndex]; + m_Script.pCur[1] = m_Script.pFileBuf[m_Script.pCurIndex + 1]; + if (m_Script.pCur[0] == '\n') + { + if (!bCrossLine) + { + m_Script.pCurIndex -= 2; // Let search pointer still stop in this line + return false; + } + + m_Script.iLine++; + } + } + + if (m_Script.pCurIndex >= m_Script.pFileBuf.Length) + return false; + + // Skip comment lines those begin with '//' + if (m_Script.pFileBuf[m_Script.pCurIndex] == '/' && m_Script.pFileBuf[m_Script.pCurIndex + 2] == '/') + { + // This is a note line, search it's ending. + while (!m_Script.pCur.Equals(m_Script.pEnd) && m_Script.pFileBuf[m_Script.pCurIndex] != '\n') + { + m_Script.pCurIndex += 2; + } + + if (m_Script.pCurIndex >= m_Script.pFileBuf.Length) // Found nothing + return false; + if (!bCrossLine) // Don't search cross line + return false; + + m_Script.pCurIndex += 2; // Skip '\n' + m_Script.iLine++; + goto NewLine; + } + + // Text between /* */ are also comment + if (m_Script.pFileBuf[m_Script.pCurIndex] == '/' && m_Script.pFileBuf[m_Script.pCurIndex + 2] == '*') + { + bool bError = false; + + m_Script.pCurIndex += 4; // Skip /* + + while (m_Script.pFileBuf[m_Script.pCurIndex] != '*' || m_Script.pFileBuf[m_Script.pCurIndex + 2] != '/') + { + if (m_Script.pCurIndex >= m_Script.pEnd.Length) // Found nothing + return false; + else if (m_Script.pFileBuf[m_Script.pCurIndex] == '\n') + { + if (!bCrossLine) + { + // This is a fatal error, we should return false. + // But we must search the '*/' so that next time our begin point + // isn't in comment paragraph + bError = true; + } + + m_Script.iLine++; + } + + m_Script.pCurIndex += 2; + } + + m_Script.pCurIndex += 4; // Skip */ + + if (bError) + return false; + + goto NewLine; + } + + int i = 0; + + // Copy string in "" or () pair + if (m_Script.pFileBuf[m_Script.pCurIndex] == '"' || m_Script.pFileBuf[m_Script.pCurIndex] == '(') + { + char cEnd = m_Script.pFileBuf[m_Script.pCurIndex] == '"' ? '"' : ')'; + + // Quoted token + m_Script.pCurIndex += 2; // Skip " or ( + m_Script.pCur[0] = m_Script.pFileBuf[m_Script.pCurIndex]; + m_Script.pCur[1] = m_Script.pFileBuf[m_Script.pCurIndex + 1]; + + while (!m_Script.pCur.Equals(m_Script.pEnd) && m_Script.pFileBuf[m_Script.pCurIndex] != cEnd) + { + if (i >= MAX_LINELEN-1) + return false; + + // save the text into the token array + m_szToken[i++] = BitConverter.ToUInt16(m_Script.pCur); + + m_Script.pCurIndex += 2; + m_Script.pCur[0] = m_Script.pFileBuf[m_Script.pCurIndex]; + m_Script.pCur[1] = m_Script.pFileBuf[m_Script.pCurIndex + 1]; + } + + m_Script.pCurIndex += 2; // Skip " or ) + m_Script.pCur[0] = m_Script.pFileBuf[m_Script.pCurIndex]; + m_Script.pCur[1] = m_Script.pFileBuf[m_Script.pCurIndex + 1]; + } + else // Is a normal token + { + while (!m_Script.pCur.Equals(m_Script.pEnd) && BitConverter.ToInt16(m_Script.pCur) > 32 && + m_Script.pFileBuf[m_Script.pCurIndex] != ';' && m_Script.pFileBuf[m_Script.pCurIndex] != ',') + { + if (i >= MAX_LINELEN-1) + return false; + + m_szToken[i++] = BitConverter.ToUInt16(m_Script.pCur); + + m_Script.pCurIndex += 2; + m_Script.pCur[0] = m_Script.pFileBuf[m_Script.pCurIndex]; + m_Script.pCur[1] = m_Script.pFileBuf[m_Script.pCurIndex + 1]; + } + } + + m_szToken[i] = '\0'; + + return true; + } + + /// + /// Peek next token and don't move file pointer + /// Return true for success, otherwise return false + /// + /// true, search next token until it is found or all buffer has been checked; false, only search next token in current line + public bool PeekNextToken(bool bCrossLine) + { + // Record current pointer and line + var pCur = new [] {m_Script.pCur[0], m_Script.pCur[1]}; + var iLine = m_Script.iLine; + var pCurIndex = m_Script.pCurIndex; + + bool bRet = GetNextToken(bCrossLine); + + // Restore pointer and line + m_Script.pCur = pCur; + m_Script.iLine = iLine; + m_Script.pCurIndex = pCurIndex; + + return bRet; + } + + public int GetNextTokenAsInt(bool bCrossLine) + { + GetNextToken(bCrossLine); + return int.Parse(ByteToStringUtils.UshortArrayToUnicodeString(m_szToken)); + } + } +} \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/Common/AWScriptFile.cs.meta b/Assets/PerfectWorld/Scripts/Common/AWScriptFile.cs.meta new file mode 100644 index 0000000000..4eb59f260a --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Common/AWScriptFile.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 2c2c2e6c750c64c4fb852e667a353b22 \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/Common/EC_StringTab.cs b/Assets/PerfectWorld/Scripts/Common/EC_StringTab.cs new file mode 100644 index 0000000000..985a0f79bf --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Common/EC_StringTab.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using System.IO; +using ModelRenderer.Scripts.Common; + +namespace BrewMonster.Common +{ + public class CECStringTab + { + + private Dictionary m_AStrTab = new Dictionary(); + private Dictionary m_WStrTab = new Dictionary(); + + protected bool m_bInit = false; + protected bool m_bUnicode = false; + + public bool IsInitialized() => m_bInit; + + public void Clear() + { + m_AStrTab.Clear(); + m_WStrTab.Clear(); + m_bInit = false; + m_bUnicode = false; + } + + public bool Init(string szFile, bool bUnicode) + { + bool bRet = false; + + if (bUnicode) + { + bRet = LoadWideStrings(szFile); + } + + if (!bRet) + { + BMLogger.LogError($"EC_StringTab::Init: {szFile} File load failed"); + return false; + } + + m_bInit = true; + return true; + } + + private bool LoadWideStrings(string szFile) + { + AWScriptFile ScriptFile = new AWScriptFile(); + if (!ScriptFile.Open(szFile)) return false; + + bool bIndex = false; + bool bFileEnd = true; + + // Read configs + while (ScriptFile.GetNextToken(true)) + { + string tokenStr = ByteToStringUtils.UshortArrayToUnicodeString(ScriptFile.m_szToken); + if (ByteToStringUtils.UshortArrayToUnicodeString(ScriptFile.m_szToken).StartsWith("#_index")) + bIndex = true; + else if (ByteToStringUtils.UshortArrayToUnicodeString(ScriptFile.m_szToken).StartsWith("#_begin")) + { + bFileEnd = false; + break; + } + } + + if (bFileEnd) + { + ScriptFile.Close(); + return true; + } + + if (bIndex) + { + // Every string has a preset index + while (ScriptFile.PeekNextToken(true)) + { + int n = ScriptFile.GetNextTokenAsInt(true); + ScriptFile.GetNextToken(false); + + string pstr = ByteToStringUtils.UshortArrayToUnicodeString(ScriptFile.m_szToken); + if (string.IsNullOrEmpty(pstr)) + { + ScriptFile.Close(); + BMLogger.LogError($"EC_StringTab::LoadWideStrings: {szFile} Not enough memory"); + return false; + } + + if (!m_WStrTab.TryAdd(n, pstr)) + { + BMLogger.LogError($"EC_StringTab::LoadWideStrings: {szFile} Failed to add string to dictionary"); + return false; + } + } + } + else + { + int iCnt = 0; + + // Read strings sequently + while (ScriptFile.GetNextToken(true)) + { + string pstr = ByteToStringUtils.UshortArrayToUnicodeString(ScriptFile.m_szToken); + if (string.IsNullOrEmpty(pstr)) + { + ScriptFile.Close(); + BMLogger.LogError($"EC_StringTab::LoadWideStrings: {szFile} Not enough memory"); + return false; + } + + if (!m_WStrTab.TryAdd(iCnt++, pstr)) + { + BMLogger.LogError($"EC_StringTab::LoadWideStrings: {szFile} Failed to add string to dictionary"); + return false; + } + } + } + + ScriptFile.Close(); + + return true; + } + } +} \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/Common/EC_StringTab.cs.meta b/Assets/PerfectWorld/Scripts/Common/EC_StringTab.cs.meta new file mode 100644 index 0000000000..672eb34c76 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Common/EC_StringTab.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: b95d268e43a5da14f9cf8e1ed98bfd73 \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/Common/StringTabTest.cs b/Assets/PerfectWorld/Scripts/Common/StringTabTest.cs new file mode 100644 index 0000000000..3babe721d3 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Common/StringTabTest.cs @@ -0,0 +1,48 @@ +using System.IO; +using UnityEngine; + +namespace BrewMonster.Common +{ + public class StringTabTest : MonoBehaviour + { + private CECStringTab m_pStringTab; + + [ContextMenu("Test SkillStr")] + void TestSkillStr() + { + if (m_pStringTab == null) + { + m_pStringTab = new CECStringTab(); + } + m_pStringTab.Clear(); + string path = Path.Combine(Application.streamingAssetsPath, "configs/skillstr.txt"); + m_pStringTab.Init(path, true); + } + + [ContextMenu("Test Item Desc")] + public void TestItemDesc() + { + if (m_pStringTab == null) + { + m_pStringTab = new CECStringTab(); + } + + m_pStringTab.Clear(); + string path = Path.Combine(Application.streamingAssetsPath, "configs/item_desc.txt"); + m_pStringTab.Init(path, true); + } + + [ContextMenu("Test Fixed Message")] + public void TestFixedMessage() + { + if (m_pStringTab == null) + { + m_pStringTab = new CECStringTab(); + } + + m_pStringTab.Clear(); + string path = Path.Combine(Application.streamingAssetsPath, "configs/fixed_msg.txt"); + m_pStringTab.Init(path, true); + } + } +} \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/Common/StringTabTest.cs.meta b/Assets/PerfectWorld/Scripts/Common/StringTabTest.cs.meta new file mode 100644 index 0000000000..908c1a6476 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Common/StringTabTest.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 3dee7c1499b302c43ac95e29bd235e3f \ No newline at end of file diff --git a/Assets/StreamingAssets/configs.meta b/Assets/StreamingAssets/configs.meta new file mode 100644 index 0000000000..36d8547f86 --- /dev/null +++ b/Assets/StreamingAssets/configs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e6d11b7855791e740ba22f037c41f0d9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/StreamingAssets/configs/faction_pvp.txt b/Assets/StreamingAssets/configs/faction_pvp.txt new file mode 100644 index 0000000000..aecf7461ec --- /dev/null +++ b/Assets/StreamingAssets/configs/faction_pvp.txt @@ -0,0 +1,54 @@ +1 -3023.42 218.73 3804.07 -2315.22 251.55 4416.35 +2 -1922.07 217.27 4276.7 -1194.75 220.13 4256.25 +3 -856.27 219.49 3957.78 -355.67 237.19 3916.26 +4 897.03 219.1 4351.59 35.11 219.65 3989.86 +5 1549.96 243.59 3865.42 1243.7 219.07 4543.64 +6 2453.35 228.05 4307.06 2715.47 247.63 4105.12 +7 -2510.53 218.28 2802.99 -2402.91 218.09 3356.69 +8 -1557.7 218.62 2583.67 -1349.28 264.35 2927.5 +9 -212.46 220.38 2724.44 -654.49 222.47 3541.15 +10 197.31 248.51 3087.58 483.42 222.32 2844.72 +11 2038.49 218.29 3936.27 1578.52 229 3672.47 +12 1745.09 273.48 2860.03 1602.8 218.98 3481.97 +13 2343.84 219.9 2511.81 2266.59 221.58 1991.78 +14 -2591.45 218.19 2454.08 -2261.2 218.91 1746.06 +15 -1860.3 218.36 2139.75 -1150.03 245.14 1773.89 +16 -791.97 214.17 2471.02 -129.35 224.08 2081.36 +17 368.38 219.54 2182.4 279.82 221.15 1761.76 +18 2011.77 222.19 2400.27 1294.64 336.56 2261.45 +19 -2292.16 469.47 1185.61 -2842.81 528.89 760.08 +20 -1674.26 220.34 435.34 -1905.86 229.63 -61.49 +21 -557.8 413.98 831.01 -21.79 219.42 972.1 +22 147.18 216.57 1146.07 462.83 231.23 764.32 +23 1470.78 220.53 645.87 1079.88 221.18 1256.26 +24 2846.67 217.35 953.47 2413.6 218.71 537.18 +25 -2957.37 520.29 -272.5 -2225.5 523.78 377.31 +26 -2025.75 219.2 -375.8 -1894.25 226.35 -192.02 +27 -993.31 522.37 20.72 -521.16 522.2 489.45 +28 -285.09 234.15 465.15 -607.3 219.14 -489.76 +29 646.27 218.46 -271.57 471.1 216.63 380.43 +30 358.89 218.47 -463.42 492.2 222.58 -109.62 +31 1271.29 244.23 224.86 1048.12 238.15 -293.67 +32 2447.06 219.6 -145.47 2778.47 220.67 213.79 +33 -2149.01 525.18 -1064.02 -2852.9 524.33 -1270.3 +34 -1702.3 522.73 -1141.74 -1140.11 522.96 -868.99 +35 -127.76 218.48 -1512.58 -539.96 219.56 -870.73 +36 25.99 218.68 -833.9 543.07 218.09 -808.75 +37 1463.93 219.4 -1472.2 1737.68 218.85 -947.34 +38 2451.27 219.75 -1456.2 2584.51 221.31 -677.67 +39 -2344.41 523.96 -1576.39 -2819 524.02 -2181.16 +40 -1160.61 219.03 -2087.02 -1833.15 504.52 -2360.84 +41 -479.77 218.9 -2059.16 -828.94 216.61 -2484.79 +42 958.61 219.02 -2082.36 130.06 219.85 -2275.24 +43 1065.01 218.99 -2207.16 1594.66 220.67 -2471.93 +44 2310.6 219.28 -1578.46 2532.92 220.95 -1665.75 +45 2827.66 225.81 -3084.25 2360.43 217.55 -3279.74 +46 1579.91 245.92 -4094.02 1594.13 248.55 -3849.75 +47 2453.18 245.07 -3711.65 2865.72 217.89 -4411.53 +48 -2153.87 204.16 -3154.12 -2573.45 217.27 -3501.96 +49 -1297.92 216.52 -2908.71 -1716.92 232.57 -2805.03 +50 -642.59 216.87 -3442.9 -550.52 218.04 -2764.84 +51 226.82 241.05 -3121.08 880.44 239.78 -3066.87 +52 3337.821 230.013 3998.825 3717.706 253.014 3667.437 + + diff --git a/Assets/StreamingAssets/configs/faction_pvp.txt.meta b/Assets/StreamingAssets/configs/faction_pvp.txt.meta new file mode 100644 index 0000000000..218f5f74fa --- /dev/null +++ b/Assets/StreamingAssets/configs/faction_pvp.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bccfbf7d03830734fb6cd82a31536791 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/StreamingAssets/configs/fixed_msg.txt b/Assets/StreamingAssets/configs/fixed_msg.txt new file mode 100644 index 0000000000..e03822c138 Binary files /dev/null and b/Assets/StreamingAssets/configs/fixed_msg.txt differ diff --git a/Assets/StreamingAssets/configs/fixed_msg.txt.meta b/Assets/StreamingAssets/configs/fixed_msg.txt.meta new file mode 100644 index 0000000000..8130370cf5 --- /dev/null +++ b/Assets/StreamingAssets/configs/fixed_msg.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 06d9a02a2d455104d9b49c78ed8fc6d3 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/StreamingAssets/configs/item_desc.txt b/Assets/StreamingAssets/configs/item_desc.txt new file mode 100644 index 0000000000..325a9b7f89 Binary files /dev/null and b/Assets/StreamingAssets/configs/item_desc.txt differ diff --git a/Assets/StreamingAssets/configs/item_desc.txt.meta b/Assets/StreamingAssets/configs/item_desc.txt.meta new file mode 100644 index 0000000000..0120cfd215 --- /dev/null +++ b/Assets/StreamingAssets/configs/item_desc.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 22d591e6986fa6c4ab705ee890953236 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/StreamingAssets/configs/item_ext_desc.txt b/Assets/StreamingAssets/configs/item_ext_desc.txt new file mode 100644 index 0000000000..fca4c160ff Binary files /dev/null and b/Assets/StreamingAssets/configs/item_ext_desc.txt differ diff --git a/Assets/StreamingAssets/configs/item_ext_desc.txt.meta b/Assets/StreamingAssets/configs/item_ext_desc.txt.meta new file mode 100644 index 0000000000..55a0bfdba3 --- /dev/null +++ b/Assets/StreamingAssets/configs/item_ext_desc.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0b095c8d0e089f747a289d8e6c7b693e +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/StreamingAssets/configs/item_ext_prop.txt b/Assets/StreamingAssets/configs/item_ext_prop.txt new file mode 100644 index 0000000000..4f59ca27e9 --- /dev/null +++ b/Assets/StreamingAssets/configs/item_ext_prop.txt @@ -0,0 +1,1670 @@ +/* Element 附加属性表 + +属性类型定义使用 byte 表示,255 保留作为未知类型 + +附加属性类型定义: + + 0: 物理攻击 + 1: 物理攻击上限 + 2: 物理攻击(%) + 3: 魔法攻击 + 4: 魔法攻击上限 + 5: 魔法攻击(%) + 6: +物防-物攻 + 7: +物攻-物防 + 8: +魔攻-魔防 + 9: 攻击速度 +10: 攻击距离 +11: 吟唱时间 + +12: 物理防御 +13: 物理防御(%) +14: 五行防御 +15: 金防 +16: 金防(%) +17: 木防 +18: 木防(%) +19: 水防 +20: 水防(%) +21: 火防 +22: 火防(%) +23: 土防 +24: 土防(%) +25: +金防(%)-火防(%) +26: +木防(%)-金防(%) +27: +水防(%)-土防(%) +28: +火防(%)-水防(%) +29: +土防(%)-木防(%) +30: +金防-火防 +31: +木防-金防 +32: +水防-土防 +33: +火防-水防 +34: +土防-木防 + +35: HP +36: MP +37: HP(%) +38: MP(%) +39: HP恢复速度 +40: MP恢复速度 +41: 力量范围 +42: 敏捷范围 +43: 灵力范围 +44: 体力范围 + +45: 致命一击率 +46: 命中 +47: 命中(%) +48: 移动速度 +49: 移动速度(%) +50: 躲闪 +51: 躲闪(%) +52: 耐久度 +53: 耐久度(%) +54: 物理免疫 +55: 附加技能 +56: 装备需求 +57: 未知属性 +58: 经验值加成 +59: 攻击等级 +60: 防御等级 +61: 五行防御(%) +62: 丛林之眼 +63: 魂力 +64: 金系减免(%) +65: 木系减免(%) +66: 水系减免(%) +67: 火系减免(%) +68: 土系减免(%) +69: 五行减免(%) +70: 攻击等级范围(属性值随机可用) +71: 防御等级范围(属性值随机可用) +72: 致命一击率(%)范围(属性值随机可用) +73: HP范围(属性值随机可用) +74: MP范围(属性值随机可用) +75: 命中(%)范围(属性值随机可用) +76: 物理防御范围(属性值随机可用) +77: 五行防御范围(属性值随机可用) +78: 物理减免(%)范围(属性值随机可用) +79: 五行减免(%)范围(属性值随机可用) +80: 吟唱时间(%)范围(属性值随机可用) +81: 攻击距离范围(属性值随机可用) +82: MP恢复速度范围(属性值随机可用) +83: 物理防御(%)范围(属性值随机可用) +84: 五行防御(%)范围(属性值随机可用) +85: HP恢复速度范围(属性值随机可用) +86: 躲闪范围(属性值随机可用) +87: 物理攻击上限范围(属性值随机可用) +88: 魔法攻击上限范围(属性值随机可用) +90: 猎魔等级 +91: 御魔等级 +92: +物防+魔防 +93: 角色HP +94: 角色HP范围 +95: 力量 +96: 敏捷 +97: 灵力 +98: 体力 +99: 角色MP +160: 气魄固定值 +161: 物理攻击(星盘) +162: 魔法攻击(星盘) +163: 物理防御(星盘) +164: 五行防御(星盘) +165: 生命(星盘) +166: 气魄(星盘) +167: 金防(星盘) +168: 木防(星盘) +169: 水防(星盘) +170: 火防(星盘) +171: 土防(星盘) +172: 命中(星盘) +173: 躲闪度(星盘) +174: 真气(星盘) +175: 无视物防等级(星盘) +176: 无视魔防等级(星盘) + +套装属性类型定义: + +150: 致命一击率+1% +151: 致命一击率+2% +152: 致命一击率+3% +153: 致命一击率+4% +154: 致命一击率+5% +155: 致命一击率+6% +156: 魂力(套装) + +精炼属性类型定义: + +200: 精炼物理攻击 +201: 精炼魔法攻击 +202: 精炼物理防御 +203: 精炼金防 +204: 精炼木防 +205: 精炼水防 +206: 精炼火防 +207: 精炼土防 +208: 精炼HP +209: 精炼躲闪 +210: 精炼五行防御 +211: 精炼物理攻击 & 魔法攻击 +212: 精炼物理防御 & 魔法防御 + +磨刀石属性类型定义: + +100: 磨刀石物理攻击 +101: 磨刀石物理攻击上限 +102: 磨刀石魔法攻击 +103: 磨刀石魔法攻击上限 +104: 磨刀石物理防御 +105: 磨刀石HP +106: 磨刀石力量 +107: 磨刀石敏捷 +108: 磨刀石灵力 +109: 磨刀石命中率 +110: 磨刀石致命一击率(%) +111: 磨刀石攻击等级 +112: 磨刀石防御等级 +113: 磨刀石吟唱时间 +114: 磨刀石魔法防御 +115: 磨刀石骑乘加速 + +镌刻属性类型定义 + +120: 镌刻金防 +121: 镌刻木防 +122: 镌刻水防 +123: 镌刻火防 +124: 镌刻土防 +125: 镌刻命中 +126: 镌刻躲闪 +127: 镌刻真气 +128: 镌刻体力 +129: 镌刻力量 +130: 镌刻敏捷 +131: 镌刻灵力 +132: 镌刻HP +133: 镌刻物防 +134: 镌刻五行防御 +135: 镌刻物理攻击 +136: 镌刻魔法攻击 +137: 镌刻金系减免(%) +138: 镌刻木系减免(%) +139: 镌刻水系减免(%) +140: 镌刻火系减免(%) +141: 镌刻土系减免(%) +142: 镌刻五行减免(%) +143: 镌刻致命一击率 +144: 镌刻攻击等级 +145: 镌刻防御等级 +146: 镌刻物理免疫 + +*/ + +// 0: 物理攻击 +type: 0 +{ + 411, 413, 415, 476, 478, + 481, 753, 754, 756, 755, + 757, 758, 759, 760, 761, + 762, 763, 1009, 1008, 1007, + 1006, 784, 785, 786, 787, + 788, 789, 790, 791, 792, + 793, 794, 994, 995, 996, + 997, 1401, 1402, 1403, 1404, + 1405, 341, 342, 343, 586, + 848, 849, 850, 852, 857, + 858, 859, 860, 855, 1011, + 1010, 1012, 1013, 2020, 2022, + 3036, 3040, +} + +// 1: 物理攻击上限 +type: 1 +{ + 412, 414, 416, 764, 765, + 766, 767, 768, 769, 770, + 771, 772, 773, 774, 1003, + 1004, 1005, 1002, 795, 796, + 797, 798, 799, 800, 801, + 802, 803, 804, 805, 1001, + 1000, 999, 998, 3026, +} + +// 2: 物理攻击(%) +type: 2 +{ + 417, 418, 419, 775, 344, + 2221, 2222, 2223, 2224, 2225, + 2226, 2227, 2228, 2229, 2248, + 2249, 2250, 2251, 2252, 2253, + 2254, 2255, 2256, +} + +// 3: 魔法攻击 +type: 3 +{ + 422, 434, 436, 483, 485, + 488, 809, 810, 811, 813, + 814, 815, 816, 817, 818, + 820, 821, 990, 991, 992, + 993, 348, 349, 350, 588, + 885, 886, 887, 889, 890, + 891, 892, 893, 895, 1018, + 1019, 1020, 1022, 1423, 1424, + 1425, 1426, 1427, 2023, 3038, + 3042, +} + +// 4: 魔法攻击上限 +type: 4 +{ + 423, 435, 437, 822, 823, + 824, 825, 826, 827, 828, + 829, 830, 831, 832, 989, + 988, 987, 986, 3028, +} + +// 5: 魔法攻击(%) +type: 5 +{ + 438, 439, 440, 835, 351, + 2230, 2231, 2232, 2233, 2234, + 2235, 2236, 2237, 2238, 2257, + 2258, 2259, 2260, 2261, 2262, + 2265, 2266, 2267, +} + +// 6: +物防-物功 +type: 6 +{ + 316, 317, 318, 319, 320, +} + +// 7: +物功-物防 +type: 7 +{ + 345, 346, 347, 587, 862, + 863, 864, 865, 867, 868, + 869, 870, 871, 1014, 1015, + 1016, 1017, +} + +// 8: +魔功-魔防 +type: 8 +{ + 352, 353, 354, 589, 896, + 897, 898, 899, 900, 901, + 902, 903, 905, 1026, 1025, + 1024, 1023, +} + +// 9: 攻击速度 +type: 9 +{ + 420, 421, 331, 337, 338, + 339, 1901, 1904, 2012, 2013, + 2014, +} + +// 10: 攻击距离 +type: 10 +{ + 471, 1422, +} + +// 11: 吟唱时间 +type: 11 +{ + 441, 442, 443, 444, 1417, + 332, 333, 334, 335, 355, + 594, 595, 1428, 1449, 1511, + 1518, 1907, 2007, 2008, 2009, + 2010, 2011, 2148, 2914, + 3111, +} + +// 12: 物理防御 +type: 12 +{ + 477, 479, 482, 1244, 1245, + 1246, 1247, 1248, 1249, 1250, + 1251, 1252, 1253, 1254, 1255, + 1256, 1257, 1420, 216, 217, + 218, 219, 220, 590, 598, + 599, 600, 601, 652, 653, + 654, 655, 656, 657, 658, + 659, 660, 661, 1058, 1057, + 1056, 1055, 359, 360, 361, + 909, 910, 911, 912, 913, + 914, 915, 916, 917, 918, + 919, 1027, 1028, 1029, 1030, + 3032, 3136, 3137, 3138, 3139, + 3199, +} + +// 13: 物理防御(%) +type: 13 +{ + 221, 222, 223, 224, 225, + 2102, 2103, 2104, 2105, 2106, + 2107, 2108, 2167, 2168, 2169, + 2170, 2171, 2172, 2173, 2174, + 2175, +} + +// 14: 五行防御 +type: 14 +{ + 484, 486, 489, 306, 307, + 308, 309, 310, 380, 381, + 382, 1565, 2109, 2110, 2111, + 2112, 2113, 2114, 2115, 2116, + 3034, 3140, 3141, 3142, 3143, + 3200, +} + +// 15: 金防 +type: 15 +{ + 226, 227, 228, 229, 230, + 365, 366, 367, 1519, 1520, + 1521, 1524, 1527, 1528, 1530, + 1531, 1534, 1535, 1537, 1539, + 1541, 1542, 1544, 1523, 1525, + 1526, 1529, 1532, 1533, 1536, + 1538, 1540, 1545, 1547, 1687, + 1551, 1554, 1557, 1560, 1563, +} + +// 16: 金防(%) +type: 16 +{ + 231, 232, 233, 234, 235, + 2194, 2195, 2196, 2197, 2198, + 2199, 2200, 2201, 2202, +} + +// 17: 木防 +type: 17 +{ + 236, 237, 238, 239, 240, + 368, 369, 370, 1546, 1549, + 1550, 1552, 1553, 1555, 1556, + 1558, 1559, 1561, 1562, 1564, + 1566, 1567, 1568, 1569, 1571, + 1574, 1576, 1579, 1582, 1584, + 1588, 1590, 1593, 1595, 1598, + 1600, 1603, 1605, 1608, 1610, + 1611, +} + +// 18: 木防(%) +type: 18 +{ + 424, 425, 426, 427, 428, + 2185, 2186, 2187, 2188, 2189, + 2190, 2191, 2192, 2193, +} + +// 19: 水防 +type: 19 +{ + 429, 430, 431, 432, 433, + 371, 372, 373, 1570, 1572, + 1573, 1575, 1577, 1578, 1580, + 1581, 1583, 1585, 1586, 1587, + 1589, 1591, 1592, 1616, 1619, + 1621, 1623, 1626, 1628, 1630, + 1633, 1634, 1635, 1636, 1637, + 1639, 1641, 1644, 1646, 1648, + 1650, +} + +// 20: 水防(%) +type: 20 +{ + 241, 242, 243, 244, 245, + 2212, 2213, 2214, 2215, 2216, + 2217, 2218, 2219, 2220, +} + +// 21: 火防 +type: 21 +{ + 246, 247, 248, 249, 250, + 374, 375, 376, 1594, 1596, + 1597, 1599, 1601, 1602, 1604, + 1606, 1607, 1609, 1612, 1613, + 1614, 1617, 1618, 1651, 1652, + 1653, 1654, 1655, 1656, 1657, + 1658, 1659, 1660, 1661, 1662, + 1663, 1664, 1665, 1666, 1667, + 1668, +} + +// 22: 火防(%) +type: 22 +{ + 251, 252, 253, 254, 255, + 2176, 2177, 2178, 2179, 2180, + 2181, 2182, 2183, 2184, +} + +// 23: 土防 +type: 23 +{ + 256, 257, 258, 259, 260, + 377, 378, 379, 1620, 1622, + 1624, 1625, 1627, 1629, 1631, + 1632, 1638, 1640, 1642, 1643, + 1645, 1647, 1649, 1669, 1670, + 1671, 1672, 1673, 1674, 1675, + 1676, 1677, 1678, 1679, 1680, + 1681, 1682, 1683, 1684, 1685, + 1686, + +} + +// 24: 土防(%) +type: 24 +{ + 261, 262, 263, 264, 265, + 2203, 2204, 2205, 2206, 2207, + 2208, 2209, 2210, 2211, +} + +// 25: +金防(%)-火防(%) +type: 25 +{ + 527, 528, 529, 530, 531, +} + +// 26: +木防(%)-金防(%) +type: 26 +{ + 532, 533, 534, 535, 536, +} + +// 27: +水防(%)-土防(%) +type: 27 +{ + 537, 538, 539, 540, 541, +} + +// 28: +火防(%)-水防(%) +type: 28 +{ + 542, 543, 544, 545, 546, +} + +// 29: +土防(%)-木防(%) +type: 29 +{ + 547, 548, 549, 550, 551, +} + +// 30: +金防-火防 +type: 30 +{ + 592, 602, 603, 604, 605, + 676, 677, 678, 679, 680, + 681, 682, 683, 684, 685, + 686, 1066, 1065, 1064, 1063, + 512, 517, 522, 931, 932, + 933, 934, 935, 936, 937, + 938, 939, 940, 941, 1038, + 1037, 1036, 1035, +} + +// 31: +木防-金防 +type: 31 +{ + 606, 607, 608, 609, 610, + 693, 694, 695, 696, 698, + 699, 700, 701, 707, 708, + 709, 1070, 1069, 1068, 1067, + 513, 518, 523, 942, 943, + 944, 945, 946, 947, 948, + 949, 950, 951, 952, 1042, + 1041, 1040, 1039, +} + +// 32: +水防-土防 +type: 32 +{ + 611, 612, 613, 614, 615, + 710, 711, 712, 713, 714, + 715, 716, 717, 718, 719, + 720, 1074, 1073, 1072, 1071, + 514, 519, 524, 964, 965, + 966, 967, 968, 969, 970, + 971, 972, 973, 974, 1050, + 1049, 1048, 1047, +} + +// 33: +火防-水防 +type: 33 +{ + 617, 616, 618, 619, 620, + 722, 723, 724, 725, 726, + 727, 728, 729, 730, 731, + 732, 1078, 1077, 1076, 1075, + 515, 520, 525, 975, 976, + 977, 978, 979, 980, 981, + 982, 983, 984, 985, 1054, + 1053, 1052, 1051, +} + +// 34: +土防-木防 +type: 34 +{ + 621, 622, 623, 624, 625, + 733, 734, 735, 736, 737, + 738, 739, 741, 742, 743, + 744, 1082, 1081, 1080, 1079, + 516, 521, 526, 953, 954, + 956, 955, 957, 958, 959, + 960, 961, 962, 963, 1046, + 1045, 1044, 1043, +} + +// 35: HP +type: 35 +{ + 1239, 1240, + 1241, 1242, 1243, 1335, 1336, + 1337, 1338, 1339, 1340, 1341, + 1342, 1343, 1344, 1411, 1412, + 1413, 1414, 1415, 1416, 266, + 267, 268, 269, 270, 626, + 627, 628, 629, 630, 1345, + 1346, 1347, 1348, 1349, 1370, + 1371, 1372, 1373, 1374, 1375, + 1376, 1377, 1378, 1379, 1380, + 1381, 1382, 1383, 1384, 1997, + 1998, 1999, 2000, 2001, 3019, +} + +// 36: MP +type: 36 +{ + 500, 501, 502, 1234, 1235, + 1236, 1237, 1238, 1325, 1326, + 1327, 1328, 1329, 1330, 1331, + 1332, 1333, 1334, 276, 277, + 278, 279, 280, 631, 632, + 633, 634, 635, 1350, 1351, + 1352, 1353, 1354, 1355, 1356, + 1357, 1358, 1359, 1360, 1361, + 1362, 1363, 1364, 1365, 1366, + 1367, 1368, 1369, 2002, 2003, + 2004, 2005, 2006, 2117, 2118, + 2119, 2120, 2121, 2122, 2123, + 2124, 2125, +} + +// 37: HP(%) +type: 37 +{ + 271, 272, 273, 274, 275, + 387, 1688, 2133, 2134, 2135, + 2136, 2137, 2138, 2139, 2140, + 2141, 2842, +} + +// 38: MP(%) +type: 38 +{ + 281, 282, 283, 284, 285, + 388, 1689, +} + +// 39: HP恢复速度 +type: 39 +{ + 321, 322, 323, 324, 325, + 383, 1690, 1987, 1988, 1989, + 1990, 1991, +} + +// 40: MP恢复速度 +type: 40 +{ + 326, 327, 328, 329, 330, + 384, 1691, 1992, 1993, 1994, + 1995, 1996, +} + +// 41: 力量范围 +type: 41 +{ + 1104, 1105, 1106, 1107, 1108, + 1124, 1125, 1126, 1127, 1128, + 1098, 1084, 1085, 1086, 1087, + 1429, 1430, 1431, 1432, 1433, + 1470, 1471, 1472, 1473, 1474, + 1490, 1492, 1450, 1451, 1452, + 1453, 1454, 1513, 1895, 1912, + 1913, 1914, 1915, 1916, 1917, + 1936, 1937, 1938, 1939, 1940, + 1941, 1942, 1943, 1944, 2272, + 2718, 2745, 3055, 3072, 3232 +} + +// 42: 敏捷范围 +type: 42 +{ + 1109, 1110, 1111, 1112, 1113, + 1418, 1129, 1130, 1131, 1132, + 1133, 1088, 1089, 1090, 1091, + 1092, 1434, 1435, 1436, 1437, + 1438, 1475, 1476, 1477, 1478, + 1479, 1494, 1455, 1456, 1457, + 1458, 1459, 1514, 1897, 1918, + 1919, 1920, 1921, 1922, 1923, + 1945, 1946, 1947, 1948, 1949, + 1950, 1951, 1952, 1953, 2271, + 2719, 2746, 3056, 3073, 3234, +} + +// 43: 灵力范围 +type: 43 +{ + 1114, 1115, 1116, 1117, 1118, + 1419, 1134, 1135, 1136, 1137, + 1138, 1093, 1094, 1095, 1096, + 1097, 1439, 1440, 1441, 1442, + 1443, 1480, 1481, 1482, 1483, + 1484, 1495, 1460, 1461, 1462, + 1463, 1464, 1516, 1899, 1930, + 1931, 1932, 1933, 1934, 1935, + 1963, 1964, 1965, 1966, 1967, + 1968, 1969, 1970, 1971, 2270, + 2717, 2744, 3054, 3071, 3233, +} + +// 44: 体力范围 +type: 44 +{ + 1119, 1120, 1121, 1122, 1123, + 1139, 1140, 1141, 1142, 1143, + 1099, 1100, 1101, 1102, 1103, + 1444, 1445, 1446, 1447, 1448, + 1485, 1486, 1487, 1488, 1489, + 1491, 1493, 1465, 1466, 1467, + 1468, 1469, 1515, 1902, 1905, + 1908, 1924, 1925, 1926, 1927, + 1928, 1929, 1954, 1955, 1956, + 1957, 1958, 1959, 1960, 1961, + 1962, 2146, 2273, 2720, 2747, + 3057, 3074, 3235, +} + +// 45: 致命一击率 +type: 45 +{ + 473, 474, 475, 1421, 356, + 357, 358, 585, 591, 1510, + 1517, 1977, 1978, 1979, 1980, + 1981, 2021, 2024, 2025, 2027, + 2028, 2147, 2915, 3020, +} + +// 46: 命中 +type: 46 +{ + 490, 492, 494, 1311, 1312, + 1313, 1314, 1315, 1316, 1317, + 1318, 1319, 1320, 1321, 1322, + 1323, 1324, 1406, 1407, 1408, + 1385, 1386, 1387, 1388, 1389, + 1390, 1391, 1392, 1393, 1395, + 1396, 1397, 1398, 1399, 3029, +} + +// 47: 命中(%) +type: 47 +{ + 462, 463, 464, 389, 390, + 391, 1512, +} + +// 48: 移动速度 +type: 48 +{ + 636, 637, 638, 639, 640, + 1972, 1973, 1974, 1975, 1976, +} + +// 49: 移动速度(%) +type: 49 +{ + 286, 287, 288, 289, 290, +} + +// 50: 躲闪 +type: 50 +{ + 491, 493, 495, 1258, 1259, + 1260, 1261, 1262, 1263, 1264, + 1265, 1266, 1267, 1268, 1269, + 1270, 1271, 1409, 1410, 641, + 642, 643, 644, 645, 662, + 663, 664, 665, 666, 667, + 668, 669, 670, 671, 1062, + 1061, 1060, 1059, 593, 596, + 597, 920, 921, 922, 923, + 924, 925, 926, 927, 928, + 929, 930, 1031, 1032, 1033, + 1034, 3030, +} + +// 51: 躲闪(%) +type: 51 +{ + 291, 292, 293, 294, 295, + 392, 393, 394, +} + +// 52: 耐久度 +type: 52 +{ + 646, 647, 648, 649, 650, +} + +// 53: 耐久度(%) +type: 53 +{ + 465, 467, 469, 296, 297, + 298, 299, 300, 407, 408, + 409, +} + +// 54: 物理免疫 +type: 54 +{ + 1272, 1273, 1274, 311, 312, + 313, 314, 315, 362, 363, + 364, 1896, 1898, 1900, 1982, + 1983, 1984, 1985, 1986, 2916, +} + +// 55: 附加技能 +type: 55 +{ + 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, + 460, 461, 1275, 1276, 1277, + 1278, 1279, 1280, 1281, 1282, + 1283, 1284, 1285, 1286, 1287, + 1288, 1289, 1290, 1291, 1292, + 1293, 1294, 1295, 1296, 1297, + 1298, 1299, 1300, 1301, 1302, + 1303, 1304, 1305, 1306, 1307, + 1308, 1309, 1310, 2275, 2276, + 2277, 2278, 2279, 2280, 2281, + 2282, 2283, 2472, 2473, 2474, + 2475, 2477, 2479, 2482, 2710, + 2711, 2712, 2713, 2714, 2715, + 2716, 3221, 3222, 3223, 3224, + 3225, 3226, 3227, 3228, 3229, + 3239, +} + +// 56: 装备需求 +type: 56 +{ + 466, 468, 470, 301, 302, + 303, 304, 305, 2738, +} + +// 57: 未知属性 +type: 57 +{ + 472, 336, 410, +} + +// 58: 经验值加成 +type: 58 +{ + 404, 405, 406, 2015, 2016, + 2017, 2018, 2019, 2839, + 2840, 2841, +} + +// 59: 攻击等级 +type: 59 +{ + 2029, 2030, 2031, 2032, 2033, + 2034, 2035, 2036, 2037, 2038, + 2065, 2066, 2067, 2068, 2069, + 2070, 2071, 2072, 2073, 2074, + 2075, 2076, 2077, 2078, 2079, + 2080, 2081, 2082, 2083, 2084, + 2098, 2099, 2100, 2101, 2142, + 2143, 2149, 2150, 2151, 2268, + 2974, 3009, 3110, 3152, 3195, + 3205, 3206, 3207, 3208, 3203, + 3230, +} + +// 60: 防御等级 +type: 60 +{ + 2085, 2086, 2087, 2088, 2089, + 2090, 2091, 2092, 2093, 2094, + 2095, 2096, 2097, 2039, 2040, + 2041, 2042, 2043, 2044, 2045, + 2046, 2047, 2048, 2049, 2050, + 2051, 2052, 2053, 2054, 2055, + 2056, 2057, 2058, 2059, 2060, + 2061, 2062, 2063, 2064, 2144, + 2145, 2154, 2155, 2156, 2157, + 2269, 2274, 2309, 2310, 3008, + 3153, 3204, 3231, +} + +// 61: 五行防御(%) +type: 61 +{ + 2239, 2240, 2241, 2242, 2243, + 2244, 2245, 2246, 2247, 2299, + 2300, 2301, 2302, 2303, 2304, + 2305, 2306, 2307, 2308, +} + +// 62: 丛林之眼 +type: 62 +{ + 2311, +} + +// 63: 魂力 +type: 63 +{ + 2362, 2922, +} + +// 64: 金系减免(%) +type: 64 +{ + 2487, 2488, 2489, 2490, +} + +// 65: 木系减免(%) +type: 65 +{ + 2491, 2492, 2493, 2494, +} + +// 66: 水系减免(%) +type: 66 +{ + 2495, 2496, 2497, 2498, +} + +// 67: 火系减免(%) +type: 67 +{ + 2483, 2484, 2485, 2486, +} + +// 68: 土系减免(%) +type: 68 +{ + 2499, 2500, 2501, 2502, +} + +// 69: 五行减免(%) +type: 69 +{ + 2503, 2504, 2505, 2921, +} + +// 70: 攻击等级范围(属性值随机可用) +type: 70 +{ + 2721, 2722, 2912, 3075, + 3076, +} + +// 71: 防御等级范围(属性值随机可用) +type: 71 +{ + 2723, 2724, 3077, 3078, +} + +// 72: 致命一击率(%)范围(属性值随机可用) +type: 72 +{ + 2725, 2726, 2754, +} + +// 73: HP范围(属性值随机可用) +type: 73 +{ + 2729, 2740, 2741, 3050, + 3051, 3068, 3069, 3070, + 3081, +} + +// 74: MP范围(属性值随机可用) +type: 74 +{ + 2730, 2742, 3052, 3082, +} + +// 75: 命中(%)范围(属性值随机可用) +type: 75 +{ + 2731, 3083, +} + +// 76: 物理防御范围(属性值随机可用) +type: 76 +{ + 2732, 2756, 3064, 3084, +} + +// 77: 五行防御范围(属性值随机可用) +type: 77 +{ + 2733, 2755, 3063, 3065, + 3066, 3067, 3085, +} + +// 78: 物理减免(%)范围(属性值随机可用) +type: 78 +{ + 2734, 2757, 3086, +} + +// 79: 五行减免(%)范围(属性值随机可用) +type: 79 +{ + 2735, 2758, 3087, +} + +// 80: 吟唱时间(%)范围(属性值随机可用) +type: 80 +{ + 2736, 2737, 2752, 2753, + 2913, 3062, 3088, +} + +// 81: 攻击距离范围(属性值随机可用) +type: 81 +{ + 2739, +} + +// 82: MP恢复速度范围(属性值随机可用) +type: 82 +{ + 2743, 3053, +} + +// 83: 物理防御(%)范围(属性值随机可用) +type: 83 +{ + 2748, 3058, +} + +// 84: 五行防御(%)范围(属性值随机可用) +type: 84 +{ + 2749, 3059, +} + +// 85: HP恢复速度范围(属性值随机可用) +type: 85 +{ + 2750, 3060, +} + +// 86: 躲闪范围(属性值随机可用) +type: 86 +{ + 2751, 3061, +} + +// 87: 物理攻击上限范围(属性值随机可用) +type: 87 +{ + 2727, 3079, +} + +// 88: 魔法攻击上限范围(属性值随机可用) +type: 88 +{ + 2728, 3080, +} + +// 90: 猎魔等级 +type: 90 +{ + 2843, 2844, 2845, 2846, + 2847, 2848, 2849, 2881, + 2889, 2890, 3007, 3021, + 3023, 3109, 3130, 3131, + 3132, +} + +// 91: 御魔等级 +type: 91 +{ + 2850, 2851, 2852, 2853, + 2854, 2855, 2856, 2857, + 2858, 2859, 2887, 2888, + 3022, 3024, +} + +// 92: +物防+魔防 +type: 92 +{ +} + +// 93: 角色HP +type: 93 +{ + 497, 498, 499, 2983, +} + +// 94: 角色HP范围 +type: 94 +{ + 2126, 2127, 2128, 2129, + 2130, 2131, 2132, +} + +// 95: 力量 +type: 95 +{ + 2917, 2985, 3010, +} + +// 96: 敏捷 +type: 96 +{ + 2918, 2986, 3014, +} + +// 97: 灵力 +type: 97 +{ + 2919, 2987, 3012, +} + +// 98: 体力 +type: 98 +{ + 2920, 3016, 3144, 3145, + 3146, 3147, 3201, +} + +// 99: 角色MP +type: 99 +{ + 2984, +} + +// 300: 气魄固定值 +type: 160 +{ + 3043, 3044, 3148, 3149, + 3150, 3151, 3196, 3209, + 3210, 3211, 3212, 3202, + 3236, 3237, 3238, +} + +// 161: 物理攻击(星盘) +type: 161 +{ + 3160, 3161, 3162, +} + +// 162: 魔法攻击(星盘) +type: 162 +{ + 3163, +} + +// 163: 物理防御(星盘) +type: 163 +{ + 3164, 3165, 3166, +} + +// 164: 五行防御(星盘) +type: 164 +{ + 3167, 3168, 3169, +} + +// 165: 生命(星盘) +type: 165 +{ + 3170, 3171, 3172, +} + +// 166: 气魄(星盘) +type: 166 +{ + 3173, +} + +// 167: 金防(星盘) +type: 167 +{ + 3174, 3175, 3176, +} + +// 168: 木防(星盘) +type: 168 +{ + 3177, 3178, 3179, +} + +// 169: 水防(星盘) +type: 169 +{ + 3180, 3181, 3182, +} + +// 170: 火防(星盘) +type: 170 +{ + 3183, 3184, 3185, +} + +// 171: 土防(星盘) +type: 171 +{ + 3186, 3187, 3188, +} + +// 172: 准确度(星盘) +type: 172 +{ + 3189, +} + +// 173: 躲闪度(星盘) +type: 173 +{ + 3190, +} + +// 174: 真气(星盘) +type: 174 +{ + 3191, 3192, +} + +// 175: 无视物防等级(星盘) +type: 175 +{ + 3193, 3197, 3213, 3214, 3215, + 3216, +} + +// 176: 无视魔防等级(星盘) +type: 176 +{ + 3194, 3198, 3217, 3218, 3219, + 3220, +} + +// 150: 致命一击率+1% +type: 150 +{ + 2313, 2318, 2323, 2328, 2333, + 2338, 2343, 2348, 2353, 2358, +} + +// 151: 致命一击率+2% +type: 151 +{ +} + +// 152: 致命一击率+3% +type: 152 +{ + 1903, 1906, 1909 +} + +// 153: 致命一击率+4% +type: 153 +{ +} + +// 154: 致命一击率+5% +type: 154 +{ + 2925, 2930, 2935, 2940, + 2945, 2950, 2955, 2960, + 2965, 2970, +} + +// 155: 致命一击率+6% +type: 155 +{ +} + +// 156: 魂力(套装) +type: 156 +{ + 2834, 3093, +} + +// 200: 精炼物理攻击 +type: 200 +{ + 1497, 1498, 1499, 1692, 1693, + 1694, 1695, 1696, 1697, 1698, + 1701, 1699, 1700, 1702, 1703, + 1704, 1705, 1706, 1707, 1708, + 1709, 1710, 1711, 1712, 1713, + 1714, 1715, 1716, 1717, 1718, + 1719, 1720, 1721, 1722, 1723, + 1724, 1725, 1726, 1727, 1728, + 1729, 1730, 1731, 1732, 1733, + 1734, 1735, 1736, 1737, 1738, + 1739, 1740, 1741, 1742, 1743, + 1744, 1745, 1746, 1747, 1748, + 1749, 1750, 1751, +} + +// 201: 精炼魔法攻击 +type: 201 +{ + 1496, +} + +// 202: 精炼物理防御 +type: 202 +{ + 1503, 1832, 1833, 1834, 1835, + 1836, 1837, 1838, 1839, 1840, + 1841, 1842, 1843, 1844, 1845, + 1846, 1847, 1848, 1849, 1850, + 1851, +} + +// 203: 精炼金防 +type: 203 +{ +} + +// 204: 精炼木防 +type: 204 +{ +} + +// 205: 精炼水防 +type: 205 +{ +} + +// 206: 精炼火防 +type: 206 +{ +} + +// 207: 精炼土防 +type: 207 +{ +} + +// 208: 精炼HP +type: 208 +{ + 1500, 1501, 1502, 1772, 1773, + 1774, 1775, 1776, 1777, 1778, + 1779, 1780, 1781, 1782, 1783, + 1784, 1785, 1786, 1787, 1788, + 1789, 1790, 1791, 1792, 1793, + 1794, 1795, 1796, 1797, 1798, + 1799, 1800, 1801, 1802, 1803, + 1804, 1805, 1806, 1807, 1808, + 1809, 1810, 1811, 1812, 1813, + 1814, 1815, 1816, 1817, 1818, + 1819, 1820, 1821, 1822, 1823, + 1824, 1825, 1826, 1827, 1828, + 1829, 1830, 1831, +} + +// 209: 精炼躲闪 +type: 209 +{ + 1505, 1872, 1873, 1874, 1875, + 1876, 1877, 1878, 1879, 1880, + 1881, 1882, 1883, 1884, 1885, + 1886, 1887, 1888, 1889, 1890, + 1891, +} + +// 210: 精炼五行防御 +type: 210 +{ + 1504, 1852, 1853, 1854, 1855, + 1856, 1857, 1858, 1859, 1860, + 1861, 1862, 1863, 1864, 1865, + 1866, 1867, 1868, 1869, 1870, + 1871, +} + +// 211: 精炼物理攻击 & 魔法攻击 +type: 211 +{ + 1752, 1753, 1754, 1755, 1756, + 1757, 1758, 1759, 1760, 1761, + 1762, 1763, 1764, 1765, 1766, + 1767, 1768, 1769, 1770, 1771, +} + +// 212: 精炼物理防御 & 魔法防御 +type: 212 +{ + 2923, +} + +// 100: 磨刀石物理攻击 +type: 100 +{ + 2363, 2369, 2377, 2386, + 2395, 2407, 2420, 3004, +} + +// 101: 磨刀石物理攻击上限 +type: 101 +{ + 2370, 2378, 2387, 2396, + 2408, 2421, +} + +// 102: 磨刀石魔法攻击 +type: 102 +{ + 2364, 2371, 2379, 2388, + 2397, 2409, 2422, 3005, +} + +// 103: 磨刀石魔法攻击上限 +type: 103 +{ + 2372, 2380, 2389, 2398, + 2410, 2423, +} + +// 104: 磨刀石物理防御 +type: 104 +{ + 2382, 2390, 2400, 2412, + 2425, +} + +// 105: 磨刀石HP +type: 105 +{ + 2365, 2373, 2381, 2434, + 2399, 2411, 2424, 3006, +} + +// 106: 磨刀石力量 +type: 106 +{ + 2366, 2374, 2383, 2392, + 2433, 2417, 2430, +} + +// 107: 磨刀石敏捷 +type: 107 +{ + 2367, 2375, 2384, 2393, + 2405, 2418, 2431, +} + +// 108: 磨刀石灵力 +type: 108 +{ + 2368, 2376, 2385, 2394, + 2406, 2419, 2432, +} + +// 109: 磨刀石命中率 +type: 109 +{ + 2391, 2401, 2413, 2426, +} + +// 110: 磨刀石致命一击率(%) +type: 110 +{ + 2402, 2427, +} + +// 111: 磨刀石攻击等级 +type: 111 +{ + 2403, 2415, 2428, +} + +// 112: 磨刀石防御等级 +type: 112 +{ + 2404, 2416, 2429, +} + +// 113: 磨刀石吟唱时间 +type: 113 +{ + 2414, +} + +// 114: 磨刀石魔法防御 +type: 114 +{ + 3045, 3046, 3047, 3048, + 3049, +} + +// 115: 磨刀石骑乘加速 +type: 115 +{ + 3133, 3134, 3135, +} + +// 120: 镌刻金防 +type: 120 +{ + 2518, 2519, 2520, 2521, 2522, + 2523, +} + +// 121: 镌刻木防 +type: 121 +{ + 2506, 2507, 2508, 2509, 2510, + 2511, +} + +// 122: 镌刻水防 +type: 122 +{ + 2512, 2513, 2514, 2515, 2516, + 2517, +} + +// 123: 镌刻火防 +type: 123 +{ + 2530, 2531, 2532, 2533, 2534, + 2535, +} + +// 124: 镌刻土防 +type: 124 +{ + 2524, 2525, 2526, 2527, 2528, + 2529, +} + +// 125: 镌刻命中 +type: 125 +{ + 2536, 2537, 2538, 2539, 2540, + 2541, 2542, +} + +// 126: 镌刻躲闪 +type: 126 +{ + 2543, 2544, 2545, 2546, 2547, + 2548, 2549, +} + +// 127: 镌刻MP +type: 127 +{ + 2550, 2551, 2552, 2553, 2554, + 2555, 2556, 2557, +} + +// 128: 镌刻体力 +type: 128 +{ + 2558, 2559, 2560, 2561, 2562, + 2563, 2564, 2565, 2566, 2988, +} + +// 129: 镌刻力量 +type: 129 +{ + 2567, 2568, 2569, 2570, 2571, + 2572, 2573, 2574, 2575, +} + +// 130: 镌刻敏捷 +type: 130 +{ + 2576, 2577, 2578, 2579, 2580, + 2581, 2582, 2583, 2584, +} + +// 131: 镌刻灵力 +type: 131 +{ + 2585, 2586, 2587, 2588, 2589, + 2590, 2591, 2592, 2593, +} + +// 132: 镌刻HP +type: 132 +{ + 2594, 2595, 2596, 2597, 2598, + 2599, 2600, 2601, 2602, 2603, + 2604, 2605, 2606, 2607, 2608, + 2609, 2610, 2611, 2612, 2613, + 2614, 2615, 2989, 2990, 2991, +} + +// 133: 镌刻物防 +type: 133 +{ + 2616, 2617, 2618, 2619, 2620, + 2621, 2622, 2623, 2624, 2625, + 2626, 2627, 2628, 2629, 2630, + 2631, 2632, 3001, 3002, 3003, +} + +// 134: 镌刻五行防御 +type: 134 +{ + 2633, 2634, 2635, 2636, 2637, + 2638, 2639, 2640, 2641, 2642, + 2643, 2644, 2645, 2646, 2647, + 2648, 2649, 2998, 2999, 3000, +} + +// 135: 镌刻物理攻击 +type: 135 +{ + 2650, 2651, 2652, 2653, 2654, + 2655, 2656, 2657, 2658, 2659, + 2660, 2661, 2662, 2663, 2664, + 2665, 2666, 2667, 2995, 2996, + 2997, +} + +// 136: 镌刻魔法攻击 +type: 136 +{ + 2668, 2669, 2670, 2671, 2672, + 2673, 2674, 2675, 2676, 2677, + 2678, 2679, 2680, 2681, 2682, + 2683, 2684, 2685, 2992, 2993, + 2994, +} + +// 137: 镌刻金系减免(%) +type: 137 +{ + 2686, 2687, 2688, +} + +// 138: 镌刻木系减免(%) +type: 138 +{ + 2689, 2690, 2691, +} + +// 139: 镌刻水系减免(%) +type: 139 +{ + 2692, 2693, 2694, +} + +// 140: 镌刻火系减免(%) +type: 140 +{ + 2695, 2696, 2697, +} + +// 141: 镌刻土系减免(%) +type: 141 +{ + 2698, 2699, 2700, +} + +// 142: 镌刻五行减免(%) +type: 142 +{ + 2708, 2709, +} + +// 143: 镌刻致命一击率 +type: 143 +{ + 2701, +} + +// 144: 镌刻攻击等级 +type: 144 +{ + 2702, 2703, +} + +// 145: 镌刻防御等级 +type: 145 +{ + 2704, 2705, +} + +// 146: 镌刻物理免疫 +type: 146 +{ + 2706, 2707, +} \ No newline at end of file diff --git a/Assets/StreamingAssets/configs/item_ext_prop.txt.meta b/Assets/StreamingAssets/configs/item_ext_prop.txt.meta new file mode 100644 index 0000000000..6cd877438a --- /dev/null +++ b/Assets/StreamingAssets/configs/item_ext_prop.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5429be2b686cda24e8f5ab2049a68b27 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/StreamingAssets/configs/item_msg_map.txt b/Assets/StreamingAssets/configs/item_msg_map.txt new file mode 100644 index 0000000000..1fc2307ad7 --- /dev/null +++ b/Assets/StreamingAssets/configs/item_msg_map.txt @@ -0,0 +1,139 @@ +//物品id 喊话id 显示参数 喊话次数(默认为1) 喊话间隔 +//如果出现同一物品id对应不同的喊话id,程序中将只取靠后的那个喊话id +//参数含义(3: 先显示物品名再显示玩家名,2:先显示玩家名再显示物品名,1:显示玩家名,0:都不显示); +//0 都不显示 +//1 显示玩家名 +//2 先显示玩家名再显示物品名 +//3 先显示物品名再显示玩家名 +//4 显示顺序:服务器-玩家-道具 +//5 显示顺序:道具-服务器-玩家 +//6 显示顺序:服务器-玩家 +//7 显示顺序:服务器 + +//本服喊话ID对照 +11599 4521 2 +11600 4522 2 +12227 4523 1 +12265 4524 2 +12264 4525 2 +12266 4526 2 +12769 4527 2 +12719 4528 2 +12646 4529 2 +12647 4529 2 +12648 4529 2 +12649 4529 2 +12650 4529 2 +12651 4529 2 +13548 4648 0 +13565 4665 0 +13566 4666 0 +13567 4667 0 +13568 4668 0 +13569 4669 0 +13570 4670 0 +13571 4671 0 +13572 4672 0 +13573 4673 0 +13574 4674 0 +13575 4675 0 +13576 4676 0 +13577 4677 0 +13578 4678 0 +13579 4679 0 +13580 4680 0 +13581 4681 0 +13582 4682 0 +13583 4683 0 +13584 4684 0 +13585 4685 0 +13586 4686 0 +13587 4687 0 +13588 4688 0 +13589 4689 0 +13590 4690 0 +13591 4691 0 +13592 4692 0 +13593 4693 0 +13594 4694 0 +13595 4695 0 +13596 4696 0 +13597 4697 0 +13598 4698 0 +13599 4699 0 +13600 4700 0 +14290 4532 1 +20853 4533 3 +20255 4534 3 +20289 4535 3 +21065 4536 3 +20311 4537 3 +20852 4538 3 +20218 4539 3 +20402 4540 3 +20851 4541 3 +20394 4542 3 +20363 4543 3 +26061 4544 3 +26053 4545 3 +28607 4546 2 +29453 4547 3 +30207 4548 3 +44960 4549 3 +45043 4550 3 +48694 4551 3 +48695 4551 3 +48696 4552 3 +48697 4552 3 +50139 4554 2 +50145 4554 2 +50151 4554 2 +50157 4554 2 +50163 4554 2 +50169 4554 2 +50175 4554 2 +50181 4554 2 +50187 4554 2 +50193 4554 2 +50199 4554 2 +50205 4554 2 +50211 4554 2 +50217 4554 2 +50223 4554 2 +50229 4554 2 +50140 4555 2 +50146 4555 2 +50152 4555 2 +50158 4555 2 +50164 4555 2 +50170 4555 2 +50176 4555 2 +50182 4555 2 +50188 4555 2 +50194 4555 2 +50200 4555 2 +50206 4555 2 +50212 4555 2 +50218 4555 2 +50224 4555 2 +50230 4555 2 + +//跨服喊话ID对照 +49647 4801 4 +50702 4802 6 +50704 4803 6 +50706 4804 6 +50708 4805 6 +50710 4806 6 +50712 4807 6 +50714 4808 6 +50716 4809 6 +50718 4810 6 +50720 4811 6 +50722 4812 6 +50724 4813 6 +50726 4814 6 +50728 4815 6 +50730 4816 6 +50732 4817 6 + diff --git a/Assets/StreamingAssets/configs/item_msg_map.txt.meta b/Assets/StreamingAssets/configs/item_msg_map.txt.meta new file mode 100644 index 0000000000..4fd53cb569 --- /dev/null +++ b/Assets/StreamingAssets/configs/item_msg_map.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 76f11583e7abe3e4bbf976a45f946fe7 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/StreamingAssets/configs/skillstr.txt b/Assets/StreamingAssets/configs/skillstr.txt new file mode 100644 index 0000000000..22f992185c Binary files /dev/null and b/Assets/StreamingAssets/configs/skillstr.txt differ diff --git a/Assets/StreamingAssets/configs/skillstr.txt.meta b/Assets/StreamingAssets/configs/skillstr.txt.meta new file mode 100644 index 0000000000..3b97f7f5c8 --- /dev/null +++ b/Assets/StreamingAssets/configs/skillstr.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6ee4a110a33412e4aa3f879764bec33b +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: