少年修仙传客户端代码仓库
client_Lhy
2019-07-05 29db26c8316842fada4881c256a86c52429fbd77
Merge remote-tracking branch 'origin/master' into LuaOrgan

Conflicts:
System/KnapSack/New/RoleEquipWin.cs
36个文件已修改
640 ■■■■■ 已修改文件
Core/GameEngine/Model/Config/TaskFeedbackConfig.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/TaskFeedbackConfig.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Player/PlayerDatas.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToGameServer/CC0_CrossRealm/CC002_tagCGViewCrossPlayerInfo.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/AI/HeroAI_Base.cs 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_Hero.cs 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_Player.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GActorPlayerBase.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/MapTransferUtility.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Stage/Dungeon/ClientDungeonStageUtility.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Alchemy/AlchemyModel.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/AssetVersion/AssetVersionUtility.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Chat/ChatCenter.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Chat/ChatCtrl.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Compose/New/ComposeFirstTypeCell.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Compose/New/ComposeSecondTypeCell.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Compose/New/ComposeToolsWin.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Compose/New/ComposeWinModel.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Equip/RealmEquipWin.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FashionDress/FashionDressWin.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/HazyRegion/HazyRegionModel.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/New/RoleEquipWin.cs 75 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/HoistingWin.cs 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/MainInterfaceWin.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/TaskFeedbackModel.cs 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewBieGuidance/FunctionalGuideBehaviour.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RoleParticulars/OtherPlayerEquipLevelBehaviour.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RoleParticulars/OtherPlayerEquipModel.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RoleParticulars/OtherPlayerEquipWin.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RoleParticulars/RoleParticularModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RoleParticulars/RoleParticularsWin.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/HumanInductionTaskCell.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/HumanTreasureTaskCell.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/HumanTreasureWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowJump/WindowJumpMgr.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WorldMap/WorldMapWin.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/TaskFeedbackConfig.cs
@@ -1,6 +1,6 @@
//--------------------------------------------------------
//    [Author]:           Fish
//    [  Date ]:           Tuesday, June 11, 2019
//    [  Date ]:           Thursday, July 04, 2019
//--------------------------------------------------------
using System.Collections.Generic;
@@ -24,6 +24,7 @@
    public readonly int jump;
    public readonly string[] funcTitles;
    public readonly string failFuncs;
    public readonly int[] onlyOneFunc;
    public readonly string[] remind;
    public TaskFeedbackConfig()
@@ -58,7 +59,14 @@
            failFuncs = tables[10];
            remind = tables[11].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            string[] onlyOneFuncStringArray = tables[11].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            onlyOneFunc = new int[onlyOneFuncStringArray.Length];
            for (int i=0;i<onlyOneFuncStringArray.Length;i++)
            {
                 int.TryParse(onlyOneFuncStringArray[i],out onlyOneFunc[i]);
            }
            remind = tables[12].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
        }
        catch (Exception ex)
        {
Core/GameEngine/Model/Config/TaskFeedbackConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: b80a883f246077d46ab59d6938182ec9
timeCreated: 1560244941
timeCreated: 1562231068
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Core/GameEngine/Model/Player/PlayerDatas.cs
@@ -533,6 +533,7 @@
                if (hero != null)
                {
                    hero.SwitchSuit();
                    hero.ReqLingGenEffect((int)(baseData.equipShowSwitch / 1000 % 1000));
                }
                break;
            case PlayerDataType.LuckValue:
Core/NetworkPackage/ClientPack/ClientToGameServer/CC0_CrossRealm/CC002_tagCGViewCrossPlayerInfo.cs
@@ -4,7 +4,8 @@
// C0 02 查看跨服玩家信息 #tagCGViewCrossPlayerInfo
public class CC002_tagCGViewCrossPlayerInfo : GameNetPackBasic {
    public uint PlayerID;    // 跨服玩家ID
    public uint PlayerID;    // 跨服玩家ID
    public byte EquipClassLV;  //大于0为查看指定境界阶装备信息,0为查看默认信息
    public CC002_tagCGViewCrossPlayerInfo () {
        combineCmd = (ushort)0x1801;
@@ -12,7 +13,7 @@
    }
    public override void WriteToBytes () {
        WriteBytes (PlayerID, NetDataType.DWORD);
        WriteBytes (PlayerID, NetDataType.DWORD);         WriteBytes(EquipClassLV, NetDataType.BYTE);
    }
}
Fight/Actor/AI/HeroAI_Base.cs
@@ -51,7 +51,12 @@
            _skill = CanCast(skillList);
        }
        if (_skill == null && _hero.CanCommonAtk())
        if (_skill != null)
        {
            return _skill;
        }
        if (_hero.CanCommonAtk())
        {
            int _index = _hero.nextComAtkIndex;
            if (_index == -1)
@@ -60,27 +65,10 @@
            }
            int _comSkillID = _hero.GetCommonSkillID(_index);
            _skill = _hero.SkillMgr.Get(_comSkillID);
            if (_skill != null && _skill.skillInfo != null && _skill.skillInfo.config != null)
            {
                bool _forceCast = false;
                SkillHelper.EffectValue _effectValue;
                if (SkillHelper.Instance.TryGetExpertSkillEvByMainSkillID(_skill.id, 4093, out _effectValue))
                {
                    _forceCast = true;
                }
                // 判断是否是被封禁的技能
                if (!StatusMgr.Instance.CanAttack(_hero.ServerInstID, _skill.skillInfo.config) && !_forceCast)
                {
                    return _skill;
                }
            }
            return _hero.SkillMgr.Get(_comSkillID);
        }
        return _skill;
        return null;
    }
    protected Skill CanCast(int[] skillList)
@@ -144,6 +132,22 @@
            return false;
        }
        bool _canCast = true;
        bool _forceCast = false;
        SkillHelper.EffectValue _effectValue;
        if (SkillHelper.Instance.TryGetExpertSkillEvByMainSkillID(skillID, 4093, out _effectValue))
        {
            _forceCast = true;
        }
        var _skillConfig = SkillConfig.Get(skillID);
        // 判断是否是被封禁的技能
        if (!StatusMgr.Instance.CanAttack(PlayerDatas.Instance.PlayerId, _skillConfig) && !_forceCast)
        {
            _canCast = false;
        }
        if (skillID == xpSkillID)
        {
            GA_Hero _hero = PlayerDatas.Instance.hero;
@@ -152,11 +156,11 @@
             || GeneralDefine.NoXpDungeons.Contains(PlayerDatas.Instance.baseData.MapID)
             || (_hero.SelectTarget != null && _hero.SelectTarget is GActorPlayerBase)) && !userClick)
            {
                return false;
                _canCast = false;
            }
        }
        return true;
        return _canCast;
    }
    protected GActorFight DecideAttackTarget(Vector3 searchCenter, float range, int lockNpcID = -1)
