Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,12 @@ cat ur-delver.txt | mtg-archetypes legacy
pip install mtg-archetypes
```

Or if you have [`uv`](https://docs.astral.sh/uv/) installed, you can use mtg-archetypes directly:

```bash
cat ur-delver.txt | uvx mtg-archetypes legacy
```

---

## Quickstart
Expand Down Expand Up @@ -71,7 +77,7 @@ Category: Tempo
```

```bash
cat unknown_pile.txt | mtg-archetypes legacy --verbose
echo "60 Plains" | mtg-archetypes legacy --verbose
```
```text
Archetype: Unclassified
Expand Down Expand Up @@ -118,7 +124,7 @@ classifier = ArchetypeClassifier()

# Or use:
# decklist = "4 Delver of Secrets\n..."
# mtg_archetypes.cards.parse_decklist_text(decklist)
# mtg_archetypes.parse_decklist_text(decklist)
mainboard = [
"4 Delver of Secrets",
"4 Daze",
Expand Down Expand Up @@ -239,9 +245,6 @@ uv run python scripts/validate_archetypes.py

# Also validate every card name against Scryfall catalog
uv run python scripts/validate_archetypes.py --check-cards

# Force update local Scryfall cache
uv run python scripts/validate_archetypes.py --update-scryfall
```

---
Expand Down
13 changes: 13 additions & 0 deletions archetypes/vintage/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Vintage Archetypes

