Skip to content

Stats and Stat Blocks

Stats are the numeric attributes your fiction tracks. Strength and Dexterity in a D&D-style system. Mana capacity in a hard magic system. Cultivation tier in a xianxia. Cyberware load in cyberpunk. Sanity in a cosmic horror. Stats are the unit of measurement your system uses to describe what a character, creature, item, or location can or can’t do. Everything else in the Magic System module — formulas, abilities, modifiers, probability analysis — is built on top of the stats you define. Get the stats right and everything downstream gets easier. Get them wrong and you’ll spend the rest of your project fighting formulas that don’t make sense.

Every stat has a handful of properties you set when you create it:

PropertyWhat it means
NameThe full display name of the stat — “Strength,” “Mana Capacity,” “Cultivation Tier”
AbbreviationA short form used in formulas and compact displays — “STR,” “MANA,” “CT”
CategoryWhich group the stat belongs to, for organization and display
Value typeInteger, float, or dice step
Min / Max / DefaultThe legal range of values for this stat, and the starting value when a new stat block is created
DescriptionFreeform notes about what the stat represents and how it’s used
Sort orderWhere the stat appears when stats are listed together

The value type matters more than it looks like it does. An integer stat can only hold whole numbers — Strength 15, Dexterity 12, Level 4. A float stat allows decimals — Cultivation Progress 3.75, Influence Rating 87.5. A dice step stat is more unusual — it holds a dice notation like 2d6 or 1d20, which is useful for systems like Savage Worlds where a character’s proficiency is represented as which die they roll rather than a flat number.

Min and max are enforced. If you set Strength with min 1 and max 20, and you try to assign Strength 25 to a character, the stat block editor will clamp or reject the value depending on the mode. That’s not a limitation, it’s a safety net — it stops a single bad edit from silently breaking your ruleset.

Categories are color-coded groups for organizing stats. They don’t affect computation — they’re purely visual. But they matter more than you’d expect for usability. A ruleset with twenty stats in a flat list is miserable to read. Twenty stats grouped into “Physical,” “Mental,” “Social,” and “Magic” (each with its own color) is legible at a glance.

Create categories in the ruleset editor and assign each stat to one when you create or edit it. Most systems end up with three to five categories. If you need more, the system is probably too large — consider whether some of what you’re tracking is better represented as modifiers or extra fields instead of stats.

A stat block is what you get when you apply a ruleset template to a specific lore entry. It’s the rendered version of the ruleset’s stats, populated with that entry’s actual values.

When you create a new character in the Legendry, and your active ruleset has a template for characters, a stat block is automatically created on that character with default values for every stat. You open the character’s detail panel and the stat block is right there — each stat listed with its value, editable inline, with the formula-computed derived values updating live as you change base values.

Multiple stat blocks per entry are allowed. A character can have a “Default” stat block and a “Combat Variant” — maybe the combat variant represents the character enraged or in a specific form, with different base values. Ishvana doesn’t make you pick one. You create as many as the fiction needs and switch between them per scene as needed.

The math of a stat block works in three layers.

Base values are what you type in. Strength 15. Dexterity 12. Constitution 14. These are the raw numbers the character starts with before anything modifies them.

Modifiers are the passive bonuses that change base values. A magic item that adds +2 to Dexterity. A racial trait that adds +1 to Constitution. A feat that overrides Strength to 22 for one scene. Each modifier has a source (what it comes from), an effect type (flat bonus, multiplier, override), and an optional condition. Modifiers stack in a specific order: flat bonuses first, then multipliers, then overrides win if they exist.

Effective values are what you end up with after all modifiers are applied. Strength 15 + gauntlet modifier +2 = Effective Strength 17. Effective Strength 17 is what formulas use — so the D&D-style ability modifier formula floor((STR - 10) / 2) gives +3, not +2.

The stat block panel shows all three layers. Base value, a list of modifiers with their sources, and the final effective value. You can see exactly where a character’s numbers come from, which is the thing that makes stat blocks useful for writing — when a beta reader says “wait, this character was fighting with Strength 14 in chapter three and now it’s 17,” you can look at the stat block and see that the difference is the gauntlet they picked up in chapter five.

Not everything a lore entry tracks is a stat. Some things are categorical — “Class: Fighter” — or narrative — “Background: Grew up on the streets of Port Royal.” Ishvana supports these as extra fields defined on the ruleset template.

An extra field has a key (the internal name), a display label, a type (text, select, number), and an optional set of allowed values if it’s a select. When you open a character with a template that has extra fields, those fields appear alongside the stats in the stat block editor. They save to the stat block same as any other value, and they show up in the character sheet layout if you’re using the Character Sheet Designer.

Extra fields exist so that a ruleset can capture everything about a character in one place without forcing everything into a numeric stat. Classes, races, subclasses, paths, patrons, backgrounds, alignment — all of these are extra fields in a typical fantasy ruleset, not stats.

A template is the bridge between a ruleset and a lore entry type. It says “when you create a character in this ruleset, the character should have these stats, these formulas, these resources, and these extra fields.”

Templates are defined per ruleset and per lore entry type. Your ruleset might have one template for characters and a different template for creatures — characters get six ability scores and a class, creatures get hit points and challenge rating and a single threat value. Both templates are in the same ruleset; they just apply to different entry types.

When you create a new lore entry of a type that has a template, the stat block gets generated automatically from the template. When you switch active rulesets, existing stat blocks don’t get regenerated — they stay in whatever shape they were in when they were created. That’s the “switching is explicit” rule covered in the rulesets page.