praetorium.gg
Chapter Approved 2026-2027 Force Disposition matchups, primary missions, and scoring.
First seen 2026-11-05 · Last seen 2026-11-05 · Source: webmcp.com
Answer 8 · Act 3 · Transact 0 · Score: Not yet scored
Tool inspector
simulate_combat
Runs Praetorium's exact combat simulator for one attacking unit, with any attached leaders, against one defending unit at full strength: shooting, melee, and shooting followed by melee. Returns expected models destroyed, expected wounds lost, the chance to destroy the unit, cumulative odds, weapons used, the rule and weapon-mode choices each side can change, datasheet citations, and a simulator link. Passive datasheet rules apply by default; stratagems and conditional rules stay off until chosen. Rules the simulator cannot calculate are never approximated: a phase it cannot estimate has status refused with its reasons, and recognised rules it leaves out are listed under notCalculated, so explain those gaps rather than retrying. Errors are reserved for unknown factions or units, illegal unit sizes or attachments, and unavailable reference data. Like the standalone simulator page, it uses default loadouts and no detachment; unit sizes and attachments must be legal.
Page: /missions/chapter-approved-2026-2027
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
attacker |
object | yes | — |
defender |
object | yes | — |
modifiers |
object | no | Situational modifiers the simulator page offers, such as { "all": { "cover": true, "hitModifier": -1 } }, { "melee": { "charged": true } }, or { "target": { "invulnerable": 4 } }. |
weaponModes |
object | no | Weapon mode choices by key from a previous result, such as a frag or krak profile. |
Raw JSON schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"attacker": {
"type": "object",
"properties": {
"faction": {
"type": "string",
"minLength": 1,
"maxLength": 160,
"description": "Faction id, URL slug, or display name from list_reference or list_units."
},
"unit": {
"type": "string",
"minLength": 1,
"maxLength": 400,
"description": "Unit id, slug, name, or referenceId from list_units."
},
"models": {
"description": "Model count; must be a legal unit size. Defaults to the minimum size.",
"type": "integer",
"minimum": 1,
"maximum": 60
},
"attached": {
"description": "Leaders or support units joined to the unit, from its canBeLedBy and canBeSupportedBy. A unit that joins one of these instead, such as Nork Deddog joining a Cadian Command Squad, goes after it.",
"maxItems": 2,
"type": "array",
"items": {
"type": "object",
"properties": {
"unit": {
"type": "string",
"minLength": 1,
"maxLength": 400,
"description": "Unit id, slug, name, or referenceId from list_units."
},
"models": {
"description": "Model count; must be a legal unit size. Defaults to the minimum size.",
"type": "integer",
"minimum": 1,
"maximum": 60
},
"faction": {
"description": "Defaults to the unit's faction.",
"type": "string",
"minLength": 1,
"maxLength": 160
}
},
"required": [
"unit"
]
}
},
"rules": {
"description": "Rule choices by rule id from a previous result: 0 turns a rule off and n selects its nth option.",
"type": "object",
"propertyNames": {
"type": "string",
"maxLength": 400
},
"additionalProperties": {
"type": "integer",
"minimum": 0,
"maximum": 20
}
}
},
"required": [
"faction",
"unit"
]
},
"defender": {
"type": "object",
"properties": {
"faction": {
"type": "string",
"minLength": 1,
"maxLength": 160,
"description": "Faction id, URL slug, or display name from list_reference or list_units."
},
"unit": {
"type": "string",
"minLength": 1,
"maxLength": 400,
"description": "Unit id, slug, name, or referenceId from list_units."
},
"models": {
"description": "Model count; must be a legal unit size. Defaults to the minimum size.",
"type": "integer",
"minimum": 1,
"maximum": 60
},
"attached": {
"description": "Leaders or support units joined to the unit, from its canBeLedBy and canBeSupportedBy. A unit that joins one of these instead, such as Nork Deddog joining a Cadian Command Squad, goes after it.",
"maxItems": 2,
"type": "array",
"items": {
"type": "object",
"properties": {
"unit": {
"type": "string",
"minLength": 1,
"maxLength": 400,
"description": "Unit id, slug, name, or referenceId from list_units."
},
"models": {
"description": "Model count; must be a legal unit size. Defaults to the minimum size.",
"type": "integer",
"minimum": 1,
"maximum": 60
},
"faction": {
"description": "Defaults to the unit's faction.",
"type": "string",
"minLength": 1,
"maxLength": 160
}
},
"required": [
"unit"
]
}
},
"rules": {
"description": "Rule choices by rule id from a previous result: 0 turns a rule off and n selects its nth option.",
"type": "object",
"propertyNames": {
"type": "string",
"maxLength": 400
},
"additionalProperties": {
"type": "integer",
"minimum": 0,
"maximum": 20
}
}
},
"required": [
"faction",
"unit"
]
},
"modifiers": {
"description": "Situational modifiers the simulator page offers, such as { \"all\": { \"cover\": true, \"hitModifier\": -1 } }, { \"melee\": { \"charged\": true } }, or { \"target\": { \"invulnerable\": 4 } }.",
"type": "object",
"properties": {
"all": {
"type": "object",
"properties": {
"cover": {
"type": "boolean"
},
"indirectFire": {
"type": "string",
"enum": [
"direct",
"unobserved",
"spotted"
]
},
"halfRange": {
"type": "boolean"
},
"heavy": {
"type": "boolean"
},
"charged": {
"type": "boolean"
},
"hitModifier": {
"type": "integer",
"minimum": -100,
"maximum": 100
},
"psychicHitModifier": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"positiveWoundModifier": {
"type": "integer",
"minimum": -100,
"maximum": 100
},
"woundModifier": {
"type": "integer",
"minimum": -100,
"maximum": 100
},
"hitReroll": {
"type": "string",
"enum": [
"none",
"ones",
"failed"
]
},
"woundReroll": {
"type": "string",
"enum": [
"none",
"ones",
"failed"
]
},
"lethal": {
"type": "boolean"
}
}
},
"ranged": {
"type": "object",
"properties": {
"cover": {
"type": "boolean"
},
"indirectFire": {
"type": "string",
"enum": [
"direct",
"unobserved",
"spotted"
]
},
"halfRange": {
"type": "boolean"
},
"heavy": {
"type": "boolean"
},
"charged": {
"type": "boolean"
},
"hitModifier": {
"type": "integer",
"minimum": -100,
"maximum": 100
},
"psychicHitModifier": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"positiveWoundModifier": {
"type": "integer",
"minimum": -100,
"maximum": 100
},
"woundModifier": {
"type": "integer",
"minimum": -100,
"maximum": 100
},
"hitReroll": {
"type": "string",
"enum": [
"none",
"ones",
"failed"
]
},
"woundReroll": {
"type": "string",
"enum": [
"none",
"ones",
"failed"
]
},
"lethal": {
"type": "boolean"
}
}
},
"melee": {
"type": "object",
"properties": {
"cover": {
"type": "boolean"
},
"indirectFire": {
"type": "string",
"enum": [
"direct",
"unobserved",
"spotted"
]
},
"halfRange": {
"type": "boolean"
},
"heavy": {
"type": "boolean"
},
"charged": {
"type": "boolean"
},
"hitModifier": {
"type": "integer",
"minimum": -100,
"maximum": 100
},
"psychicHitModifier": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"positiveWoundModifier": {
"type": "integer",
"minimum": -100,
"maximum": 100
},
"woundModifier": {
"type": "integer",
"minimum": -100,
"maximum": 100
},
"hitReroll": {
"type": "string",
"enum": [
"none",
"ones",
"failed"
]
},
"woundReroll": {
"type": "string",
"enum": [
"none",
"ones",
"failed"
]
},
"lethal": {
"type": "boolean"
}
}
},
"weapons": {
"type": "object",
"properties": {
"all": {
"type": "object",
"properties": {
"skill": {
"type": "integer",
"minimum": -10,
"maximum": 10
},
"strength": {
"type": "integer",
"minimum": -10,
"maximum": 10
},
"attacks": {
"type": "integer",
"minimum": -10,
"maximum": 10
},
"ap": {
"type": "integer",
"minimum": -10,
"maximum": 10
},
"damage": {
"type": "integer",
"minimum": -10,
"maximum": 10
},
"criticalHit": {
"type": "integer",
"minimum": 2,
"maximum": 6
},
"criticalWound": {
"type": "integer",
"minimum": 2,
"maximum": 6
},
"sustained": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 100
},
{
"type": "object",
"properties": {
"dice": {
"type": "integer",
"minimum": 0,
"maximum": 10
},
"sides": {
"anyOf": [
{
"type": "number",
"const": 3
},
{
"type": "number",
"const": 6
}
]
},
"bonus": {
"type": "integer",
"minimum": 0,
"maximum": 100
}
},
"required": [
"dice",
"sides",
"bonus"
]
}
]
},
"lethal": {
"type": "boolean"
},
"devastating": {
"type": "boolean"
},
"damageReroll": {
"type": "boolean"
}
}
},
"ranged": {
"type": "object",
"properties": {
"skill": {
"type": "integer",
"minimum": -10,
"maximum": 10
},
"strength": {
"type": "integer",
"minimum": -10,
"maximum": 10
},
"attacks": {
"type": "integer",
"minimum": -10,
"maximum": 10
},
"ap": {
"type": "integer",
"minimum": -10,
"maximum": 10
},
"damage": {
"type": "integer",
"minimum": -10,
"maximum": 10
},
"criticalHit": {
"type": "integer",
"minimum": 2,
"maximum": 6
},
"criticalWound": {
"type": "integer",
"minimum": 2,
"maximum": 6
},
"sustained": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 100
},
{
"type": "object",
"properties": {
"dice": {
"type": "integer",
"minimum": 0,
"maximum": 10
},
"sides": {
"anyOf": [
{
"type": "number",
"const": 3
},
{
"type": "number",
"const": 6
}
]
},
"bonus": {
"type": "integer",
"minimum": 0,
"maximum": 100
}
},
"required": [
"dice",
"sides",
"bonus"
]
}
]
},
"lethal": {
"type": "boolean"
},
"devastating": {
"type": "boolean"
},
"damageReroll": {
"type": "boolean"
}
}
},
"melee": {
"type": "object",
"properties": {
"skill": {
"type": "integer",
"minimum": -10,
"maximum": 10
},
"strength": {
"type": "integer",
"minimum": -10,
"maximum": 10
},
"attacks": {
"type": "integer",
"minimum": -10,
"maximum": 10
},
"ap": {
"type": "integer",
"minimum": -10,
"maximum": 10
},
"damage": {
"type": "integer",
"minimum": -10,
"maximum": 10
},
"criticalHit": {
"type": "integer",
"minimum": 2,
"maximum": 6
},
"criticalWound": {
"type": "integer",
"minimum": 2,
"maximum": 6
},
"sustained": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 100
},
{
"type": "object",
"properties": {
"dice": {
"type": "integer",
"minimum": 0,
"maximum": 10
},
"sides": {
"anyOf": [
{
"type": "number",
"const": 3
},
{
"type": "number",
"const": 6
}
]
},
"bonus": {
"type": "integer",
"minimum": 0,
"maximum": 100
}
},
"required": [
"dice",
"sides",
"bonus"
]
}
]
},
"lethal": {
"type": "boolean"
},
"devastating": {
"type": "boolean"
},
"damageReroll": {
"type": "boolean"
}
}
}
}
},
"target": {
"type": "object",
"properties": {
"toughness": {
"type": "integer",
"minimum": -10,
"maximum": 10
},
"save": {
"type": "integer",
"minimum": -10,
"maximum": 10
},
"invulnerable": {
"anyOf": [
{
"type": "integer",
"minimum": 2,
"maximum": 6
},
{
"type": "null"
}
]
},
"saveReroll": {
"type": "string",
"enum": [
"ones",
"failed"
]
},
"damageReduction": {
"type": "boolean"
},
"halveDamage": {
"type": "boolean"
}
}
},
"feelNoPain": {
"anyOf": [
{
"type": "integer",
"minimum": 2,
"maximum": 6
},
{
"type": "null"
}
]
}
}
},
"weaponModes": {
"description": "Weapon mode choices by key from a previous result, such as a frag or krak profile.",
"type": "object",
"propertyNames": {
"type": "string",
"maxLength": 400
},
"additionalProperties": {
"type": "string",
"maxLength": 200
}
}
},
"required": [
"attacker",
"defender"
]
}
Similar websites
wfsim.app
A Warframe calculator that simulates the fight instead of estimating it — builder, simulator, optimizer. Every formula cites its source, and the golden tests ar…
commonplace-webmcp.vercel.app
Commonplace is an editable social reading space built for people and their browser agents.
pixelforge-studio.appcaster.chatgpt.site
A professional browser pixel-art editor for drawing, frame animation, palettes, sprite sheets, GIF export, and WebMCP automation.
pixelite.taskcraft.site
Pixelite