protected override void DumpMembers(LuaTextWriter output) { output.WriteKeyValue("Kind", Kind.ToString()); output.WriteKeyValue("Name", Name); output.WriteList("Levels", Levels); base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { output.WriteList("Definitions", Definitions); output.WriteList("Bonuses", Bonuses); output.WriteList("ProhibitedSpells", ProhibitedSpells); output.WriteList("Domains", Domains); output.WriteList("Abilities", Abilities); output.WriteList("ClassSkills", ClassSkills); output.WriteList("AddedSpellCasterLevels", AddedSpellCasterLevels); output.WriteList("SpellLists", SpellLists); if (WeaponBonusProficiencySelections.Any()) { output.WriteObjectValue("WeaponBonusProficiencySelections", () => { foreach (var selection in WeaponBonusProficiencySelections) { output.WriteStartObject(); foreach (var option in selection) { output.WriteValue(option); output.Write(", "); } output.WriteLine(); output.WriteEndObject(); } }); } base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { output.WriteProperty("Name", Name); output.WriteProperty("FormatString", FormatString); output.WriteProperty("Arguments", Arguments); base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { if (Alignment != null) { output.WriteKeyValue("Alignment", Alignment); } if (Descriptor != null) { output.WriteKeyValue("Descriptor", Descriptor); } if (School != null) { output.WriteKeyValue("School", School); } if (SubSchool != null) { output.WriteKeyValue("SubSchool", SubSchool); } if (Names.Any()) { output.WriteObjectValue("Names", () => { foreach (var name in Names) { output.WriteValue(name); output.Write(",\n"); } }); } base.DumpMembers(output); }
protected virtual void DumpMembers(LuaTextWriter output) { var props = new Dictionary <string, object?>(_properties); foreach (var key in PropertyOrder) { if (props.Remove(key, out var value)) { output.WriteProperty(key, value); } } foreach (var(key, value) in props.OrderBy(GetOrder).ThenBy(p => p.Key)) { output.WriteProperty(key, value); } if (Clear.Any()) { output.WriteObjectValue("Clear", () => { foreach (var(k, v) in Clear) { output.WriteKey(k); output.Write("="); output.WriteValue((object?)v); output.Write(",\n"); } });
protected override void DumpMembers(LuaTextWriter output) { output.WriteKeyValue("Level", Level); output.WriteList("SpellsPerDay", SpellsPerDay.Cast <object>()); output.WriteList("SpellsKnown", SpellsKnown.Cast <object>()); base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { output.WriteProperty("Category", Category); output.WriteProperty("Nature", Nature); output.WriteProperty("Names", Names); output.WriteProperty("Types", Types); base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { foreach (var(category, weapons) in Changes) { output.WriteProperty(category, weapons); } base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { output.WriteProperty("SourceLong", SourceLong); output.WriteProperty("SourceShort", SourceShort); output.WriteProperty("SourceWeb", SourceWeb); output.WriteProperty("SourceDate", SourceDate); base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { output.WriteProperty(nameof(CriticalHitMultiplier), CriticalHitMultiplier); output.WriteProperty(nameof(CriticalHitRange), CriticalHitRange); output.WriteProperty(nameof(Damage), Damage); output.WriteProperty(nameof(Types), Types); output.WriteProperty(nameof(EquipmentModifiers), EquipmentModifiers); base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { output.WriteProperty(nameof(Alignments), Alignments); output.WriteProperty(nameof(Descriptors), Descriptors); output.WriteProperty(nameof(Schools), Schools); output.WriteProperty(nameof(SubSchools), SubSchools); output.WriteProperty(nameof(Names), Names); base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { output.Write("Selector="); output.WriteStartFunction("language"); output.Write($"return {string.Join(" or ", Selectors)}\n"); output.WriteEndFunction(); output.Write(",\n"); base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { output.WriteObjectValue("Choice", () => { output.WriteProperty("Kind", ChoiceKind); output.WriteProperty("Value", ChoiceValue); }); output.WriteProperty("Levels", Levels); base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { output.WriteProperty("Type", Type); output.Write("IsValidFollower="); output.WriteStartFunction("follower"); output.Write($"return {string.Join(" or ", FollowerConditions)}\n"); output.WriteEndFunction(); output.Write(",\n"); output.WriteProperty("FollowerLevelAdjustment", FollowerLevelAdjustment); base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { output.WriteProperty("Name", Name); output.WriteProperty("Types", Types); output.WriteProperty("Count", Count); output.WriteProperty("Damage", Damage); if (SpecialDescription != null) { output.WriteProperty("SpecialDescription", SpecialDescription); } base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { output.WriteKeyValue("Category", Category); output.WriteList("Variables", Variables); output.WriteKeyValue("Formula", Formula); if (Type != null) { output.Write("Type="); Type.Dump(output); output.Write(",\n"); } base.DumpMembers(output); }
public void Dump(LuaTextWriter output) { output.Write("SetSource("); output.WriteStartObject(); output.WriteKeyValue("SourceLong", SourceLong); output.WriteKeyValue("SourceShort", SourceShort); output.WriteKeyValue("SourceWeb", SourceWeb); output.WriteKeyValue("SourceDate", SourceDate); output.WriteEndObject(); output.Write(")\n"); }
protected override void DumpMembers(LuaTextWriter output) { output.WriteKeyValue("Category", Category); output.WriteKeyValue("Nature", Nature); if (Name != null) { output.WriteKeyValue("Name", Name); } else if (Type != null) { output.WriteKeyValue("Type", Type); } base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { output.WriteProperty("Level", Level); if (DoNotAddHitDie) { output.WriteProperty("DoNotAddHitDie", DoNotAddHitDie); } if (DoNotAddSkillPoints) { output.WriteProperty("DoNotAddSkillPoints", DoNotAddSkillPoints); } output.WriteProperty("SpellsPerDay", SpellsPerDay); output.WriteProperty("SpellsKnown", SpellsKnown); base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { output.WriteKeyValue("Name", Name); if (SpellStat != null) { output.WriteKeyValue("SpellStat", SpellStat); } if (SpellListChoiceCount.HasValue) { Debug.Assert(SpellListChoices != null); output.WriteKeyValue("SpellListChoiceCount", SpellListChoiceCount.Value.ToString()); output.WriteList("SpellListChoices", SpellListChoices); } base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { if (Any) { output.WriteProperty("Any", Any); } if (CasterType != null) { output.WriteProperty("Type", CasterType); } if (ClassNames != null) { output.WriteProperty("ClassNames", ClassNames); } base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { output.WriteProperty("Name", Name); output.WriteProperty("SpellBookName", SpellBookName); output.WriteProperty("Times", Times); output.WriteProperty("TimeUnit", TimeUnit); if (DC != null) { output.WriteProperty("DC", DC); } if (CasterLevel != null) { output.WriteProperty("CasterLevel", CasterLevel); } base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { if (Name != null) { output.WriteKeyValue("Name", Name); } else if (Type != null) { output.WriteKeyValue("Type", Type); if (Invert) { output.WriteKeyValue("Invert", Invert); } } else if (All) { output.WriteKeyValue("All", All); } base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { if (Ability != null) { output.WriteProperty("Ability", Ability); } else if (Class) { output.WriteProperty("Class", true); } else if (Race) { output.WriteProperty("Race", true); } else if (Skill) { output.WriteProperty("Skill", true); } output.WriteProperty("Names", Names); base.DumpMembers(output); }
public void Dump(LuaTextWriter output) { output.Write("Formula("); output.WriteValue(Value.AsSpan()); output.Write(")"); }
protected override void DumpMembers(LuaTextWriter output) { output.WriteList("Names", Names); base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { base.DumpMembers(output); output.WriteList("Conditions", Conditions); }
protected override void DumpMembers(LuaTextWriter output) { output.WriteProperty(nameof(Key), Key); output.WriteProperty(nameof(Parameters), Parameters); base.DumpMembers(output); }
static void Main(string[] args) { var lstFile = args[0]; var luaFile = args[1]; var lines = ReadTsv(lstFile).ToList(); Console.WriteLine($"Converting File {lstFile} -> {luaFile}"); var dir = Path.GetDirectoryName(luaFile); Directory.CreateDirectory(dir); using (var outputStream = new FileStream(luaFile, FileMode.Create, FileAccess.Write)) using (var output = new StreamWriter(outputStream)) { var repoDir = Repository.Discover(lstFile); if (string.IsNullOrEmpty(repoDir)) { throw new ArgumentException("LST file must be in a git repo."); } var repo = new Repository(repoDir); var repoUrl = repo.Network.Remotes["upstream"]?.Url ?? repo.Network.Remotes["origin"]?.Url; var sha = repo.Head.Tip.Sha; var relativePath = Path.GetRelativePath(repo.Info.WorkingDirectory, lstFile); output.WriteLine($"-- Converted From LST file {relativePath}"); output.WriteLine($"-- From repository {repoUrl} at commit {sha}"); var luaWriter = new LuaTextWriter(output); string? state = null; ClassDefinition?classDefinition = null; foreach (var line in lines) { var firstField = line.Fields.First(); switch (state) { case "classStart": Debug.Assert(classDefinition != null); if (!firstField.StartsWith("CLASS:")) { state = "class"; goto case "class"; } classDefinition.AddLine(line); break; case "class": Debug.Assert(classDefinition != null); if (firstField.StartsWith("CLASS:")) { classDefinition.Dump(luaWriter); classDefinition = null; state = null; goto default; } classDefinition.AddLine(line); break; default: var firstValue = line.Fields.First(); if (firstValue.StartsWith("CLASS:")) { var name = firstValue.SplitTuple(':').right; state = "classStart"; classDefinition = new ClassDefinition(name.Value); classDefinition.AddLine(line); break; } if (firstValue.StartsWith("SOURCE")) { SourceDefinition.Parse(line.Fields).Dump(luaWriter); break; } throw new NotSupportedException($"State: {state}, First Field: {line.Fields.First().Value}"); } } } Console.WriteLine("Done."); }
protected override void DumpMembers(LuaTextWriter output) { output.WriteProperty(nameof(Names), Names); base.DumpMembers(output); }