Card-Forge / Card-Forge/forge

We Say Thee Nay! — implementation / Forge AI simulation issue

Open
#11,693 0 comments 1 reaction 0 assignees View on GitHub
Dominant language
Java
Stars
2.7k
Forks
1.1k
Avg merge
1d 1h
Merged PRs (30d)
158

Description

`We Say Thee Nay!` (MSH #82) appears to have an implementation issue that prevents reliable AI-vs-AI/headless simulation.

### Card

**We Say Thee Nay!**
{1}{U} — Instant — Arcane

**Teamwork 2** — As an additional cost, you may tap creatures you control with total power 2 or more.

Counter target spell unless its controller pays {2}.

If cast using Teamwork, counter it unless they pay {4}.

### Observed problem

When running Forge headlessly for AI-vs-AI simulations, the card can produce an error similar to:

`SVar 'Any' not found`

The failure occurs while Forge is attempting to process/evaluate the card, and can cause the simulation to stall rather than completing normally.

This is particularly problematic for automated AI testing because a single game can fail to terminate.

### Reproduction

Environment:

* Forge: `2.0.15-SNAPSHOT`
* Mode: headless AI-vs-AI simulation
* Use a deck containing `We Say Thee Nay!`
* Allow the AI to reach a game state where the card can be cast

Observed behavior:

1. Forge reaches a decision involving `We Say Thee Nay!`.
2. The card is evaluated/resolved.
3. Forge reports an `SVar 'Any' not found` error.
4. The game may stop progressing / the simulation may hang.

### Expected behavior

Forge should correctly support both modes:

**Normal cast**

Counter target spell unless its controller pays {2}.

**Teamwork cast**

The player may tap creatures they control with total power 2 or more as an additional cost.

If Teamwork is used, counter target spell unless its controller pays {4}.

The Teamwork choice should be optional, and the AI should be able to make the choice without causing the game engine to fail.

### Why this matters

This is not only a gameplay implementation issue. It also affects automated testing and AI-vs-AI simulation because the failure can prevent games from terminating.

I have deliberately not substituted another counterspell because that would change the deck's behavior and make the simulation results inaccurate.

If useful, I can provide the exact Forge command, log output, decklist, and reproduction setup.

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the headless AI-vs-AI scenario with a deck containing We Say Thee Nay! and capture the SVar 'Any' not found error. Trace the card evaluation and resolution path for normal and Teamwork casts. Done means both modes resolve correctly, the AI can choose Teamwork optionally, and simulations no longer stall.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
game-dev, testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.