Beispiel #1
0
        public static void GetMain(HostageDetail hostageDetail, MainLua mainLua)
        {
            List <Hostage>  hostages = hostageDetail.hostages;
            HostageMetadata meta     = hostageDetail.hostageMetadata;

            mainLua.AddToQuestTable(BuildHostageList(hostageDetail));

            if (hostages.Count > 0)
            {
                if (meta.canInterrogate)
                {
                    mainLua.AddToAuxiliary(InterCall_hostage_pos01);
                    mainLua.AddToAuxiliary(questCpInterrogation);
                    mainLua.AddToAuxiliary(SwitchEnableQuestHighIntTable);

                    //mainLua.AddToAuxiliary($"local hostageCount = {hostages.Count}"); unnecessary if MarkerChangeToEnable message isn't a static readonly
                    mainLua.AddToAuxiliary("local hostagei = 0"); // only used for MarkerChangeToEnable's function
                    mainLua.AddToQStep_Main(new QStep_Message("Marker", @"""ChangeToEnable""", $@"function(arg0, arg1)
              if arg0 == StrCode32(""Hostage_0"") then
                hostagei = hostagei + 1
                if hostagei >= {hostages.Count} then
                  this.SwitchEnableQuestHighIntTable(false, CPNAME, this.questCpInterrogation)
                end
              end
            end"));                                               // could be a static readonly message, but a total hostage count would have to be an auxiliary variable

                    mainLua.AddToQStep_Start_OnEnter("this.SwitchEnableQuestHighIntTable(true, CPNAME, this.questCpInterrogation)");
                    mainLua.AddToOnTerminate("this.SwitchEnableQuestHighIntTable(false, CPNAME, this.questCpInterrogation)");
                }

                mainLua.AddToQStep_Main(QStep_MainCommonMessages.genericTargetMessages);

                mainLua.AddToQStep_Start_OnEnter(WarpHostages);
                mainLua.AddToAuxiliary(WarpHostages);

                mainLua.AddToQStep_Start_OnEnter(SetHostageAttributes);
                mainLua.AddToAuxiliary(SetHostageAttributes);

                if (hostages.Any(hostage => hostage.isTarget))
                {
                    CheckQuestGenericEnemy hostageCheck = new CheckQuestGenericEnemy(mainLua, CheckIsHostage, meta.objectiveType);
                    foreach (Hostage hostage in hostages)
                    {
                        if (hostage.isTarget)
                        {
                            mainLua.AddToTargetList(hostage.GetObjectName());
                        }
                    }
                }
            }
        }