public override void Start() { Directory.CreateDirectory(_resultMusicPath); var sOrchestrions = _builder.Sheet("Orchestrion"); var sOrchestrionUiparams = _builder.Sheet("OrchestrionUiparam"); foreach (var sItem in _builder.Sheet <Saint.Item>()) { var unlock = sItem.ItemAction as Saint.ItemActions.OrchestrionRollUnlock; if (unlock == null) { continue; } var sOrchestrion = sOrchestrions[unlock.GetData(0)]; var sOrchestrionUiparam = sOrchestrionUiparams[sOrchestrion.Key]; var item = _builder.Db.ItemsById[sItem.Key]; item.orchestrion = new JObject(); item.orchestrion.id = sOrchestrion.Key; item.orchestrion.name = sOrchestrion.AsString("Name").ToString(); item.orchestrion.description = HtmlStringFormatter.Convert(sOrchestrion.AsString("Description")); item.orchestrion.category = sOrchestrionUiparam["OrchestrionCategory"].ToString(); item.orchestrion.order = sOrchestrionUiparam.AsInt32("Order"); ExportOrchestrionMusic(sOrchestrion.Key, item.orchestrion); } }
public override void Start() { foreach (var sItem in _builder.Sheet <Item>()) { var unlock = sItem.ItemAction as MountUnlock; if (unlock == null) { continue; } var sMount = unlock.Mount; if (string.IsNullOrEmpty(sMount.Singular.ToString())) { continue; } var sMountTransient = _builder.Sheet("MountTransient")[sMount.Key]; var item = _builder.Db.ItemsById[sItem.Key]; item.mount = new JObject(); item.mount.name = Utils.CapitalizeWords(sMount.Singular.ToString()); item.mount.action = sMountTransient[0].ToString(); item.mount.description = sMountTransient[1].ToString(); item.mount.tooltip = HtmlStringFormatter.Convert((XivString)sMountTransient[2]); // Icons var iconIndex = (UInt16)sMount.SourceRow.GetRaw("Icon"); var icon = IconHelper.GetIcon(_builder.Realm.Packs, iconIndex); item.mount.icon = IconDatabase.EnsureEntry("mount", icon); int guideIconIndex = 0; if (iconIndex < 8000) { guideIconIndex = iconIndex - 4000 + 68000; } else if (iconIndex >= 8000) // For 4.1 SB mounts. { guideIconIndex = iconIndex - 8000 + 77000; } var guideIcon = IconHelper.GetIcon(_builder.Realm.Packs, guideIconIndex); if (guideIcon == null) { DatabaseBuilder.PrintLine($"Mount {item.mount.name} #{sItem.Key} has invalid guide icon, skipping."); } else { item.mount.guideIcon = IconDatabase.EnsureEntry("mount", guideIcon); } item.models = new JArray(Utils.ModelCharaKey(sMount.ModelChara)); } }
private static List <string> GetDefaultTalkLines(params Game.XivRow[] defaultTalk) { var lines = new List <string>(); foreach (var gameTalk in defaultTalk) { for (var ii = 0; ii < 3; ii++) { var xivstr = gameTalk.AsString("Text", ii); var str = HtmlStringFormatter.Convert(xivstr); if (string.IsNullOrEmpty(str) || str == "0") { continue; } lines.Add(str); } } return(lines); }
void BuildPetActions() { foreach (var sPetAction in _builder.Sheet <Saint.XivRow>("PetAction")) { var sAction = (Saint.Action)sPetAction["Action"]; if (sAction == null || sAction.Key == 0) { continue; } var sPet = (Saint.XivRow)sPetAction["Pet"]; var name = sPet["Name"].ToString(); if (string.IsNullOrEmpty(name)) { continue; } var action = _builder.Db.ActionsById[sAction.Key]; action.pet = name; action.desc = HtmlStringFormatter.Convert((SaintCoinach.Text.XivString)sPetAction["Description"]); } }
void ImportQuestLore(dynamic quest, Saint.Quest sQuest, ScriptInstruction[] instructions) { // todo: retrieve sheets for all languages, index using english version, then push into localized quest obj. var idParts = sQuest.Id.ToString().Split('_'); var idPath = new string(idParts[1].Take(3).ToArray()); var textSheetId = string.Format("quest/{0}/{1}", idPath, sQuest.Id); var textSheet = _builder.Sheet(textSheetId) .Select(r => new { r.Key, Tokens = r[0].ToString().Split('_'), XivString = (SaintCoinach.Text.XivString)r[1] }); quest.journal = new JArray(); quest.objectives = new JArray(); quest.dialogue = new JArray(); string lastLine = null; foreach (var row in textSheet) { var rawString = row.XivString.ToString(); if (rawString == "dummy" || rawString == "Dummy" || rawString == "deleted" || rawString == "placeholder" || rawString == "Marked for deletion" || string.IsNullOrWhiteSpace(rawString)) { continue; } var str = HtmlStringFormatter.Convert(row.XivString); //if (str.Contains("Aye, an anima weapon")) // Has IntegerParameter(1) [Error] - need to pass proper eval parameters in. // System.Diagnostics.Debugger.Break(); if (row.Tokens.Contains("SEQ")) { quest.journal.Add(str); } else if (row.Tokens.Contains("TODO")) { if (lastLine == str) { //System.Diagnostics.Debug.WriteLine("Skipping duplicate quest {0} objective: {1}", gameData.Key, lastLine); continue; } quest.objectives.Add(str); } else { dynamic obj = new JObject(); if (row.Tokens[3].All(char.IsDigit)) { obj.name = row.Tokens[4]; } else { obj.name = row.Tokens[3]; } obj.text = str; quest.dialogue.Add(obj); } lastLine = str; } // Script instructions //if (instructions.Length > 0) //{ // quest.script = new JArray(); // foreach (var instruction in instructions) // { // if (string.IsNullOrEmpty(instruction.Instruction)) // continue; // quest.script.Add(ImportInstruction(_builder, instruction)); // } //} }