From cab1d5d962e35f020cbf767b87d053408165989a Mon Sep 17 00:00:00 2001 From: Chomper9981 Date: Mon, 20 Apr 2026 14:20:33 +0700 Subject: [PATCH 1/2] fix ObjectCoord bug in TaskTrace --- Assets/PerfectWorld/Scripts/MainFiles/EC_Game.cs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Assets/PerfectWorld/Scripts/MainFiles/EC_Game.cs b/Assets/PerfectWorld/Scripts/MainFiles/EC_Game.cs index d9ea7b5505..12c38216ab 100644 --- a/Assets/PerfectWorld/Scripts/MainFiles/EC_Game.cs +++ b/Assets/PerfectWorld/Scripts/MainFiles/EC_Game.cs @@ -530,10 +530,20 @@ namespace BrewMonster.Network return iIndex; } - public static int GetObjectCoord(string strTargetID, out List TargetCoord) + public static int GetObjectCoord(string strTargetID, out List TargetCoord) { - TargetCoord = m_CoordTab[strTargetID]; - return TargetCoord.Count; + TargetCoord = new List(); + if (string.IsNullOrWhiteSpace(strTargetID)) + return 0; + + if (!m_bCoordLoaded) + LoadObjectCoord(); + + if (!m_CoordTab.TryGetValue(strTargetID, out var list) || list == null) + return 0; + + TargetCoord = list; + return list.Count; } public static bool IsPetAutoSkill(int skill_id) From 2bf643fca9848008853f56d756e5a927a83e7977 Mon Sep 17 00:00:00 2001 From: Chomper9981 Date: Mon, 20 Apr 2026 14:21:27 +0700 Subject: [PATCH 2/2] fix equipment percent proplem --- .../Scripts/Managers/EC_InventoryUI.cs | 5 ++++ .../Managers/EC_IvtrItem/EC_IvtrEquip.cs | 9 +++---- Assets/PerfectWorld/Scripts/NPC/CECModel.cs | 1 + Assets/Scripts/CECHostPlayer.cs | 25 ++++++++++++++----- 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_InventoryUI.cs b/Assets/PerfectWorld/Scripts/Managers/EC_InventoryUI.cs index 7435db4835..2ae8861290 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_InventoryUI.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_InventoryUI.cs @@ -526,6 +526,11 @@ namespace BrewMonster.Scripts.Managers equipment.SetItemInfo(itemData.Content, itemData.Content.Length); } + // Align with GetDetailDataFromLocal() (e.g. CDlgAward): parsed addon params use prop.Local so + // AddOneAddOnPropDesc uses the same branches as shop/tooltip (IntToFloat, VisualizeFloatPercent). + if (equipment is EC_IvtrEquip ivtrEquip) + ivtrEquip.SetLocalProps(); + return equipment; } diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrEquip.cs b/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrEquip.cs index 05c721512b..954506d4a0 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrEquip.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrEquip.cs @@ -1299,12 +1299,12 @@ namespace BrewMonster.Scripts } else { - Debug.LogWarning($"[EC_IvtrEquip] Failed to load item_ext_prop.txt from Addressables (address: {address})"); + BMLogger.LogWarning($"[EC_IvtrEquip] Failed to load item_ext_prop.txt from Addressables (address: {address})"); } } catch (Exception ex) { - Debug.LogError($"[EC_IvtrEquip] Exception loading item_ext_prop.txt from Addressables: {ex.Message}"); + BMLogger.LogError($"[EC_IvtrEquip] Exception loading item_ext_prop.txt from Addressables: {ex.Message}"); // ignore parse errors; fallback below will handle unknown properties } @@ -1495,7 +1495,6 @@ namespace BrewMonster.Scripts // Destroying description is added by caller when needed; keep it optional here. m_strDesc += "\\r"; AddExtDescText(); - Debug.Log("m_strDesc add ext desc text: " + m_strDesc); // 11) Price (sell price scaled) return m_strDesc; } @@ -2790,11 +2789,11 @@ namespace BrewMonster.Scripts case 11: // ����ʱ�� if (local) { - AddDescText(color, true, GetItemDescString(DescriptipionMsg.ITEMDESC_CASTTIME), -VisualizeFloatPercent(p0)); + AddDescText(color, true, GetItemDescString(DescriptipionMsg.ITEMDESC_CASTTIME), -p0); } else { - AddDescText(color, true, GetItemDescString(DescriptipionMsg.ITEMDESC_CASTTIME), -p0); + AddDescText(color, true, GetItemDescString(DescriptipionMsg.ITEMDESC_CASTTIME), -VisualizeFloatPercent(p0)); } break; diff --git a/Assets/PerfectWorld/Scripts/NPC/CECModel.cs b/Assets/PerfectWorld/Scripts/NPC/CECModel.cs index a968392d5e..7e2c70fdef 100644 --- a/Assets/PerfectWorld/Scripts/NPC/CECModel.cs +++ b/Assets/PerfectWorld/Scripts/NPC/CECModel.cs @@ -687,6 +687,7 @@ public class CECModel if(sfx.m_strFilePaths != null && sfx.m_strFilePaths.Count > 0) { string soundpath = AFile.NormalizePath(sfx.m_strFilePaths[0]); + soundpath += ".wav"; soundpath = soundpath.ToLower(); SFXManager.Instance.PlaySkillSfxAtPointAsync(soundpath, Vector3.zero).Forget(); diff --git a/Assets/Scripts/CECHostPlayer.cs b/Assets/Scripts/CECHostPlayer.cs index 40f9a3d3a5..00d1f5cd6d 100644 --- a/Assets/Scripts/CECHostPlayer.cs +++ b/Assets/Scripts/CECHostPlayer.cs @@ -3791,8 +3791,8 @@ namespace BrewMonster string szText = idTarget.ToString(); List originalCoords = new List(); int iCount = EC_Game.GetObjectCoord(szText, out originalCoords); - - if (iCount == 0) + + if (originalCoords == null || iCount == 0) { return vDestPos; } @@ -3800,9 +3800,20 @@ namespace BrewMonster float fMinDist = 99999999.0f; // Get Current map name, such as 'a32' etc. - int idInstance = CECGameRun.Instance.GetWorld().GetInstanceID(); - CECInstance pInstance = CECGameRun.Instance.GetInstance(idInstance); - string strCurMap = pInstance.GetPath(); + CECGameRun gameRun = CECGameRun.Instance; + if (gameRun == null) + return vDestPos; + + CECWorld world = gameRun.GetWorld(); + if (world == null) + return vDestPos; + + int idInstance = world.GetInstanceID(); + CECInstance pInstance = gameRun.GetInstance(idInstance); + if (pInstance == null) + return vDestPos; + + string strCurMap = pInstance.GetPath() ?? string.Empty; // �ȼ��ͬһ��ͼ���Ƿ���Ҫ���ҵ���Ʒ bool bHasObjectInCurrentInstance = originalCoords.Any(coord => coord.strMap == strCurMap); @@ -3826,7 +3837,9 @@ namespace BrewMonster // ��ǰ��ͼ��û��Ŀ��Ļ�����Ŀ�����ڵ�ͼ�ڵ�ǰ��ͼ����� else if (!bHasObjectInCurrentInstance) { - + if (string.IsNullOrEmpty(objCoord.strMap)) + continue; + // find the entrance of instance List instCoord = new List(); int iCount2 = EC_Game.GetObjectCoord(objCoord.strMap, out instCoord);