Skip to content

engine: attack and block requirements, and blocking an additional creature #739

Description

@ninthworld

Parent: #706. One of the exclusion families blocking the 104 M19 cards the catalog does not yet define.

Exclusion (crates/sage-engine/data/exclusions.json): Attack and block requirements, and blocking an additional creature — a declaration can be restricted but never required, and a blocker blocks one attacker.

M19 cards blocked (2)

# Card Shape
181 Ghastbark Twins may block one additional creature each combat — otherwise a vanilla trample body
175 Declare Dominance every creature able to block the pumped creature must do so

Scope

Two independent changes, and the first is much cheaper than the second:

  1. A blocker blocking more than one attacker. Today the declaration maps one blocker to one attacker. Lifting it touches the block legality check, the combat damage assignment (a blocker assigns its damage among the attackers it blocks), and the view. Ghastbark Twins is a permission, not a requirement, so it needs no maximisation logic at all.
  2. Requirements. CR 509.1c is the hard one: the declaration must satisfy the maximum possible number of requirements without violating any restriction, which makes validating a submitted block a search rather than a per-pair check. Restrictions still win over requirements, and a requirement that cannot be met is simply not met.

Do them in that order, in separate PRs. Requirements also need a clear answer for what the client is told — the blocker slot's prompt already carries whole-declaration facts like menace, and a requirement is another one.

Acceptance criteria

  • Ghastbark Twins authored, printed in data/sets/M19.json, and tested on the real apply_action.
  • Tests cover: blocking two attackers, damage assigned among them, and the second block still being refused for a creature without the permission.
  • If requirements land, a test asserts a declaration meeting fewer requirements than possible is rejected, and that a restriction beats a requirement.
  • Generated rules text covers both.
  • The exclusion narrows or drops; make compat regenerated and committed.
  • docs/card-schema.md and docs/protocol.md (prompt text) updated; make verify green.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions