public static bool AddMartialModifier_Path(Character __instance, int skillType, string martialSkillID)
        {
            // 如果MOD状态是关闭的话
            if (!FormationMod.enable)
            {
                // 执行原本的方法
                return(true);
            }
            //FormationMod.logger.Log($"AddMartialModifier:{martialSkillID}");
            MartialSkillInfo skillInfoByID = SingletonMonoBehaviour <MartialSkillModel> .Instance.GetSkillInfoByID(martialSkillID);

            __instance.AddMartialModifier(skillType, skillInfoByID);

            // 返回false表示不执行原方法
            return(false);
        }
Exemplo n.º 2
0
        public static bool LoadAllSkillInfo_Path(MartialSkillModel __instance)
        {
            // 如果MOD状态是关闭的话
            if (!FormationMod.enable)
            {
                // 执行原本的方法
                return(true);
            }
            List <string> list = ListPool <string> .Get();

            Singleton <DataManager> .Instance.GetAllDirName(ref list, "Martial/MartialInfo/", DataType.Game, -1);

            for (int i = 0; i < list.Count; i++)
            {
                string           key = list[i];
                MartialSkillInfo martialSkillInfo = Traverse.Create(__instance).Method("LoadSkillInfoByID", key).GetValue <MartialSkillInfo>();
                //FormationMod.logger.Log(JsonUtility.ToJson(martialSkillInfo));
            }
            ListPool <string> .Recycle(list);

            Dictionary <string, MartialSkillInfo> mMartialInfoMap = Traverse.Create(__instance).Field("mMartialInfoMap").GetValue <Dictionary <string, MartialSkillInfo> >();
            // 自定义功法,从八卦心法clone出来
            MartialSkillInfo oldMartialSkillInfo = __instance.GetSkillInfoByID("baguaxinfa");

            for (int i = 0; i < FormationFileLoad.Size; i++)
            {
                FormationInfo formationInfo = FormationFileLoad.fiList[i];
                for (int i2 = 0; i2 < formationInfo.Positions.Count; i2++)
                {
                    MartialSkillInfo newMartialSkillInfo             = __instance.CloneMartial(oldMartialSkillInfo, formationInfo.Name + i2);
                    Dictionary <int, MartialMovesInfo> mMovesInfoMap = newMartialSkillInfo.GetAllMovesInfoMap();
                    // 将buff的id改成自定义的buff
                    mMovesInfoMap[2].UpdateModifierID("martial-baguaxinfa", "martial-" + formationInfo.Name + i2);
                    //FormationMod.logger.Log("martial-" + formationInfo.Name + i2);
                }
                //MartialSkillInfo newMartialSkillInfo = __instance.CloneMartial(oldMartialSkillInfo, formationInfo.Name);
                //Dictionary<int, MartialMovesInfo> mMovesInfoMap = newMartialSkillInfo.GetAllMovesInfoMap();
                //// 将buff的id改成自定义的buff
                //mMovesInfoMap[2].UpdateModifierID("martial-baguaxinfa", "martial-" + formationInfo.Name);
            }

            // 返回false表示不执行原方法
            return(false);
        }
        public static bool AddMartialModifier_Path(Character __instance, int skillType, MartialSkillInfo martialSkillInfo)
        {
            // 如果MOD状态是关闭的话
            if (!FormationMod.enable)
            {
                // 执行原本的方法
                return(true);
            }
            MartialSkillTypeInfo skillTypeInfo = SingletonMonoBehaviour <MartialSkillModel> .Instance.GetSkillTypeInfo(skillType);

            bool flag = skillTypeInfo.IsAttackType && __instance.GetAtkMartialSkillType() != skillType;

            //FormationMod.logger.Log($"cha:{__instance.GetName()}martialSkillInfo.ID:{martialSkillInfo.ID} flag:{flag} ");
            if (!flag)
            {
                bool flag2 = martialSkillInfo.PassiveMovesListMap != null;
                //FormationMod.logger.Log($"cha:{__instance.GetName()}martialSkillInfo.ID:{martialSkillInfo.ID} flag2:{flag2} ");
                if (flag2)
                {
                    List <int> list;
                    bool       flag3 = martialSkillInfo.PassiveMovesListMap.TryGetValue(skillType, out list);
                    //FormationMod.logger.Log($"cha:{__instance.GetName()}martialSkillInfo.ID:{martialSkillInfo.ID} flag3:{flag3} ");
                    if (flag3)
                    {
                        foreach (int movesID in list)
                        {
                            MartialMovesInfo movesInfo = martialSkillInfo.GetMovesInfo(movesID);
                            bool             flag4     = movesInfo.PerformInfo.PerformModifiers.Count > 0;
                            //FormationMod.logger.Log($"cha:{__instance.GetName()}ModifierID:{movesInfo.PerformInfo.PerformModifiers[0].ModifierID} flag4:{flag4} ");
                            if (flag4)
                            {
                                __instance.AddModifier(movesInfo.PerformInfo.PerformModifiers[0].ModifierID, -1);
                            }
                        }
                    }
                }
            }

            // 返回false表示不执行原方法
            return(false);
        }