Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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));
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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"]);
            }
        }
Exemple #5
0
        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));
            //    }
            //}
        }