@page "/"
@rendermode InteractiveServer
@inject LookupService LookupService
Loading the starter attack and critical data from SQLite.
Attack tables still come from the starter dataset, while critical lookups now read the importer-managed tables loaded into the same SQLite file.
The page surfaces both the gameplay result and the import metadata behind each critical entry.
Summoning tables...
Resolve the attack roll, then the critical, from one place.
rolemaster.db
Choose an attack table, armor type, and attack roll. If the attack produces a critical and you provide the critical roll, the app resolves that follow-up automatically.
@attackError
} @if (attackResult is not null) {Table notation: @attackResult.RawNotation
@if (!string.IsNullOrWhiteSpace(attackResult.Notes)) {@attackResult.Notes
} @if (attackResult.AutoCritical is not null) {Use this when you already know the critical table, column, roll, and group if the selected table has variants.
@criticalError
} @if (criticalResult is not null) {Attack tables remain starter content. Critical tables below are whatever importer-managed entries are currently loaded into the app database.
@attackTable.Key