Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }