Finalize phase 3 mana critical imports

This commit is contained in:
2026-03-14 02:29:28 +01:00
parent 216cfd3433
commit c7467aad13
4 changed files with 175 additions and 13 deletions

View File

@@ -18,6 +18,7 @@ public sealed class StandardCriticalTableParserIntegrationTests
"krush",
"ma-strikes",
"ma-sweeps",
"mana",
"puncture",
"slash",
"subdual",
@@ -41,6 +42,8 @@ public sealed class StandardCriticalTableParserIntegrationTests
yield return ["ballistic-shrapnel", "86-90", "E", "destroy his heart"];
yield return ["arcane-aether", "96-99", "E", "smoking pulp"];
yield return ["ma-strikes", "96-99", "E", "drives bone into brain"];
yield return ["mana", "96-99", "E", "momentarily transformed"];
yield return ["mana", "100", "E", "Mana consumes everything"];
yield return ["tiny", "100", "E", "Vein and artery severed"];
}
@@ -104,6 +107,36 @@ public sealed class StandardCriticalTableParserIntegrationTests
Assert.StartsWith("You recover from your initial swing", result.RawCellText, StringComparison.Ordinal);
}
[Fact]
public async Task Mana_boundary_repair_keeps_96_99_and_100_cells_separated()
{
var entry = LoadManifest().Tables.Single(item => string.Equals(item.Slug, "mana", StringComparison.Ordinal));
var parseResult = await LoadParseResultAsync(entry);
var row96E = parseResult.Table.Results.Single(item =>
string.Equals(item.RollBandLabel, "96-99", StringComparison.Ordinal) &&
string.Equals(item.ColumnKey, "E", StringComparison.Ordinal));
var row100E = parseResult.Table.Results.Single(item =>
string.Equals(item.RollBandLabel, "100", StringComparison.Ordinal) &&
string.Equals(item.ColumnKey, "E", StringComparison.Ordinal));
Assert.Contains("momentarily transformed", row96E.DescriptionText, StringComparison.OrdinalIgnoreCase);
Assert.DoesNotContain("Mana consumes everything", row96E.DescriptionText, StringComparison.OrdinalIgnoreCase);
Assert.StartsWith("Mana consumes everything.", row100E.DescriptionText, StringComparison.Ordinal);
}
[Fact]
public async Task Mana_symbol_only_affix_lines_do_not_pollute_descriptions()
{
var entry = LoadManifest().Tables.Single(item => string.Equals(item.Slug, "mana", StringComparison.Ordinal));
var parseResult = await LoadParseResultAsync(entry);
var row100C = parseResult.Table.Results.Single(item =>
string.Equals(item.RollBandLabel, "100", StringComparison.Ordinal) &&
string.Equals(item.ColumnKey, "C", StringComparison.Ordinal));
Assert.DoesNotContain('\uF052', row100C.DescriptionText);
Assert.DoesNotContain('\uF06C', row100C.DescriptionText);
}
private static async Task<StandardCriticalTableParseResult> LoadParseResultAsync(CriticalImportManifestEntry entry)
{
var xmlPath = Path.Combine(GetArtifactCacheRoot(), $"{entry.Slug}.xml");