public static bool Prefix(int mapId, int tileId, bool isTaiwuAtThisTile, Dictionary <int, int> righteousInfo, object disasterInfo, int worldId, int mainActorId, Dictionary <int, List <int> > mainActorItems, System.Random random) { if (!Main.enabled || !Main.settings.启用主动欺辱功能) { return(true); } if (!isTaiwuAtThisTile) { return(true); } int 角色立场 = DateFile.instance.GetActorGoodness(mainActorId); int 欺辱概率 = int.Parse(DateFile.instance.goodnessDate[角色立场][25]); int 战力评价 = int.Parse(DateFile.instance.GetActorDate(mainActorId, 993, applyBonus: false)); int 性别 = int.Parse(DateFile.instance.GetActorDate(mainActorId, 14, applyBonus: false)); PeopleLifeAI_Utils.GetTileCharacters(mapId, tileId, out int[] aliveChars); List <int> list = aliveChars.ToList(); if (Main.settings.主动欺辱爱慕筛选) { list = list.Where((int id) => DateFile.instance.GetActorSocial(mainActorId, 312).Contains(id)).ToList(); } if (Main.settings.主动欺辱人名筛选) { list = list.Where((int id) => DateFile.instance.GetActorName(id).IndexOf(Main.settings.人名字符串片段) != -1).ToList(); } if (Main.settings.主动欺辱异性筛选) { list = list.Where((int id) => int.Parse(DateFile.instance.GetActorDate(id, 14, applyBonus: false)) != 性别).ToList(); } Debug.Log(("目标名单:" + ((list.Count == 0) ? "None" : (DateFile.instance.GetActorName(list[0]) + " etc.")))); if (Main.settings.指定主动欺辱概率) { 欺辱概率 = Main.settings.主动欺辱概率; } if (list.Count > 0 && UnityEngine.Random.Range(0, 100) < 欺辱概率) { int num3 = list[UnityEngine.Random.Range(0, list.Count)]; if (!Main.settings.跳过战力检定 && 战力评价 < int.Parse(DateFile.instance.GetActorDate(num3, 993, applyBonus: false)) + 10000) { Debug.Log("欺辱打不过的人"); if (Main.settings.主动欺辱结仇) { DateFile.instance.AddSocial(num3, mainActorId, 401); } if (Main.settings.主动欺辱影响双方情绪) { PeopleLifeAI_Utils.AiMoodChange(mainActorId, int.Parse(DateFile.instance.goodnessDate[DateFile.instance.GetActorGoodness(mainActorId)][102])); } PeopleLifeAI_Utils.AISetMassage(99, mainActorId, mapId, tileId, new int[1], num3); } else { if (Main.settings.主动欺辱影响双方情绪) { PeopleLifeAI_Utils.AiMoodChange(mainActorId, int.Parse(DateFile.instance.goodnessDate[DateFile.instance.GetActorGoodness(mainActorId)][102]) * 10); } if (DateFile.instance.GetActorSocial(num3, 312).Contains(mainActorId)) { Debug.Log("欺辱成功,但是并无过多怨恨"); if (Main.settings.主动欺辱影响双方情绪) { PeopleLifeAI_Utils.AiMoodChange(num3, UnityEngine.Random.Range(-10, 11)); } if (UnityEngine.Random.Range(0, 100) < 50 && Main.settings.主动欺辱结仇) { DateFile.instance.AddSocial(num3, mainActorId, 402); } PeopleLifeAI_Utils.AISetMassage(97, num3, mapId, tileId, new int[1], mainActorId); } else { Debug.Log("欺辱成功,对方伤心欲绝"); if (Main.settings.主动欺辱影响双方情绪) { PeopleLifeAI_Utils.AiMoodChange(num3, -50); } if (Main.settings.主动欺辱结仇) { DateFile.instance.AddSocial(num3, mainActorId, 402); } PeopleLifeAI_Utils.AISetMassage(96, num3, mapId, tileId, new int[1], mainActorId); } if (性别 != int.Parse(DateFile.instance.GetActorDate(num3, 14, applyBonus: false))) { Debug.Log("试图怀孕"); PeopleLifeAI_Utils.AISetChildren((性别 == 1) ? mainActorId : num3, (性别 == 1) ? num3 : mainActorId, Main.settings.主动欺辱的孩子有双亲 ? 1 : ((性别 != 1) ? 1 : 0), Main.settings.主动欺辱的孩子有双亲 ? 1 : ((性别 == 1) ? 1 : 0)); } else { Debug.Log("同性不能怀孕"); DateFile.instance.ChangeActorFeature(mainActorId, 4001, 4002); DateFile.instance.ChangeActorFeature(num3, 4001, 4002); GEvent.OnEvent(eEvents.Copulate, mainActorId, num3); } } } return(true); }
private static bool Prefix(int actorId, int mapId, int tileId, int mainActorId, bool isTaiwuAtThisTile, int worldId, Dictionary <int, List <int> > mainActorItems, int[] aliveChars, int[] deadChars) { if (!Main.enabled) { return(true); } if (!Main.settings.主动爱慕 && !Main.settings.主动表白 && !Main.settings.主动求婚) { return(true); } if (!Main.settings.全世界都喜欢太吾 && !isTaiwuAtThisTile) { return(true); } string name = DateFile.instance.GetActorName(actorId); Debug(name + "通过位置判定"); int actorFavor = DateFile.instance.GetActorFavor(false, mainActorId, actorId, getLevel: true); if (Main.settings.可接受的好感度等级.TryGetValue(actorFavor, out bool value)) { if (!value) { return(true); } } Debug(name + "通过好感判定 :" + DateFile.instance.GetActorName(actorId) + "好感度为: " + actorFavor); int num = int.Parse(DateFile.instance.GetActorDate(actorId, 11, applyBonus: false)); if (num < Main.settings.年龄下限 || num > Main.settings.年龄上限) { return(true); } Debug(name + "通过年龄判定"); int num2 = int.Parse(DateFile.instance.GetActorDate(actorId, 15)); int key = num2 / 100; if (Main.settings.可接受的魅力等级.TryGetValue(key, out bool value2)) { if (!value2) { return(true); } } Debug(name + "通过魅力判定:" + DateFile.instance.GetActorName(actorId) + "魅力为: " + num2); if (int.TryParse(DateFile.instance.GetActorDate(actorId, 20, applyBonus: false), out int result)) { int num3 = Mathf.Abs(result); if (Main.settings.可接受的阶层等级.TryGetValue(num3, out bool value3)) { if (!value3) { return(true); } } Debug(name + "通过阶层判定:" + DateFile.instance.GetActorName(actorId) + "阶层为: " + result + ": " + num3); } int num4 = int.Parse(DateFile.instance.GetActorDate(actorId, 997, applyBonus: false)); if (!Main.settings.男的可以来 && num4 % 2 == 1) { return(true); } if (!Main.settings.女的可以来 && num4 % 2 == 0) { return(true); } Debug(name + "通过性别判定"); int gangId = int.Parse(DateFile.instance.GetActorDate(actorId, 19, applyBonus: false)); int gangLevel = int.Parse(DateFile.instance.GetActorDate(actorId, 20, applyBonus: false)); int gangValueId = DateFile.instance.GetGangValueId(gangId, gangLevel); if (!Main.settings.顾门派爱太吾 && int.Parse(DateFile.instance.presetGangGroupDateValue[gangValueId][803]) == 0) { return(true); } Debug(name + "通过门派判定"); int actorGoodness = DateFile.instance.GetActorGoodness(actorId); if (Main.settings.可接受的立场等级.TryGetValue(actorGoodness, out bool value4)) { if (!value4) { return(true); } } Debug(name + "通过立场判定:" + DateFile.instance.GetActorName(actorId) + "立场为: " + actorGoodness); if (int.TryParse(DateFile.instance.GetActorDate(actorId, 6, applyBonus: false), out int result2)) { if (result2 > Main.settings.入魔程度) { return(true); } } Debug(name + "通过入魔判定"); if (!Main.settings.兄弟姐妹 && DateFile.instance.GetActorSocial(actorId, 302).Contains(mainActorId)) { return(true); } if (!Main.settings.亲生父母 && DateFile.instance.GetActorSocial(actorId, 303).Contains(mainActorId)) { return(true); } if (!Main.settings.义父义母 && DateFile.instance.GetActorSocial(actorId, 304).Contains(mainActorId)) { return(true); } if (!Main.settings.授业恩师 && DateFile.instance.GetActorSocial(actorId, 305).Contains(mainActorId)) { return(true); } if (!Main.settings.义结金兰 && DateFile.instance.GetActorSocial(actorId, 308).Contains(mainActorId)) { return(true); } if (!Main.settings.儿女子嗣 && DateFile.instance.GetActorSocial(actorId, 310).Contains(mainActorId)) { return(true); } if (!Main.settings.嫡系传人 && DateFile.instance.GetActorSocial(actorId, 311).Contains(mainActorId)) { return(true); } if (!Main.settings.势不两立 && DateFile.instance.GetActorSocial(actorId, 401).Contains(mainActorId)) { return(true); } if (!Main.settings.血海深仇 && DateFile.instance.GetActorSocial(actorId, 402).Contains(mainActorId)) { return(true); } if (!Main.settings.父系血统 && DateFile.instance.GetActorSocial(actorId, 601).Contains(mainActorId)) { return(true); } if (!Main.settings.母系血统 && DateFile.instance.GetActorSocial(actorId, 602).Contains(mainActorId)) { return(true); } Debug(name + "通过关系判定"); if (isTaiwuAtThisTile && Main.settings.主动求婚 && DateFile.instance.GetActorSocial(actorId, 306).Contains(mainActorId) && DateFile.instance.GetActorSocial(mainActorId, 306).Contains(actorId) && !DateFile.instance.GetActorSocial(actorId, 309).Contains(mainActorId) && !DateFile.instance.GetActorSocial(mainActorId, 309).Contains(actorId) && (Main.settings.已婚人士想和太吾结婚 || DateFile.instance.GetActorSocial(actorId, 309).Count <= 0) && (Main.settings.即使太吾已婚别人也想求婚 || DateFile.instance.GetActorSocial(mainActorId, 309).Count <= 0) && (Main.settings.即使出家也要求婚太吾 || int.Parse(DateFile.instance.GetActorDate(actorId, 2, applyBonus: false)) == 0) && (Main.settings.即使太吾出家也要求婚 || int.Parse(DateFile.instance.GetActorDate(mainActorId, 2, applyBonus: false)) == 0)) { PeopleLifeAI_Utils.AISetEvent(8, new int[4] { 0, actorId, 232, actorId }); Debug("进入求婚事件:" + name + " 试图求婚 太吾传人"); } if (isTaiwuAtThisTile && Main.settings.主动表白 && DateFile.instance != null && DateFile.instance.GetActorSocial(actorId, 312).Contains(mainActorId) && (Main.settings.太吾不爱的人也表白太吾 || DateFile.instance.GetActorSocial(mainActorId, 312).Contains(actorId)) && !DateFile.instance.GetActorSocial(actorId, 306).Contains(mainActorId) && !DateFile.instance.GetActorSocial(mainActorId, 306).Contains(actorId) && !DateFile.instance.GetActorSocial(actorId, 309).Contains(mainActorId) && !DateFile.instance.GetActorSocial(mainActorId, 309).Contains(actorId)) { PeopleLifeAI_Utils.AISetEvent(8, new int[4] { 0, actorId, 231, actorId }); Debug("进入表白事件:" + name + " 试图表白 太吾传人"); } if (Main.settings.主动爱慕 && !DateFile.instance.GetActorSocial(actorId, 312).Contains(mainActorId)) { PeopleLifeAI_Utils.AISetOtherLove(mainActorId, actorId, mainActorId, mapId, tileId); Debug("进入爱慕事件:" + name + " 喜欢上了 太吾传人"); } return(true); }
public static bool Prefix(int mapId, int tileId, bool isTaiwuAtThisTile, Dictionary <int, int> righteousInfo, object disasterInfo, int worldId, int mainActorId, Dictionary <int, List <int> > mainActorItems, System.Random random) { if (!Main.enabled || !Main.settings.启用主动欺辱功能) { return(true); } if (!isTaiwuAtThisTile) { return(true); } Debug("开始试图欺辱"); int 角色立场 = DateFile.instance.GetActorGoodness(mainActorId); int 欺辱概率 = int.Parse(DateFile.instance.goodnessDate[角色立场][25]); int 战力评价 = int.Parse(DateFile.instance.GetActorDate(mainActorId, 993, applyBonus: false)); int 性别 = int.Parse(DateFile.instance.GetActorDate(mainActorId, 14, applyBonus: false)); PeopleLifeAI_Utils.GetTileCharacters(mapId, tileId, out int[] aliveChars); List <int> list = aliveChars.ToList(); if (Main.settings.主动欺辱爱慕筛选) { list = list.Where((int id) => DateFile.instance.GetActorSocial(mainActorId, 312).Contains(id)).ToList(); } if (Main.settings.主动欺辱人名筛选) { list = list.Where((int id) => DateFile.instance.GetActorName(id).IndexOf(Main.settings.人名字符串片段) != -1).ToList(); } if (Main.settings.主动欺辱异性筛选) { list = list.Where((int id) => int.Parse(DateFile.instance.GetActorDate(id, 14, applyBonus: false)) != 性别).ToList(); } string names = ""; foreach (int kid in list) { names += DateFile.instance.GetActorName(list[kid]) + " "; } Debug("主角想要欺辱的目标名单" + ((list.Count == 0) ? "为空" : (": " + names))); if (Main.settings.指定主动欺辱概率) { 欺辱概率 = Main.settings.主动欺辱概率; } int var1 = UnityEngine.Random.Range(0, 100); if (list.Count > 0 && var1 < 欺辱概率) { Debug("欺辱概率判定通过,需求 " + var1 + ",结果 " + 欺辱概率); int num3 = list[UnityEngine.Random.Range(0, list.Count)]; if (!Main.settings.跳过战力检定 && 战力评价 < int.Parse(DateFile.instance.GetActorDate(num3, 993, applyBonus: false)) + 10000) { Debug("战力判定未通过,需求 " + (int.Parse(DateFile.instance.GetActorDate(num3, 993, applyBonus: false)) + 10000) + ",结果 " + 战力评价); if (Main.settings.主动欺辱结仇) { DateFile.instance.AddSocial(num3, mainActorId, 401); } if (Main.settings.主动欺辱影响双方情绪) { PeopleLifeAI_Utils.AiMoodChange(mainActorId, int.Parse(DateFile.instance.goodnessDate[DateFile.instance.GetActorGoodness(mainActorId)][102])); } PeopleLifeAI_Utils.AISetMassage(99, mainActorId, mapId, tileId, new int[1], num3); } else { Debug("战力判定通过,需求 " + (int.Parse(DateFile.instance.GetActorDate(num3, 993, applyBonus: false)) + 10000) + ",结果 " + 战力评价); if (Main.settings.主动欺辱影响双方情绪) { PeopleLifeAI_Utils.AiMoodChange(mainActorId, int.Parse(DateFile.instance.goodnessDate[DateFile.instance.GetActorGoodness(mainActorId)][102]) * 10); } if (DateFile.instance.GetActorSocial(num3, 312).Contains(mainActorId)) { if (Main.settings.主动欺辱影响双方情绪) { PeopleLifeAI_Utils.AiMoodChange(num3, UnityEngine.Random.Range(-10, 11)); } int var2 = UnityEngine.Random.Range(0, 100); if (var2 < 50 && Main.settings.主动欺辱结仇) { DateFile.instance.AddSocial(num3, mainActorId, 402); } PeopleLifeAI_Utils.AISetMassage(97, num3, mapId, tileId, new int[1], mainActorId); Debug("对方并无过多怨恨," + ((var2 < 50) ? "但是仍然结下仇怨" : "因此并未结下仇怨")); } else { if (Main.settings.主动欺辱影响双方情绪) { PeopleLifeAI_Utils.AiMoodChange(num3, -50); } if (Main.settings.主动欺辱结仇) { DateFile.instance.AddSocial(num3, mainActorId, 402); } PeopleLifeAI_Utils.AISetMassage(96, num3, mapId, tileId, new int[1], mainActorId); Debug("对方伤心欲绝"); } if (性别 != int.Parse(DateFile.instance.GetActorDate(num3, 14, applyBonus: false))) { Debug("由于性别不同,开始进行怀孕判定"); PeopleLifeAI_Utils.AISetChildren((性别 == 1) ? mainActorId : num3, (性别 == 1) ? num3 : mainActorId, Main.settings.主动欺辱的孩子有双亲 ? 1 : ((性别 != 1) ? 1 : 0), Main.settings.主动欺辱的孩子有双亲 ? 1 : ((性别 == 1) ? 1 : 0)); } else { Debug("由于性别相同,无法进行怀孕判定"); DateFile.instance.ChangeActorFeature(mainActorId, 4001, 4002); DateFile.instance.ChangeActorFeature(num3, 4001, 4002); GEvent.OnEvent(eEvents.Copulate, mainActorId, num3); } } } else { Debug("欺辱概率判定未通过,需求 " + var1 + ",结果 " + 欺辱概率); } return(true); }