{
  "format": "deckcraft-game/1",
  "name": "Dominion (verification kingdom)",
  "meta": {
    "game_briefing": {
      "game_name": "Dominion (gap probe)",
      "game_pitch": "The genre founder, authored to find what DeckCraft cannot express.",
      "game_mechanic": "deckbuild",
      "player_count_min": 2,
      "player_count_max": 2
    },
    "trackers": [
      {
        "id": "actions",
        "label": "Actions",
        "type": "counter",
        "role": "counter",
        "scope": "per_player",
        "visibility": "public",
        "starts_at": 1,
        "min": 0,
        "max": null,
        "regenerates": "per_turn_reset_to_X"
      },
      {
        "id": "buys",
        "label": "Buys",
        "type": "counter",
        "role": "counter",
        "scope": "per_player",
        "visibility": "public",
        "starts_at": 1,
        "min": 0,
        "max": null,
        "regenerates": "per_turn_reset_to_X"
      },
      {
        "id": "coins",
        "label": "Coins",
        "type": "counter",
        "role": "resource",
        "scope": "per_player",
        "visibility": "public",
        "starts_at": 0,
        "min": 0,
        "max": null,
        "regenerates": "per_turn_reset_to_zero"
      },
      {
        "id": "vp",
        "label": "Victory Points",
        "type": "counter",
        "role": "score",
        "scope": "per_player",
        "visibility": "public",
        "starts_at": 0,
        "min": null,
        "max": null,
        "regenerates": null,
        "description": "GAP: real Dominion counts VP on cards at game end; nothing increments this tracker."
      }
    ],
    "game_zones": [
      {
        "id": "draw_pile",
        "label": "Draw Pile",
        "scope": "per_player",
        "visibility": "hidden",
        "ordering": "stack",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      },
      {
        "id": "hand",
        "label": "Hand",
        "scope": "per_player",
        "visibility": "owner",
        "ordering": "unordered",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      },
      {
        "id": "in_play",
        "label": "In Play",
        "scope": "per_player",
        "visibility": "public",
        "ordering": "unordered",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      },
      {
        "id": "discard",
        "label": "Discard",
        "scope": "per_player",
        "visibility": "public",
        "ordering": "stack",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      },
      {
        "id": "trash",
        "label": "Trash",
        "scope": "shared",
        "visibility": "public",
        "ordering": "unordered",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      },
      {
        "id": "copper_pile",
        "label": "Copper pile",
        "scope": "shared",
        "visibility": "public",
        "ordering": "unordered",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      },
      {
        "id": "silver_pile",
        "label": "Silver pile",
        "scope": "shared",
        "visibility": "public",
        "ordering": "unordered",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      },
      {
        "id": "gold_pile",
        "label": "Gold pile",
        "scope": "shared",
        "visibility": "public",
        "ordering": "unordered",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      },
      {
        "id": "estate_pile",
        "label": "Estate pile",
        "scope": "shared",
        "visibility": "public",
        "ordering": "unordered",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      },
      {
        "id": "duchy_pile",
        "label": "Duchy pile",
        "scope": "shared",
        "visibility": "public",
        "ordering": "unordered",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      },
      {
        "id": "province_pile",
        "label": "Province pile",
        "scope": "shared",
        "visibility": "public",
        "ordering": "unordered",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      },
      {
        "id": "curse_pile",
        "label": "Curse pile",
        "scope": "shared",
        "visibility": "public",
        "ordering": "unordered",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      },
      {
        "id": "village_pile",
        "label": "Village pile",
        "scope": "shared",
        "visibility": "public",
        "ordering": "unordered",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      },
      {
        "id": "smithy_pile",
        "label": "Smithy pile",
        "scope": "shared",
        "visibility": "public",
        "ordering": "unordered",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      },
      {
        "id": "market_pile",
        "label": "Market pile",
        "scope": "shared",
        "visibility": "public",
        "ordering": "unordered",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      },
      {
        "id": "festival_pile",
        "label": "Festival pile",
        "scope": "shared",
        "visibility": "public",
        "ordering": "unordered",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      },
      {
        "id": "guildhall_pile",
        "label": "Guildhall pile",
        "scope": "shared",
        "visibility": "public",
        "ordering": "unordered",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      },
      {
        "id": "broker_pile",
        "label": "Guild Broker pile",
        "scope": "shared",
        "visibility": "public",
        "ordering": "unordered",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      },
      {
        "id": "council_room_pile",
        "label": "Council Room pile",
        "scope": "shared",
        "visibility": "public",
        "ordering": "unordered",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      },
      {
        "id": "militia_pile",
        "label": "Militia pile",
        "scope": "shared",
        "visibility": "public",
        "ordering": "unordered",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      },
      {
        "id": "sacrifice_pile",
        "label": "Sacrifice pile",
        "scope": "shared",
        "visibility": "public",
        "ordering": "unordered",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      },
      {
        "id": "gardens_pile",
        "label": "Gardens pile",
        "scope": "shared",
        "visibility": "public",
        "ordering": "unordered",
        "constraints": {
          "accepts_types": [
            "*"
          ],
          "max_cards": null,
          "exclusive": false
        },
        "auto_refill": null,
        "reset": null,
        "setup": null
      }
    ],
    "phases": [
      {
        "id": "action",
        "label": "Action Phase",
        "kind": "player_driven",
        "scope": "per_player",
        "repeat": "until_player_ends",
        "allowed_actions": [
          "play_card",
          "end_phase"
        ],
        "mandatory_actions": [],
        "description": "GAP: only Action cards playable here, each spending 1 from the actions tracker - neither restriction expressible."
      },
      {
        "id": "buy",
        "label": "Buy Phase",
        "kind": "player_driven",
        "scope": "per_player",
        "repeat": "until_player_ends",
        "allowed_actions": [
          "play_card",
          "buy_from_market",
          "treasure_combo",
          "end_phase"
        ],
        "mandatory_actions": [],
        "description": "GAP: buys should be limited by the buys tracker; treasures only playable here."
      },
      {
        "id": "cleanup",
        "label": "Cleanup",
        "kind": "automatic",
        "scope": "per_player",
        "repeat": "once",
        "allowed_actions": [],
        "mandatory_actions": [
          {
            "action": "discard_zone",
            "params": {
              "from_zone": "hand",
              "to_zone": "discard"
            }
          },
          {
            "action": "discard_zone",
            "params": {
              "from_zone": "in_play",
              "to_zone": "discard"
            }
          },
          {
            "action": "draw_n_cards",
            "params": {
              "n": 5,
              "from_zone": "draw_pile"
            }
          }
        ]
      }
    ],
    "actions": [
      "play_card",
      "buy_from_market",
      "end_phase",
      "treasure_combo"
    ],
    "enabled_mechanics": [
      "gain_resource",
      "draw_cards",
      "discard_cards"
    ],
    "card_types": {
      "event": {
        "enabled": true
      },
      "resource_card": {
        "enabled": true
      },
      "objective": {
        "enabled": true
      }
    },
    "ending": {
      "ends_when": [
        {
          "label": "Province pile empty",
          "_recipe": "most_at_end",
          "when": {
            "==": [
              {
                "count_cards": [
                  {
                    "zone": "province_pile",
                    "owner": "shared"
                  }
                ]
              },
              0
            ]
          },
          "scope": "any_player",
          "terminates_at": "end_of_turn",
          "resolution": {
            "kind": "scoring",
            "objective": "maximize",
            "winner_rule": "highest_metric",
            "metric": {
              "expr": {
                "sum_cards": {
                  "zones": [
                    "draw_pile",
                    "hand",
                    "in_play",
                    "discard"
                  ],
                  "owner": "player",
                  "field": "vp"
                }
              },
              "authored": {
                "level": "formula",
                "preset": "sum_cards",
                "params": {
                  "zones": "draw_pile, hand, in_play, discard",
                  "field": "vp"
                }
              }
            }
          }
        },
        {
          "label": "Any 3 supply piles empty - INEXPRESSIBLE (needs count_zones_where, evaluator TODO #5)",
          "when": null,
          "scope": "any_player",
          "terminates_at": "end_of_turn",
          "resolution": {
            "kind": "scoring",
            "objective": "maximize",
            "winner_rule": "highest_metric",
            "metric": {
              "expr": {
                "sum_cards": {
                  "zones": [
                    "draw_pile",
                    "hand",
                    "in_play",
                    "discard"
                  ],
                  "owner": "player",
                  "field": "vp"
                }
              },
              "authored": {
                "level": "formula",
                "preset": "sum_cards",
                "params": {
                  "zones": "draw_pile, hand, in_play, discard",
                  "field": "vp"
                }
              }
            }
          }
        }
      ]
    },
    "setup_spec": {
      "turn_order": "clockwise",
      "first_player_rule": "random",
      "starting_hand_size": 5,
      "initial_tracker_overrides": {},
      "deck_to_zone_map": {
        "Pile: Copper": "copper_pile",
        "Pile: Silver": "silver_pile",
        "Pile: Gold": "gold_pile",
        "Pile: Estate": "estate_pile",
        "Pile: Duchy": "duchy_pile",
        "Pile: Province": "province_pile",
        "Pile: Curse": "curse_pile",
        "Pile: Village": "village_pile",
        "Pile: Smithy": "smithy_pile",
        "Pile: Market": "market_pile",
        "Pile: Festival": "festival_pile",
        "Pile: Council Room": "council_room_pile",
        "Pile: Militia": "militia_pile",
        "Pile: Gardens": "gardens_pile",
        "Pile: Guild Broker": "broker_pile",
        "Pile: Sacrifice": "sacrifice_pile",
        "Pile: Guildhall": "guildhall_pile"
      },
      "_note": "GAP: mapping is by deck NAME (ids do not exist before import); engine expects ids."
    },
    "action_bindings": {
      "play_card": {
        "phase_types": {
          "action": [
            "event"
          ],
          "buy": [
            "resource_card"
          ]
        },
        "play_costs": [
          {
            "tracker": "actions",
            "amount": 1,
            "card_types": [
              "event"
            ]
          }
        ]
      },
      "buy_from_market": {
        "uses_per_turn": {
          "tracker": "buys"
        }
      },
      "treasure_combo": {
        "requires": {
          "named": "can_treasure_combo"
        }
      }
    },
    "card_sets": {
      "treasure_triple": {
        "label": "Three treasures of a kind",
        "from": [
          "hand"
        ],
        "filter": {
          "type": "resource_card"
        },
        "count": {
          "min": 3,
          "max": 3
        },
        "same": "name"
      }
    },
    "conditions": {
      "can_treasure_combo": {
        "label": "Holds a treasure triple",
        "authored": {
          "preset": "has_set",
          "params": {
            "set": "treasure_triple"
          }
        }
      }
    },
    "action_definitions": {
      "treasure_combo": {
        "label": "Melt down a treasure triple",
        "steps": [
          {
            "do": "choose_cards",
            "set": "treasure_triple",
            "auto": true,
            "as": "trio"
          },
          {
            "do": "move",
            "cards": "$trio",
            "to": "trash"
          },
          {
            "do": "adjust_tracker",
            "tracker": "coins",
            "amount": 6
          }
        ]
      }
    }
  },
  "decks": [
    {
      "name": "Starter Deck",
      "is_starter": 1,
      "soft": 10,
      "hard": 10,
      "cards": [
        {
          "name": "Copper",
          "type": "resource_card",
          "behaviours": [],
          "families": [],
          "description": "",
          "cost": {
            "coins": 0
          },
          "effects": [
            {
              "effect_key": "gain_n_resource_to_self",
              "trigger": "on_play",
              "parameters": {
                "amount": 1,
                "resource_type": "coins"
              }
            }
          ],
          "copies": 7
        },
        {
          "name": "Estate",
          "type": "objective",
          "behaviours": [],
          "families": [],
          "description": "Worth 1 VP at game end.",
          "cost": {
            "coins": 2
          },
          "effects": [],
          "copies": 3,
          "attributes": {
            "vp": 1
          }
        }
      ]
    },
    {
      "name": "Pile: Copper",
      "is_starter": 0,
      "soft": 46,
      "hard": 60,
      "cards": [
        {
          "name": "Copper",
          "type": "resource_card",
          "behaviours": [],
          "families": [],
          "description": "",
          "cost": {
            "coins": 0
          },
          "effects": [
            {
              "effect_key": "gain_n_resource_to_self",
              "trigger": "on_play",
              "parameters": {
                "amount": 1,
                "resource_type": "coins"
              }
            }
          ],
          "copies": 46
        }
      ]
    },
    {
      "name": "Pile: Silver",
      "is_starter": 0,
      "soft": 40,
      "hard": 60,
      "cards": [
        {
          "name": "Silver",
          "type": "resource_card",
          "behaviours": [],
          "families": [],
          "description": "",
          "cost": {
            "coins": 3
          },
          "effects": [
            {
              "effect_key": "gain_n_resource_to_self",
              "trigger": "on_play",
              "parameters": {
                "amount": 2,
                "resource_type": "coins"
              }
            }
          ],
          "copies": 40
        }
      ]
    },
    {
      "name": "Pile: Gold",
      "is_starter": 0,
      "soft": 30,
      "hard": 60,
      "cards": [
        {
          "name": "Gold",
          "type": "resource_card",
          "behaviours": [],
          "families": [],
          "description": "",
          "cost": {
            "coins": 6
          },
          "effects": [
            {
              "effect_key": "gain_n_resource_to_self",
              "trigger": "on_play",
              "parameters": {
                "amount": 3,
                "resource_type": "coins"
              }
            }
          ],
          "copies": 30
        }
      ]
    },
    {
      "name": "Pile: Estate",
      "is_starter": 0,
      "soft": 8,
      "hard": 60,
      "cards": [
        {
          "name": "Estate",
          "type": "objective",
          "behaviours": [],
          "families": [],
          "description": "Worth 1 VP at game end.",
          "cost": {
            "coins": 2
          },
          "effects": [],
          "copies": {
            "expr": {
              "by_player_count": {
                "map": {
                  "2": 8,
                  "3": 12,
                  "4": 12
                },
                "default": 12
              }
            },
            "authored": {
              "level": "formula",
              "preset": "by_player_count",
              "params": {
                "2": 8,
                "3": 12,
                "4": 12,
                "default": 12
              }
            }
          },
          "attributes": {
            "vp": 1
          }
        }
      ]
    },
    {
      "name": "Pile: Duchy",
      "is_starter": 0,
      "soft": 8,
      "hard": 60,
      "cards": [
        {
          "name": "Duchy",
          "type": "objective",
          "behaviours": [],
          "families": [],
          "description": "Worth 3 VP at game end.",
          "cost": {
            "coins": 5
          },
          "effects": [],
          "copies": {
            "expr": {
              "by_player_count": {
                "map": {
                  "2": 8,
                  "3": 12,
                  "4": 12
                },
                "default": 12
              }
            },
            "authored": {
              "level": "formula",
              "preset": "by_player_count",
              "params": {
                "2": 8,
                "3": 12,
                "4": 12,
                "default": 12
              }
            }
          },
          "attributes": {
            "vp": 3
          }
        }
      ]
    },
    {
      "name": "Pile: Province",
      "is_starter": 0,
      "soft": 8,
      "hard": 60,
      "cards": [
        {
          "name": "Province",
          "type": "objective",
          "behaviours": [],
          "families": [],
          "description": "Worth 6 VP at game end.",
          "cost": {
            "coins": 8
          },
          "effects": [],
          "copies": {
            "expr": {
              "by_player_count": {
                "map": {
                  "2": 8,
                  "3": 12,
                  "4": 12
                },
                "default": 12
              }
            },
            "authored": {
              "level": "formula",
              "preset": "by_player_count",
              "params": {
                "2": 8,
                "3": 12,
                "4": 12,
                "default": 12
              }
            }
          },
          "attributes": {
            "vp": 6
          }
        }
      ]
    },
    {
      "name": "Pile: Curse",
      "is_starter": 0,
      "soft": 10,
      "hard": 60,
      "cards": [
        {
          "name": "Curse",
          "type": "objective",
          "behaviours": [],
          "families": [],
          "description": "Worth -1 VP.",
          "cost": {
            "coins": 0
          },
          "effects": [],
          "copies": {
            "expr": {
              "by_player_count": {
                "map": {
                  "2": 10,
                  "3": 20,
                  "4": 30
                },
                "default": 30
              }
            },
            "authored": {
              "level": "formula",
              "preset": "by_player_count",
              "params": {
                "2": 10,
                "3": 20,
                "4": 30,
                "default": 30
              }
            }
          },
          "attributes": {
            "vp": -1
          }
        }
      ]
    },
    {
      "name": "Pile: Village",
      "is_starter": 0,
      "soft": 10,
      "hard": 60,
      "cards": [
        {
          "name": "Village",
          "type": "event",
          "behaviours": [],
          "families": [],
          "description": "+1 Card +2 Actions",
          "cost": {
            "coins": 3
          },
          "effects": [
            {
              "effect_key": "draw_n_cards_to_self",
              "trigger": "on_play",
              "parameters": {
                "amount": 1
              }
            },
            {
              "effect_key": "gain_n_resource_to_self",
              "trigger": "on_play",
              "parameters": {
                "amount": 2,
                "resource_type": "actions"
              }
            }
          ],
          "copies": 10
        }
      ]
    },
    {
      "name": "Pile: Smithy",
      "is_starter": 0,
      "soft": 10,
      "hard": 60,
      "cards": [
        {
          "name": "Smithy",
          "type": "event",
          "behaviours": [],
          "families": [],
          "description": "+3 Cards",
          "cost": {
            "coins": 4
          },
          "effects": [
            {
              "effect_key": "draw_n_cards_to_self",
              "trigger": "on_play",
              "parameters": {
                "amount": 3
              }
            }
          ],
          "copies": 10
        }
      ]
    },
    {
      "name": "Pile: Market",
      "is_starter": 0,
      "soft": 10,
      "hard": 60,
      "cards": [
        {
          "name": "Market",
          "type": "event",
          "behaviours": [],
          "families": [],
          "description": "+1 Card +1 Action +1 Buy +1 Coin",
          "cost": {
            "coins": 5
          },
          "effects": [
            {
              "effect_key": "draw_n_cards_to_self",
              "trigger": "on_play",
              "parameters": {
                "amount": 1
              }
            },
            {
              "effect_key": "gain_n_resource_to_self",
              "trigger": "on_play",
              "parameters": {
                "amount": 1,
                "resource_type": "actions"
              }
            },
            {
              "effect_key": "gain_n_resource_to_self",
              "trigger": "on_play",
              "parameters": {
                "amount": 1,
                "resource_type": "buys"
              }
            },
            {
              "effect_key": "gain_n_resource_to_self",
              "trigger": "on_play",
              "parameters": {
                "amount": 1,
                "resource_type": "coins"
              }
            }
          ],
          "copies": 10
        }
      ]
    },
    {
      "name": "Pile: Festival",
      "is_starter": 0,
      "soft": 10,
      "hard": 60,
      "cards": [
        {
          "name": "Festival",
          "type": "event",
          "behaviours": [],
          "families": [],
          "description": "+2 Actions +1 Buy +2 Coins",
          "cost": {
            "coins": 5
          },
          "effects": [
            {
              "effect_key": "gain_n_resource_to_self",
              "trigger": "on_play",
              "parameters": {
                "amount": 2,
                "resource_type": "actions"
              }
            },
            {
              "effect_key": "gain_n_resource_to_self",
              "trigger": "on_play",
              "parameters": {
                "amount": 1,
                "resource_type": "buys"
              }
            },
            {
              "effect_key": "gain_n_resource_to_self",
              "trigger": "on_play",
              "parameters": {
                "amount": 2,
                "resource_type": "coins"
              }
            }
          ],
          "copies": 10
        }
      ]
    },
    {
      "name": "Pile: Guildhall",
      "is_starter": 0,
      "soft": 10,
      "hard": 60,
      "cards": [
        {
          "name": "Merchant Guildhall",
          "description": "While this is in play, everything you buy costs 1 less.",
          "type": "event",
          "cost": {
            "coins": 5
          },
          "attributes": {},
          "copies": 10,
          "effects": [],
          "modifiers": [
            {
              "active_while": {
                "in_zone": "in_play",
                "owner": "self"
              },
              "property": "buy_cost",
              "target": {
                "who": "controller"
              },
              "operation": "add",
              "value": -1
            }
          ]
        }
      ]
    },
    {
      "name": "Pile: Guild Broker",
      "is_starter": 0,
      "soft": 10,
      "hard": 60,
      "cards": [
        {
          "name": "Guild Broker",
          "description": "This turn, every card you buy pays you back 1 coin.",
          "type": "event",
          "cost": {
            "coins": 4
          },
          "attributes": {},
          "copies": 10,
          "effects": [
            {
              "effect_key": "gain_n_resource_to_self",
              "trigger": {
                "event": "action_performed",
                "action": "buy_from_market",
                "actor": "self"
              },
              "parameters": {
                "amount": 1,
                "resource_type": "coins"
              }
            }
          ]
        }
      ]
    },
    {
      "name": "Pile: Council Room",
      "is_starter": 0,
      "soft": 10,
      "hard": 60,
      "cards": [
        {
          "name": "Council Room",
          "type": "event",
          "behaviours": [],
          "families": [],
          "description": "+4 Cards +1 Buy; each other player draws a card",
          "cost": {
            "coins": 5
          },
          "effects": [
            {
              "effect_key": "draw_n_cards_to_self",
              "trigger": "on_play",
              "parameters": {
                "amount": 4
              }
            },
            {
              "effect_key": "gain_n_resource_to_self",
              "trigger": "on_play",
              "parameters": {
                "amount": 1,
                "resource_type": "buys"
              }
            },
            {
              "effect_key": "each_opponent_draws",
              "trigger": "on_play",
              "parameters": {
                "amount": 1
              }
            }
          ],
          "copies": 10
        }
      ]
    },
    {
      "name": "Pile: Militia",
      "is_starter": 0,
      "soft": 10,
      "hard": 60,
      "cards": [
        {
          "name": "Militia",
          "type": "event",
          "behaviours": [],
          "families": [],
          "description": "+2 Coins; each other player discards down to 3",
          "cost": {
            "coins": 4
          },
          "effects": [
            {
              "effect_key": "gain_n_resource_to_self",
              "trigger": "on_play",
              "parameters": {
                "amount": 2,
                "resource_type": "coins"
              }
            },
            {
              "effect_key": "opponents_discard_down_to",
              "trigger": "on_play",
              "parameters": {
                "hand_size": 3
              }
            }
          ],
          "copies": 10
        }
      ]
    },
    {
      "name": "Pile: Sacrifice",
      "is_starter": 0,
      "soft": 10,
      "hard": 60,
      "cards": [
        {
          "name": "Sacrifice",
          "description": "Trash 2 cards of your choice from your hand.",
          "type": "event",
          "cost": {
            "coins": 2
          },
          "attributes": {},
          "copies": 10,
          "effects": [
            {
              "effect_key": "discard_1_card_from_self",
              "trigger": "on_play",
              "to": "trash",
              "parameters": {
                "amount": 2,
                "cards": {
                  "source": "player",
                  "chooser": "subject",
                  "from": "hand"
                }
              }
            }
          ]
        }
      ]
    },
    {
      "name": "Pile: Gardens",
      "is_starter": 0,
      "soft": 10,
      "hard": 60,
      "cards": [
        {
          "name": "Gardens",
          "type": "objective",
          "behaviours": [],
          "families": [],
          "description": "Worth 1 VP per 10 cards in your deck",
          "cost": {
            "coins": 4
          },
          "effects": [],
          "copies": 10,
          "attributes": {
            "vp": {
              "expr": {
                "floor_div": [
                  {
                    "count_cards": {
                      "zones": [
                        "draw_pile",
                        "hand",
                        "in_play",
                        "discard"
                      ],
                      "owner": "player"
                    }
                  },
                  10
                ]
              },
              "authored": {
                "level": "formula",
                "preset": "count_per_n",
                "params": {
                  "zones": "draw_pile, hand, in_play, discard",
                  "n": 10
                }
              }
            }
          }
        }
      ]
    }
  ]
}