コード例 #1
0
ファイル: HostageFox2.cs プロジェクト: JosephZoeller/SOC
        public static void AddQuestEntities(HostageDetail hDetails, DataSet dataSet, List <Fox2EntityClass> entityList)
        {
            List <Hostage>  hostages      = hDetails.hostages;
            HostageMetadata hMetadata     = hDetails.hostageMetadata;
            BodyInfoEntry   hostageBodies = NPCBodyInfo.GetBodyInfo(hMetadata.hostageBodyName);

            if (hostages.Count() > 0)
            {
                GameObject           gameObjectTppHostageUnique = new GameObject("GameObjectTppHostageUnique", dataSet, "TppHostageUnique2", hostages.Count(), hostages.Count());
                TppHostage2Parameter hostageParameter           = new TppHostage2Parameter(gameObjectTppHostageUnique, hostageBodies.partsPath);

                gameObjectTppHostageUnique.SetParameter(hostageParameter);

                entityList.Add(gameObjectTppHostageUnique);
                entityList.Add(hostageParameter);

                foreach (Hostage hostage in hostages)
                {
                    GameObjectLocator           hostageLocator          = new GameObjectLocator(hostage.GetObjectName(), dataSet, "TppHostageUnique2");
                    Transform                   hostageTransform        = new Transform(hostageLocator, hostage.position);
                    TppHostage2LocatorParameter hostageLocatorParameter = new TppHostage2LocatorParameter(hostageLocator);

                    hostageLocator.SetTransform(hostageTransform);
                    hostageLocator.SetParameter(hostageLocatorParameter);

                    entityList.Add(hostageLocator);
                    entityList.Add(hostageTransform);
                    entityList.Add(hostageLocatorParameter);
                }
            }
        }
コード例 #2
0
ファイル: HostageLua.cs プロジェクト: JosephZoeller/SOC
        public static void GetDefinition(HostageDetail hostageDetail, DefinitionLua definitionLua)
        {
            int           hostageCount = hostageDetail.hostages.Count;
            BodyInfoEntry hostageBody  = NPCBodyInfo.GetBodyInfo(hostageDetail.hostageMetadata.hostageBodyName);

            if (hostageCount > 0)
            {
                definitionLua.AddPackPath("/Assets/tpp/pack/mission2/ih/ih_hostage_base.fpk");
                definitionLua.AddPackPath(hostageBody.missionPackPath);

                definitionLua.AddPackInfo($@"randomFaceListIH = {{ gender = ""{(hostageBody.isFemale ? "FEMALE" : "MALE")}"", count = {hostageCount}}}");
            }
        }
コード例 #3
0
ファイル: LuaBuilder.cs プロジェクト: washtubs/SOC
        public static List <string> BuildHostageList(QuestEntities questDetails)
        {
            List <string> hostageList = new List <string>();

            BodyInfoEntry bodyInfo = new BodyInfoEntry();

            if (questDetails.hostageBodyIndex >= 0)
            {
                bodyInfo = BodyInfo.BodyInfoArray[questDetails.hostageBodyIndex];
            }

            if (questDetails.hostages.Count == 0)
            {
                hostageList.Add("nil");
            }
            else
            {
                foreach (Hostage hostage in questDetails.hostages)
                {
                    hostageList.Add("		{");
                    hostageList.Add(string.Format("			hostageName = \"{0}\",", hostage.name));
                    hostageList.Add("			isFaceRandom = true,");
                    if (hostage.isTarget)
                    {
                        hostageList.Add("			isTarget = true,");
                    }
                    if (hostage.language.Equals("english"))
                    {
                        hostageList.Add("			voiceType = { \"hostage_a\", \"hostage_b\", \"hostage_c\", \"hostage_d\",},");
                    }
                    else
                    {
                        hostageList.Add("			voiceType = { \"hostage_a\", \"hostage_b\", },");
                    }

                    hostageList.Add(string.Format("			langType = \"{0}\",", hostage.language));

                    if (!hostage.staffType.Equals("NONE"))
                    {
                        hostageList.Add(string.Format("			staffTypeId = TppDefine.STAFF_TYPE_ID.{0},", hostage.staffType));
                    }

                    if (!hostage.skill.Equals("NONE"))
                    {
                        hostageList.Add(string.Format("			skill = \"{0}\",", hostage.skill));
                    }

                    double rotation = 0; Double.TryParse(hostage.coordinates.roty, out rotation);

                    hostageList.Add(string.Format("			bodyId = {0},", bodyInfo.bodyId));

                    double yOffset = 0.0;
                    double.TryParse(hostage.coordinates.yCoord, out yOffset);
                    yOffset += 0.783;

                    hostageList.Add(string.Format("			position={{pos={{{0},{1},{2}}},rotY={3},}},", hostage.coordinates.xCoord, yOffset, hostage.coordinates.zCoord, rotation));

                    hostageList.Add("		},");
                }
            }

            return(hostageList);
        }
