Restructure into a multi-deck engine; generalize tools/ off Jund/Reaper hardcodes
Migrates the reaper-king-no-more proof of concept into decks/reaper-king-no-more/
as the first deck under a shared tools/ engine, so the repo can hold many
Commander decks instead of one implicit one.
- tools/deckctx.py: new shared DeckContext, resolves --deck / $MTG_DECK / cwd,
loads a deck's config.yaml, and derives color identity from the commander's
own card data (never a hardcoded color combination).
- cards.py: drop the JUND=frozenset("BRG") constant; jund_legal() renamed to
identity_legal(card, identity); DB() takes an explicit blacklist_path since
the blacklist is per-deck, not shared.
- combos.py, roles.py, similar.py, similar_text.py, bracket_check.py: take
--deck, use the deck's real identity instead of Jund/BRG.
- power.py, card_stats.py, forge_report.py: OURS deck-name constant now comes
from the deck's config (name: / commander), matched via DeckContext instead
of hardcoded "Reaper King No More".
- to_dck.py, batch_run.py, ab_test.py: .dck filename and [metadata] Name= are
derived from the deck (slug / config name), not a hardcoded "reaper.dck".
- generate.py: RECIPES and make_variants.py's VARIANTS (deck-specific
hypotheses) moved out of Python into decks/reaper-king-no-more/variants.yaml;
protected cards now come from config.yaml's protected: list instead of a
hardcoded set.
- New tools/mtg dispatcher: `tools/mtg decks/<name> <tool> [args...]` runs any
tool against any deck without cd-ing into its directory.
- data/ (Scryfall/MTGJSON/Spellbook bulk, ~1.2GB, gitignored) and embeddings.npz
move to the repo root as shared, commander-format-wide data.
- docs/howto.md: moved from the deck dir (it documents the tool, not the deck)
and updated its example commands to the real generalized CLI.
- README.md: rewritten to describe the multi-deck repo and point at
decks/reaper-king-no-more as the reference example.
Verified after the change: bracket_check, combos, and roles against
reaper-king-no-more reproduce the exact PASS/11-combos/role-profile numbers
from before the move; generate.py --list now loads recipes from YAML;
make_variants.py reproduces all 7 hand-curated variants including the
mikaeus FAIL control case; to_dck.py derives the right Name= and filename;
variant.py and compare.py reproduce decks/README.md's original numbers
exactly. The original POC at ~/mtg/reaper-king-no-more is untouched.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QPKgLYpMR8szWNFXyK1XNu
This commit is contained in:
parent
1d4419f094
commit
d4a8a587f0
122 changed files with 31297 additions and 1 deletions
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
data/
|
||||||
|
out/
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
.DS_Store
|
||||||
82
README.md
82
README.md
|
|
@ -1,3 +1,83 @@
|
||||||
# mtg
|
# mtg
|
||||||
|
|
||||||
mark's magic decks
|
A generic toolkit for building, testing, and simulating Magic: The Gathering
|
||||||
|
Commander decks — evidenced by real games played in a real rules engine
|
||||||
|
([Forge](https://github.com/Card-Forge/forge)), not vibes.
|
||||||
|
|
||||||
|
Give it four things about a deck — a commander, a card pool, a blacklist of
|
||||||
|
cards you refuse to play, and a few constraints (bracket, land count, role
|
||||||
|
budget) — and it derives everything else from offline card databases: color
|
||||||
|
identity, legality, Game Changers, Scryfall Tagger tags (so it knows what a
|
||||||
|
"sac outlet" or "drain payoff" *is*), and the Commander Spellbook combo
|
||||||
|
database (108k+ combos). It can then generate deck variants as falsifiable
|
||||||
|
hypotheses, check them against Commander Bracket rules and house rules, and
|
||||||
|
simulate them in Forge to get card-level and deck-level statistics — cast
|
||||||
|
rate, win-rate contribution, synergy pairs — instead of guesses.
|
||||||
|
|
||||||
|
See `docs/howto.md` for the full methodology: what you supply, how pool size
|
||||||
|
and game count determine whether results mean anything, how the Forge AI's
|
||||||
|
weaknesses get worked around, and how to read the output honestly.
|
||||||
|
|
||||||
|
## Layout
|
||||||
|
|
||||||
|
```
|
||||||
|
mtg/
|
||||||
|
tools/ generic engine — works on ANY deck given its config.yaml
|
||||||
|
mtg single dispatcher: tools/mtg decks/<name> <tool> [args...]
|
||||||
|
deckctx.py resolves --deck / $MTG_DECK, loads config.yaml
|
||||||
|
cards.py shared index: oracle + tags + edhrecRank + combos + blacklist
|
||||||
|
bracket_check.py Bracket 3 + house-rule check (game changers, MLD, vacuum combos)
|
||||||
|
combos.py offline combo finder (included / one-card-away)
|
||||||
|
roles.py role classification + budget profile
|
||||||
|
generate.py role-budget variant generator (recipes in <deck>/variants.yaml)
|
||||||
|
make_variants.py hand-curated cut/add variant generator (same file)
|
||||||
|
to_dck.py decklist -> Forge .dck
|
||||||
|
batch_run.py / run_forge.sh / ab_test.py Forge simulation, in bulk or A/B
|
||||||
|
forge_report.py / card_stats.py / power.py turn Forge logs into reports
|
||||||
|
compare.py rebuilds a deck's decks/README.md summary table
|
||||||
|
similar.py / similar_text.py / embed.py semantic "cards like this" search
|
||||||
|
fetch_data.py downloads the shared bulk data below
|
||||||
|
|
||||||
|
decks/
|
||||||
|
reaper-king-no-more/ one deck: data + config, the reference example
|
||||||
|
config.yaml commander, pool, constraints, role budget, protected cards
|
||||||
|
decklist.txt the 100 cards
|
||||||
|
blacklist.txt cards you refuse to play, with reasons
|
||||||
|
variants.yaml variant hypotheses (role-budget recipes + hand-curated cut/add)
|
||||||
|
plan.md / README.md this deck's own design notes
|
||||||
|
forge-overrides/ AI tuning for cards Forge's default AI can't pilot
|
||||||
|
sim_substitutions.yaml simulation-only stand-ins for AI-unpilotable cards
|
||||||
|
decks/<variant>/ RESULTS: one dir per archetype variant (generated)
|
||||||
|
|
||||||
|
data/ gitignored, ~1.2GB — Scryfall/MTGJSON/Spellbook bulk downloads.
|
||||||
|
Shared across every deck: this is Commander-format-wide data,
|
||||||
|
not deck-specific. One copy at the repo root.
|
||||||
|
out/ gitignored scratch output
|
||||||
|
docs/howto.md the full methodology (pool size, game count, AI tuning, caveats)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Quickstart
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# one-time, shared across all decks
|
||||||
|
python3 tools/fetch_data.py # ~1.2GB: Scryfall, MTGJSON, Spellbook
|
||||||
|
python3 tools/embed.py # -> data/embeddings.npz
|
||||||
|
# install Forge 2.0.14 to ~/forge (needs Java 17+)
|
||||||
|
|
||||||
|
# check the reference deck
|
||||||
|
python3 tools/bracket_check.py --deck decks/reaper-king-no-more
|
||||||
|
python3 tools/combos.py --deck decks/reaper-king-no-more
|
||||||
|
python3 tools/roles.py --deck decks/reaper-king-no-more
|
||||||
|
|
||||||
|
# or via the single dispatcher
|
||||||
|
tools/mtg decks/reaper-king-no-more bracket_check
|
||||||
|
tools/mtg decks/reaper-king-no-more variant no-mikaeus --sim 24
|
||||||
|
```
|
||||||
|
|
||||||
|
To add a new deck: copy the shape of `decks/reaper-king-no-more/` (at minimum
|
||||||
|
`config.yaml`, `decklist.txt`, `blacklist.txt`), point `--deck` at it, and
|
||||||
|
every tool in `tools/` works on it immediately — nothing in `tools/` is
|
||||||
|
hardcoded to a specific commander, color identity, or deck name. See
|
||||||
|
`docs/howto.md` for what each config field does and why, and
|
||||||
|
`decks/reaper-king-no-more/plan.md` / `README.md` for a worked example of
|
||||||
|
building one deck end to end.
|
||||||
|
|
|
||||||
13
decks/reaper-king-no-more/README.md
Normal file
13
decks/reaper-king-no-more/README.md
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
https://magic.wizards.com/en/news/announcements/introducing-commander-brackets-beta
|
||||||
|
|
||||||
|
This is a repo to to help me make and undrstand how to play my commander Bracket 3 deck
|
||||||
|
|
||||||
|
goal of this deck is to infinite combo with arisocrats style creature entre abilites
|
||||||
|
|
||||||
|
i'd aim to also have -1/-1 synergy cards as The Reaper, King no More is the commander
|
||||||
|
|
||||||
|
engine effects like blowfly infestation and hapatra vizier of poisons to get infinite etb triggers
|
||||||
|
|
||||||
|
while one off cards that synergize with the reaper like humble defector are great too
|
||||||
|
|
||||||
|
|
||||||
20
decks/reaper-king-no-more/blacklist.txt
Normal file
20
decks/reaper-king-no-more/blacklist.txt
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
# Cards I don't play, regardless of legality or power.
|
||||||
|
#
|
||||||
|
# Format: Card Name | reason
|
||||||
|
# Blank lines and #-comments ignored. Matched exactly against card names.
|
||||||
|
#
|
||||||
|
# These are PREFERENCES, not format rules. bracket_check.py reports them
|
||||||
|
# separately from bracket violations, and the card-search tools filter them
|
||||||
|
# out so they never get re-suggested.
|
||||||
|
|
||||||
|
## boycott -- personal, no game-logic reason
|
||||||
|
Sol Ring | boycott, not a power-level call
|
||||||
|
|
||||||
|
## playstyle: ramp with LANDS, not rocks (we're in green, use it)
|
||||||
|
Mind Stone | prefer land ramp
|
||||||
|
Fellwar Stone | prefer land ramp
|
||||||
|
Everflowing Chalice | prefer land ramp
|
||||||
|
Worn Powerstone | prefer land ramp
|
||||||
|
Thought Vessel | prefer land ramp
|
||||||
|
Coalition Relic | prefer land ramp
|
||||||
|
Chromatic Lantern | prefer land ramp
|
||||||
66
decks/reaper-king-no-more/config.yaml
Normal file
66
decks/reaper-king-no-more/config.yaml
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
# What you supply. Everything else is derived from the card databases.
|
||||||
|
|
||||||
|
# Deck name, used as the Forge [metadata] Name= value and to match "our seat"
|
||||||
|
# in Forge's play-by-play logs. Deliberately distinct from the commander's own
|
||||||
|
# card name (which also appears in the decklist) so log matching never
|
||||||
|
# confuses "cast the commander" with "our player seat".
|
||||||
|
name: "Reaper King No More"
|
||||||
|
|
||||||
|
commander: "The Reaper, King No More"
|
||||||
|
|
||||||
|
# Which cards decks may be built from.
|
||||||
|
# Either a rank cap (popularity proxy) or an explicit curated file.
|
||||||
|
pool:
|
||||||
|
max_edhrec_rank: 1000 # ~451 cards in Jund. See howto.md "Choosing a pool size"
|
||||||
|
# file: mypool.txt # ...or curate the list yourself
|
||||||
|
min_mana_value: 0
|
||||||
|
max_mana_value: 7
|
||||||
|
|
||||||
|
# Cards you refuse to play, with reasons. See blacklist.txt.
|
||||||
|
blacklist_file: blacklist.txt
|
||||||
|
|
||||||
|
constraints:
|
||||||
|
bracket: 3 # game changers <=3, no MLD, extra turns sparse
|
||||||
|
no_vacuum_combos: true # house rule: no 2-card infinites needing no board state
|
||||||
|
lands: 36
|
||||||
|
deck_size: 100
|
||||||
|
|
||||||
|
# How many of each job a deck should contain. The generator fills to these
|
||||||
|
# targets and a variant is a deliberate deviation from them.
|
||||||
|
# Roles are detected automatically from Scryfall Tagger tags.
|
||||||
|
roles:
|
||||||
|
minus_engine: 16
|
||||||
|
sac_outlet: 6
|
||||||
|
sac_payoff: 4
|
||||||
|
opp_death: 7
|
||||||
|
drain: 5
|
||||||
|
death_trigger: 8
|
||||||
|
ramp: 9
|
||||||
|
draw: 6
|
||||||
|
removal_mass: 3
|
||||||
|
removal_spot: 8
|
||||||
|
tokens: 2
|
||||||
|
proliferate: 2
|
||||||
|
reanimate: 1
|
||||||
|
tutor: 0
|
||||||
|
|
||||||
|
# Cards the generator may never cut -- your deck's identity.
|
||||||
|
protected:
|
||||||
|
- "Hapatra, Vizier of Poisons"
|
||||||
|
- "Blowfly Infestation"
|
||||||
|
- "Nest of Scarabs"
|
||||||
|
- "Necroskitter"
|
||||||
|
- "Yawgmoth, Thran Physician"
|
||||||
|
- "Blood Artist"
|
||||||
|
- "Zulaport Cutthroat"
|
||||||
|
- "Viscera Seer"
|
||||||
|
- "Carrion Feeder"
|
||||||
|
|
||||||
|
# tools/generate.py's variant recipes -- role-budget reallocation hypotheses.
|
||||||
|
variants_file: variants.yaml
|
||||||
|
|
||||||
|
simulation:
|
||||||
|
games_per_deck: 150 # 150 = +/-6.9pp. Below 100 is noise. See howto.md
|
||||||
|
workers: 16 # ~1 core and ~1.5GB RAM each
|
||||||
|
heap: 2g # per-worker JVM heap
|
||||||
|
rotate_opponents: true # 4 precon pods, so results aren't matchup-specific
|
||||||
89
decks/reaper-king-no-more/decklist.txt
Normal file
89
decks/reaper-king-no-more/decklist.txt
Normal file
|
|
@ -0,0 +1,89 @@
|
||||||
|
# Commander
|
||||||
|
1 The Reaper, King No More
|
||||||
|
|
||||||
|
# Main
|
||||||
|
1 Hapatra, Vizier of Poisons
|
||||||
|
1 Blowfly Infestation
|
||||||
|
1 Nest of Scarabs
|
||||||
|
1 Necroskitter
|
||||||
|
1 Yawgmoth, Thran Physician
|
||||||
|
1 Flourishing Defenses
|
||||||
|
1 Obelisk Spider
|
||||||
|
1 Plague Belcher
|
||||||
|
1 Archfiend of Ifnir
|
||||||
|
1 Grim Poppet
|
||||||
|
1 Contagion Clasp
|
||||||
|
1 Black Sun's Zenith
|
||||||
|
1 Murderous Redcap
|
||||||
|
1 Putrid Goblin
|
||||||
|
1 Cauldron of Souls
|
||||||
|
1 Viscera Seer
|
||||||
|
1 Carrion Feeder
|
||||||
|
1 Ashnod's Altar
|
||||||
|
1 Phyrexian Altar
|
||||||
|
1 Goblin Bombardment
|
||||||
|
1 Yahenni, Undying Partisan
|
||||||
|
1 Woe Strider
|
||||||
|
1 Blood Artist
|
||||||
|
1 Zulaport Cutthroat
|
||||||
|
1 Vengeful Bloodwitch
|
||||||
|
1 Poison-Tip Archer
|
||||||
|
1 Mirkwood Bats
|
||||||
|
1 Mayhem Devil
|
||||||
|
1 Syr Konrad, the Grim
|
||||||
|
1 Bastion of Remembrance
|
||||||
|
1 Mazirek, Kraul Death Priest
|
||||||
|
1 The Meathook Massacre
|
||||||
|
1 Massacre Wurm
|
||||||
|
1 Massacre Girl, Known Killer
|
||||||
|
1 Humble Defector
|
||||||
|
1 Midnight Reaper
|
||||||
|
1 Grim Haruspex
|
||||||
|
1 Village Rites
|
||||||
|
1 Deadly Dispute
|
||||||
|
1 Greater Good
|
||||||
|
1 Beast Within
|
||||||
|
1 Chaos Warp
|
||||||
|
1 Terminate
|
||||||
|
1 Bedevil
|
||||||
|
1 Assassin's Trophy
|
||||||
|
1 Damnation
|
||||||
|
1 Toxic Deluge
|
||||||
|
1 Vandalblast
|
||||||
|
1 Cultivate
|
||||||
|
1 Kodama's Reach
|
||||||
|
1 Farseek
|
||||||
|
1 Nature's Lore
|
||||||
|
1 Three Visits
|
||||||
|
1 Birds of Paradise
|
||||||
|
1 Sakura-Tribe Elder
|
||||||
|
1 Persistent Constrictor
|
||||||
|
1 Overseer of the Damned
|
||||||
|
1 Skullclamp
|
||||||
|
1 Rampant Growth
|
||||||
|
1 Harrow
|
||||||
|
1 Wood Elves
|
||||||
|
1 Springbloom Druid
|
||||||
|
1 Binding the Old Gods
|
||||||
|
1 Command Tower
|
||||||
|
1 Path of Ancestry
|
||||||
|
1 Exotic Orchard
|
||||||
|
1 Blood Crypt
|
||||||
|
1 Overgrown Tomb
|
||||||
|
1 Stomping Ground
|
||||||
|
1 Blackcleave Cliffs
|
||||||
|
1 Blooming Marsh
|
||||||
|
1 Copperline Gorge
|
||||||
|
1 Savage Lands
|
||||||
|
1 Jungle Hollow
|
||||||
|
1 Bloodfell Caves
|
||||||
|
1 Rugged Highlands
|
||||||
|
1 Ziatora's Proving Ground
|
||||||
|
1 Bojuka Bog
|
||||||
|
1 Castle Locthwain
|
||||||
|
1 Llanowar Wastes
|
||||||
|
1 Karplusan Forest
|
||||||
|
1 Yavimaya, Cradle of Growth
|
||||||
|
8 Swamp
|
||||||
|
5 Forest
|
||||||
|
4 Mountain
|
||||||
83
decks/reaper-king-no-more/decks/README.md
Normal file
83
decks/reaper-king-no-more/decks/README.md
Normal file
|
|
@ -0,0 +1,83 @@
|
||||||
|
# decks/
|
||||||
|
|
||||||
|
Forge simulation results and deck analysis, one directory per **archetype variant**.
|
||||||
|
|
||||||
|
Each variant is a hypothesis: change a few cards, then measure what it does to legality, combo density, and win rate. Every file here is generated — see *regenerating* below.
|
||||||
|
|
||||||
|
## variants
|
||||||
|
|
||||||
|
| variant | bracket 3 | vacuum combos | combos | sac outlets | cmdr synergy | lands | avg MV | Forge win rate |
|
||||||
|
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||||
|
| [`no-mikaeus/`](no-mikaeus/) ⭐ | **PASS** | 0 | 11 | 8 | 6 | 36 | 3.02 | 29% (24g) |
|
||||||
|
| [`fast-ramp/`](fast-ramp/) | **PASS** | 0 | 11 | 8 | 6 | 36 | 2.84 | 33% (6g) |
|
||||||
|
| [`lean-outlets/`](lean-outlets/) | **PASS** | 0 | 10 | 5 | 7 | 36 | 2.97 | — |
|
||||||
|
| [`commander-focus/`](commander-focus/) | **PASS** | 0 | 7 | 7 | 10 | 36 | 3.03 | — |
|
||||||
|
| [`heavy-removal/`](heavy-removal/) | **PASS** | 0 | 7 | 8 | 8 | 36 | 2.95 | — |
|
||||||
|
| [`low-curve/`](low-curve/) | **PASS** | 0 | 11 | 8 | 9 | 36 | 2.67 | — |
|
||||||
|
| [`mikaeus/`](mikaeus/) | **FAIL** | 7 | 39 | 8 | 6 | 36 | 3.08 | — |
|
||||||
|
| [`aggro-hate/`](aggro-hate/) | **PASS** | 0 | 9 | 6 | 5 | 36 | 3.03 | 50% (2g) |
|
||||||
|
| [`card-engine/`](card-engine/) | **PASS** | 0 | 10 | 8 | 6 | 36 | 2.97 | — |
|
||||||
|
| [`go-wide/`](go-wide/) | **PASS** | 0 | 10 | 8 | 6 | 36 | 2.97 | 0% (2g) |
|
||||||
|
| [`grindy/`](grindy/) | **PASS** | 0 | 9 | 6 | 5 | 36 | 2.92 | 100% (1g) |
|
||||||
|
| [`opponent-facing/`](opponent-facing/) | **PASS** | 0 | 9 | 5 | 10 | 36 | 2.92 | — |
|
||||||
|
| [`proliferate/`](proliferate/) | **PASS** | 0 | 10 | 5 | 5 | 36 | 3.08 | — |
|
||||||
|
|
||||||
|
⭐ = current baseline
|
||||||
|
|
||||||
|
## the hypotheses
|
||||||
|
|
||||||
|
**`no-mikaeus`** — Baseline. Aristocrats + -1/-1, every combo needs board state.
|
||||||
|
|
||||||
|
**`fast-ramp`** — fast-ramp
|
||||||
|
|
||||||
|
**`lean-outlets`** — The deck runs 8 sac outlets and probably needs ~5. Cut 3 for interaction and card advantage -- does consistency actually drop?
|
||||||
|
|
||||||
|
**`commander-focus`** — The commander only steals from OPPONENTS' creatures, but the deck's -1/-1 engine mostly counters our own. Push counters onto their board.
|
||||||
|
|
||||||
|
**`heavy-removal`** — Bracket 3 pods interact. Trade combo redundancy for removal and see whether surviving longer beats assembling faster.
|
||||||
|
|
||||||
|
**`low-curve`** — Avg MV is 3.02 and the engine lands ~T6. Cut the top of the curve entirely -- does the deck come online sooner and win more?
|
||||||
|
|
||||||
|
**`mikaeus`** — Does the highest-leverage combo card (28 combos) stay legal? Expected FAIL: goes infinite with every sac outlet.
|
||||||
|
|
||||||
|
**`aggro-hate`** — aggro-hate
|
||||||
|
|
||||||
|
**`card-engine`** — card-engine
|
||||||
|
|
||||||
|
**`go-wide`** — go-wide
|
||||||
|
|
||||||
|
**`grindy`** — grindy
|
||||||
|
|
||||||
|
**`opponent-facing`** — opponent-facing
|
||||||
|
|
||||||
|
**`proliferate`** — proliferate
|
||||||
|
|
||||||
|
## layout
|
||||||
|
|
||||||
|
```
|
||||||
|
decks/<variant>/
|
||||||
|
decklist.txt the 100 cards, "N Card Name" per line
|
||||||
|
bracket.txt bracket-3 + house-rule check
|
||||||
|
combos.txt combos already in the deck, and one card away
|
||||||
|
sim/ Forge runs, one triple per batch:
|
||||||
|
<stamp>.log raw Forge output, every game
|
||||||
|
<stamp>.txt human-readable report
|
||||||
|
<stamp>.json machine-readable results
|
||||||
|
README.md generated summary
|
||||||
|
```
|
||||||
|
|
||||||
|
## regenerating
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 tools/make_variants.py # rebuild every decklist from the spec
|
||||||
|
python3 tools/variant.py <name> # analysis for one variant (~10s)
|
||||||
|
python3 tools/variant.py <name> --sim 24 # + 24 Forge games (~25 min)
|
||||||
|
python3 tools/compare.py # rebuild this file
|
||||||
|
```
|
||||||
|
|
||||||
|
The decklists are generated from `tools/make_variants.py`, which holds each variant as a cut/add list against the baseline. Change the baseline and every variant follows. Analysis files are rewritten each run; **sim runs are additive**, so batches accumulate and stay comparable.
|
||||||
|
|
||||||
|
## reading the win rates
|
||||||
|
|
||||||
|
Forge's AI is heuristic and **weak at combo decks** by its own documentation. Ours is a combo deck, so the AI under-plays it. Treat win rates as a **floor** and as evidence the deck functions and its cards interact — not as a power rating. Random baseline in a 4-player pod is 25%. Opponents are stock Commander precons (roughly bracket 2).
|
||||||
|
|
||||||
21
decks/reaper-king-no-more/decks/aggro-hate/README.md
Normal file
21
decks/reaper-king-no-more/decks/aggro-hate/README.md
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
# aggro-hate
|
||||||
|
|
||||||
|
_generated 2026-09-07 23:37Z by `tools/variant.py`_
|
||||||
|
|
||||||
|
- **bracket 3: PASS** (two-card vacuum combos: 0)
|
||||||
|
- 86 lines in `decklist.txt`
|
||||||
|
|
||||||
|
## files
|
||||||
|
|
||||||
|
| file | what it is |
|
||||||
|
| --- | --- |
|
||||||
|
| `decklist.txt` | the deck, `N Card Name` per line |
|
||||||
|
| `bracket.txt` | bracket-3 + house-rule check |
|
||||||
|
| `combos.txt` | combos in the deck, and one card away |
|
||||||
|
| `sim/` | Forge runs — `.log` raw, `.txt` report, `.json` data |
|
||||||
|
| `card_stats.txt` | per-card cast rate, avg round, win% (newest sim) |
|
||||||
|
|
||||||
|
## simulation runs
|
||||||
|
|
||||||
|
_none yet — run with `--sim 24`_
|
||||||
|
|
||||||
24
decks/reaper-king-no-more/decks/aggro-hate/bracket.txt
Normal file
24
decks/reaper-king-no-more/decks/aggro-hate/bracket.txt
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
COMMANDER: The Reaper, King No More
|
||||||
|
DECK SIZE: 99 + 1 commander = 100
|
||||||
|
|
||||||
|
GAME CHANGERS: 0/3 OK
|
||||||
|
|
||||||
|
MASS LAND DENIAL: 0 OK
|
||||||
|
|
||||||
|
EXTRA TURNS: 0 OK
|
||||||
|
|
||||||
|
TWO-CARD INFINITE COMBOS IN A VACUUM: 0 OK
|
||||||
|
|
||||||
|
two-card combos needing board state (ALLOWED, 3):
|
||||||
|
- Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Flourishing Defenses
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Nest of Scarabs
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
|
||||||
|
==========================================================
|
||||||
|
BRACKET 3: PASS
|
||||||
86
decks/reaper-king-no-more/decks/aggro-hate/card_stats.txt
Normal file
86
decks/reaper-king-no-more/decks/aggro-hate/card_stats.txt
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
==========================================================================
|
||||||
|
CARD STATISTICS — 20260908T001736Z.log
|
||||||
|
==========================================================================
|
||||||
|
games: 2 our wins: 0 (0.0%) deck: /home/markdoeswork/mtg/reaper-king-no-more/decks/aggro-hate/decklist.txt
|
||||||
|
|
||||||
|
NEVER CAST IN ANY GAME: 42
|
||||||
|
--------------------------------------------------------------------------
|
||||||
|
(dead weight, unplayable by the AI, or just never drawn in time)
|
||||||
|
Accursed Marauder
|
||||||
|
Ashnod's Altar
|
||||||
|
Assassin's Trophy
|
||||||
|
Beast Within
|
||||||
|
Binding the Old Gods
|
||||||
|
Black Sun's Zenith
|
||||||
|
Blasphemous Act
|
||||||
|
Contagion Clasp
|
||||||
|
Cultivate
|
||||||
|
Damnation
|
||||||
|
Deadly Dispute
|
||||||
|
Deadly Rollick
|
||||||
|
Farseek
|
||||||
|
Feed the Swarm
|
||||||
|
Flourishing Defenses
|
||||||
|
Goblin Bombardment
|
||||||
|
Greater Good
|
||||||
|
Grim Haruspex
|
||||||
|
Hapatra, Vizier of Poisons
|
||||||
|
Humble Defector
|
||||||
|
Kodama's Reach
|
||||||
|
Massacre Wurm
|
||||||
|
Mayhem Devil
|
||||||
|
Mazirek, Kraul Death Priest
|
||||||
|
Midnight Reaper
|
||||||
|
Mirkwood Bats
|
||||||
|
Murderous Redcap
|
||||||
|
Nature's Lore
|
||||||
|
Persistent Constrictor
|
||||||
|
Phyrexian Altar
|
||||||
|
Plague Belcher
|
||||||
|
Poison-Tip Archer
|
||||||
|
Putrid Goblin
|
||||||
|
Springbloom Druid
|
||||||
|
The Meathook Massacre
|
||||||
|
Toxic Deluge
|
||||||
|
Vandalblast
|
||||||
|
Vengeful Bloodwitch
|
||||||
|
Village Rites
|
||||||
|
Viscera Seer
|
||||||
|
Wood Elves
|
||||||
|
Yawgmoth, Thran Physician
|
||||||
|
|
||||||
|
MOST-CAST CARDS
|
||||||
|
--------------------------------------------------------------------------
|
||||||
|
card cast in avg round win% when cast
|
||||||
|
Necroskitter 2/2 R11.5 0%
|
||||||
|
The Reaper, King No More 2/2 R8.7 0%
|
||||||
|
Terminate 2/2 R9.0 0%
|
||||||
|
Nest of Scarabs 1/2 R8.0 0%
|
||||||
|
Carrion Feeder 1/2 R4.0 0%
|
||||||
|
Chandra's Ignition 1/2 R7.0 0%
|
||||||
|
Blood Artist 1/2 R7.0 0%
|
||||||
|
Skullclamp 1/2 R1.0 0%
|
||||||
|
Three Visits 1/2 R3.0 0%
|
||||||
|
Zulaport Cutthroat 1/2 R6.0 0%
|
||||||
|
Massacre Girl, Known Killer 1/2 R7.0 0%
|
||||||
|
Bedevil 1/2 R9.0 0%
|
||||||
|
Archfiend of Ifnir 1/2 R11.0 0%
|
||||||
|
Chaos Warp 1/2 R6.0 0%
|
||||||
|
Birds of Paradise 1/2 R6.0 0%
|
||||||
|
Harrow 1/2 R3.0 0%
|
||||||
|
Overseer of the Damned 1/2 R9.0 0%
|
||||||
|
Rampant Growth 1/2 R2.0 0%
|
||||||
|
Blowfly Infestation 1/2 R6.0 0%
|
||||||
|
Syr Konrad, the Grim 1/2 R10.0 0%
|
||||||
|
|
||||||
|
CAVEATS — DO NOT CUT CARDS ON THIS ALONE
|
||||||
|
--------------------------------------------------------------------------
|
||||||
|
* 2 games is a tiny sample. A card cast in 5 games has a win-rate
|
||||||
|
swing of +/-40% from noise alone.
|
||||||
|
* 'Never cast' conflates three very different things: a bad card, a
|
||||||
|
card the AI cannot use, and a card that was simply never drawn.
|
||||||
|
* Correlation only. Cards cast in LONG games look good because long
|
||||||
|
games are ones we survived -- the card didn't cause the win.
|
||||||
|
* Forge's AI is weak at combo; it under-casts combo pieces.
|
||||||
|
|
||||||
|
raw: /home/markdoeswork/mtg/reaper-king-no-more/decks/aggro-hate/sim/20260908T001736Z-cards.json
|
||||||
78
decks/reaper-king-no-more/decks/aggro-hate/combos.txt
Normal file
78
decks/reaper-king-no-more/decks/aggro-hate/combos.txt
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
==================================================================
|
||||||
|
COMBOS ALREADY IN THE DECK: 9
|
||||||
|
==================================================================
|
||||||
|
[E] Blowfly Infestation + Flourishing Defenses
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Nest of Scarabs
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Yawgmoth, Thran Physician + Nest of Scarabs + Blood Artist
|
||||||
|
-> Near-infinite -1/-1 counters
|
||||||
|
-> Near-infinite card draw
|
||||||
|
-> Near-infinite death triggers
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: There is at least one other creature on the battlefield.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Blood Artist
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Zulaport Cutthroat
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Viscera Seer
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Ashnod's Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colorless mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Phyrexian Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colored mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
|
||||||
|
==================================================================
|
||||||
|
ONE CARD AWAY: 286 combos, 90 distinct cards
|
||||||
|
==================================================================
|
||||||
|
15 combos Mikaeus, the Unhallowed {3}{B}{B}{B} #1306
|
||||||
|
10 combos First Day of Class {1}{R} #10147
|
||||||
|
8 combos Veinwitch Coven {2}{B} #4179
|
||||||
|
8 combos Host of the Hereafter {2}{B}{G} #7758
|
||||||
|
7 combos Rhythm of the Wild {1}{R}{G} #216
|
||||||
|
7 combos Grumgully, the Generous {1}{R}{G} #4341
|
||||||
|
7 combos Scurry Oak {2}{G} #2259
|
||||||
|
6 combos Thran Vigil {1}{B} #6285
|
||||||
|
6 combos Rocksteady, Mutant Marauder {2}{G} #10233
|
||||||
|
6 combos Support Mission {2}{G} #31928
|
||||||
|
6 combos Captain Kathryn Janeway {3}{G} #26133
|
||||||
|
6 combos Surrak and Goreclaw {4}{G}{G} #1600
|
||||||
|
6 combos Warden of the Grove {2}{G} #2262
|
||||||
|
6 combos Railway Brawler {3}{G}{G} #2493
|
||||||
|
6 combos Uncivil Unrest {4}{R} #2947
|
||||||
|
|
||||||
|
decklist: /home/markdoeswork/mtg/reaper-king-no-more/decks/aggro-hate/decklist.txt | source: data/variants.json (108,535 combos)
|
||||||
95
decks/reaper-king-no-more/decks/aggro-hate/decklist.txt
Normal file
95
decks/reaper-king-no-more/decks/aggro-hate/decklist.txt
Normal file
|
|
@ -0,0 +1,95 @@
|
||||||
|
# aggro-hate
|
||||||
|
# 15 of 17 losses were life hitting 0 against aggro. Trade combo redundancy for sweepers and spot removal.
|
||||||
|
|
||||||
|
# generated by tools/generate.py from decks/no-mikaeus
|
||||||
|
# roles: {'removal_mass': 3, 'removal_spot': 2, 'minus_engine': -3, 'sac_outlet': -2}
|
||||||
|
|
||||||
|
# Commander
|
||||||
|
1 The Reaper, King No More
|
||||||
|
|
||||||
|
# Main
|
||||||
|
1 Accursed Marauder
|
||||||
|
1 Archfiend of Ifnir
|
||||||
|
1 Ashnod's Altar
|
||||||
|
1 Assassin's Trophy
|
||||||
|
1 Bastion of Remembrance
|
||||||
|
1 Beast Within
|
||||||
|
1 Bedevil
|
||||||
|
1 Binding the Old Gods
|
||||||
|
1 Birds of Paradise
|
||||||
|
1 Black Sun's Zenith
|
||||||
|
1 Blackcleave Cliffs
|
||||||
|
1 Blasphemous Act
|
||||||
|
1 Blood Artist
|
||||||
|
1 Blood Crypt
|
||||||
|
1 Bloodfell Caves
|
||||||
|
1 Blooming Marsh
|
||||||
|
1 Blowfly Infestation
|
||||||
|
1 Bojuka Bog
|
||||||
|
1 Carrion Feeder
|
||||||
|
1 Castle Locthwain
|
||||||
|
1 Chandra's Ignition
|
||||||
|
1 Chaos Warp
|
||||||
|
1 Command Tower
|
||||||
|
1 Contagion Clasp
|
||||||
|
1 Copperline Gorge
|
||||||
|
1 Cultivate
|
||||||
|
1 Damnation
|
||||||
|
1 Deadly Dispute
|
||||||
|
1 Deadly Rollick
|
||||||
|
1 Exotic Orchard
|
||||||
|
1 Farseek
|
||||||
|
1 Feed the Swarm
|
||||||
|
1 Flourishing Defenses
|
||||||
|
1 Goblin Bombardment
|
||||||
|
1 Greater Good
|
||||||
|
1 Grim Haruspex
|
||||||
|
1 Hapatra, Vizier of Poisons
|
||||||
|
1 Harrow
|
||||||
|
1 Humble Defector
|
||||||
|
1 Jungle Hollow
|
||||||
|
1 Karplusan Forest
|
||||||
|
1 Kodama's Reach
|
||||||
|
1 Llanowar Wastes
|
||||||
|
1 Massacre Girl, Known Killer
|
||||||
|
1 Massacre Wurm
|
||||||
|
1 Mayhem Devil
|
||||||
|
1 Mazirek, Kraul Death Priest
|
||||||
|
1 Midnight Reaper
|
||||||
|
1 Mirkwood Bats
|
||||||
|
1 Murderous Redcap
|
||||||
|
1 Nature's Lore
|
||||||
|
1 Necroskitter
|
||||||
|
1 Nest of Scarabs
|
||||||
|
1 Overgrown Tomb
|
||||||
|
1 Overseer of the Damned
|
||||||
|
1 Path of Ancestry
|
||||||
|
1 Persistent Constrictor
|
||||||
|
1 Phyrexian Altar
|
||||||
|
1 Plague Belcher
|
||||||
|
1 Poison-Tip Archer
|
||||||
|
1 Putrid Goblin
|
||||||
|
1 Rampant Growth
|
||||||
|
1 Rugged Highlands
|
||||||
|
1 Sakura-Tribe Elder
|
||||||
|
1 Savage Lands
|
||||||
|
1 Skullclamp
|
||||||
|
1 Springbloom Druid
|
||||||
|
1 Stomping Ground
|
||||||
|
1 Syr Konrad, the Grim
|
||||||
|
1 Terminate
|
||||||
|
1 The Meathook Massacre
|
||||||
|
1 Three Visits
|
||||||
|
1 Toxic Deluge
|
||||||
|
1 Vandalblast
|
||||||
|
1 Vengeful Bloodwitch
|
||||||
|
1 Village Rites
|
||||||
|
1 Viscera Seer
|
||||||
|
1 Wood Elves
|
||||||
|
1 Yavimaya, Cradle of Growth
|
||||||
|
1 Yawgmoth, Thran Physician
|
||||||
|
1 Ziatora's Proving Ground
|
||||||
|
1 Zulaport Cutthroat
|
||||||
|
8 Swamp
|
||||||
|
5 Forest
|
||||||
|
4 Mountain
|
||||||
|
|
@ -0,0 +1,583 @@
|
||||||
|
{
|
||||||
|
"log": "/home/markdoeswork/mtg/reaper-king-no-more/decks/aggro-hate/sim/20260908T001736Z.log",
|
||||||
|
"games": 2,
|
||||||
|
"base_win_rate": 0.0,
|
||||||
|
"cards": [
|
||||||
|
{
|
||||||
|
"card": "Necroskitter",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 11.5,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "The Reaper, King No More",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 8.666666666666666,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Terminate",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 9.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Nest of Scarabs",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 8.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Carrion Feeder",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 4.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Chandra's Ignition",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 7.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Blood Artist",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 7.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Skullclamp",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 1.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Three Visits",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 3.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Zulaport Cutthroat",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 6.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Massacre Girl, Known Killer",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 7.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Bedevil",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 9.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Archfiend of Ifnir",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 11.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Chaos Warp",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 6.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Birds of Paradise",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 6.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Harrow",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 3.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Overseer of the Damned",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 9.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Rampant Growth",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 2.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Blowfly Infestation",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 6.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Syr Konrad, the Grim",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 10.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Bastion of Remembrance",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 11.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Sakura-Tribe Elder",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 12.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Greater Good",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Poison-Tip Archer",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Wood Elves",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Humble Defector",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Putrid Goblin",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "The Meathook Massacre",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Farseek",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Grim Haruspex",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Mayhem Devil",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Black Sun's Zenith",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Phyrexian Altar",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Nature's Lore",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Blasphemous Act",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Mazirek, Kraul Death Priest",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Hapatra, Vizier of Poisons",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Plague Belcher",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Yawgmoth, Thran Physician",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Contagion Clasp",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Toxic Deluge",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Murderous Redcap",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Beast Within",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Springbloom Druid",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Cultivate",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Deadly Dispute",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Mirkwood Bats",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Binding the Old Gods",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Midnight Reaper",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Feed the Swarm",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Kodama's Reach",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Deadly Rollick",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Flourishing Defenses",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Village Rites",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Accursed Marauder",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Ashnod's Altar",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Damnation",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Vengeful Bloodwitch",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Massacre Wurm",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Persistent Constrictor",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Goblin Bombardment",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Viscera Seer",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Vandalblast",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Assassin's Trophy",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"generated": "20260908T002027Z",
|
||||||
|
"engine": "Forge 2.0.14",
|
||||||
|
"format": "Commander, 4 players",
|
||||||
|
"games_requested": "2",
|
||||||
|
"games_completed": 2,
|
||||||
|
"seed": "20260907",
|
||||||
|
"decklist_file": "/home/markdoeswork/mtg/reaper-king-no-more/decks/aggro-hate/decklist.txt",
|
||||||
|
"log_file": "/home/markdoeswork/mtg/reaper-king-no-more/decks/aggro-hate/sim/20260908T001736Z.log",
|
||||||
|
"caveat": "Forge AI is weak at combo decks; treat win rate as a floor"
|
||||||
|
},
|
||||||
|
"win_counts": {
|
||||||
|
"Reaper King No More": 1,
|
||||||
|
"Faceless Menace [C19] [2019]": 1,
|
||||||
|
"Merciless Rage [C19] [2019]": 0,
|
||||||
|
"Arcane Maelstrom [C20] [2020]": 0
|
||||||
|
},
|
||||||
|
"our_win_rate": 0.5,
|
||||||
|
"games": [
|
||||||
|
{
|
||||||
|
"turns": 22,
|
||||||
|
"winner": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 1,
|
||||||
|
"ms": 120068
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 32,
|
||||||
|
"winner": "Faceless Menace [C19] [2019]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 2,
|
||||||
|
"ms": 46164
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
1850
decks/reaper-king-no-more/decks/aggro-hate/sim/20260908T001736Z.log
Normal file
1850
decks/reaper-king-no-more/decks/aggro-hate/sim/20260908T001736Z.log
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,45 @@
|
||||||
|
====================================================================
|
||||||
|
FORGE SIMULATION REPORT — 4-player Commander pod
|
||||||
|
====================================================================
|
||||||
|
games completed : 2 (requested 2) seed: 20260907
|
||||||
|
decklist : /home/markdoeswork/mtg/reaper-king-no-more/decks/aggro-hate/decklist.txt (full 100 cards)
|
||||||
|
engine : Forge 2.0.14, full rules, AI vs AI
|
||||||
|
|
||||||
|
WIN RATE
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
our deck : 1/2 (50.0%) [random baseline in a 4-pod = 25%]
|
||||||
|
|
||||||
|
all players:
|
||||||
|
Reaper King No More 1 (50.0%) ############### <-- ours
|
||||||
|
Faceless Menace [C19] [2019] 1 (50.0%) ###############
|
||||||
|
Merciless Rage [C19] [2019] 0 ( 0.0%)
|
||||||
|
Arcane Maelstrom [C20] [2020] 0 ( 0.0%)
|
||||||
|
|
||||||
|
GAME LENGTH
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
turns median 27 min 22 max 32
|
||||||
|
seconds median 83 total 2.8 min
|
||||||
|
|
||||||
|
HOW OUR DECK LOST
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
1x life total reached 0
|
||||||
|
|
||||||
|
WHO BEAT US (winner, in games our deck lost)
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
1x Faceless Menace [C19] [2019]
|
||||||
|
|
||||||
|
CAVEAT — READ THIS BEFORE TRUSTING THE WIN RATE
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
Forge's AI is heuristic and, by its own documentation, WEAK AT COMBO
|
||||||
|
decks. Ours is a combo/aristocrats deck, so the AI systematically
|
||||||
|
under-plays it: it will miss sac-loop lines a human would see.
|
||||||
|
Read this as a FLOOR on the deck's power, and as proof the deck
|
||||||
|
functions and its cards interact — not as a power rating.
|
||||||
|
Opponents are stock precons, which are roughly bracket 2.
|
||||||
|
|
||||||
|
====================================================================
|
||||||
|
decklist : /home/markdoeswork/mtg/reaper-king-no-more/decks/aggro-hate/decklist.txt
|
||||||
|
full log : /home/markdoeswork/mtg/reaper-king-no-more/decks/aggro-hate/sim/20260908T001736Z.log (every game, all Forge output)
|
||||||
|
raw data : /home/markdoeswork/mtg/reaper-king-no-more/decks/aggro-hate/sim/20260908T001736Z.json
|
||||||
|
this report: /home/markdoeswork/mtg/reaper-king-no-more/decks/aggro-hate/sim/20260908T001736Z.txt
|
||||||
|
====================================================================
|
||||||
21
decks/reaper-king-no-more/decks/card-engine/README.md
Normal file
21
decks/reaper-king-no-more/decks/card-engine/README.md
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
# card-engine
|
||||||
|
|
||||||
|
_generated 2026-09-07 23:37Z by `tools/variant.py`_
|
||||||
|
|
||||||
|
- **bracket 3: PASS** (two-card vacuum combos: 0)
|
||||||
|
- 86 lines in `decklist.txt`
|
||||||
|
|
||||||
|
## files
|
||||||
|
|
||||||
|
| file | what it is |
|
||||||
|
| --- | --- |
|
||||||
|
| `decklist.txt` | the deck, `N Card Name` per line |
|
||||||
|
| `bracket.txt` | bracket-3 + house-rule check |
|
||||||
|
| `combos.txt` | combos in the deck, and one card away |
|
||||||
|
| `sim/` | Forge runs — `.log` raw, `.txt` report, `.json` data |
|
||||||
|
| `card_stats.txt` | per-card cast rate, avg round, win% (newest sim) |
|
||||||
|
|
||||||
|
## simulation runs
|
||||||
|
|
||||||
|
_none yet — run with `--sim 24`_
|
||||||
|
|
||||||
25
decks/reaper-king-no-more/decks/card-engine/bracket.txt
Normal file
25
decks/reaper-king-no-more/decks/card-engine/bracket.txt
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
COMMANDER: The Reaper, King No More
|
||||||
|
DECK SIZE: 99 + 1 commander = 100
|
||||||
|
|
||||||
|
GAME CHANGERS: 1/3 OK
|
||||||
|
- The One Ring
|
||||||
|
|
||||||
|
MASS LAND DENIAL: 0 OK
|
||||||
|
|
||||||
|
EXTRA TURNS: 0 OK
|
||||||
|
|
||||||
|
TWO-CARD INFINITE COMBOS IN A VACUUM: 0 OK
|
||||||
|
|
||||||
|
two-card combos needing board state (ALLOWED, 3):
|
||||||
|
- Blowfly Infestation + Flourishing Defenses
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Nest of Scarabs
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
|
||||||
|
==========================================================
|
||||||
|
BRACKET 3: PASS
|
||||||
83
decks/reaper-king-no-more/decks/card-engine/combos.txt
Normal file
83
decks/reaper-king-no-more/decks/card-engine/combos.txt
Normal file
|
|
@ -0,0 +1,83 @@
|
||||||
|
==================================================================
|
||||||
|
COMBOS ALREADY IN THE DECK: 10
|
||||||
|
==================================================================
|
||||||
|
[E] Blowfly Infestation + Flourishing Defenses
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Nest of Scarabs
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Yawgmoth, Thran Physician + Nest of Scarabs + Blood Artist
|
||||||
|
-> Near-infinite -1/-1 counters
|
||||||
|
-> Near-infinite card draw
|
||||||
|
-> Near-infinite death triggers
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: There is at least one other creature on the battlefield.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Blood Artist
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Zulaport Cutthroat
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Woe Strider
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Viscera Seer
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Ashnod's Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colorless mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Phyrexian Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colored mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
|
||||||
|
==================================================================
|
||||||
|
ONE CARD AWAY: 416 combos, 106 distinct cards
|
||||||
|
==================================================================
|
||||||
|
21 combos Mikaeus, the Unhallowed {3}{B}{B}{B} #1306
|
||||||
|
10 combos Host of the Hereafter {2}{B}{G} #7758
|
||||||
|
10 combos First Day of Class {1}{R} #10147
|
||||||
|
8 combos Veinwitch Coven {2}{B} #4179
|
||||||
|
8 combos Thran Vigil {1}{B} #6285
|
||||||
|
8 combos Grumgully, the Generous {1}{R}{G} #4341
|
||||||
|
7 combos Stalwart Successor {1}{B}{G} #13591
|
||||||
|
7 combos Melira, Sylvok Outcast {1}{G} #11230
|
||||||
|
7 combos Rocksteady, Mutant Marauder {2}{G} #10233
|
||||||
|
7 combos Reyhan, Last of the Abzan {1}{B}{G} #6299
|
||||||
|
7 combos Support Mission {2}{G} #31928
|
||||||
|
7 combos Captain Kathryn Janeway {3}{G} #26133
|
||||||
|
7 combos The Unbeatable Squirrel Girl {1}{G}{G}{G} #7070
|
||||||
|
7 combos Surrak and Goreclaw {4}{G}{G} #1600
|
||||||
|
7 combos Railway Brawler {3}{G}{G} #2493
|
||||||
|
|
||||||
|
decklist: /home/markdoeswork/mtg/reaper-king-no-more/decks/card-engine/decklist.txt | source: data/variants.json (108,535 combos)
|
||||||
95
decks/reaper-king-no-more/decks/card-engine/decklist.txt
Normal file
95
decks/reaper-king-no-more/decks/card-engine/decklist.txt
Normal file
|
|
@ -0,0 +1,95 @@
|
||||||
|
# card-engine
|
||||||
|
# Only 1 real draw engine in 99 cards. An aristocrats deck that draws off its own deaths should never run out of gas.
|
||||||
|
|
||||||
|
# generated by tools/generate.py from decks/no-mikaeus
|
||||||
|
# roles: {'draw': 5, 'death_trigger': 2, 'minus_engine': -4, 'ramp': -3}
|
||||||
|
|
||||||
|
# Commander
|
||||||
|
1 The Reaper, King No More
|
||||||
|
|
||||||
|
# Main
|
||||||
|
1 Archfiend of Ifnir
|
||||||
|
1 Ashnod's Altar
|
||||||
|
1 Assassin's Trophy
|
||||||
|
1 Bastion of Remembrance
|
||||||
|
1 Beast Within
|
||||||
|
1 Bedevil
|
||||||
|
1 Birds of Paradise
|
||||||
|
1 Black Sun's Zenith
|
||||||
|
1 Blackcleave Cliffs
|
||||||
|
1 Blood Artist
|
||||||
|
1 Blood Crypt
|
||||||
|
1 Bloodfell Caves
|
||||||
|
1 Blooming Marsh
|
||||||
|
1 Blowfly Infestation
|
||||||
|
1 Bojuka Bog
|
||||||
|
1 Carrion Feeder
|
||||||
|
1 Castle Locthwain
|
||||||
|
1 Chaos Warp
|
||||||
|
1 Command Tower
|
||||||
|
1 Contagion Clasp
|
||||||
|
1 Copperline Gorge
|
||||||
|
1 Cultivate
|
||||||
|
1 Damnation
|
||||||
|
1 Exotic Orchard
|
||||||
|
1 Farseek
|
||||||
|
1 Flourishing Defenses
|
||||||
|
1 Garruk's Uprising
|
||||||
|
1 Goblin Bombardment
|
||||||
|
1 Greater Good
|
||||||
|
1 Grim Haruspex
|
||||||
|
1 Hapatra, Vizier of Poisons
|
||||||
|
1 Humble Defector
|
||||||
|
1 Idol of Oblivion
|
||||||
|
1 Jungle Hollow
|
||||||
|
1 Karplusan Forest
|
||||||
|
1 Kodama's Reach
|
||||||
|
1 Llanowar Wastes
|
||||||
|
1 Massacre Girl, Known Killer
|
||||||
|
1 Massacre Wurm
|
||||||
|
1 Mayhem Devil
|
||||||
|
1 Mazirek, Kraul Death Priest
|
||||||
|
1 Midnight Reaper
|
||||||
|
1 Mirkwood Bats
|
||||||
|
1 Nature's Lore
|
||||||
|
1 Necroskitter
|
||||||
|
1 Nest of Scarabs
|
||||||
|
1 Overgrown Tomb
|
||||||
|
1 Overseer of the Damned
|
||||||
|
1 Path of Ancestry
|
||||||
|
1 Persistent Constrictor
|
||||||
|
1 Phyrexian Altar
|
||||||
|
1 Phyrexian Arena
|
||||||
|
1 Pitiless Plunderer
|
||||||
|
1 Plague Belcher
|
||||||
|
1 Poison-Tip Archer
|
||||||
|
1 Putrid Goblin
|
||||||
|
1 Rampant Growth
|
||||||
|
1 Return of the Wildspeaker
|
||||||
|
1 Rugged Highlands
|
||||||
|
1 Sakura-Tribe Elder
|
||||||
|
1 Savage Lands
|
||||||
|
1 Skullclamp
|
||||||
|
1 Solemn Simulacrum
|
||||||
|
1 Springbloom Druid
|
||||||
|
1 Stomping Ground
|
||||||
|
1 Syr Konrad, the Grim
|
||||||
|
1 Terminate
|
||||||
|
1 The Meathook Massacre
|
||||||
|
1 The One Ring
|
||||||
|
1 Three Visits
|
||||||
|
1 Toxic Deluge
|
||||||
|
1 Vandalblast
|
||||||
|
1 Vengeful Bloodwitch
|
||||||
|
1 Village Rites
|
||||||
|
1 Viscera Seer
|
||||||
|
1 Woe Strider
|
||||||
|
1 Wood Elves
|
||||||
|
1 Yahenni, Undying Partisan
|
||||||
|
1 Yavimaya, Cradle of Growth
|
||||||
|
1 Yawgmoth, Thran Physician
|
||||||
|
1 Ziatora's Proving Ground
|
||||||
|
1 Zulaport Cutthroat
|
||||||
|
8 Swamp
|
||||||
|
5 Forest
|
||||||
|
4 Mountain
|
||||||
20
decks/reaper-king-no-more/decks/commander-focus/README.md
Normal file
20
decks/reaper-king-no-more/decks/commander-focus/README.md
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
# commander-focus
|
||||||
|
|
||||||
|
_generated 2026-09-07 15:51Z by `tools/variant.py`_
|
||||||
|
|
||||||
|
- **bracket 3: PASS** (two-card vacuum combos: 0)
|
||||||
|
- 86 lines in `decklist.txt`
|
||||||
|
|
||||||
|
## files
|
||||||
|
|
||||||
|
| file | what it is |
|
||||||
|
| --- | --- |
|
||||||
|
| `decklist.txt` | the deck, `N Card Name` per line |
|
||||||
|
| `bracket.txt` | bracket-3 + house-rule check |
|
||||||
|
| `combos.txt` | combos in the deck, and one card away |
|
||||||
|
| `sim/` | Forge runs — `.log` raw, `.txt` report, `.json` data |
|
||||||
|
|
||||||
|
## simulation runs
|
||||||
|
|
||||||
|
_none yet — run with `--sim 24`_
|
||||||
|
|
||||||
24
decks/reaper-king-no-more/decks/commander-focus/bracket.txt
Normal file
24
decks/reaper-king-no-more/decks/commander-focus/bracket.txt
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
COMMANDER: The Reaper, King No More
|
||||||
|
DECK SIZE: 99 + 1 commander = 100
|
||||||
|
|
||||||
|
GAME CHANGERS: 0/3 OK
|
||||||
|
|
||||||
|
MASS LAND DENIAL: 0 OK
|
||||||
|
|
||||||
|
EXTRA TURNS: 0 OK
|
||||||
|
|
||||||
|
TWO-CARD INFINITE COMBOS IN A VACUUM: 0 OK
|
||||||
|
|
||||||
|
two-card combos needing board state (ALLOWED, 3):
|
||||||
|
- Blowfly Infestation + Flourishing Defenses
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Nest of Scarabs
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
|
||||||
|
==========================================================
|
||||||
|
BRACKET 3: PASS
|
||||||
70
decks/reaper-king-no-more/decks/commander-focus/combos.txt
Normal file
70
decks/reaper-king-no-more/decks/commander-focus/combos.txt
Normal file
|
|
@ -0,0 +1,70 @@
|
||||||
|
==================================================================
|
||||||
|
COMBOS ALREADY IN THE DECK: 7
|
||||||
|
==================================================================
|
||||||
|
[E] Blowfly Infestation + Flourishing Defenses
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Nest of Scarabs
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Obelisk Spider
|
||||||
|
-> Near-infinite lifeloss
|
||||||
|
-> Near-infinite lifegain triggers
|
||||||
|
-> Near-infinite creature ETB
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[E] Yawgmoth, Thran Physician + Nest of Scarabs + Blood Artist
|
||||||
|
-> Near-infinite -1/-1 counters
|
||||||
|
-> Near-infinite card draw
|
||||||
|
-> Near-infinite death triggers
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: There is at least one other creature on the battlefield.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Blood Artist
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Zulaport Cutthroat
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
|
||||||
|
==================================================================
|
||||||
|
ONE CARD AWAY: 288 combos, 79 distinct cards
|
||||||
|
==================================================================
|
||||||
|
24 combos Mikaeus, the Unhallowed {3}{B}{B}{B} #1306
|
||||||
|
9 combos Host of the Hereafter {2}{B}{G} #7758
|
||||||
|
8 combos Veinwitch Coven {2}{B} #4179
|
||||||
|
7 combos Scurry Oak {2}{G} #2259
|
||||||
|
6 combos Stalwart Successor {1}{B}{G} #13591
|
||||||
|
6 combos Thran Vigil {1}{B} #6285
|
||||||
|
6 combos Melira, Sylvok Outcast {1}{G} #11230
|
||||||
|
6 combos Rocksteady, Mutant Marauder {2}{G} #10233
|
||||||
|
6 combos Reyhan, Last of the Abzan {1}{B}{G} #6299
|
||||||
|
6 combos Support Mission {2}{G} #31928
|
||||||
|
6 combos Captain Kathryn Janeway {3}{G} #26133
|
||||||
|
6 combos First Day of Class {1}{R} #10147
|
||||||
|
6 combos Surrak and Goreclaw {4}{G}{G} #1600
|
||||||
|
6 combos Warden of the Grove {2}{G} #2262
|
||||||
|
6 combos Railway Brawler {3}{G}{G} #2493
|
||||||
|
|
||||||
|
decklist: /home/markdoeswork/mtg/reaper-king-no-more/decks/commander-focus/decklist.txt | source: data/variants.json (108,535 combos)
|
||||||
92
decks/reaper-king-no-more/decks/commander-focus/decklist.txt
Normal file
92
decks/reaper-king-no-more/decks/commander-focus/decklist.txt
Normal file
|
|
@ -0,0 +1,92 @@
|
||||||
|
# commander-focus
|
||||||
|
# The commander only steals from OPPONENTS' creatures, but the deck's -1/-1 engine mostly counters our own. Push counters onto their board.
|
||||||
|
|
||||||
|
# Commander
|
||||||
|
1 The Reaper, King No More
|
||||||
|
|
||||||
|
# Main
|
||||||
|
1 Hapatra, Vizier of Poisons
|
||||||
|
1 Blowfly Infestation
|
||||||
|
1 Nest of Scarabs
|
||||||
|
1 Necroskitter
|
||||||
|
1 Yawgmoth, Thran Physician
|
||||||
|
1 Flourishing Defenses
|
||||||
|
1 Obelisk Spider
|
||||||
|
1 Plague Belcher
|
||||||
|
1 Archfiend of Ifnir
|
||||||
|
1 Grim Poppet
|
||||||
|
1 Contagion Clasp
|
||||||
|
1 Black Sun's Zenith
|
||||||
|
1 Viscera Seer
|
||||||
|
1 Carrion Feeder
|
||||||
|
1 Ashnod's Altar
|
||||||
|
1 Phyrexian Altar
|
||||||
|
1 Goblin Bombardment
|
||||||
|
1 Yahenni, Undying Partisan
|
||||||
|
1 Blood Artist
|
||||||
|
1 Zulaport Cutthroat
|
||||||
|
1 Vengeful Bloodwitch
|
||||||
|
1 Poison-Tip Archer
|
||||||
|
1 Mirkwood Bats
|
||||||
|
1 Mayhem Devil
|
||||||
|
1 Syr Konrad, the Grim
|
||||||
|
1 Bastion of Remembrance
|
||||||
|
1 Mazirek, Kraul Death Priest
|
||||||
|
1 The Meathook Massacre
|
||||||
|
1 Massacre Wurm
|
||||||
|
1 Massacre Girl, Known Killer
|
||||||
|
1 Humble Defector
|
||||||
|
1 Midnight Reaper
|
||||||
|
1 Grim Haruspex
|
||||||
|
1 Village Rites
|
||||||
|
1 Deadly Dispute
|
||||||
|
1 Greater Good
|
||||||
|
1 Beast Within
|
||||||
|
1 Chaos Warp
|
||||||
|
1 Terminate
|
||||||
|
1 Bedevil
|
||||||
|
1 Assassin's Trophy
|
||||||
|
1 Damnation
|
||||||
|
1 Toxic Deluge
|
||||||
|
1 Vandalblast
|
||||||
|
1 Cultivate
|
||||||
|
1 Kodama's Reach
|
||||||
|
1 Farseek
|
||||||
|
1 Nature's Lore
|
||||||
|
1 Three Visits
|
||||||
|
1 Birds of Paradise
|
||||||
|
1 Sakura-Tribe Elder
|
||||||
|
1 Persistent Constrictor
|
||||||
|
1 Overseer of the Damned
|
||||||
|
1 Skullclamp
|
||||||
|
1 Rampant Growth
|
||||||
|
1 Harrow
|
||||||
|
1 Wood Elves
|
||||||
|
1 Springbloom Druid
|
||||||
|
1 Binding the Old Gods
|
||||||
|
1 Mari, the Killing Quill
|
||||||
|
1 Sangromancer
|
||||||
|
1 Patron of the Vein
|
||||||
|
1 Slaughter Specialist
|
||||||
|
1 Command Tower
|
||||||
|
1 Path of Ancestry
|
||||||
|
1 Exotic Orchard
|
||||||
|
1 Blood Crypt
|
||||||
|
1 Overgrown Tomb
|
||||||
|
1 Stomping Ground
|
||||||
|
1 Blackcleave Cliffs
|
||||||
|
1 Blooming Marsh
|
||||||
|
1 Copperline Gorge
|
||||||
|
1 Savage Lands
|
||||||
|
1 Jungle Hollow
|
||||||
|
1 Bloodfell Caves
|
||||||
|
1 Rugged Highlands
|
||||||
|
1 Ziatora's Proving Ground
|
||||||
|
1 Bojuka Bog
|
||||||
|
1 Castle Locthwain
|
||||||
|
1 Llanowar Wastes
|
||||||
|
1 Karplusan Forest
|
||||||
|
1 Yavimaya, Cradle of Growth
|
||||||
|
8 Swamp
|
||||||
|
5 Forest
|
||||||
|
4 Mountain
|
||||||
22
decks/reaper-king-no-more/decks/fast-ramp/README.md
Normal file
22
decks/reaper-king-no-more/decks/fast-ramp/README.md
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
# fast-ramp
|
||||||
|
|
||||||
|
_generated 2026-09-08 02:07Z by `tools/variant.py`_
|
||||||
|
|
||||||
|
- **bracket 3: PASS** (two-card vacuum combos: 0)
|
||||||
|
- 86 lines in `decklist.txt`
|
||||||
|
|
||||||
|
## files
|
||||||
|
|
||||||
|
| file | what it is |
|
||||||
|
| --- | --- |
|
||||||
|
| `decklist.txt` | the deck, `N Card Name` per line |
|
||||||
|
| `bracket.txt` | bracket-3 + house-rule check |
|
||||||
|
| `combos.txt` | combos in the deck, and one card away |
|
||||||
|
| `sim/` | Forge runs — `.log` raw, `.txt` report, `.json` data |
|
||||||
|
| `card_stats.txt` | per-card cast rate, avg round, win% (newest sim) |
|
||||||
|
| `power.txt` | what the deck DID (engine assembly, pressure) win or lose |
|
||||||
|
|
||||||
|
## simulation runs
|
||||||
|
|
||||||
|
- `sim/20260907T225441Z.txt` — our deck : 2/6 (33.3%) [random baseline in a 4-pod = 25%]
|
||||||
|
|
||||||
24
decks/reaper-king-no-more/decks/fast-ramp/bracket.txt
Normal file
24
decks/reaper-king-no-more/decks/fast-ramp/bracket.txt
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
COMMANDER: The Reaper, King No More
|
||||||
|
DECK SIZE: 99 + 1 commander = 100
|
||||||
|
|
||||||
|
GAME CHANGERS: 0/3 OK
|
||||||
|
|
||||||
|
MASS LAND DENIAL: 0 OK
|
||||||
|
|
||||||
|
EXTRA TURNS: 0 OK
|
||||||
|
|
||||||
|
TWO-CARD INFINITE COMBOS IN A VACUUM: 0 OK
|
||||||
|
|
||||||
|
two-card combos needing board state (ALLOWED, 3):
|
||||||
|
- Blowfly Infestation + Flourishing Defenses
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Nest of Scarabs
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
|
||||||
|
==========================================================
|
||||||
|
BRACKET 3: PASS
|
||||||
58
decks/reaper-king-no-more/decks/fast-ramp/card_stats.txt
Normal file
58
decks/reaper-king-no-more/decks/fast-ramp/card_stats.txt
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
==========================================================================
|
||||||
|
CARD STATISTICS — 20260907T225441Z.log
|
||||||
|
==========================================================================
|
||||||
|
games: 6 our wins: 1 (16.7%) deck: /home/markdoeswork/mtg/reaper-king-no-more/decks/fast-ramp/decklist.txt
|
||||||
|
|
||||||
|
NEVER CAST IN ANY GAME: 14
|
||||||
|
--------------------------------------------------------------------------
|
||||||
|
(dead weight, unplayable by the AI, or just never drawn in time)
|
||||||
|
Beast Within
|
||||||
|
Black Sun's Zenith
|
||||||
|
Blood Artist
|
||||||
|
Carrion Feeder
|
||||||
|
Cauldron of Souls
|
||||||
|
Elvish Mystic
|
||||||
|
Goblin Bombardment
|
||||||
|
Greater Good
|
||||||
|
Grim Haruspex
|
||||||
|
Overseer of the Damned
|
||||||
|
Plague Belcher
|
||||||
|
The Meathook Massacre
|
||||||
|
Toxic Deluge
|
||||||
|
Viscera Seer
|
||||||
|
|
||||||
|
MOST-CAST CARDS
|
||||||
|
--------------------------------------------------------------------------
|
||||||
|
card cast in avg round win% when cast
|
||||||
|
The Reaper, King No More 6/6 R10.7 17%
|
||||||
|
Necroskitter 4/6 R10.2 0%
|
||||||
|
Contagion Clasp 4/6 R12.8 25%
|
||||||
|
Skullclamp 3/6 R5.3 0%
|
||||||
|
Three Visits 3/6 R6.3 33%
|
||||||
|
Village Rites 3/6 R14.7 0%
|
||||||
|
Persistent Constrictor 3/6 R10.3 33%
|
||||||
|
Mirkwood Bats 3/6 R7.7 0%
|
||||||
|
Zulaport Cutthroat 3/6 R14.0 33%
|
||||||
|
Fyndhorn Elves 2/6 R9.5 0%
|
||||||
|
Massacre Wurm 2/6 R8.0 0%
|
||||||
|
Birds of Paradise 2/6 R5.5 0%
|
||||||
|
Bedevil 2/6 R5.5 0%
|
||||||
|
Sakura-Tribe Elder 2/6 R3.5 0%
|
||||||
|
Assassin's Trophy 2/6 R7.5 0%
|
||||||
|
Putrid Goblin 2/6 R8.0 0%
|
||||||
|
Mazirek, Kraul Death Priest 2/6 R9.0 0%
|
||||||
|
Midnight Reaper 2/6 R13.0 50%
|
||||||
|
Archfiend of Ifnir 2/6 R7.0 50%
|
||||||
|
Yahenni, Undying Partisan 2/6 R7.0 0%
|
||||||
|
|
||||||
|
CAVEATS — DO NOT CUT CARDS ON THIS ALONE
|
||||||
|
--------------------------------------------------------------------------
|
||||||
|
* 6 games is a tiny sample. A card cast in 5 games has a win-rate
|
||||||
|
swing of +/-40% from noise alone.
|
||||||
|
* 'Never cast' conflates three very different things: a bad card, a
|
||||||
|
card the AI cannot use, and a card that was simply never drawn.
|
||||||
|
* Correlation only. Cards cast in LONG games look good because long
|
||||||
|
games are ones we survived -- the card didn't cause the win.
|
||||||
|
* Forge's AI is weak at combo; it under-casts combo pieces.
|
||||||
|
|
||||||
|
raw: /home/markdoeswork/mtg/reaper-king-no-more/decks/fast-ramp/sim/20260907T225441Z-cards.json
|
||||||
90
decks/reaper-king-no-more/decks/fast-ramp/combos.txt
Normal file
90
decks/reaper-king-no-more/decks/fast-ramp/combos.txt
Normal file
|
|
@ -0,0 +1,90 @@
|
||||||
|
==================================================================
|
||||||
|
COMBOS ALREADY IN THE DECK: 11
|
||||||
|
==================================================================
|
||||||
|
[E] Blowfly Infestation + Flourishing Defenses
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Nest of Scarabs
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Obelisk Spider
|
||||||
|
-> Near-infinite lifeloss
|
||||||
|
-> Near-infinite lifegain triggers
|
||||||
|
-> Near-infinite creature ETB
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[E] Yawgmoth, Thran Physician + Nest of Scarabs + Blood Artist
|
||||||
|
-> Near-infinite -1/-1 counters
|
||||||
|
-> Near-infinite card draw
|
||||||
|
-> Near-infinite death triggers
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: There is at least one other creature on the battlefield.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Blood Artist
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Zulaport Cutthroat
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Woe Strider
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Viscera Seer
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Ashnod's Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colorless mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Phyrexian Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colored mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
|
||||||
|
==================================================================
|
||||||
|
ONE CARD AWAY: 354 combos, 81 distinct cards
|
||||||
|
==================================================================
|
||||||
|
28 combos Mikaeus, the Unhallowed {3}{B}{B}{B} #1306
|
||||||
|
12 combos First Day of Class {1}{R} #10147
|
||||||
|
10 combos Host of the Hereafter {2}{B}{G} #7758
|
||||||
|
9 combos Rhythm of the Wild {1}{R}{G} #216
|
||||||
|
9 combos Grumgully, the Generous {1}{R}{G} #4341
|
||||||
|
8 combos Veinwitch Coven {2}{B} #4179
|
||||||
|
8 combos Thran Vigil {1}{B} #6285
|
||||||
|
8 combos Rocksteady, Mutant Marauder {2}{G} #10233
|
||||||
|
8 combos Support Mission {2}{G} #31928
|
||||||
|
8 combos Captain Kathryn Janeway {3}{G} #26133
|
||||||
|
8 combos Surrak and Goreclaw {4}{G}{G} #1600
|
||||||
|
8 combos Railway Brawler {3}{G}{G} #2493
|
||||||
|
8 combos Warden of the Grove {2}{G} #2262
|
||||||
|
8 combos Uncivil Unrest {4}{R} #2947
|
||||||
|
8 combos Renata, Called to the Hunt {2}{G}{G} #2830
|
||||||
|
|
||||||
|
decklist: /home/markdoeswork/mtg/reaper-king-no-more/decks/fast-ramp/decklist.txt | source: data/variants.json (108,535 combos)
|
||||||
92
decks/reaper-king-no-more/decks/fast-ramp/decklist.txt
Normal file
92
decks/reaper-king-no-more/decks/fast-ramp/decklist.txt
Normal file
|
|
@ -0,0 +1,92 @@
|
||||||
|
# fast-ramp
|
||||||
|
# 6 of 10 ramp pieces cost 3+, and the deck already has 22 three-drops. T3 ramp means NOT deploying an engine piece. Swap the 3-mana fetch spells for 1-mana dorks -- which are also creatures, so they feed the sac outlets and the -1/-1 engine instead of being do-nothing sorceries.
|
||||||
|
|
||||||
|
# Commander
|
||||||
|
1 The Reaper, King No More
|
||||||
|
|
||||||
|
# Main
|
||||||
|
1 Hapatra, Vizier of Poisons
|
||||||
|
1 Blowfly Infestation
|
||||||
|
1 Nest of Scarabs
|
||||||
|
1 Necroskitter
|
||||||
|
1 Yawgmoth, Thran Physician
|
||||||
|
1 Flourishing Defenses
|
||||||
|
1 Obelisk Spider
|
||||||
|
1 Plague Belcher
|
||||||
|
1 Archfiend of Ifnir
|
||||||
|
1 Grim Poppet
|
||||||
|
1 Contagion Clasp
|
||||||
|
1 Black Sun's Zenith
|
||||||
|
1 Murderous Redcap
|
||||||
|
1 Putrid Goblin
|
||||||
|
1 Cauldron of Souls
|
||||||
|
1 Viscera Seer
|
||||||
|
1 Carrion Feeder
|
||||||
|
1 Ashnod's Altar
|
||||||
|
1 Phyrexian Altar
|
||||||
|
1 Goblin Bombardment
|
||||||
|
1 Yahenni, Undying Partisan
|
||||||
|
1 Woe Strider
|
||||||
|
1 Blood Artist
|
||||||
|
1 Zulaport Cutthroat
|
||||||
|
1 Vengeful Bloodwitch
|
||||||
|
1 Poison-Tip Archer
|
||||||
|
1 Mirkwood Bats
|
||||||
|
1 Mayhem Devil
|
||||||
|
1 Syr Konrad, the Grim
|
||||||
|
1 Bastion of Remembrance
|
||||||
|
1 Mazirek, Kraul Death Priest
|
||||||
|
1 The Meathook Massacre
|
||||||
|
1 Massacre Wurm
|
||||||
|
1 Massacre Girl, Known Killer
|
||||||
|
1 Humble Defector
|
||||||
|
1 Midnight Reaper
|
||||||
|
1 Grim Haruspex
|
||||||
|
1 Village Rites
|
||||||
|
1 Deadly Dispute
|
||||||
|
1 Greater Good
|
||||||
|
1 Beast Within
|
||||||
|
1 Chaos Warp
|
||||||
|
1 Terminate
|
||||||
|
1 Bedevil
|
||||||
|
1 Assassin's Trophy
|
||||||
|
1 Damnation
|
||||||
|
1 Toxic Deluge
|
||||||
|
1 Vandalblast
|
||||||
|
1 Farseek
|
||||||
|
1 Nature's Lore
|
||||||
|
1 Three Visits
|
||||||
|
1 Birds of Paradise
|
||||||
|
1 Sakura-Tribe Elder
|
||||||
|
1 Persistent Constrictor
|
||||||
|
1 Overseer of the Damned
|
||||||
|
1 Skullclamp
|
||||||
|
1 Rampant Growth
|
||||||
|
1 Harrow
|
||||||
|
1 Llanowar Elves
|
||||||
|
1 Elvish Mystic
|
||||||
|
1 Fyndhorn Elves
|
||||||
|
1 Ignoble Hierarch
|
||||||
|
1 Delighted Halfling
|
||||||
|
1 Command Tower
|
||||||
|
1 Path of Ancestry
|
||||||
|
1 Exotic Orchard
|
||||||
|
1 Blood Crypt
|
||||||
|
1 Overgrown Tomb
|
||||||
|
1 Stomping Ground
|
||||||
|
1 Blackcleave Cliffs
|
||||||
|
1 Blooming Marsh
|
||||||
|
1 Copperline Gorge
|
||||||
|
1 Savage Lands
|
||||||
|
1 Jungle Hollow
|
||||||
|
1 Bloodfell Caves
|
||||||
|
1 Rugged Highlands
|
||||||
|
1 Ziatora's Proving Ground
|
||||||
|
1 Bojuka Bog
|
||||||
|
1 Castle Locthwain
|
||||||
|
1 Llanowar Wastes
|
||||||
|
1 Karplusan Forest
|
||||||
|
1 Yavimaya, Cradle of Growth
|
||||||
|
8 Swamp
|
||||||
|
5 Forest
|
||||||
|
4 Mountain
|
||||||
27
decks/reaper-king-no-more/decks/fast-ramp/power.txt
Normal file
27
decks/reaper-king-no-more/decks/fast-ramp/power.txt
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
======================================================================
|
||||||
|
POWER REPORT — what the deck did, win or lose
|
||||||
|
======================================================================
|
||||||
|
games: 6 wins: 1 (17%) timeout draws: 3 (50%)
|
||||||
|
|
||||||
|
DID THE DECK DO ITS THING?
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
commander deployed 6/6 games (100%) median round 5
|
||||||
|
engine assembled 5/6 games ( 83%) median round 14
|
||||||
|
sac_outlet 6/6 (100%) median round 12
|
||||||
|
drain 5/6 ( 83%) median round 9
|
||||||
|
minus_engine 6/6 (100%) median round 13
|
||||||
|
|
||||||
|
PRESSURE & SURVIVAL
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
life taken from table mean 105.8
|
||||||
|
life we lost mean 25.7
|
||||||
|
spells cast mean 19.8
|
||||||
|
rounds survived mean 17.7
|
||||||
|
|
||||||
|
POWER SCORE (composite; see score() for weights)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
mean 75.7 median 78.5 min 36.0 max 109.5
|
||||||
|
|
||||||
|
Use this, not win rate, to A/B a change: it moves on far fewer games
|
||||||
|
because it scores every game instead of only the ones we won.
|
||||||
|
======================================================================
|
||||||
|
|
@ -0,0 +1,583 @@
|
||||||
|
{
|
||||||
|
"log": "decks/fast-ramp/sim/20260907T225441Z.log",
|
||||||
|
"games": 6,
|
||||||
|
"base_win_rate": 0.16666666666666666,
|
||||||
|
"cards": [
|
||||||
|
{
|
||||||
|
"card": "The Reaper, King No More",
|
||||||
|
"games_cast": 6,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 10.653846153846153,
|
||||||
|
"win_rate_when_cast": 0.16666666666666666,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 26
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Necroskitter",
|
||||||
|
"games_cast": 4,
|
||||||
|
"cast_rate": 0.6666666666666666,
|
||||||
|
"avg_turn": 10.25,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Contagion Clasp",
|
||||||
|
"games_cast": 4,
|
||||||
|
"cast_rate": 0.6666666666666666,
|
||||||
|
"avg_turn": 12.75,
|
||||||
|
"win_rate_when_cast": 0.25,
|
||||||
|
"delta": 0.08333333333333334,
|
||||||
|
"total_casts": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Persistent Constrictor",
|
||||||
|
"games_cast": 3,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 10.333333333333334,
|
||||||
|
"win_rate_when_cast": 0.3333333333333333,
|
||||||
|
"delta": 0.16666666666666666,
|
||||||
|
"total_casts": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Skullclamp",
|
||||||
|
"games_cast": 3,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 5.333333333333333,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Village Rites",
|
||||||
|
"games_cast": 3,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 14.666666666666666,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Zulaport Cutthroat",
|
||||||
|
"games_cast": 3,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 14.0,
|
||||||
|
"win_rate_when_cast": 0.3333333333333333,
|
||||||
|
"delta": 0.16666666666666666,
|
||||||
|
"total_casts": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Three Visits",
|
||||||
|
"games_cast": 3,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 6.333333333333333,
|
||||||
|
"win_rate_when_cast": 0.3333333333333333,
|
||||||
|
"delta": 0.16666666666666666,
|
||||||
|
"total_casts": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Mirkwood Bats",
|
||||||
|
"games_cast": 3,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 7.666666666666667,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Massacre Wurm",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 8.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Mazirek, Kraul Death Priest",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 9.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Fyndhorn Elves",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 9.5,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Hapatra, Vizier of Poisons",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 12.5,
|
||||||
|
"win_rate_when_cast": 0.5,
|
||||||
|
"delta": 0.33333333333333337,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Bedevil",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 5.5,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Vandalblast",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 5.5,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Humble Defector",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 12.5,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Sakura-Tribe Elder",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 3.5,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Chaos Warp",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 11.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Archfiend of Ifnir",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 7.0,
|
||||||
|
"win_rate_when_cast": 0.5,
|
||||||
|
"delta": 0.33333333333333337,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Terminate",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 11.5,
|
||||||
|
"win_rate_when_cast": 0.5,
|
||||||
|
"delta": 0.33333333333333337,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Assassin's Trophy",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 7.5,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Rampant Growth",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 15.0,
|
||||||
|
"win_rate_when_cast": 0.5,
|
||||||
|
"delta": 0.33333333333333337,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Nature's Lore",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 10.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Birds of Paradise",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 5.5,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Woe Strider",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 11.333333333333334,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Damnation",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 15.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Syr Konrad, the Grim",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 10.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Ashnod's Altar",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 15.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Putrid Goblin",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 8.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Yahenni, Undying Partisan",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 7.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Poison-Tip Archer",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 12.0,
|
||||||
|
"win_rate_when_cast": 0.5,
|
||||||
|
"delta": 0.33333333333333337,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Murderous Redcap",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 6.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Mayhem Devil",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 8.0,
|
||||||
|
"win_rate_when_cast": 0.5,
|
||||||
|
"delta": 0.33333333333333337,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Midnight Reaper",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 0.3333333333333333,
|
||||||
|
"avg_turn": 13.0,
|
||||||
|
"win_rate_when_cast": 0.5,
|
||||||
|
"delta": 0.33333333333333337,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Delighted Halfling",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.16666666666666666,
|
||||||
|
"avg_turn": 10.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Flourishing Defenses",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.16666666666666666,
|
||||||
|
"avg_turn": 17.0,
|
||||||
|
"win_rate_when_cast": 1.0,
|
||||||
|
"delta": 0.8333333333333334,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Yawgmoth, Thran Physician",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.16666666666666666,
|
||||||
|
"avg_turn": 14.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Grim Poppet",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.16666666666666666,
|
||||||
|
"avg_turn": 10.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Vengeful Bloodwitch",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.16666666666666666,
|
||||||
|
"avg_turn": 11.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Harrow",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.16666666666666666,
|
||||||
|
"avg_turn": 18.0,
|
||||||
|
"win_rate_when_cast": 1.0,
|
||||||
|
"delta": 0.8333333333333334,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Massacre Girl, Known Killer",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.16666666666666666,
|
||||||
|
"avg_turn": 16.0,
|
||||||
|
"win_rate_when_cast": 1.0,
|
||||||
|
"delta": 0.8333333333333334,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Deadly Dispute",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.16666666666666666,
|
||||||
|
"avg_turn": 18.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Blowfly Infestation",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.16666666666666666,
|
||||||
|
"avg_turn": 13.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Ignoble Hierarch",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.16666666666666666,
|
||||||
|
"avg_turn": 12.0,
|
||||||
|
"win_rate_when_cast": 1.0,
|
||||||
|
"delta": 0.8333333333333334,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Nest of Scarabs",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.16666666666666666,
|
||||||
|
"avg_turn": 13.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Farseek",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.16666666666666666,
|
||||||
|
"avg_turn": 19.0,
|
||||||
|
"win_rate_when_cast": 1.0,
|
||||||
|
"delta": 0.8333333333333334,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Obelisk Spider",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.16666666666666666,
|
||||||
|
"avg_turn": 8.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Phyrexian Altar",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.16666666666666666,
|
||||||
|
"avg_turn": 12.0,
|
||||||
|
"win_rate_when_cast": 1.0,
|
||||||
|
"delta": 0.8333333333333334,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Bastion of Remembrance",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.16666666666666666,
|
||||||
|
"avg_turn": 15.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Llanowar Elves",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.16666666666666666,
|
||||||
|
"avg_turn": 14.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": -0.16666666666666666,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Elvish Mystic",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Cauldron of Souls",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Viscera Seer",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Overseer of the Damned",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Black Sun's Zenith",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Toxic Deluge",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Blood Artist",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Beast Within",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Grim Haruspex",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Goblin Bombardment",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Carrion Feeder",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Greater Good",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Plague Belcher",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "The Meathook Massacre",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,123 @@
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"generated": "20260907T230328Z",
|
||||||
|
"engine": "Forge 2.0.14",
|
||||||
|
"format": "Commander, 4 players",
|
||||||
|
"games_requested": "6",
|
||||||
|
"games_completed": 6,
|
||||||
|
"seed": "4242",
|
||||||
|
"decklist_file": "/home/markdoeswork/mtg/reaper-king-no-more/decks/fast-ramp/decklist.txt",
|
||||||
|
"log_file": "/home/markdoeswork/mtg/reaper-king-no-more/decks/fast-ramp/sim/20260907T225441Z.log",
|
||||||
|
"caveat": "Forge AI is weak at combo decks; treat win rate as a floor"
|
||||||
|
},
|
||||||
|
"win_counts": {
|
||||||
|
"Reaper King No More": 2,
|
||||||
|
"Faceless Menace [C19] [2019]": 1,
|
||||||
|
"Merciless Rage [C19] [2019]": 2,
|
||||||
|
"Arcane Maelstrom [C20] [2020]": 1
|
||||||
|
},
|
||||||
|
"our_win_rate": 0.3333333333333333,
|
||||||
|
"games": [
|
||||||
|
{
|
||||||
|
"turns": 31,
|
||||||
|
"winner": "Merciless Rage [C19] [2019]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 1,
|
||||||
|
"ms": 120060
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 37,
|
||||||
|
"winner": "Reaper King No More",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 2,
|
||||||
|
"ms": 38800
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 26,
|
||||||
|
"winner": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 3,
|
||||||
|
"ms": 120000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 33,
|
||||||
|
"winner": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 4,
|
||||||
|
"ms": 34073
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 37,
|
||||||
|
"winner": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"losers": [],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 5,
|
||||||
|
"ms": 120000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 43,
|
||||||
|
"winner": "Faceless Menace [C19] [2019]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 6,
|
||||||
|
"ms": 90431
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
10454
decks/reaper-king-no-more/decks/fast-ramp/sim/20260907T225441Z.log
Normal file
10454
decks/reaper-king-no-more/decks/fast-ramp/sim/20260907T225441Z.log
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,46 @@
|
||||||
|
====================================================================
|
||||||
|
FORGE SIMULATION REPORT — 4-player Commander pod
|
||||||
|
====================================================================
|
||||||
|
games completed : 6 (requested 6) seed: 4242
|
||||||
|
decklist : /home/markdoeswork/mtg/reaper-king-no-more/decks/fast-ramp/decklist.txt (full 100 cards)
|
||||||
|
engine : Forge 2.0.14, full rules, AI vs AI
|
||||||
|
|
||||||
|
WIN RATE
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
our deck : 2/6 (33.3%) [random baseline in a 4-pod = 25%]
|
||||||
|
|
||||||
|
all players:
|
||||||
|
Reaper King No More 2 (33.3%) ########## <-- ours
|
||||||
|
Merciless Rage [C19] [2019] 2 (33.3%) ##########
|
||||||
|
Faceless Menace [C19] [2019] 1 (16.7%) #####
|
||||||
|
Arcane Maelstrom [C20] [2020] 1 (16.7%) #####
|
||||||
|
|
||||||
|
GAME LENGTH
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
turns median 35 min 26 max 43
|
||||||
|
seconds median 105 total 8.7 min
|
||||||
|
|
||||||
|
HOW OUR DECK LOST
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
2x life total reached 0
|
||||||
|
|
||||||
|
WHO BEAT US (winner, in games our deck lost)
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
1x Arcane Maelstrom [C20] [2020]
|
||||||
|
1x Faceless Menace [C19] [2019]
|
||||||
|
|
||||||
|
CAVEAT — READ THIS BEFORE TRUSTING THE WIN RATE
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
Forge's AI is heuristic and, by its own documentation, WEAK AT COMBO
|
||||||
|
decks. Ours is a combo/aristocrats deck, so the AI systematically
|
||||||
|
under-plays it: it will miss sac-loop lines a human would see.
|
||||||
|
Read this as a FLOOR on the deck's power, and as proof the deck
|
||||||
|
functions and its cards interact — not as a power rating.
|
||||||
|
Opponents are stock precons, which are roughly bracket 2.
|
||||||
|
|
||||||
|
====================================================================
|
||||||
|
decklist : /home/markdoeswork/mtg/reaper-king-no-more/decks/fast-ramp/decklist.txt
|
||||||
|
full log : /home/markdoeswork/mtg/reaper-king-no-more/decks/fast-ramp/sim/20260907T225441Z.log (every game, all Forge output)
|
||||||
|
raw data : /home/markdoeswork/mtg/reaper-king-no-more/decks/fast-ramp/sim/20260907T225441Z.json
|
||||||
|
this report: /home/markdoeswork/mtg/reaper-king-no-more/decks/fast-ramp/sim/20260907T225441Z.txt
|
||||||
|
====================================================================
|
||||||
21
decks/reaper-king-no-more/decks/go-wide/README.md
Normal file
21
decks/reaper-king-no-more/decks/go-wide/README.md
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
# go-wide
|
||||||
|
|
||||||
|
_generated 2026-09-07 23:37Z by `tools/variant.py`_
|
||||||
|
|
||||||
|
- **bracket 3: PASS** (two-card vacuum combos: 0)
|
||||||
|
- 86 lines in `decklist.txt`
|
||||||
|
|
||||||
|
## files
|
||||||
|
|
||||||
|
| file | what it is |
|
||||||
|
| --- | --- |
|
||||||
|
| `decklist.txt` | the deck, `N Card Name` per line |
|
||||||
|
| `bracket.txt` | bracket-3 + house-rule check |
|
||||||
|
| `combos.txt` | combos in the deck, and one card away |
|
||||||
|
| `sim/` | Forge runs — `.log` raw, `.txt` report, `.json` data |
|
||||||
|
| `card_stats.txt` | per-card cast rate, avg round, win% (newest sim) |
|
||||||
|
|
||||||
|
## simulation runs
|
||||||
|
|
||||||
|
_none yet — run with `--sim 24`_
|
||||||
|
|
||||||
25
decks/reaper-king-no-more/decks/go-wide/bracket.txt
Normal file
25
decks/reaper-king-no-more/decks/go-wide/bracket.txt
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
COMMANDER: The Reaper, King No More
|
||||||
|
DECK SIZE: 99 + 1 commander = 100
|
||||||
|
|
||||||
|
GAME CHANGERS: 1/3 OK
|
||||||
|
- Orcish Bowmasters
|
||||||
|
|
||||||
|
MASS LAND DENIAL: 0 OK
|
||||||
|
|
||||||
|
EXTRA TURNS: 0 OK
|
||||||
|
|
||||||
|
TWO-CARD INFINITE COMBOS IN A VACUUM: 0 OK
|
||||||
|
|
||||||
|
two-card combos needing board state (ALLOWED, 3):
|
||||||
|
- Blowfly Infestation + Flourishing Defenses
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Nest of Scarabs
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
|
||||||
|
==========================================================
|
||||||
|
BRACKET 3: PASS
|
||||||
88
decks/reaper-king-no-more/decks/go-wide/card_stats.txt
Normal file
88
decks/reaper-king-no-more/decks/go-wide/card_stats.txt
Normal file
|
|
@ -0,0 +1,88 @@
|
||||||
|
==========================================================================
|
||||||
|
CARD STATISTICS — 20260908T001736Z.log
|
||||||
|
==========================================================================
|
||||||
|
games: 2 our wins: 0 (0.0%) deck: /home/markdoeswork/mtg/reaper-king-no-more/decks/go-wide/decklist.txt
|
||||||
|
|
||||||
|
NEVER CAST IN ANY GAME: 44
|
||||||
|
--------------------------------------------------------------------------
|
||||||
|
(dead weight, unplayable by the AI, or just never drawn in time)
|
||||||
|
Archfiend of Ifnir
|
||||||
|
Assassin's Trophy
|
||||||
|
Bastion of Remembrance
|
||||||
|
Beast Within
|
||||||
|
Black Market Connections
|
||||||
|
Black Sun's Zenith
|
||||||
|
Blood Artist
|
||||||
|
Captain Lannery Storm
|
||||||
|
Chaos Warp
|
||||||
|
Cultivate
|
||||||
|
Damnation
|
||||||
|
Deadly Dispute
|
||||||
|
Flourishing Defenses
|
||||||
|
Goblin Bombardment
|
||||||
|
Greater Good
|
||||||
|
Grim Haruspex
|
||||||
|
Helm of the Host
|
||||||
|
Humble Defector
|
||||||
|
Kodama's Reach
|
||||||
|
Massacre Wurm
|
||||||
|
Mayhem Devil
|
||||||
|
Mazirek, Kraul Death Priest
|
||||||
|
Midnight Reaper
|
||||||
|
Mirkwood Bats
|
||||||
|
Murderous Redcap
|
||||||
|
Nature's Lore
|
||||||
|
Necroskitter
|
||||||
|
Overseer of the Damned
|
||||||
|
Phyrexian Altar
|
||||||
|
Plague Belcher
|
||||||
|
Poison-Tip Archer
|
||||||
|
Rampant Growth
|
||||||
|
Sakura-Tribe Elder
|
||||||
|
Scute Swarm
|
||||||
|
Skullclamp
|
||||||
|
The Meathook Massacre
|
||||||
|
Toxic Deluge
|
||||||
|
Vandalblast
|
||||||
|
Vengeful Bloodwitch
|
||||||
|
Village Rites
|
||||||
|
Viscera Seer
|
||||||
|
Woe Strider
|
||||||
|
Wood Elves
|
||||||
|
Yahenni, Undying Partisan
|
||||||
|
|
||||||
|
MOST-CAST CARDS
|
||||||
|
--------------------------------------------------------------------------
|
||||||
|
card cast in avg round win% when cast
|
||||||
|
Three Visits 2/2 R9.5 0%
|
||||||
|
Zulaport Cutthroat 2/2 R11.5 0%
|
||||||
|
The Reaper, King No More 2/2 R6.5 0%
|
||||||
|
Tireless Tracker 2/2 R8.0 0%
|
||||||
|
Contagion Clasp 1/2 R9.0 0%
|
||||||
|
Rampaging Baloths 1/2 R7.0 0%
|
||||||
|
Persistent Constrictor 1/2 R5.0 0%
|
||||||
|
Yawgmoth, Thran Physician 1/2 R11.0 0%
|
||||||
|
Ashnod's Altar 1/2 R12.0 0%
|
||||||
|
Springbloom Druid 1/2 R9.0 0%
|
||||||
|
Hapatra, Vizier of Poisons 1/2 R2.0 0%
|
||||||
|
Farseek 1/2 R6.0 0%
|
||||||
|
Orcish Bowmasters 1/2 R4.0 0%
|
||||||
|
Syr Konrad, the Grim 1/2 R7.0 0%
|
||||||
|
Blowfly Infestation 1/2 R8.0 0%
|
||||||
|
Massacre Girl, Known Killer 1/2 R8.0 0%
|
||||||
|
Birds of Paradise 1/2 R1.0 0%
|
||||||
|
Carrion Feeder 1/2 R6.0 0%
|
||||||
|
Nest of Scarabs 1/2 R8.0 0%
|
||||||
|
Putrid Goblin 1/2 R10.0 0%
|
||||||
|
|
||||||
|
CAVEATS — DO NOT CUT CARDS ON THIS ALONE
|
||||||
|
--------------------------------------------------------------------------
|
||||||
|
* 2 games is a tiny sample. A card cast in 5 games has a win-rate
|
||||||
|
swing of +/-40% from noise alone.
|
||||||
|
* 'Never cast' conflates three very different things: a bad card, a
|
||||||
|
card the AI cannot use, and a card that was simply never drawn.
|
||||||
|
* Correlation only. Cards cast in LONG games look good because long
|
||||||
|
games are ones we survived -- the card didn't cause the win.
|
||||||
|
* Forge's AI is weak at combo; it under-casts combo pieces.
|
||||||
|
|
||||||
|
raw: /home/markdoeswork/mtg/reaper-king-no-more/decks/go-wide/sim/20260908T001736Z-cards.json
|
||||||
83
decks/reaper-king-no-more/decks/go-wide/combos.txt
Normal file
83
decks/reaper-king-no-more/decks/go-wide/combos.txt
Normal file
|
|
@ -0,0 +1,83 @@
|
||||||
|
==================================================================
|
||||||
|
COMBOS ALREADY IN THE DECK: 10
|
||||||
|
==================================================================
|
||||||
|
[E] Blowfly Infestation + Flourishing Defenses
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Nest of Scarabs
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Yawgmoth, Thran Physician + Nest of Scarabs + Blood Artist
|
||||||
|
-> Near-infinite -1/-1 counters
|
||||||
|
-> Near-infinite card draw
|
||||||
|
-> Near-infinite death triggers
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: There is at least one other creature on the battlefield.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Blood Artist
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Zulaport Cutthroat
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Woe Strider
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Viscera Seer
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Ashnod's Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colorless mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Phyrexian Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colored mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
|
||||||
|
==================================================================
|
||||||
|
ONE CARD AWAY: 366 combos, 93 distinct cards
|
||||||
|
==================================================================
|
||||||
|
21 combos Mikaeus, the Unhallowed {3}{B}{B}{B} #1306
|
||||||
|
12 combos First Day of Class {1}{R} #10147
|
||||||
|
10 combos Host of the Hereafter {2}{B}{G} #7758
|
||||||
|
9 combos Rhythm of the Wild {1}{R}{G} #216
|
||||||
|
9 combos Grumgully, the Generous {1}{R}{G} #4341
|
||||||
|
8 combos Veinwitch Coven {2}{B} #4179
|
||||||
|
8 combos Thran Vigil {1}{B} #6285
|
||||||
|
8 combos Rocksteady, Mutant Marauder {2}{G} #10233
|
||||||
|
8 combos Support Mission {2}{G} #31928
|
||||||
|
8 combos Captain Kathryn Janeway {3}{G} #26133
|
||||||
|
8 combos Surrak and Goreclaw {4}{G}{G} #1600
|
||||||
|
8 combos Railway Brawler {3}{G}{G} #2493
|
||||||
|
8 combos Warden of the Grove {2}{G} #2262
|
||||||
|
8 combos Uncivil Unrest {4}{R} #2947
|
||||||
|
8 combos Renata, Called to the Hunt {2}{G}{G} #2830
|
||||||
|
|
||||||
|
decklist: /home/markdoeswork/mtg/reaper-king-no-more/decks/go-wide/decklist.txt | source: data/variants.json (108,535 combos)
|
||||||
95
decks/reaper-king-no-more/decks/go-wide/decklist.txt
Normal file
95
decks/reaper-king-no-more/decks/go-wide/decklist.txt
Normal file
|
|
@ -0,0 +1,95 @@
|
||||||
|
# go-wide
|
||||||
|
# Token swarms feed sac outlets and the -1/-1 engine simultaneously. Tests whether bodies beat individually stronger cards.
|
||||||
|
|
||||||
|
# generated by tools/generate.py from decks/no-mikaeus
|
||||||
|
# roles: {'tokens': 5, 'sac_payoff': 2, 'minus_engine': -3, 'removal_spot': -2, 'ramp': -2}
|
||||||
|
|
||||||
|
# Commander
|
||||||
|
1 The Reaper, King No More
|
||||||
|
|
||||||
|
# Main
|
||||||
|
1 Archfiend of Ifnir
|
||||||
|
1 Ashnod's Altar
|
||||||
|
1 Assassin's Trophy
|
||||||
|
1 Bastion of Remembrance
|
||||||
|
1 Beast Within
|
||||||
|
1 Birds of Paradise
|
||||||
|
1 Black Market Connections
|
||||||
|
1 Black Sun's Zenith
|
||||||
|
1 Blackcleave Cliffs
|
||||||
|
1 Blood Artist
|
||||||
|
1 Blood Crypt
|
||||||
|
1 Bloodfell Caves
|
||||||
|
1 Blooming Marsh
|
||||||
|
1 Blowfly Infestation
|
||||||
|
1 Bojuka Bog
|
||||||
|
1 Captain Lannery Storm
|
||||||
|
1 Carrion Feeder
|
||||||
|
1 Castle Locthwain
|
||||||
|
1 Chaos Warp
|
||||||
|
1 Command Tower
|
||||||
|
1 Contagion Clasp
|
||||||
|
1 Copperline Gorge
|
||||||
|
1 Cultivate
|
||||||
|
1 Damnation
|
||||||
|
1 Deadly Dispute
|
||||||
|
1 Exotic Orchard
|
||||||
|
1 Farseek
|
||||||
|
1 Flourishing Defenses
|
||||||
|
1 Goblin Bombardment
|
||||||
|
1 Greater Good
|
||||||
|
1 Grim Haruspex
|
||||||
|
1 Hapatra, Vizier of Poisons
|
||||||
|
1 Helm of the Host
|
||||||
|
1 Humble Defector
|
||||||
|
1 Jungle Hollow
|
||||||
|
1 Karplusan Forest
|
||||||
|
1 Kodama's Reach
|
||||||
|
1 Llanowar Wastes
|
||||||
|
1 Massacre Girl, Known Killer
|
||||||
|
1 Massacre Wurm
|
||||||
|
1 Mayhem Devil
|
||||||
|
1 Mazirek, Kraul Death Priest
|
||||||
|
1 Midnight Reaper
|
||||||
|
1 Mirkwood Bats
|
||||||
|
1 Murderous Redcap
|
||||||
|
1 Nature's Lore
|
||||||
|
1 Necroskitter
|
||||||
|
1 Nest of Scarabs
|
||||||
|
1 Orcish Bowmasters
|
||||||
|
1 Overgrown Tomb
|
||||||
|
1 Overseer of the Damned
|
||||||
|
1 Path of Ancestry
|
||||||
|
1 Persistent Constrictor
|
||||||
|
1 Phyrexian Altar
|
||||||
|
1 Plague Belcher
|
||||||
|
1 Poison-Tip Archer
|
||||||
|
1 Putrid Goblin
|
||||||
|
1 Rampaging Baloths
|
||||||
|
1 Rampant Growth
|
||||||
|
1 Rugged Highlands
|
||||||
|
1 Sakura-Tribe Elder
|
||||||
|
1 Savage Lands
|
||||||
|
1 Scute Swarm
|
||||||
|
1 Skullclamp
|
||||||
|
1 Springbloom Druid
|
||||||
|
1 Stomping Ground
|
||||||
|
1 Syr Konrad, the Grim
|
||||||
|
1 The Meathook Massacre
|
||||||
|
1 Three Visits
|
||||||
|
1 Tireless Tracker
|
||||||
|
1 Toxic Deluge
|
||||||
|
1 Vandalblast
|
||||||
|
1 Vengeful Bloodwitch
|
||||||
|
1 Village Rites
|
||||||
|
1 Viscera Seer
|
||||||
|
1 Woe Strider
|
||||||
|
1 Wood Elves
|
||||||
|
1 Yahenni, Undying Partisan
|
||||||
|
1 Yavimaya, Cradle of Growth
|
||||||
|
1 Yawgmoth, Thran Physician
|
||||||
|
1 Ziatora's Proving Ground
|
||||||
|
1 Zulaport Cutthroat
|
||||||
|
8 Swamp
|
||||||
|
5 Forest
|
||||||
|
4 Mountain
|
||||||
|
|
@ -0,0 +1,583 @@
|
||||||
|
{
|
||||||
|
"log": "/home/markdoeswork/mtg/reaper-king-no-more/decks/go-wide/sim/20260908T001736Z.log",
|
||||||
|
"games": 2,
|
||||||
|
"base_win_rate": 0.0,
|
||||||
|
"cards": [
|
||||||
|
{
|
||||||
|
"card": "Three Visits",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 9.5,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Zulaport Cutthroat",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 11.5,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "The Reaper, King No More",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 6.5,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Tireless Tracker",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 8.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Contagion Clasp",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 9.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Rampaging Baloths",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 7.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Persistent Constrictor",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 5.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Yawgmoth, Thran Physician",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 11.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Ashnod's Altar",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 12.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Springbloom Druid",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 9.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Hapatra, Vizier of Poisons",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 2.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Farseek",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 6.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Orcish Bowmasters",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 4.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Syr Konrad, the Grim",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 7.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Blowfly Infestation",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 8.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Massacre Girl, Known Killer",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 8.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Birds of Paradise",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 1.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Carrion Feeder",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 6.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Nest of Scarabs",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 8.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Putrid Goblin",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 10.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Rampant Growth",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Grim Haruspex",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Poison-Tip Archer",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Bastion of Remembrance",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Vandalblast",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Humble Defector",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Murderous Redcap",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Blood Artist",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Plague Belcher",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Mazirek, Kraul Death Priest",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Nature's Lore",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Assassin's Trophy",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Damnation",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Kodama's Reach",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Chaos Warp",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Black Sun's Zenith",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Phyrexian Altar",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Greater Good",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Viscera Seer",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Toxic Deluge",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Black Market Connections",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Mirkwood Bats",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Village Rites",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Helm of the Host",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Massacre Wurm",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Vengeful Bloodwitch",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Goblin Bombardment",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Deadly Dispute",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Archfiend of Ifnir",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Flourishing Defenses",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Necroskitter",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Overseer of the Damned",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Skullclamp",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Mayhem Devil",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Beast Within",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Wood Elves",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Captain Lannery Storm",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Sakura-Tribe Elder",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Cultivate",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Midnight Reaper",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Woe Strider",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Scute Swarm",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "The Meathook Massacre",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Yahenni, Undying Partisan",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"generated": "20260908T002004Z",
|
||||||
|
"engine": "Forge 2.0.14",
|
||||||
|
"format": "Commander, 4 players",
|
||||||
|
"games_requested": "2",
|
||||||
|
"games_completed": 2,
|
||||||
|
"seed": "20260908",
|
||||||
|
"decklist_file": "/home/markdoeswork/mtg/reaper-king-no-more/decks/go-wide/decklist.txt",
|
||||||
|
"log_file": "/home/markdoeswork/mtg/reaper-king-no-more/decks/go-wide/sim/20260908T001736Z.log",
|
||||||
|
"caveat": "Forge AI is weak at combo decks; treat win rate as a floor"
|
||||||
|
},
|
||||||
|
"win_counts": {
|
||||||
|
"Reaper King No More": 0,
|
||||||
|
"Mystic Intellect [C19] [2019]": 1,
|
||||||
|
"Primal Genesis [C19] [2019]": 1,
|
||||||
|
"Enhanced Evolution [C20] [2020]": 0
|
||||||
|
},
|
||||||
|
"our_win_rate": 0.0,
|
||||||
|
"games": [
|
||||||
|
{
|
||||||
|
"turns": 29,
|
||||||
|
"winner": "Enhanced Evolution [C20] [2020]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Primal Genesis [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 1,
|
||||||
|
"ms": 120053
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 24,
|
||||||
|
"winner": "Primal Genesis [C19] [2019]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Mystic Intellect [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Enhanced Evolution [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 2,
|
||||||
|
"ms": 23165
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
1927
decks/reaper-king-no-more/decks/go-wide/sim/20260908T001736Z.log
Normal file
1927
decks/reaper-king-no-more/decks/go-wide/sim/20260908T001736Z.log
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,45 @@
|
||||||
|
====================================================================
|
||||||
|
FORGE SIMULATION REPORT — 4-player Commander pod
|
||||||
|
====================================================================
|
||||||
|
games completed : 2 (requested 2) seed: 20260908
|
||||||
|
decklist : /home/markdoeswork/mtg/reaper-king-no-more/decks/go-wide/decklist.txt (full 100 cards)
|
||||||
|
engine : Forge 2.0.14, full rules, AI vs AI
|
||||||
|
|
||||||
|
WIN RATE
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
our deck : 0/2 (0.0%) [random baseline in a 4-pod = 25%]
|
||||||
|
|
||||||
|
all players:
|
||||||
|
Mystic Intellect [C19] [2019] 1 (50.0%) ###############
|
||||||
|
Primal Genesis [C19] [2019] 1 (50.0%) ###############
|
||||||
|
Reaper King No More 0 ( 0.0%) <-- ours
|
||||||
|
Enhanced Evolution [C20] [2020] 0 ( 0.0%)
|
||||||
|
|
||||||
|
GAME LENGTH
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
turns median 26 min 24 max 29
|
||||||
|
seconds median 72 total 2.4 min
|
||||||
|
|
||||||
|
HOW OUR DECK LOST
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
1x life total reached 0
|
||||||
|
|
||||||
|
WHO BEAT US (winner, in games our deck lost)
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
1x Primal Genesis [C19] [2019]
|
||||||
|
|
||||||
|
CAVEAT — READ THIS BEFORE TRUSTING THE WIN RATE
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
Forge's AI is heuristic and, by its own documentation, WEAK AT COMBO
|
||||||
|
decks. Ours is a combo/aristocrats deck, so the AI systematically
|
||||||
|
under-plays it: it will miss sac-loop lines a human would see.
|
||||||
|
Read this as a FLOOR on the deck's power, and as proof the deck
|
||||||
|
functions and its cards interact — not as a power rating.
|
||||||
|
Opponents are stock precons, which are roughly bracket 2.
|
||||||
|
|
||||||
|
====================================================================
|
||||||
|
decklist : /home/markdoeswork/mtg/reaper-king-no-more/decks/go-wide/decklist.txt
|
||||||
|
full log : /home/markdoeswork/mtg/reaper-king-no-more/decks/go-wide/sim/20260908T001736Z.log (every game, all Forge output)
|
||||||
|
raw data : /home/markdoeswork/mtg/reaper-king-no-more/decks/go-wide/sim/20260908T001736Z.json
|
||||||
|
this report: /home/markdoeswork/mtg/reaper-king-no-more/decks/go-wide/sim/20260908T001736Z.txt
|
||||||
|
====================================================================
|
||||||
21
decks/reaper-king-no-more/decks/grindy/README.md
Normal file
21
decks/reaper-king-no-more/decks/grindy/README.md
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
# grindy
|
||||||
|
|
||||||
|
_generated 2026-09-07 23:38Z by `tools/variant.py`_
|
||||||
|
|
||||||
|
- **bracket 3: PASS** (two-card vacuum combos: 0)
|
||||||
|
- 86 lines in `decklist.txt`
|
||||||
|
|
||||||
|
## files
|
||||||
|
|
||||||
|
| file | what it is |
|
||||||
|
| --- | --- |
|
||||||
|
| `decklist.txt` | the deck, `N Card Name` per line |
|
||||||
|
| `bracket.txt` | bracket-3 + house-rule check |
|
||||||
|
| `combos.txt` | combos in the deck, and one card away |
|
||||||
|
| `sim/` | Forge runs — `.log` raw, `.txt` report, `.json` data |
|
||||||
|
| `card_stats.txt` | per-card cast rate, avg round, win% (newest sim) |
|
||||||
|
|
||||||
|
## simulation runs
|
||||||
|
|
||||||
|
_none yet — run with `--sim 24`_
|
||||||
|
|
||||||
26
decks/reaper-king-no-more/decks/grindy/bracket.txt
Normal file
26
decks/reaper-king-no-more/decks/grindy/bracket.txt
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
COMMANDER: The Reaper, King No More
|
||||||
|
DECK SIZE: 99 + 1 commander = 100
|
||||||
|
|
||||||
|
GAME CHANGERS: 2/3 OK
|
||||||
|
- Bolas's Citadel
|
||||||
|
- The One Ring
|
||||||
|
|
||||||
|
MASS LAND DENIAL: 0 OK
|
||||||
|
|
||||||
|
EXTRA TURNS: 0 OK
|
||||||
|
|
||||||
|
TWO-CARD INFINITE COMBOS IN A VACUUM: 0 OK
|
||||||
|
|
||||||
|
two-card combos needing board state (ALLOWED, 3):
|
||||||
|
- Blowfly Infestation + Nest of Scarabs
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Flourishing Defenses
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
|
||||||
|
==========================================================
|
||||||
|
BRACKET 3: PASS
|
||||||
88
decks/reaper-king-no-more/decks/grindy/card_stats.txt
Normal file
88
decks/reaper-king-no-more/decks/grindy/card_stats.txt
Normal file
|
|
@ -0,0 +1,88 @@
|
||||||
|
==========================================================================
|
||||||
|
CARD STATISTICS — 20260908T012700Z.log
|
||||||
|
==========================================================================
|
||||||
|
games: 1 our wins: 0 (0.0%) deck: /home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/decklist.txt
|
||||||
|
|
||||||
|
NEVER CAST IN ANY GAME: 47
|
||||||
|
--------------------------------------------------------------------------
|
||||||
|
(dead weight, unplayable by the AI, or just never drawn in time)
|
||||||
|
Animate Dead
|
||||||
|
Assassin's Trophy
|
||||||
|
Bastion of Remembrance
|
||||||
|
Beast Within
|
||||||
|
Bedevil
|
||||||
|
Birds of Paradise
|
||||||
|
Black Sun's Zenith
|
||||||
|
Blood Artist
|
||||||
|
Blowfly Infestation
|
||||||
|
Carrion Feeder
|
||||||
|
Contagion Clasp
|
||||||
|
Damnation
|
||||||
|
Deadly Dispute
|
||||||
|
Farseek
|
||||||
|
Garruk's Uprising
|
||||||
|
Goblin Bombardment
|
||||||
|
Gray Merchant of Asphodel
|
||||||
|
Greater Good
|
||||||
|
Grim Haruspex
|
||||||
|
Hapatra, Vizier of Poisons
|
||||||
|
Kodama's Reach
|
||||||
|
Massacre Girl, Known Killer
|
||||||
|
Massacre Wurm
|
||||||
|
Mazirek, Kraul Death Priest
|
||||||
|
Midnight Reaper
|
||||||
|
Nature's Lore
|
||||||
|
Necroskitter
|
||||||
|
Nest of Scarabs
|
||||||
|
Persistent Constrictor
|
||||||
|
Plague Belcher
|
||||||
|
Putrid Goblin
|
||||||
|
Rampant Growth
|
||||||
|
Reanimate
|
||||||
|
Sign in Blood
|
||||||
|
Syr Konrad, the Grim
|
||||||
|
Terminate
|
||||||
|
The Meathook Massacre
|
||||||
|
The One Ring
|
||||||
|
Three Visits
|
||||||
|
Toxic Deluge
|
||||||
|
Vandalblast
|
||||||
|
Vengeful Bloodwitch
|
||||||
|
Village Rites
|
||||||
|
Viscera Seer
|
||||||
|
Wood Elves
|
||||||
|
Yawgmoth, Thran Physician
|
||||||
|
Zulaport Cutthroat
|
||||||
|
|
||||||
|
MOST-CAST CARDS
|
||||||
|
--------------------------------------------------------------------------
|
||||||
|
card cast in avg round win% when cast
|
||||||
|
Mayhem Devil 1/1 R11.0 0%
|
||||||
|
Humble Defector 1/1 R12.0 0%
|
||||||
|
Ashnod's Altar 1/1 R12.0 0%
|
||||||
|
Phyrexian Altar 1/1 R11.0 0%
|
||||||
|
Archfiend of Ifnir 1/1 R10.0 0%
|
||||||
|
Bolas's Citadel 1/1 R11.0 0%
|
||||||
|
Chaos Warp 1/1 R4.0 0%
|
||||||
|
Poison-Tip Archer 1/1 R11.0 0%
|
||||||
|
Skullclamp 1/1 R1.0 0%
|
||||||
|
Mirkwood Bats 1/1 R11.0 0%
|
||||||
|
Victimize 1/1 R7.0 0%
|
||||||
|
Sakura-Tribe Elder 1/1 R11.0 0%
|
||||||
|
Cultivate 1/1 R12.0 0%
|
||||||
|
Flourishing Defenses 1/1 R5.0 0%
|
||||||
|
The Reaper, King No More 1/1 R9.0 0%
|
||||||
|
Overseer of the Damned 1/1 R8.5 0%
|
||||||
|
Springbloom Druid 1/1 R3.0 0%
|
||||||
|
|
||||||
|
CAVEATS — DO NOT CUT CARDS ON THIS ALONE
|
||||||
|
--------------------------------------------------------------------------
|
||||||
|
* 1 games is a tiny sample. A card cast in 5 games has a win-rate
|
||||||
|
swing of +/-40% from noise alone.
|
||||||
|
* 'Never cast' conflates three very different things: a bad card, a
|
||||||
|
card the AI cannot use, and a card that was simply never drawn.
|
||||||
|
* Correlation only. Cards cast in LONG games look good because long
|
||||||
|
games are ones we survived -- the card didn't cause the win.
|
||||||
|
* Forge's AI is weak at combo; it under-casts combo pieces.
|
||||||
|
|
||||||
|
raw: /home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/sim/20260908T012700Z-cards.json
|
||||||
78
decks/reaper-king-no-more/decks/grindy/combos.txt
Normal file
78
decks/reaper-king-no-more/decks/grindy/combos.txt
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
==================================================================
|
||||||
|
COMBOS ALREADY IN THE DECK: 9
|
||||||
|
==================================================================
|
||||||
|
[E] Blowfly Infestation + Flourishing Defenses
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Nest of Scarabs
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Yawgmoth, Thran Physician + Nest of Scarabs + Blood Artist
|
||||||
|
-> Near-infinite -1/-1 counters
|
||||||
|
-> Near-infinite card draw
|
||||||
|
-> Near-infinite death triggers
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: There is at least one other creature on the battlefield.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Blood Artist
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Zulaport Cutthroat
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Viscera Seer
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Ashnod's Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colorless mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Phyrexian Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colored mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
|
||||||
|
==================================================================
|
||||||
|
ONE CARD AWAY: 274 combos, 85 distinct cards
|
||||||
|
==================================================================
|
||||||
|
16 combos Mikaeus, the Unhallowed {3}{B}{B}{B} #1306
|
||||||
|
13 combos Mortuary {3}{B} #13068
|
||||||
|
8 combos Veinwitch Coven {2}{B} #4179
|
||||||
|
8 combos Host of the Hereafter {2}{B}{G} #7758
|
||||||
|
8 combos First Day of Class {1}{R} #10147
|
||||||
|
7 combos Scurry Oak {2}{G} #2259
|
||||||
|
6 combos Thran Vigil {1}{B} #6285
|
||||||
|
6 combos Grumgully, the Generous {1}{R}{G} #4341
|
||||||
|
5 combos Stalwart Successor {1}{B}{G} #13591
|
||||||
|
5 combos Melira, Sylvok Outcast {1}{G} #11230
|
||||||
|
5 combos Rocksteady, Mutant Marauder {2}{G} #10233
|
||||||
|
5 combos Reyhan, Last of the Abzan {1}{B}{G} #6299
|
||||||
|
5 combos Support Mission {2}{G} #31928
|
||||||
|
5 combos Captain Kathryn Janeway {3}{G} #26133
|
||||||
|
5 combos Dualcaster Mage {1}{R}{R} #666
|
||||||
|
|
||||||
|
decklist: /home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/decklist.txt | source: data/variants.json (108,535 combos)
|
||||||
95
decks/reaper-king-no-more/decks/grindy/decklist.txt
Normal file
95
decks/reaper-king-no-more/decks/grindy/decklist.txt
Normal file
|
|
@ -0,0 +1,95 @@
|
||||||
|
# grindy
|
||||||
|
# Recursion + drain: never combo, just refuse to lose and bleed the table out. Tests whether this deck wants to be a value pile.
|
||||||
|
|
||||||
|
# generated by tools/generate.py from decks/no-mikaeus
|
||||||
|
# roles: {'reanimate': 3, 'drain': 3, 'draw': 2, 'minus_engine': -4, 'sac_outlet': -2, 'ramp': -2}
|
||||||
|
|
||||||
|
# Commander
|
||||||
|
1 The Reaper, King No More
|
||||||
|
|
||||||
|
# Main
|
||||||
|
1 Animate Dead
|
||||||
|
1 Archfiend of Ifnir
|
||||||
|
1 Ashnod's Altar
|
||||||
|
1 Assassin's Trophy
|
||||||
|
1 Bastion of Remembrance
|
||||||
|
1 Beast Within
|
||||||
|
1 Bedevil
|
||||||
|
1 Birds of Paradise
|
||||||
|
1 Black Sun's Zenith
|
||||||
|
1 Blackcleave Cliffs
|
||||||
|
1 Blood Artist
|
||||||
|
1 Blood Crypt
|
||||||
|
1 Bloodfell Caves
|
||||||
|
1 Blooming Marsh
|
||||||
|
1 Blowfly Infestation
|
||||||
|
1 Bojuka Bog
|
||||||
|
1 Bolas's Citadel
|
||||||
|
1 Carrion Feeder
|
||||||
|
1 Castle Locthwain
|
||||||
|
1 Chaos Warp
|
||||||
|
1 Command Tower
|
||||||
|
1 Contagion Clasp
|
||||||
|
1 Copperline Gorge
|
||||||
|
1 Cultivate
|
||||||
|
1 Damnation
|
||||||
|
1 Deadly Dispute
|
||||||
|
1 Exotic Orchard
|
||||||
|
1 Farseek
|
||||||
|
1 Flourishing Defenses
|
||||||
|
1 Garruk's Uprising
|
||||||
|
1 Goblin Bombardment
|
||||||
|
1 Gray Merchant of Asphodel
|
||||||
|
1 Greater Good
|
||||||
|
1 Grim Haruspex
|
||||||
|
1 Hapatra, Vizier of Poisons
|
||||||
|
1 Humble Defector
|
||||||
|
1 Jungle Hollow
|
||||||
|
1 Karplusan Forest
|
||||||
|
1 Kodama's Reach
|
||||||
|
1 Llanowar Wastes
|
||||||
|
1 Massacre Girl, Known Killer
|
||||||
|
1 Massacre Wurm
|
||||||
|
1 Mayhem Devil
|
||||||
|
1 Mazirek, Kraul Death Priest
|
||||||
|
1 Midnight Reaper
|
||||||
|
1 Mirkwood Bats
|
||||||
|
1 Nature's Lore
|
||||||
|
1 Necroskitter
|
||||||
|
1 Nest of Scarabs
|
||||||
|
1 Overgrown Tomb
|
||||||
|
1 Overseer of the Damned
|
||||||
|
1 Path of Ancestry
|
||||||
|
1 Persistent Constrictor
|
||||||
|
1 Phyrexian Altar
|
||||||
|
1 Plague Belcher
|
||||||
|
1 Poison-Tip Archer
|
||||||
|
1 Putrid Goblin
|
||||||
|
1 Rampant Growth
|
||||||
|
1 Reanimate
|
||||||
|
1 Rugged Highlands
|
||||||
|
1 Sakura-Tribe Elder
|
||||||
|
1 Savage Lands
|
||||||
|
1 Sign in Blood
|
||||||
|
1 Skullclamp
|
||||||
|
1 Springbloom Druid
|
||||||
|
1 Stomping Ground
|
||||||
|
1 Syr Konrad, the Grim
|
||||||
|
1 Terminate
|
||||||
|
1 The Meathook Massacre
|
||||||
|
1 The One Ring
|
||||||
|
1 Three Visits
|
||||||
|
1 Toxic Deluge
|
||||||
|
1 Vandalblast
|
||||||
|
1 Vengeful Bloodwitch
|
||||||
|
1 Victimize
|
||||||
|
1 Village Rites
|
||||||
|
1 Viscera Seer
|
||||||
|
1 Wood Elves
|
||||||
|
1 Yavimaya, Cradle of Growth
|
||||||
|
1 Yawgmoth, Thran Physician
|
||||||
|
1 Ziatora's Proving Ground
|
||||||
|
1 Zulaport Cutthroat
|
||||||
|
8 Swamp
|
||||||
|
5 Forest
|
||||||
|
4 Mountain
|
||||||
|
|
@ -0,0 +1,583 @@
|
||||||
|
{
|
||||||
|
"log": "/home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/sim/20260908T001530Z.log",
|
||||||
|
"games": 2,
|
||||||
|
"base_win_rate": 0.0,
|
||||||
|
"cards": [
|
||||||
|
{
|
||||||
|
"card": "The Reaper, King No More",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 6.833333333333333,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Syr Konrad, the Grim",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 6.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Necroskitter",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 7.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Assassin's Trophy",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 4.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Reanimate",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 10.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Bedevil",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 3.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Flourishing Defenses",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 8.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Springbloom Druid",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 9.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Vengeful Bloodwitch",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 3.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Deadly Dispute",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 10.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Massacre Wurm",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 9.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Humble Defector",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 8.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Carrion Feeder",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 5.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Nature's Lore",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 2.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Wood Elves",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 10.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Phyrexian Altar",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 10.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Chaos Warp",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 9.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Blowfly Infestation",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 10.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Yawgmoth, Thran Physician",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 4.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Three Visits",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Blood Artist",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Animate Dead",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "The One Ring",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Gray Merchant of Asphodel",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Nest of Scarabs",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Overseer of the Damned",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Farseek",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Mayhem Devil",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Hapatra, Vizier of Poisons",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Terminate",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Plague Belcher",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Vandalblast",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Sign in Blood",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Viscera Seer",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Midnight Reaper",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "The Meathook Massacre",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Cultivate",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Toxic Deluge",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Beast Within",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Ashnod's Altar",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Grim Haruspex",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Bolas's Citadel",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Archfiend of Ifnir",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Putrid Goblin",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Damnation",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Mirkwood Bats",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Kodama's Reach",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Rampant Growth",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Goblin Bombardment",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Massacre Girl, Known Killer",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Village Rites",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Sakura-Tribe Elder",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Victimize",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Bastion of Remembrance",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Black Sun's Zenith",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Contagion Clasp",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Persistent Constrictor",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Zulaport Cutthroat",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Mazirek, Kraul Death Priest",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Garruk's Uprising",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Birds of Paradise",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Poison-Tip Archer",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Greater Good",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Skullclamp",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"generated": "20260908T001659Z",
|
||||||
|
"engine": "Forge 2.0.14",
|
||||||
|
"format": "Commander, 4 players",
|
||||||
|
"games_requested": "2",
|
||||||
|
"games_completed": 2,
|
||||||
|
"seed": "20260909",
|
||||||
|
"decklist_file": "/home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/decklist.txt",
|
||||||
|
"log_file": "/home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/sim/20260908T001530Z.log",
|
||||||
|
"caveat": "Forge AI is weak at combo decks; treat win rate as a floor"
|
||||||
|
},
|
||||||
|
"win_counts": {
|
||||||
|
"Reaper King No More": 0,
|
||||||
|
"Bedecked Brokers [NCC] [2022]": 1,
|
||||||
|
"Cabaretti Cacophony [NCC] [2022]": 1,
|
||||||
|
"Maestros Massacre [NCC] [2022]": 0
|
||||||
|
},
|
||||||
|
"our_win_rate": 0.0,
|
||||||
|
"games": [
|
||||||
|
{
|
||||||
|
"turns": 20,
|
||||||
|
"winner": "Cabaretti Cacophony [NCC] [2022]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Bedecked Brokers [NCC] [2022]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Maestros Massacre [NCC] [2022]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 1,
|
||||||
|
"ms": 60440
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 19,
|
||||||
|
"winner": "Bedecked Brokers [NCC] [2022]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Cabaretti Cacophony [NCC] [2022]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 2,
|
||||||
|
"ms": 24197
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
1325
decks/reaper-king-no-more/decks/grindy/sim/20260908T001530Z.log
Normal file
1325
decks/reaper-king-no-more/decks/grindy/sim/20260908T001530Z.log
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,46 @@
|
||||||
|
====================================================================
|
||||||
|
FORGE SIMULATION REPORT — 4-player Commander pod
|
||||||
|
====================================================================
|
||||||
|
games completed : 2 (requested 2) seed: 20260909
|
||||||
|
decklist : /home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/decklist.txt (full 100 cards)
|
||||||
|
engine : Forge 2.0.14, full rules, AI vs AI
|
||||||
|
|
||||||
|
WIN RATE
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
our deck : 0/2 (0.0%) [random baseline in a 4-pod = 25%]
|
||||||
|
|
||||||
|
all players:
|
||||||
|
Bedecked Brokers [NCC] [2022] 1 (50.0%) ###############
|
||||||
|
Cabaretti Cacophony [NCC] [2022] 1 (50.0%) ###############
|
||||||
|
Reaper King No More 0 ( 0.0%) <-- ours
|
||||||
|
Maestros Massacre [NCC] [2022] 0 ( 0.0%)
|
||||||
|
|
||||||
|
GAME LENGTH
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
turns median 19 min 19 max 20
|
||||||
|
seconds median 42 total 1.4 min
|
||||||
|
|
||||||
|
HOW OUR DECK LOST
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
2x life total reached 0
|
||||||
|
|
||||||
|
WHO BEAT US (winner, in games our deck lost)
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
1x Cabaretti Cacophony [NCC] [2022]
|
||||||
|
1x Bedecked Brokers [NCC] [2022]
|
||||||
|
|
||||||
|
CAVEAT — READ THIS BEFORE TRUSTING THE WIN RATE
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
Forge's AI is heuristic and, by its own documentation, WEAK AT COMBO
|
||||||
|
decks. Ours is a combo/aristocrats deck, so the AI systematically
|
||||||
|
under-plays it: it will miss sac-loop lines a human would see.
|
||||||
|
Read this as a FLOOR on the deck's power, and as proof the deck
|
||||||
|
functions and its cards interact — not as a power rating.
|
||||||
|
Opponents are stock precons, which are roughly bracket 2.
|
||||||
|
|
||||||
|
====================================================================
|
||||||
|
decklist : /home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/decklist.txt
|
||||||
|
full log : /home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/sim/20260908T001530Z.log (every game, all Forge output)
|
||||||
|
raw data : /home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/sim/20260908T001530Z.json
|
||||||
|
this report: /home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/sim/20260908T001530Z.txt
|
||||||
|
====================================================================
|
||||||
|
|
@ -0,0 +1,583 @@
|
||||||
|
{
|
||||||
|
"log": "/home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/sim/20260908T001736Z.log",
|
||||||
|
"games": 2,
|
||||||
|
"base_win_rate": 0.0,
|
||||||
|
"cards": [
|
||||||
|
{
|
||||||
|
"card": "The Reaper, King No More",
|
||||||
|
"games_cast": 2,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 6.833333333333333,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Massacre Wurm",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 9.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Syr Konrad, the Grim",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 6.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Bedevil",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 3.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Reanimate",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 10.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Assassin's Trophy",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 4.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Wood Elves",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 10.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Deadly Dispute",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 10.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Carrion Feeder",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 5.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Humble Defector",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 8.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Phyrexian Altar",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 10.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Springbloom Druid",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 9.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Chaos Warp",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 9.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Necroskitter",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 7.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Vengeful Bloodwitch",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 3.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Yawgmoth, Thran Physician",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 4.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Flourishing Defenses",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 8.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Blowfly Infestation",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 10.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Nature's Lore",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 0.5,
|
||||||
|
"avg_turn": 2.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Birds of Paradise",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Ashnod's Altar",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Gray Merchant of Asphodel",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Garruk's Uprising",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Poison-Tip Archer",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Mirkwood Bats",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Bolas's Citadel",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Contagion Clasp",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Massacre Girl, Known Killer",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Overseer of the Damned",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Viscera Seer",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Zulaport Cutthroat",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "The Meathook Massacre",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Village Rites",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Persistent Constrictor",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Skullclamp",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Kodama's Reach",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Grim Haruspex",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Damnation",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Animate Dead",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Midnight Reaper",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Bastion of Remembrance",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Cultivate",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Victimize",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Hapatra, Vizier of Poisons",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Nest of Scarabs",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Plague Belcher",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Black Sun's Zenith",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Sakura-Tribe Elder",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Terminate",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Mazirek, Kraul Death Priest",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Vandalblast",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Rampant Growth",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "The One Ring",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Archfiend of Ifnir",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Toxic Deluge",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Mayhem Devil",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Sign in Blood",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Beast Within",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Goblin Bombardment",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Three Visits",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Blood Artist",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Farseek",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Putrid Goblin",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Greater Good",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"generated": "20260908T001907Z",
|
||||||
|
"engine": "Forge 2.0.14",
|
||||||
|
"format": "Commander, 4 players",
|
||||||
|
"games_requested": "2",
|
||||||
|
"games_completed": 2,
|
||||||
|
"seed": "20260909",
|
||||||
|
"decklist_file": "/home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/decklist.txt",
|
||||||
|
"log_file": "/home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/sim/20260908T001736Z.log",
|
||||||
|
"caveat": "Forge AI is weak at combo decks; treat win rate as a floor"
|
||||||
|
},
|
||||||
|
"win_counts": {
|
||||||
|
"Reaper King No More": 0,
|
||||||
|
"Bedecked Brokers [NCC] [2022]": 1,
|
||||||
|
"Cabaretti Cacophony [NCC] [2022]": 1,
|
||||||
|
"Maestros Massacre [NCC] [2022]": 0
|
||||||
|
},
|
||||||
|
"our_win_rate": 0.0,
|
||||||
|
"games": [
|
||||||
|
{
|
||||||
|
"turns": 20,
|
||||||
|
"winner": "Cabaretti Cacophony [NCC] [2022]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Bedecked Brokers [NCC] [2022]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Maestros Massacre [NCC] [2022]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 1,
|
||||||
|
"ms": 62068
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 19,
|
||||||
|
"winner": "Bedecked Brokers [NCC] [2022]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Cabaretti Cacophony [NCC] [2022]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 2,
|
||||||
|
"ms": 24619
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
1325
decks/reaper-king-no-more/decks/grindy/sim/20260908T001736Z.log
Normal file
1325
decks/reaper-king-no-more/decks/grindy/sim/20260908T001736Z.log
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,46 @@
|
||||||
|
====================================================================
|
||||||
|
FORGE SIMULATION REPORT — 4-player Commander pod
|
||||||
|
====================================================================
|
||||||
|
games completed : 2 (requested 2) seed: 20260909
|
||||||
|
decklist : /home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/decklist.txt (full 100 cards)
|
||||||
|
engine : Forge 2.0.14, full rules, AI vs AI
|
||||||
|
|
||||||
|
WIN RATE
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
our deck : 0/2 (0.0%) [random baseline in a 4-pod = 25%]
|
||||||
|
|
||||||
|
all players:
|
||||||
|
Bedecked Brokers [NCC] [2022] 1 (50.0%) ###############
|
||||||
|
Cabaretti Cacophony [NCC] [2022] 1 (50.0%) ###############
|
||||||
|
Reaper King No More 0 ( 0.0%) <-- ours
|
||||||
|
Maestros Massacre [NCC] [2022] 0 ( 0.0%)
|
||||||
|
|
||||||
|
GAME LENGTH
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
turns median 19 min 19 max 20
|
||||||
|
seconds median 43 total 1.4 min
|
||||||
|
|
||||||
|
HOW OUR DECK LOST
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
2x life total reached 0
|
||||||
|
|
||||||
|
WHO BEAT US (winner, in games our deck lost)
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
1x Cabaretti Cacophony [NCC] [2022]
|
||||||
|
1x Bedecked Brokers [NCC] [2022]
|
||||||
|
|
||||||
|
CAVEAT — READ THIS BEFORE TRUSTING THE WIN RATE
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
Forge's AI is heuristic and, by its own documentation, WEAK AT COMBO
|
||||||
|
decks. Ours is a combo/aristocrats deck, so the AI systematically
|
||||||
|
under-plays it: it will miss sac-loop lines a human would see.
|
||||||
|
Read this as a FLOOR on the deck's power, and as proof the deck
|
||||||
|
functions and its cards interact — not as a power rating.
|
||||||
|
Opponents are stock precons, which are roughly bracket 2.
|
||||||
|
|
||||||
|
====================================================================
|
||||||
|
decklist : /home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/decklist.txt
|
||||||
|
full log : /home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/sim/20260908T001736Z.log (every game, all Forge output)
|
||||||
|
raw data : /home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/sim/20260908T001736Z.json
|
||||||
|
this report: /home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/sim/20260908T001736Z.txt
|
||||||
|
====================================================================
|
||||||
|
|
@ -0,0 +1,583 @@
|
||||||
|
{
|
||||||
|
"log": "/home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/sim/20260908T012700Z.log",
|
||||||
|
"games": 1,
|
||||||
|
"base_win_rate": 0.0,
|
||||||
|
"cards": [
|
||||||
|
{
|
||||||
|
"card": "Mayhem Devil",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 11.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Humble Defector",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 12.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Ashnod's Altar",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 12.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Phyrexian Altar",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 11.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Archfiend of Ifnir",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 10.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Bolas's Citadel",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 11.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Chaos Warp",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 4.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Poison-Tip Archer",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 11.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Skullclamp",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 1.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Mirkwood Bats",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 11.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Victimize",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 7.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Sakura-Tribe Elder",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 11.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Cultivate",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 12.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Flourishing Defenses",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 5.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "The Reaper, King No More",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 9.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Overseer of the Damned",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 8.5,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Springbloom Druid",
|
||||||
|
"games_cast": 1,
|
||||||
|
"cast_rate": 1.0,
|
||||||
|
"avg_turn": 3.0,
|
||||||
|
"win_rate_when_cast": 0.0,
|
||||||
|
"delta": 0.0,
|
||||||
|
"total_casts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Plague Belcher",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Black Sun's Zenith",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Viscera Seer",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Bastion of Remembrance",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Beast Within",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Midnight Reaper",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Farseek",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Assassin's Trophy",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Yawgmoth, Thran Physician",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "The Meathook Massacre",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Kodama's Reach",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Bedevil",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Deadly Dispute",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Nest of Scarabs",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Sign in Blood",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Grim Haruspex",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Contagion Clasp",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Persistent Constrictor",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Blowfly Infestation",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Mazirek, Kraul Death Priest",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Terminate",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Syr Konrad, the Grim",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Vandalblast",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Wood Elves",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Necroskitter",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Massacre Wurm",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Carrion Feeder",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Vengeful Bloodwitch",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Putrid Goblin",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Toxic Deluge",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Reanimate",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Goblin Bombardment",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Rampant Growth",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Gray Merchant of Asphodel",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Birds of Paradise",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Massacre Girl, Known Killer",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Village Rites",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Garruk's Uprising",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Zulaport Cutthroat",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Hapatra, Vizier of Poisons",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Greater Good",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Three Visits",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Animate Dead",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Damnation",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "The One Ring",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Nature's Lore",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Blood Artist",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"generated": "20260908T012903Z",
|
||||||
|
"engine": "Forge 2.0.14",
|
||||||
|
"format": "Commander, 4 players",
|
||||||
|
"games_requested": "1",
|
||||||
|
"games_completed": 1,
|
||||||
|
"seed": "20260907",
|
||||||
|
"decklist_file": "/home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/decklist.txt",
|
||||||
|
"log_file": "/home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/sim/20260908T012700Z.log",
|
||||||
|
"caveat": "Forge AI is weak at combo decks; treat win rate as a floor"
|
||||||
|
},
|
||||||
|
"win_counts": {
|
||||||
|
"Reaper King No More": 1,
|
||||||
|
"Faceless Menace [C19] [2019]": 0,
|
||||||
|
"Merciless Rage [C19] [2019]": 0,
|
||||||
|
"Arcane Maelstrom [C20] [2020]": 0
|
||||||
|
},
|
||||||
|
"our_win_rate": 1.0,
|
||||||
|
"games": [
|
||||||
|
{
|
||||||
|
"turns": 24,
|
||||||
|
"winner": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"losers": [],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 1,
|
||||||
|
"ms": 120048
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
897
decks/reaper-king-no-more/decks/grindy/sim/20260908T012700Z.log
Normal file
897
decks/reaper-king-no-more/decks/grindy/sim/20260908T012700Z.log
Normal file
|
|
@ -0,0 +1,897 @@
|
||||||
|
Error handling registered!
|
||||||
|
21:27:00 [INFO ] GuiBase: ##########################################
|
||||||
|
21:27:00 [INFO ] GuiBase: APP: Forge v.2.0.14-SNAPSHOT-08.08
|
||||||
|
21:27:00 [INFO ] GuiBase: Java: 26.0.2.1 (Arch Linux)
|
||||||
|
21:27:00 [INFO ] GuiBase: OS: Linux 7.1.9-arch1-2 amd64
|
||||||
|
21:27:00 [INFO ] GuiBase: RAM: 2048 MB max, 20 CPUs
|
||||||
|
21:27:00 [INFO ] GuiBase: ##########################################
|
||||||
|
Language 'en-US' loaded successfully.
|
||||||
|
(ThreadUtil first call): Running with priority 5
|
||||||
|
Read cards: 33617 archived files in 0 ms (25 parts) using thread pool
|
||||||
|
Read cards: 836 files in 0 ms (8 parts) using thread pool
|
||||||
|
Simulation mode
|
||||||
|
Ai(1)-Reaper King No More vs Ai(2)-Faceless Menace [C19] [2019] vs Ai(3)-Merciless Rage [C19] [2019] vs Ai(4)-Arcane Maelstrom [C20] [2020] - one game of Commander seed 20260907
|
||||||
|
Comet Storm (307) - [Couldn't add to stack, failed to target] - Choose any target, then choose another target for each time this spell was kicked. CARDNAME deals X damage to each of them.[[Bloodhall Priest (300)]]
|
||||||
|
Stopping slow match as draw
|
||||||
|
Mulligan: Ai(3)-Merciless Rage [C19] [2019] has kept a hand of 7 cards
|
||||||
|
Mulligan: Ai(4)-Arcane Maelstrom [C20] [2020] has kept a hand of 7 cards
|
||||||
|
Mulligan: Ai(1)-Reaper King No More has kept a hand of 7 cards
|
||||||
|
Mulligan: Ai(2)-Faceless Menace [C19] [2019] has kept a hand of 7 cards
|
||||||
|
Turn: Turn 1 (Ai(3)-Merciless Rage [C19] [2019])
|
||||||
|
Land: Ai(3)-Merciless Rage [C19] [2019] played Rix Maadi, Dungeon Palace (214)
|
||||||
|
Turn: Turn 2 (Ai(4)-Arcane Maelstrom [C20] [2020])
|
||||||
|
Land: Ai(4)-Arcane Maelstrom [C20] [2020] played Yavimaya Coast (360)
|
||||||
|
Turn: Turn 3 (Ai(1)-Reaper King No More)
|
||||||
|
Land: Ai(1)-Reaper King No More played Llanowar Wastes (80)
|
||||||
|
Mana: Llanowar Wastes (80) - {T}: Add {C}.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More cast Skullclamp
|
||||||
|
Resolve Stack: Skullclamp
|
||||||
|
Turn: Turn 4 (Ai(2)-Faceless Menace [C19] [2019])
|
||||||
|
Land: Ai(2)-Faceless Menace [C19] [2019] played Island (103)
|
||||||
|
Turn: Turn 5 (Ai(3)-Merciless Rage [C19] [2019])
|
||||||
|
Replacement Effect: Barren Moor enters tapped.
|
||||||
|
Land: Ai(3)-Merciless Rage [C19] [2019] played Barren Moor (218)
|
||||||
|
Turn: Turn 6 (Ai(4)-Arcane Maelstrom [C20] [2020])
|
||||||
|
Land: Ai(4)-Arcane Maelstrom [C20] [2020] played Forest (370)
|
||||||
|
Turn: Turn 7 (Ai(1)-Reaper King No More)
|
||||||
|
Land: Ai(1)-Reaper King No More played Swamp (60)
|
||||||
|
Mana: Swamp (60) - {T}: Add {B}.
|
||||||
|
Mana: Llanowar Wastes (80) - {T}: Add {C}.
|
||||||
|
Discard: Ai(1)-Reaper King No More discards Archfiend of Ifnir (42).
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More activated Archfiend of Ifnir
|
||||||
|
Resolve Stack: Archfiend of Ifnir (42) - Ai(1)-Reaper King No More draws a card.
|
||||||
|
Turn: Turn 8 (Ai(2)-Faceless Menace [C19] [2019])
|
||||||
|
Land: Ai(2)-Faceless Menace [C19] [2019] played Forest (121)
|
||||||
|
Mana: Forest (121) - {T}: Add {G}.
|
||||||
|
Mana: Island (103) - {T}: Add {U}.
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] cast Sakura-Tribe Elder
|
||||||
|
Resolve Stack: Sakura-Tribe Elder - Creature 1 / 1
|
||||||
|
Zone Change: Sakura-Tribe Elder (170) was put into Graveyard from Battlefield.
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] activated Sakura-Tribe Elder
|
||||||
|
Resolve Stack: Sakura-Tribe Elder (170) - Ai(2)-Faceless Menace [C19] [2019] searches their library for a basic land card, puts it onto the battlefield tapped, then shuffles.
|
||||||
|
Turn: Turn 9 (Ai(3)-Merciless Rage [C19] [2019])
|
||||||
|
Land: Ai(3)-Merciless Rage [C19] [2019] played Mountain (244)
|
||||||
|
Mana: Barren Moor (218) - {T}: Add {B}.
|
||||||
|
Mana: Mountain (244) - {T}: Add {R}.
|
||||||
|
Mana: Rix Maadi, Dungeon Palace (214) - {T}: Add {C}.
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] cast Anje Falkenrath
|
||||||
|
Resolve Stack: Anje Falkenrath - Creature 1 / 3
|
||||||
|
Combat: Ai(3)-Merciless Rage [C19] [2019] assigned Anje Falkenrath (302) to attack Ai(1)-Reaper King No More.
|
||||||
|
Combat: Ai(1)-Reaper King No More didn't block Anje Falkenrath (302).
|
||||||
|
Damage: Anje Falkenrath (302) deals 1 combat damage to Ai(1)-Reaper King No More.
|
||||||
|
Life: Life: Ai(1)-Reaper King No More 40 > 39
|
||||||
|
Turn: Turn 10 (Ai(4)-Arcane Maelstrom [C20] [2020])
|
||||||
|
Replacement Effect: Rugged Highlands enters tapped.
|
||||||
|
Land: Ai(4)-Arcane Maelstrom [C20] [2020] played Rugged Highlands (357)
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] triggered Rugged Highlands
|
||||||
|
Life: Life: Ai(4)-Arcane Maelstrom [C20] [2020] 40 > 41
|
||||||
|
Resolve Stack: When Rugged Highlands enters, you gain 1 life. [Zone Changer: Rugged Highlands (357)]
|
||||||
|
Turn: Turn 11 (Ai(1)-Reaper King No More)
|
||||||
|
Replacement Effect: Blooming Marsh enters tapped unless you control two or fewer other lands.
|
||||||
|
Land: Ai(1)-Reaper King No More played Blooming Marsh (40)
|
||||||
|
Mana: Blooming Marsh (40) - {T}: Add {B} or {G}.
|
||||||
|
Mana: Swamp (60) - {T}: Add {B}.
|
||||||
|
Mana: Llanowar Wastes (80) - {T}: Add {C}.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More cast Springbloom Druid
|
||||||
|
Resolve Stack: Springbloom Druid - Creature 1 / 1
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Springbloom Druid
|
||||||
|
Zone Change: Swamp (60) was put into Graveyard from Battlefield.
|
||||||
|
Resolve Stack: When Springbloom Druid enters, you may sacrifice a land. If you do, search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle. [Zone Changer: Springbloom Druid (22)]
|
||||||
|
Turn: Turn 12 (Ai(2)-Faceless Menace [C19] [2019])
|
||||||
|
Replacement Effect: Golgari Rot Farm enters tapped.
|
||||||
|
Land: Ai(2)-Faceless Menace [C19] [2019] played Golgari Rot Farm (134)
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Golgari Rot Farm
|
||||||
|
Resolve Stack: When Golgari Rot Farm enters, return a land you control to its owner's hand. [Zone Changer: Golgari Rot Farm (134)]
|
||||||
|
Mana: Forest (121) - {T}: Add {G}.
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] cast Sol Ring
|
||||||
|
Resolve Stack: Sol Ring
|
||||||
|
Mana: Sol Ring (157) - {T}: Add {C}{C}.
|
||||||
|
Mana: Swamp (186) - {T}: Add {B}.
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] cast Morph
|
||||||
|
Resolve Stack: Morph - Creature 2/2
|
||||||
|
Turn: Turn 13 (Ai(3)-Merciless Rage [C19] [2019])
|
||||||
|
Land: Ai(3)-Merciless Rage [C19] [2019] played Swamp (288)
|
||||||
|
Mana: Mountain (244) - {T}: Add {R}.
|
||||||
|
Mana: Barren Moor (218) - {T}: Add {B}.
|
||||||
|
Mana: Swamp (288) - {T}: Add {B}.
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] cast Chaos Warp targeting [Face-down card (H4)]
|
||||||
|
Resolve Stack: Chaos Warp (212) - Shuffle Face-down card (H4) into its owner's library. Ai(3)-Merciless Rage [C19] [2019] reveals the top card of Ai(2)-Faceless Menace [C19] [2019]'s library.
|
||||||
|
Turn: Turn 14 (Ai(4)-Arcane Maelstrom [C20] [2020])
|
||||||
|
Replacement Effect: Oran-Rief, the Vastwood enters tapped.
|
||||||
|
Land: Ai(4)-Arcane Maelstrom [C20] [2020] played Oran-Rief, the Vastwood (304)
|
||||||
|
Turn: Turn 15 (Ai(1)-Reaper King No More)
|
||||||
|
Mana: Mountain (94) - {T}: Add {R}.
|
||||||
|
Mana: Mountain (92) - {T}: Add {R}.
|
||||||
|
Mana: Blooming Marsh (40) - {T}: Add {B} or {G}.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More cast Chaos Warp targeting [Volrath, the Shapestealer (127)]
|
||||||
|
Resolve Stack: Chaos Warp (82) - Shuffle Volrath, the Shapestealer (127) into its owner's library. Ai(1)-Reaper King No More reveals the top card of Ai(2)-Faceless Menace [C19] [2019]'s library.
|
||||||
|
Land: Ai(1)-Reaper King No More played Swamp (61)
|
||||||
|
Turn: Turn 16 (Ai(2)-Faceless Menace [C19] [2019])
|
||||||
|
Land: Ai(2)-Faceless Menace [C19] [2019] played Island (103)
|
||||||
|
Mana: Swamp (186) - {T}: Add {B}.
|
||||||
|
Mana: Golgari Rot Farm (134) - {T}: Add {B}{G}.
|
||||||
|
Mana: Sol Ring (157) - {T}: Add {C}{C}.
|
||||||
|
Mana: Forest (121) - {T}: Add {G}.
|
||||||
|
Mana: Forest (125) - {T}: Add {G}.
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] cast Thieving Amalgam
|
||||||
|
Resolve Stack: Thieving Amalgam - Creature 6 / 7
|
||||||
|
Turn: Turn 17 (Ai(3)-Merciless Rage [C19] [2019])
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Thieving Amalgam
|
||||||
|
Resolve Stack: At the beginning of each opponent's upkeep, you manifest the top card of that player's library. (Put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) [Phase: Ai(3)-Merciless Rage [C19] [2019]]
|
||||||
|
Mana: Mountain (244) - {T}: Add {R}.
|
||||||
|
Mana: Barren Moor (218) - {T}: Add {B}.
|
||||||
|
Mana: Swamp (288) - {T}: Add {B}.
|
||||||
|
Mana: Rix Maadi, Dungeon Palace (214) - {T}: Add {C}.
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] cast Bloodhall Priest
|
||||||
|
Resolve Stack: Bloodhall Priest - Creature 4 / 4
|
||||||
|
Turn: Turn 18 (Ai(4)-Arcane Maelstrom [C20] [2020])
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Thieving Amalgam
|
||||||
|
Resolve Stack: At the beginning of each opponent's upkeep, you manifest the top card of that player's library. (Put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) [Phase: Ai(4)-Arcane Maelstrom [C20] [2020]]
|
||||||
|
Mana: Forest (370) - {T}: Add {G}.
|
||||||
|
Mana: Rugged Highlands (357) - {T}: Add {R} or {G}.
|
||||||
|
Mana: Oran-Rief, the Vastwood (304) - {T}: Add {G}.
|
||||||
|
Zone Change: Forest (370) was put into Graveyard from Battlefield.
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] cast Harrow
|
||||||
|
Resolve Stack: Harrow (346) - Ai(4)-Arcane Maelstrom [C20] [2020] searches their library for up to two basic land cards, puts them onto the battlefield, then shuffles.
|
||||||
|
Replacement Effect: Mosswort Bridge enters tapped.
|
||||||
|
Land: Ai(4)-Arcane Maelstrom [C20] [2020] played Mosswort Bridge (329)
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] triggered Mosswort Bridge
|
||||||
|
Resolve Stack: Hideaway 4 (When this permanent enters, look at the top four cards of your library, exile one face down, then put the rest on the bottom of your library.) [Zone Changer: Mosswort Bridge (329)]
|
||||||
|
Turn: Turn 19 (Ai(1)-Reaper King No More)
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Thieving Amalgam
|
||||||
|
Resolve Stack: At the beginning of each opponent's upkeep, you manifest the top card of that player's library. (Put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) [Phase: Ai(1)-Reaper King No More]
|
||||||
|
Mana: Blooming Marsh (40) - {T}: Add {B} or {G}.
|
||||||
|
Mana: Mountain (94) - {T}: Add {R}.
|
||||||
|
Mana: Mountain (92) - {T}: Add {R}.
|
||||||
|
Mana: Swamp (61) - {T}: Add {B}.
|
||||||
|
Mana: Llanowar Wastes (80) - {T}: Add {C}.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More cast Flourishing Defenses
|
||||||
|
Resolve Stack: Flourishing Defenses
|
||||||
|
Turn: Turn 20 (Ai(2)-Faceless Menace [C19] [2019])
|
||||||
|
Mana: Island (103) - {T}: Add {U}.
|
||||||
|
Mana: Sol Ring (157) - {T}: Add {C}{C}.
|
||||||
|
Resolve Stack: Ai(2)-Faceless Menace [C19] [2019] has unmanifested Haldan, Avid Arcanist
|
||||||
|
Land: Ai(2)-Faceless Menace [C19] [2019] played Llanowar Wastes (184)
|
||||||
|
Combat: Ai(2)-Faceless Menace [C19] [2019] assigned Thieving Amalgam (117) to attack Ai(3)-Merciless Rage [C19] [2019].
|
||||||
|
Combat: Ai(3)-Merciless Rage [C19] [2019] didn't block Thieving Amalgam (117).
|
||||||
|
Damage: Thieving Amalgam (117) deals 6 combat damage to Ai(3)-Merciless Rage [C19] [2019].
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 40 > 34
|
||||||
|
Turn: Turn 21 (Ai(3)-Merciless Rage [C19] [2019])
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Thieving Amalgam
|
||||||
|
Resolve Stack: At the beginning of each opponent's upkeep, you manifest the top card of that player's library. (Put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) [Phase: Ai(3)-Merciless Rage [C19] [2019]]
|
||||||
|
Combat: Ai(3)-Merciless Rage [C19] [2019] assigned Bloodhall Priest (300) to attack Ai(2)-Faceless Menace [C19] [2019].
|
||||||
|
Combat: Ai(2)-Faceless Menace [C19] [2019] didn't block Bloodhall Priest (300).
|
||||||
|
Damage: Bloodhall Priest (300) deals 4 combat damage to Ai(2)-Faceless Menace [C19] [2019].
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 40 > 36
|
||||||
|
Mana: Mountain (244) - {T}: Add {R}.
|
||||||
|
Mana: Barren Moor (218) - {T}: Add {B}.
|
||||||
|
Mana: Swamp (288) - {T}: Add {B}.
|
||||||
|
Mana: Rix Maadi, Dungeon Palace (214) - {T}: Add {C}.
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] cast Scaretiller
|
||||||
|
Resolve Stack: Scaretiller - Creature 1 / 4
|
||||||
|
Turn: Turn 22 (Ai(4)-Arcane Maelstrom [C20] [2020])
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Thieving Amalgam
|
||||||
|
Resolve Stack: At the beginning of each opponent's upkeep, you manifest the top card of that player's library. (Put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) [Phase: Ai(4)-Arcane Maelstrom [C20] [2020]]
|
||||||
|
Land: Ai(4)-Arcane Maelstrom [C20] [2020] played Mountain (389)
|
||||||
|
Mana: Mountain (389) - {T}: Add {R}.
|
||||||
|
Mana: Rugged Highlands (357) - {T}: Add {R} or {G}.
|
||||||
|
Mana: Island (350) - {T}: Add {U}.
|
||||||
|
Mana: Island (351) - {T}: Add {U}.
|
||||||
|
Mana: Oran-Rief, the Vastwood (304) - {T}: Add {G}.
|
||||||
|
Mana: Mosswort Bridge (329) - {T}: Add {G}.
|
||||||
|
Mana: Yavimaya Coast (360) - {T}: Add {C}.
|
||||||
|
Add To Stack: Comet Storm (307) - [Couldn't add to stack, failed to target] - Choose any target, then choose another target for each time this spell was kicked. CARDNAME deals X damage to each of them.
|
||||||
|
Turn: Turn 23 (Ai(1)-Reaper King No More)
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Thieving Amalgam
|
||||||
|
Resolve Stack: At the beginning of each opponent's upkeep, you manifest the top card of that player's library. (Put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) [Phase: Ai(1)-Reaper King No More]
|
||||||
|
Mana: Mountain (94) - {T}: Add {R}.
|
||||||
|
Mana: Mountain (92) - {T}: Add {R}.
|
||||||
|
Mana: Swamp (61) - {T}: Add {B}.
|
||||||
|
Mana: Blooming Marsh (40) - {T}: Add {B} or {G}.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More cast The Reaper, King No More
|
||||||
|
Resolve Stack: The Reaper, King No More - Creature 3 / 3
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered The Reaper, King No More targeting [The Reaper, King No More (100), Springbloom Druid (22)]
|
||||||
|
Resolve Stack: When The Reaper, King No More enters, put a -1/-1 counter on each of up to two target creatures. (Targeting: [[The Reaper, King No More (100), Springbloom Druid (22)]]) [Zone Changer: The Reaper, King No More (100)]
|
||||||
|
Zone Change: Springbloom Druid (22) was put into Graveyard from Battlefield.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Flourishing Defenses
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Flourishing Defenses
|
||||||
|
Resolve Stack: Whenever a -1/-1 counter is put on a creature, you may create a 1/1 green Elf Warrior creature token. [Added once: Springbloom Druid (22)]
|
||||||
|
Resolve Stack: Whenever a -1/-1 counter is put on a creature, you may create a 1/1 green Elf Warrior creature token. [Added once: The Reaper, King No More (100)]
|
||||||
|
Mana: Llanowar Wastes (80) - {T}: Add {C}.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More activated Skullclamp targeting [The Reaper, King No More (100)]
|
||||||
|
Resolve Stack: Skullclamp (3) - Attach to The Reaper, King No More (100)
|
||||||
|
Turn: Turn 24 (Ai(2)-Faceless Menace [C19] [2019])
|
||||||
|
Mana: Island (103) - {T}: Add {U}.
|
||||||
|
Mana: Swamp (186) - {T}: Add {B}.
|
||||||
|
Mana: Forest (121) - {T}: Add {G}.
|
||||||
|
Mana: Sol Ring (157) - {T}: Add {C}{C}.
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] cast Kadena, Slinking Sorcerer
|
||||||
|
Resolve Stack: Kadena, Slinking Sorcerer - Creature 3 / 3
|
||||||
|
Combat: Ai(2)-Faceless Menace [C19] [2019] assigned Thieving Amalgam (117), Face-down card (H5), Face-down card (H8), Face-down card (H9), Face-down card (H10), Face-down card (H11) and Haldan, Avid Arcanist (306) to attack Ai(1)-Reaper King No More.
|
||||||
|
Combat: Ai(1)-Reaper King No More didn't block Thieving Amalgam (117).
|
||||||
|
Ai(1)-Reaper King No More didn't block Face-down card (H5).
|
||||||
|
Ai(1)-Reaper King No More didn't block Face-down card (H8).
|
||||||
|
Ai(1)-Reaper King No More didn't block Face-down card (H9).
|
||||||
|
Ai(1)-Reaper King No More didn't block Face-down card (H10).
|
||||||
|
Ai(1)-Reaper King No More didn't block Face-down card (H11).
|
||||||
|
Ai(1)-Reaper King No More didn't block Haldan, Avid Arcanist (306).
|
||||||
|
Damage: Thieving Amalgam (117) deals 6 combat damage to Ai(1)-Reaper King No More.
|
||||||
|
Damage: Face-down card (H5) deals 2 combat damage to Ai(1)-Reaper King No More.
|
||||||
|
Damage: Face-down card (H8) deals 2 combat damage to Ai(1)-Reaper King No More.
|
||||||
|
Damage: Face-down card (H9) deals 2 combat damage to Ai(1)-Reaper King No More.
|
||||||
|
Damage: Face-down card (H10) deals 2 combat damage to Ai(1)-Reaper King No More.
|
||||||
|
Damage: Face-down card (H11) deals 2 combat damage to Ai(1)-Reaper King No More.
|
||||||
|
Damage: Haldan, Avid Arcanist (306) deals 1 combat damage to Ai(1)-Reaper King No More.
|
||||||
|
Life: Life: Ai(1)-Reaper King No More 39 > 22
|
||||||
|
Replacement Effect: Golgari Guildgate enters tapped.
|
||||||
|
Land: Ai(2)-Faceless Menace [C19] [2019] played Golgari Guildgate (183)
|
||||||
|
Turn: Turn 25 (Ai(3)-Merciless Rage [C19] [2019])
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Thieving Amalgam
|
||||||
|
Resolve Stack: At the beginning of each opponent's upkeep, you manifest the top card of that player's library. (Put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) [Phase: Ai(3)-Merciless Rage [C19] [2019]]
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Kadena, Slinking Sorcerer
|
||||||
|
Resolve Stack: Whenever a face-down creature you control enters, draw a card. [Zone Changer: Face-down card (H12)]
|
||||||
|
Mana: Barren Moor (218) - {T}: Add {B}.
|
||||||
|
Mana: Swamp (288) - {T}: Add {B}.
|
||||||
|
Mana: Mountain (244) - {T}: Add {R}.
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] cast Big Game Hunter
|
||||||
|
Resolve Stack: Big Game Hunter - Creature 1 / 1
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] triggered Big Game Hunter targeting [Thieving Amalgam (117)]
|
||||||
|
Zone Change: Thieving Amalgam (117) was put into Graveyard from Battlefield.
|
||||||
|
Resolve Stack: When Big Game Hunter enters, destroy target creature with power 4 or greater. It can't be regenerated. (Targeting: [[Thieving Amalgam (117)]]) [Zone Changer: Big Game Hunter (223)]
|
||||||
|
Discard: Ai(3)-Merciless Rage [C19] [2019] discards Squee, Goblin Nabob (238).
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] activated Anje Falkenrath
|
||||||
|
Resolve Stack: Anje Falkenrath (302) - Ai(3)-Merciless Rage [C19] [2019] draws a card.
|
||||||
|
Land: Ai(3)-Merciless Rage [C19] [2019] played Swamp (287)
|
||||||
|
Mana: Swamp (287) - {T}: Add {B}.
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] cast Sol Ring
|
||||||
|
Resolve Stack: Sol Ring
|
||||||
|
Mana: Sol Ring (255) - {T}: Add {C}{C}.
|
||||||
|
Mana: Rix Maadi, Dungeon Palace (214) - {T}: Add {C}.
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] cast Rakdos Locket
|
||||||
|
Resolve Stack: Rakdos Locket
|
||||||
|
Turn: Turn 26 (Ai(4)-Arcane Maelstrom [C20] [2020])
|
||||||
|
Mana: Rugged Highlands (357) - {T}: Add {R} or {G}.
|
||||||
|
Mana: Mountain (389) - {T}: Add {R}.
|
||||||
|
Mana: Island (350) - {T}: Add {U}.
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] cast Natural Connection
|
||||||
|
Resolve Stack: Natural Connection (308) - Ai(4)-Arcane Maelstrom [C20] [2020] searches their library for a basic land card, puts it onto the battlefield tapped, then shuffles.
|
||||||
|
Replacement Effect: Rupture Spire enters tapped.
|
||||||
|
Land: Ai(4)-Arcane Maelstrom [C20] [2020] played Rupture Spire (359)
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] triggered Rupture Spire
|
||||||
|
Mana: Island (351) - {T}: Add {U}.
|
||||||
|
Resolve Stack: When Rupture Spire enters, sacrifice it unless you pay {1}. [Zone Changer: Rupture Spire (359)]
|
||||||
|
Turn: Turn 27 (Ai(1)-Reaper King No More)
|
||||||
|
Mana: Swamp (61) - {T}: Add {B}.
|
||||||
|
Mana: Mountain (94) - {T}: Add {R}.
|
||||||
|
Mana: Mountain (92) - {T}: Add {R}.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More cast Victimize
|
||||||
|
Zone Change: Elf Warrior Token (410) was put into Graveyard from Battlefield.
|
||||||
|
Resolve Stack: Victimize (38) - Ai(1)-Reaper King No More sacrifices a creature. If you do, return Archfiend of Ifnir (42) and Springbloom Druid (22) from the graveyard to the battlefield tapped.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Springbloom Druid
|
||||||
|
Damage: Yavimaya Coast (360) deals 1 non-combat damage to Ai(4)-Arcane Maelstrom [C20] [2020].
|
||||||
|
Life: Life: Ai(4)-Arcane Maelstrom [C20] [2020] 41 > 40
|
||||||
|
Mana: Yavimaya Coast (360) - {T}: Add {G} or {U}. Yavimaya Coast deals 1 damage to you.
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] cast Whiplash Trap targeting [Kadena, Slinking Sorcerer (201), Archfiend of Ifnir (42)]
|
||||||
|
Resolve Stack: Whiplash Trap (392) - Return Kadena, Slinking Sorcerer (201) and Archfiend of Ifnir (42) to their owner's hand.
|
||||||
|
Zone Change: Mountain (94) was put into Graveyard from Battlefield.
|
||||||
|
Resolve Stack: When Springbloom Druid enters, you may sacrifice a land. If you do, search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle. [Zone Changer: Springbloom Druid (22)]
|
||||||
|
Turn: Turn 28 (Ai(2)-Faceless Menace [C19] [2019])
|
||||||
|
Land: Ai(2)-Faceless Menace [C19] [2019] played Forest (126)
|
||||||
|
Mana: Island (103) - {T}: Add {U}.
|
||||||
|
Mana: Swamp (186) - {T}: Add {B}.
|
||||||
|
Mana: Forest (121) - {T}: Add {G}.
|
||||||
|
Mana: Sol Ring (157) - {T}: Add {C}{C}.
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] cast Kadena, Slinking Sorcerer
|
||||||
|
Resolve Stack: Kadena, Slinking Sorcerer - Creature 3 / 3
|
||||||
|
Mana: Forest (125) - {T}: Add {G}.
|
||||||
|
Mana: Forest (126) - {T}: Add {G}.
|
||||||
|
Mana: Golgari Rot Farm (134) - {T}: Add {B}{G}.
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] cast Voice of Many
|
||||||
|
Resolve Stack: Voice of Many - Creature 3 / 3
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Voice of Many
|
||||||
|
Resolve Stack: When Voice of Many enters, draw a card for each opponent who controls fewer creatures than you. [Zone Changer: Voice of Many (169)]
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] cast Morph
|
||||||
|
Resolve Stack: Morph - Creature 2/2
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Kadena, Slinking Sorcerer
|
||||||
|
Resolve Stack: Whenever a face-down creature you control enters, draw a card. [Zone Changer: Face-down card (H16)]
|
||||||
|
Turn: Turn 29 (Ai(3)-Merciless Rage [C19] [2019])
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] triggered Squee, Goblin Nabob
|
||||||
|
Resolve Stack: At the beginning of your upkeep, you may return Squee, Goblin Nabob from your graveyard to your hand. [Phase: Ai(3)-Merciless Rage [C19] [2019]]
|
||||||
|
Mana: Mountain (244) - {T}: Add {R}.
|
||||||
|
Mana: Rakdos Locket (295) - {T}: Add {B} or {R}.
|
||||||
|
Mana: Sol Ring (255) - {T}: Add {C}{C}.
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] cast Fiery Temper targeting [The Reaper, King No More (100)]
|
||||||
|
Damage: Fiery Temper (203) deals 3 damage to The Reaper, King No More (100).
|
||||||
|
Resolve Stack: Fiery Temper (203) - Fiery Temper (203) deals 3 damage to The Reaper, King No More (100).
|
||||||
|
Zone Change: The Reaper, King No More (100) was put into Graveyard from Battlefield.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Skullclamp
|
||||||
|
Resolve Stack: Whenever equipped creature dies, draw two cards. [Zone Changer: The Reaper, King No More (100)]
|
||||||
|
Combat: Ai(3)-Merciless Rage [C19] [2019] assigned Bloodhall Priest (300) to attack Ai(2)-Faceless Menace [C19] [2019].
|
||||||
|
Combat: Ai(2)-Faceless Menace [C19] [2019] didn't block Bloodhall Priest (300).
|
||||||
|
Damage: Bloodhall Priest (300) deals 4 combat damage to Ai(2)-Faceless Menace [C19] [2019].
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 36 > 32
|
||||||
|
Discard: Ai(3)-Merciless Rage [C19] [2019] discards Squee, Goblin Nabob (238).
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] activated Anje Falkenrath
|
||||||
|
Resolve Stack: Anje Falkenrath (302) - Ai(3)-Merciless Rage [C19] [2019] draws a card.
|
||||||
|
Mana: Barren Moor (218) - {T}: Add {B}.
|
||||||
|
Mana: Swamp (288) - {T}: Add {B}.
|
||||||
|
Mana: Swamp (287) - {T}: Add {B}.
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] cast Faith of the Devoted
|
||||||
|
Resolve Stack: Faith of the Devoted
|
||||||
|
Turn: Turn 30 (Ai(4)-Arcane Maelstrom [C20] [2020])
|
||||||
|
Replacement Effect: Halimar Depths enters tapped.
|
||||||
|
Land: Ai(4)-Arcane Maelstrom [C20] [2020] played Halimar Depths (395)
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] triggered Halimar Depths
|
||||||
|
Resolve Stack: When Halimar Depths enters, look at the top three cards of your library, then put them back in any order. [Zone Changer: Halimar Depths (395)]
|
||||||
|
Mana: Island (350) - {T}: Add {U}.
|
||||||
|
Mana: Forest (369) - {T}: Add {G}.
|
||||||
|
Mana: Mountain (389) - {T}: Add {R}.
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] cast Frantic Search
|
||||||
|
Discard: Ai(4)-Arcane Maelstrom [C20] [2020] discards Dualcaster Mage (398).
|
||||||
|
Discard: Ai(4)-Arcane Maelstrom [C20] [2020] discards Glademuse (399).
|
||||||
|
Resolve Stack: Frantic Search (355) - Ai(4)-Arcane Maelstrom [C20] [2020] draws two cards. Ai(4)-Arcane Maelstrom [C20] [2020] discards two cards. Untap up to 3 Lands.
|
||||||
|
Mana: Mountain (389) - {T}: Add {R}.
|
||||||
|
Mana: Rugged Highlands (357) - {T}: Add {R} or {G}.
|
||||||
|
Mana: Island (350) - {T}: Add {U}.
|
||||||
|
Mana: Island (351) - {T}: Add {U}.
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] cast Crackling Drake
|
||||||
|
Resolve Stack: Crackling Drake - Creature * / 4
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] triggered Crackling Drake
|
||||||
|
Resolve Stack: When Crackling Drake enters, draw a card. [Zone Changer: Crackling Drake (313)]
|
||||||
|
Mana: Rupture Spire (359) - {T}: Add one mana of any color.
|
||||||
|
Mana: Halimar Depths (395) - {T}: Add {U}.
|
||||||
|
Mana: Oran-Rief, the Vastwood (304) - {T}: Add {G}.
|
||||||
|
Mana: Mosswort Bridge (329) - {T}: Add {G}.
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] cast Kalamax, the Stormsire
|
||||||
|
Resolve Stack: Kalamax, the Stormsire - Creature 4 / 4
|
||||||
|
Turn: Turn 31 (Ai(1)-Reaper King No More)
|
||||||
|
Land: Ai(1)-Reaper King No More played Yavimaya, Cradle of Growth (90)
|
||||||
|
Mana: Swamp (61) - {T}: Add {B}.
|
||||||
|
Mana: Blooming Marsh (40) - {T}: Add {B} or {G}.
|
||||||
|
Mana: Forest (28) - {T}: Add {G}.
|
||||||
|
Mana: Forest (32) - {T}: Add {G}.
|
||||||
|
Mana: Yavimaya, Cradle of Growth (90) - {T}: Add {G}.
|
||||||
|
Mana: Mountain (92) - {T}: Add {G}.
|
||||||
|
Mana: Llanowar Wastes (80) - {T}: Add {C}.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More cast Overseer of the Damned
|
||||||
|
Resolve Stack: Overseer of the Damned - Creature 5 / 5
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Overseer of the Damned targeting [Kadena, Slinking Sorcerer (201)]
|
||||||
|
Zone Change: Kadena, Slinking Sorcerer (201) was put into Graveyard from Battlefield.
|
||||||
|
Resolve Stack: When Overseer of the Damned enters, you may destroy target creature. (Targeting: [[Kadena, Slinking Sorcerer (201)]]) [Zone Changer: Overseer of the Damned (49)]
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Overseer of the Damned
|
||||||
|
Resolve Stack: Whenever a nontoken creature an opponent controls dies, create a tapped 2/2 black Zombie creature token. [Zone Changer: Kadena, Slinking Sorcerer (201)]
|
||||||
|
Turn: Turn 32 (Ai(2)-Faceless Menace [C19] [2019])
|
||||||
|
Mana: Island (103) - {T}: Add {U}.
|
||||||
|
Mana: Forest (121) - {T}: Add {G}.
|
||||||
|
Mana: Sol Ring (157) - {T}: Add {C}{C}.
|
||||||
|
Resolve Stack: Ai(2)-Faceless Menace [C19] [2019] has unmorphed Icefeather Aven
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Icefeather Aven targeting [Overseer of the Damned (49)]
|
||||||
|
Resolve Stack: When Icefeather Aven is turned face up, you may return another target creature to its owner's hand. (Targeting: [[Overseer of the Damned (49)]]) [Turn Face up: Icefeather Aven (199)]
|
||||||
|
Land: Ai(2)-Faceless Menace [C19] [2019] played Command Tower (119)
|
||||||
|
Mana: Command Tower (119) - {T}: Add one mana of any color in your commander's color identity.
|
||||||
|
Mana: Swamp (186) - {T}: Add {B}.
|
||||||
|
Mana: Forest (125) - {T}: Add {G}.
|
||||||
|
Mana: Forest (126) - {T}: Add {G}.
|
||||||
|
Mana: Golgari Rot Farm (134) - {T}: Add {G}.
|
||||||
|
Mana: Golgari Guildgate (183) - {T}: Add {G}.
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] cast Kadena, Slinking Sorcerer
|
||||||
|
Resolve Stack: Kadena, Slinking Sorcerer - Creature 3 / 3
|
||||||
|
Combat: Ai(2)-Faceless Menace [C19] [2019] assigned Icefeather Aven (199) to attack Ai(3)-Merciless Rage [C19] [2019].
|
||||||
|
Combat: Ai(3)-Merciless Rage [C19] [2019] didn't block Icefeather Aven (199).
|
||||||
|
Damage: Icefeather Aven (199) deals 2 combat damage to Ai(3)-Merciless Rage [C19] [2019].
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 34 > 32
|
||||||
|
Mana: Llanowar Wastes (184) - {T}: Add {C}.
|
||||||
|
Discard: Ai(2)-Faceless Menace [C19] [2019] discards Ash Barrens (144).
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] activated Ash Barrens
|
||||||
|
Resolve Stack: Ash Barrens (144) - Ai(2)-Faceless Menace [C19] [2019] searches their library for a Basic card, reveals it, puts it into their hand, then shuffles.
|
||||||
|
Turn: Turn 33 (Ai(3)-Merciless Rage [C19] [2019])
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] triggered Squee, Goblin Nabob
|
||||||
|
Resolve Stack: At the beginning of your upkeep, you may return Squee, Goblin Nabob from your graveyard to your hand. [Phase: Ai(3)-Merciless Rage [C19] [2019]]
|
||||||
|
Discard: Ai(3)-Merciless Rage [C19] [2019] discards Squee, Goblin Nabob (238).
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] activated Anje Falkenrath
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] triggered Faith of the Devoted
|
||||||
|
Mana: Sol Ring (255) - {T}: Add {C}{C}.
|
||||||
|
Life: Life: Ai(4)-Arcane Maelstrom [C20] [2020] 40 > 38
|
||||||
|
Life: Life: Ai(1)-Reaper King No More 22 > 20
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 32 > 30
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 32 > 34
|
||||||
|
Resolve Stack: Whenever you cycle or discard a card, you may pay {1}. If you do, each opponent loses 2 life and you gain 2 life. [Discarded: Squee, Goblin Nabob (238), Cause: null]
|
||||||
|
Resolve Stack: Anje Falkenrath (302) - Ai(3)-Merciless Rage [C19] [2019] draws a card.
|
||||||
|
Land: Ai(3)-Merciless Rage [C19] [2019] played Mountain (246)
|
||||||
|
Mana: Barren Moor (218) - {T}: Add {B}.
|
||||||
|
Mana: Swamp (288) - {T}: Add {B}.
|
||||||
|
Mana: Mountain (244) - {T}: Add {G}.
|
||||||
|
Mana: Mountain (246) - {T}: Add {G}.
|
||||||
|
Mana: Swamp (287) - {T}: Add {G}.
|
||||||
|
Mana: Rix Maadi, Dungeon Palace (214) - {T}: Add {C}.
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] cast Hedonist's Trove
|
||||||
|
Resolve Stack: Hedonist's Trove
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] triggered Hedonist's Trove targeting [Ai(4)-Arcane Maelstrom [C20] [2020]]
|
||||||
|
Resolve Stack: When Hedonist's Trove enters, exile all cards from target opponent's graveyard. (Targeting: [[Ai(4)-Arcane Maelstrom [C20] [2020]]]) [Zone Changer: Hedonist's Trove (281)]
|
||||||
|
Turn: Turn 34 (Ai(4)-Arcane Maelstrom [C20] [2020])
|
||||||
|
Combat: Ai(4)-Arcane Maelstrom [C20] [2020] assigned Crackling Drake (313) to attack Ai(2)-Faceless Menace [C19] [2019].
|
||||||
|
Combat: Ai(2)-Faceless Menace [C19] [2019] didn't block Crackling Drake (313).
|
||||||
|
Damage: Crackling Drake (313) deals 4 combat damage to Ai(2)-Faceless Menace [C19] [2019].
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 30 > 26
|
||||||
|
Replacement Effect: Swiftwater Cliffs enters tapped.
|
||||||
|
Land: Ai(4)-Arcane Maelstrom [C20] [2020] played Swiftwater Cliffs (316)
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] triggered Swiftwater Cliffs
|
||||||
|
Life: Life: Ai(4)-Arcane Maelstrom [C20] [2020] 38 > 39
|
||||||
|
Resolve Stack: When Swiftwater Cliffs enters, you gain 1 life. [Zone Changer: Swiftwater Cliffs (316)]
|
||||||
|
Mana: Mountain (389) - {T}: Add {R}.
|
||||||
|
Mana: Forest (369) - {T}: Add {G}.
|
||||||
|
Mana: Island (350) - {T}: Add {G}.
|
||||||
|
Mana: Island (351) - {T}: Add {G}.
|
||||||
|
Mana: Halimar Depths (395) - {T}: Add {G}.
|
||||||
|
Mana: Rugged Highlands (357) - {T}: Add {G}.
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] cast Charmbreaker Devils
|
||||||
|
Resolve Stack: Charmbreaker Devils - Creature 4 / 4
|
||||||
|
Turn: Turn 35 (Ai(1)-Reaper King No More)
|
||||||
|
Replacement Effect: As Overgrown Tomb enters, you may pay 2 life. If you don't, it enters tapped.
|
||||||
|
Land: Ai(1)-Reaper King No More played Overgrown Tomb (72)
|
||||||
|
Mana: Swamp (61) - {T}: Add {B}.
|
||||||
|
Mana: Blooming Marsh (40) - {T}: Add {B} or {G}.
|
||||||
|
Mana: Forest (28) - {T}: Add {G}.
|
||||||
|
Mana: Forest (32) - {T}: Add {G}.
|
||||||
|
Mana: Yavimaya, Cradle of Growth (90) - {T}: Add {G}.
|
||||||
|
Mana: Mountain (92) - {T}: Add {G}.
|
||||||
|
Mana: Llanowar Wastes (80) - {T}: Add {C}.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More cast Overseer of the Damned
|
||||||
|
Resolve Stack: Overseer of the Damned - Creature 5 / 5
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Overseer of the Damned targeting [Voice of Many (169)]
|
||||||
|
Zone Change: Voice of Many (169) was put into Graveyard from Battlefield.
|
||||||
|
Resolve Stack: When Overseer of the Damned enters, you may destroy target creature. (Targeting: [[Voice of Many (169)]]) [Zone Changer: Overseer of the Damned (49)]
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Overseer of the Damned
|
||||||
|
Resolve Stack: Whenever a nontoken creature an opponent controls dies, create a tapped 2/2 black Zombie creature token. [Zone Changer: Voice of Many (169)]
|
||||||
|
Turn: Turn 36 (Ai(2)-Faceless Menace [C19] [2019])
|
||||||
|
Mana: Island (103) - {T}: Add {U}.
|
||||||
|
Mana: Swamp (186) - {T}: Add {B}.
|
||||||
|
Mana: Forest (121) - {T}: Add {G}.
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] cast Sultai Charm
|
||||||
|
Zone Change: Overseer of the Damned (49) was put into Graveyard from Battlefield.
|
||||||
|
Resolve Stack: Sultai Charm (111) - Destroy target monocolored creature. (Targeting: Overseer of the Damned (49))
|
||||||
|
Land: Ai(2)-Faceless Menace [C19] [2019] played Shrine of the Forsaken Gods (128)
|
||||||
|
Combat: Ai(2)-Faceless Menace [C19] [2019] assigned Icefeather Aven (199) to attack Ai(3)-Merciless Rage [C19] [2019].
|
||||||
|
Combat: Ai(3)-Merciless Rage [C19] [2019] didn't block Icefeather Aven (199).
|
||||||
|
Damage: Icefeather Aven (199) deals 2 combat damage to Ai(3)-Merciless Rage [C19] [2019].
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 34 > 32
|
||||||
|
Mana: Command Tower (119) - {T}: Add one mana of any color in your commander's color identity.
|
||||||
|
Mana: Forest (125) - {T}: Add {G}.
|
||||||
|
Mana: Sol Ring (157) - {T}: Add {C}{C}.
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] cast Bounty of the Luxa
|
||||||
|
Resolve Stack: Bounty of the Luxa
|
||||||
|
Turn: Turn 37 (Ai(3)-Merciless Rage [C19] [2019])
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] triggered Squee, Goblin Nabob
|
||||||
|
Resolve Stack: At the beginning of your upkeep, you may return Squee, Goblin Nabob from your graveyard to your hand. [Phase: Ai(3)-Merciless Rage [C19] [2019]]
|
||||||
|
Mana: Barren Moor (218) - {T}: Add {G}.
|
||||||
|
Mana: Sol Ring (255) - {T}: Add {C}{C}.
|
||||||
|
Zone Change: Mountain (244) was put into Graveyard from Battlefield.
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] cast Harrow
|
||||||
|
Resolve Stack: Harrow (346) - Ai(3)-Merciless Rage [C19] [2019] searches their library for up to two basic land cards, puts them onto the battlefield, then shuffles.
|
||||||
|
Land: Ai(3)-Merciless Rage [C19] [2019] played Forest (370)
|
||||||
|
Discard: Ai(3)-Merciless Rage [C19] [2019] discards Squee, Goblin Nabob (238).
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] activated Anje Falkenrath
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] triggered Faith of the Devoted
|
||||||
|
Mana: Forest (370) - {T}: Add {G}.
|
||||||
|
Life: Life: Ai(4)-Arcane Maelstrom [C20] [2020] 39 > 37
|
||||||
|
Life: Life: Ai(1)-Reaper King No More 20 > 18
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 26 > 24
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 32 > 34
|
||||||
|
Resolve Stack: Whenever you cycle or discard a card, you may pay {1}. If you do, each opponent loses 2 life and you gain 2 life. [Discarded: Squee, Goblin Nabob (238), Cause: null]
|
||||||
|
Resolve Stack: Anje Falkenrath (302) - Ai(3)-Merciless Rage [C19] [2019] draws a card.
|
||||||
|
Mana: Swamp (288) - {T}: Add {B}.
|
||||||
|
Mana: Swamp (287) - {T}: Add {B}.
|
||||||
|
Mana: Mountain (246) - {T}: Add {G}.
|
||||||
|
Mana: Mountain (245) - {T}: Add {G}.
|
||||||
|
Mana: Mountain (248) - {T}: Add {G}.
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] cast From Under the Floorboards
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 34 > 37
|
||||||
|
Resolve Stack: From Under the Floorboards (253) - Ai(3)-Merciless Rage [C19] [2019] creates three tapped 2/2 black Zombie creature tokens and you gain 3 life. If From Under the Floorboards's madness cost was paid, instead create X of those tokens and you gain X life. Ai(3)-Merciless Rage [C19] [2019] gains 3 life.
|
||||||
|
Mana: Rix Maadi, Dungeon Palace (214) - {T}: Add {C}.
|
||||||
|
Mana: Rakdos Locket (295) - {T}: Add {B} or {R}.
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] cast Armillary Sphere
|
||||||
|
Resolve Stack: Armillary Sphere
|
||||||
|
Turn: Turn 38 (Ai(4)-Arcane Maelstrom [C20] [2020])
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] triggered Charmbreaker Devils
|
||||||
|
Resolve Stack: At the beginning of your upkeep, return an instant or sorcery card at random from your graveyard to your hand. [Phase: Ai(4)-Arcane Maelstrom [C20] [2020]]
|
||||||
|
Mana: Forest (369) - {T}: Add {G}.
|
||||||
|
Mana: Island (350) - {T}: Add {G}.
|
||||||
|
Mana: Island (351) - {T}: Add {G}.
|
||||||
|
Zone Change: Island (350) was put into Graveyard from Battlefield.
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] cast Harrow
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] triggered Charmbreaker Devils
|
||||||
|
Resolve Stack: Whenever you cast a instant or sorcery spell, Charmbreaker Devils gets +4/+0 until end of turn. [Card: Harrow (346), Activator: Ai(4)-Arcane Maelstrom [C20] [2020], SpellAbility: As an additional cost to cast this spell, sacrifice a land.
|
||||||
|
Search your library for up to two basic land cards, put them onto the battlefield, then shuffle.]
|
||||||
|
Resolve Stack: Harrow (346) - Ai(4)-Arcane Maelstrom [C20] [2020] searches their library for up to two basic land cards, puts them onto the battlefield, then shuffles.
|
||||||
|
Combat: Ai(4)-Arcane Maelstrom [C20] [2020] assigned Charmbreaker Devils (309), Crackling Drake (313) and Kalamax, the Stormsire (403) to attack Ai(2)-Faceless Menace [C19] [2019].
|
||||||
|
Combat: Ai(2)-Faceless Menace [C19] [2019] didn't block Charmbreaker Devils (309).
|
||||||
|
Ai(2)-Faceless Menace [C19] [2019] didn't block Crackling Drake (313).
|
||||||
|
Ai(2)-Faceless Menace [C19] [2019] didn't block Kalamax, the Stormsire (403).
|
||||||
|
Damage: Charmbreaker Devils (309) deals 8 combat damage to Ai(2)-Faceless Menace [C19] [2019].
|
||||||
|
Damage: Crackling Drake (313) deals 4 combat damage to Ai(2)-Faceless Menace [C19] [2019].
|
||||||
|
Damage: Kalamax, the Stormsire (403) deals 4 combat damage to Ai(2)-Faceless Menace [C19] [2019].
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 24 > 8
|
||||||
|
Replacement Effect: Gruul Turf enters tapped.
|
||||||
|
Land: Ai(4)-Arcane Maelstrom [C20] [2020] played Gruul Turf (339)
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] triggered Gruul Turf
|
||||||
|
Resolve Stack: When Gruul Turf enters, return a land you control to its owner's hand. [Zone Changer: Gruul Turf (339)]
|
||||||
|
Turn: Turn 39 (Ai(1)-Reaper King No More)
|
||||||
|
Mana: Forest (28) - {T}: Add {G}.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More activated Skullclamp targeting [Zombie Token (543)]
|
||||||
|
Resolve Stack: Skullclamp (3) - Attach to Zombie Token (543)
|
||||||
|
Replacement Effect: Path of Ancestry enters tapped.
|
||||||
|
Land: Ai(1)-Reaper King No More played Path of Ancestry (8)
|
||||||
|
Mana: Swamp (61) - {T}: Add {B}.
|
||||||
|
Mana: Overgrown Tomb (72) - {T}: Add {B}.
|
||||||
|
Mana: Forest (32) - {T}: Add {G}.
|
||||||
|
Mana: Yavimaya, Cradle of Growth (90) - {T}: Add {G}.
|
||||||
|
Mana: Mountain (92) - {T}: Add {G}.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More cast Archfiend of Ifnir
|
||||||
|
Resolve Stack: Archfiend of Ifnir - Creature 5 / 4
|
||||||
|
Turn: Turn 40 (Ai(2)-Faceless Menace [C19] [2019])
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Bounty of the Luxa
|
||||||
|
Resolve Stack: At the beginning of your first main phase, remove all flood counters from Bounty of the Luxa. If no counters were removed this way, put a flood counter on Bounty of the Luxa and draw a card. Otherwise, add {C}{G}{U}. [Phase: Ai(2)-Faceless Menace [C19] [2019]]
|
||||||
|
Land: Ai(2)-Faceless Menace [C19] [2019] played Darkwater Catacombs (178)
|
||||||
|
Turn: Turn 41 (Ai(3)-Merciless Rage [C19] [2019])
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] triggered Squee, Goblin Nabob
|
||||||
|
Resolve Stack: At the beginning of your upkeep, you may return Squee, Goblin Nabob from your graveyard to your hand. [Phase: Ai(3)-Merciless Rage [C19] [2019]]
|
||||||
|
Mana: Forest (370) - {T}: Add {G}.
|
||||||
|
Mana: Sol Ring (255) - {T}: Add {C}{C}.
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] cast Natural Connection
|
||||||
|
Resolve Stack: Natural Connection (308) - Ai(3)-Merciless Rage [C19] [2019] searches their library for a basic land card, puts it onto the battlefield tapped, then shuffles.
|
||||||
|
Combat: Ai(3)-Merciless Rage [C19] [2019] assigned Bloodhall Priest (300) to attack Ai(2)-Faceless Menace [C19] [2019].
|
||||||
|
Combat: Ai(2)-Faceless Menace [C19] [2019] assigned Haldan, Avid Arcanist (306) and Kadena, Slinking Sorcerer (201) to block Bloodhall Priest (300).
|
||||||
|
Damage: Bloodhall Priest (300) deals 1 damage to Haldan, Avid Arcanist (306).
|
||||||
|
Damage: Bloodhall Priest (300) deals 3 damage to Kadena, Slinking Sorcerer (201).
|
||||||
|
Damage: Haldan, Avid Arcanist (306) deals 1 damage to Bloodhall Priest (300).
|
||||||
|
Damage: Kadena, Slinking Sorcerer (201) deals 3 damage to Bloodhall Priest (300).
|
||||||
|
Zone Change: Bloodhall Priest (300) was put into Graveyard from Battlefield.
|
||||||
|
Zone Change: Kadena, Slinking Sorcerer (201) was put into Graveyard from Battlefield.
|
||||||
|
Discard: Ai(3)-Merciless Rage [C19] [2019] discards Squee, Goblin Nabob (238).
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] activated Anje Falkenrath
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] triggered Faith of the Devoted
|
||||||
|
Mana: Mountain (246) - {T}: Add {G}.
|
||||||
|
Life: Life: Ai(4)-Arcane Maelstrom [C20] [2020] 37 > 35
|
||||||
|
Life: Life: Ai(1)-Reaper King No More 18 > 16
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 8 > 6
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 37 > 39
|
||||||
|
Resolve Stack: Whenever you cycle or discard a card, you may pay {1}. If you do, each opponent loses 2 life and you gain 2 life. [Discarded: Squee, Goblin Nabob (238), Cause: null]
|
||||||
|
Resolve Stack: Anje Falkenrath (302) - Ai(3)-Merciless Rage [C19] [2019] draws a card.
|
||||||
|
Mana: Mountain (245) - {T}: Add {R}.
|
||||||
|
Mana: Mountain (248) - {T}: Add {G}.
|
||||||
|
Mana: Barren Moor (218) - {T}: Add {G}.
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] cast Stromkirk Occultist
|
||||||
|
Resolve Stack: Stromkirk Occultist - Creature 3 / 2
|
||||||
|
Mana: Swamp (288) - {T}: Add {B}.
|
||||||
|
Mana: Swamp (287) - {T}: Add {G}.
|
||||||
|
Mana: Rix Maadi, Dungeon Palace (214) - {T}: Add {C}.
|
||||||
|
Mana: Rakdos Locket (295) - {T}: Add {B} or {R}.
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] cast Grave Scrabbler
|
||||||
|
Resolve Stack: Grave Scrabbler - Creature 2 / 2
|
||||||
|
Turn: Turn 42 (Ai(4)-Arcane Maelstrom [C20] [2020])
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] triggered Charmbreaker Devils
|
||||||
|
Resolve Stack: At the beginning of your upkeep, return an instant or sorcery card at random from your graveyard to your hand. [Phase: Ai(4)-Arcane Maelstrom [C20] [2020]]
|
||||||
|
Mana: Forest (369) - {T}: Add {G}.
|
||||||
|
Mana: Mountain (389) - {T}: Add {G}.
|
||||||
|
Mana: Halimar Depths (395) - {T}: Add {G}.
|
||||||
|
Zone Change: Island (348) was put into Graveyard from Battlefield.
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] cast Harrow
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] triggered Charmbreaker Devils
|
||||||
|
Resolve Stack: Whenever you cast a instant or sorcery spell, Charmbreaker Devils gets +4/+0 until end of turn. [Card: Harrow (346), Activator: Ai(4)-Arcane Maelstrom [C20] [2020], SpellAbility: As an additional cost to cast this spell, sacrifice a land.
|
||||||
|
Search your library for up to two basic land cards, put them onto the battlefield, then shuffle.]
|
||||||
|
Resolve Stack: Harrow (346) - Ai(4)-Arcane Maelstrom [C20] [2020] searches their library for up to two basic land cards, puts them onto the battlefield, then shuffles.
|
||||||
|
Combat: Ai(4)-Arcane Maelstrom [C20] [2020] assigned Charmbreaker Devils (309), Crackling Drake (313) and Kalamax, the Stormsire (403) to attack Ai(2)-Faceless Menace [C19] [2019].
|
||||||
|
Combat: Ai(2)-Faceless Menace [C19] [2019] assigned Face-down card (H5) and Face-down card (H9) to block Charmbreaker Devils (309).
|
||||||
|
Ai(2)-Faceless Menace [C19] [2019] assigned Icefeather Aven (199) to block Crackling Drake (313).
|
||||||
|
Ai(2)-Faceless Menace [C19] [2019] assigned Face-down card (H8) and Face-down card (H10) to block Kalamax, the Stormsire (403).
|
||||||
|
Damage: Charmbreaker Devils (309) deals 2 damage to Face-down card (H5).
|
||||||
|
Damage: Charmbreaker Devils (309) deals 6 damage to Face-down card (H9).
|
||||||
|
Damage: Crackling Drake (313) deals 4 damage to Icefeather Aven (199).
|
||||||
|
Damage: Kalamax, the Stormsire (403) deals 2 damage to Face-down card (H10).
|
||||||
|
Damage: Kalamax, the Stormsire (403) deals 2 damage to Face-down card (H8).
|
||||||
|
Damage: Face-down card (H5) deals 2 damage to Charmbreaker Devils (309).
|
||||||
|
Damage: Face-down card (H9) deals 2 damage to Charmbreaker Devils (309).
|
||||||
|
Damage: Icefeather Aven (199) deals 2 damage to Crackling Drake (313).
|
||||||
|
Damage: Face-down card (H8) deals 2 damage to Kalamax, the Stormsire (403).
|
||||||
|
Damage: Face-down card (H10) deals 2 damage to Kalamax, the Stormsire (403).
|
||||||
|
Zone Change: Face-down card (H10) was put into Graveyard from Battlefield.
|
||||||
|
Zone Change: Kalamax, the Stormsire (403) was put into Graveyard from Battlefield.
|
||||||
|
Zone Change: Charmbreaker Devils (309) was put into Graveyard from Battlefield.
|
||||||
|
Zone Change: Face-down card (H8) was put into Graveyard from Battlefield.
|
||||||
|
Zone Change: Icefeather Aven (199) was put into Graveyard from Battlefield.
|
||||||
|
Zone Change: Face-down card (H5) was put into Graveyard from Battlefield.
|
||||||
|
Zone Change: Face-down card (H9) was put into Graveyard from Battlefield.
|
||||||
|
Land: Ai(4)-Arcane Maelstrom [C20] [2020] played Island (351)
|
||||||
|
Mana: Island (347) - {T}: Add {U}.
|
||||||
|
Mana: Mountain (388) - {T}: Add {R}.
|
||||||
|
Mana: Island (351) - {T}: Add {G}.
|
||||||
|
Mana: Mountain (387) - {T}: Add {G}.
|
||||||
|
Mana: Swiftwater Cliffs (316) - {T}: Add {G}.
|
||||||
|
Mana: Rugged Highlands (357) - {T}: Add {G}.
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] cast Kalamax, the Stormsire
|
||||||
|
Resolve Stack: Kalamax, the Stormsire - Creature 4 / 4
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] activated Oran-Rief, the Vastwood
|
||||||
|
Resolve Stack: Oran-Rief, the Vastwood (304) - Put a +1/+1 counter on each valid permanent.
|
||||||
|
Turn: Turn 43 (Ai(1)-Reaper King No More)
|
||||||
|
Land: Ai(1)-Reaper King No More played Swamp (59)
|
||||||
|
Combat: Ai(1)-Reaper King No More assigned Archfiend of Ifnir (42) to attack Ai(3)-Merciless Rage [C19] [2019].
|
||||||
|
Combat: Ai(3)-Merciless Rage [C19] [2019] didn't block Archfiend of Ifnir (42).
|
||||||
|
Damage: Archfiend of Ifnir (42) deals 5 combat damage to Ai(3)-Merciless Rage [C19] [2019].
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 39 > 34
|
||||||
|
Mana: Swamp (61) - {T}: Add {B}.
|
||||||
|
Mana: Overgrown Tomb (72) - {T}: Add {B}.
|
||||||
|
Mana: Swamp (59) - {T}: Add {B}.
|
||||||
|
Mana: Forest (28) - {T}: Add {G}.
|
||||||
|
Mana: Forest (32) - {T}: Add {G}.
|
||||||
|
Mana: Yavimaya, Cradle of Growth (90) - {T}: Add {G}.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More cast Bolas's Citadel
|
||||||
|
Resolve Stack: Bolas's Citadel
|
||||||
|
Life: Life: Ai(1)-Reaper King No More 16 > 13
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More cast Phyrexian Altar
|
||||||
|
Resolve Stack: Phyrexian Altar
|
||||||
|
Life: Life: Ai(1)-Reaper King No More 13 > 10
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More cast Mayhem Devil
|
||||||
|
Resolve Stack: Mayhem Devil - Creature 3 / 3
|
||||||
|
Life: Life: Ai(1)-Reaper King No More 10 > 6
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More cast Poison-Tip Archer
|
||||||
|
Resolve Stack: Poison-Tip Archer - Creature 2 / 3
|
||||||
|
Life: Life: Ai(1)-Reaper King No More 6 > 4
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More cast Sakura-Tribe Elder
|
||||||
|
Resolve Stack: Sakura-Tribe Elder - Creature 1 / 1
|
||||||
|
Zone Change: Sakura-Tribe Elder (85) was put into Graveyard from Battlefield.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More activated Sakura-Tribe Elder
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Mayhem Devil targeting [Ai(2)-Faceless Menace [C19] [2019]]
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Poison-Tip Archer
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 6 > 5
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 34 > 33
|
||||||
|
Life: Life: Ai(4)-Arcane Maelstrom [C20] [2020] 35 > 34
|
||||||
|
Resolve Stack: Whenever another creature dies, each opponent loses 1 life. [Zone Changer: Sakura-Tribe Elder (85)]
|
||||||
|
Damage: Mayhem Devil (63) deals 1 non-combat damage to Ai(2)-Faceless Menace [C19] [2019].
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 5 > 4
|
||||||
|
Resolve Stack: Whenever a player sacrifices a permanent, Mayhem Devil deals 1 damage to any target. (Targeting: [[Ai(2)-Faceless Menace [C19] [2019]]]) [Sacrificed: Sakura-Tribe Elder (85)]
|
||||||
|
Resolve Stack: Sakura-Tribe Elder (85) - Ai(1)-Reaper King No More searches their library for a basic land card, puts it onto the battlefield tapped, then shuffles.
|
||||||
|
Mana: Blooming Marsh (40) - {T}: Add {B} or {G}.
|
||||||
|
Mana: Mountain (92) - {T}: Add {G}.
|
||||||
|
Mana: Path of Ancestry (8) - {T}: Add {G}.
|
||||||
|
Mana: Llanowar Wastes (80) - {T}: Add {C}.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More cast Mirkwood Bats
|
||||||
|
Resolve Stack: Mirkwood Bats - Creature 2 / 3
|
||||||
|
Turn: Turn 44 (Ai(2)-Faceless Menace [C19] [2019])
|
||||||
|
Mana: Forest (121) - {T}: Add {G}.
|
||||||
|
Mana: Sol Ring (157) - {T}: Add {C}{C}.
|
||||||
|
Mana: Forest (125) - {T}: Add {G}.
|
||||||
|
Mana: Forest (126) - {T}: Add {G}.
|
||||||
|
Mana: Swamp (186) - {T}: Add {G}.
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] cast Great Oak Guardian
|
||||||
|
Resolve Stack: Great Oak Guardian - Creature 4 / 5
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Great Oak Guardian targeting [Ai(2)-Faceless Menace [C19] [2019]]
|
||||||
|
Resolve Stack: When Great Oak Guardian enters, creatures target player controls get +2/+2 until end of turn. Untap them. (Targeting: [[Ai(2)-Faceless Menace [C19] [2019]]]) [Zone Changer: Great Oak Guardian (149)]
|
||||||
|
Mana: Golgari Rot Farm (134) - {T}: Add {B}{G}.
|
||||||
|
Resolve Stack: Ai(2)-Faceless Menace [C19] [2019] has unmanifested Blood Artist
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Bounty of the Luxa
|
||||||
|
Resolve Stack: At the beginning of your first main phase, remove all flood counters from Bounty of the Luxa. If no counters were removed this way, put a flood counter on Bounty of the Luxa and draw a card. Otherwise, add {C}{G}{U}. [Phase: Ai(2)-Faceless Menace [C19] [2019]]
|
||||||
|
Land: Ai(2)-Faceless Menace [C19] [2019] played Island (104)
|
||||||
|
Mana: Golgari Guildgate (183) - {T}: Add {B} or {G}.
|
||||||
|
Mana: Island (103) - {T}: Add {G}.
|
||||||
|
Mana: Island (104) - {T}: Add {G}.
|
||||||
|
Mana: Shrine of the Forsaken Gods (128) - {T}: Add {C}.
|
||||||
|
Mana: Command Tower (119) - {T}: Add {G}.
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] cast Kadena, Slinking Sorcerer
|
||||||
|
Resolve Stack: Kadena, Slinking Sorcerer - Creature 3 / 3
|
||||||
|
Turn: Turn 45 (Ai(3)-Merciless Rage [C19] [2019])
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] triggered Squee, Goblin Nabob
|
||||||
|
Resolve Stack: At the beginning of your upkeep, you may return Squee, Goblin Nabob from your graveyard to your hand. [Phase: Ai(3)-Merciless Rage [C19] [2019]]
|
||||||
|
Mana: Mountain (246) - {T}: Add {R}.
|
||||||
|
Mana: Sol Ring (255) - {T}: Add {C}{C}.
|
||||||
|
Mana: Forest (370) - {T}: Add {G}.
|
||||||
|
Mana: Mountain (245) - {T}: Add {G}.
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] cast Alchemist's Greeting targeting [Archfiend of Ifnir (42)]
|
||||||
|
Damage: Alchemist's Greeting (264) deals 4 damage to Archfiend of Ifnir (42).
|
||||||
|
Resolve Stack: Alchemist's Greeting (264) - Alchemist's Greeting (264) deals 4 damage to Archfiend of Ifnir (42).
|
||||||
|
Zone Change: Archfiend of Ifnir (42) was put into Graveyard from Battlefield.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Poison-Tip Archer
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Blood Artist targeting [Ai(3)-Merciless Rage [C19] [2019]]
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 33 > 32
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 4 > 5
|
||||||
|
Resolve Stack: Whenever Blood Artist or another creature dies, target player loses 1 life and you gain 1 life. (Targeting: [[Ai(3)-Merciless Rage [C19] [2019]]]) [Zone Changer: Archfiend of Ifnir (42)]
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 32 > 31
|
||||||
|
Life: Life: Ai(4)-Arcane Maelstrom [C20] [2020] 34 > 33
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 5 > 4
|
||||||
|
Resolve Stack: Whenever another creature dies, each opponent loses 1 life. [Zone Changer: Archfiend of Ifnir (42)]
|
||||||
|
Combat: Ai(3)-Merciless Rage [C19] [2019] assigned Stromkirk Occultist (237) to attack Ai(1)-Reaper King No More.
|
||||||
|
Combat: Ai(1)-Reaper King No More assigned Zombie Token (656) and Elf Warrior Token (413) to block Stromkirk Occultist (237).
|
||||||
|
Damage: Stromkirk Occultist (237) deals 2 damage to Zombie Token (656).
|
||||||
|
Damage: Stromkirk Occultist (237) deals 1 damage to Elf Warrior Token (413).
|
||||||
|
Damage: Zombie Token (656) deals 2 damage to Stromkirk Occultist (237).
|
||||||
|
Damage: Elf Warrior Token (413) deals 1 damage to Stromkirk Occultist (237).
|
||||||
|
Zone Change: Stromkirk Occultist (237) was put into Graveyard from Battlefield.
|
||||||
|
Zone Change: Elf Warrior Token (413) was put into Graveyard from Battlefield.
|
||||||
|
Zone Change: Zombie Token (656) was put into Graveyard from Battlefield.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Poison-Tip Archer
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Poison-Tip Archer
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Poison-Tip Archer
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Blood Artist targeting [Ai(3)-Merciless Rage [C19] [2019]]
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Blood Artist targeting [Ai(3)-Merciless Rage [C19] [2019]]
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Blood Artist targeting [Ai(3)-Merciless Rage [C19] [2019]]
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 31 > 30
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 4 > 5
|
||||||
|
Resolve Stack: Whenever Blood Artist or another creature dies, target player loses 1 life and you gain 1 life. (Targeting: [[Ai(3)-Merciless Rage [C19] [2019]]]) [Zone Changer: Zombie Token (656)]
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 30 > 29
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 5 > 6
|
||||||
|
Resolve Stack: Whenever Blood Artist or another creature dies, target player loses 1 life and you gain 1 life. (Targeting: [[Ai(3)-Merciless Rage [C19] [2019]]]) [Zone Changer: Elf Warrior Token (413)]
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 29 > 28
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 6 > 7
|
||||||
|
Resolve Stack: Whenever Blood Artist or another creature dies, target player loses 1 life and you gain 1 life. (Targeting: [[Ai(3)-Merciless Rage [C19] [2019]]]) [Zone Changer: Stromkirk Occultist (237)]
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 28 > 27
|
||||||
|
Life: Life: Ai(4)-Arcane Maelstrom [C20] [2020] 33 > 32
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 7 > 6
|
||||||
|
Resolve Stack: Whenever another creature dies, each opponent loses 1 life. [Zone Changer: Zombie Token (656)]
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 27 > 26
|
||||||
|
Life: Life: Ai(4)-Arcane Maelstrom [C20] [2020] 32 > 31
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 6 > 5
|
||||||
|
Resolve Stack: Whenever another creature dies, each opponent loses 1 life. [Zone Changer: Elf Warrior Token (413)]
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 26 > 25
|
||||||
|
Life: Life: Ai(4)-Arcane Maelstrom [C20] [2020] 31 > 30
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 5 > 4
|
||||||
|
Resolve Stack: Whenever another creature dies, each opponent loses 1 life. [Zone Changer: Stromkirk Occultist (237)]
|
||||||
|
Discard: Ai(3)-Merciless Rage [C19] [2019] discards Squee, Goblin Nabob (238).
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] activated Anje Falkenrath
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] triggered Faith of the Devoted
|
||||||
|
Mana: Mountain (248) - {T}: Add {G}.
|
||||||
|
Life: Life: Ai(4)-Arcane Maelstrom [C20] [2020] 30 > 28
|
||||||
|
Life: Life: Ai(1)-Reaper King No More 4 > 2
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 4 > 2
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 25 > 27
|
||||||
|
Resolve Stack: Whenever you cycle or discard a card, you may pay {1}. If you do, each opponent loses 2 life and you gain 2 life. [Discarded: Squee, Goblin Nabob (238), Cause: null]
|
||||||
|
Resolve Stack: Anje Falkenrath (302) - Ai(3)-Merciless Rage [C19] [2019] draws a card.
|
||||||
|
Mana: Barren Moor (218) - {T}: Add {B}.
|
||||||
|
Mana: Swamp (288) - {T}: Add {G}.
|
||||||
|
Mana: Swamp (287) - {T}: Add {G}.
|
||||||
|
Mana: Swamp (289) - {T}: Add {G}.
|
||||||
|
Mana: Rix Maadi, Dungeon Palace (214) - {T}: Add {C}.
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] cast Bone Miser
|
||||||
|
Resolve Stack: Bone Miser - Creature 4 / 4
|
||||||
|
Turn: Turn 46 (Ai(4)-Arcane Maelstrom [C20] [2020])
|
||||||
|
Combat: Ai(4)-Arcane Maelstrom [C20] [2020] assigned Kalamax, the Stormsire (403) and Crackling Drake (313) to attack Ai(1)-Reaper King No More.
|
||||||
|
Combat: Ai(1)-Reaper King No More assigned Poison-Tip Archer (26) to block Kalamax, the Stormsire (403).
|
||||||
|
Ai(1)-Reaper King No More assigned Mirkwood Bats (36) to block Crackling Drake (313).
|
||||||
|
Damage: Kalamax, the Stormsire (403) deals 5 damage to Poison-Tip Archer (26).
|
||||||
|
Damage: Crackling Drake (313) deals 4 damage to Mirkwood Bats (36).
|
||||||
|
Damage: Poison-Tip Archer (26) deals 2 damage (Deathtouch) to Kalamax, the Stormsire (403).
|
||||||
|
Damage: Mirkwood Bats (36) deals 2 damage to Crackling Drake (313).
|
||||||
|
Zone Change: Kalamax, the Stormsire (403) was put into Graveyard from Battlefield.
|
||||||
|
Zone Change: Poison-Tip Archer (26) was put into Graveyard from Battlefield.
|
||||||
|
Zone Change: Mirkwood Bats (36) was put into Graveyard from Battlefield.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Poison-Tip Archer
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Poison-Tip Archer
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Blood Artist targeting [Ai(3)-Merciless Rage [C19] [2019]]
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Blood Artist targeting [Ai(3)-Merciless Rage [C19] [2019]]
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Blood Artist targeting [Ai(3)-Merciless Rage [C19] [2019]]
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 27 > 26
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 2 > 3
|
||||||
|
Resolve Stack: Whenever Blood Artist or another creature dies, target player loses 1 life and you gain 1 life. (Targeting: [[Ai(3)-Merciless Rage [C19] [2019]]]) [Zone Changer: Mirkwood Bats (36)]
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 26 > 25
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 3 > 4
|
||||||
|
Resolve Stack: Whenever Blood Artist or another creature dies, target player loses 1 life and you gain 1 life. (Targeting: [[Ai(3)-Merciless Rage [C19] [2019]]]) [Zone Changer: Poison-Tip Archer (26)]
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 25 > 24
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 4 > 5
|
||||||
|
Resolve Stack: Whenever Blood Artist or another creature dies, target player loses 1 life and you gain 1 life. (Targeting: [[Ai(3)-Merciless Rage [C19] [2019]]]) [Zone Changer: Kalamax, the Stormsire (403)]
|
||||||
|
Life: Life: Ai(4)-Arcane Maelstrom [C20] [2020] 28 > 27
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 5 > 4
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 24 > 23
|
||||||
|
Resolve Stack: Whenever another creature dies, each opponent loses 1 life. [Zone Changer: Mirkwood Bats (36)]
|
||||||
|
Life: Life: Ai(4)-Arcane Maelstrom [C20] [2020] 27 > 26
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 4 > 3
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 23 > 22
|
||||||
|
Resolve Stack: Whenever another creature dies, each opponent loses 1 life. [Zone Changer: Kalamax, the Stormsire (403)]
|
||||||
|
Replacement Effect: Izzet Boilerworks enters tapped.
|
||||||
|
Land: Ai(4)-Arcane Maelstrom [C20] [2020] played Izzet Boilerworks (396)
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] triggered Izzet Boilerworks
|
||||||
|
Resolve Stack: When Izzet Boilerworks enters, return a land you control to its owner's hand. [Zone Changer: Izzet Boilerworks (396)]
|
||||||
|
Mana: Halimar Depths (395) - {T}: Add {U}.
|
||||||
|
Mana: Mountain (389) - {T}: Add {R}.
|
||||||
|
Mana: Forest (369) - {T}: Add {G}.
|
||||||
|
Mana: Island (347) - {T}: Add {G}.
|
||||||
|
Mana: Island (351) - {T}: Add {G}.
|
||||||
|
Mana: Mountain (387) - {T}: Add {G}.
|
||||||
|
Mana: Swiftwater Cliffs (316) - {T}: Add {G}.
|
||||||
|
Mana: Rugged Highlands (357) - {T}: Add {G}.
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] cast Kalamax, the Stormsire
|
||||||
|
Resolve Stack: Kalamax, the Stormsire - Creature 4 / 4
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] activated Oran-Rief, the Vastwood
|
||||||
|
Resolve Stack: Oran-Rief, the Vastwood (304) - Put a +1/+1 counter on each valid permanent.
|
||||||
|
Turn: Turn 47 (Ai(1)-Reaper King No More)
|
||||||
|
Land: Ai(1)-Reaper King No More played Forest (29)
|
||||||
|
Mana: Forest (28) - {T}: Add {G}.
|
||||||
|
Mana: Forest (32) - {T}: Add {G}.
|
||||||
|
Mana: Yavimaya, Cradle of Growth (90) - {T}: Add {G}.
|
||||||
|
Mana: Forest (29) - {T}: Add {G}.
|
||||||
|
Mana: Mountain (92) - {T}: Add {R}.
|
||||||
|
Mana: Mountain (93) - {T}: Add {G}.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More cast The Reaper, King No More
|
||||||
|
Resolve Stack: The Reaper, King No More - Creature 3 / 3
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered The Reaper, King No More targeting [The Reaper, King No More (100), Mayhem Devil (63)]
|
||||||
|
Resolve Stack: When The Reaper, King No More enters, put a -1/-1 counter on each of up to two target creatures. (Targeting: [[The Reaper, King No More (100), Mayhem Devil (63)]]) [Zone Changer: The Reaper, King No More (100)]
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Flourishing Defenses
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Flourishing Defenses
|
||||||
|
Resolve Stack: Whenever a -1/-1 counter is put on a creature, you may create a 1/1 green Elf Warrior creature token. [Added once: Mayhem Devil (63)]
|
||||||
|
Resolve Stack: Whenever a -1/-1 counter is put on a creature, you may create a 1/1 green Elf Warrior creature token. [Added once: The Reaper, King No More (100)]
|
||||||
|
Mana: Swamp (61) - {T}: Add {G}.
|
||||||
|
Mana: Overgrown Tomb (72) - {T}: Add {G}.
|
||||||
|
Mana: Swamp (59) - {T}: Add {G}.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More cast Ashnod's Altar
|
||||||
|
Resolve Stack: Ashnod's Altar
|
||||||
|
Mana: Blooming Marsh (40) - {T}: Add {G}.
|
||||||
|
Mana: Path of Ancestry (8) - {T}: Add {G}.
|
||||||
|
Mana: Llanowar Wastes (80) - {T}: Add {C}.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More cast Cultivate
|
||||||
|
Resolve Stack: Cultivate (39) - Search your library for up to two basic land cards, reveal those cards, put one onto the battlefield tapped and the other into your hand, then shuffle.
|
||||||
|
Zone Change: The Reaper, King No More (100) was put into Graveyard from Battlefield.
|
||||||
|
Mana: Phyrexian Altar (52) - Sacrifice a creature: Add one mana of any color.
|
||||||
|
Zone Change: Elf Warrior Token (732) was put into Graveyard from Battlefield.
|
||||||
|
Mana: Ashnod's Altar (6) - Sacrifice a creature: Add {C}{C}.
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More cast Humble Defector
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Mayhem Devil targeting [Ai(2)-Faceless Menace [C19] [2019]]
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Mayhem Devil targeting [Ai(2)-Faceless Menace [C19] [2019]]
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Blood Artist targeting [Ai(3)-Merciless Rage [C19] [2019]]
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Blood Artist targeting [Ai(3)-Merciless Rage [C19] [2019]]
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 22 > 21
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 3 > 4
|
||||||
|
Resolve Stack: Whenever Blood Artist or another creature dies, target player loses 1 life and you gain 1 life. (Targeting: [[Ai(3)-Merciless Rage [C19] [2019]]]) [Zone Changer: Elf Warrior Token (732)]
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 21 > 20
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 4 > 5
|
||||||
|
Resolve Stack: Whenever Blood Artist or another creature dies, target player loses 1 life and you gain 1 life. (Targeting: [[Ai(3)-Merciless Rage [C19] [2019]]]) [Zone Changer: The Reaper, King No More (100)]
|
||||||
|
Damage: Mayhem Devil (63) deals 1 non-combat damage to Ai(2)-Faceless Menace [C19] [2019].
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 5 > 4
|
||||||
|
Resolve Stack: Whenever a player sacrifices a permanent, Mayhem Devil deals 1 damage to any target. (Targeting: [[Ai(2)-Faceless Menace [C19] [2019]]]) [Sacrificed: Elf Warrior Token (732)]
|
||||||
|
Damage: Mayhem Devil (63) deals 1 non-combat damage to Ai(2)-Faceless Menace [C19] [2019].
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 4 > 3
|
||||||
|
Resolve Stack: Whenever a player sacrifices a permanent, Mayhem Devil deals 1 damage to any target. (Targeting: [[Ai(2)-Faceless Menace [C19] [2019]]]) [Sacrificed: The Reaper, King No More (100)]
|
||||||
|
Resolve Stack: Humble Defector - Creature 2 / 1
|
||||||
|
Turn: Turn 48 (Ai(2)-Faceless Menace [C19] [2019])
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Bounty of the Luxa
|
||||||
|
Resolve Stack: At the beginning of your first main phase, remove all flood counters from Bounty of the Luxa. If no counters were removed this way, put a flood counter on Bounty of the Luxa and draw a card. Otherwise, add {C}{G}{U}. [Phase: Ai(2)-Faceless Menace [C19] [2019]]
|
||||||
|
Land: Ai(2)-Faceless Menace [C19] [2019] played Swamp (185)
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] cast Morph
|
||||||
|
Resolve Stack: Morph - Creature 2/2
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] triggered Kadena, Slinking Sorcerer
|
||||||
|
Resolve Stack: Whenever a face-down creature you control enters, draw a card. [Zone Changer: Face-down card (H20)]
|
||||||
|
Mana: Forest (121) - {T}: Add {G}.
|
||||||
|
Mana: Sol Ring (157) - {T}: Add {C}{C}.
|
||||||
|
Mana: Forest (125) - {T}: Add {G}.
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] cast Tempt with Discovery
|
||||||
|
Replacement Effect: Woodland Stream enters tapped.
|
||||||
|
Replacement Effect: As Stomping Ground enters, you may pay 2 life. If you don't, it enters tapped.
|
||||||
|
Replacement Effect: Akoum Refuge enters tapped.
|
||||||
|
Replacement Effect: Simic Growth Chamber enters tapped.
|
||||||
|
Replacement Effect: Sunken Hollow enters tapped unless you control two or more basic lands.
|
||||||
|
Resolve Stack: Tempt with Discovery (131) - Tempting offer — Search your library for a land card and put it onto the battlefield. Each opponent may search their library for a land card and put it onto the battlefield. For each opponent who searches a library this way, search your library for a land card and put it onto the battlefield. Then each player who searched a library this way shuffles. (OPTIONAL) Ai(2)-Faceless Menace [C19] [2019] searches Ai(3)-Merciless Rage [C19] [2019], Ai(4)-Arcane Maelstrom [C20] [2020] and Ai(1)-Reaper King No More library for a land card, puts it onto the battlefield, then shuffles.
|
||||||
|
Add To Stack: Ai(3)-Merciless Rage [C19] [2019] triggered Akoum Refuge
|
||||||
|
Add To Stack: Ai(4)-Arcane Maelstrom [C20] [2020] triggered Simic Growth Chamber
|
||||||
|
Zone Change: Evolving Wilds (136) was put into Graveyard from Battlefield.
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] activated Evolving Wilds
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More triggered Mayhem Devil targeting [Ai(2)-Faceless Menace [C19] [2019]]
|
||||||
|
Damage: Mayhem Devil (63) deals 1 non-combat damage to Ai(2)-Faceless Menace [C19] [2019].
|
||||||
|
Life: Life: Ai(2)-Faceless Menace [C19] [2019] 3 > 2
|
||||||
|
Resolve Stack: Whenever a player sacrifices a permanent, Mayhem Devil deals 1 damage to any target. (Targeting: [[Ai(2)-Faceless Menace [C19] [2019]]]) [Sacrificed: Evolving Wilds (136)]
|
||||||
|
Resolve Stack: Evolving Wilds (136) - Ai(2)-Faceless Menace [C19] [2019] searches their library for a basic land card, puts it onto the battlefield tapped, then shuffles.
|
||||||
|
Resolve Stack: When Simic Growth Chamber enters, return a land you control to its owner's hand. [Zone Changer: Simic Growth Chamber (379)]
|
||||||
|
Life: Life: Ai(3)-Merciless Rage [C19] [2019] 20 > 21
|
||||||
|
Resolve Stack: When Akoum Refuge enters, you gain 1 life. [Zone Changer: Akoum Refuge (228)]
|
||||||
|
Mana: Forest (126) - {T}: Add {G}.
|
||||||
|
Mana: Swamp (186) - {T}: Add {G}.
|
||||||
|
Mana: Swamp (185) - {T}: Add {G}.
|
||||||
|
Add To Stack: Ai(2)-Faceless Menace [C19] [2019] cast Cultivate
|
||||||
|
Player Control: Ai(1)-Reaper King No More has restored control over themself
|
||||||
|
Player Control: Ai(2)-Faceless Menace [C19] [2019] has restored control over themself
|
||||||
|
Player Control: Ai(3)-Merciless Rage [C19] [2019] has restored control over themself
|
||||||
|
Player Control: Ai(4)-Arcane Maelstrom [C20] [2020] has restored control over themself
|
||||||
|
Game Outcome: Turn 24
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has won because all opponents have lost
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 1 Ai(2)-Faceless Menace [C19] [2019]: 0 Ai(3)-Merciless Rage [C19] [2019]: 0 Ai(4)-Arcane Maelstrom [C20] [2020]: 0
|
||||||
|
|
||||||
|
Game Result: Game 1 ended in 120048 ms. Ai(1)-Reaper King No More has won!
|
||||||
|
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
====================================================================
|
||||||
|
FORGE SIMULATION REPORT — 4-player Commander pod
|
||||||
|
====================================================================
|
||||||
|
games completed : 1 (requested 1) seed: 20260907
|
||||||
|
decklist : /home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/decklist.txt (full 100 cards)
|
||||||
|
engine : Forge 2.0.14, full rules, AI vs AI
|
||||||
|
|
||||||
|
WIN RATE
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
our deck : 1/1 (100.0%) [random baseline in a 4-pod = 25%]
|
||||||
|
|
||||||
|
all players:
|
||||||
|
Reaper King No More 1 (100.0%) ############################## <-- ours
|
||||||
|
Faceless Menace [C19] [2019] 0 ( 0.0%)
|
||||||
|
Merciless Rage [C19] [2019] 0 ( 0.0%)
|
||||||
|
Arcane Maelstrom [C20] [2020] 0 ( 0.0%)
|
||||||
|
|
||||||
|
GAME LENGTH
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
turns median 24 min 24 max 24
|
||||||
|
seconds median 120 total 2.0 min
|
||||||
|
|
||||||
|
HOW OUR DECK LOST
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
(never lost)
|
||||||
|
|
||||||
|
WHO BEAT US (winner, in games our deck lost)
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
(n/a)
|
||||||
|
|
||||||
|
CAVEAT — READ THIS BEFORE TRUSTING THE WIN RATE
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
Forge's AI is heuristic and, by its own documentation, WEAK AT COMBO
|
||||||
|
decks. Ours is a combo/aristocrats deck, so the AI systematically
|
||||||
|
under-plays it: it will miss sac-loop lines a human would see.
|
||||||
|
Read this as a FLOOR on the deck's power, and as proof the deck
|
||||||
|
functions and its cards interact — not as a power rating.
|
||||||
|
Opponents are stock precons, which are roughly bracket 2.
|
||||||
|
|
||||||
|
====================================================================
|
||||||
|
decklist : /home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/decklist.txt
|
||||||
|
full log : /home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/sim/20260908T012700Z.log (every game, all Forge output)
|
||||||
|
raw data : /home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/sim/20260908T012700Z.json
|
||||||
|
this report: /home/markdoeswork/mtg/reaper-king-no-more/decks/grindy/sim/20260908T012700Z.txt
|
||||||
|
====================================================================
|
||||||
20
decks/reaper-king-no-more/decks/heavy-removal/README.md
Normal file
20
decks/reaper-king-no-more/decks/heavy-removal/README.md
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
# heavy-removal
|
||||||
|
|
||||||
|
_generated 2026-09-07 15:51Z by `tools/variant.py`_
|
||||||
|
|
||||||
|
- **bracket 3: PASS** (two-card vacuum combos: 0)
|
||||||
|
- 86 lines in `decklist.txt`
|
||||||
|
|
||||||
|
## files
|
||||||
|
|
||||||
|
| file | what it is |
|
||||||
|
| --- | --- |
|
||||||
|
| `decklist.txt` | the deck, `N Card Name` per line |
|
||||||
|
| `bracket.txt` | bracket-3 + house-rule check |
|
||||||
|
| `combos.txt` | combos in the deck, and one card away |
|
||||||
|
| `sim/` | Forge runs — `.log` raw, `.txt` report, `.json` data |
|
||||||
|
|
||||||
|
## simulation runs
|
||||||
|
|
||||||
|
_none yet — run with `--sim 24`_
|
||||||
|
|
||||||
18
decks/reaper-king-no-more/decks/heavy-removal/bracket.txt
Normal file
18
decks/reaper-king-no-more/decks/heavy-removal/bracket.txt
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
COMMANDER: The Reaper, King No More
|
||||||
|
DECK SIZE: 99 + 1 commander = 100
|
||||||
|
|
||||||
|
GAME CHANGERS: 0/3 OK
|
||||||
|
|
||||||
|
MASS LAND DENIAL: 0 OK
|
||||||
|
|
||||||
|
EXTRA TURNS: 0 OK
|
||||||
|
|
||||||
|
TWO-CARD INFINITE COMBOS IN A VACUUM: 0 OK
|
||||||
|
|
||||||
|
two-card combos needing board state (ALLOWED, 1):
|
||||||
|
- Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
|
||||||
|
==========================================================
|
||||||
|
BRACKET 3: PASS
|
||||||
64
decks/reaper-king-no-more/decks/heavy-removal/combos.txt
Normal file
64
decks/reaper-king-no-more/decks/heavy-removal/combos.txt
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
==================================================================
|
||||||
|
COMBOS ALREADY IN THE DECK: 7
|
||||||
|
==================================================================
|
||||||
|
[E] Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Blood Artist
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Zulaport Cutthroat
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Woe Strider
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Viscera Seer
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Ashnod's Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colorless mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Phyrexian Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colored mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
|
||||||
|
==================================================================
|
||||||
|
ONE CARD AWAY: 349 combos, 77 distinct cards
|
||||||
|
==================================================================
|
||||||
|
28 combos Mikaeus, the Unhallowed {3}{B}{B}{B} #1306
|
||||||
|
12 combos First Day of Class {1}{R} #10147
|
||||||
|
9 combos Rhythm of the Wild {1}{R}{G} #216
|
||||||
|
9 combos Grumgully, the Generous {1}{R}{G} #4341
|
||||||
|
8 combos Veinwitch Coven {2}{B} #4179
|
||||||
|
8 combos Thran Vigil {1}{B} #6285
|
||||||
|
8 combos Rocksteady, Mutant Marauder {2}{G} #10233
|
||||||
|
8 combos Host of the Hereafter {2}{B}{G} #7758
|
||||||
|
8 combos Support Mission {2}{G} #31928
|
||||||
|
8 combos Captain Kathryn Janeway {3}{G} #26133
|
||||||
|
8 combos Surrak and Goreclaw {4}{G}{G} #1600
|
||||||
|
8 combos Railway Brawler {3}{G}{G} #2493
|
||||||
|
8 combos Warden of the Grove {2}{G} #2262
|
||||||
|
8 combos Uncivil Unrest {4}{R} #2947
|
||||||
|
8 combos Renata, Called to the Hunt {2}{G}{G} #2830
|
||||||
|
|
||||||
|
decklist: /home/markdoeswork/mtg/reaper-king-no-more/decks/heavy-removal/decklist.txt | source: data/variants.json (108,535 combos)
|
||||||
92
decks/reaper-king-no-more/decks/heavy-removal/decklist.txt
Normal file
92
decks/reaper-king-no-more/decks/heavy-removal/decklist.txt
Normal file
|
|
@ -0,0 +1,92 @@
|
||||||
|
# heavy-removal
|
||||||
|
# Bracket 3 pods interact. Trade combo redundancy for removal and see whether surviving longer beats assembling faster.
|
||||||
|
|
||||||
|
# Commander
|
||||||
|
1 The Reaper, King No More
|
||||||
|
|
||||||
|
# Main
|
||||||
|
1 Hapatra, Vizier of Poisons
|
||||||
|
1 Blowfly Infestation
|
||||||
|
1 Necroskitter
|
||||||
|
1 Yawgmoth, Thran Physician
|
||||||
|
1 Plague Belcher
|
||||||
|
1 Archfiend of Ifnir
|
||||||
|
1 Grim Poppet
|
||||||
|
1 Contagion Clasp
|
||||||
|
1 Black Sun's Zenith
|
||||||
|
1 Murderous Redcap
|
||||||
|
1 Putrid Goblin
|
||||||
|
1 Cauldron of Souls
|
||||||
|
1 Viscera Seer
|
||||||
|
1 Carrion Feeder
|
||||||
|
1 Ashnod's Altar
|
||||||
|
1 Phyrexian Altar
|
||||||
|
1 Goblin Bombardment
|
||||||
|
1 Yahenni, Undying Partisan
|
||||||
|
1 Woe Strider
|
||||||
|
1 Blood Artist
|
||||||
|
1 Zulaport Cutthroat
|
||||||
|
1 Vengeful Bloodwitch
|
||||||
|
1 Poison-Tip Archer
|
||||||
|
1 Mirkwood Bats
|
||||||
|
1 Mayhem Devil
|
||||||
|
1 Syr Konrad, the Grim
|
||||||
|
1 Bastion of Remembrance
|
||||||
|
1 Mazirek, Kraul Death Priest
|
||||||
|
1 The Meathook Massacre
|
||||||
|
1 Massacre Wurm
|
||||||
|
1 Massacre Girl, Known Killer
|
||||||
|
1 Humble Defector
|
||||||
|
1 Midnight Reaper
|
||||||
|
1 Grim Haruspex
|
||||||
|
1 Village Rites
|
||||||
|
1 Deadly Dispute
|
||||||
|
1 Greater Good
|
||||||
|
1 Beast Within
|
||||||
|
1 Chaos Warp
|
||||||
|
1 Terminate
|
||||||
|
1 Bedevil
|
||||||
|
1 Assassin's Trophy
|
||||||
|
1 Damnation
|
||||||
|
1 Toxic Deluge
|
||||||
|
1 Vandalblast
|
||||||
|
1 Cultivate
|
||||||
|
1 Kodama's Reach
|
||||||
|
1 Farseek
|
||||||
|
1 Nature's Lore
|
||||||
|
1 Three Visits
|
||||||
|
1 Birds of Paradise
|
||||||
|
1 Sakura-Tribe Elder
|
||||||
|
1 Overseer of the Damned
|
||||||
|
1 Skullclamp
|
||||||
|
1 Rampant Growth
|
||||||
|
1 Harrow
|
||||||
|
1 Wood Elves
|
||||||
|
1 Springbloom Druid
|
||||||
|
1 Binding the Old Gods
|
||||||
|
1 Fiery Cannonade
|
||||||
|
1 Vraska, the Silencer
|
||||||
|
1 Meathook Massacre II
|
||||||
|
1 Go for the Throat
|
||||||
|
1 Command Tower
|
||||||
|
1 Path of Ancestry
|
||||||
|
1 Exotic Orchard
|
||||||
|
1 Blood Crypt
|
||||||
|
1 Overgrown Tomb
|
||||||
|
1 Stomping Ground
|
||||||
|
1 Blackcleave Cliffs
|
||||||
|
1 Blooming Marsh
|
||||||
|
1 Copperline Gorge
|
||||||
|
1 Savage Lands
|
||||||
|
1 Jungle Hollow
|
||||||
|
1 Bloodfell Caves
|
||||||
|
1 Rugged Highlands
|
||||||
|
1 Ziatora's Proving Ground
|
||||||
|
1 Bojuka Bog
|
||||||
|
1 Castle Locthwain
|
||||||
|
1 Llanowar Wastes
|
||||||
|
1 Karplusan Forest
|
||||||
|
1 Yavimaya, Cradle of Growth
|
||||||
|
8 Swamp
|
||||||
|
5 Forest
|
||||||
|
4 Mountain
|
||||||
20
decks/reaper-king-no-more/decks/lean-outlets/README.md
Normal file
20
decks/reaper-king-no-more/decks/lean-outlets/README.md
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
# lean-outlets
|
||||||
|
|
||||||
|
_generated 2026-09-07 15:51Z by `tools/variant.py`_
|
||||||
|
|
||||||
|
- **bracket 3: PASS** (two-card vacuum combos: 0)
|
||||||
|
- 86 lines in `decklist.txt`
|
||||||
|
|
||||||
|
## files
|
||||||
|
|
||||||
|
| file | what it is |
|
||||||
|
| --- | --- |
|
||||||
|
| `decklist.txt` | the deck, `N Card Name` per line |
|
||||||
|
| `bracket.txt` | bracket-3 + house-rule check |
|
||||||
|
| `combos.txt` | combos in the deck, and one card away |
|
||||||
|
| `sim/` | Forge runs — `.log` raw, `.txt` report, `.json` data |
|
||||||
|
|
||||||
|
## simulation runs
|
||||||
|
|
||||||
|
_none yet — run with `--sim 24`_
|
||||||
|
|
||||||
24
decks/reaper-king-no-more/decks/lean-outlets/bracket.txt
Normal file
24
decks/reaper-king-no-more/decks/lean-outlets/bracket.txt
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
COMMANDER: The Reaper, King No More
|
||||||
|
DECK SIZE: 99 + 1 commander = 100
|
||||||
|
|
||||||
|
GAME CHANGERS: 0/3 OK
|
||||||
|
|
||||||
|
MASS LAND DENIAL: 0 OK
|
||||||
|
|
||||||
|
EXTRA TURNS: 0 OK
|
||||||
|
|
||||||
|
TWO-CARD INFINITE COMBOS IN A VACUUM: 0 OK
|
||||||
|
|
||||||
|
two-card combos needing board state (ALLOWED, 3):
|
||||||
|
- Blowfly Infestation + Nest of Scarabs
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Flourishing Defenses
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
|
||||||
|
==========================================================
|
||||||
|
BRACKET 3: PASS
|
||||||
85
decks/reaper-king-no-more/decks/lean-outlets/combos.txt
Normal file
85
decks/reaper-king-no-more/decks/lean-outlets/combos.txt
Normal file
|
|
@ -0,0 +1,85 @@
|
||||||
|
==================================================================
|
||||||
|
COMBOS ALREADY IN THE DECK: 10
|
||||||
|
==================================================================
|
||||||
|
[E] Blowfly Infestation + Flourishing Defenses
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Nest of Scarabs
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Obelisk Spider
|
||||||
|
-> Near-infinite lifeloss
|
||||||
|
-> Near-infinite lifegain triggers
|
||||||
|
-> Near-infinite creature ETB
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[E] Yawgmoth, Thran Physician + Nest of Scarabs + Blood Artist
|
||||||
|
-> Near-infinite -1/-1 counters
|
||||||
|
-> Near-infinite card draw
|
||||||
|
-> Near-infinite death triggers
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: There is at least one other creature on the battlefield.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Blood Artist
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Zulaport Cutthroat
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Viscera Seer
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Ashnod's Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colorless mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Phyrexian Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colored mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
|
||||||
|
==================================================================
|
||||||
|
ONE CARD AWAY: 283 combos, 82 distinct cards
|
||||||
|
==================================================================
|
||||||
|
20 combos Mikaeus, the Unhallowed {3}{B}{B}{B} #1306
|
||||||
|
10 combos First Day of Class {1}{R} #10147
|
||||||
|
8 combos Veinwitch Coven {2}{B} #4179
|
||||||
|
8 combos Host of the Hereafter {2}{B}{G} #7758
|
||||||
|
7 combos Rhythm of the Wild {1}{R}{G} #216
|
||||||
|
7 combos Grumgully, the Generous {1}{R}{G} #4341
|
||||||
|
7 combos Scurry Oak {2}{G} #2259
|
||||||
|
6 combos Thran Vigil {1}{B} #6285
|
||||||
|
6 combos Rocksteady, Mutant Marauder {2}{G} #10233
|
||||||
|
6 combos Support Mission {2}{G} #31928
|
||||||
|
6 combos Captain Kathryn Janeway {3}{G} #26133
|
||||||
|
6 combos Surrak and Goreclaw {4}{G}{G} #1600
|
||||||
|
6 combos Warden of the Grove {2}{G} #2262
|
||||||
|
6 combos Railway Brawler {3}{G}{G} #2493
|
||||||
|
6 combos Uncivil Unrest {4}{R} #2947
|
||||||
|
|
||||||
|
decklist: /home/markdoeswork/mtg/reaper-king-no-more/decks/lean-outlets/decklist.txt | source: data/variants.json (108,535 combos)
|
||||||
92
decks/reaper-king-no-more/decks/lean-outlets/decklist.txt
Normal file
92
decks/reaper-king-no-more/decks/lean-outlets/decklist.txt
Normal file
|
|
@ -0,0 +1,92 @@
|
||||||
|
# lean-outlets
|
||||||
|
# The deck runs 8 sac outlets and probably needs ~5. Cut 3 for interaction and card advantage -- does consistency actually drop?
|
||||||
|
|
||||||
|
# Commander
|
||||||
|
1 The Reaper, King No More
|
||||||
|
|
||||||
|
# Main
|
||||||
|
1 Hapatra, Vizier of Poisons
|
||||||
|
1 Blowfly Infestation
|
||||||
|
1 Nest of Scarabs
|
||||||
|
1 Necroskitter
|
||||||
|
1 Yawgmoth, Thran Physician
|
||||||
|
1 Flourishing Defenses
|
||||||
|
1 Obelisk Spider
|
||||||
|
1 Plague Belcher
|
||||||
|
1 Archfiend of Ifnir
|
||||||
|
1 Grim Poppet
|
||||||
|
1 Contagion Clasp
|
||||||
|
1 Black Sun's Zenith
|
||||||
|
1 Murderous Redcap
|
||||||
|
1 Putrid Goblin
|
||||||
|
1 Cauldron of Souls
|
||||||
|
1 Viscera Seer
|
||||||
|
1 Carrion Feeder
|
||||||
|
1 Ashnod's Altar
|
||||||
|
1 Phyrexian Altar
|
||||||
|
1 Goblin Bombardment
|
||||||
|
1 Blood Artist
|
||||||
|
1 Zulaport Cutthroat
|
||||||
|
1 Vengeful Bloodwitch
|
||||||
|
1 Poison-Tip Archer
|
||||||
|
1 Mirkwood Bats
|
||||||
|
1 Mayhem Devil
|
||||||
|
1 Syr Konrad, the Grim
|
||||||
|
1 Bastion of Remembrance
|
||||||
|
1 Mazirek, Kraul Death Priest
|
||||||
|
1 The Meathook Massacre
|
||||||
|
1 Massacre Wurm
|
||||||
|
1 Massacre Girl, Known Killer
|
||||||
|
1 Humble Defector
|
||||||
|
1 Midnight Reaper
|
||||||
|
1 Grim Haruspex
|
||||||
|
1 Village Rites
|
||||||
|
1 Deadly Dispute
|
||||||
|
1 Beast Within
|
||||||
|
1 Chaos Warp
|
||||||
|
1 Terminate
|
||||||
|
1 Bedevil
|
||||||
|
1 Assassin's Trophy
|
||||||
|
1 Damnation
|
||||||
|
1 Toxic Deluge
|
||||||
|
1 Vandalblast
|
||||||
|
1 Cultivate
|
||||||
|
1 Kodama's Reach
|
||||||
|
1 Farseek
|
||||||
|
1 Nature's Lore
|
||||||
|
1 Three Visits
|
||||||
|
1 Birds of Paradise
|
||||||
|
1 Sakura-Tribe Elder
|
||||||
|
1 Persistent Constrictor
|
||||||
|
1 Overseer of the Damned
|
||||||
|
1 Skullclamp
|
||||||
|
1 Rampant Growth
|
||||||
|
1 Harrow
|
||||||
|
1 Wood Elves
|
||||||
|
1 Springbloom Druid
|
||||||
|
1 Binding the Old Gods
|
||||||
|
1 Bloodchief Ascension
|
||||||
|
1 Toshiro Umezawa
|
||||||
|
1 Fiery Cannonade
|
||||||
|
1 Command Tower
|
||||||
|
1 Path of Ancestry
|
||||||
|
1 Exotic Orchard
|
||||||
|
1 Blood Crypt
|
||||||
|
1 Overgrown Tomb
|
||||||
|
1 Stomping Ground
|
||||||
|
1 Blackcleave Cliffs
|
||||||
|
1 Blooming Marsh
|
||||||
|
1 Copperline Gorge
|
||||||
|
1 Savage Lands
|
||||||
|
1 Jungle Hollow
|
||||||
|
1 Bloodfell Caves
|
||||||
|
1 Rugged Highlands
|
||||||
|
1 Ziatora's Proving Ground
|
||||||
|
1 Bojuka Bog
|
||||||
|
1 Castle Locthwain
|
||||||
|
1 Llanowar Wastes
|
||||||
|
1 Karplusan Forest
|
||||||
|
1 Yavimaya, Cradle of Growth
|
||||||
|
8 Swamp
|
||||||
|
5 Forest
|
||||||
|
4 Mountain
|
||||||
20
decks/reaper-king-no-more/decks/low-curve/README.md
Normal file
20
decks/reaper-king-no-more/decks/low-curve/README.md
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
# low-curve
|
||||||
|
|
||||||
|
_generated 2026-09-07 15:52Z by `tools/variant.py`_
|
||||||
|
|
||||||
|
- **bracket 3: PASS** (two-card vacuum combos: 0)
|
||||||
|
- 86 lines in `decklist.txt`
|
||||||
|
|
||||||
|
## files
|
||||||
|
|
||||||
|
| file | what it is |
|
||||||
|
| --- | --- |
|
||||||
|
| `decklist.txt` | the deck, `N Card Name` per line |
|
||||||
|
| `bracket.txt` | bracket-3 + house-rule check |
|
||||||
|
| `combos.txt` | combos in the deck, and one card away |
|
||||||
|
| `sim/` | Forge runs — `.log` raw, `.txt` report, `.json` data |
|
||||||
|
|
||||||
|
## simulation runs
|
||||||
|
|
||||||
|
_none yet — run with `--sim 24`_
|
||||||
|
|
||||||
24
decks/reaper-king-no-more/decks/low-curve/bracket.txt
Normal file
24
decks/reaper-king-no-more/decks/low-curve/bracket.txt
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
COMMANDER: The Reaper, King No More
|
||||||
|
DECK SIZE: 99 + 1 commander = 100
|
||||||
|
|
||||||
|
GAME CHANGERS: 0/3 OK
|
||||||
|
|
||||||
|
MASS LAND DENIAL: 0 OK
|
||||||
|
|
||||||
|
EXTRA TURNS: 0 OK
|
||||||
|
|
||||||
|
TWO-CARD INFINITE COMBOS IN A VACUUM: 0 OK
|
||||||
|
|
||||||
|
two-card combos needing board state (ALLOWED, 3):
|
||||||
|
- Blowfly Infestation + Nest of Scarabs
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Flourishing Defenses
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
|
||||||
|
==========================================================
|
||||||
|
BRACKET 3: PASS
|
||||||
90
decks/reaper-king-no-more/decks/low-curve/combos.txt
Normal file
90
decks/reaper-king-no-more/decks/low-curve/combos.txt
Normal file
|
|
@ -0,0 +1,90 @@
|
||||||
|
==================================================================
|
||||||
|
COMBOS ALREADY IN THE DECK: 11
|
||||||
|
==================================================================
|
||||||
|
[E] Blowfly Infestation + Flourishing Defenses
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Nest of Scarabs
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Obelisk Spider
|
||||||
|
-> Near-infinite lifeloss
|
||||||
|
-> Near-infinite lifegain triggers
|
||||||
|
-> Near-infinite creature ETB
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[E] Yawgmoth, Thran Physician + Nest of Scarabs + Blood Artist
|
||||||
|
-> Near-infinite -1/-1 counters
|
||||||
|
-> Near-infinite card draw
|
||||||
|
-> Near-infinite death triggers
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: There is at least one other creature on the battlefield.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Blood Artist
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Zulaport Cutthroat
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Woe Strider
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Viscera Seer
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Ashnod's Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colorless mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Phyrexian Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colored mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
|
||||||
|
==================================================================
|
||||||
|
ONE CARD AWAY: 342 combos, 79 distinct cards
|
||||||
|
==================================================================
|
||||||
|
21 combos Mikaeus, the Unhallowed {3}{B}{B}{B} #1306
|
||||||
|
12 combos First Day of Class {1}{R} #10147
|
||||||
|
10 combos Host of the Hereafter {2}{B}{G} #7758
|
||||||
|
9 combos Rhythm of the Wild {1}{R}{G} #216
|
||||||
|
9 combos Grumgully, the Generous {1}{R}{G} #4341
|
||||||
|
8 combos Veinwitch Coven {2}{B} #4179
|
||||||
|
8 combos Thran Vigil {1}{B} #6285
|
||||||
|
8 combos Rocksteady, Mutant Marauder {2}{G} #10233
|
||||||
|
8 combos Support Mission {2}{G} #31928
|
||||||
|
8 combos Captain Kathryn Janeway {3}{G} #26133
|
||||||
|
8 combos Surrak and Goreclaw {4}{G}{G} #1600
|
||||||
|
8 combos Railway Brawler {3}{G}{G} #2493
|
||||||
|
8 combos Warden of the Grove {2}{G} #2262
|
||||||
|
8 combos Uncivil Unrest {4}{R} #2947
|
||||||
|
8 combos Renata, Called to the Hunt {2}{G}{G} #2830
|
||||||
|
|
||||||
|
decklist: /home/markdoeswork/mtg/reaper-king-no-more/decks/low-curve/decklist.txt | source: data/variants.json (108,535 combos)
|
||||||
92
decks/reaper-king-no-more/decks/low-curve/decklist.txt
Normal file
92
decks/reaper-king-no-more/decks/low-curve/decklist.txt
Normal file
|
|
@ -0,0 +1,92 @@
|
||||||
|
# low-curve
|
||||||
|
# Avg MV is 3.02 and the engine lands ~T6. Cut the top of the curve entirely -- does the deck come online sooner and win more?
|
||||||
|
|
||||||
|
# Commander
|
||||||
|
1 The Reaper, King No More
|
||||||
|
|
||||||
|
# Main
|
||||||
|
1 Hapatra, Vizier of Poisons
|
||||||
|
1 Blowfly Infestation
|
||||||
|
1 Nest of Scarabs
|
||||||
|
1 Necroskitter
|
||||||
|
1 Yawgmoth, Thran Physician
|
||||||
|
1 Flourishing Defenses
|
||||||
|
1 Obelisk Spider
|
||||||
|
1 Plague Belcher
|
||||||
|
1 Contagion Clasp
|
||||||
|
1 Black Sun's Zenith
|
||||||
|
1 Murderous Redcap
|
||||||
|
1 Putrid Goblin
|
||||||
|
1 Viscera Seer
|
||||||
|
1 Carrion Feeder
|
||||||
|
1 Ashnod's Altar
|
||||||
|
1 Phyrexian Altar
|
||||||
|
1 Goblin Bombardment
|
||||||
|
1 Yahenni, Undying Partisan
|
||||||
|
1 Woe Strider
|
||||||
|
1 Blood Artist
|
||||||
|
1 Zulaport Cutthroat
|
||||||
|
1 Vengeful Bloodwitch
|
||||||
|
1 Poison-Tip Archer
|
||||||
|
1 Mirkwood Bats
|
||||||
|
1 Mayhem Devil
|
||||||
|
1 Syr Konrad, the Grim
|
||||||
|
1 Bastion of Remembrance
|
||||||
|
1 Mazirek, Kraul Death Priest
|
||||||
|
1 The Meathook Massacre
|
||||||
|
1 Massacre Girl, Known Killer
|
||||||
|
1 Humble Defector
|
||||||
|
1 Midnight Reaper
|
||||||
|
1 Grim Haruspex
|
||||||
|
1 Village Rites
|
||||||
|
1 Deadly Dispute
|
||||||
|
1 Greater Good
|
||||||
|
1 Beast Within
|
||||||
|
1 Chaos Warp
|
||||||
|
1 Terminate
|
||||||
|
1 Bedevil
|
||||||
|
1 Assassin's Trophy
|
||||||
|
1 Damnation
|
||||||
|
1 Toxic Deluge
|
||||||
|
1 Vandalblast
|
||||||
|
1 Cultivate
|
||||||
|
1 Kodama's Reach
|
||||||
|
1 Farseek
|
||||||
|
1 Nature's Lore
|
||||||
|
1 Three Visits
|
||||||
|
1 Birds of Paradise
|
||||||
|
1 Sakura-Tribe Elder
|
||||||
|
1 Persistent Constrictor
|
||||||
|
1 Skullclamp
|
||||||
|
1 Rampant Growth
|
||||||
|
1 Harrow
|
||||||
|
1 Wood Elves
|
||||||
|
1 Springbloom Druid
|
||||||
|
1 Binding the Old Gods
|
||||||
|
1 Malakir Cullblade
|
||||||
|
1 Slaughter Specialist
|
||||||
|
1 Bloodchief Ascension
|
||||||
|
1 Nurgle's Rot
|
||||||
|
1 Chevill, Bane of Monsters
|
||||||
|
1 Command Tower
|
||||||
|
1 Path of Ancestry
|
||||||
|
1 Exotic Orchard
|
||||||
|
1 Blood Crypt
|
||||||
|
1 Overgrown Tomb
|
||||||
|
1 Stomping Ground
|
||||||
|
1 Blackcleave Cliffs
|
||||||
|
1 Blooming Marsh
|
||||||
|
1 Copperline Gorge
|
||||||
|
1 Savage Lands
|
||||||
|
1 Jungle Hollow
|
||||||
|
1 Bloodfell Caves
|
||||||
|
1 Rugged Highlands
|
||||||
|
1 Ziatora's Proving Ground
|
||||||
|
1 Bojuka Bog
|
||||||
|
1 Castle Locthwain
|
||||||
|
1 Llanowar Wastes
|
||||||
|
1 Karplusan Forest
|
||||||
|
1 Yavimaya, Cradle of Growth
|
||||||
|
8 Swamp
|
||||||
|
5 Forest
|
||||||
|
4 Mountain
|
||||||
32
decks/reaper-king-no-more/decks/mikaeus/README.md
Normal file
32
decks/reaper-king-no-more/decks/mikaeus/README.md
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
# mikaeus
|
||||||
|
|
||||||
|
_generated 2026-09-07 15:51Z by `tools/variant.py`_
|
||||||
|
|
||||||
|
- **bracket 3: FAIL** (two-card vacuum combos: 7)
|
||||||
|
- 86 lines in `decklist.txt`
|
||||||
|
|
||||||
|
## files
|
||||||
|
|
||||||
|
| file | what it is |
|
||||||
|
| --- | --- |
|
||||||
|
| `decklist.txt` | the deck, `N Card Name` per line |
|
||||||
|
| `bracket.txt` | bracket-3 + house-rule check |
|
||||||
|
| `combos.txt` | combos in the deck, and one card away |
|
||||||
|
| `sim/` | Forge runs — `.log` raw, `.txt` report, `.json` data |
|
||||||
|
|
||||||
|
## two-card vacuum combos (house-rule violations)
|
||||||
|
|
||||||
|
These go infinite with no third card and no board state:
|
||||||
|
|
||||||
|
- Mikaeus, the Unhallowed + Carrion Feeder
|
||||||
|
- Mikaeus, the Unhallowed + Woe Strider
|
||||||
|
- Mikaeus, the Unhallowed + Ashnod's Altar
|
||||||
|
- Mikaeus, the Unhallowed + Phyrexian Altar
|
||||||
|
- Mikaeus, the Unhallowed + Viscera Seer
|
||||||
|
- Mikaeus, the Unhallowed + Yahenni, Undying Partisan
|
||||||
|
- Mikaeus, the Unhallowed + Goblin Bombardment
|
||||||
|
|
||||||
|
## simulation runs
|
||||||
|
|
||||||
|
_none yet — run with `--sim 24`_
|
||||||
|
|
||||||
31
decks/reaper-king-no-more/decks/mikaeus/bracket.txt
Normal file
31
decks/reaper-king-no-more/decks/mikaeus/bracket.txt
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
COMMANDER: The Reaper, King No More
|
||||||
|
DECK SIZE: 99 + 1 commander = 100
|
||||||
|
|
||||||
|
GAME CHANGERS: 0/3 OK
|
||||||
|
|
||||||
|
MASS LAND DENIAL: 0 OK
|
||||||
|
|
||||||
|
EXTRA TURNS: 0 OK
|
||||||
|
|
||||||
|
TWO-CARD INFINITE COMBOS IN A VACUUM: 7 !! HOUSE RULE VIOLATION
|
||||||
|
- Mikaeus, the Unhallowed + Carrion Feeder
|
||||||
|
- Mikaeus, the Unhallowed + Woe Strider
|
||||||
|
- Mikaeus, the Unhallowed + Ashnod's Altar
|
||||||
|
- Mikaeus, the Unhallowed + Phyrexian Altar
|
||||||
|
- Mikaeus, the Unhallowed + Viscera Seer
|
||||||
|
- Mikaeus, the Unhallowed + Yahenni, Undying Partisan
|
||||||
|
- Mikaeus, the Unhallowed + Goblin Bombardment
|
||||||
|
|
||||||
|
two-card combos needing board state (ALLOWED, 3):
|
||||||
|
- Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Flourishing Defenses
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Nest of Scarabs
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
|
||||||
|
==========================================================
|
||||||
|
BRACKET 3: FAIL -- see !! above
|
||||||
202
decks/reaper-king-no-more/decks/mikaeus/combos.txt
Normal file
202
decks/reaper-king-no-more/decks/mikaeus/combos.txt
Normal file
|
|
@ -0,0 +1,202 @@
|
||||||
|
==================================================================
|
||||||
|
COMBOS ALREADY IN THE DECK: 39
|
||||||
|
==================================================================
|
||||||
|
[E] Mikaeus, the Unhallowed + Yahenni, Undying Partisan
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite creature sacrifice triggers
|
||||||
|
[S] Mikaeus, the Unhallowed + Ashnod's Altar
|
||||||
|
-> Infinite colorless mana
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
[S] Mikaeus, the Unhallowed + Phyrexian Altar
|
||||||
|
-> Infinite colored mana
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
[S] Mikaeus, the Unhallowed + Goblin Bombardment
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite creature sacrifice triggers
|
||||||
|
[O] Mikaeus, the Unhallowed + Carrion Feeder
|
||||||
|
-> Infinite +1/+1 counters on a creature
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
[E] Mikaeus, the Unhallowed + Viscera Seer
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite creature sacrifice triggers
|
||||||
|
[E] Mikaeus, the Unhallowed + Woe Strider
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite creature sacrifice triggers
|
||||||
|
[E] Blowfly Infestation + Flourishing Defenses
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Nest of Scarabs
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[O] Mikaeus, the Unhallowed + The Reaper, King No More + Yahenni, Undying Partisan
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite death triggers
|
||||||
|
[S] Mikaeus, the Unhallowed + Phyrexian Altar + The Reaper, King No More
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite colored mana
|
||||||
|
[O] Mikaeus, the Unhallowed + Woe Strider + The Reaper, King No More
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite death triggers
|
||||||
|
[S] Mikaeus, the Unhallowed + Ashnod's Altar + The Reaper, King No More
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite colorless mana
|
||||||
|
[O] Mikaeus, the Unhallowed + Viscera Seer + The Reaper, King No More
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite death triggers
|
||||||
|
[S] Mikaeus, the Unhallowed + Goblin Bombardment + The Reaper, King No More
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite damage
|
||||||
|
[O] Mikaeus, the Unhallowed + The Reaper, King No More + Carrion Feeder
|
||||||
|
-> Infinite +1/+1 counters on a creature
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
[E] Mikaeus, the Unhallowed + Woe Strider + Plague Belcher
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite death triggers
|
||||||
|
[E] Mikaeus, the Unhallowed + Plague Belcher + Yahenni, Undying Partisan
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite death triggers
|
||||||
|
[S] Mikaeus, the Unhallowed + Goblin Bombardment + Plague Belcher
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite damage
|
||||||
|
[E] Mikaeus, the Unhallowed + Grim Poppet + Yahenni, Undying Partisan
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature sacrifice triggers
|
||||||
|
[E] Mikaeus, the Unhallowed + Woe Strider + Grim Poppet
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature sacrifice triggers
|
||||||
|
[S] Mikaeus, the Unhallowed + Grim Poppet + Goblin Bombardment
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature sacrifice triggers
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Obelisk Spider
|
||||||
|
-> Near-infinite lifeloss
|
||||||
|
-> Near-infinite lifegain triggers
|
||||||
|
-> Near-infinite creature ETB
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[E] Yawgmoth, Thran Physician + Nest of Scarabs + Blood Artist
|
||||||
|
-> Near-infinite -1/-1 counters
|
||||||
|
-> Near-infinite card draw
|
||||||
|
-> Near-infinite death triggers
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: There is at least one other creature on the battlefield.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Blood Artist
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Zulaport Cutthroat
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[S] Mikaeus, the Unhallowed + Ashnod's Altar + Plague Belcher
|
||||||
|
-> Infinite colorless mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
[S] Mikaeus, the Unhallowed + Phyrexian Altar + Plague Belcher
|
||||||
|
-> Infinite colored mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
[O] Mikaeus, the Unhallowed + Plague Belcher + Carrion Feeder
|
||||||
|
-> Infinite +1/+1 counters on a creature
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
[E] Mikaeus, the Unhallowed + Viscera Seer + Plague Belcher
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
[S] Mikaeus, the Unhallowed + Ashnod's Altar + Grim Poppet
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
-> Infinite colorless mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
[S] Mikaeus, the Unhallowed + Phyrexian Altar + Grim Poppet
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
-> Infinite colored mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
[O] Mikaeus, the Unhallowed + Grim Poppet + Carrion Feeder
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
-> Infinite +1/+1 counters on a creature
|
||||||
|
-> Infinite death triggers
|
||||||
|
[E] Mikaeus, the Unhallowed + Viscera Seer + Grim Poppet
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Woe Strider
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Viscera Seer
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Ashnod's Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colorless mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Phyrexian Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colored mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
|
||||||
|
==================================================================
|
||||||
|
ONE CARD AWAY: 550 combos, 134 distinct cards
|
||||||
|
==================================================================
|
||||||
|
12 combos First Day of Class {1}{R} #10147
|
||||||
|
10 combos Host of the Hereafter {2}{B}{G} #7758
|
||||||
|
9 combos Rhythm of the Wild {1}{R}{G} #216
|
||||||
|
9 combos Grumgully, the Generous {1}{R}{G} #4341
|
||||||
|
8 combos Veinwitch Coven {2}{B} #4179
|
||||||
|
8 combos Thran Vigil {1}{B} #6285
|
||||||
|
8 combos Rocksteady, Mutant Marauder {2}{G} #10233
|
||||||
|
8 combos Support Mission {2}{G} #31928
|
||||||
|
8 combos Captain Kathryn Janeway {3}{G} #26133
|
||||||
|
8 combos Surrak and Goreclaw {4}{G}{G} #1600
|
||||||
|
8 combos Railway Brawler {3}{G}{G} #2493
|
||||||
|
8 combos Warden of the Grove {2}{G} #2262
|
||||||
|
8 combos Uncivil Unrest {4}{R} #2947
|
||||||
|
8 combos Renata, Called to the Hunt {2}{G}{G} #2830
|
||||||
|
8 combos Arwen, Weaver of Hope {1}{G}{G} #1868
|
||||||
|
|
||||||
|
decklist: /home/markdoeswork/mtg/reaper-king-no-more/decks/mikaeus/decklist.txt | source: data/variants.json (108,535 combos)
|
||||||
92
decks/reaper-king-no-more/decks/mikaeus/decklist.txt
Normal file
92
decks/reaper-king-no-more/decks/mikaeus/decklist.txt
Normal file
|
|
@ -0,0 +1,92 @@
|
||||||
|
# mikaeus
|
||||||
|
# Does the highest-leverage combo card (28 combos) stay legal? Expected FAIL: goes infinite with every sac outlet.
|
||||||
|
|
||||||
|
# Commander
|
||||||
|
1 The Reaper, King No More
|
||||||
|
|
||||||
|
# Main
|
||||||
|
1 Hapatra, Vizier of Poisons
|
||||||
|
1 Blowfly Infestation
|
||||||
|
1 Nest of Scarabs
|
||||||
|
1 Necroskitter
|
||||||
|
1 Yawgmoth, Thran Physician
|
||||||
|
1 Flourishing Defenses
|
||||||
|
1 Obelisk Spider
|
||||||
|
1 Plague Belcher
|
||||||
|
1 Archfiend of Ifnir
|
||||||
|
1 Grim Poppet
|
||||||
|
1 Contagion Clasp
|
||||||
|
1 Black Sun's Zenith
|
||||||
|
1 Murderous Redcap
|
||||||
|
1 Putrid Goblin
|
||||||
|
1 Cauldron of Souls
|
||||||
|
1 Viscera Seer
|
||||||
|
1 Carrion Feeder
|
||||||
|
1 Ashnod's Altar
|
||||||
|
1 Phyrexian Altar
|
||||||
|
1 Goblin Bombardment
|
||||||
|
1 Yahenni, Undying Partisan
|
||||||
|
1 Woe Strider
|
||||||
|
1 Blood Artist
|
||||||
|
1 Zulaport Cutthroat
|
||||||
|
1 Vengeful Bloodwitch
|
||||||
|
1 Poison-Tip Archer
|
||||||
|
1 Mirkwood Bats
|
||||||
|
1 Mayhem Devil
|
||||||
|
1 Syr Konrad, the Grim
|
||||||
|
1 Bastion of Remembrance
|
||||||
|
1 Mazirek, Kraul Death Priest
|
||||||
|
1 The Meathook Massacre
|
||||||
|
1 Massacre Wurm
|
||||||
|
1 Massacre Girl, Known Killer
|
||||||
|
1 Midnight Reaper
|
||||||
|
1 Grim Haruspex
|
||||||
|
1 Village Rites
|
||||||
|
1 Deadly Dispute
|
||||||
|
1 Greater Good
|
||||||
|
1 Beast Within
|
||||||
|
1 Chaos Warp
|
||||||
|
1 Terminate
|
||||||
|
1 Bedevil
|
||||||
|
1 Assassin's Trophy
|
||||||
|
1 Damnation
|
||||||
|
1 Toxic Deluge
|
||||||
|
1 Vandalblast
|
||||||
|
1 Cultivate
|
||||||
|
1 Kodama's Reach
|
||||||
|
1 Farseek
|
||||||
|
1 Nature's Lore
|
||||||
|
1 Three Visits
|
||||||
|
1 Birds of Paradise
|
||||||
|
1 Sakura-Tribe Elder
|
||||||
|
1 Persistent Constrictor
|
||||||
|
1 Overseer of the Damned
|
||||||
|
1 Skullclamp
|
||||||
|
1 Rampant Growth
|
||||||
|
1 Harrow
|
||||||
|
1 Wood Elves
|
||||||
|
1 Springbloom Druid
|
||||||
|
1 Binding the Old Gods
|
||||||
|
1 Mikaeus, the Unhallowed
|
||||||
|
1 Command Tower
|
||||||
|
1 Path of Ancestry
|
||||||
|
1 Exotic Orchard
|
||||||
|
1 Blood Crypt
|
||||||
|
1 Overgrown Tomb
|
||||||
|
1 Stomping Ground
|
||||||
|
1 Blackcleave Cliffs
|
||||||
|
1 Blooming Marsh
|
||||||
|
1 Copperline Gorge
|
||||||
|
1 Savage Lands
|
||||||
|
1 Jungle Hollow
|
||||||
|
1 Bloodfell Caves
|
||||||
|
1 Rugged Highlands
|
||||||
|
1 Ziatora's Proving Ground
|
||||||
|
1 Bojuka Bog
|
||||||
|
1 Castle Locthwain
|
||||||
|
1 Llanowar Wastes
|
||||||
|
1 Karplusan Forest
|
||||||
|
1 Yavimaya, Cradle of Growth
|
||||||
|
8 Swamp
|
||||||
|
5 Forest
|
||||||
|
4 Mountain
|
||||||
20
decks/reaper-king-no-more/decks/no-mikaeus/README.md
Normal file
20
decks/reaper-king-no-more/decks/no-mikaeus/README.md
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
# no-mikaeus
|
||||||
|
|
||||||
|
_generated 2026-09-07 15:56Z by `tools/variant.py`_
|
||||||
|
|
||||||
|
- **bracket 3: PASS** (two-card vacuum combos: 0)
|
||||||
|
- 86 lines in `decklist.txt`
|
||||||
|
|
||||||
|
## files
|
||||||
|
|
||||||
|
| file | what it is |
|
||||||
|
| --- | --- |
|
||||||
|
| `decklist.txt` | the deck, `N Card Name` per line |
|
||||||
|
| `bracket.txt` | bracket-3 + house-rule check |
|
||||||
|
| `combos.txt` | combos in the deck, and one card away |
|
||||||
|
| `sim/` | Forge runs — `.log` raw, `.txt` report, `.json` data |
|
||||||
|
|
||||||
|
## simulation runs
|
||||||
|
|
||||||
|
- `sim/20260907T153709Z.txt` — our deck : 7/24 (29.2%) [random baseline in a 4-pod = 25%]
|
||||||
|
|
||||||
24
decks/reaper-king-no-more/decks/no-mikaeus/bracket.txt
Normal file
24
decks/reaper-king-no-more/decks/no-mikaeus/bracket.txt
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
COMMANDER: The Reaper, King No More
|
||||||
|
DECK SIZE: 99 + 1 commander = 100
|
||||||
|
|
||||||
|
GAME CHANGERS: 0/3 OK
|
||||||
|
|
||||||
|
MASS LAND DENIAL: 0 OK
|
||||||
|
|
||||||
|
EXTRA TURNS: 0 OK
|
||||||
|
|
||||||
|
TWO-CARD INFINITE COMBOS IN A VACUUM: 0 OK
|
||||||
|
|
||||||
|
two-card combos needing board state (ALLOWED, 3):
|
||||||
|
- Blowfly Infestation + Nest of Scarabs
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Flourishing Defenses
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
|
||||||
|
==========================================================
|
||||||
|
BRACKET 3: PASS
|
||||||
90
decks/reaper-king-no-more/decks/no-mikaeus/combos.txt
Normal file
90
decks/reaper-king-no-more/decks/no-mikaeus/combos.txt
Normal file
|
|
@ -0,0 +1,90 @@
|
||||||
|
==================================================================
|
||||||
|
COMBOS ALREADY IN THE DECK: 11
|
||||||
|
==================================================================
|
||||||
|
[E] Blowfly Infestation + Flourishing Defenses
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Nest of Scarabs
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Obelisk Spider
|
||||||
|
-> Near-infinite lifeloss
|
||||||
|
-> Near-infinite lifegain triggers
|
||||||
|
-> Near-infinite creature ETB
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[E] Yawgmoth, Thran Physician + Nest of Scarabs + Blood Artist
|
||||||
|
-> Near-infinite -1/-1 counters
|
||||||
|
-> Near-infinite card draw
|
||||||
|
-> Near-infinite death triggers
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: There is at least one other creature on the battlefield.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Blood Artist
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Zulaport Cutthroat
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Woe Strider
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Viscera Seer
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Ashnod's Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colorless mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Phyrexian Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colored mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
|
||||||
|
==================================================================
|
||||||
|
ONE CARD AWAY: 354 combos, 81 distinct cards
|
||||||
|
==================================================================
|
||||||
|
28 combos Mikaeus, the Unhallowed {3}{B}{B}{B} #1306
|
||||||
|
12 combos First Day of Class {1}{R} #10147
|
||||||
|
10 combos Host of the Hereafter {2}{B}{G} #7758
|
||||||
|
9 combos Rhythm of the Wild {1}{R}{G} #216
|
||||||
|
9 combos Grumgully, the Generous {1}{R}{G} #4341
|
||||||
|
8 combos Veinwitch Coven {2}{B} #4179
|
||||||
|
8 combos Thran Vigil {1}{B} #6285
|
||||||
|
8 combos Rocksteady, Mutant Marauder {2}{G} #10233
|
||||||
|
8 combos Support Mission {2}{G} #31928
|
||||||
|
8 combos Captain Kathryn Janeway {3}{G} #26133
|
||||||
|
8 combos Surrak and Goreclaw {4}{G}{G} #1600
|
||||||
|
8 combos Railway Brawler {3}{G}{G} #2493
|
||||||
|
8 combos Warden of the Grove {2}{G} #2262
|
||||||
|
8 combos Uncivil Unrest {4}{R} #2947
|
||||||
|
8 combos Renata, Called to the Hunt {2}{G}{G} #2830
|
||||||
|
|
||||||
|
decklist: /home/markdoeswork/mtg/reaper-king-no-more/decks/no-mikaeus/decklist.txt | source: data/variants.json (108,535 combos)
|
||||||
92
decks/reaper-king-no-more/decks/no-mikaeus/decklist.txt
Normal file
92
decks/reaper-king-no-more/decks/no-mikaeus/decklist.txt
Normal file
|
|
@ -0,0 +1,92 @@
|
||||||
|
# no-mikaeus
|
||||||
|
# Baseline. Aristocrats + -1/-1, every combo needs board state.
|
||||||
|
|
||||||
|
# Commander
|
||||||
|
1 The Reaper, King No More
|
||||||
|
|
||||||
|
# Main
|
||||||
|
1 Hapatra, Vizier of Poisons
|
||||||
|
1 Blowfly Infestation
|
||||||
|
1 Nest of Scarabs
|
||||||
|
1 Necroskitter
|
||||||
|
1 Yawgmoth, Thran Physician
|
||||||
|
1 Flourishing Defenses
|
||||||
|
1 Obelisk Spider
|
||||||
|
1 Plague Belcher
|
||||||
|
1 Archfiend of Ifnir
|
||||||
|
1 Grim Poppet
|
||||||
|
1 Contagion Clasp
|
||||||
|
1 Black Sun's Zenith
|
||||||
|
1 Murderous Redcap
|
||||||
|
1 Putrid Goblin
|
||||||
|
1 Cauldron of Souls
|
||||||
|
1 Viscera Seer
|
||||||
|
1 Carrion Feeder
|
||||||
|
1 Ashnod's Altar
|
||||||
|
1 Phyrexian Altar
|
||||||
|
1 Goblin Bombardment
|
||||||
|
1 Yahenni, Undying Partisan
|
||||||
|
1 Woe Strider
|
||||||
|
1 Blood Artist
|
||||||
|
1 Zulaport Cutthroat
|
||||||
|
1 Vengeful Bloodwitch
|
||||||
|
1 Poison-Tip Archer
|
||||||
|
1 Mirkwood Bats
|
||||||
|
1 Mayhem Devil
|
||||||
|
1 Syr Konrad, the Grim
|
||||||
|
1 Bastion of Remembrance
|
||||||
|
1 Mazirek, Kraul Death Priest
|
||||||
|
1 The Meathook Massacre
|
||||||
|
1 Massacre Wurm
|
||||||
|
1 Massacre Girl, Known Killer
|
||||||
|
1 Humble Defector
|
||||||
|
1 Midnight Reaper
|
||||||
|
1 Grim Haruspex
|
||||||
|
1 Village Rites
|
||||||
|
1 Deadly Dispute
|
||||||
|
1 Greater Good
|
||||||
|
1 Beast Within
|
||||||
|
1 Chaos Warp
|
||||||
|
1 Terminate
|
||||||
|
1 Bedevil
|
||||||
|
1 Assassin's Trophy
|
||||||
|
1 Damnation
|
||||||
|
1 Toxic Deluge
|
||||||
|
1 Vandalblast
|
||||||
|
1 Cultivate
|
||||||
|
1 Kodama's Reach
|
||||||
|
1 Farseek
|
||||||
|
1 Nature's Lore
|
||||||
|
1 Three Visits
|
||||||
|
1 Birds of Paradise
|
||||||
|
1 Sakura-Tribe Elder
|
||||||
|
1 Persistent Constrictor
|
||||||
|
1 Overseer of the Damned
|
||||||
|
1 Skullclamp
|
||||||
|
1 Rampant Growth
|
||||||
|
1 Harrow
|
||||||
|
1 Wood Elves
|
||||||
|
1 Springbloom Druid
|
||||||
|
1 Binding the Old Gods
|
||||||
|
1 Command Tower
|
||||||
|
1 Path of Ancestry
|
||||||
|
1 Exotic Orchard
|
||||||
|
1 Blood Crypt
|
||||||
|
1 Overgrown Tomb
|
||||||
|
1 Stomping Ground
|
||||||
|
1 Blackcleave Cliffs
|
||||||
|
1 Blooming Marsh
|
||||||
|
1 Copperline Gorge
|
||||||
|
1 Savage Lands
|
||||||
|
1 Jungle Hollow
|
||||||
|
1 Bloodfell Caves
|
||||||
|
1 Rugged Highlands
|
||||||
|
1 Ziatora's Proving Ground
|
||||||
|
1 Bojuka Bog
|
||||||
|
1 Castle Locthwain
|
||||||
|
1 Llanowar Wastes
|
||||||
|
1 Karplusan Forest
|
||||||
|
1 Yavimaya, Cradle of Growth
|
||||||
|
8 Swamp
|
||||||
|
5 Forest
|
||||||
|
4 Mountain
|
||||||
|
|
@ -0,0 +1,583 @@
|
||||||
|
{
|
||||||
|
"log": "decks/reaper-king-no-more/decks/no-mikaeus/sim/20260907T153709Z.log",
|
||||||
|
"games": 24,
|
||||||
|
"base_win_rate": 0.2916666666666667,
|
||||||
|
"cards": [
|
||||||
|
{
|
||||||
|
"card": "Contagion Clasp",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Overseer of the Damned",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Mayhem Devil",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Beast Within",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Chaos Warp",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Necroskitter",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Cauldron of Souls",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Mirkwood Bats",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Grim Haruspex",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Putrid Goblin",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Bedevil",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Woe Strider",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Assassin's Trophy",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Birds of Paradise",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Massacre Wurm",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Greater Good",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Poison-Tip Archer",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Grim Poppet",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Massacre Girl, Known Killer",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Hapatra, Vizier of Poisons",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Ashnod's Altar",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Wood Elves",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Zulaport Cutthroat",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Farseek",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Yahenni, Undying Partisan",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Damnation",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Village Rites",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Cultivate",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Plague Belcher",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Bastion of Remembrance",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Toxic Deluge",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Springbloom Druid",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Blowfly Infestation",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Archfiend of Ifnir",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Blood Artist",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Yawgmoth, Thran Physician",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Flourishing Defenses",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Vengeful Bloodwitch",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Humble Defector",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "The Meathook Massacre",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Rampant Growth",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Deadly Dispute",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Binding the Old Gods",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Black Sun's Zenith",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Viscera Seer",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Persistent Constrictor",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Goblin Bombardment",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Mazirek, Kraul Death Priest",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Murderous Redcap",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Sakura-Tribe Elder",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Midnight Reaper",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Nature's Lore",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Syr Konrad, the Grim",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Three Visits",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Obelisk Spider",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Harrow",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Skullclamp",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "The Reaper, King No More",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Phyrexian Altar",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Terminate",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Carrion Feeder",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Vandalblast",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Nest of Scarabs",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"card": "Kodama's Reach",
|
||||||
|
"games_cast": 0,
|
||||||
|
"cast_rate": 0.0,
|
||||||
|
"avg_turn": null,
|
||||||
|
"win_rate_when_cast": null,
|
||||||
|
"delta": null,
|
||||||
|
"total_casts": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,510 @@
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"generated": "20260907T155608Z",
|
||||||
|
"engine": "Forge 2.0.14",
|
||||||
|
"format": "Commander, 4 players",
|
||||||
|
"games_requested": "24",
|
||||||
|
"games_completed": 24,
|
||||||
|
"seed": "20260907",
|
||||||
|
"decklist_file": "decks/no-mikaeus/decklist.txt",
|
||||||
|
"log_file": "decks/no-mikaeus/sim/20260907T153709Z.log",
|
||||||
|
"caveat": "Forge AI is weak at combo decks; treat win rate as a floor"
|
||||||
|
},
|
||||||
|
"win_counts": {
|
||||||
|
"Reaper King No More": 7,
|
||||||
|
"Faceless Menace [C19] [2019]": 4,
|
||||||
|
"Merciless Rage [C19] [2019]": 8,
|
||||||
|
"Arcane Maelstrom [C20] [2020]": 5
|
||||||
|
},
|
||||||
|
"our_win_rate": 0.2916666666666667,
|
||||||
|
"games": [
|
||||||
|
{
|
||||||
|
"turns": 27,
|
||||||
|
"winner": "Faceless Menace [C19] [2019]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 1,
|
||||||
|
"ms": 79475
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 24,
|
||||||
|
"winner": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 2,
|
||||||
|
"ms": 20544
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 23,
|
||||||
|
"winner": "Reaper King No More",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 3,
|
||||||
|
"ms": 59015
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 31,
|
||||||
|
"winner": "Merciless Rage [C19] [2019]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 4,
|
||||||
|
"ms": 120000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 35,
|
||||||
|
"winner": "Merciless Rage [C19] [2019]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 5,
|
||||||
|
"ms": 47560
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 28,
|
||||||
|
"winner": "Merciless Rage [C19] [2019]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 6,
|
||||||
|
"ms": 29406
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 34,
|
||||||
|
"winner": "Faceless Menace [C19] [2019]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 7,
|
||||||
|
"ms": 54239
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 23,
|
||||||
|
"winner": "Merciless Rage [C19] [2019]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 8,
|
||||||
|
"ms": 19414
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 26,
|
||||||
|
"winner": "Faceless Menace [C19] [2019]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 9,
|
||||||
|
"ms": 41602
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 23,
|
||||||
|
"winner": "Faceless Menace [C19] [2019]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 10,
|
||||||
|
"ms": 77465
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 27,
|
||||||
|
"winner": "Merciless Rage [C19] [2019]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 11,
|
||||||
|
"ms": 26776
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 23,
|
||||||
|
"winner": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 12,
|
||||||
|
"ms": 16887
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 27,
|
||||||
|
"winner": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 13,
|
||||||
|
"ms": 36025
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 33,
|
||||||
|
"winner": "Merciless Rage [C19] [2019]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 14,
|
||||||
|
"ms": 50074
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 21,
|
||||||
|
"winner": "Reaper King No More",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 15,
|
||||||
|
"ms": 25103
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 28,
|
||||||
|
"winner": "Reaper King No More",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 16,
|
||||||
|
"ms": 61150
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 35,
|
||||||
|
"winner": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 17,
|
||||||
|
"ms": 48858
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 24,
|
||||||
|
"winner": "Merciless Rage [C19] [2019]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 18,
|
||||||
|
"ms": 25471
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 27,
|
||||||
|
"winner": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 19,
|
||||||
|
"ms": 32030
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 24,
|
||||||
|
"winner": "Reaper King No More",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 20,
|
||||||
|
"ms": 24173
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 30,
|
||||||
|
"winner": "Reaper King No More",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 21,
|
||||||
|
"ms": 73454
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 36,
|
||||||
|
"winner": "Reaper King No More",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 22,
|
||||||
|
"ms": 53834
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 30,
|
||||||
|
"winner": "Merciless Rage [C19] [2019]",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Reaper King No More",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 23,
|
||||||
|
"ms": 71382
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"turns": 21,
|
||||||
|
"winner": "Reaper King No More",
|
||||||
|
"losers": [
|
||||||
|
{
|
||||||
|
"player": "Faceless Menace [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Merciless Rage [C19] [2019]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"player": "Arcane Maelstrom [C20] [2020]",
|
||||||
|
"reason": "life total reached 0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"win_reason": "all opponents have lost",
|
||||||
|
"game": 24,
|
||||||
|
"ms": 28748
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,609 @@
|
||||||
|
Error handling registered!
|
||||||
|
11:37:10 [INFO ] GuiBase: ##########################################
|
||||||
|
11:37:10 [INFO ] GuiBase: APP: Forge v.2.0.14-SNAPSHOT-08.08
|
||||||
|
11:37:10 [INFO ] GuiBase: Java: 26.0.2.1 (Arch Linux)
|
||||||
|
11:37:10 [INFO ] GuiBase: OS: Linux 7.1.9-arch1-2 amd64
|
||||||
|
11:37:10 [INFO ] GuiBase: RAM: 4096 MB max, 20 CPUs
|
||||||
|
11:37:10 [INFO ] GuiBase: ##########################################
|
||||||
|
Language 'en-US' loaded successfully.
|
||||||
|
(ThreadUtil first call): Running with priority 5
|
||||||
|
Read cards: 33617 archived files in 0 ms (25 parts) using thread pool
|
||||||
|
Read cards: 836 files in 0 ms (8 parts) using thread pool
|
||||||
|
Simulation mode
|
||||||
|
Ai(1)-Reaper King No More vs Ai(2)-Faceless Menace [C19] [2019] vs Ai(3)-Merciless Rage [C19] [2019] vs Ai(4)-Arcane Maelstrom [C20] [2020] - twenty four games of Commander seed 20260907
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Comet Storm (307) - [Couldn't add to stack, failed to target] - Choose any target, then choose another target for each time this spell was kicked. CARDNAME deals X damage to each of them.[[Overseer of the Damned (50)]]
|
||||||
|
Correcting zone for Grismold, the Dreadsower (142)
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Correcting zone for Grismold, the Dreadsower (142)
|
||||||
|
Game Outcome: Turn 27
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has lost because life total reached 0
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 0 Ai(2)-Faceless Menace [C19] [2019]: 1 Ai(3)-Merciless Rage [C19] [2019]: 0 Ai(4)-Arcane Maelstrom [C20] [2020]: 0
|
||||||
|
|
||||||
|
Game Result: Game 1 ended in 79475 ms. Ai(2)-Faceless Menace [C19] [2019] has won!
|
||||||
|
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of chooseSinglePlayer is used by Boneyard Parley for forge.ai.ability.TwoPilesAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Correcting zone for Carrion Feeder (22)
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of chooseSinglePlayer is used by Jace, Architect of Thought for forge.ai.ability.TwoPilesAi. Consider declaring an overloaded method
|
||||||
|
Game Outcome: Turn 24
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has won because all opponents have lost
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 0 Ai(2)-Faceless Menace [C19] [2019]: 1 Ai(3)-Merciless Rage [C19] [2019]: 0 Ai(4)-Arcane Maelstrom [C20] [2020]: 1
|
||||||
|
|
||||||
|
Game Result: Game 2 ended in 20544 ms. Ai(4)-Arcane Maelstrom [C20] [2020] has won!
|
||||||
|
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Moving spell to Library
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Game Outcome: Turn 23
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has lost because life total reached 0
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 1 Ai(2)-Faceless Menace [C19] [2019]: 1 Ai(3)-Merciless Rage [C19] [2019]: 0 Ai(4)-Arcane Maelstrom [C20] [2020]: 1
|
||||||
|
|
||||||
|
Game Result: Game 3 ended in 59015 ms. Ai(1)-Reaper King No More has won!
|
||||||
|
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
java.util.concurrent.TimeoutException
|
||||||
|
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:206)
|
||||||
|
at forge.ai.AiController.chooseSpellAbilityToPlayFromList(AiController.java:1696)
|
||||||
|
at forge.ai.AiController.getSpellAbilityToPlay(AiController.java:1583)
|
||||||
|
at forge.ai.AiController.chooseSpellAbilityToPlay(AiController.java:1403)
|
||||||
|
at forge.ai.PlayerControllerAi.chooseSpellAbilityToPlay(PlayerControllerAi.java:832)
|
||||||
|
at forge.game.phase.PhaseHandler.mainLoopStep(PhaseHandler.java:1056)
|
||||||
|
at forge.game.phase.PhaseHandler.mainGameLoop(PhaseHandler.java:1035)
|
||||||
|
at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:1029)
|
||||||
|
at forge.game.GameAction.startGame(GameAction.java:2373)
|
||||||
|
at forge.game.Match.startGame(Match.java:92)
|
||||||
|
at forge.game.Match.startGame(Match.java:77)
|
||||||
|
at forge.view.SimulateMatch.lambda$simulateSingleMatch$0(SimulateMatch.java:213)
|
||||||
|
at forge.view.TimeLimitedCodeBlock.lambda$runWithTimeout$0(TimeLimitedCodeBlock.java:18)
|
||||||
|
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:330)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
|
||||||
|
at java.base/java.lang.Thread.run(Thread.java:1516)
|
||||||
|
AI eval thread at timeout:
|
||||||
|
at com.google.common.collect.AbstractMapBasedMultimap$Itr.hasNext(AbstractMapBasedMultimap.java:1174)
|
||||||
|
at forge.game.keyword.KeywordCollection.applyStaticAbility(KeywordCollection.java:207)
|
||||||
|
at forge.game.card.Card.updateStaticAbilities(Card.java:7014)
|
||||||
|
at forge.game.card.CardState.getStaticAbilities(CardState.java:712)
|
||||||
|
at forge.game.card.Card.getStaticAbilities(Card.java:6993)
|
||||||
|
at forge.ai.ComputerUtilCombat.predictPowerBonusOfBlocker(ComputerUtilCombat.java:891)
|
||||||
|
at forge.ai.ComputerUtilCombat.canDestroyAttacker(ComputerUtilCombat.java:1687)
|
||||||
|
at forge.ai.AiBlockController.getKillingBlockers(AiBlockController.java:120)
|
||||||
|
at forge.ai.AiBlockController.makeTradeBlocks(AiBlockController.java:618)
|
||||||
|
at forge.ai.AiBlockController.assignBlockers(AiBlockController.java:1089)
|
||||||
|
at forge.ai.AiBlockController.assignBlockersForCombat(AiBlockController.java:1014)
|
||||||
|
at forge.ai.ComputerUtil.predictNextCombatsRemainingLife(ComputerUtil.java:3214)
|
||||||
|
at forge.ai.ComputerUtil.predictNextCombatsRemainingLife(ComputerUtil.java:3179)
|
||||||
|
at forge.ai.AiAttackController.notNeededAsBlockers(AiAttackController.java:426)
|
||||||
|
at forge.ai.AiAttackController.declareAttackers(AiAttackController.java:1279)
|
||||||
|
at forge.ai.ComputerUtilCard.doesSpecifiedCreatureAttackAI(ComputerUtilCard.java:820)
|
||||||
|
at forge.ai.ComputerUtilCard.shouldPumpCard(ComputerUtilCard.java:1557)
|
||||||
|
at forge.ai.ComputerUtilCard.shouldPumpCard(ComputerUtilCard.java:1446)
|
||||||
|
at forge.ai.ability.PumpAllAi.lambda$checkApiLogic$2(PumpAllAi.java:132)
|
||||||
|
at java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)
|
||||||
|
at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1701)
|
||||||
|
at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:147)
|
||||||
|
at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:588)
|
||||||
|
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:574)
|
||||||
|
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)
|
||||||
|
at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
|
||||||
|
at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
|
||||||
|
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
|
||||||
|
at java.base/java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:668)
|
||||||
|
at forge.util.collect.FCollection.anyMatch(FCollection.java:622)
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Active player is no longer in the game...
|
||||||
|
Stopping slow match as draw
|
||||||
|
Game Outcome: Turn 31
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has lost because life total reached 0
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 1 Ai(2)-Faceless Menace [C19] [2019]: 1 Ai(3)-Merciless Rage [C19] [2019]: 1 Ai(4)-Arcane Maelstrom [C20] [2020]: 1
|
||||||
|
|
||||||
|
Game Result: Game 4 ended in 120000 ms. Ai(3)-Merciless Rage [C19] [2019] has won!
|
||||||
|
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Correcting zone for Humble Defector (18)
|
||||||
|
Correcting zone for Humble Defector (18)
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Moving spell to Library
|
||||||
|
AI Attack declaration invalid, defaulting to: {Kalamax, the Stormsire (403)=Ai(1)-Reaper King No More}
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Correcting zone for Kalamax, the Stormsire (403)
|
||||||
|
Correcting zone for Kalamax, the Stormsire (403)
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Game Outcome: Turn 35
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has lost due to accumulation of 21 damage from generals
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has lost because life total reached 0
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 1 Ai(2)-Faceless Menace [C19] [2019]: 1 Ai(3)-Merciless Rage [C19] [2019]: 2 Ai(4)-Arcane Maelstrom [C20] [2020]: 1
|
||||||
|
|
||||||
|
Game Result: Game 5 ended in 47560 ms. Ai(3)-Merciless Rage [C19] [2019] has won!
|
||||||
|
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Moving spell to Library
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of chooseSinglePlayer is used by Boneyard Parley for forge.ai.ability.TwoPilesAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Game Outcome: Turn 28
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has lost because life total reached 0
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 1 Ai(2)-Faceless Menace [C19] [2019]: 1 Ai(3)-Merciless Rage [C19] [2019]: 3 Ai(4)-Arcane Maelstrom [C20] [2020]: 1
|
||||||
|
|
||||||
|
Game Result: Game 6 ended in 29406 ms. Ai(3)-Merciless Rage [C19] [2019] has won!
|
||||||
|
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Game Outcome: Turn 34
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has lost because life total reached 0
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 1 Ai(2)-Faceless Menace [C19] [2019]: 2 Ai(3)-Merciless Rage [C19] [2019]: 3 Ai(4)-Arcane Maelstrom [C20] [2020]: 1
|
||||||
|
|
||||||
|
Game Result: Game 7 ended in 54239 ms. Ai(2)-Faceless Menace [C19] [2019] has won!
|
||||||
|
|
||||||
|
Correcting zone for The Reaper, King No More (100)
|
||||||
|
Correcting zone for The Reaper, King No More (100)
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
No AI assigned for API: null
|
||||||
|
java.util.concurrent.ExecutionException: java.lang.NullPointerException: Cannot invoke "Object.getClass()" because "key" is null
|
||||||
|
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:124)
|
||||||
|
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:207)
|
||||||
|
at forge.ai.AiController.chooseSpellAbilityToPlayFromList(AiController.java:1696)
|
||||||
|
at forge.ai.AiController.getSpellAbilityToPlay(AiController.java:1583)
|
||||||
|
at forge.ai.AiController.chooseSpellAbilityToPlay(AiController.java:1403)
|
||||||
|
at forge.ai.PlayerControllerAi.chooseSpellAbilityToPlay(PlayerControllerAi.java:832)
|
||||||
|
at forge.game.phase.PhaseHandler.mainLoopStep(PhaseHandler.java:1056)
|
||||||
|
at forge.game.phase.PhaseHandler.mainGameLoop(PhaseHandler.java:1035)
|
||||||
|
at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:1029)
|
||||||
|
at forge.game.GameAction.startGame(GameAction.java:2373)
|
||||||
|
at forge.game.Match.startGame(Match.java:92)
|
||||||
|
at forge.game.Match.startGame(Match.java:77)
|
||||||
|
at forge.view.SimulateMatch.lambda$simulateSingleMatch$0(SimulateMatch.java:213)
|
||||||
|
at forge.view.TimeLimitedCodeBlock.lambda$runWithTimeout$0(TimeLimitedCodeBlock.java:18)
|
||||||
|
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:330)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
|
||||||
|
at java.base/java.lang.Thread.run(Thread.java:1516)
|
||||||
|
Caused by: java.lang.NullPointerException: Cannot invoke "Object.getClass()" because "key" is null
|
||||||
|
at java.base/java.util.EnumMap.typeCheck(EnumMap.java:740)
|
||||||
|
at java.base/java.util.EnumMap.put(EnumMap.java:268)
|
||||||
|
at java.base/java.util.EnumMap.put(EnumMap.java:81)
|
||||||
|
at forge.ai.SpellApiToAi.get(SpellApiToAi.java:235)
|
||||||
|
at forge.ai.ability.CopySpellAbilityAi.checkApiLogic(CopySpellAbilityAi.java:76)
|
||||||
|
at forge.ai.SpellAbilityAi.canPlayWithoutRestrict(SpellAbilityAi.java:98)
|
||||||
|
at forge.ai.SpellAbilityAi.canPlay(SpellAbilityAi.java:76)
|
||||||
|
at forge.ai.SpellAbilityAi.canPlayWithSubs(SpellAbilityAi.java:55)
|
||||||
|
at forge.ai.AiController.canPlaySa(AiController.java:909)
|
||||||
|
at forge.ai.AiController.canPlayAndPayForFace(AiController.java:855)
|
||||||
|
at forge.ai.AiController.canPlayAndPayFor(AiController.java:833)
|
||||||
|
at forge.ai.AiController.lambda$chooseSpellAbilityToPlayFromList$9(AiController.java:1675)
|
||||||
|
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:330)
|
||||||
|
... 1 more
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Game Outcome: Turn 23
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has lost because life total reached 0
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 1 Ai(2)-Faceless Menace [C19] [2019]: 2 Ai(3)-Merciless Rage [C19] [2019]: 4 Ai(4)-Arcane Maelstrom [C20] [2020]: 1
|
||||||
|
|
||||||
|
Game Result: Game 8 ended in 19414 ms. Ai(3)-Merciless Rage [C19] [2019] has won!
|
||||||
|
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of chooseSinglePlayer is used by Jace, Architect of Thought for forge.ai.ability.TwoPilesAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
No AI assigned for API: null
|
||||||
|
java.util.concurrent.ExecutionException: java.lang.NullPointerException
|
||||||
|
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:124)
|
||||||
|
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:207)
|
||||||
|
at forge.ai.AiController.chooseSpellAbilityToPlayFromList(AiController.java:1696)
|
||||||
|
at forge.ai.AiController.getSpellAbilityToPlay(AiController.java:1583)
|
||||||
|
at forge.ai.AiController.chooseSpellAbilityToPlay(AiController.java:1403)
|
||||||
|
at forge.ai.PlayerControllerAi.chooseSpellAbilityToPlay(PlayerControllerAi.java:832)
|
||||||
|
at forge.game.phase.PhaseHandler.mainLoopStep(PhaseHandler.java:1056)
|
||||||
|
at forge.game.phase.PhaseHandler.mainGameLoop(PhaseHandler.java:1035)
|
||||||
|
at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:1029)
|
||||||
|
at forge.game.GameAction.startGame(GameAction.java:2373)
|
||||||
|
at forge.game.Match.startGame(Match.java:92)
|
||||||
|
at forge.game.Match.startGame(Match.java:77)
|
||||||
|
at forge.view.SimulateMatch.lambda$simulateSingleMatch$0(SimulateMatch.java:213)
|
||||||
|
at forge.view.TimeLimitedCodeBlock.lambda$runWithTimeout$0(TimeLimitedCodeBlock.java:18)
|
||||||
|
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:330)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
|
||||||
|
at java.base/java.lang.Thread.run(Thread.java:1516)
|
||||||
|
Caused by: java.lang.NullPointerException
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
No AI assigned for API: null
|
||||||
|
java.util.concurrent.ExecutionException: java.lang.NullPointerException
|
||||||
|
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:124)
|
||||||
|
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:207)
|
||||||
|
at forge.ai.AiController.chooseSpellAbilityToPlayFromList(AiController.java:1696)
|
||||||
|
at forge.ai.AiController.getSpellAbilityToPlay(AiController.java:1583)
|
||||||
|
at forge.ai.AiController.chooseSpellAbilityToPlay(AiController.java:1403)
|
||||||
|
at forge.ai.PlayerControllerAi.chooseSpellAbilityToPlay(PlayerControllerAi.java:832)
|
||||||
|
at forge.game.phase.PhaseHandler.mainLoopStep(PhaseHandler.java:1056)
|
||||||
|
at forge.game.phase.PhaseHandler.mainGameLoop(PhaseHandler.java:1035)
|
||||||
|
at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:1029)
|
||||||
|
at forge.game.GameAction.startGame(GameAction.java:2373)
|
||||||
|
at forge.game.Match.startGame(Match.java:92)
|
||||||
|
at forge.game.Match.startGame(Match.java:77)
|
||||||
|
at forge.view.SimulateMatch.lambda$simulateSingleMatch$0(SimulateMatch.java:213)
|
||||||
|
at forge.view.TimeLimitedCodeBlock.lambda$runWithTimeout$0(TimeLimitedCodeBlock.java:18)
|
||||||
|
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:330)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
|
||||||
|
at java.base/java.lang.Thread.run(Thread.java:1516)
|
||||||
|
Caused by: java.lang.NullPointerException
|
||||||
|
No AI assigned for API: null
|
||||||
|
java.util.concurrent.ExecutionException: java.lang.NullPointerException
|
||||||
|
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:124)
|
||||||
|
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:207)
|
||||||
|
at forge.ai.AiController.chooseSpellAbilityToPlayFromList(AiController.java:1696)
|
||||||
|
at forge.ai.AiController.getSpellAbilityToPlay(AiController.java:1583)
|
||||||
|
at forge.ai.AiController.chooseSpellAbilityToPlay(AiController.java:1403)
|
||||||
|
at forge.ai.PlayerControllerAi.chooseSpellAbilityToPlay(PlayerControllerAi.java:832)
|
||||||
|
at forge.game.phase.PhaseHandler.mainLoopStep(PhaseHandler.java:1056)
|
||||||
|
at forge.game.phase.PhaseHandler.mainGameLoop(PhaseHandler.java:1035)
|
||||||
|
at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:1029)
|
||||||
|
at forge.game.GameAction.startGame(GameAction.java:2373)
|
||||||
|
at forge.game.Match.startGame(Match.java:92)
|
||||||
|
at forge.game.Match.startGame(Match.java:77)
|
||||||
|
at forge.view.SimulateMatch.lambda$simulateSingleMatch$0(SimulateMatch.java:213)
|
||||||
|
at forge.view.TimeLimitedCodeBlock.lambda$runWithTimeout$0(TimeLimitedCodeBlock.java:18)
|
||||||
|
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:330)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
|
||||||
|
at java.base/java.lang.Thread.run(Thread.java:1516)
|
||||||
|
Caused by: java.lang.NullPointerException
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Correcting zone for Pendant of Prosperity (133)
|
||||||
|
Game Outcome: Turn 26
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has lost because life total reached 0
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 1 Ai(2)-Faceless Menace [C19] [2019]: 3 Ai(3)-Merciless Rage [C19] [2019]: 4 Ai(4)-Arcane Maelstrom [C20] [2020]: 1
|
||||||
|
|
||||||
|
Game Result: Game 9 ended in 41602 ms. Ai(2)-Faceless Menace [C19] [2019] has won!
|
||||||
|
|
||||||
|
Game Outcome: Turn 23
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has lost because life total reached 0
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 1 Ai(2)-Faceless Menace [C19] [2019]: 4 Ai(3)-Merciless Rage [C19] [2019]: 4 Ai(4)-Arcane Maelstrom [C20] [2020]: 1
|
||||||
|
|
||||||
|
Game Result: Game 10 ended in 77465 ms. Ai(2)-Faceless Menace [C19] [2019] has won!
|
||||||
|
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of chooseSinglePlayer is used by Boneyard Parley for forge.ai.ability.TwoPilesAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Moving spell to Library
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of chooseSinglePlayer is used by Boneyard Parley for forge.ai.ability.TwoPilesAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Game Outcome: Turn 27
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has lost because life total reached 0
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 1 Ai(2)-Faceless Menace [C19] [2019]: 4 Ai(3)-Merciless Rage [C19] [2019]: 5 Ai(4)-Arcane Maelstrom [C20] [2020]: 1
|
||||||
|
|
||||||
|
Game Result: Game 11 ended in 26776 ms. Ai(3)-Merciless Rage [C19] [2019] has won!
|
||||||
|
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Correcting zone for Kalamax, the Stormsire (403)
|
||||||
|
Correcting zone for Kalamax, the Stormsire (403)
|
||||||
|
Warning: default (ie. inherited from base class) implementation of chooseSinglePlayer is used by Jace, Architect of Thought for forge.ai.ability.TwoPilesAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Game Outcome: Turn 23
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has won because all opponents have lost
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 1 Ai(2)-Faceless Menace [C19] [2019]: 4 Ai(3)-Merciless Rage [C19] [2019]: 5 Ai(4)-Arcane Maelstrom [C20] [2020]: 2
|
||||||
|
|
||||||
|
Game Result: Game 12 ended in 16887 ms. Ai(4)-Arcane Maelstrom [C20] [2020] has won!
|
||||||
|
|
||||||
|
Correcting zone for Humble Defector (18)
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Correcting zone for Solemn Simulacrum (322)
|
||||||
|
No AI assigned for API: null
|
||||||
|
java.util.concurrent.ExecutionException: java.lang.NullPointerException
|
||||||
|
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:124)
|
||||||
|
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:207)
|
||||||
|
at forge.ai.AiController.chooseSpellAbilityToPlayFromList(AiController.java:1696)
|
||||||
|
at forge.ai.AiController.getSpellAbilityToPlay(AiController.java:1583)
|
||||||
|
at forge.ai.AiController.chooseSpellAbilityToPlay(AiController.java:1403)
|
||||||
|
at forge.ai.PlayerControllerAi.chooseSpellAbilityToPlay(PlayerControllerAi.java:832)
|
||||||
|
at forge.game.phase.PhaseHandler.mainLoopStep(PhaseHandler.java:1056)
|
||||||
|
at forge.game.phase.PhaseHandler.mainGameLoop(PhaseHandler.java:1035)
|
||||||
|
at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:1029)
|
||||||
|
at forge.game.GameAction.startGame(GameAction.java:2373)
|
||||||
|
at forge.game.Match.startGame(Match.java:92)
|
||||||
|
at forge.game.Match.startGame(Match.java:77)
|
||||||
|
at forge.view.SimulateMatch.lambda$simulateSingleMatch$0(SimulateMatch.java:213)
|
||||||
|
at forge.view.TimeLimitedCodeBlock.lambda$runWithTimeout$0(TimeLimitedCodeBlock.java:18)
|
||||||
|
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:330)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
|
||||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
|
||||||
|
at java.base/java.lang.Thread.run(Thread.java:1516)
|
||||||
|
Caused by: java.lang.NullPointerException
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Game Outcome: Turn 27
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has won because all opponents have lost
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 1 Ai(2)-Faceless Menace [C19] [2019]: 4 Ai(3)-Merciless Rage [C19] [2019]: 5 Ai(4)-Arcane Maelstrom [C20] [2020]: 3
|
||||||
|
|
||||||
|
Game Result: Game 13 ended in 36025 ms. Ai(4)-Arcane Maelstrom [C20] [2020] has won!
|
||||||
|
|
||||||
|
Moving spell to Library
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Correcting zone for Humble Defector (18)
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Game Outcome: Turn 33
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has lost because life total reached 0
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 1 Ai(2)-Faceless Menace [C19] [2019]: 4 Ai(3)-Merciless Rage [C19] [2019]: 6 Ai(4)-Arcane Maelstrom [C20] [2020]: 3
|
||||||
|
|
||||||
|
Game Result: Game 14 ended in 50074 ms. Ai(3)-Merciless Rage [C19] [2019] has won!
|
||||||
|
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Game Outcome: Turn 21
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has lost because life total reached 0
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 2 Ai(2)-Faceless Menace [C19] [2019]: 4 Ai(3)-Merciless Rage [C19] [2019]: 6 Ai(4)-Arcane Maelstrom [C20] [2020]: 3
|
||||||
|
|
||||||
|
Game Result: Game 15 ended in 25103 ms. Ai(1)-Reaper King No More has won!
|
||||||
|
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Correcting zone for Skullclamp (3)
|
||||||
|
Correcting zone for Ash Barrens (144)
|
||||||
|
Correcting zone for Humble Defector (18)
|
||||||
|
Correcting zone for Humble Defector (18)
|
||||||
|
Game Outcome: Turn 28
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has lost because life total reached 0
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 3 Ai(2)-Faceless Menace [C19] [2019]: 4 Ai(3)-Merciless Rage [C19] [2019]: 6 Ai(4)-Arcane Maelstrom [C20] [2020]: 3
|
||||||
|
|
||||||
|
Game Result: Game 16 ended in 61150 ms. Ai(1)-Reaper King No More has won!
|
||||||
|
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Correcting zone for Deathmist Raptor (158)
|
||||||
|
Correcting zone for Deathmist Raptor (158)
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Game Outcome: Turn 35
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has won because all opponents have lost
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 3 Ai(2)-Faceless Menace [C19] [2019]: 4 Ai(3)-Merciless Rage [C19] [2019]: 6 Ai(4)-Arcane Maelstrom [C20] [2020]: 4
|
||||||
|
|
||||||
|
Game Result: Game 17 ended in 48858 ms. Ai(4)-Arcane Maelstrom [C20] [2020] has won!
|
||||||
|
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Game Outcome: Turn 24
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has lost because life total reached 0
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 3 Ai(2)-Faceless Menace [C19] [2019]: 4 Ai(3)-Merciless Rage [C19] [2019]: 7 Ai(4)-Arcane Maelstrom [C20] [2020]: 4
|
||||||
|
|
||||||
|
Game Result: Game 18 ended in 25471 ms. Ai(3)-Merciless Rage [C19] [2019] has won!
|
||||||
|
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of chooseSinglePlayer is used by Boneyard Parley for forge.ai.ability.TwoPilesAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Correcting zone for Sagu Mauler (164)
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Game Outcome: Turn 27
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has lost due to accumulation of 21 damage from generals
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has won because all opponents have lost
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 3 Ai(2)-Faceless Menace [C19] [2019]: 4 Ai(3)-Merciless Rage [C19] [2019]: 7 Ai(4)-Arcane Maelstrom [C20] [2020]: 5
|
||||||
|
|
||||||
|
Game Result: Game 19 ended in 32030 ms. Ai(4)-Arcane Maelstrom [C20] [2020] has won!
|
||||||
|
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Correcting zone for Humble Defector (18)
|
||||||
|
Correcting zone for Humble Defector (18)
|
||||||
|
Game Outcome: Turn 24
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has lost because life total reached 0
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 4 Ai(2)-Faceless Menace [C19] [2019]: 4 Ai(3)-Merciless Rage [C19] [2019]: 7 Ai(4)-Arcane Maelstrom [C20] [2020]: 5
|
||||||
|
|
||||||
|
Game Result: Game 20 ended in 24173 ms. Ai(1)-Reaper King No More has won!
|
||||||
|
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Correcting zone for Humble Defector (18)
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Correcting zone for Humble Defector (18)
|
||||||
|
Correcting zone for Humble Defector (18)
|
||||||
|
Correcting zone for Humble Defector (18)
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Comet Storm (307) - [Couldn't add to stack, failed to target] - Choose any target, then choose another target for each time this spell was kicked. CARDNAME deals X damage to each of them.[[Thousand Winds (172)]]
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of chooseSinglePlayer is used by Jace, Architect of Thought for forge.ai.ability.TwoPilesAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Correcting zone for Pendant of Prosperity (133)
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Game Outcome: Turn 30
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has lost because life total reached 0
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 5 Ai(2)-Faceless Menace [C19] [2019]: 4 Ai(3)-Merciless Rage [C19] [2019]: 7 Ai(4)-Arcane Maelstrom [C20] [2020]: 5
|
||||||
|
|
||||||
|
Game Result: Game 21 ended in 73454 ms. Ai(1)-Reaper King No More has won!
|
||||||
|
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Game Outcome: Turn 36
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has lost because life total reached 0
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 6 Ai(2)-Faceless Menace [C19] [2019]: 4 Ai(3)-Merciless Rage [C19] [2019]: 7 Ai(4)-Arcane Maelstrom [C20] [2020]: 5
|
||||||
|
|
||||||
|
Game Result: Game 22 ended in 53834 ms. Ai(1)-Reaper King No More has won!
|
||||||
|
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of chooseSinglePlayer is used by Jace, Architect of Thought for forge.ai.ability.TwoPilesAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Game Outcome: Turn 30
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has lost because life total reached 0
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 6 Ai(2)-Faceless Menace [C19] [2019]: 4 Ai(3)-Merciless Rage [C19] [2019]: 8 Ai(4)-Arcane Maelstrom [C20] [2020]: 5
|
||||||
|
|
||||||
|
Game Result: Game 23 ended in 71382 ms. Ai(3)-Merciless Rage [C19] [2019] has won!
|
||||||
|
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kadena, Slinking Sorcerer for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Kalamax, the Stormsire for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by Anje Falkenrath for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Correcting zone for Kadena, Slinking Sorcerer (201)
|
||||||
|
Correcting zone for Grave Scrabbler (297)
|
||||||
|
Correcting zone for Face-down card (H7)
|
||||||
|
Correcting zone for Face-down card (H8)
|
||||||
|
Warning: default (ie. inherited from base class) implementation of confirmAction is used by The Reaper, King No More for forge.ai.ability.PermanentCreatureAi. Consider declaring an overloaded method
|
||||||
|
Game Outcome: Turn 21
|
||||||
|
Game Outcome: Ai(1)-Reaper King No More has won because all opponents have lost
|
||||||
|
Game Outcome: Ai(2)-Faceless Menace [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(3)-Merciless Rage [C19] [2019] has lost because life total reached 0
|
||||||
|
Game Outcome: Ai(4)-Arcane Maelstrom [C20] [2020] has lost because life total reached 0
|
||||||
|
Match Result: Ai(1)-Reaper King No More: 7 Ai(2)-Faceless Menace [C19] [2019]: 4 Ai(3)-Merciless Rage [C19] [2019]: 8 Ai(4)-Arcane Maelstrom [C20] [2020]: 5
|
||||||
|
|
||||||
|
Game Result: Game 24 ended in 28748 ms. Ai(1)-Reaper King No More has won!
|
||||||
|
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
====================================================================
|
||||||
|
FORGE SIMULATION REPORT — 4-player Commander pod
|
||||||
|
====================================================================
|
||||||
|
games completed : 24 (requested 24) seed: 20260907
|
||||||
|
decklist : decks/no-mikaeus/decklist.txt (full 100 cards)
|
||||||
|
engine : Forge 2.0.14, full rules, AI vs AI
|
||||||
|
|
||||||
|
WIN RATE
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
our deck : 7/24 (29.2%) [random baseline in a 4-pod = 25%]
|
||||||
|
|
||||||
|
all players:
|
||||||
|
Merciless Rage [C19] [2019] 8 (33.3%) ##########
|
||||||
|
Reaper King No More 7 (29.2%) ######## <-- ours
|
||||||
|
Arcane Maelstrom [C20] [2020] 5 (20.8%) ######
|
||||||
|
Faceless Menace [C19] [2019] 4 (16.7%) #####
|
||||||
|
|
||||||
|
GAME LENGTH
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
turns median 27 min 21 max 36
|
||||||
|
seconds median 45 total 18.7 min
|
||||||
|
|
||||||
|
HOW OUR DECK LOST
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
15x life total reached 0
|
||||||
|
|
||||||
|
WHO BEAT US (winner, in games our deck lost)
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
6x Merciless Rage [C19] [2019]
|
||||||
|
5x Arcane Maelstrom [C20] [2020]
|
||||||
|
4x Faceless Menace [C19] [2019]
|
||||||
|
|
||||||
|
CAVEAT — READ THIS BEFORE TRUSTING THE WIN RATE
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
Forge's AI is heuristic and, by its own documentation, WEAK AT COMBO
|
||||||
|
decks. Ours is a combo/aristocrats deck, so the AI systematically
|
||||||
|
under-plays it: it will miss sac-loop lines a human would see.
|
||||||
|
Read this as a FLOOR on the deck's power, and as proof the deck
|
||||||
|
functions and its cards interact — not as a power rating.
|
||||||
|
Opponents are stock precons, which are roughly bracket 2.
|
||||||
|
|
||||||
|
====================================================================
|
||||||
|
decklist : decks/no-mikaeus/decklist.txt
|
||||||
|
full log : decks/no-mikaeus/sim/20260907T153709Z.log (every game, all Forge output)
|
||||||
|
raw data : decks/no-mikaeus/sim/20260907T153709Z.json
|
||||||
|
this report: decks/no-mikaeus/sim/20260907T153709Z.txt
|
||||||
|
====================================================================
|
||||||
21
decks/reaper-king-no-more/decks/opponent-facing/README.md
Normal file
21
decks/reaper-king-no-more/decks/opponent-facing/README.md
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
# opponent-facing
|
||||||
|
|
||||||
|
_generated 2026-09-07 23:37Z by `tools/variant.py`_
|
||||||
|
|
||||||
|
- **bracket 3: PASS** (two-card vacuum combos: 0)
|
||||||
|
- 86 lines in `decklist.txt`
|
||||||
|
|
||||||
|
## files
|
||||||
|
|
||||||
|
| file | what it is |
|
||||||
|
| --- | --- |
|
||||||
|
| `decklist.txt` | the deck, `N Card Name` per line |
|
||||||
|
| `bracket.txt` | bracket-3 + house-rule check |
|
||||||
|
| `combos.txt` | combos in the deck, and one card away |
|
||||||
|
| `sim/` | Forge runs — `.log` raw, `.txt` report, `.json` data |
|
||||||
|
| `card_stats.txt` | per-card cast rate, avg round, win% (newest sim) |
|
||||||
|
|
||||||
|
## simulation runs
|
||||||
|
|
||||||
|
_none yet — run with `--sim 24`_
|
||||||
|
|
||||||
24
decks/reaper-king-no-more/decks/opponent-facing/bracket.txt
Normal file
24
decks/reaper-king-no-more/decks/opponent-facing/bracket.txt
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
COMMANDER: The Reaper, King No More
|
||||||
|
DECK SIZE: 99 + 1 commander = 100
|
||||||
|
|
||||||
|
GAME CHANGERS: 0/3 OK
|
||||||
|
|
||||||
|
MASS LAND DENIAL: 0 OK
|
||||||
|
|
||||||
|
EXTRA TURNS: 0 OK
|
||||||
|
|
||||||
|
TWO-CARD INFINITE COMBOS IN A VACUUM: 0 OK
|
||||||
|
|
||||||
|
two-card combos needing board state (ALLOWED, 3):
|
||||||
|
- Blowfly Infestation + Flourishing Defenses
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Nest of Scarabs
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
|
||||||
|
==========================================================
|
||||||
|
BRACKET 3: PASS
|
||||||
78
decks/reaper-king-no-more/decks/opponent-facing/combos.txt
Normal file
78
decks/reaper-king-no-more/decks/opponent-facing/combos.txt
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
==================================================================
|
||||||
|
COMBOS ALREADY IN THE DECK: 9
|
||||||
|
==================================================================
|
||||||
|
[E] Blowfly Infestation + Flourishing Defenses
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Nest of Scarabs
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Yawgmoth, Thran Physician + Nest of Scarabs + Blood Artist
|
||||||
|
-> Near-infinite -1/-1 counters
|
||||||
|
-> Near-infinite card draw
|
||||||
|
-> Near-infinite death triggers
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: There is at least one other creature on the battlefield.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Blood Artist
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Zulaport Cutthroat
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Viscera Seer
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Ashnod's Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colorless mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Phyrexian Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colored mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
|
||||||
|
==================================================================
|
||||||
|
ONE CARD AWAY: 287 combos, 88 distinct cards
|
||||||
|
==================================================================
|
||||||
|
15 combos Mikaeus, the Unhallowed {3}{B}{B}{B} #1306
|
||||||
|
10 combos First Day of Class {1}{R} #10147
|
||||||
|
8 combos Veinwitch Coven {2}{B} #4179
|
||||||
|
8 combos Host of the Hereafter {2}{B}{G} #7758
|
||||||
|
7 combos Rhythm of the Wild {1}{R}{G} #216
|
||||||
|
7 combos Grumgully, the Generous {1}{R}{G} #4341
|
||||||
|
7 combos Scurry Oak {2}{G} #2259
|
||||||
|
6 combos Thran Vigil {1}{B} #6285
|
||||||
|
6 combos Rocksteady, Mutant Marauder {2}{G} #10233
|
||||||
|
6 combos Support Mission {2}{G} #31928
|
||||||
|
6 combos Captain Kathryn Janeway {3}{G} #26133
|
||||||
|
6 combos Surrak and Goreclaw {4}{G}{G} #1600
|
||||||
|
6 combos Warden of the Grove {2}{G} #2262
|
||||||
|
6 combos Railway Brawler {3}{G}{G} #2493
|
||||||
|
6 combos Uncivil Unrest {4}{R} #2947
|
||||||
|
|
||||||
|
decklist: /home/markdoeswork/mtg/reaper-king-no-more/decks/opponent-facing/decklist.txt | source: data/variants.json (108,535 combos)
|
||||||
95
decks/reaper-king-no-more/decks/opponent-facing/decklist.txt
Normal file
95
decks/reaper-king-no-more/decks/opponent-facing/decklist.txt
Normal file
|
|
@ -0,0 +1,95 @@
|
||||||
|
# opponent-facing
|
||||||
|
# The commander only steals from OPPONENTS' creatures. Maximise cards that trigger on their deaths and put counters on their board.
|
||||||
|
|
||||||
|
# generated by tools/generate.py from decks/no-mikaeus
|
||||||
|
# roles: {'opp_death': 5, 'removal_spot': 2, 'sac_outlet': -3, 'ramp': -2, 'minus_engine': -2}
|
||||||
|
|
||||||
|
# Commander
|
||||||
|
1 The Reaper, King No More
|
||||||
|
|
||||||
|
# Main
|
||||||
|
1 Archfiend of Ifnir
|
||||||
|
1 Ashnod's Altar
|
||||||
|
1 Assassin's Trophy
|
||||||
|
1 Bastion of Remembrance
|
||||||
|
1 Beast Within
|
||||||
|
1 Bedevil
|
||||||
|
1 Birds of Paradise
|
||||||
|
1 Black Sun's Zenith
|
||||||
|
1 Blackcleave Cliffs
|
||||||
|
1 Blood Artist
|
||||||
|
1 Blood Crypt
|
||||||
|
1 Bloodchief Ascension
|
||||||
|
1 Bloodfell Caves
|
||||||
|
1 Blooming Marsh
|
||||||
|
1 Blowfly Infestation
|
||||||
|
1 Bojuka Bog
|
||||||
|
1 Carrion Feeder
|
||||||
|
1 Castle Locthwain
|
||||||
|
1 Cauldron of Souls
|
||||||
|
1 Chaos Warp
|
||||||
|
1 Command Tower
|
||||||
|
1 Contagion Clasp
|
||||||
|
1 Copperline Gorge
|
||||||
|
1 Cultivate
|
||||||
|
1 Damnation
|
||||||
|
1 Deadly Dispute
|
||||||
|
1 Deadly Rollick
|
||||||
|
1 Exotic Orchard
|
||||||
|
1 Farseek
|
||||||
|
1 Feed the Swarm
|
||||||
|
1 Flourishing Defenses
|
||||||
|
1 Goblin Bombardment
|
||||||
|
1 Grim Haruspex
|
||||||
|
1 Hapatra, Vizier of Poisons
|
||||||
|
1 Humble Defector
|
||||||
|
1 Jungle Hollow
|
||||||
|
1 Karplusan Forest
|
||||||
|
1 Kodama's Reach
|
||||||
|
1 Llanowar Wastes
|
||||||
|
1 Mari, the Killing Quill
|
||||||
|
1 Massacre Girl, Known Killer
|
||||||
|
1 Massacre Wurm
|
||||||
|
1 Mayhem Devil
|
||||||
|
1 Mazirek, Kraul Death Priest
|
||||||
|
1 Midnight Reaper
|
||||||
|
1 Mirkwood Bats
|
||||||
|
1 Murderous Redcap
|
||||||
|
1 Nature's Lore
|
||||||
|
1 Necroskitter
|
||||||
|
1 Nest of Scarabs
|
||||||
|
1 Overgrown Tomb
|
||||||
|
1 Overseer of the Damned
|
||||||
|
1 Path of Ancestry
|
||||||
|
1 Persistent Constrictor
|
||||||
|
1 Phyrexian Altar
|
||||||
|
1 Plague Belcher
|
||||||
|
1 Poison-Tip Archer
|
||||||
|
1 Putrid Goblin
|
||||||
|
1 Rampant Growth
|
||||||
|
1 Revel in Riches
|
||||||
|
1 Rugged Highlands
|
||||||
|
1 Sakura-Tribe Elder
|
||||||
|
1 Sangromancer
|
||||||
|
1 Savage Lands
|
||||||
|
1 Skullclamp
|
||||||
|
1 Spiteful Banditry
|
||||||
|
1 Springbloom Druid
|
||||||
|
1 Stomping Ground
|
||||||
|
1 Syr Konrad, the Grim
|
||||||
|
1 Terminate
|
||||||
|
1 The Meathook Massacre
|
||||||
|
1 Three Visits
|
||||||
|
1 Toxic Deluge
|
||||||
|
1 Vandalblast
|
||||||
|
1 Vengeful Bloodwitch
|
||||||
|
1 Village Rites
|
||||||
|
1 Viscera Seer
|
||||||
|
1 Wood Elves
|
||||||
|
1 Yavimaya, Cradle of Growth
|
||||||
|
1 Yawgmoth, Thran Physician
|
||||||
|
1 Ziatora's Proving Ground
|
||||||
|
1 Zulaport Cutthroat
|
||||||
|
8 Swamp
|
||||||
|
5 Forest
|
||||||
|
4 Mountain
|
||||||
21
decks/reaper-king-no-more/decks/proliferate/README.md
Normal file
21
decks/reaper-king-no-more/decks/proliferate/README.md
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
# proliferate
|
||||||
|
|
||||||
|
_generated 2026-09-07 23:38Z by `tools/variant.py`_
|
||||||
|
|
||||||
|
- **bracket 3: PASS** (two-card vacuum combos: 0)
|
||||||
|
- 86 lines in `decklist.txt`
|
||||||
|
|
||||||
|
## files
|
||||||
|
|
||||||
|
| file | what it is |
|
||||||
|
| --- | --- |
|
||||||
|
| `decklist.txt` | the deck, `N Card Name` per line |
|
||||||
|
| `bracket.txt` | bracket-3 + house-rule check |
|
||||||
|
| `combos.txt` | combos in the deck, and one card away |
|
||||||
|
| `sim/` | Forge runs — `.log` raw, `.txt` report, `.json` data |
|
||||||
|
| `card_stats.txt` | per-card cast rate, avg round, win% (newest sim) |
|
||||||
|
|
||||||
|
## simulation runs
|
||||||
|
|
||||||
|
_none yet — run with `--sim 24`_
|
||||||
|
|
||||||
24
decks/reaper-king-no-more/decks/proliferate/bracket.txt
Normal file
24
decks/reaper-king-no-more/decks/proliferate/bracket.txt
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
COMMANDER: The Reaper, King No More
|
||||||
|
DECK SIZE: 99 + 1 commander = 100
|
||||||
|
|
||||||
|
GAME CHANGERS: 0/3 OK
|
||||||
|
|
||||||
|
MASS LAND DENIAL: 0 OK
|
||||||
|
|
||||||
|
EXTRA TURNS: 0 OK
|
||||||
|
|
||||||
|
TWO-CARD INFINITE COMBOS IN A VACUUM: 0 OK
|
||||||
|
|
||||||
|
two-card combos needing board state (ALLOWED, 3):
|
||||||
|
- Blowfly Infestation + Flourishing Defenses
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Nest of Scarabs
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
- Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
|
||||||
|
==========================================================
|
||||||
|
BRACKET 3: PASS
|
||||||
85
decks/reaper-king-no-more/decks/proliferate/combos.txt
Normal file
85
decks/reaper-king-no-more/decks/proliferate/combos.txt
Normal file
|
|
@ -0,0 +1,85 @@
|
||||||
|
==================================================================
|
||||||
|
COMBOS ALREADY IN THE DECK: 10
|
||||||
|
==================================================================
|
||||||
|
[E] Blowfly Infestation + Flourishing Defenses
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Nest of Scarabs
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to 1.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[E] Blowfly Infestation + Hapatra, Vizier of Poisons
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
-> Infinite creature LTB
|
||||||
|
requires: You control at least two other creatures with toughness equal to one.
|
||||||
|
requires: You have a way to put a -1/-1 counter on a creature.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Obelisk Spider
|
||||||
|
-> Near-infinite lifeloss
|
||||||
|
-> Near-infinite lifegain triggers
|
||||||
|
-> Near-infinite creature ETB
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[E] Yawgmoth, Thran Physician + Nest of Scarabs + Blood Artist
|
||||||
|
-> Near-infinite -1/-1 counters
|
||||||
|
-> Near-infinite card draw
|
||||||
|
-> Near-infinite death triggers
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: There is at least one other creature on the battlefield.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Blood Artist
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[S] Hapatra, Vizier of Poisons + Yawgmoth, Thran Physician + Zulaport Cutthroat
|
||||||
|
-> Destroy all creatures opponents control
|
||||||
|
-> Destroy each creature that enters the battlefield under an opponent's control
|
||||||
|
-> Infinite -1/-1 counters
|
||||||
|
requires: You control at least one additional creature.
|
||||||
|
requires: Your life total is at least 2.
|
||||||
|
requires: An opponent controls a creature.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Viscera Seer
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite death triggers
|
||||||
|
-> Infinite creature ETB
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Ashnod's Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colorless mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
[E] Mazirek, Kraul Death Priest + Putrid Goblin + Phyrexian Altar
|
||||||
|
-> Infinite +1/+1 counters on most creatures you control
|
||||||
|
-> Infinite colored mana
|
||||||
|
-> Infinite death triggers
|
||||||
|
requires: Putrid Goblin does not have a -1/-1 counter on it.
|
||||||
|
|
||||||
|
==================================================================
|
||||||
|
ONE CARD AWAY: 293 combos, 92 distinct cards
|
||||||
|
==================================================================
|
||||||
|
20 combos Mikaeus, the Unhallowed {3}{B}{B}{B} #1306
|
||||||
|
10 combos First Day of Class {1}{R} #10147
|
||||||
|
8 combos Veinwitch Coven {2}{B} #4179
|
||||||
|
8 combos Host of the Hereafter {2}{B}{G} #7758
|
||||||
|
7 combos Rhythm of the Wild {1}{R}{G} #216
|
||||||
|
7 combos Grumgully, the Generous {1}{R}{G} #4341
|
||||||
|
7 combos Scurry Oak {2}{G} #2259
|
||||||
|
6 combos Thran Vigil {1}{B} #6285
|
||||||
|
6 combos Rocksteady, Mutant Marauder {2}{G} #10233
|
||||||
|
6 combos Support Mission {2}{G} #31928
|
||||||
|
6 combos Captain Kathryn Janeway {3}{G} #26133
|
||||||
|
6 combos Surrak and Goreclaw {4}{G}{G} #1600
|
||||||
|
6 combos Warden of the Grove {2}{G} #2262
|
||||||
|
6 combos Railway Brawler {3}{G}{G} #2493
|
||||||
|
6 combos Uncivil Unrest {4}{R} #2947
|
||||||
|
|
||||||
|
decklist: /home/markdoeswork/mtg/reaper-king-no-more/decks/proliferate/decklist.txt | source: data/variants.json (108,535 combos)
|
||||||
95
decks/reaper-king-no-more/decks/proliferate/decklist.txt
Normal file
95
decks/reaper-king-no-more/decks/proliferate/decklist.txt
Normal file
|
|
@ -0,0 +1,95 @@
|
||||||
|
# proliferate
|
||||||
|
# Proliferate multiplies -1/-1 counters, turning one trigger into many. A different engine for the same theme.
|
||||||
|
|
||||||
|
# generated by tools/generate.py from decks/no-mikaeus
|
||||||
|
# roles: {'proliferate': 5, 'minus_engine': 1, 'ramp': -3, 'sac_outlet': -3}
|
||||||
|
|
||||||
|
# Commander
|
||||||
|
1 The Reaper, King No More
|
||||||
|
|
||||||
|
# Main
|
||||||
|
1 Archfiend of Ifnir
|
||||||
|
1 Ashnod's Altar
|
||||||
|
1 Assassin's Trophy
|
||||||
|
1 Bastion of Remembrance
|
||||||
|
1 Beast Within
|
||||||
|
1 Bedevil
|
||||||
|
1 Birds of Paradise
|
||||||
|
1 Black Sun's Zenith
|
||||||
|
1 Blackcleave Cliffs
|
||||||
|
1 Blood Artist
|
||||||
|
1 Blood Crypt
|
||||||
|
1 Bloodfell Caves
|
||||||
|
1 Blooming Marsh
|
||||||
|
1 Blowfly Infestation
|
||||||
|
1 Bojuka Bog
|
||||||
|
1 Bristly Bill, Spine Sower
|
||||||
|
1 Carrion Feeder
|
||||||
|
1 Castle Locthwain
|
||||||
|
1 Cauldron of Souls
|
||||||
|
1 Chaos Warp
|
||||||
|
1 Command Tower
|
||||||
|
1 Contagion Clasp
|
||||||
|
1 Copperline Gorge
|
||||||
|
1 Cultivate
|
||||||
|
1 Damnation
|
||||||
|
1 Evolution Sage
|
||||||
|
1 Exotic Orchard
|
||||||
|
1 Farseek
|
||||||
|
1 Flourishing Defenses
|
||||||
|
1 Goblin Bombardment
|
||||||
|
1 Grim Haruspex
|
||||||
|
1 Grim Poppet
|
||||||
|
1 Hapatra, Vizier of Poisons
|
||||||
|
1 Humble Defector
|
||||||
|
1 Jungle Hollow
|
||||||
|
1 Kalonian Hydra
|
||||||
|
1 Karplusan Forest
|
||||||
|
1 Kodama's Reach
|
||||||
|
1 Llanowar Wastes
|
||||||
|
1 Massacre Girl, Known Killer
|
||||||
|
1 Massacre Wurm
|
||||||
|
1 Mayhem Devil
|
||||||
|
1 Mazirek, Kraul Death Priest
|
||||||
|
1 Midnight Reaper
|
||||||
|
1 Mirkwood Bats
|
||||||
|
1 Murderous Redcap
|
||||||
|
1 Nature's Lore
|
||||||
|
1 Necroskitter
|
||||||
|
1 Nest of Scarabs
|
||||||
|
1 Obelisk Spider
|
||||||
|
1 Overgrown Tomb
|
||||||
|
1 Overseer of the Damned
|
||||||
|
1 Path of Ancestry
|
||||||
|
1 Persistent Constrictor
|
||||||
|
1 Phyrexian Altar
|
||||||
|
1 Plague Belcher
|
||||||
|
1 Poison-Tip Archer
|
||||||
|
1 Putrid Goblin
|
||||||
|
1 Rampant Growth
|
||||||
|
1 Rugged Highlands
|
||||||
|
1 Sakura-Tribe Elder
|
||||||
|
1 Savage Lands
|
||||||
|
1 Skullclamp
|
||||||
|
1 Springbloom Druid
|
||||||
|
1 Staff of Compleation
|
||||||
|
1 Stomping Ground
|
||||||
|
1 Syr Konrad, the Grim
|
||||||
|
1 Terminate
|
||||||
|
1 The Meathook Massacre
|
||||||
|
1 Three Visits
|
||||||
|
1 Toxic Deluge
|
||||||
|
1 Triumph of the Hordes
|
||||||
|
1 Vandalblast
|
||||||
|
1 Vengeful Bloodwitch
|
||||||
|
1 Village Rites
|
||||||
|
1 Viscera Seer
|
||||||
|
1 Vraska, Betrayal's Sting
|
||||||
|
1 Wood Elves
|
||||||
|
1 Yavimaya, Cradle of Growth
|
||||||
|
1 Yawgmoth, Thran Physician
|
||||||
|
1 Ziatora's Proving Ground
|
||||||
|
1 Zulaport Cutthroat
|
||||||
|
8 Swamp
|
||||||
|
5 Forest
|
||||||
|
4 Mountain
|
||||||
39
decks/reaper-king-no-more/forge-overrides/ai/Combo.ai
Normal file
39
decks/reaper-king-no-more/forge-overrides/ai/Combo.ai
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Combo.ai -- an AI profile for piloting an aristocrats / sacrifice deck.
|
||||||
|
#
|
||||||
|
# Sparse by design: AiProfileUtil falls back to AiProps defaults for any key not
|
||||||
|
# listed, so this file contains ONLY deliberate deviations from Default.ai. Each
|
||||||
|
# one has a mechanistic reason -- a change a competent human pilot would obviously
|
||||||
|
# also make. Changes that only move win rate without such a story are overfitting
|
||||||
|
# to Forge's evaluation function and are NOT included.
|
||||||
|
#
|
||||||
|
# Use for OUR seat only (-a Combo Default Default Default). Tuning opponents too
|
||||||
|
# would just shift the baseline and teach us nothing.
|
||||||
|
|
||||||
|
# --- Sacrifice: the core of the archetype -------------------------------------
|
||||||
|
# Default ships ENABLE=false, which disables the GENERIC sacrifice fallback: any
|
||||||
|
# sac outlet lacking a card-specific `AIPreference:SacCost` hint is then simply
|
||||||
|
# never fed. For a deck built on sacrificing creatures this is fatal.
|
||||||
|
SACRIFICE_DEFAULT_PREF_ENABLE=true
|
||||||
|
SACRIFICE_DEFAULT_PREF_MIN_CMC=0
|
||||||
|
# Default 2 -- covers everything in the deck, not just cheap creatures.
|
||||||
|
SACRIFICE_DEFAULT_PREF_MAX_CMC=6
|
||||||
|
SACRIFICE_DEFAULT_PREF_ALLOW_TOKENS=true
|
||||||
|
# Default 135 is roughly a vanilla 1/2: anything better than a token was ineligible
|
||||||
|
# as fodder. 400 lets the AI feed real creatures to Yawgmoth and Carrion Feeder,
|
||||||
|
# which is the entire point of the deck.
|
||||||
|
SACRIFICE_DEFAULT_PREF_MAX_CREATURE_EVAL=400
|
||||||
|
|
||||||
|
# --- Tokens are fuel ----------------------------------------------------------
|
||||||
|
# Token bodies are sac fodder here, not board presence. Always make them.
|
||||||
|
TOKEN_GENERATION_ABILITY_CHANCE=100
|
||||||
|
|
||||||
|
# --- Trading is upside, not a cost -------------------------------------------
|
||||||
|
# A normal deck avoids trades; an aristocrats deck WANTS its creatures to die,
|
||||||
|
# because dying is what triggers the payoffs. Default is 0.
|
||||||
|
CHANCE_TO_ATTACK_INTO_TRADE=60
|
||||||
|
ATTACK_INTO_TRADE_WHEN_TAPPED_OUT=true
|
||||||
|
RANDOMLY_ATKTRADE_ONLY_ON_LOWER_LIFE_PRESSURE=false
|
||||||
|
|
||||||
|
# --- Don't hoard mana for combat tricks we don't run --------------------------
|
||||||
|
# Default 100 holds mana for Main 2. This deck would rather deploy the engine.
|
||||||
|
RESERVE_MANA_FOR_MAIN2_CHANCE=0
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
# OVERRIDE of Forge's stock script. Changes vs stock:
|
||||||
|
# 1. removed `AI:RemoveDeck:All`
|
||||||
|
# 2. added `SVar:AIPreference:SacCost$Creature.Other` so the AI knows what to feed it
|
||||||
|
#
|
||||||
|
# HIGHER RISK than the Viscera Seer override, and tested separately for that reason.
|
||||||
|
# Blasting Station and Barrage of Expendables are functionally identical free sac-damage
|
||||||
|
# outlets and are ALSO `AI:RemoveDeck:All` -- the flag is systematic across this whole
|
||||||
|
# card class, which suggests Forge genuinely mis-values repeatable sac-for-damage.
|
||||||
|
# Watch for the AI sacrificing its own board to ping a player for 1: check our creature
|
||||||
|
# count and game length in the A/B before trusting this one.
|
||||||
|
Name:Goblin Bombardment
|
||||||
|
ManaCost:1 R
|
||||||
|
Types:Enchantment
|
||||||
|
A:AB$ DealDamage | Cost$ Sac<1/Creature.Other/another creature> | ValidTgts$ Any | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target.
|
||||||
|
SVar:AIPreference:SacCost$Creature.Other
|
||||||
|
DeckHas:Ability$Sacrifice
|
||||||
|
Oracle:Sacrifice a creature: Goblin Bombardment deals 1 damage to any target.
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
# OVERRIDE of Forge's stock script. Changes vs stock:
|
||||||
|
# 1. removed `AI:RemoveDeck:All` -- stock Forge is forbidden from ever playing this
|
||||||
|
# 2. added `AILogic$ AtOppEOT` -- copied from Woe Strider (w/woe_strider.txt), which
|
||||||
|
# has the IDENTICAL "AB$ Scry | Cost$ Sac<1/Creature>" ability and is NOT blocked.
|
||||||
|
# That card is the proof this pattern is pilotable by the AI.
|
||||||
|
# 3. added `SVar:AIPreference:SacCost$Creature.Other` -- tells the AI WHAT to feed it
|
||||||
|
# (pattern from c/carrion_feeder.txt, which works today)
|
||||||
|
# 4. restricted the sac cost to `Creature.Other`
|
||||||
|
#
|
||||||
|
# RULES DEVIATION (deliberate, documented): stock Viscera Seer can sacrifice ITSELF.
|
||||||
|
# This override cannot. Woe Strider is likewise `.Other`. Allowing self-sacrifice
|
||||||
|
# risks the AI eating its own outlet. The deviation is small but it IS a deviation --
|
||||||
|
# per-card results for Viscera Seer are correspondingly less exact.
|
||||||
|
Name:Viscera Seer
|
||||||
|
ManaCost:B
|
||||||
|
Types:Creature Vampire Wizard
|
||||||
|
PT:1/1
|
||||||
|
A:AB$ Scry | Cost$ Sac<1/Creature.Other/another creature> | ScryNum$ 1 | AILogic$ AtOppEOT | SpellDescription$ Scry 1. (Look at the top card of your library. You may put that card on the bottom.)
|
||||||
|
SVar:AIPreference:SacCost$Creature.Other
|
||||||
|
DeckHas:Ability$Sacrifice
|
||||||
|
Oracle:Sacrifice a creature: Scry 1. (Look at the top card of your library. You may put that card on the bottom.)
|
||||||
520
decks/reaper-king-no-more/plan.md
Normal file
520
decks/reaper-king-no-more/plan.md
Normal file
|
|
@ -0,0 +1,520 @@
|
||||||
|
# Plan: The Reaper, King No More — Bracket 3
|
||||||
|
|
||||||
|
How to use AI + local tooling to find cards, test them, and simulate the deck
|
||||||
|
entirely on this machine.
|
||||||
|
|
||||||
|
## 0. Read this first: the commander's actual text
|
||||||
|
|
||||||
|
Scryfall oracle text (verified 2026-09-07):
|
||||||
|
|
||||||
|
> **The Reaper, King No More** — {2/B}{2/R}{2/G}
|
||||||
|
> Legendary Artifact Creature — Scarecrow
|
||||||
|
> When The Reaper enters, put a -1/-1 counter on each of up to two target creatures.
|
||||||
|
> Whenever a creature an opponent controls with a -1/-1 counter on it dies, you may
|
||||||
|
> put that card onto the battlefield under your control. **Do this only once each turn.**
|
||||||
|
|
||||||
|
Three consequences that shape the whole build, and one correction to the README:
|
||||||
|
|
||||||
|
1. **Color identity is Jund (B/R/G)**, and the hybrid {2/X} cost means it can be
|
||||||
|
cast off any 6 lands — it is castable in any deck, but our identity is BRG.
|
||||||
|
2. **"Do this only once each turn" hard-caps the commander as a combo engine.**
|
||||||
|
An infinite -1/-1 loop does *not* produce infinite steals off The Reaper. The
|
||||||
|
loop's payoff has to come from somewhere else (a sac outlet + drain, Nest of
|
||||||
|
Scarabs tokens, Blood Artist-style drains).
|
||||||
|
3. **The steal trigger only reads creatures an _opponent_ controls.** So the deck
|
||||||
|
wants ways to spread -1/-1 counters onto *their* board, not just ours. This is a
|
||||||
|
real tension with the Hapatra/Blowfly engine, which mostly counters our own stuff.
|
||||||
|
|
||||||
|
The README's framing — "infinite combo with aristocrats ETB + -1/-1 synergy" — is
|
||||||
|
sound, but the commander is a *value/removal* engine, not the combo's payoff.
|
||||||
|
Build it as: aristocrats combo deck that happens to be in Jund, with The Reaper as a
|
||||||
|
repeatable one-per-turn removal-plus-theft engine on top.
|
||||||
|
|
||||||
|
## 1. Bracket 3 constraints (the guardrails every tool must enforce)
|
||||||
|
|
||||||
|
From the official brackets article:
|
||||||
|
|
||||||
|
| Rule | Bracket 3 |
|
||||||
|
| --- | --- |
|
||||||
|
| Game Changers | **Up to 3** |
|
||||||
|
| Mass land denial | **None** |
|
||||||
|
| Extra turns | Sparse, no chaining/looping |
|
||||||
|
| Two-card infinite combos | **None that go off cheaply within ~the first 6 turns** |
|
||||||
|
| Tutors | Not explicitly limited (but keep them honest) |
|
||||||
|
|
||||||
|
The Game Changers list is 53 cards as of 2026-09-06 and is queryable on Scryfall as
|
||||||
|
`is:gamechanger` — so bracket legality is fully scriptable, no manual list to maintain.
|
||||||
|
|
||||||
|
**Our house rule, stricter and simpler than the official wording: no two-card
|
||||||
|
infinite combos that work in a vacuum.** If two cards go infinite with no third
|
||||||
|
enabler and no board state required, they're out. Two-card lines that need an
|
||||||
|
existing creature, a sac outlet, or a specific board are fine, as are 3+ card combos.
|
||||||
|
This is checkable directly against the offline combo DB by filtering `len(uses) == 2`.
|
||||||
|
**Good news for the README's plan: the Blowfly package passes this rule.** Checked
|
||||||
|
against the offline DB — both `Blowfly Infestation + Hapatra` and
|
||||||
|
`Blowfly Infestation + Nest of Scarabs` list identical `notablePrerequisites`:
|
||||||
|
|
||||||
|
> You control at least two other creatures with toughness equal to 1.
|
||||||
|
> You have a way to put a -1/-1 counter on a creature.
|
||||||
|
|
||||||
|
So they are two *named* cards but four moving parts, needing a real board and a third
|
||||||
|
enabler. That is a build-around engine, not a vacuum combo — exactly the kind of thing
|
||||||
|
bracket 3 is meant to allow. Keep the package. The rule to enforce instead: **don't
|
||||||
|
add tutors that assemble it**, and don't add a genuine 2-card-in-a-vacuum line
|
||||||
|
alongside it.
|
||||||
|
|
||||||
|
## 1b. The blacklist — cards I won't play
|
||||||
|
|
||||||
|
Separate from legality and separate from bracket rules: `blacklist.txt` holds cards
|
||||||
|
excluded **by preference**, each with a reason. Format is `Card Name | reason`.
|
||||||
|
|
||||||
|
```
|
||||||
|
Sol Ring | boycott, not a power-level call
|
||||||
|
Talisman of Indulgence | prefer land ramp
|
||||||
|
Arcane Signet | prefer land ramp
|
||||||
|
```
|
||||||
|
|
||||||
|
Two categories so far:
|
||||||
|
|
||||||
|
- **Boycott.** Sol Ring is out for personal reasons. No game-logic justification is
|
||||||
|
needed or implied, and the tooling should never argue about it.
|
||||||
|
- **Playstyle: ramp with lands, not rocks.** We're in green, so use it. All the
|
||||||
|
Talismans, Signet, Mind Stone, Fellwar Stone, Chromatic Lantern etc. are out. This
|
||||||
|
one *does* have a cost — see below.
|
||||||
|
|
||||||
|
This is wired into both halves of the toolchain, which is the point of keeping it in
|
||||||
|
one file:
|
||||||
|
|
||||||
|
1. `bracket_check.py` reports blacklisted cards **in their own section**, clearly
|
||||||
|
marked "personal preference, not a bracket rule", so they never get confused with
|
||||||
|
an actual bracket-3 violation.
|
||||||
|
2. `db.tagged()` filters them out of every search, so they don't get re-suggested
|
||||||
|
later. Verified: `db.tagged("mana-rock")` no longer returns Sol Ring.
|
||||||
|
|
||||||
|
**The honest tradeoff on cutting rocks:** land ramp is a turn slower and Sol Ring is
|
||||||
|
the single best accelerant in the format. The deck swapped 5 rocks for Rampant Growth,
|
||||||
|
Harrow, Wood Elves, Springbloom Druid, and Binding the Old Gods. Average MV went
|
||||||
|
2.92 → 3.02 and the deck is measurably slower out of the gate. Two things soften it:
|
||||||
|
Wood Elves and Springbloom Druid are *creatures*, so they feed the sacrifice theme
|
||||||
|
that rocks never would, and Binding the Old Gods is removal stapled to a fetch.
|
||||||
|
**Measured, so it's settled.** 20,000 games each, identical seed, the only change
|
||||||
|
being 5 rocks (incl. Sol Ring) swapped for the 5 land-ramp spells:
|
||||||
|
|
||||||
|
| build | commander by T6 | engine assembled | -1/-1 online | 3+ lands on T4 |
|
||||||
|
| --- | --- | --- | --- | --- |
|
||||||
|
| land ramp (current) | **46.9%** | **35.7%** | median T6 | 95.5% |
|
||||||
|
| rocks (blacklisted) | 54.8% | 34.6% | median T6 | 95.2% |
|
||||||
|
|
||||||
|
The cost is real but small: **~8 percentage points on casting the commander by T6**,
|
||||||
|
and essentially nothing everywhere else — engine assembly is actually a hair *better*
|
||||||
|
with land ramp, and the -1/-1 engine comes online on the same turn. Sol Ring costs
|
||||||
|
you a bit of explosiveness, not the deck's function. Blacklist stands, no regrets.
|
||||||
|
|
||||||
|
## 2. Tooling: what to install and what each thing is for
|
||||||
|
|
||||||
|
Everything runs locally. Local runtimes present: Python 3.13, Node 25, Java 26
|
||||||
|
(Forge targets 17 — a newer JRE runs it fine), cargo.
|
||||||
|
|
||||||
|
### Layer A — Bulk data (download once, query offline forever)
|
||||||
|
|
||||||
|
**No live API calls in the build loop.** Every dataset below is a static file. Total
|
||||||
|
~1.2GB on disk; refresh with a single `make data` when a set drops. All sizes and
|
||||||
|
schemas below were verified by actually downloading them on 2026-09-07.
|
||||||
|
|
||||||
|
| File | Size | Source | What it gives us |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| `oracle-cards.jsonl.gz` | 23MB | Scryfall bulk | One object per unique card: oracle text, mana cost, CI, `legalities`, `is:gamechanger` |
|
||||||
|
| `oracle-tags.jsonl.gz` | 5.6MB | Scryfall bulk | **4,524 community tags** + full hierarchy |
|
||||||
|
| `rulings.jsonl.gz` | 5.1MB | Scryfall bulk | Every ruling, joined by `oracle_id` |
|
||||||
|
| `variants.json` | 646MB | Commander Spellbook | **108,535 combos**, each with `bracketTag` |
|
||||||
|
| `AtomicCards.json.gz` | 51MB | MTGJSON | `edhrecRank` (popularity sanity check only) |
|
||||||
|
| `embeddings.npz` | 64MB | **generated locally** | 35,312 × 768-dim mechanics vectors (see Layer B) |
|
||||||
|
|
||||||
|
Endpoints (note: Scryfall bulk is **JSONL now**, the field is `jsonl_download_uri`,
|
||||||
|
not the older `download_uri` — `GET api.scryfall.com/bulk-data` for current URLs):
|
||||||
|
|
||||||
|
```
|
||||||
|
https://data.scryfall.io/oracle-cards/oracle-cards-<ts>.jsonl.gz
|
||||||
|
https://data.scryfall.io/oracle-tags/oracle-tags-<ts>.jsonl.gz
|
||||||
|
https://json.commanderspellbook.com/variants.json # whole combo DB, no API
|
||||||
|
https://mtgjson.com/api/v5/AtomicCards.json.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
**The Scryfall Tagger data is the best part of this**, and it's the thing you can't
|
||||||
|
reconstruct from oracle text with regex. 4,524 hand-curated tags, with `parent_ids` /
|
||||||
|
`child_ids` forming a hierarchy. Tags that are directly load-bearing for this deck
|
||||||
|
(counts are real, from the downloaded file):
|
||||||
|
|
||||||
|
| Tag | Cards | Why it matters here |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `death-trigger-opponent` | 73 | **Triggers off an _opponent's_ creature dying** — maps exactly onto the commander's steal clause |
|
||||||
|
| `free-sacrifice-outlet` | 192 | Sac outlets with no mana cost — the aristocrats core |
|
||||||
|
| `sacrifice-outlet-universal` | 53 | Sac any permanent type |
|
||||||
|
| `your-sacrifice-matters` | 122 | Payoffs for your own sacrifices |
|
||||||
|
| `death-trigger-self` | 709 | Dies-triggers |
|
||||||
|
| `repeatable-proliferate` | 43 | Repeatable -1/-1 counter multiplication |
|
||||||
|
| `pseudo-proliferate` | 44 | Near-proliferate effects |
|
||||||
|
| `shrink` | 107 | Toughness reduction |
|
||||||
|
| `persist` / `gives-persist` | 26 / 7 | Persist + -1/-1 is the classic engine |
|
||||||
|
|
||||||
|
`death-trigger-opponent` at 73 cards is the highest-signal query in the whole project.
|
||||||
|
Grepping oracle text for that concept is miserable; the tag is exact. Read it as
|
||||||
|
"the shortlist of cards that do what my commander does."
|
||||||
|
|
||||||
|
Joining all three files (tags ∩ Jund identity ∩ commander-legal, sorted by
|
||||||
|
`edhrecRank`) — run locally, output verbatim — yields **55 cards**, top of list:
|
||||||
|
|
||||||
|
```
|
||||||
|
#511 The Meathook Massacre #1031 Yahenni, Undying Partisan
|
||||||
|
#512 Massacre Wurm #1695 Massacre Girl, Known Killer
|
||||||
|
#753 Bloodchief Ascension #2536 Mari, the Killing Quill
|
||||||
|
#2944 Necroskitter #3511 Overseer of the Damned
|
||||||
|
```
|
||||||
|
|
||||||
|
That's a real shortlist for "cards that care when an opponent's creature dies,"
|
||||||
|
produced in about a second with no network. This is the whole argument for Layer A.
|
||||||
|
|
||||||
|
**Combos, fully offline.** The entire Spellbook DB is one JSON download — no
|
||||||
|
`find-my-combos` POSTs. Verified locally: 108,535 combos, **24,699 within Jund
|
||||||
|
identity**, and **30 that use The Reaper itself**. Each combo carries `uses`,
|
||||||
|
`produces`, `identity`, `legalities`, `popularity`, and a `bracketTag`
|
||||||
|
(E/S/P/O/R/B/C) we can filter on directly for bracket-3 policing.
|
||||||
|
|
||||||
|
A real result from the offline file — the commander's own combos are mostly
|
||||||
|
Mikaeus, the Unhallowed shells:
|
||||||
|
|
||||||
|
```
|
||||||
|
O [Mikaeus, the Unhallowed, The Reaper, Bloodthrone Vampire] => Infinite -1/-1 counters, Infinite creature ETB
|
||||||
|
O [Mikaeus, the Unhallowed, Spawning Pit, The Reaper] => Infinite -1/-1 counters
|
||||||
|
```
|
||||||
|
|
||||||
|
Reimplementing `find-my-combos` offline is ~15 lines: index combos by card name, then
|
||||||
|
`included` = combos whose `uses` ⊆ deck, `almostIncluded` = combos missing exactly one.
|
||||||
|
|
||||||
|
### Layer B — Semantic search ("try other cards")
|
||||||
|
|
||||||
|
**Short answer to "how do I get all the cards": you generate them yourself, in 82
|
||||||
|
seconds, and you already have.** Don't download `minimaxir/mtg-embeddings` — it's
|
||||||
|
stale (through Aetherdrift, Feb 2024) and, verified, **does not contain The Reaper**.
|
||||||
|
Instead run the same model over our own current `oracle-cards.jsonl`:
|
||||||
|
|
||||||
|
```
|
||||||
|
python3 tools/embed.py # -> data/embeddings.npz
|
||||||
|
```
|
||||||
|
|
||||||
|
That encodes every card with `Alibaba-NLP/gte-modernbert-base` (the same model the HF
|
||||||
|
dataset used) and writes a 64MB `.npz`. On this box (RTX 3060, 12GB) it took **1m22s
|
||||||
|
for 35,312 cards**. It is a `pip install sentence-transformers` and one script — no
|
||||||
|
account, no download, and it re-runs whenever a set drops. This is strictly better
|
||||||
|
than the HF file in every dimension, which is why Layer B is now "build", not "fetch".
|
||||||
|
|
||||||
|
**Two things I got wrong on the first pass, both worth knowing:**
|
||||||
|
|
||||||
|
1. **Don't put the card's name in the embedded text.** With `name` included, querying
|
||||||
|
The Reaper returned Midnight Reaper, Reaper of the Wilds, Grim Reaper, Slum Reaper,
|
||||||
|
Cemetery Reaper — it matched the *word* "Reaper", not the mechanics. `embed.py`
|
||||||
|
deliberately omits the name field.
|
||||||
|
2. **Card-to-card similarity matches a card's overall _shape_, not its key ability.**
|
||||||
|
With names removed, The Reaper's neighbors became Scarecrone, Grim Poppet,
|
||||||
|
Blazethorn Scarecrow, Jousting Dummy — the model correctly saw "artifact creature
|
||||||
|
Scarecrow" and matched creature type. Useless for deckbuilding.
|
||||||
|
|
||||||
|
**So query by ability text, not by card.** That's what actually works:
|
||||||
|
|
||||||
|
```
|
||||||
|
python3 tools/similar_text.py "whenever a creature an opponent controls with a -1/-1 counter dies, put that card onto the battlefield under your control"
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
0.897 Instill Infection 0.891 Make Obsolete 0.890 Cower in Fear
|
||||||
|
0.882 Shrivel 0.880 Persist 0.876 Hazardous Conditions
|
||||||
|
0.874 Gnarled Effigy 0.872 Consumptive Goo 0.871 Quillspike
|
||||||
|
```
|
||||||
|
|
||||||
|
Genuine -1/-1 cards. Both scripts filter to Jund identity + commander-legal.
|
||||||
|
|
||||||
|
**It's still fuzzy** — it ranks by "reads like", so it surfaces candidates, not
|
||||||
|
recommendations. Use embeddings to *generate* a candidate list, then filter it through
|
||||||
|
the Tagger tags and legality from Layer A. Tags are precise but only cover concepts
|
||||||
|
someone thought to tag; embeddings cover anything but imprecisely. They fail in
|
||||||
|
opposite directions, which is why the plan uses both.
|
||||||
|
|
||||||
|
### Layer C — Popularity / prior art
|
||||||
|
|
||||||
|
MTGJSON `AtomicCards.json` (verified current: 2026-09-06, 35,022 cards) carries
|
||||||
|
`edhrecRank` per card — no EDHREC scraping needed. Use rank only as a loose "how
|
||||||
|
normal is this inclusion" sanity check. We are **not** tracking saltiness and not
|
||||||
|
scoring the deck on it.
|
||||||
|
|
||||||
|
The one power-level rule we *do* enforce mechanically: **no two-card-in-a-vacuum
|
||||||
|
infinite combos.** Two cards that go infinite by themselves, with no third
|
||||||
|
enabler and no board state required, are out — that's the bracket-3 line and it's
|
||||||
|
checkable directly against the offline combo DB (`len(uses) == 2`). Longer combos,
|
||||||
|
or two-card lines that need an existing creature / sac outlet / specific board, are
|
||||||
|
fine. See §1 for how this lands on the Blowfly package.
|
||||||
|
|
||||||
|
### Layer D — Simulation (Forge)
|
||||||
|
|
||||||
|
**Forge is the simulator. We are not writing our own.** A hand-rolled goldfish sim
|
||||||
|
models mana and curve but not the game — no blockers, no interaction, no stack, no
|
||||||
|
opponents. For a deck whose whole point is death triggers and sacrifice loops, that
|
||||||
|
misses everything that matters. Forge implements the actual rules.
|
||||||
|
|
||||||
|
**Installed and working:** Forge 2.0.14, `~/forge`, from the prebuilt
|
||||||
|
`forge-installer-2.0.14.tar.bz2` (no Maven needed — the release ships a fat jar).
|
||||||
|
Java 26 runs it fine despite the project targeting 17. It loads 33,617 cards.
|
||||||
|
|
||||||
|
Exact syntax, from `SimulateMatch.java` and confirmed against the running binary:
|
||||||
|
|
||||||
|
```
|
||||||
|
sh forge.sh sim -d <deck1.dck> ... <deckX.dck> -f Commander -n <games> -s <seed> -q
|
||||||
|
```
|
||||||
|
|
||||||
|
- `-d` decks (quote names with spaces) · `-f Commander` **required**, else constructed
|
||||||
|
- `-n` games · `-m` best-of-M match · `-s` RNG seed (use it — reproducible runs)
|
||||||
|
- `-a` AI profile per player · `-c` seconds before a draw (default 120) · `-q` quiet
|
||||||
|
|
||||||
|
**Two gotchas that cost time, both now handled by the tooling:**
|
||||||
|
|
||||||
|
1. **Commander decks must live in `~/.forge/decks/commander/`.** The `-D` flag did
|
||||||
|
*not* work for Commander format — Forge looks in its own profile directory and
|
||||||
|
otherwise reports `Could not load deck`. `run_forge.sh` writes there directly.
|
||||||
|
2. **With one deck, Forge "wins" on turn 0 in 300ms** — no opponents, no game. You
|
||||||
|
need real opponents. Forge ships **173 Commander precons** in
|
||||||
|
`res/quest/commanderprecons/`; we use three (Faceless Menace C19, Merciless Rage
|
||||||
|
C19, Arcane Maelstrom C20) for a 4-player pod. They're roughly bracket 2.
|
||||||
|
|
||||||
|
Real 4-player games run ~31 turns in ~60 seconds each, so a 24-game batch is ~25 min.
|
||||||
|
|
||||||
|
**The AI caveat is not a footnote.** Per Forge's own wiki the AI is heuristic, not
|
||||||
|
trained: decent at aggro/midrange, moderate at control, **weak at combo decks**. Ours
|
||||||
|
is a combo deck, so the AI systematically under-plays it and will miss sac-loop lines
|
||||||
|
a human would take. Every report prints this. Read Forge's win rate as a **floor** and
|
||||||
|
as proof the deck functions and its cards interact — never as a power rating.
|
||||||
|
|
||||||
|
## 3. The build loop
|
||||||
|
|
||||||
|
Card selection is offline and instant. Simulation is Forge, and it's the slow step —
|
||||||
|
~60s per 4-player game — so it runs in batches, not on every edit.
|
||||||
|
|
||||||
|
```
|
||||||
|
make data (once/per set) ──► data/*.jsonl, variants.json, AtomicCards.json
|
||||||
|
│
|
||||||
|
decklist.txt ─────────────────────────► │ blacklist.txt ──┐
|
||||||
|
│ │ │
|
||||||
|
├─► bracket_check.py ── game changers, MLD, vacuum combos, blacklist ──┐
|
||||||
|
├─► combos.py ── included / almostIncluded (offline) ──────────┤
|
||||||
|
├─► tags.py ── death-trigger-opponent, sac outlets ──────────┼─► out/
|
||||||
|
├─► similar_text.py ── "cards whose text reads like ..." ──────────┤
|
||||||
|
│ │
|
||||||
|
└─► to_dck.py ──► run_forge.sh ──► forge_report.py ─────────────────────┘
|
||||||
|
(validates names) (24 games, 4-player pod) (.txt + .json + .log)
|
||||||
|
```
|
||||||
|
|
||||||
|
Every simulation run writes a timestamped triple into `out/`: the full Forge `.log`,
|
||||||
|
a human `.txt` report, and a `.json` artifact — and the report footer names
|
||||||
|
`decklist.txt`, the log, the JSON, and itself, so any number is traceable.
|
||||||
|
|
||||||
|
## 4. Repo layout
|
||||||
|
|
||||||
|
```
|
||||||
|
reaper-king-no-more/
|
||||||
|
decklist.txt # working deck, "1 Card Name" per line
|
||||||
|
blacklist.txt # cards I won't play, "Card Name | reason"
|
||||||
|
plan.md
|
||||||
|
data/ # ~1.2GB, all gitignored
|
||||||
|
oracle-cards.jsonl oracle-tags.jsonl rulings.jsonl
|
||||||
|
variants.json AtomicCards.json embeddings.npz (generated)
|
||||||
|
decks/ # RESULTS, one dir per archetype variant
|
||||||
|
README.md
|
||||||
|
no-mikaeus/ # decklist.txt, bracket.txt, combos.txt,
|
||||||
|
mikaeus/ # README.md, sim/<stamp>.{log,txt,json}
|
||||||
|
tools/
|
||||||
|
cards.py # shared index: oracle+tags+edhrec+combos+blacklist
|
||||||
|
bracket_check.py # game changers, MLD, vacuum combos, blacklist
|
||||||
|
combos.py # offline included / almostIncluded (no API)
|
||||||
|
embed.py # generate embeddings.npz on GPU (~82s)
|
||||||
|
similar.py # "cards like <card>"
|
||||||
|
similar_text.py # "cards whose text reads like <query>"
|
||||||
|
to_dck.py # decklist -> forge .dck, validates names vs Forge
|
||||||
|
run_forge.sh # batch 4-player sim into decks/<variant>/sim/
|
||||||
|
forge_report.py # Forge log -> .txt report + .json artifact
|
||||||
|
variant.py # run the whole suite for one variant
|
||||||
|
```
|
||||||
|
|
||||||
|
**Variants are the unit of work.** A variant is one answer to "what if the deck were
|
||||||
|
built this way" — its own 100 cards, its own legality verdict, its own combo profile,
|
||||||
|
its own simulation history. Regenerate one with:
|
||||||
|
|
||||||
|
```
|
||||||
|
python3 tools/variant.py no-mikaeus # analysis only, ~10s
|
||||||
|
python3 tools/variant.py mikaeus --sim 24 # + 24 Forge games, ~25 min
|
||||||
|
```
|
||||||
|
|
||||||
|
Analysis files are rewritten each run; sim runs are additive, so every batch is kept
|
||||||
|
and runs stay comparable.
|
||||||
|
|
||||||
|
External: `~/forge` (Forge 2.0.14) and `~/.forge/decks/commander/` (where Forge
|
||||||
|
insists Commander decks live).
|
||||||
|
|
||||||
|
## 5. Build order
|
||||||
|
|
||||||
|
1. ~~`fetch_data.py`~~ — **done**, six files in `data/` (1.1GB).
|
||||||
|
2. ~~`cards.py`~~ — **done.** oracle + 4,369 tags + edhrecRank + combos + blacklist.
|
||||||
|
3. ~~`bracket_check.py`~~ — **done and passing.**
|
||||||
|
4. ~~`embed.py` / `similar.py` / `similar_text.py`~~ — **done** (Layer B).
|
||||||
|
5. ~~Draft the 100~~ — **done**, `decklist.txt`.
|
||||||
|
6. ~~Forge installed + `to_dck.py` + `run_forge.sh` + `forge_report.py`~~ — **done.**
|
||||||
|
4-player pod vs precons, reproducible by seed.
|
||||||
|
7. Iterate on the list using Forge results + the offline combo/tag tools.
|
||||||
|
|
||||||
|
**Dropped: the hand-rolled goldfish sim.** It was written and worked, but it models
|
||||||
|
mana and curve only — no interaction, no blockers, no stack. For an aristocrats combo
|
||||||
|
deck that's the wrong abstraction, and maintaining a second simulator that disagrees
|
||||||
|
with the real one is worse than having one. Forge is the simulator. (`goldfish.py`
|
||||||
|
and its `out/goldfish-*` runs are removed.)
|
||||||
|
|
||||||
|
**Report convention** (every tool): a timestamped `.txt` human report plus a `.json`
|
||||||
|
artifact in `out/`, with the report footer naming `decklist.txt`, the raw log, the
|
||||||
|
JSON, and itself.
|
||||||
|
|
||||||
|
## 6. Deck skeleton to draft against
|
||||||
|
|
||||||
|
Rough shape, ~99 + commander:
|
||||||
|
|
||||||
|
- **Lands 36–37** (hybrid commander is easy to cast; the rest of the deck is greedy)
|
||||||
|
- **Ramp 10** — Jund has good rocks + Cultivate/Farseek effects
|
||||||
|
- **-1/-1 engines** — Hapatra, Blowfly Infestation, Nest of Scarabs, Yawgmoth,
|
||||||
|
Necroskitter (steals like the commander!), Contagion Clasp/Engine, Archfiend of Ifnir
|
||||||
|
- **Sac outlets** — free ones matter: Viscera Seer, Carrion Feeder, Ashnod's Altar
|
||||||
|
- **Drain payoffs** — Blood Artist, Zulaport Cutthroat, Bastion of Remembrance
|
||||||
|
- **Removal/interaction 8–10** — bracket 3 pods interact
|
||||||
|
- **One-offs that love the commander** — Humble Defector (per README), and note
|
||||||
|
**Necroskitter** is close to a second copy of the commander's steal ability
|
||||||
|
- **Game Changers: pick ≤3, deliberately.** Check with `bracket_check.py`.
|
||||||
|
|
||||||
|
`Necroskitter` came straight out of the Scryfall query in §2 and is arguably the
|
||||||
|
best non-commander card for this exact deck — good sign the search approach works.
|
||||||
|
|
||||||
|
## 6b. Variants — the unit of work
|
||||||
|
|
||||||
|
Six variants, each a falsifiable hypothesis rather than a taste preference. All are
|
||||||
|
generated from one spec (`tools/make_variants.py`) as cut/add lists against the
|
||||||
|
baseline, so changing the baseline propagates everywhere.
|
||||||
|
|
||||||
|
| variant | bracket 3 | vacuum | combos | outlets | cmdr synergy | avg MV |
|
||||||
|
| --- | --- | --- | --- | --- | --- | --- |
|
||||||
|
| **no-mikaeus** (baseline) | PASS | 0 | 11 | 8 | 6 | 3.02 |
|
||||||
|
| lean-outlets | PASS | 0 | 10 | 5 | 7 | 2.97 |
|
||||||
|
| commander-focus | PASS | 0 | 7 | 7 | 10 | 3.03 |
|
||||||
|
| heavy-removal | PASS | 0 | 7 | 8 | 8 | 2.95 |
|
||||||
|
| low-curve | PASS | 0 | 11 | 8 | 9 | 2.67 |
|
||||||
|
| mikaeus | **FAIL** | **7** | 39 | 8 | 6 | 3.08 |
|
||||||
|
|
||||||
|
The hypotheses:
|
||||||
|
|
||||||
|
- **lean-outlets** — 8 sac outlets is more than the deck needs. Cut 3 for interaction
|
||||||
|
and card advantage; does consistency actually drop?
|
||||||
|
- **commander-focus** — the commander only steals from *opponents'* creatures, but our
|
||||||
|
-1/-1 engine mostly counters our own. Push counters onto their board instead.
|
||||||
|
(Raises synergy cards 6 → 10, at the cost of 4 combos.)
|
||||||
|
- **heavy-removal** — bracket 3 pods interact. Trade combo redundancy for removal:
|
||||||
|
does surviving longer beat assembling faster?
|
||||||
|
- **low-curve** — the engine lands ~T6. Cut the top of the curve entirely (MV 3.02 →
|
||||||
|
**2.67**) and see if coming online sooner wins more.
|
||||||
|
- **mikaeus** — the control case. Confirms the house rule catches what it should.
|
||||||
|
|
||||||
|
**Mikaeus is settled — the answer is no.** Adding it creates **7 two-card vacuum
|
||||||
|
combos**, because it goes infinite with *every sac outlet in the deck*:
|
||||||
|
|
||||||
|
```
|
||||||
|
Mikaeus + Ashnod's Altar Mikaeus + Carrion Feeder
|
||||||
|
Mikaeus + Phyrexian Altar Mikaeus + Viscera Seer
|
||||||
|
Mikaeus + Goblin Bombardment Mikaeus + Woe Strider
|
||||||
|
Mikaeus + Yahenni, Undying Partisan
|
||||||
|
```
|
||||||
|
|
||||||
|
Two cards, no third enabler, no board state — exactly what the house rule targets.
|
||||||
|
Its combo count jumps 11 → 39, which is the same problem counted a different way.
|
||||||
|
Kept as a variant so the comparison stays visible rather than buried in a chat log.
|
||||||
|
|
||||||
|
**What the baseline's own numbers say:** `combos.py` finds 11 combos in the deck, all
|
||||||
|
requiring board state — redundant three-card engines, no vacuum lines. That is the
|
||||||
|
deck working as designed.
|
||||||
|
|
||||||
|
## 6c. How to design variants, and what to do with the results
|
||||||
|
|
||||||
|
### Designing variants
|
||||||
|
|
||||||
|
A variant is only worth running if it can be **wrong**. The rule I'm using: each one
|
||||||
|
states a hypothesis, changes 3-5 cards, and holds everything else constant. Anything
|
||||||
|
bigger and you can't attribute the result; anything vaguer and there's no result to
|
||||||
|
attribute.
|
||||||
|
|
||||||
|
Where the hypotheses come from, in rough order of value:
|
||||||
|
|
||||||
|
1. **Structural facts about the list.** Count things and look for outliers. "8 sac
|
||||||
|
outlets when 5 would do" and "22 three-drops, 5 of them ramp" both came from
|
||||||
|
counting, not intuition. This is the best source.
|
||||||
|
2. **Loss data from previous sims.** 15 of 17 losses were life hitting 0 against
|
||||||
|
aggro → that's `heavy-removal` and `low-curve`.
|
||||||
|
3. **Tension in the deck's own design.** The commander only steals from *opponents'*
|
||||||
|
creatures while our engine counters our own → `commander-focus`.
|
||||||
|
4. **Control cases.** `mikaeus` exists to prove the house rule catches what it should.
|
||||||
|
A test suite needs a case that fails on purpose.
|
||||||
|
|
||||||
|
All of it lives in `tools/make_variants.py` as cut/add lists against the baseline, so
|
||||||
|
changing the baseline propagates everywhere and no two lists silently drift apart.
|
||||||
|
The generator refuses to add a card already in the deck (it caught three of my own
|
||||||
|
mistakes) and validates every name against Forge's database before simming.
|
||||||
|
|
||||||
|
### Card-level weights from simulation data
|
||||||
|
|
||||||
|
Run Forge **without `-q`** and it logs the whole game, attributed by player:
|
||||||
|
|
||||||
|
```
|
||||||
|
Add To Stack: Ai(1)-Reaper King No More cast Terminate targeting [Face-down card (H4)]
|
||||||
|
Zone Change: Zulaport Cutthroat (33) was put into Graveyard from Battlefield.
|
||||||
|
Life: Ai(2)-Faceless Menace 40 > 39
|
||||||
|
```
|
||||||
|
|
||||||
|
`tools/card_stats.py` turns that into per-card numbers: how often a card was cast,
|
||||||
|
the average turn it landed, and the deck's win rate in games where it was cast. That
|
||||||
|
last column is the "weight".
|
||||||
|
|
||||||
|
**What it's legitimately good for:**
|
||||||
|
|
||||||
|
- **Cards never cast in any game.** The single most actionable output. A card that
|
||||||
|
never gets played across dozens of games is dead weight, uncastable by the AI, or
|
||||||
|
too expensive — all worth investigating.
|
||||||
|
- **Average turn played** — measures whether the curve behaves as intended.
|
||||||
|
- **Cast rate** — is this card doing anything, or is it a 100th-card filler?
|
||||||
|
|
||||||
|
**What it is NOT:** a fitness function you can optimize against. Four reasons, all
|
||||||
|
real:
|
||||||
|
|
||||||
|
1. **Sample size.** A card cast in 5 games has a +/-40% win-rate swing from noise.
|
||||||
|
2. **"Never cast" is three different failures wearing a trenchcoat** — bad card, card
|
||||||
|
the AI can't pilot, card never drawn. They need opposite fixes.
|
||||||
|
3. **Correlation, not causation.** Cards cast in long games look good because long
|
||||||
|
games are ones we *survived*. The card didn't cause the win; surviving did.
|
||||||
|
4. **The AI is weak at combo**, so it systematically under-casts our combo pieces —
|
||||||
|
exactly the cards we care most about.
|
||||||
|
|
||||||
|
So: use card stats to generate *hypotheses* (this card never gets cast — why?), then
|
||||||
|
test the hypothesis with a variant. Don't let a win-rate column pick the deck. The
|
||||||
|
loop is **stats -> hypothesis -> variant -> sim -> stats**, with a human deciding at
|
||||||
|
each arrow.
|
||||||
|
|
||||||
|
## 7. Open questions
|
||||||
|
|
||||||
|
- **Which variant is actually best?** Five pass bracket 3 and differ meaningfully on
|
||||||
|
paper. Forge decides this, not argument — each needs a 24-game batch.
|
||||||
|
- What's the primary wincon — a drain loop off infinite death triggers, or grinding
|
||||||
|
value off stolen creatures? The commander's once-per-turn clause means it can't be
|
||||||
|
the payoff, so something else has to close.
|
||||||
|
- Do we want any Game Changers at all? Bracket 3 allows 3; running 0 is also fine and
|
||||||
|
makes the deck's bracket unambiguous.
|
||||||
|
- Is `commander-focus` right that the deck under-uses its own commander? It nearly
|
||||||
|
doubles opponent-facing -1/-1 effects (6 → 10) but loses 4 combos. That trade is
|
||||||
|
the single most interesting question in the list.
|
||||||
42
decks/reaper-king-no-more/sim_substitutions.yaml
Normal file
42
decks/reaper-king-no-more/sim_substitutions.yaml
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
# Simulation-only card substitutions.
|
||||||
|
#
|
||||||
|
# Some cards are `AI:RemoveDeck:All` in Forge because the AI genuinely cannot
|
||||||
|
# evaluate them -- not because nobody wrote logic. Forcing those on makes the AI
|
||||||
|
# play them badly, which is worse than not playing them. Instead we swap in a
|
||||||
|
# functionally similar card the AI CAN pilot, so the deck's SHAPE is simulated
|
||||||
|
# correctly (the removal slot still does removal) even though the specific card
|
||||||
|
# differs.
|
||||||
|
#
|
||||||
|
# decklist.txt remains the source of truth. This map applies ONLY when building
|
||||||
|
# the .dck for simulation, and every substitution is recorded in the run's JSON
|
||||||
|
# metadata and printed in reports.
|
||||||
|
#
|
||||||
|
# IMPORTANT: per-card statistics for a substituted card describe the STAND-IN,
|
||||||
|
# not the real card. Never read "Terminate had a 40% win rate" as a fact about
|
||||||
|
# Beast Within. This trades per-card precision for whole-deck realism.
|
||||||
|
|
||||||
|
substitutions:
|
||||||
|
# Blocked because it gives the opponent a 3/3 -- the AI can't weigh that downside,
|
||||||
|
# even though it already has working targeting logic (AITgts$ Card.cmcGE4).
|
||||||
|
# Feed the Swarm is the same slot: cheap unconditional removal, and it also hits
|
||||||
|
# enchantments, so it is closer to Beast Within's flexibility than Terminate.
|
||||||
|
# DEVIATION: Beast Within hits ANY permanent at instant speed; Feed the Swarm is
|
||||||
|
# a sorcery limited to creatures/enchantments and costs life.
|
||||||
|
Beast Within: Feed the Swarm
|
||||||
|
|
||||||
|
# Blocked because of `Cost$ 2 B PayLife<X>` -- an X-cost paid with LIFE, which
|
||||||
|
# the AI has no logic to size. Blasphemous Edict is a fixed-cost mass sacrifice.
|
||||||
|
# DEVIATION: Deluge is scalable, symmetric and dodges indestructible; the Edict
|
||||||
|
# is an edict effect that opponents choose for, so it kills different creatures.
|
||||||
|
Toxic Deluge: Blasphemous Edict
|
||||||
|
|
||||||
|
# Blocked because "draw X, then discard 3" is a symmetrical drawback it can't
|
||||||
|
# evaluate. Umbral Collar Zealot is a repeatable sac-for-value outlet the AI can
|
||||||
|
# pilot, keeping the "sacrifice converts to cards" slot filled.
|
||||||
|
# DEVIATION: far smaller effect, and a creature rather than an enchantment.
|
||||||
|
Greater Good: Umbral Collar Zealot
|
||||||
|
|
||||||
|
# Black Sun's Zenith and Cauldron of Souls are also AI-blocked but are NOT
|
||||||
|
# substituted: no close AI-playable analogue exists, and swapping them would
|
||||||
|
# distort the -1/-1 theme more than leaving the slot inert. They stay in the
|
||||||
|
# deck, remain uncast, and are reported as "never cast (AI-blocked)".
|
||||||
141
decks/reaper-king-no-more/variants.yaml
Normal file
141
decks/reaper-king-no-more/variants.yaml
Normal file
|
|
@ -0,0 +1,141 @@
|
||||||
|
# Variant recipes for tools/generate.py -- role-budget reallocation hypotheses.
|
||||||
|
#
|
||||||
|
# Each recipe is a reallocation: shift N slots from one role to another, then
|
||||||
|
# let tools/generate.py pick which specific cards to cut and add. Cuts come
|
||||||
|
# from the weakest cards in the over-served role; adds come from the best
|
||||||
|
# unused cards in the under-served one.
|
||||||
|
#
|
||||||
|
# Deltas for each recipe must sum to zero so the deck stays at 100 cards.
|
||||||
|
#
|
||||||
|
# python3 tools/generate.py --deck decks/reaper-king-no-more --list
|
||||||
|
# python3 tools/generate.py --deck decks/reaper-king-no-more
|
||||||
|
# python3 tools/generate.py --deck decks/reaper-king-no-more --only aggro-hate
|
||||||
|
|
||||||
|
recipes:
|
||||||
|
aggro-hate:
|
||||||
|
why: >
|
||||||
|
15 of 17 losses were life hitting 0 against aggro. Trade combo
|
||||||
|
redundancy for sweepers and spot removal.
|
||||||
|
deltas:
|
||||||
|
removal_mass: 3
|
||||||
|
removal_spot: 2
|
||||||
|
minus_engine: -3
|
||||||
|
sac_outlet: -2
|
||||||
|
|
||||||
|
card-engine:
|
||||||
|
why: >
|
||||||
|
Only 1 real draw engine in 99 cards. An aristocrats deck that draws
|
||||||
|
off its own deaths should never run out of gas.
|
||||||
|
deltas:
|
||||||
|
draw: 5
|
||||||
|
death_trigger: 2
|
||||||
|
minus_engine: -4
|
||||||
|
ramp: -3
|
||||||
|
|
||||||
|
opponent-facing:
|
||||||
|
why: >
|
||||||
|
The commander only steals from OPPONENTS' creatures. Maximise cards
|
||||||
|
that trigger on their deaths and put counters on their board.
|
||||||
|
deltas:
|
||||||
|
opp_death: 5
|
||||||
|
removal_spot: 2
|
||||||
|
sac_outlet: -3
|
||||||
|
ramp: -2
|
||||||
|
minus_engine: -2
|
||||||
|
|
||||||
|
go-wide:
|
||||||
|
why: >
|
||||||
|
Token swarms feed sac outlets and the -1/-1 engine simultaneously.
|
||||||
|
Tests whether bodies beat individually stronger cards.
|
||||||
|
deltas:
|
||||||
|
tokens: 5
|
||||||
|
sac_payoff: 2
|
||||||
|
minus_engine: -3
|
||||||
|
removal_spot: -2
|
||||||
|
ramp: -2
|
||||||
|
|
||||||
|
proliferate:
|
||||||
|
why: >
|
||||||
|
Proliferate multiplies -1/-1 counters, turning one trigger into many.
|
||||||
|
A different engine for the same theme.
|
||||||
|
deltas:
|
||||||
|
proliferate: 5
|
||||||
|
minus_engine: 1
|
||||||
|
ramp: -3
|
||||||
|
sac_outlet: -3
|
||||||
|
|
||||||
|
grindy:
|
||||||
|
why: >
|
||||||
|
Recursion + drain: never combo, just refuse to lose and bleed the
|
||||||
|
table out. Tests whether this deck wants to be a value pile.
|
||||||
|
deltas:
|
||||||
|
reanimate: 3
|
||||||
|
drain: 3
|
||||||
|
draw: 2
|
||||||
|
minus_engine: -4
|
||||||
|
sac_outlet: -2
|
||||||
|
ramp: -2
|
||||||
|
|
||||||
|
# Hand-curated variants for tools/make_variants.py -- explicit cut/add lists
|
||||||
|
# against the baseline, rather than a role-budget reallocation. Each is a
|
||||||
|
# specific hypothesis about specific cards (see plan.md section 6b/6c for
|
||||||
|
# how these were chosen).
|
||||||
|
#
|
||||||
|
# python3 tools/make_variants.py --deck decks/reaper-king-no-more --list
|
||||||
|
# python3 tools/make_variants.py --deck decks/reaper-king-no-more
|
||||||
|
handwritten:
|
||||||
|
no-mikaeus:
|
||||||
|
why: "Baseline. Aristocrats + -1/-1, every combo needs board state."
|
||||||
|
cut: []
|
||||||
|
add: []
|
||||||
|
|
||||||
|
mikaeus:
|
||||||
|
why: >
|
||||||
|
Does the highest-leverage combo card (28 combos) stay legal?
|
||||||
|
Expected FAIL: goes infinite with every sac outlet.
|
||||||
|
cut: ["Humble Defector"]
|
||||||
|
add: ["Mikaeus, the Unhallowed"]
|
||||||
|
|
||||||
|
lean-outlets:
|
||||||
|
why: >
|
||||||
|
The deck runs 8 sac outlets and probably needs ~5. Cut 3 for
|
||||||
|
interaction and card advantage -- does consistency actually drop?
|
||||||
|
cut: ["Woe Strider", "Yahenni, Undying Partisan", "Greater Good"]
|
||||||
|
add: ["Bloodchief Ascension", "Toshiro Umezawa", "Fiery Cannonade"]
|
||||||
|
|
||||||
|
commander-focus:
|
||||||
|
why: >
|
||||||
|
The commander only steals from OPPONENTS' creatures, but the deck's
|
||||||
|
-1/-1 engine mostly counters our own. Push counters onto their board.
|
||||||
|
cut: ["Putrid Goblin", "Cauldron of Souls", "Murderous Redcap", "Woe Strider"]
|
||||||
|
add: ["Mari, the Killing Quill", "Sangromancer", "Patron of the Vein",
|
||||||
|
"Slaughter Specialist"]
|
||||||
|
|
||||||
|
heavy-removal:
|
||||||
|
why: >
|
||||||
|
Bracket 3 pods interact. Trade combo redundancy for removal and see
|
||||||
|
whether surviving longer beats assembling faster.
|
||||||
|
cut: ["Flourishing Defenses", "Nest of Scarabs", "Obelisk Spider",
|
||||||
|
"Persistent Constrictor"]
|
||||||
|
add: ["Fiery Cannonade", "Vraska, the Silencer", "Meathook Massacre II",
|
||||||
|
"Go for the Throat"]
|
||||||
|
|
||||||
|
fast-ramp:
|
||||||
|
why: >
|
||||||
|
6 of 10 ramp pieces cost 3+, and the deck already has 22 three-drops.
|
||||||
|
T3 ramp means NOT deploying an engine piece. Swap the 3-mana fetch
|
||||||
|
spells for 1-mana dorks -- which are also creatures, so they feed the
|
||||||
|
sac outlets and the -1/-1 engine instead of being do-nothing sorceries.
|
||||||
|
cut: ["Cultivate", "Kodama's Reach", "Springbloom Druid", "Wood Elves",
|
||||||
|
"Binding the Old Gods"]
|
||||||
|
add: ["Llanowar Elves", "Elvish Mystic", "Fyndhorn Elves",
|
||||||
|
"Ignoble Hierarch", "Delighted Halfling"]
|
||||||
|
|
||||||
|
low-curve:
|
||||||
|
why: >
|
||||||
|
Avg MV is 3.02 and the engine lands ~T6. Cut the top of the curve
|
||||||
|
entirely -- does the deck come online sooner and win more?
|
||||||
|
cut: ["Massacre Wurm", "Overseer of the Damned", "Archfiend of Ifnir",
|
||||||
|
"Grim Poppet", "Cauldron of Souls"]
|
||||||
|
add: ["Malakir Cullblade", "Slaughter Specialist", "Bloodchief Ascension",
|
||||||
|
"Nurgle's Rot", "Chevill, Bane of Monsters"]
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue