protected override void DumpMembers(LuaTextWriter output) { output.WriteProperty("NameShort", NameShort); output.WriteProperty("NameLong", NameLong); output.WriteProperty("Url", Url); base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { output.WriteProperty("Category", Category); output.WriteProperty("Key", Key); output.WriteProperty("DataFormat", DataFormat); if (DisplayName != null) { output.WriteProperty("DisplayName", DisplayName); } if (Explanation != null) { output.WriteProperty("Explanation", Explanation); } if (Required) { output.WriteProperty("Required", true); } if (Selectable) { output.WriteProperty("Selectable", true); } if (Visible) { output.WriteProperty("Visible", true); } base.DumpMembers(output); }
protected override void ConvertLine(LuaTextWriter luaWriter, TsvLine line) { if (line.Fields.Any() && !line.Fields.First().Value.StartsWith("SOURCE")) { var firstField = line.Fields.First(); if (firstField.StartsWith("FOLLOWER:")) { var def = new FollowerBonusDefinition(); foreach (var field in line.Fields) { def.AddField(field); } def.Dump(luaWriter); luaWriter.Write("\n"); return; } if (firstField.StartsWith("MASTERBONUSRACE:")) { var def = new FolloweeBonusDefinition(); foreach (var field in line.Fields) { def.AddField(field); } def.Dump(luaWriter); luaWriter.Write("\n"); return; } } base.ConvertLine(luaWriter, line); }
public override void DumpCondition(LuaTextWriter output) { string cond; if (Min.HasValue && Max.HasValue) { cond = $"character.Level >= {Min} and character.Level <= {Max}"; } else if (Min.HasValue) { cond = $"character.Level >= {Min}"; } else if (Max.HasValue) { cond = $"character.Level <= {Max}"; } else { throw new InvalidOperationException("Invalid PCLevelCondition"); } if (Inverted) { cond = $"not ({cond})"; } output.Write(cond); }
public void Convert(string lstFile, string 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); var lines = Program.ReadTsv(lstFile).ToList(); foreach (var line in lines) { ConvertLine(luaWriter, line); } FinalizeConversion(luaWriter); }
public void Dump(LuaTextWriter output) { output.WriteStartObject(); output.WriteKeyValue("Name", Name); output.WriteKeyValue("InitialValue", InitialValue); output.WriteEndObject(); }
protected override void ConvertLine(LuaTextWriter luaWriter, TsvLine line) { void FinishKit() { _startingKit?.Dump(luaWriter); luaWriter.Write("\n"); _startingKit = null; } var firstField = line.Fields.First(); if (firstField.TryRemovePrefix("REGION:", out var region)) { FinishKit(); _requiredRegion = region.Value; return; } if (firstField.TryRemovePrefix("STARTPACK:", out _)) { FinishKit(); _startingKit = new StartingKitDefinition(_requiredRegion); _startingKit.AddStartLine(line); return; } if (!firstField.StartsWith("SOURCE")) { Debug.Assert(_startingKit != null, nameof(_startingKit) + " != null"); _startingKit.AddLine(line); return; } base.ConvertLine(luaWriter, line); }
public override void DumpCondition(LuaTextWriter output) { if (Inverted) { output.Write("not ("); } output.Write(Count.ToString()); output.Write(" <= #filter(ipairs(character.ClassLevels),\n"); output.WriteStartFunction("class, level"); if (Any) { output.Write("return true\n"); } else { output.Write("return "); var conditions = RequiredClassLevels.Select(t => $"class == \"{t.Key}\" and level >= {t.Value}").Concat( RequiredSpellCastingLevels.Select(t => $"GetSpellCastingType(class) == \"{t.Key}\" and level >= {t.Value}")).Concat( RequiredClassTypeLevels.Select(t => $"ClassIsType(class, \"{t.Key}\") and level >= {t.Value}")); output.Write(string.Join(" or ", conditions.Select(c => $"({c})"))); output.WriteLine(); } output.WriteEndFunction(); output.Write(")"); if (Inverted) { output.Write(")"); } }
public override void DumpCondition(LuaTextWriter output) { string cond; if (Min.HasValue && Max.HasValue) { cond = $"{ValueToCheck} >= {Min} and {ValueToCheck} <= {Max}"; } else if (Min.HasValue) { cond = $"{ValueToCheck} >= {Min}"; } else if (Max.HasValue) { cond = $"{ValueToCheck} <= {Max}"; } else { throw new InvalidOperationException("Invalid MinMaxCondition"); } if (Inverted) { cond = $"not ({cond})"; } output.Write(cond); }
protected virtual void DumpMembers(LuaTextWriter output) { if (!string.IsNullOrEmpty(SourcePage)) { output.WriteKeyValue("SourcePage", SourcePage); } }
protected override void FinalizeConversion(LuaTextWriter luaWriter) { if (_classDefinition != null) { _classDefinition.Dump(luaWriter); luaWriter.Write("\n"); } }
protected override void FinalizeConversion(LuaTextWriter luaWriter) { if (_startingKit != null) { _startingKit.Dump(luaWriter); luaWriter.Write("\n"); } }
public void Dump(LuaTextWriter output) { output.WriteStartObject(); output.WriteKeyValue("Name", Name); output.WriteKeyValue("Replace", Replace); output.WriteKeyValue("Stack", Stack); output.WriteEndObject(); }
public virtual void Dump(LuaTextWriter output) { output.WriteStartFunction("character"); output.Write("return "); DumpCondition(output); output.WriteLine(); output.WriteEndFunction(); }
public override void DumpCondition(LuaTextWriter output) { var condition = string.Join(" or ", Alignments.Select(alignment => $"character.Diety.Alignment == \"{alignment}\"")); if (Inverted) { condition = $"not ({condition})"; } output.Write(condition); }
public override void DumpCondition(LuaTextWriter output) { var condition = $"character.TotalAttackBonus >= {RequiredBonus}"; if (Inverted) { condition = $"not ({condition})"; } output.Write(condition); }
public override void DumpCondition(LuaTextWriter output) { var condition = $"({string.Join(" + ", Conditions.Select(c => $"({c})"))}) >= {Count}"; if (Inverted) { condition = $"not ({condition})"; } output.Write(condition); }
public override void DumpCondition(LuaTextWriter output) { var condition = $"character.Facts[\"{Type}\"][\"{Identifier}\"] == \"{Value}\""; if (Inverted) { condition = $"not ({condition})"; } output.Write(condition); }
protected override void DumpMembers(LuaTextWriter output) { output.WriteKey("Choose"); output.Write("="); output.Write(Choose); output.Write(",\n"); if (MaxTimes.HasValue) { output.WriteProperty("MaxTimes", MaxTimes.Value); } base.DumpMembers(output); }
public override void DumpCondition(LuaTextWriter output) { var matchingSpellCount = string.Join(" + ", SpellNames.Select(n => $"character.HasSpell(\"{n}\") and 1 or 0")); var condition = $"({matchingSpellCount}) >= {Count}"; if (Inverted) { condition = $"not ({condition})"; } output.Write(condition); }
protected override void DumpMembers(LuaTextWriter output) { base.DumpMembers(output); output.WriteKey("Condition"); output.Write("="); output.WriteStartFunction("character"); output.Write("return "); output.Write(Condition); output.Write("\n"); output.WriteEndFunction(); output.Write(",\n"); }
protected override void DumpMembers(LuaTextWriter output) { base.DumpMembers(output); output.Write("Apply="); output.WriteStartFunction("kit"); foreach (var line in _lines) { line.Dump(output); } output.WriteEndFunction(); output.Write(",\n"); }
public override void DumpCondition(LuaTextWriter output) { if (InvertCampaignCondition) { output.Write("not "); } output.Write("any(sources, "); output.WriteStartFunction("source"); output.Write("return "); base.DumpCondition(output); output.Write("\n"); output.WriteEndFunction(); output.Write(")"); }
protected virtual void ConvertLine(LuaTextWriter luaWriter, TsvLine line) { var firstValue = line.Fields.First(); if (State == null && firstValue.StartsWith("SOURCE")) { luaWriter.Write("SetSource("); SourceDefinition.Parse(line.Fields).Dump(luaWriter); luaWriter.Write(")\n"); return; } throw new ParseFailedException(firstValue, $"Unknown field {firstValue.Value} seen in state {State}"); }
protected override void DumpMembers(LuaTextWriter output) { base.DumpMembers(output); output.WriteProperty("Type", Type); if (LocalTo != null) { output.WriteProperty("Local", LocalTo); } if (Channel != null) { output.WriteProperty("Channel", Channel); } output.WriteProperty("Explanation", Explanation); }
public void Dump(LuaTextWriter output) { output.WriteStartObject(); output.WriteProperty("Name", Name); if (Replace) { output.WriteProperty("Replace", Replace); } if (Stack) { output.WriteProperty("Stack", Stack); } output.WriteEndObject(); }
protected override void DumpMembers(LuaTextWriter output) { if (Level != null) { output.WriteProperty("Level", Level.Value); } if (Name != null) { output.WriteProperty("Name", Name); } if (Type != null) { output.WriteProperty("Type", Type); } base.DumpMembers(output); }
protected override void DumpMembers(LuaTextWriter output) { base.DumpMembers(output); if (All) { output.WriteProperty("All", true); } else if (string.IsNullOrEmpty(Type)) { output.WriteProperty("Name", Name); } else { output.WriteProperty("Type", Type); } }
protected override void ConvertLine(LuaTextWriter luaWriter, TsvLine line) { if (line.Fields.Any() && !line.Fields.First().Value.StartsWith("SOURCE")) { var def = new T(); foreach (var field in line.Fields) { def.AddField(field); } def.Dump(luaWriter); luaWriter.Write("\n"); return; } base.ConvertLine(luaWriter, line); }
protected override void ConvertLine(LuaTextWriter luaWriter, TsvLine line) { 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); return; case "class": Debug.Assert(_classDefinition != null); if (firstField.StartsWith("CLASS:")) { _classDefinition.Dump(luaWriter); luaWriter.Write("\n"); _classDefinition = null; State = null; goto default; } _classDefinition.AddLine(line); return; default: if (firstField.StartsWith("CLASS:")) { var name = firstField.SplitTuple(':').right; State = "classStart"; _classDefinition = new ClassDefinition(name.Value); _classDefinition.AddLine(line); return; } break; } base.ConvertLine(luaWriter, line); }