Fight/GameActor/GA_Hero.cs
@@ -242,6 +242,13 @@
        m_CalculAutoFightTime = Time.realtimeSinceStartup;
        m_LastSyncTickTime = Time.realtimeSinceStartup;
        ModelCenter.Instance.GetModel<ReikiRootModel>().onReikiRootEffectRefresh += OnReikiEffectRefresh;
    }
    private void OnReikiEffectRefresh()
    {
        ReqLingGenEffect((int)(PlayerDatas.Instance.baseData.equipShowSwitch / 1000 % 1000));
    }
    private List<SFXController> m_SuitEffectList = new List<SFXController>();
@@ -316,7 +323,7 @@
    protected sealed override void OnUnit()
    {
        Object.Destroy(m_BhvFindEnemy);
        UnityEngine.Object.Destroy(m_BhvFindEnemy);
        m_BhvFindEnemy = null;
        RlsSuitEffect();
        OnPathFinding -= MapTransferUtility.Instance.OnHeroPathFinding;
@@ -559,6 +566,8 @@
        UpdateAutoStartFight();
    }
    protected sealed override void OnPutonClothes(uint clothesItemID, GameObject clothed)
    {
        clothed.layer = LayerUtility.Hero;
@@ -571,6 +580,8 @@
        StopRush();
        Behaviour.StopKillUntilDieAI();
        ReqLingGenEffect((int)(PlayerDatas.Instance.baseData.equipShowSwitch / 1000 % 1000));
    }
    protected sealed override void OnPutonSecondary(uint secondaryItemID, GameObject secondary)
@@ -850,7 +861,7 @@
        ReleaseLight();
        if (PlayerDatas.Instance.baseData.MapID == 31160)
        {
            m_Light = Object.Instantiate(BuiltInLoader.LoadPrefab("Zhujiao_Pointlight"));
            m_Light = UnityEngine.Object.Instantiate(BuiltInLoader.LoadPrefab("Zhujiao_Pointlight"));
            m_Light.transform.SetParent(MP_Name);
            m_Light.transform.localPosition = Vector3.zero;
            m_Light.transform.localScale = Vector3.one;
@@ -862,7 +873,7 @@
    {
        if (m_Light)
        {
            Object.Destroy(m_Light);
            UnityEngine.Object.Destroy(m_Light);
            m_Light = null;
        }
    }
@@ -1242,7 +1253,7 @@
            if (m_ArrowEffect)
            {
                FaceTargetXZ _f = m_ArrowEffect.GetComponent<FaceTargetXZ>();
                Object.Destroy(_f);
                UnityEngine.Object.Destroy(_f);
                SFXPlayUtility.Instance.Release(m_ArrowEffect);
                m_ArrowEffect = null;
            }
Fight/GameActor/GA_Player.cs
@@ -450,7 +450,7 @@
        {
            case PlayerDataType.EquipShowSwitch:
                m_H0434.EquipShowSwitch = data.Value;
                ReqLingGenEffect((int)(m_H0434.EquipShowSwitch / 1000 % 1000));
                break;
        }
    }
@@ -462,6 +462,9 @@
        SkinnedMeshRenderer _renderer = clothed.GetComponentInChildren<SkinnedMeshRenderer>();
        _renderer.gameObject.SetLayer(LayerUtility.Player, false);
        MaterialUtility.SwitchXrayShader(m_Material, false);
        ReqLingGenEffect((int)(m_H0434.EquipShowSwitch / 1000 % 1000));
        SyncSuitEffect((m_H0434.EquipShowSwitch % 10) > 0);
    }
    protected sealed override void OnPutonSecondary(uint secondaryItemID, GameObject secondary)
Fight/GameActor/GActorPlayerBase.cs
@@ -488,6 +488,11 @@
    protected override void OnLateUpdate()
    {
        UpdateRush();
        if (LingGenNode)
        {
            LingGenNode.transform.position = Root.transform.position;
        }
    }
    public void CheckAncientHeadUp()