コード例 #4
0
ファイル: LuaBuilder.cs プロジェクト: washtubs/SOC
        public static void WriteDefinitionLua(DefinitionDetails definitionDetails, QuestEntities questDetails)
        {
            CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture("en-US");

            BodyInfoEntry bodyInfo = new BodyInfoEntry();

            if (questDetails.hostageBodyIndex >= 0)
            {
                bodyInfo = BodyInfo.BodyInfoArray[questDetails.hostageBodyIndex];
            }

            string packFiles = "";
            string locName   = "";
            string gender    = "MALE";

            if (bodyInfo.isFemale)
            {
                gender = "FEMALE";
            }

            if (definitionDetails.locationID == 10)
            {
                locName = "AFGH";
            }

            else if (definitionDetails.locationID == 20)
            {
                locName = "MAFR";
            }

            if (questDetails.hostages.Count > 0)
            {
                packFiles += "\n\t\t\"/Assets/tpp/pack/mission2/ih/ih_hostage_base.fpk\", ";
                packFiles += string.Format("\n\t\t\"{0}\", ", bodyInfo.missionPackPath);
            }

            packFiles += string.Format("\n\t\t\"/Assets/tpp/pack/mission2/quest/ih/{0}.fpk\", ", definitionDetails.FpkName);

            if (questDetails.hostages.Count > 0)
            {
                if (!bodyInfo.hasface)
                {
                    packFiles += string.Format("\n\t\trandomFaceListIH = {{gender = \"{0}\", count = {1}}}, ", gender, questDetails.hostages.Count);
                }
            }

            string bodies = "";
            string faces  = "";

            if (locName.Equals("AFGH") || locName.Equals("MAFR"))
            {
                if (EnemyInfo.balaCount > 0)
                {
                    faces += string.Format("TppDefine.QUEST_FACE_ID_LIST.{0}_BALACLAVA, ", locName);
                }
                if (EnemyInfo.armorCount > 0)
                {
                    bodies += string.Format("TppDefine.QUEST_BODY_ID_LIST.{0}_ARMOR, ", locName);
                }
            }

            foreach (string body in getEnemyBodies(questDetails.cpEnemies))
            {
                bodies += string.Format("TppEnemyBodyId.{0}, ", body);
            }
            foreach (string body in getEnemyBodies(questDetails.questEnemies))
            {
                bodies += string.Format("TppEnemyBodyId.{0}, ", body);
            }

            packFiles += string.Format("\n\t\tfaceIdList={{{0}}}, ", faces);
            packFiles += string.Format("\n\t\tbodyIdList={{{0}}}, ", bodies);

            string questPackList = string.Format("\tquestPackList = {{ {0} \n\t}},", packFiles);

            string locationInfo = string.Format("\tlocationId={0}, areaName=\"{1}\", iconPos=Vector3({2},{3},{4}), radius={5},", definitionDetails.locationID, definitionDetails.loadArea, definitionDetails.coords.xCoord, definitionDetails.coords.yCoord, definitionDetails.coords.zCoord, definitionDetails.radius);

            string progressLangId = string.Format("\tquestCompleteLangId=\"{0}\",", UpdateNotifsManager.getLangIds()[definitionDetails.progNotif]);

            string canOpenQuestFunction = "\tcanOpenQuest=InfQuest.AllwaysOpenQuest, --function that decides whether the quest is open or not";                                                                                          //todo in future update?

            string disableLzs = "\tdisableLzs={ }, --disables lzs while the quest is active. Turn on the debugMessages option and look in ih_log.txt for StartedMoveToLandingZone after calling in a support heli to find the lz name."; // todo in future update

            string equipIds = ""; List <string> requestHistory = new List <string>();

            foreach (Item item in questDetails.items)
            {
                if (item.item.Contains("EQP_WP_") && !requestHistory.Contains(item.item))
                {
                    equipIds += string.Format("\"{0}\", ", item.item);
                    requestHistory.Add(item.item);
                }
            }


            string requestEquipIds = string.Format("\trequestEquipIds={{ {0} }},", equipIds);

            string hasEnemyHeli = "\thasEnemyHeli = false, --reserves an enemy helicopter for the sideop. set to true if the sideop has a heli.";


            string DefinitionLuaPath = "Sideop_Build//GameDir//mod//quests//";
            string DefinitionLuaFile = Path.Combine(DefinitionLuaPath, string.Format("ih_quest_q{0}.lua", definitionDetails.QuestNum));

            Directory.CreateDirectory(DefinitionLuaPath);

            using (StreamWriter defFile =
                       new StreamWriter(DefinitionLuaFile))
            {
                defFile.WriteLine("local this={");
                defFile.WriteLine(questPackList);
                defFile.WriteLine(locationInfo);
                if (definitionDetails.locationID == 50)
                {
                    defFile.WriteLine(string.Format("\tclusterName=\"{0}\",", definitionDetails.loadArea.Substring(4)));
                }
                defFile.WriteLine(string.Format("\tcategory=TppQuest.QUEST_CATEGORIES_ENUM.{0},", definitionDetails.category));
                defFile.WriteLine(progressLangId);
                defFile.WriteLine(canOpenQuestFunction);
                defFile.WriteLine(string.Format("\tquestRank=TppDefine.QUEST_RANK.{0},", definitionDetails.reward));
                defFile.WriteLine(disableLzs);
                defFile.WriteLine(requestEquipIds);
                defFile.WriteLine(hasEnemyHeli);
                defFile.WriteLine("} return this");
            }
        }