private static void Postfix(ActorMenu __instance) { #if DEBUG Main.logger.Log("TaiwuEditor.ActorMenu_Awake_Patch patched"); #endif __instance.actorMenu.SetActive(false); }
private static void Postfix(ActorMenu __instance) { if (!Main.enabled) { return; } try { CharId newTaiwuId = DateFile.instance.MianActorID(); Succession succession; if (taiwuOpinionsOfPredecessor.TryGetValue(newTaiwuId, out succession)) { var predecessor = DateFile.instance.actorsDate[succession.predecessor]; // 恢复前后两代太吾的关系值 predecessor[CharDataIndex.OPINION] = succession.opinion.ToString(); // 标记前代为死亡太吾 DeadTaiwuManager.instance.setAsDeadTaiwu(succession.predecessor); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
public static void Postfix(ActorMenu __instance) { #if DEBUG Main.Logger.Log("GongFaBook.ActorMenu_Awake_Patch patched"); #endif __instance.actorMenu.SetActive(false); }
public static bool Prefix(int typ, int injuryId, int injuryPower) { if (!Main.enabled) { return(true); } Main.Logger.Log(typ + " 设置伤口图标 " + injuryId + " : " + injuryPower); ActorMenu _this = ActorMenu.instance; GameObject gameObject = UnityEngine.Object.Instantiate(_this.injuryBack, Vector3.zero, Quaternion.identity); gameObject.name = "injury," + injuryId; gameObject.transform.Find("InjuryIcon").GetComponent <Image>().sprite = GetSprites.instance.injuryIcon[DateFile.instance.ParseInt(DateFile.instance.injuryDate[injuryId][98])]; gameObject.transform.SetParent(_this.actorInjuryHolder[Mathf.Min(typ, 7)], worldPositionStays: false); int injuryTyp = (DateFile.instance.ParseInt(DateFile.instance.injuryDate[injuryId][1]) > 0) ? 1 : 2; string value = Mathf.Max(1, DateFile.instance.ParseInt(DateFile.instance.injuryDate[injuryId][1]) * injuryPower / 100).ToString(); gameObject.transform.Find("HpSpText").GetComponent <Text>().text = injuryTyp == 1 ? DateFile.instance.SetColoer(20010, value) : DateFile.instance.SetColoer(20007, value); Button btn = gameObject.GetComponent <Button>(); if (!btn) { btn = gameObject.AddComponent <Button>(); } var onclick = btn.onClick; onclick.RemoveAllListeners(); onclick.AddListener(delegate { OnClickInjury(injuryId, injuryTyp); }); return(false); }
private void FetchFieldValue(DateFile dateFileInstance, ActorMenu actorMenuInstance, Dictionary <int, string> actorDate, int resid) { switch (resid) { case -1: fieldValues[resid] = dateFileInstance.gongFaExperienceP.ToString(); break; case 12: if (actorMenuInstance != null) { fieldValues[resid] = actorMenuInstance.Health(lastActorId).ToString(); } else { fieldValues.Remove(resid); } break; default: if (!actorDate.TryGetValue(resid, out string text)) { if (!dateFileInstance.presetActorDate.TryGetValue(lastActorId, out Dictionary <int, string> presetActorData) || !presetActorData.TryGetValue(resid, out text)) { text = "0"; } } fieldValues[resid] = text; break; } }
private static void Postfix(ActorMenu __instance) { if (!Main.enabled) { return; } try { CharId newTaiwuId = DateFile.instance.MianActorID(); Succession succession; if (taiwuOpinionsOfPredecessor.TryGetValue(newTaiwuId, out succession)) { var predecessor = DateFile.instance.actorsDate[succession.predecessor]; // 恢复前后两代太吾的关系值 predecessor[CharDataIndex.OPINION] = succession.opinion.ToString(); // 标记前代为死亡太吾 if (Main.settings.lockFaceTaiwu) { predecessor[CharDataIndex.MOOD] = MagicNum.DEAD_TAIWU_MOOD.ToString(); } } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
/// <summary> /// 获得人物身上的疗伤药 优先寻找能百分百发挥药效的疗伤药 /// </summary> /// <param name="actorId">人物ID</param> /// <param name="typ">1是外伤 2是内伤</param> /// <param name="injuryId">伤口id</param> /// <param name="useActorId">提供疗伤药的人物ID</param> /// <returns>疗伤药的物品id</returns> public static int GetActorHealingMedicine(int actorId, int typ, int injuryId, int useActorId) { Main.Logger.Log(actorId + " 寻找疗伤药 " + typ); ActorMenu _this = ActorMenu.instance; List <int> itemSort = DateFile.instance.GetItemSort(new List <int>(_this.GetActorItems(useActorId).Keys)); int result = -1; foreach (int itemId in itemSort) { int cureValue = typ == 1 ? (Mathf.Abs(DateFile.instance.ParseInt(DateFile.instance.GetItemDate(itemId, 11)))) : (Mathf.Abs(DateFile.instance.ParseInt(DateFile.instance.GetItemDate(itemId, 12)))); Main.Logger.Log(itemId + " 物品疗伤效果 " + cureValue); if (cureValue > 0) //判断是否要的疗伤药 { if ((cureValue * 3 >= DateFile.instance.actorInjuryDate[actorId][injuryId])) // 判断是否能百分百发挥疗伤药药效 { Main.Logger.Log("获得能百分百发挥药效的疗伤药"); return(itemId); } else if (result == -1) { Main.Logger.Log("记录疗伤药"); result = itemId; } } } return(result); }
private static void Postfix(ActorMenu __instance) { if (!Main.on) { return; } Utils.ToggleSwitch(__instance.actorTeamToggle.group); }
static void Prefix(ActorMenu __instance, int key) { if (!Main.enabled || Main.settings.showAllMassage) { return; } if (!DateFile.instance.actorLifeMassage.ContainsKey(key)) { return; } Changer changer = new Changer(); int backupId = changer.getBackupId(); //Main.Logger.Log("Pre-----" + changer.getActorName(key)); if (backupId == key) { return; } if (backupId != 0) { //Main.Logger.Log("reset-----" + changer.getActorName(key) + "Count:" + DateFile.instance.actorLifeMassage[key].Count); DateFile.instance.actorLifeMassage[backupId] = changer.getBackupMassage(backupId); changer.resetBackup(); } List <int[]> newLifeMassage = new List <int[]> { }; changer.backupMassage(key); //Main.Logger.Log("setp1" + changer.getActorName(key)); List <int> tlist = changer.getTypeList(); int count = DateFile.instance.actorLifeMassage[key].Count; //Main.Logger.Log("setp2:MaxCount:" + count); //Main.Logger.Log("setp3:showCount:" + tlist.Count); for (int i = 0; i < count; i++) { //Main.Logger.Log("setp4:" + i); int[] array = DateFile.instance.actorLifeMassage[key][i]; int key2 = array[0];//根据经历类型ID进行筛选 for (int j = 0; j < tlist.Count; j++) { if (tlist[j] == key2) { newLifeMassage.Add(DateFile.instance.actorLifeMassage[key][i]); //Main.Logger.Log("setp6:" + tlist[j]); break; } } } DateFile.instance.actorLifeMassage[key] = newLifeMassage; }
static void Postfix(ActorMenu __instance, int key, int typ) { if (!Main.enabled || !Main.settings.showInEquuipBag) { return; } Changer changer = new Changer(); //changer.changeObjectsName(__instance.equipHolders[typ], "equipHpText"); }
private static void Postfix(ActorMenu __instance) { if (!Main.on) { return; } Utils.ButtonConfirm(__instance.equipGongFaViewButton.GetComponent <Button>()); Utils.ButtonHK(__instance.removeGongFaViewButton.GetComponent <Button>(), HK_TYPE.REMOVE_ITEM); }
// 获取解毒药物 public static int GetActorPoisonMedicine(int actorId, int useActorId, int typ) { // Main.Logger.Log("获取解毒药物"+ actorId+" "+ useActorId+" "+ typ); ActorMenu _this = ActorMenu.instance; List <int> itemSort = DateFile.instance.GetItemSort(new List <int>(_this.GetActorItems(useActorId).Keys)); int flag = -1; int result = -1; // Main.Logger.Log("物品数量 " + itemSort.Count); foreach (int itemId in itemSort) { for (int i = 0; i < 6; i++) { // Main.Logger.Log(DateFile.instance.GetItemDate(itemId, 0)); if (typ == -1 || typ == i) { int value = DateFile.instance.ParseInt(DateFile.instance.GetItemDate(itemId, 61 + i)); if (value < 0) { int num = DateFile.instance.ParseInt(DateFile.instance.GetActorDate(actorId, 51 + i, addValue: false)); if (!(value < 0 && num > Mathf.Abs(value) * 3))// 判断是否能百分百发挥疗伤药药效 { if (result == -1) { result = itemId; } else if (DateFile.instance.ParseInt(DateFile.instance.GetItemDate(itemId, 8)) < DateFile.instance.ParseInt(DateFile.instance.GetItemDate(result, 8))) { result = itemId; } } else if (result == -1) { if (flag == -1) { flag = itemId; } else if (DateFile.instance.ParseInt(DateFile.instance.GetItemDate(itemId, 8)) < DateFile.instance.ParseInt(DateFile.instance.GetItemDate(flag, 8))) { flag = itemId; } } } } } } // Main.Logger.Log("获取解毒药 "+ result); if (result == -1) { return(flag); } else { return(result); } }
public static bool Prefix(int key, int typ) { if (!Main.enabled) { return(true); } Key = key; Typ = typ; // Main.Logger.Log((new System.Diagnostics.StackTrace(true)).ToString()); // Main.Logger.Log("UpdateItems 更新物品 key :" + key + " typ = " + typ); ActorMenu _this = ActorMenu.instance; _this.itemTyp = typ; _this.itemActorFace.SetActorFace(key); _this.itemActorAge.text = DateFile.instance.ShowActorAge(key); //int actorFavor = DateFile.instance.GetActorFavor(false, DateFile.instance.MianActorID(), key, getLevel: false, realFavor: true); //Transform transform = _this.itemsHolder[typ].transform; int num = 0; //int childCount = transform.childCount; List <int> itemSort = DateFile.instance.GetItemSort(new List <int>(_this.GetActorItems(key).Keys)); List <int> result = new List <int>(); // Main.Logger.Log("开始循环"); for (int i = 0; i < itemSort.Count; i++) { int num2 = itemSort[i]; if (num2 != StorySystem.instance.useFoodId && (typ == 0 || typ == DateFile.instance.ParseInt(DateFile.instance.GetItemDate(num2, 4)))) { num++; result.Add(num2); } } if (_this.isEnemy) { _this.actorItemSize.text = DateFile.instance.SetColoer(20003, "- / -"); } else { int maxItemSize = _this.GetMaxItemSize(key); int useItemSize = _this.GetUseItemSize(key); _this.actorItemSize.text = string.Format("{0}{3}{1} / {2}</color>", _this.Color8(useItemSize, maxItemSize), ((float)useItemSize / 100f).ToString("f1"), ((float)maxItemSize / 100f).ToString("f1"), DateFile.instance.massageDate[807][2].Split('|')[0]); } // Main.Logger.Log("设置数据"); items_data = result.ToArray(); m_itemPackage[typ].data = items_data; return(false); }
private static void Postfix(ActorMenu __instance, ref Dictionary <int, int> __result, int key, int typ) { if (!Main.enabled) { return; } __result = (from o in __result orderby int.Parse(DateFile.instance.GetItemDate(o.Key, Main.settings.getmaincate(), true)) * 10000 + int.Parse(DateFile.instance.GetItemDate(o.Key, Main.settings.getsubcate(), true)) select o).ToDictionary((KeyValuePair <int, int> o) => o.Key, (KeyValuePair <int, int> p) => p.Value); return; }
// 获取内息药物 public static int GetActorMianQiMedicine(int actorId, int useActorId, int actorMianQi) { ActorMenu _this = ActorMenu.instance; List <int> itemSort = DateFile.instance.GetItemSort(new List <int>(_this.GetActorItems(useActorId).Keys)); int flag = -1; int result = -1; // Main.Logger.Log("物品数量 " + itemSort.Count); foreach (int itemId in itemSort) { int cureValue = Mathf.Abs(DateFile.instance.ParseInt(DateFile.instance.GetItemDate(itemId, 39))); // Main.Logger.Log(DateFile.instance.GetItemDate(itemId, 0) +" : "+cureValue); if (cureValue > 0) //判断是否内息药 { if (actorMianQi > cureValue) // 判断是否能百分百发挥疗伤药药效 { // Main.Logger.Log("获得能百分百发挥药效的疗伤药"); if (result == -1) { result = itemId; } else if (DateFile.instance.ParseInt(DateFile.instance.GetItemDate(itemId, 8)) < DateFile.instance.ParseInt(DateFile.instance.GetItemDate(result, 8))) { result = itemId; } } else if (result == -1) { if (flag == -1) { flag = itemId; } else if (DateFile.instance.ParseInt(DateFile.instance.GetItemDate(itemId, 8)) < DateFile.instance.ParseInt(DateFile.instance.GetItemDate(flag, 8))) { flag = itemId; } } } } // Main.Logger.Log("获取内息药 "+ result); if (result == -1) { return(flag); } else { return(result); } }
static bool Prefix(ActorMenu __instance, int key) { if (!Main.enabled || Main.settings.showAllMassage) { return(true); } if (!DateFile.instance.actorLifeMassage.ContainsKey(key)) { return(true); } int backupId = Changer.GetBackupId(); //Main.Logger.Log("Pre-----" + changer.getActorName(key)); if (backupId == key) { return(true); } if (backupId != 0) { //Main.Logger.Log("reset-----" + changer.getActorName(key) + "Count:" + DateFile.instance.actorLifeMassage[key].Count); DateFile.instance.actorLifeMassage[backupId] = Changer.GetBackupMassage(); Changer.ResetBackup(); } List <int[]> newLifeMassage = new List <int[]> { }; Changer.BackupMassage(key); //Main.Logger.Log("setp1" + changer.getActorName(key)); int count = DateFile.instance.actorLifeMassage[key].Count; //Main.Logger.Log("setp2:MaxCount:" + count); //Main.Logger.Log("setp3:showCount:" + tlist.Count); for (int i = 0; i < count; i++) { //Main.Logger.Log("setp4:" + i); int messageTyp = DateFile.instance.actorLifeMassage[key][i][0]; //Main.Logger.Log($"messageTyp: {messageTyp}"); //根据经历类型ID进行筛选 if (Changer.MessageTypToShow(messageTyp)) { newLifeMassage.Add(DateFile.instance.actorLifeMassage[key][i]); //Main.Logger.Log("setp6:" + tlist[j]); } } DateFile.instance.actorLifeMassage[key] = newLifeMassage; return(true); }
public static int GetActorHealthMedicine(int actorId, int useActorId, int lack) { ActorMenu _this = ActorMenu.instance; List <int> itemSort = DateFile.instance.GetItemSort(new List <int>(_this.GetActorItems(useActorId).Keys)); int flag = -1; int result = -1; // Main.Logger.Log("物品数量 " + itemSort.Count); foreach (int itemId in itemSort) { int cureValue = DateFile.instance.ParseInt(DateFile.instance.GetItemDate(itemId, 13)); // Main.Logger.Log(DateFile.instance.GetItemDate(itemId, 0) +" : "+cureValue); if (cureValue > 0) //判断是否要的寿命药 { if (cureValue * 3 >= lack) // 判断是否能百分百发挥疗伤药药效 { if (result == -1) { result = itemId; } else if (DateFile.instance.ParseInt(DateFile.instance.GetItemDate(itemId, 8)) < DateFile.instance.ParseInt(DateFile.instance.GetItemDate(result, 8))) { result = itemId; } } else { if (flag == -1) { flag = itemId; } else if (DateFile.instance.ParseInt(DateFile.instance.GetItemDate(itemId, 8)) < DateFile.instance.ParseInt(DateFile.instance.GetItemDate(flag, 8))) { flag = itemId; } } } } // Main.Logger.Log("获取寿命药 "+ result); if (result == -1) { return(flag); } else { return(result); } }
static void Postfix(ActorMenu __instance, int key) { if (!Main.enabled || Main.settings.showAllMassage) { return; } if (!DateFile.instance.actorLifeMassage.ContainsKey(key)) { return; } if (Changer.GetBackupId() == key) { //Main.Logger.Log("Exit-----" + "ID:" + key + "Count:" + changer.getBackupMassage(key).Count); DateFile.instance.actorLifeMassage[key] = Changer.GetBackupMassage(); //Main.Logger.Log("ExitReset-----" + changer.getActorName(key) + "Count:" + DateFile.instance.actorLifeMassage[key].Count); Changer.ResetBackup(); } }
static void Postfix(ActorMenu __instance, int key) { if (!Main.enabled) { return; } if (!DateFile.instance.actorLifeMassage.ContainsKey(key)) { return; } Changer changer = new Changer(); if (changer.getBackupId() == key) { //Main.Logger.Log("Exit-----" + "ID:" + key + "Count:" + changer.getBackupMassage(key).Count); DateFile.instance.actorLifeMassage[key] = changer.getBackupMassage(key); //Main.Logger.Log("ExitReset-----" + changer.getActorName(key) + "Count:" + DateFile.instance.actorLifeMassage[key].Count); changer.resetBackup(); } }
/// <summary> /// 将游戏数值同步到所有属性修改框里 /// </summary> /// <param name="dateFileInstance">DateFile实例</param> /// <param name="actorId">需要同步数据的角色Id</param> public void UpdateAllFields(DateFile dateFileInstance, ActorMenu actorMenuInstance, int actorId) { lastDateFile = dateFileInstance; lastActorMenu = actorMenuInstance; if (lastDateFile == null || lastDateFile.actorsDate == null || !lastDateFile.actorsDate.TryGetValue(actorId, out lastActorDate)) { foreach (var resid in activeFieldsResid) { fieldValues.Remove(resid); } lastActorId = -1; } else if (actorId != lastActorId) { lastActorId = actorId; foreach (var resid in activeFieldsResid) { FetchFieldValue(lastDateFile, lastActorMenu, lastActorDate, resid); } } }
public static int GetActorHealthMedicine(int actorId, int useActorId, int lack) { ActorMenu _this = ActorMenu.instance; List <int> itemSort = DateFile.instance.GetItemSort(new List <int>(_this.GetActorItems(useActorId).Keys)); int result = -1; foreach (int itemId in itemSort) { int cureValue = DateFile.instance.ParseInt(DateFile.instance.GetItemDate(itemId, 13)); if (cureValue > 0) //判断是否要的寿命药 { if (cureValue * 3 >= lack) // 判断是否能百分百发挥疗伤药药效 { return(itemId); } else if (result == -1) { result = itemId; } } } return(result); }
private static void Prefix(ActorMenu __instance) { if (!Main.enabled) { return; } try { CharId oldTaiwuId = DateFile.instance.MianActorID(); CharId newTaiwuId = (int)typeof(ActorMenu).GetField("chooseNewActor", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(__instance); // 保存前后两代太吾的关系值 var succession = new Succession(); succession.predecessor = oldTaiwuId; succession.opinion = DateFile.instance.GetActorFavor(false, oldTaiwuId, newTaiwuId, false, false); taiwuOpinionsOfPredecessor.Add(newTaiwuId, succession); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
private void FetchFieldValueHelper(DateFile dateFileInstance, ActorMenu actorMenuInstance, Dictionary <int, string> actorDate, int resid) { switch (resid) { case -1: fieldValuesCache[resid] = dateFileInstance.gongFaExperienceP.ToString(); break; case 12: // 获取健康数据 fieldValuesCache[resid] = actorMenuInstance.Health(currentActorId).ToString(); break; default: if (!actorDate.TryGetValue(resid, out string text)) { if (!dateFileInstance.presetActorDate.TryGetValue(currentActorId, resid, out text, actorDate)) { text = "0"; } } fieldValuesCache[resid] = text; break; } }
/// <summary> /// 经历筛选 /// </summary> public static bool Prefix(int key, ActorMenu __instance, List <string> ___showMassage, ref int ___showMassageIndex) { if (!Main.enabled || Main.settings.showAllMessage) { return(true); } ___showMassage.Clear(); int num = DateFile.instance.MianActorID(); ___showMassage.Add(string.Format(DateFile.instance.SetColoer(20002, "·") + " {0}{1}{2}{3}{4}\n", DateFile.instance.massageDate[8010][1].Split('|')[0], DateFile.instance.SetColoer( 10002, DateFile.instance.solarTermsDate[int.Parse(DateFile.instance.GetActorDate(key, 25, applyBonus: false))][102]), DateFile.instance.massageDate[8010][1].Split('|')[1], DateFile.instance.GetActorName(key, realName: false, baseName: true), DateFile.instance.massageDate[8010][1].Split('|')[2])); LifeRecords.LifeRecord[] allRecords = LifeRecords.GetAllRecords(key); if (allRecords != null) { int num2 = Mathf.Max(DateFile.instance.GetActorFavor(isEnemy: false, num, key), 0); for (int i = 0; i < allRecords.Length; i++) { LifeRecords.LifeRecord record = allRecords[i]; if (!Changer.exclucdedMessageTypes.Contains(record.messageId) && DateFile.instance.actorMassageDate.ContainsKey(record.messageId)) { int num3 = int.Parse(DateFile.instance.actorMassageDate[record.messageId][4]); num3 = 30000 * num3 / 100; if (key != num && num2 < num3) { List <string> list = ___showMassage; string format = DateFile.instance.SetColoer(20002, "·") + " {0}{1}:{2}\n"; string str = DateFile.instance.massageDate[16][1]; DateFile instance = DateFile.instance; short year = record.year; list.Add(string.Format(format, str + instance.SetColoer(10002, year.ToString()) + DateFile.instance.massageDate[16][3], DateFile.instance.SetColoer(20002, DateFile.instance.solarTermsDate[record.solarTerm][0]), DateFile.instance.SetColoer(10001, DateFile.instance.massageDate[12][2]))); } else { List <string> list2 = ___showMassage; string format2 = DateFile.instance.SetColoer(20002, "·") + " {0}{1}:" + DateFile.instance.actorMassageDate[record.messageId][1] + "\n"; object[] args = DateFile.instance.GetLifeRecordMassageElements(key, record).ToArray(); list2.Add(string.Format(format2, args)); } } } } ___showMassageIndex = 0; if (ShowMassage == null) { var bindingFlags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic; var method = typeof(ActorMenu).GetMethod("ShowMassage", bindingFlags, null, new[] { typeof(int) }, null); ShowMassage = (Action <int>)Delegate.CreateDelegate(typeof(Action <int>), __instance, method, true); } ShowMassage(___showMassageIndex); return(false); }
static void Prefix(ActorMenu __instance, int key) { Main.nowActorId = key; }
public static void Postfix(ActorMenu __instance) { __instance.actorMenu.SetActive(false); }