Example #1
0
        public void Exec(TalkGeneratorArgs args)
        {
            isSuccess = false;
            talkList  = new Dictionary <string, double>();

            // 全て報告済みなら実行失敗にする
            if (args.Agi.MySeerJudge.Count <= reportCount)
            {
                return;
            }

            List <Agent> seerList = args.Agi.GetComingOutAgent(Role.SEER);

            Judge reportJudge = args.Agi.MySeerJudge[reportCount];

            // 初回占い結果が人間かつ対抗でない場合、次点占い先候補に人狼判定を出す
            if (args.Agi.Day == 1 && reportJudge.Result == Species.HUMAN && !seerList.Contains(reportJudge.Target) && new System.Random().NextDouble() < 0.9)
            {
                reportJudge = new Judge(0, args.Agi.Me, args.ActionPlan.DevineTarget, Species.WEREWOLF);
            }

            DivinedResultContentBuilder builder = new DivinedResultContentBuilder(reportJudge.Target, reportJudge.Result);

            talkList.Add(new Content(builder).Text, 999.0);

            // 報告件数のカウント(必ずこの発話を返す前提)
            reportCount++;

            isSuccess = true;
        }
Example #2
0
        public void Exec(TalkGeneratorArgs args)
        {
            isSuccess = false;
            talkList  = new Dictionary <string, double>();

            // 騙り判定を取得できなければ実行失敗にする
            if (!args.Items.ContainsKey("FakeSeerJudge"))
            {
                return;
            }

            // 騙り判定の取得
            List <Judge> judgeList = (List <Judge>)args.Items["FakeSeerJudge"];

            // 全て報告済みなら実行失敗にする
            if (judgeList.Count <= reportCount)
            {
                return;
            }

            Judge reportJudge = judgeList[reportCount];

            DivinedResultContentBuilder builder = new DivinedResultContentBuilder(reportJudge.Target, reportJudge.Result);

            talkList.Add(new Content(builder).Text, 999.0);

            // 報告件数のカウント(必ずこの発話を返す前提)
            reportCount++;

            isSuccess = true;
        }
Example #3
0
        public void Exec(TalkGeneratorArgs args)
        {
            isSuccess = false;
            talkList  = new Dictionary <string, double>();

            // 全て報告済みなら実行失敗にする
            if (args.Agi.MySeerJudge.Count <= reportCount)
            {
                return;
            }

            Judge reportJudge = args.Agi.MySeerJudge[reportCount];

            DivinedResultContentBuilder builder = new DivinedResultContentBuilder(reportJudge.Target, reportJudge.Result);

            talkList.Add(new Content(builder).Text, 999.0);

            // 報告件数のカウント(必ずこの発話を返す前提)
            reportCount++;

            isSuccess = true;
        }