@@ -2968,4 +2973,40 @@
            }
        }
    }
    private List<SFXController> lingGenEffectList = new List<SFXController>();
    private GameObject LingGenNode;
    private void RlsLingGenEffect()
    {
        if (lingGenEffectList.Count > 0)
        {
            for (int i = 0; i < lingGenEffectList.Count; ++i)
            {
                SFXPlayUtility.Instance.Release(lingGenEffectList[i]);
            }
        }
        lingGenEffectList.Clear();
        UnityEngine.Object.Destroy(LingGenNode);
        LingGenNode = null;
    }
    public void ReqLingGenEffect(int id)
    {
        if (!ReikiRootEffectConfig.Has(id))
        {
            return;
        }
        RlsLingGenEffect();
        if (!LingGenNode)
        {
            LingGenNode = new GameObject();
            GameObject.DontDestroyOnLoad(LingGenNode);
        }
        var _config = ReikiRootEffectConfig.Get(id);
        var _sfx = SFXPlayUtility.Instance.PlayBattleEffect(_config.effect, LingGenNode.transform, 1);
        lingGenEffectList.Add(_sfx);
    }
}
Fight/MapTransferUtility.cs
@@ -476,8 +476,11 @@
                    Debug.LogErrorFormat("移动至NPC: {0} 时找不到任何跳跃点, NextPos: {1}", NpcID, _nextPos);
                    break;
                }
                ClientSceneManager.Instance.ExitTransStatus();
                float _dis = MathUtility.DistanceSqrtXZ(_hero.Pos, _nextPos);
                if (_dis <= 0.01f)
                {
                    ClientSceneManager.Instance.ExitTransStatus();
                }
                while (_dis > 0.01f)
                {
                    _dis = MathUtility.DistanceSqrtXZ(_hero.Pos, _nextPos);
Fight/Stage/Dungeon/ClientDungeonStageUtility.cs
@@ -72,6 +72,16 @@
    public static void GotoNormalClientDungeon(int clientMapId, int mapId, int lineId)
    {
        if (!AssetSource.sceneFromEditor)
        {
            var assetValid = AssetVersionUtility.IsSceneAssetValid(mapId, lineId);
            if (!assetValid)
            {
                InGameDownLoad.Instance.TryDownLoad(InGameDownLoad.Dominant.Whole);
                return;
            }
        }
        if (crossServerOneVsOneModel.IsMatching)
        {
            SysNotifyMgr.Instance.ShowTip("CrossOneVsOneMatching");
System/Alchemy/AlchemyModel.cs
@@ -57,6 +57,7 @@
        public int maxBatchAlchemyCount { get; private set; }
        public int normalBatchAlchemyLevel { get; private set; }
        Dictionary<int, int> alchemyRedpointLevelLimits;
        public bool isServerPrepare { get; private set; }
@@ -129,7 +130,8 @@
        private void PlayerDataRefreshEvent(PlayerDataType dataType)
        {
            if (dataType == PlayerDataType.FreePoint)
            if (dataType == PlayerDataType.FreePoint
                || dataType == PlayerDataType.LV)
            {
                CheckRedpoint();
            }
@@ -178,6 +180,7 @@
                funcConfig = FuncConfigConfig.Get("AlchemyRedPoint");
                normalBatchAlchemyLevel = int.Parse(funcConfig.Numerical2);
                alchemyRedpointLevelLimits = ConfigParse.GetDic<int, int>(funcConfig.Numerical3);
            }
            {
@@ -694,6 +697,14 @@
                    Item item;
                    if (IsAlchemyEnoughMaterial(id, out item))
                    {
                        if (alchemyRedpointLevelLimits != null
                            && alchemyRedpointLevelLimits.ContainsKey(id))
                        {
                            if (PlayerDatas.Instance.baseData.LV >= alchemyRedpointLevelLimits[id])
                            {
                                continue;
                            }
                        }
                        s_Alchemyables.Add(id);
                    }
                }
System/AssetVersion/AssetVersionUtility.cs
@@ -209,6 +209,11 @@
                var npcs = actorShowConfig.showNpcs;
                foreach (var item in npcs)
                {
                    if (item == 1)
                    {
                        continue;
                    }
                    var npcConfig = NPCConfig.Get(item);
                    if (npcConfig != null)
                    {
System/Chat/ChatCenter.cs
@@ -175,6 +175,40 @@
            return _recentlyChat;
        }
        public void SaveLocalRecentlyChat()
        {
            for (int i = 0; i < recentlyChats.Count; i++)
            {
                var localKey = StringUtility.Contact("RecentlyChat_", PlayerDatas.Instance.baseData.PlayerID, "_", i);
                LocalSave.SetString(localKey, recentlyChats[i].ToString());
            }
        }
        void GetLocalRecentlyChat()
        {
            recentlyChats.Clear();
            for (int i = 0; i < RecentlyChatNum; i++)
            {
                var localKey = StringUtility.Contact("RecentlyChat_", PlayerDatas.Instance.baseData.PlayerID, "_", i);
                if (LocalSave.HasKey(localKey))
                {
                    var json = LocalSave.GetString(localKey);
                    if (!string.IsNullOrEmpty(json))
                    {
                        RecentlyChat chat;
                        if (RecentlyChat.TryParse(json, out chat))
                        {
                            recentlyChats.Add(chat);
                        }
                    }
                }
            }
            if (RecentlyChatChangeEvent != null)
            {
                RecentlyChatChangeEvent();
            }
        }
        public void OnBeforePlayerDataInitialize()
        {
            recentlyChat = null;
@@ -224,6 +258,12 @@
            public List<string> itemInfos = new List<string>();
            public List<int> itemIndexs = new List<int>();
            public List<string> itemNames = new List<string>();
            public RecentlyChat()
            {
            }
            public RecentlyChat(string _chat)
            {
                display = _chat;
@@ -242,6 +282,26 @@
                {
                    itemIndexs.Add(i);
                }
            }
            public override string ToString()
            {
                return LitJson.JsonMapper.ToJson(this);
            }
            public static bool TryParse(string json, out RecentlyChat chat)
            {
                chat = null;
                try
                {
                    chat = LitJson.JsonMapper.ToObject<RecentlyChat>(json);
                }
                catch (Exception e)
                {
                    Debug.LogError(e.StackTrace + e.Message);
                    return false;
                }
                return chat != null;
            }
        }
@@ -749,6 +809,7 @@
        public void OnPlayerLoginOk()
        {
            serverInited = true;
            GetLocalRecentlyChat();
        }
        #region 聊天浮动
System/Chat/ChatCtrl.cs
@@ -309,6 +309,7 @@
                     _recentlyChat = chatCenter.SaveRecentlyChat(result);
                 }
                 msg = CheckHasItem(result, _recentlyChat);
                 chatCenter.SaveLocalRecentlyChat();
                 chatCenter.recentlyChat = null;
                 if (chatCenter.IsChatBanned || chatCenter.IsClientBan(type))
System/Compose/New/ComposeFirstTypeCell.cs
@@ -36,7 +36,7 @@
            if (index != -1)
            {
                redpoint.gameObject.SetActive(true);
                redpoint.redpointId = composeModel.secondTypeRedDict[secondType].id;
                redpoint.redpointId = composeModel.secondTypeRedDict[firstType * 100 + secondType].id;
            }
            else
            {
System/Compose/New/ComposeSecondTypeCell.cs
@@ -33,7 +33,7 @@
            unlockTypeName.text = itemCompound.thirdTypeName;
            lockTypeName.text = itemCompound.thirdTypeName;
            lockLevel.text =  StringUtility.Contact(itemCompound.levelNeed,Language.Get("Z1041"));
            string key = StringUtility.Contact(secondType, 10,thirdType);
            string key = ((firstType * 100 + secondType) * 100 + thirdType).ToString();
            if (firstType == (int)ComposeFuncType.Item
                && composeModel.thirdTypeRedDict.ContainsKey(key))
            {
System/Compose/New/ComposeToolsWin.cs
@@ -137,15 +137,13 @@
                        {
                            if (composeWinModel.secondTypeRedDict[second].state == RedPointState.Simple)
                            {
                                string key = StringUtility.Contact(second, 10);
                                foreach (var third in composeWinModel.thirdTypeRedDict.Keys)
                                {
                                    if (composeWinModel.thirdTypeRedDict[third].state == RedPointState.Simple)
                                    {
                                        string thirdType = third.Substring(key.Length, third.Length - key.Length);
                                        isJumpTo = true;
                                        curSecondType = second;
                                        curThirdType = int.Parse(thirdType);
                                        curSecondType = second / 100 % 100;
                                        curThirdType = int.Parse(third) % 100;
                                        composeWinModel.ResetJumpToModel();
                                        break;
                                    }
@@ -415,7 +413,7 @@
            successRateText.text = Language.Get("HallowsWin_Success", StringUtility.Contact(compoundModel.successRate / 100, "%"));
            composeWinModel.SetCurComposeModel(compoundModel);
            composeWinModel.composeBtnRed.state = composeWinModel.secondTypeRedDict[compoundModel.secondType].state;
            composeWinModel.composeBtnRed.state = composeWinModel.secondTypeRedDict[compoundModel.firstType * 100 + compoundModel.secondType].state;
            UpdateComposeMat();
        }
System/Compose/New/ComposeWinModel.cs
@@ -1138,25 +1138,28 @@
        secondTypeRedDict.Clear();
        thirdTypeRedDict.Clear();
        //if (composeDataDict.ContainsKey((int)ComposeFuncType.Item))
        //{
        //    var firstTypeData = composeDataDict[(int)ComposeFuncType.Item];
        //    var secondTypeDict = firstTypeData.secondTypeDict;
        //    foreach (var second in secondTypeDict.Keys)
        //    {
        //        var thirdTypeDict = secondTypeDict[second].thirdTypeDict;
        //        int secondRedKey = COMPOSETOOL_REDKEY * 100 + second;
        //        Redpoint secondRed = new Redpoint(COMPOSETOOL_REDKEY, secondRedKey);
        //        secondTypeRedDict.Add(second, secondRed);
        //        foreach (var third in thirdTypeDict.Keys)
        //        {
        //            int thirdRedKey = secondRedKey * 100 + third;
        //            Redpoint thirdRed = new Redpoint(secondRedKey, thirdRedKey);
        //            string key = StringUtility.Contact(second, 10, third);
        //            thirdTypeRedDict.Add(key, thirdRed);
        //        }
        //    }
        //}
        var firstType= (int)ComposeFuncType.Item;
        if (composeDataDict.ContainsKey(firstType))
        {
            var firstTypeData = composeDataDict[firstType];
            var secondTypeDict = firstTypeData.secondTypeDict;
            foreach (var second in secondTypeDict.Keys)
            {
                var thirdTypeDict = secondTypeDict[second].thirdTypeDict;
                int secondRedKey = COMPOSETOOL_REDKEY * 100 + second;
                Redpoint secondRed = new Redpoint(COMPOSETOOL_REDKEY, secondRedKey);
                var secondKey = firstType * 100 + second;
                secondTypeRedDict.Add(secondKey, secondRed);
                foreach (var third in thirdTypeDict.Keys)
                {
                    int thirdRedKey = secondRedKey * 100 + third;
                    Redpoint thirdRed = new Redpoint(secondRedKey, thirdRedKey);
                    string key = (secondKey * 100 + third).ToString();
                    thirdTypeRedDict.Add(key, thirdRed);
                }
            }
        }
        foreach (var category in composeRedpointCategories)
        {
@@ -1169,12 +1172,13 @@
                    var thirdTypeDict = secondTypeDict[second].thirdTypeDict;
                    int secondRedKey = COMPOSETICKET_REDKEY * 100 + second;
                    Redpoint secondRed = new Redpoint(COMPOSETICKET_REDKEY, secondRedKey);
                    secondTypeRedDict.Add(second, secondRed);
                    var secondKey = category.x * 100 + second;
                    secondTypeRedDict.Add(secondKey, secondRed);
                    foreach (var third in thirdTypeDict.Keys)
                    {
                        int thirdRedKey = secondRedKey * 100 + third;
                        Redpoint thirdRed = new Redpoint(secondRedKey, thirdRedKey);
                        string key = StringUtility.Contact(second, 10, third);
                        string key = (secondKey * 100 + third).ToString();
                        thirdTypeRedDict.Add(key, thirdRed);
                    }
                }
@@ -1220,7 +1224,8 @@
                    {
                        var itemCompound = thirdTypeDatas[i].itemCompound;
                        int makeID = itemCompound.makeID[0];
                        string key = StringUtility.Contact(category.y, 10, third);
                        var secondKey = category.x * 100 + category.y;
                        string key = (secondKey * 100 + third).ToString();
                        if (IsEnoughFixedMat(itemCompound))
                        {
                            if (thirdTypeRedDict[key].state != RedPointState.Simple)
System/Equip/RealmEquipWin.cs
@@ -207,6 +207,7 @@
                weaponId = appearance.weapon,
                secondaryId = appearance.secondary,
                keepRotation = !resetRotation,
                reikiRootEffectId = PlayerDatas.Instance.baseData.reikiRootEffectId,
            });
        }
System/FashionDress/FashionDressWin.cs
@@ -369,6 +369,7 @@
                fashionClothesId = fashionDressClothesId,
                fashionWeaponId = fashionDressWeaponId,
                fashionSecondaryId = fashionDressSecondaryId,
                reikiRootEffectId = PlayerDatas.Instance.baseData.reikiRootEffectId,
                isDialogue = false,
            };
            UI3DModelExhibition.Instance.ShowPlayer(m_RawModel, data);
System/HazyRegion/HazyRegionModel.cs
@@ -55,6 +55,7 @@
        public int openActviePoint { get; private set; }
        public int autoOpenLimitLevel { get; private set; }
        int autoOpenLimitTimes = 0;
        int m_SelectIncident;
        public int selectIncident
@@ -161,7 +162,10 @@
        {
            if (PlayerDatas.Instance.baseData.LV > autoOpenLimitLevel)
            {
                SnxxzGame.Instance.StartCoroutine(Co_TryOpenHazyRegionWin());
                if (hazyRegionOpenTimes > autoOpenLimitTimes || !IsAllIncidentComplete())
                {
                    SnxxzGame.Instance.StartCoroutine(Co_TryOpenHazyRegionWin());
                }
            }
            //WindowCenter.Instance.Close<HazyAdventureHintWin>();
            //taskModel.AutomaticTripToTask(taskModel.currentMission);
@@ -181,7 +185,10 @@
                    if (PlayerDatas.Instance.baseData.LV > autoOpenLimitLevel
                        && IsIncidentDungeon(cacheMapId))
                    {
                        SnxxzGame.Instance.StartCoroutine(Co_TryOpenHazyRegionWin());
                        if (hazyRegionOpenTimes > autoOpenLimitTimes || !IsAllIncidentComplete())
                        {
                            SnxxzGame.Instance.StartCoroutine(Co_TryOpenHazyRegionWin());
                        }
                    }
                }
                cacheMapId = mapId;
@@ -240,6 +247,7 @@
            funcConfig = FuncConfigConfig.Get("HazyRegionAutoOpen");
            autoOpenLimitLevel = int.Parse(funcConfig.Numerical1);
            int.TryParse(funcConfig.Numerical2, out autoOpenLimitTimes);
        }
        public bool TryGetIncident(int id, out Incident incident)
@@ -418,6 +426,24 @@
            return false;
        }
        public bool IsAllIncidentComplete()
        {
            var allComplete = true;
            foreach (var id in m_Incidents.Keys)
            {
                Incident incident;
                if (TryGetIncident(id, out incident))
                {
                    if (incident.state != IncidentState.Complete)
                    {
                        allComplete = false;
                        break;
                    }
                }
            }
            return allComplete;
        }
        public void DisplayErrorRemind(int error)
        {
            switch (error)
System/KnapSack/New/RoleEquipWin.cs
@@ -18,7 +18,6 @@
    public class RoleEquipWin : Window
    {
        #region 成员变量
        //[SerializeField] EquipBehaviours equipPlaces;
        [SerializeField] RawImage m_Role;
        [SerializeField] private Button m_OneKeySell;
@@ -28,7 +27,7 @@
        [SerializeField] private Text m_Copper;
        [SerializeField] private Text m_Diamond;
        [SerializeField] private Button m_EquBtn;
        [SerializeField] private Button m_SpiritEquBtn;
        [SerializeField] Button m_SpiritButton;
        #endregion
@@ -46,7 +45,8 @@
        {
            m_OneKeySell.SetListener(OnClickOneKeySell);
            m_Sort.SetListener(OnClickSortBtn);
            m_EquBtn.SetListener(OnEquBtnDown);
            m_EquBtn.SetListener(OnEquBtnDown);
            m_SpiritButton.SetListener(GotoSpiritWeaponWin);
        }
        protected override void OnPreOpen()
@@ -58,6 +58,7 @@
            WindowCenter.Instance.windowAfterCloseEvent += AfterWindowClose;
            GlobalTimeEvent.Instance.secondEvent += UpdateSecond;
            m_SpiritButton.gameObject.SetActive(FuncOpen.Instance.IsFuncOpen(183));
            UpdateMoney();
        }
@@ -120,14 +121,14 @@
            }
        }
        private void OnSpiritEquBtnDown()
        {
        }
        private void OnEquBtnDown()
        {
            WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.RealmEquip);
        }
        private void GotoSpiritWeaponWin()
        {
            WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.SpiritWeapon);
        }
        private void UpdateSecond()
@@ -145,15 +146,6 @@
            {
                return;
            }
            var equipPosition = EquipSet.ServerPlaceToClientPlace(index);
            if (equipPosition.x != 0)
            {
                return;
            }
            var equipType = (RoleEquipType)equipPosition.y;
            UI3DModelExhibition.Instance.ShowPlayer(m_Role, PlayerDatas.Instance.baseData.Job);
        }
@@ -230,55 +222,6 @@
            else
            {
                ServerTipDetails.DisplayNormalTip(Language.Get("KnapS129"));
            }
        }
        [System.Serializable]
        public class EquipBehaviours
        {
            public EquipPlaceCell wing;
            public EquipPlaceCell guard1;
            public EquipPlaceCell peerlessWeapon1;
            public EquipPlaceCell peerlessWeapon2;
            public EquipPlaceCell this[RoleEquipType type] {
                get {
                    switch (type)
                    {
                        case RoleEquipType.Wing:
                            return wing;
                        case RoleEquipType.Guard:
                            return guard1;
                        case RoleEquipType.PeerlessWeapon1:
                            return peerlessWeapon1;
                        case RoleEquipType.PeerlessWeapon2:
                            return peerlessWeapon2;
                        default:
                            return null;
                    }
                }
            }
            public bool Contain(RoleEquipType type)
            {
                return type == RoleEquipType.Wing
                    || type == RoleEquipType.Guard ||
                    type == RoleEquipType.PeerlessWeapon1 ||
                    type == RoleEquipType.PeerlessWeapon2;
            }
            public void Display(RoleEquipType type)
            {
                this[type].Display(type);
            }
            public void DisplayAll()
            {
                wing.Display(RoleEquipType.Wing);
                guard1.Display(RoleEquipType.Guard);
                peerlessWeapon1.Display(RoleEquipType.PeerlessWeapon1);
                peerlessWeapon2.Display(RoleEquipType.PeerlessWeapon2);
            }
        }
