Write your damage formula as text and see every fight in your game at once — a time-to-kill matrix for every attacker and defender level, plus a report that names what is broken. No dependencies.Unity 2022.3 LTS or newer. Requires uGUI and TextMeshPro, both shipped with Unity; if either is absent the assemblies are gated off so the project still compiles, and a setup window installs them in one click. The core is pure C# with no reflection or codegen, so it behaves the same on Mono and IL2CPP. Built-in, URP and HDRP. Full C# source, no DLLs.You cannot balance combat by reading numbers. A hero curve and an enemy curve look fine side by side in the inspector, and then at level 40 something one-shots the player, or a boss becomes a wall, and nobody finds out until a review says so.Quick Stat Formula Pro draws the whole thing. Write your damage formula as plain text, point it at two archetypes, and get a time-to-kill matrix: every attacker level against every defender level, coloured by how far that fight is from the length you asked for. Green means the fight lasts as long as you wanted. Red means it is over too fast. Black means nobody wins.On the sample matchup that ships with the package, an even fight takes 9 hits at level 1 and 2 at level 60, because the enemy's attack grows on a power curve and the hero's defense grows linearly. Nobody catches that by reading the numbers. It is one glance here.WHAT YOU GETThe time-to-kill matrix — 576 fights evaluated with your own formula and redrawn as you type. Hover any cell for the damage, crit, average, dps, hits and seconds of that exact level pair.A target band, not a guess — you say a fair fight should take 4 to 12 hits. The colours are measured against that, so the picture is an answer rather than a decoration.Formulas as text — max(1, a.attack * (1 - d.defense / (d.defense + armorK))). Full operator precedence, brackets, comparisons and 15 functions including min, max, clamp, lerp, step and if. Parse errors appear under the field in words a designer can act on.A report that reads the same numbers — misspelled stats that silently read as zero, formulas that will not parse, fights nobody can win, one-shots on the diagonal, crit chance that overflows 100% and is being clamped, and scaling that runs backwards so levelling up makes the kill slower.Five growth models — flat, linear, power, exponential and a curve you draw by hand, per stat, with floors, caps and whole-number rounding.Buffs and debuffs that stack properly — flat, then percent-add pooled together, then percent-multiply applied one after another. Two +20% percent-add buffs give +40%; two percent-multiply buffs give +44%. Remove them all by whatever applied them.Seeded rolls — the same seed replays the same fight, in the editor and in your build.The demo proves it — press Fight To The End in the demo scene and the swing count matches the number the matrix predicted, because both are the same BalanceMath call.A pure-C# core — the parser is a plain recursive-descent tree. No reflection, no codegen, no hidden scripting backend. It behaves identically in the editor, in a build and on IL2CPP.Nothing produces NaN — a zero denominator yields 0, sqrt of a negative yields 0, log(0) yields 0. One bad number can never poison the whole table.USING IT FROM CODEusing Krykftn.QuickStatFormulaPro;var hero = new StatSheet(heroProfile, level: 12);hero.AddModifier(new StatModifier("attack", StatModifierKind.PercentAdd, 0.25f, ragePotion));float attack = hero.Get("attack");hero.RemoveAllFrom(ragePotion);var roll = BalanceMath.Roll(formula, hero, enemy, random);if (roll.landed) enemy.TakeDamage(roll.damage, roll.critical);int hits = BalanceMath.HitsToKill(formula, hero, enemy);var matrix = BalanceMatrix.Build(formula, heroProfile, enemyProfile, resolution: 24);The report is a plain call too, so you can run it in your build pipeline and fail a commit that breaks the curve:var issues = BalanceReport.Inspect(formula, attacker, defender, matrix);TRY IT IN 30 SECONDS1. Import the package.2. Tools > Quick Stat Formula Pro > Setup Window, then Create Sample Matchup.3. The balance window opens on Enemy attacking Hero. Follow the white diagonal — that is the even fight. Green at the start, red by the cap.4. Open the report in the right-hand panel. It has already named the problem.5. Change the enemy's attack growth from Power to Linear and watch the whole matrix go green.REQUIREMENTSUnity 2022.3 LTS or newer. uGUI and TextMeshPro, both of which ship with Unity and are in every standard template. If either is missing the package switches itself off instead of throwing compile errors, and a one-click setup window installs them. No third-party packages, ever. Built-in, URP and HDRP.Namespace: Krykftn.QuickStatFormulaProFull C# source included. No DLLs.The design, specification and verification criteria of this tool are our own, drawn from needs we hit in our own Unity projects. AI-assisted coding tools were used to accelerate writing the C# implementation.Every numerical claim this asset makes is verified by automated headless tests with hand-computed expected values, including deliberate negative controls where we break the code on purpose and confirm the tests catch it. For this package that includes the damage formula evaluation, the time-to-kill matrix and the balance report thresholds.All store images are real screenshots of the shipping tool running in the Unity Editor and real renders of the included demo scenes. No AI image generation was used in any marketing material.No third-party assets, models, textures or audio are included.

