private Leve[] BuildLeves() { const int Count = 3; var leves = new Leve[Count]; for (var i = 0; i < leves.Length; ++i) leves[i] = As<Leve>("Leve", i); return leves; }
private Leve[] BuildLeves() { const int Count = 3; Leve[] leves = new Leve[Count]; for (int i = 0; i < leves.Length; ++i) { leves[i] = As <Leve>("Leve", i); } return(leves); }
void BuildLeve(Game.Leve sLeve) { if (sLeve.Key <= 20 || sLeve.Name == "") { return; } dynamic leve = new JObject(); leve.id = sLeve.Key; _builder.Localize.HtmlStrings((JObject)leve, sLeve, "Name", "Description"); leve.patch = PatchDatabase.Get("leve", sLeve.Key); leve.client = sLeve.LeveClient.Name.ToString().Replace("Client: ", ""); leve.lvl = sLeve.ClassJobLevel; leve.jobCategory = sLeve.ClassJobCategory.Key; var sNpc = _builder.Realm.GameData.ENpcs[sLeve.LevemeteLevel.Object.Key]; var levemete = _builder.Db.NpcsById[sNpc.Key]; leve.levemete = sNpc.Key; _builder.Db.AddReference(leve, "npc", sNpc.Key, false); if (sLeve.StartLevel != null && sLeve.StartLevel.Key != 0) { leve.coords = _builder.GetCoords(sLeve.StartLevel); var locationInfo = _builder.LocationInfoByMapId[sLeve.StartLevel.Map.Key]; leve.zoneid = locationInfo.PlaceName.Key; } leve.areaid = sLeve.PlaceNameStart.Key; _builder.Db.AddLocationReference(sLeve.PlaceNameStart.Key); if (sLeve.ExpReward > 0) { leve.xp = sLeve.ExpReward; } else if (sLeve.ClassJobCategory.Name.Equals("MIN") || sLeve.ClassJobCategory.Name.Equals("BTN") || sLeve.ClassJobCategory.Name.Equals("FSH")) { if ((float)sLeve["ExpFactor"] > 0) { leve.xp = ((float)sLeve["ExpFactor"]) * _gatherExpByLvl[leve.lvl.Value].Exp; } } if (sLeve.GilReward > 0) { leve.gil = sLeve.GilReward; } switch (sLeve.LeveAssignmentType.Key) { case 16: // Maelstrom case 17: // Adders case 18: // Flames leve.gc = sLeve.LeveAssignmentType.Key - 15; break; } if (sLeve.LeveRewardItem.ItemGroups.Any(ig => ig.Value.Key > 0)) { // Embed the rewards, as they will be kept in separate files. leve.rewards = sLeve.LeveRewardItem.Key; foreach (var group in sLeve.LeveRewardItem.ItemGroups.SelectMany(g => g.Value.Items)) { var item = _builder.Db.ItemsById[group.Item.Key]; if (item.category == 59) // Crystal { continue; // Skip these, there are too many. } if (item.leves == null) { item.leves = new JArray(); } JArray leves = item.leves; if (!leves.Any(l => (int)l == sLeve.Key)) { leves.Add(sLeve.Key); _builder.Db.AddReference(item, "leve", sLeve.Key, false); _builder.Db.AddReference(leve, "item", group.Item.Key, false); } } } leve.plate = IconDatabase.EnsureEntry("leve\\plate", sLeve.PlateIcon); leve.frame = IconDatabase.EnsureEntry("leve\\frame", sLeve.FrameIcon); leve.areaicon = IconDatabase.EnsureEntry("leve\\area", sLeve.IssuerIcon); // Find turn-ins for crafting and fisher leves. if (_craftLevesByLeve.TryGetValue(sLeve, out var sCraftLeve)) { if (sCraftLeve.Repeats > 0) { leve.repeats = sCraftLeve.Repeats; } JArray requires = new JArray(); leve.requires = requires; foreach (var sCraftLeveItem in sCraftLeve.Items) { dynamic entry = requires.FirstOrDefault(t => (int)t["item"] == sCraftLeveItem.Item.Key); if (entry != null) { if (entry.amount == null) { entry.amount = 1; } entry.amount += sCraftLeveItem.Count; continue; } dynamic requireItem = new JObject(); requireItem.item = sCraftLeveItem.Item.Key; if (sCraftLeveItem.Count > 1) { requireItem.amount = sCraftLeveItem.Count; } leve.requires.Add(requireItem); var item = _builder.Db.ItemsById[sCraftLeveItem.Item.Key]; if (item.requiredByLeves == null) { item.requiredByLeves = new JArray(); } item.requiredByLeves.Add(sLeve.Key); _builder.Db.AddReference(item, "leve", sLeve.Key, false); _builder.Db.AddReference(leve, "item", sCraftLeveItem.Item.Key, false); } } // TODO: CompanyLeve sheet for seal rewards and stuff? _builder.Db.Leves.Add(leve); }