System/MainInterfacePanel/HoistingWin.cs
@@ -15,13 +15,16 @@
    public class HoistingWin : Window
    {
        [SerializeField] Transform Content;
        [SerializeField] ScrollRect m_Scroller;
        [SerializeField] Button FairyLandButton;//仙界秘境;
        [SerializeField] Button WorldBossButton;//世界Boss按钮
        [SerializeField] Button PrayerButton;//祈愿
        [SerializeField] Button BountyTaskButton;//赏金
        [SerializeField] Button m_DailyQuest;
        [SerializeField] Button HangUpButton;//挂机
        [SerializeField] Button FairyTaskButton;//仙盟任务
        [SerializeField] Vector2 m_Size;
        private int number = 0;
        DungeonModel m_DungeonModel;
        DungeonModel dungeonModel { get { return m_DungeonModel ?? (m_DungeonModel = ModelCenter.Instance.GetModel<DungeonModel>()); } }
@@ -54,13 +57,6 @@
                Close();
                WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.WelfareFunc2);
            });
            BountyTaskButton.AddListener(() =>
            {
                Close();
                dailyquestmodel.wannaLookDailyQuest = (int)DailyQuestType.BountyMission;
                WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.DailyQuestFunc1);
            });
            HangUpButton.AddListener(() =>
            {
                Close();
@@ -79,18 +75,23 @@
                Close();
                WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.UnionTask);
            });
            m_DailyQuest.AddListener(() =>
            {
                Close();
                WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.DailyQuestFunc1);
            });
        }
        protected override void OnPreOpen()
        {
            number = 0;
            Content.gameObject.SetActive(true);
          
            DungeonRecord dungeonRecord;
            dungeonModel.TryGetRecord(31080, out dungeonRecord);
            var times = dungeonRecord == null ? 0 : dungeonRecord.enterTimes;
            if (FuncOpen.Instance.IsFuncOpen(86) && dungeonModel.GetTotalTimes(31080) > times)//仙界秘境
            {
                number++;
                FairyLandButton.gameObject.SetActive(true);
            }
            else
@@ -99,6 +100,7 @@
            }
            if (FuncOpen.Instance.IsFuncOpen(21) && GeneralDefine.bossWearyValues[0] + Worldmodel.extraBossWearyValue > Worldmodel.wearyValue)
            {
                number++;
                WorldBossButton.gameObject.SetActive(true);
            }
            else
@@ -107,6 +109,7 @@
            }
            if (FuncOpen.Instance.IsFuncOpen(60) && ModelCenter.Instance.GetModel<PrayerModel>().expPrayerCnt < ModelCenter.Instance.GetModel<PrayerModel>().GetAllExpPrayCnt())//祈愿
            {
                number++;
                PrayerButton.gameObject.SetActive(true);
            }
            else
@@ -114,43 +117,19 @@
                PrayerButton.gameObject.SetActive(false);
            }
            if (FuncOpen.Instance.IsFuncOpen(34))//赏金
            if (FuncOpen.Instance.IsFuncOpen(78))
            {
                bool _bool = false;
                foreach (var value in taskmodel.SpecialTask.Values)
                {
                    if (value.Type == 13 && value.MissionState != 0 && value.MissionState != 3)
                    {
                        _bool = true;
                    }
                }
                foreach (var value in taskmodel.BountyDic.Values)
                {
                    if (value.MissionState != 0 && value.MissionState != 3)
                    {
                        _bool = true;
                    }
                }
                if (_bool)
                {
                    BountyTaskButton.gameObject.SetActive(true);
                }
                else
                {
                    BountyTaskButton.gameObject.SetActive(false);
                }
                number++;
                m_DailyQuest.gameObject.SetActive(true);
            }
            else
            {
                BountyTaskButton.gameObject.SetActive(false);
                m_DailyQuest.gameObject.SetActive(false);
            }
            if (FuncOpen.Instance.IsFuncOpen(40))//挂机
            {
                number++;
                HangUpButton.gameObject.SetActive(true);
            }
            else
