Card-Forge / forge

An unofficial rules engine for the world's greatest card game.
https://card-forge.github.io/forge/
GNU General Public License v3.0
971 stars 561 forks source link

ThisTurnEntered can sometimes fail as source for Discarded #1249

Open tool4ever opened 2 years ago

tool4ever commented 2 years ago

Because of Harness Infinity you now get cards back after with Shadow of the Grave.

Hanmac commented 2 years ago

what of them using ThisTurnEntered? is it DiscardedThisTurn?

technically none of these cards should care about each other?

tool4ever commented 2 years ago

Shadow of the Grave:

Return to your hand all cards in your graveyard that you cycled or discarded this turn.

I think Harness Infinity might be the only card that puts card from your hand into graveyard that's not discarding.

Hanmac commented 2 years ago

thats why i was asking what was using ThisTurnEntered, but yeah we might need extra logic for this.

same with Mill if something would look for milled cards

Hanmac commented 2 years ago

@Agetian @tool4ever @Northmoc you guys opinion to this:

Northmoc commented 2 years ago

I lean more toward improving Discard over messing with ChangeZone... ChangeZone is already a bit gnarly IMO

tool4ever commented 2 years ago

There were still other Discard bugs in the old issues I couldn't fix yet, unfortunately for the whole list I'd have to dig it up again.

Not sure how related they would be but some were replacement problems:

Hanmac commented 2 years ago

it will be more clear when Discard is its own effect

Agetian commented 2 years ago

Yes, agreed that Discard effect sounds cleaner :)

Hanmac commented 2 years ago

we should make a list of current Discard Effects:

After i finished writing, there already is a discard effect ;P We all seems to have forgotten it XD But it only works for players currently

What we should do is to move Defined Card into the Discard Effect

Hanmac commented 2 years ago

i think i finished the first part

but i need to read how Obstinate Baloth would interact with Madness, like if you would choose discard it for madness "If a player would discard this card, that player discards it" would that still cause the Replacement Effect from the Baloth to run?

tool4ever commented 2 years ago

For Madness it might be ok because it will never be controlled by opponent?

I thought the other ruling with Leyline of the Void might be worse: it's R:Event$ Moved while Baloth is Discarded but it says you should still get to choose :/

tool4ever commented 2 years ago

I found the tricky rule again:

701.8c If a card is discarded, but an effect causes it to be put into a hidden zone instead of into its owner’s graveyard without being revealed, all values of that card’s characteristics are considered to be undefined. If a card is discarded this way to pay a cost that specifies a characteristic about the discarded card, that cost payment is illegal; the game returns to the moment before the cost was paid

This means Waste Not should never trigger[^1] if Library of Leng replaces a discard

[^1]: Still need to check some conflicting statements about statics that might reveal hand/top library at that moment

Hanmac commented 2 years ago

For Madness it might be ok because it will never be controlled by opponent?

I thought the other ruling with Leyline of the Void might be worse: it's R:Event$ Moved while Baloth is Discarded but it says you should still get to choose :/

Replace Discard happens before Replace Moved, meaning Leyline doesn't work against Baloth

tool4ever commented 2 years ago

For Madness it might be ok because it will never be controlled by opponent? I thought the other ruling with Leyline of the Void might be worse: it's R:Event$ Moved while Baloth is Discarded but it says you should still get to choose :/

Replace Discard happens before Replace Moved, meaning Leyline doesn't work against Baloth

Yea I would agree but unless the ruling is outdated it seems to say in this case it's still a more special Moved replacement with Discard as cause?

If a spell or ability an opponent controls causes you to discard Obstinate Baloth, and both Obstinate Baloth’s ability and another ability (such as that of an opponent’s Leyline of the Void) instruct you to put Obstinate Baloth somewhere else instead of putting it into your graveyard, you choose which one to apply.

Hanmac commented 2 years ago

For Madness it might be ok because it will never be controlled by opponent? I thought the other ruling with Leyline of the Void might be worse: it's R:Event$ Moved while Baloth is Discarded but it says you should still get to choose :/

Replace Discard happens before Replace Moved, meaning Leyline doesn't work against Baloth

Yea I would agree but unless the ruling is outdated it seems to say in this case it's still a more special Moved replacement with Discard as cause?

If a spell or ability an opponent controls causes you to discard Obstinate Baloth, and both Obstinate Baloth’s ability and another ability (such as that of an opponent’s Leyline of the Void) instruct you to put Obstinate Baloth somewhere else instead of putting it into your graveyard, you choose which one to apply.

i don't know, i need to ask Rules manager for this

Hanmac commented 2 years ago

hear me out: All cards that say that they "replace" discard like Obstinate Baloth say in the ruling that they don't replace the discard. (Discard still triggers)

Meaning we should remove the Replace Discarded and merge it with Replace Moved?

the one problem i currently see, is that we somehow need to keep track if a card when moving between Hand and Library is getting revealed or not.

github-actions[bot] commented 1 year ago

This issue has not been updated in a while and has now been marked as stale. Stale messages will be auto closed.

tool4ever commented 7 months ago

A card or global field might track if it got revealed before

But the cost payment rollback could be problematic