-
-
Notifications
You must be signed in to change notification settings - Fork 144
fix(engine): add player-counter Ward cost for "Get five poison counters" #6662
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 7 commits
d7f0f6b
cfd05a1
e4d9262
bf6c968
b68416b
e6a875e
816f749
afb85f4
e392c0c
d29e8f2
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -1455,7 +1455,7 @@ fn sink_mana_cost(acc: &mut NodeAcc, cost: &ManaCost) { | |
| } | ||
|
|
||
| /// CR 118 cost fold: the fourth compile-time drift gate — an exhaustive | ||
| /// **no-wildcard** match over all 29 [`AbilityCost`] variants. Polarity/sign | ||
| /// **no-wildcard** match over all 30 [`AbilityCost`] variants. Polarity/sign | ||
| /// aware: a cost consumes a resource (negative `net`, ⇒ `requires`) or, in cost | ||
| /// position, *produces* one (positive `net`, ⇒ `produces`). Field-less axes | ||
| /// (`Tap`, `AnyCounter`) are injected directly. | ||
|
|
@@ -1569,6 +1569,11 @@ fn fold_cost(acc: &mut NodeAcc, cost: &AbilityCost) { | |
| // cast (the spell being cast), never an activation cost of this ability, | ||
| // so it carries no modeled axis for the loop detector. | ||
| | AbilityCost::KeywordCostOfCastSpell { .. } | ||
| // CR 702.21a: a Ward player-counter cost, like the effect-side | ||
| // `Effect::GivePlayerCounter` above, carries no modeled axis here — | ||
| // poison accumulation is a loss condition, not a combo resource this | ||
| // loop detector tracks. | ||
| | AbilityCost::GetPlayerCounters { .. } | ||
| | AbilityCost::Unimplemented { .. } => {} | ||
|
Comment on lines
+1572
to
1577
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift Preserve
As per path instructions, parameterized variants must retain their semantic axis; the parser coverage demonstrates this is not a poison-only variant. 🤖 Prompt for AI AgentsSource: Path instructions |
||
| } | ||
| } | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Keep engine-provided
counter_kindunchanged.This still transforms the engine enum into an i18n key and passes the translated noun as
kind. Localize only the surrounding template; passcost.counter_kindthrough unchanged or expose a display-ready label from the engine/adapter.Suggested fix
🤖 Prompt for AI Agents
Sources: Path instructions, Learnings