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); }
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); }