@@ -159,25 +138,21 @@
            }
            if (FuncOpen.Instance.IsFuncOpen(16) && TaskAllocation.Instance.FairyAuAllNumber() < taskmodel.FairyAuTaskCount_Day)//仙盟任务
            {
                number++;
                FairyTaskButton.gameObject.SetActive(true);
            }
            else
            {
                FairyTaskButton.gameObject.SetActive(false);
            }
            for (int i = 0; i < Content.childCount; i++)
            {
                if (Content.GetChild(i).gameObject.activeSelf)
                {
                    number += 1;
                }
            m_Scroller.verticalNormalizedPosition = 1f;
            }
            if (number <= 0)
            {
                Content.gameObject.SetActive(false);
            }
            var size = number * 64f + Mathf.Max(number - 1, 0) * 6;
            size = Mathf.Clamp(size, m_Size.x, m_Size.y);
            var rect = m_Scroller.transform as RectTransform;
            rect.sizeDelta = rect.sizeDelta.SetY(size);
            m_Scroller.enabled = number > 4;
        }
        protected override void OnAfterOpen()
System/MainInterfacePanel/MainInterfaceWin.cs
@@ -63,7 +63,6 @@
        protected override void BindController()
        {
            m_MapSwitchingBehaviour.InitAwake();
            m_MainPositionTween.ShowTaskImmedidately(true, true);
            m_MailObj.SetActive(true);
            ListBossMapId.Clear();
            string strBoss = FuncConfigConfig.Get("TaskRetract").Numerical1;
@@ -138,16 +137,7 @@
            m_MainButtonMisc.OnActived();
            IsShowTaskPanel();//是否显示任务面板
            var inBossArea = PlayerDatas.Instance.hero != null && MapArea.IsInMapArea(PlayerDatas.Instance.hero.CurMapArea, MapArea.E_Type.Boss);//是否在Boss区域
            if (inBossArea && ListBossMapId.Contains(PlayerDatas.Instance.baseData.MapID))
            {
                m_MainPositionTween.ShowTaskImmedidately(false, true);
            }
            else
            {
                m_MainPositionTween.ShowTaskImmedidately(true, false);
            }
            m_MainPositionTween.ShowTaskImmedidately(true, false);
            if (MapUtility.IsDungeon(PlayerDatas.Instance.baseData.MapID))
            {
@@ -293,19 +283,6 @@
                {
                    DTCA202_tagMCAttackMode.Send_SwitchAttackMode((E_AttackMode)onMainModel.AreaState);
                }
            }
            if (_areaType == MapArea.E_Type.Boss && _enter)
            {
                if (ListBossMapId.Contains(PlayerDatas.Instance.baseData.MapID))
                {
                    m_MainPositionTween.ShowTask(false, true, false);
                }
            }
            if ((_areaType == MapArea.E_Type.Boss && !_enter) || (_areaType != MapArea.E_Type.Normal && (_areaType != MapArea.E_Type.Boss && _enter)))
            {
                m_MainPositionTween.ShowTask(true, false, false);
            }
            m_MainPositionTween.SwitchFunctions(new MainPositionTween.SwitchParam() { showDefault = true, immediately = false });
System/MainInterfacePanel/TaskFeedbackModel.cs
@@ -86,6 +86,16 @@
                            }
                        }
                        break;
                    case TaskFeedbackType.SkyTowerFightPoint:
                        {
                            if (!string.IsNullOrEmpty(config.reikiRoot))
                            {
                                var point = 0;
                                int.TryParse(config.reikiRoot, out point);
                                feedback.totalPoints = point;
                            }
                        }
                        break;
                    case TaskFeedbackType.ReikiPoint:
                        {
                            if (!string.IsNullOrEmpty(config.reikiRoot))
@@ -180,7 +190,15 @@
                                    if (TryGetSatisfyConditionFuncs(feedback.failFuns[index], out succFuncs))
                                    {
                                        taskFeedbackFuncs.Clear();
                                        taskFeedbackFuncs.AddRange(succFuncs);
                                        if (config.onlyOneFunc != null &&
                                            index < config.onlyOneFunc.Length && config.onlyOneFunc[index] == 1)
                                        {
                                            taskFeedbackFuncs.Add(succFuncs[0]);
                                        }
                                        else
                                        {
                                            taskFeedbackFuncs.AddRange(succFuncs);
                                        }
                                        TaskFeedbackFuncWin.funcTitle = funcTitle;
                                        WindowCenter.Instance.Open<TaskFeedbackFuncWin>();
                                    }
@@ -212,7 +230,15 @@
                                    if (TryGetSatisfyConditionFuncs(feedback.failFuns[index], out succFuncs))
                                    {
                                        taskFeedbackFuncs.Clear();
                                        taskFeedbackFuncs.AddRange(succFuncs);
                                        if (config.onlyOneFunc != null &&
                                            index < config.onlyOneFunc.Length && config.onlyOneFunc[index] == 1)
                                        {
                                            taskFeedbackFuncs.Add(succFuncs[0]);
                                        }
                                        else
                                        {
                                            taskFeedbackFuncs.AddRange(succFuncs);
                                        }
                                        TaskFeedbackFuncWin.funcTitle = funcTitle;
                                        WindowCenter.Instance.Open<TaskFeedbackFuncWin>();
                                    }
@@ -245,7 +271,15 @@
                                    if (TryGetSatisfyConditionFuncs(feedback.failFuns[index], out succFuncs))
                                    {
                                        taskFeedbackFuncs.Clear();
                                        taskFeedbackFuncs.AddRange(succFuncs);
                                        if (config.onlyOneFunc != null &&
                                            index < config.onlyOneFunc.Length && config.onlyOneFunc[index] == 1)
                                        {
                                            taskFeedbackFuncs.Add(succFuncs[0]);
                                        }
                                        else
                                        {
                                            taskFeedbackFuncs.AddRange(succFuncs);
                                        }
                                        TaskFeedbackFuncWin.funcTitle = funcTitle;
                                        WindowCenter.Instance.Open<TaskFeedbackFuncWin>();
                                    }
@@ -415,7 +449,15 @@
                        var skyTowerConfig = SkyTowerConfig.Get(config.condition);
                        if (skyTowerConfig != null)
                        {
                            return PlayerDatas.Instance.baseData.FightPoint >= skyTowerConfig.fightPower;
                            if (feedback.totalPoints > 0 && PlayerDatas.Instance.baseData.FightPoint < skyTowerConfig.fightPower)
                            {
                                condition = reikiRootModel.GetReikiRootTotalPointWithFree() >= feedback.totalPoints ? 0 : 1;
                                return false;
                            }
                            else
                            {
                                return PlayerDatas.Instance.baseData.FightPoint >= skyTowerConfig.fightPower;
                            }
                        }
                    }
                    break;
