Skip to content

Implement assimilate and Borg Queen, Perfection Manifest - #11716

Open
liamiak wants to merge 2 commits into
Card-Forge:masterfrom
liamiak:implement-assimilate
Open

Implement assimilate and Borg Queen, Perfection Manifest#11716
liamiak wants to merge 2 commits into
Card-Forge:masterfrom
liamiak:implement-assimilate

Conversation

@liamiak

@liamiak liamiak commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Closes #11240.

Two commits, and the second one is droppable.

1 — the card. Uses the existing StaticEffect$ on ChangeZone, which GameAction.setupStaticEffect
applies before the card enters, so the types are already in place for ETB triggers. Card script and
tests only, no engine change - the same shape as Ashiok, Nightmare Weaver and Bronzehide Lion.

| GainControl$ True | WithCountersType$ P1P1 | StaticEffect$ Animate
SVar:Animate:Mode$ Continuous | Affected$ Card.IsRemembered | AddType$ Artifact & Creature & Borg | RemoveCreatureTypes$ True

2 — an Assimilate API, per @Hanmac: the keyword's rules in one place so the two forms cannot
drift. A card in a graveyard or exile is moved and the type change rides that zone change; a
permanent already on the battlefield only changes hands and is animated where it stands. The card
script becomes DB$ Assimilate | TgtZone$ Graveyard | ValidTgts$ Creature.OppOwn.

That half is speculation, and I would rather label it than bury it. Scryfall has exactly one card
with "assimilate" in its oracle text and it only ever reaches a graveyard, so the battlefield branch
has no card behind it - it is covered by a test that drives the API directly. The commits are
separable: drop the second and the card still works through StaticEffect$.
I ran the first
commit on its own to check that rather than assume it.

Entering already typed is measured, not assumed. With Reckless Fireweaver out ("whenever an artifact
you control enters"), assimilating deals 2 damage - one for the Queen, one for what she
assimilated. Applied after the move it deals 1.

Borg is already in TypeLists.txt and the edition file already lists 197. The type change adds
Artifact and Creature but does not remove card types, so an assimilated Nyx-Fleece Ram stays an
enchantment.

Eight tests. The seven from the first commit are untouched by the second and pass against both
implementations, including the one that checks a creature on their battlefield stays out of reach.

Full desktop suite: 368 tests, 0 failures, 6 skipped. Checkstyle clean.

Written with Claude Opus 5 (also recorded in the commit co-authors).

@Hanmac

Hanmac commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

@liamiak i was waiting for this one because my gut is telling me that the Effect changes depending on if the Target is in the Graveyard or in on the Battlefield

So it should probably capsuled in a Assimilate Effect

@tool4ever we had ÀnimateSubAbility` before but it got replaced with some other effect?
But i can't remember how exactly

Comment thread forge-gui/res/cardsfolder/upcoming/borg_queen_perfection_manifest.txt Outdated
liamiak1 and others added 2 commits August 28, 2026 08:44
Closes Card-Forge#11240.

Uses the existing StaticEffect$ mechanism on ChangeZone, which applies the
type change before the card enters the battlefield.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Speculative, and separable from the commit before it: the printed card only
assimilates from a graveyard, and this also handles a permanent already on
the battlefield, which no card asks for yet. Drop this commit and the card
still works through StaticEffect$.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@liamiak
liamiak force-pushed the implement-assimilate branch from 54349ab to 8e09b5a Compare August 28, 2026 14:56
@liamiak

liamiak commented Aug 28, 2026

Copy link
Copy Markdown
Contributor Author

@Hanmac — you were both right about AnimateSubAbility. That is gone; the first commit uses StaticEffect$.

On encapsulating it: the second commit does, as an Assimilate API covering both forms — graveyard or exile moves the card, a permanent on the battlefield changes hands and is animated where it stands.

Recording for the record that right now, Scryfall has exactly one card with the word in its oracle text and it only reaches a graveyard, so the battlefield branch has no card behind it and is only covered by a test driving the API directly. The two commits are separable — drop the second and the card still works. If you know of other assimilate cards coming, that would decide if we need this.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

StarTrek: Assimilate

4 participants