The archetype definitions in this directory are heavily based on the Vintage format data from [Badaro/MTGOFormatData](https://github.com/Badaro/MTGOFormatData), created and maintained by [IamActuallyLvL1](https://github.com/IamActuallyLvL1) (see [fork](https://github.com/IamActuallyLvL1/MTGOFormatData)).

The main difference should be just a preference for "new" color names (Sultai vs. BUG, Dimir vs. UB)

We also categorize archetypes into the following:

- Bazaar
- Shops
- Combo
- Control
- Aggro
25 changes: 25 additions & 0 deletions archetypes/vintage/aggrovine.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: "Aggrovine"
category: "Bazaar"
priority: 95

mandatory:
- card: "Bazaar of Baghdad"
min: 2
in: "main"
- "Vengevine"

# Unlike Countervine, Aggrovine needs to make green mana
signatures:
- "Basking Rootwalla"
- "Blazing Rootwalla"
- "Gaea's Cradle"
- "Boseiju, Who Endures"
- "Yavimaya, Cradle of Growth"
- "Bayou"
- "Dryad Arbor"
- "Elvish Spirit Guide"
- "Once Upon a Time"
min_signatures: 3

anti_signatures:
- "Force of Will"
19 changes: 19 additions & 0 deletions archetypes/vintage/beseech-storm.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: "Beseech Storm"
category: "Combo"

# Higher priority than Tinker (100) and Storm (90)
priority: 105

mandatory:
- "Beseech the Mirror"
- "Tendrils of Agony"

signatures:
- "Tinker"
- "Dark Ritual"
- "Cabal Ritual"
- "Bolas's Citadel"
- "Necropotence"
- "Necrodominance"
- "Wishclaw Talisman"
min_signatures: 1
44 changes: 44 additions & 0 deletions archetypes/vintage/blue-control.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Despite the name, this doesn't have to be mono-U
name: "Blue Control"
category: "Control"

# Lower than more explicit archetypes but not a fallback
priority: 75

mandatory:
- "Force of Will"

signatures:
- "Swords to Plowshares"
- "Pyroblast"
- "Red Elemental Blast"
- "Fatal Push"
- "Preordain"
- "Ponder"
- "Brainstorm"
- "Ancestral Recall"
- "Mana Drain"
- "The One Ring"
- "Narset, Parter of Veils"
- "Teferi, Time Raveler"
- "Prismatic Ending"
- "Lightning Bolt"
- "Hullbreacher"
- "Force of Negation"
- "Lórien Revealed"
- "Volcanic Island"
- "Tundra"
min_signatures: 4

anti_signatures:
- "Tinker"
- "Bazaar of Baghdad"
- "Mishra's Workshop"
- "Doomsday"
- "Underworld Breach"
- "Paradoxical Outcome"
- "Oath of Druids"
- "Reanimate"
- "Lurrus of the Dream-Den"
- "Deathrite Shaman"
- "Chrome Mox"
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
name: "Underworld Breach"
category: "Aggro"
name: "Breach"
category: "Combo"
priority: 90

mandatory:
- "Underworld Breach"

signatures:
- "Lurrus of the Dream-Den"
- "Brain Freeze"
- "Gifts Ungiven"
- "Demonic Tutor"
- "Merchant Scroll"
- "wheel of fortune"
min_signatures: 3
min_signatures: 1

anti_signatures:
- "Lurrus of the Dream-Den"
- "Doomsday"
- "Oath of Druids"
6 changes: 3 additions & 3 deletions archetypes/vintage/countervine.yaml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
name: "CounterVine"
category: "Aggro"
name: "Countervine"
category: "Bazaar"
priority: 95

mandatory:
- card: "bazaar of baghdad"
min: 3
min: 2
- "Vengevine"

signatures:
Expand Down
7 changes: 6 additions & 1 deletion archetypes/vintage/dimir-lurrus.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: "Dimir Lurrus"
category: "Midrange"
category: "Lurrus"
priority: 90

mandatory:
Expand All @@ -9,10 +9,15 @@ signatures:
- "Psychic Frog"
- "Orcish Bowmasters"
- "Underground Sea"
- "Bilbo, Thief in the Night"
min_signatures: 2

anti_signatures:
- "Swords to Plowshares"
- "Tundra"
- "Tropical Island"
- "paradoxical outcome"
- "Time Vault"
- "Underworld Breach"
- "Doomsday"
- "Deathrite Shaman"
3 changes: 3 additions & 0 deletions archetypes/vintage/doomsday.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,6 @@ signatures:
- "demonic consultation"
- "time walk"
min_signatures: 2

anti_signatures:
- "Lurrus of the Dream-Den"
13 changes: 7 additions & 6 deletions archetypes/vintage/dredge.yaml
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
name: "Dredge"
category: "Aggro"
priority: 95
category: "Bazaar"

# Lower than Aggrovine and Countervine
priority: 90

mandatory:
- card: "bazaar of baghdad"
min: 3
min: 2

signatures:
- "golgari grave-troll"
- "stinkweed imp"
- "hollow one"
- "ichorid"
- "Creeping Chill"
- "Golgari Thug"
- "Shambling Shell"
min_signatures: 2

anti_signatures:
- "Vengevine"
10 changes: 5 additions & 5 deletions archetypes/vintage/eldrazi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ category: "Aggro"
priority: 90

mandatory:
- "sowing mycospawn"
- "glaring fleshraker"
- "eye of ugin"
- "eldrazi temple"

signatures:
- "wastescape battlemage"
- "kozileks command"
- "thought-knot seer"
- "eye of ugin"
- "gaeas cradle"
- "eldrazi temple"
min_signatures: 3
- "sowing mycospawn"
- "glaring fleshraker"
min_signatures: 2
11 changes: 10 additions & 1 deletion archetypes/vintage/esper-lurrus.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: "Esper Lurrus"
category: "Control"
category: "Lurrus"
priority: 90

mandatory:
Expand All @@ -11,3 +11,12 @@ signatures:
- "Tundra"
- "Underground Sea"
min_signatures: 3

anti_signatures:
- "Oswald Fiddlebender"
- "Time Vault"
- "Volcanic Island"
- "Tropical Island"
- "Underworld Breach"
- "Paradoxical Outcome"
- "Deathrite Shaman"
52 changes: 52 additions & 0 deletions archetypes/vintage/fallback-other-aggro.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: "Other Aggro"
category: "Aggro"
priority: 20

signature_groups:
- min: 2
cards:
- "Thalia, Guardian of Thraben"
- "Archon of Emeria"
- "Stoneforge Mystic"
- "Collector Ouphe"
- "Outland Liberator"
- "Luminarch Aspirant"
- "Noble Hierarch"
- "Anointed Peacekeeper"
- "Clarion Conqueror"
- "Containment Priest"
- "Spirit of the Labyrinth"
- "Phyrexian Revoker"
- "White Plume Adventurer"
- "Seasoned Dungeoneer"
- "Solitude"
- "Endurance"

signatures:
- "Thalia, Guardian of Thraben"
- "Archon of Emeria"
- "Stoneforge Mystic"
- "Collector Ouphe"
- "Outland Liberator"
- "Luminarch Aspirant"
- "Noble Hierarch"
- "Anointed Peacekeeper"
- "Clarion Conqueror"
- "Containment Priest"
- "Spirit of the Labyrinth"
- "Phyrexian Revoker"
- "White Plume Adventurer"
- "Seasoned Dungeoneer"
- "Solitude"
- "Endurance"
- "Wasteland"
- "Strip Mine"
- "Karakas"
- "Cavern of Souls"
- "Force of Vigor"
- "Once Upon a Time"
- "Simian Spirit Guide"
- "Elvish Spirit Guide"
- "Kaldra Compleat"
- "Batterskull"
min_signatures: 3
47 changes: 47 additions & 0 deletions archetypes/vintage/fallback-other-combo.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: "Other Combo"
category: "Combo"

# Other Lurrus (25) should match first
priority: 20

# Fair decks don't have these cards generally
signature_groups:
- min: 1
cards:
- "Painter's Servant"
- "Grindstone"
- "Show and Tell"
- "Time Vault"
- "Helm of Obedience"
- "Necropotence"
- "Necrodominance"
- "Aetherflux Reservoir"
- "Mind's Desire"
# Consider removing as some decks splash a fastbond
- "Fastbond"
- "Yawgmoth's Will"
- "Goblin Charbelcher"

signatures:
- "Painter's Servant"
- "Grindstone"
- "Goblin Engineer"
- "Goblin Welder"
- "Show and Tell"
- "Sneak Attack"
- "Omniscience"
- "Fastbond"
- "Yawgmoth's Will"
- "Necropotence"
- "Necrodominance"
- "Time Vault"
- "Manifold Key"
- "Voltaic Key"
- "Helm of Obedience"
- "Aetherflux Reservoir"
- "Mind's Desire"
- "Tendrils of Agony"
- "Bolas's Citadel"
- "Atraxa, Grand Unifier"
- "Archon of Cruelty"
min_signatures: 2
Loading
Loading