@@ -586,6 +628,7 @@
        public List<Item> items;
        public Dictionary<int, List<int[]>> reikiRoots;
        public List<int[]> failFuns;
        public int totalPoints;
        public int IndexOfSideTasks(int taskId)
        {
System/NewBieGuidance/FunctionalGuideBehaviour.cs
@@ -39,6 +39,7 @@
        string clickTargetName;
        Transform m_ClickTarget;
        RectTransform rectTransform { get { return this.transform as RectTransform; } }
        RectMask2D mask;
        public void BeginGuide(int _guide)
        {
@@ -135,6 +136,7 @@
            clickTargetName = string.Empty;
            m_ClickTarget = null;
            mask = null;
            m_ClickHintRoot.gameObject.SetActive(false);
            StopEffect();
            FindClickTarget();
@@ -146,6 +148,7 @@
            UnAttachTrigger();
            clickTargetName = string.Empty;
            m_ClickTarget = null;
            mask = null;
            FunctionalGuideCenter.Instance.FinishGuide(guide);
            guide = 0;
@@ -157,7 +160,7 @@
            UnAttachTrigger();
            clickTargetName = string.Empty;
            m_ClickTarget = null;
            mask = null;
            var config = GuideConfig.Get(guide);
            if (config != null)
            {
@@ -179,17 +182,24 @@
                {
                    UnAttachTrigger();
                    m_ClickTarget = null;
                    mask = null;
                    protectTimer = 0f;
                }
            }
            FindClickTarget();
            if (mask != null)
            {
                this.rectTransform.position = mask.rectTransform.position;
            }
            if (guide == 0 || NewBieCenter.Instance.IsGuideCompleted(guide))
            {
                UnAttachTrigger();
                clickTargetName = string.Empty;
                m_ClickTarget = null;
                mask = null;
                guide = 0;
                FunctionalGuideBehaviourPool.Recycle(this.gameObject);
            }
@@ -263,7 +273,7 @@
                    trigger.onClick.AddListener(ClickToCompleteGuide);
                }
                var mask = m_ClickTarget.GetComponentInParent<RectMask2D>();
                mask = m_ClickTarget.GetComponentInParent<RectMask2D>();
                if (mask != null)
                {
                    this.rectTransform.sizeDelta = mask.rectTransform.sizeDelta;
System/RoleParticulars/OtherPlayerEquipLevelBehaviour.cs
@@ -27,6 +27,7 @@
            this.m_Title.text = RealmConfig.Get(realm).Name;
            model.selectedLevelChangeEvent += OnSelected;
            DisplayBackGround(model.selectedLevel == this.level);
            m_Select.SetListener(Select);
        }
System/RoleParticulars/OtherPlayerEquipModel.cs
@@ -34,6 +34,7 @@
        public int playerRealm { get; private set; }
        public int playerVipLevel { get; private set; }
        public int wing { get; private set; }
        public int reikiRootEffectId { get; private set; }
        public event Action selectedLevelChangeEvent;
        Dictionary<int, EquipDetailsGroup> equipDetailsGroups = new Dictionary<int, EquipDetailsGroup>();
@@ -55,9 +56,9 @@
            this.playerRealm = info.realm;
            this.playerVipLevel = info.vipLevel;
            this.wing = info.wing;
            this.reikiRootEffectId = info.reikiRootEffectId;
            SelectLevel(1);
            WindowCenter.Instance.Open<OtherPlayerEquipWin>();
        }
        public void SelectLevel(int level)
@@ -65,6 +66,10 @@
            if (equipDetailsGroups.ContainsKey(level))
            {
                selectedLevel = level;
                if (!WindowCenter.Instance.IsOpen<OtherPlayerEquipWin>())
                {
                    WindowCenter.Instance.Open<OtherPlayerEquipWin>();
                }
            }
            else
            {
@@ -75,6 +80,7 @@
                        {
                            var sendInfo = new CC002_tagCGViewCrossPlayerInfo();
                            sendInfo.PlayerID = (uint)playerId;
                            sendInfo.EquipClassLV= (byte)level;
                            GameNetSystem.Instance.SendInfo(sendInfo);
                        }
                        break;
@@ -103,6 +109,11 @@
        {
            equipDetailsGroups[info.EquipClassLV] = new EquipDetailsGroup(playerJob, info.EquipClassLV, info.ItemData);
            selectedLevel = info.EquipClassLV;
            if (!WindowCenter.Instance.IsOpen<OtherPlayerEquipWin>())
            {
                WindowCenter.Instance.Open<OtherPlayerEquipWin>();
            }
        }
        public Dictionary<int, EquipBrief> GetEquipBriefs()
@@ -436,6 +447,7 @@
            public int realm;
            public int vipLevel;
            public int wing;
            public int reikiRootEffectId;
        }
        public struct SuitInfo
System/RoleParticulars/OtherPlayerEquipWin.cs
@@ -132,6 +132,7 @@
                weaponId = appearance.weapon,
                secondaryId = appearance.secondary,
                keepRotation = resetRoleRotation,
                reikiRootEffectId = model.reikiRootEffectId,
            });
            resetRoleRotation = false;
System/RoleParticulars/RoleParticularModel.cs
@@ -644,6 +644,7 @@
                case 5:
                    if (!WindowCenter.Instance.IsOpen<RoleParticularsWin>())
                    {
                        RoleParticularsWin.viewType = viewPlayerType;
                        WindowCenter.Instance.Open<RoleParticularsWin>();
                    }
                    break;
System/RoleParticulars/RoleParticularsWin.cs
@@ -26,6 +26,8 @@
        [SerializeField] Text m_FightPower;
        [SerializeField] RawImage m_RawPlayer;
        public static int viewType = -1;
        RoleParticularModel model { get { return ModelCenter.Instance.GetModel<RoleParticularModel>(); } }
        FriendsModel friendsModel { get { return ModelCenter.Instance.GetModel<FriendsModel>(); } }
        OtherPlayerEquipModel otherPlayerEquipModel { get { return ModelCenter.Instance.GetModel<OtherPlayerEquipModel>(); } }
@@ -123,12 +125,13 @@
            otherPlayerEquipModel.ViewPlayerEquip(new OtherPlayerEquipModel.PlayerBriefInfo()
            {
                viewType = model.viewPlayerType,
                viewType = viewType,
                id = model.viewPlayer,
                realm = viewPlayerData.rolePropData.RealmLV,
                job = viewPlayerData.rolePropData.Job,
                vipLevel = viewPlayerData.rolePropData.VIPLV,
                wing = wing,
                reikiRootEffectId = (int)viewPlayerData.rolePropData.EquipShowSwitch / 1000 % 1000,
            });
        }
