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); } } }
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}}}"); } }
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); }
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"); } }