System/Treasure/HumanInductionTaskCell.cs
@@ -11,15 +11,20 @@
        [SerializeField] Transform m_Container;
        [SerializeField] Button m_Induction;
        int taskId = 0;
        TreasureModel model { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
        TaskModel taskModel { get { return ModelCenter.Instance.GetModel<TaskModel>(); } }
        private void Awake()
        {
            m_Induction.SetListener(OnInduction);
        }
        public void Display()
        public void Display(int taskId)
        {
            this.taskId = taskId;
            m_Container.gameObject.SetActive(true);
            model.onInductionTaskComplete -= OnInductionTaskComplete;
            model.onInductionTaskComplete += OnInductionTaskComplete;
@@ -38,6 +43,12 @@
        private void OnInduction()
        {
            if (taskModel.GetTaskStatus(taskId) == TaskModel.TaskStatus.CardLevel)
            {
                SysNotifyMgr.Instance.ShowTip("TaskInductionError_2");
                return;
            }
            var pak = new CA512_tagCMThinkMagicWeapon();
            pak.MWID = (uint)model.selectedTreasure;
            GameNetSystem.Instance.SendInfo(pak);
System/Treasure/HumanTreasureTaskCell.cs
@@ -20,13 +20,11 @@
        [SerializeField] VerticalLayoutGroup m_ContainerTasks;
        [SerializeField] List<Text> m_TaskNames;
        public Text taskName
        {
        public Text taskName {
            get { return m_TaskNames[0]; }
        }
        public VerticalLayoutGroup taskLayout
        {
        public VerticalLayoutGroup taskLayout {
            get { return m_ContainerTasks; }
        }
@@ -56,6 +54,7 @@
            }
            var tasks = clues[clue];
            var taskConfig = TaskListConfig.Get(tasks[0]);
            this.gameObject.name = StringUtility.Contact("HumanTreasureTaskCell_", taskConfig.TaskID);
            m_ClueName.text = taskConfig.clueName;
            var clueState = model.GetClueState(model.selectedTreasure, clue);
System/Treasure/HumanTreasureWin.cs
@@ -355,7 +355,7 @@
            else if (type == ScrollerDataType.Normal)
            {
                var taskCell = cell as HumanInductionTaskCell;
                taskCell.Display();
                taskCell.Display(cell.index);
            }
        }
System/WindowJump/WindowJumpMgr.cs
@@ -764,6 +764,9 @@
            case JumpUIType.ExchangeActiveToken:
                SetJumpLogic<ExchangeActiveTokenWin>();
                break;
            case JumpUIType.SpiritWeapon:
                SetJumpLogic("SpiritEquipWin", 0 ,false);
                break;
            default:
                DebugEx.Log("未添加此跳转界面:" + jumpType);
                IsJumpState = false;
@@ -1178,43 +1181,47 @@
        SetJumpLogic<MultipleDifficultyDungeonWin>(0);
    }
    private void SetJumpLogic<T>(int _functionalOrder = 0, bool _forceSync = true) where T : Window
    private void SetJumpLogic<T>(int functionOrder = 0, bool sync = true) where T : Window
    {
        string curOpenWin = typeof(T).Name;
        if (WindowCenter.Instance.IsOpen(curOpenWin))
        SetJumpLogic(typeof(T).Name, functionOrder, sync);
    }
    private void SetJumpLogic(string windowName, int functionOrder, bool sync)
    {
        if (WindowCenter.Instance.IsOpen(windowName))
        {
            Window window = WindowCenter.Instance.Get(curOpenWin);
            window.functionOrder = _functionalOrder;
            Window window = WindowCenter.Instance.Get(windowName);
            window.functionOrder = functionOrder;
            window.ChildActive();
            return;
        }
        GetPreAllOpenWin();
        jumpWinNameDict.Add(jumpPhase, curOpenWin);
        jumpWinNameDict.Add(jumpPhase, windowName);
        jumpType = _tagWinSearchModel.Type;
        switch (_tagWinSearchModel.Type)
        {
            case 1:
                WindowCenter.Instance.CloseAll(WindowCenter.CloseAllIgnoreType.SystemAndCustom);
                WindowCenter.Instance.Open<T>(_forceSync, _functionalOrder);
                WindowCenter.Instance.Open(windowName, sync, functionOrder);
                WindowCenter.Instance.jumpWindowCloseEvent += CloseWindow;
                break;
            case 2:
                WindowCenter.Instance.CloseAll(WindowCenter.CloseAllIgnoreType.SystemAndCustom);
                WindowCenter.Instance.Open<T>(_forceSync, _functionalOrder);
                WindowCenter.Instance.Open(windowName, sync, functionOrder);
                WindowCenter.Instance.jumpWindowCloseEvent += CloseWindow;
                break;
            case 3:
                WindowCenter.Instance.CloseAll(WindowCenter.CloseAllIgnoreType.SystemAndCustom);
                WindowCenter.Instance.Open<T>(_forceSync, _functionalOrder);
                WindowCenter.Instance.Open(windowName, sync, functionOrder);
                WindowCenter.Instance.jumpWindowCloseEvent += CloseWindow;
                break;
            case 4:
                WindowCenter.Instance.CloseAll(WindowCenter.CloseAllIgnoreType.SystemAndCustom);
                WindowCenter.Instance.Open<T>(_forceSync, _functionalOrder);
                WindowCenter.Instance.Open(windowName, sync, functionOrder);
                WindowCenter.Instance.jumpWindowCloseEvent += CloseWindow;
                break;
            case 5:
                WindowCenter.Instance.Open<T>(_forceSync, _functionalOrder);
                WindowCenter.Instance.Open(windowName, sync, functionOrder);
                WindowCenter.Instance.jumpWindowCloseEvent += CloseWindow;
                break;
            default:
@@ -1741,6 +1748,7 @@
    CrossServerBoss = 335,//蓬莱仙境
    Alchemy10 = 336,
    Alchemy11 = 337,
    SpiritWeapon = 338,//魂器界面
    DhszTs = 1001,//定海神针功法提升界面
    HyqTs = 1002,//皓月枪功法提升界面
System/WorldMap/WorldMapWin.cs
@@ -222,7 +222,10 @@
                    yield return null;
                }
                EffectMgr.Instance.RecyleUIEffect(unLockEffectId, effect.gameObject);
                if (effect.gameObject != null)
                {
                    EffectMgr.Instance.RecyleUIEffect(unLockEffectId, effect.gameObject);
                }
            }
            EffectMgr.Instance.PlayUIEffect(3053, 3500, areaBehaviour.transform, false);