Dominion Strategy Forum

Please login or register.

Login with username, password and session length
Pages: 1 2 [3] 4  All

Author Topic: Let's Discuss Adventures Cards: Relic  (Read 41324 times)

0 Members and 1 Guest are viewing this topic.

chipperMDW

  • Duke
  • *****
  • Offline Offline
  • Posts: 367
  • Respect: +813
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #50 on: March 22, 2016, 11:37:10 am »
+4

I don't think there's any actual inconsistency.  I think there are two events that are being defined differently from one another (and they're allowed to be), but they're unfortunately being expressed using similar-looking phrases that are using the words in subtly different ways, and that's making people feel like the phrases should be exact analogs to one another when they don't need to be.

All that needs to happen for things to be consistent is for the events to be explicitly defined.  I think the current rulings are consistent with these loose descriptions:

"Draw a card" is an event that "would happen" before you determine the card you're going to move (and thus before you might reshuffle).

"Gain" is an event that happens to "a card," and it only "would happen" after that card has been decided upon.


It may be worth noting that MTG has a similar view of "drawing a card" being defined as an event that can occur without there being an actual card to draw:

614.11. Some effects replace card draws. These effects are applied even if no cards could be drawn because there are no cards in the affected player’s library.

But other events in that game are defined so that they require something (e.g. an actual object or a number) to be determined before the event "would" actually occur.  If something's supposed to happen "when a creature would be put into a graveyard," then it doesn't trigger just because something tells you to sacrifice a creature when you have none; it only happens when there's an actual creature about to be moved.

There's no inconsistency in defining different kinds of events differently.  The definitions just need to be made apparent somewhere (via rulings, for example).


I guess I would argue that "draw a card" takes a parameter as well, which happens now to always be the top card of your deck (separately there are instructions saying that anytime you need the top card of your deck, and your deck is empty, then you shuffle your discard). But your way seems valid as well. Here's my code for how draw works:

Code: [Select]
public Card TopCard
{
    get
    {
        if (this.DrawPile.Count = 0)
        {
            this.ShuffleDiscard();
        }
        if (this.DrawPile.Count = 0)
        {
             return null;
        }
        else
        {
            return this.DrawPile[0];
        }
    }
}

public void Draw()
{
    Draw(this.TopCard);
}

public void Draw(Card cardToDraw)
{
    if (cardToDraw == null)
    {
        return;
    }

    bool drawReplaced = Game.CheckWouldDrawTriggers();
    if (!drawReplaced)
    {
        Deck.Remove(cardToDraw);
        Hand.Add(cardToDraw);
    }
}

If I were going to generalize the draw operation, say to support a card that has you draw from the bottom of your deck, I don't think I would call TopCard and pass the result to Draw.  I think I would instead pass the TopCard method itself to Draw (as a callback of some sort) and let Draw call it as appropriate.  Then, when the need arose, I could also pass it BottomCard sometimes.

In other words, I'd parameterize Draw with a behavior for determining a card, not with a pre-determined card. Mostly just because that seems more in line with how I'd expect drawing to work (and how the current rulings suggest it works).
Logged

markusin

  • Cartographer
  • *****
  • Offline Offline
  • Posts: 3846
  • Shuffle iT Username: markusin
  • I also switched from Starcraft
  • Respect: +2437
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #51 on: March 22, 2016, 11:54:26 am »
0

If I were going to generalize the draw operation, say to support a card that has you draw from the bottom of your deck, I don't think I would call TopCard and pass the result to Draw.  I think I would instead pass the TopCard method itself to Draw (as a callback of some sort) and let Draw call it as appropriate.  Then, when the need arose, I could also pass it BottomCard sometimes.

In other words, I'd parameterize Draw with a behavior for determining a card, not with a pre-determined card. Mostly just because that seems more in line with how I'd expect drawing to work (and how the current rulings suggest it works).

And you would be able to pass MinusCardToken instead of TopCard whenever appropriate.
Logged

chipperMDW

  • Duke
  • *****
  • Offline Offline
  • Posts: 367
  • Respect: +813
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #52 on: March 22, 2016, 12:05:43 pm »
0

And you would be able to pass MinusCardToken instead of TopCard whenever appropriate.

Actually, I'd attach that functionality to an event that happens before the parameterized behavior is invoked.  Removing the card token is a thing that would happen instead of the parameterized behavior.
Logged

Jeebus

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2515
  • Shuffle iT Username: jeebus
  • Respect: +1635
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #53 on: March 22, 2016, 12:14:39 pm »
+2

I don't think there's any actual inconsistency.  I think there are two events that are being defined differently from one another (and they're allowed to be), but they're unfortunately being expressed using similar-looking phrases that are using the words in subtly different ways, and that's making people feel like the phrases should be exact analogs to one another when they don't need to be.

There is inconsistency in the use of "when you would", and that has been my point and I believe GendoIkari's point that I agreed with.
"When you would", as you note, is defined differently for "when you would gain" and "when you would draw". Using "when you would do something" in "subtly different ways" for two different effects that both move a card (or not) is inconsistent.

Certainly it's allowed to have the two terms defined inconsistently with each other in the rules. You could for instance have a term "pull" in a game, and have two different piles of tokens, where "pull a blue token" means to draw a blue token at random, and "pull a red token" means to look through the pile of red tokens and pick one. This is allowed, in the sense that it's consistent taken as a whole. But it's using "pull a token from a pile" in an inconsistent way.

Jeebus

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2515
  • Shuffle iT Username: jeebus
  • Respect: +1635
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #54 on: March 22, 2016, 12:28:51 pm »
+1

"Draw a card" is an event that "would happen" before you determine the card you're going to move (and thus before you might reshuffle).

"Gain" is an event that happens to "a card," and it only "would happen" after that card has been decided upon.

Another thought about this. This is theoretical, but maybe useful. Imagine a card like "while this is in play, when you would draw a card, instead, +$1". Let's say you have this in play and play a Smithy with no cards left in your deck. Do you get +$3? According to your definiton, yes. But that's far from intuitive, and I would think that would be a pretty weird ruling.

chipperMDW

  • Duke
  • *****
  • Offline Offline
  • Posts: 367
  • Respect: +813
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #55 on: March 22, 2016, 02:32:55 pm »
0

"When you would", as you note, is defined differently for "when you would gain" and "when you would draw".

That's not quite what I said.  I think the "when you would" part means exactly the same thing in both cases.  Something like: "if an event matching {X} is about to occur."  The things that differ are the definitions for the events that are specified by X.

In one case, X is an event of type "Draw." Events of type "Draw" carry information about the player doing the drawing, but they don't carry any information about what card they're going to pick, or whether they're going to be successful. They are fired before that information is available. Instructions that tell a player to draw a card say things like "+N Cards" or "player P draws N cards," and ultimately result in N "Draw" events for that player.

In the other case, X is an event of type "Gain." Events of type "Gain" carry information about what card they're going to gain (something like Possession might need to act on it), as well as the player who's going to be doing the gaining. They can't be fired until all that information is available. Instructions that tell you to gain something usually use higher-level language that describes how to determine the card(s) to be gained, and ultimately result in one (or more) "Gain" events for the specific card(s) decided upon.

That's not inconsistent. That's just different words meaning different things.

The confusing thing is the fact that two similar-looking phrase structures ("when you would {draw,gain} a card") are really specifying events with entirely different structures. But that's more like ambiguity than inconsistency.


Another thought about this. This is theoretical, but maybe useful. Imagine a card like "while this is in play, when you would draw a card, instead, +$1". Let's say you have this in play and play a Smithy with no cards left in your deck. Do you get +$3? According to your definiton, yes. But that's far from intuitive, and I would think that would be a pretty weird ruling.

I would absolutely expect you to get +$3 in that case. (Unless you had your -1 Card Token, in which case I'd expect you to be able to decide between "+$1" and "remove token" each time until you choose to remove it, so you could choose to end up getting +$2 and getting rid of the token.)
« Last Edit: March 22, 2016, 02:35:15 pm by chipperMDW »
Logged

Davio

  • 2012 Dutch Champion
  • *
  • Offline Offline
  • Posts: 4787
  • Respect: +3412
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #56 on: March 22, 2016, 03:02:24 pm »
+1

I guess there's an ordering of things?

Otherwise, there could be two things trying to happen at the same time when you would draw with an empty draw deck:
- Shuffle your discard pile
- Remove the -1 Card token

You get to choose the order.
Logged

BSG: Cagprezimal Adama
Mage Knight: Arythea

Jeebus

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2515
  • Shuffle iT Username: jeebus
  • Respect: +1635
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #57 on: March 22, 2016, 03:25:29 pm »
0

That's not quite what I said.  I think the "when you would" part means exactly the same thing in both cases.

You did write this:
they're unfortunately being expressed using similar-looking phrases that are using the words in subtly different ways, and that's making people feel like the phrases should be exact analogs to one another when they don't need to be.
Aren't you referring to "when you would draw/gain" here? And saying those phrases use the words in subtly different ways?

In one case, X is an event of type "Draw." Events of type "Draw" carry information about the player doing the drawing, but they don't carry any information about what card they're going to pick, or whether they're going to be successful. They are fired before that information is available.

I don't see any basis for that definition of "draw". And I already addressed that argument in this post: "Draw a card" per the rules means "put the top card of your deck into your hand". If there is no card in your deck, it fails just like "gain a Curse from supply" fails if there is no Curse in supply.
Actually from the rulebook: "the player immediately draws X number of cards from his Deck." (Implicitly it means from the top of your deck, I'm sure you agree.) So "draw" carries information about what card to draw.

chipperMDW

  • Duke
  • *****
  • Offline Offline
  • Posts: 367
  • Respect: +813
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #58 on: March 22, 2016, 03:48:12 pm »
0

I guess there's an ordering of things?

Otherwise, there could be two things trying to happen at the same time when you would draw with an empty draw deck:
- Shuffle your discard pile
- Remove the -1 Card token

You get to choose the order.

The reshuffle doesn't happen "when you would draw." The reshuffle happens more like "when you would refer to a card in your deck and it's empty." Under current rulings, drawing a card would first remove the -1 Card Token if it's there, and otherwise would refer to "the top card of your deck" (maybe triggering a reshuffle) before moving it (if such a card ended up existing).

Looking at or revealing cards from your deck also "would refer to a card in your deck." So would Pearl Diver.

That's a good example of an event that might be described using the words "a card," but can't actually refer to a specific card.

EDIT: Or maybe you could think of it as "would refer to a position in your deck."


That's not quite what I said.  I think the "when you would" part means exactly the same thing in both cases.

You did write this:
they're unfortunately being expressed using similar-looking phrases that are using the words in subtly different ways, and that's making people feel like the phrases should be exact analogs to one another when they don't need to be.
Aren't you referring to "when you would draw/gain" here? And saying those phrases use the words in subtly different ways?

I'm referring specifically to the "gain a card" and the "draw a card" parts of those phrases. That one means "gain(a certain card)," and that one means "draw_a_card" (because that's a friendlier-looking description than just "draw.")

In one case, X is an event of type "Draw." Events of type "Draw" carry information about the player doing the drawing, but they don't carry any information about what card they're going to pick, or whether they're going to be successful. They are fired before that information is available.

I don't see any basis for that definition of "draw". And I already addressed that argument in this post: "Draw a card" per the rules means "put the top card of your deck into your hand". If there is no card in your deck, it fails just like "gain a Curse from supply" fails if there is no Curse in supply.
Actually from the rulebook: "the player immediately draws X number of cards from his Deck." (Implicitly it means from the top of your deck, I'm sure you agree.) So "draw" carries information about what card to draw.

The rulebook could be interpreted the way you're suggesting. It could also be interpreted as saying that "from the top of your deck" is "hardcoded" into the idea of drawing. It could also be interpreted as having draw carry with it instructions for how to decide which card to draw, and not carry a specific card with it.

I'm saying that the definition I gave (or a similar one) --- where Draw events are fired as soon as the instruction is given and the determination of which card to act on is made later, "inside" the draw operation --- seems like the definition that has been used to determine the current rulings.
« Last Edit: March 22, 2016, 04:24:38 pm by chipperMDW »
Logged

Jeebus

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2515
  • Shuffle iT Username: jeebus
  • Respect: +1635
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #59 on: March 22, 2016, 04:57:41 pm »
0

I'm saying that the definition I gave (or a similar one) --- where Draw events are fired as soon as the instruction is given and the determination of which card to act on is made later, "inside" the draw operation --- seems like the definition that has been used to determine the current rulings.

Your definition could be the one that has been used to determine the current ruling.

It could also (and I think this is the case) be the definition given by me and others in this thread: that the token is to be treated as a card when you are instructed to draw. In that case my hypothetical example would not produce +$3 when playing Smithy. Also in that case, "when you would" is actually inconsistently interpreted.

Under your definition, I agree that "when you would" is not inconsistently interpreted.

So let me get this straight, that is, your definition.

A "gain" effect has a parameter for which card to draw (fixed: gain), but doesn't issue a gain command right away. First it carries out an "if", checking if the card is available. If it is, it issues a gain command, and "when would gain" effects are triggered.

A "draw" effect has no parameter, but the card is hardcoded into the effect. Somehow, that means that it doesn't first carry out an "if" checking if that card is available, although it would be impossible to actually draw it if it weren't. It just goes straight into the "draw the top card from your deck" command, and "when would draw" effects are triggered even if the card is not available.

I'm sorry, but this makes no sense to me.

There is simply no basis to assume that "draw" doesn't reference a card, while "gain" does. You need to define "gain" in a non-common sense way, saying for instance that Remake doesn't instruct you to gain a $1 card when you trash a Copper (given no Poor House). There is no basis anywhere for assuming that there is an extra "if" baked into "gain" but not into "draw". Your only reason for making these assumptions is to make it fit your model of how things could work with no inconsistency, not because the assumptions are reasonable.
« Last Edit: March 22, 2016, 07:18:46 pm by Jeebus »
Logged

Donald X.

  • Dominion Designer
  • *****
  • Offline Offline
  • Posts: 6357
  • Respect: +25672
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #60 on: March 22, 2016, 06:11:33 pm »
+5

There is only so much room on a token. The -1 Card token reduces how many cards you draw when told to draw cards. It doesn't put it like that on the token but that's what it does. It seems straightforward; I don't feel like it's baffling people.

Trader meanwhile was a mistake. It tries to catch an event at the point at which the only thing that could stop it from happening is Trader (then it turns out there are two of these things, he says for people who were hoping to speak up about Possession). If I had it to do again, and didn't just not do that reaction concept at all, I would probably go with something like "when you gain a card that isn't Silver, you may trash it, to gain a Silver." There were times when Trader was more like that; I guessed poorly as to what would be simplest.
Logged

werothegreat

  • Adventurer
  • ******
  • Offline Offline
  • Posts: 8172
  • Shuffle iT Username: werothegreat
  • Let me tell you a secret...
  • Respect: +9625
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #61 on: March 22, 2016, 06:58:23 pm »
+1

There is only so much room on a token. The -1 Card token reduces how many cards you draw when told to draw cards. It doesn't put it like that on the token but that's what it does. It seems straightforward; I don't feel like it's baffling people.

Trader meanwhile was a mistake. It tries to catch an event at the point at which the only thing that could stop it from happening is Trader (then it turns out there are two of these things, he says for people who were hoping to speak up about Possession). If I had it to do again, and didn't just not do that reaction concept at all, I would probably go with something like "when you gain a card that isn't Silver, you may trash it, to gain a Silver." There were times when Trader was more like that; I guessed poorly as to what would be simplest.

Did anyone ask about Ironworks/Possession ever before Trader came out?
Logged
Contrary to popular belief, I do not run the wiki all on my own.  There are plenty of other people who are actively editing.  Go bother them!

Check out this fantasy epic adventure novel I wrote, the Broken Globe!  http://www.amazon.com/Broken-Globe-Tyr-Chronicles-Book-ebook/dp/B00LR1SZAS/

Donald X.

  • Dominion Designer
  • *****
  • Offline Offline
  • Posts: 6357
  • Respect: +25672
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #62 on: March 22, 2016, 07:01:21 pm »
+1

Did anyone ask about Ironworks/Possession ever before Trader came out?
No.
Logged

chipperMDW

  • Duke
  • *****
  • Offline Offline
  • Posts: 367
  • Respect: +813
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #63 on: March 22, 2016, 07:06:20 pm »
0

So let me get this straight, that is, your definition.

A "gain" effect has a parameter for which card to draw, but doesn't issue a gain command right away. First it carries out an "if", checking if the card is available. If it is, it issues a gain command, and "when would gain" effects are triggered.

That doesn't sound like my definition for gain. I'm saying the gain instruction that takes a parameter for which specific card to gain absolutely does fire a "gain" event right away. That's the very first thing it does. The thing that carries out an "if" is a higher-level instruction that does not have a parameter for which specific card to gain. Its parameters would be a set of conditions deciding which cards are eligible to select (or maybe there's just one eligible and that's it).

You're probably saying that's an arbitrary split. Well, yeah, but it's a split that corresponds with what the rulings have always been.


There is no basis anywhere for assuming that there is an extra "if" baked into "gain" but not into "draw". Your only reason for making these assumptions is to make it fit your model of how things could work with no inconsistency, not because the assumptions are reasonable.

They seem perfectly reasonable to me. Like I mentioned, this wouldn't be the first card game where things worked roughly the way I described.

But you're right; I'm just giving one set of definitions that match up with the what the rulings say and try to avoid inconsistency. I thought that's more or less what Gendo was looking for.
Logged

Jeebus

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2515
  • Shuffle iT Username: jeebus
  • Respect: +1635
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #64 on: March 22, 2016, 07:21:41 pm »
0

I'm confused. You seem to be contradicting this:

But in order to instruct someone to gain a card (at least as far as what Trader's looking for), you must ultimately tell them a specific card to gain. Gaining a card takes a "parameter." If you can't point someone to a specific card, you can't instruct them to gain it. When Witch tells someone to "gain a Curse," that's not doing the thing Trader is looking for (yet); that's just a shorthand for "if there's a card named Curse visible in the supply, gain that card." If there are no Curses, no actual gain instruction is issued.

So instructing someone to gain a Curse when Curses are empty doesn't trigger Trader because the instructions bail out before a gain is attempted.

Jeebus

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2515
  • Shuffle iT Username: jeebus
  • Respect: +1635
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #65 on: March 22, 2016, 07:32:33 pm »
+1

There is only so much room on a token. The -1 Card token reduces how many cards you draw when told to draw cards. It doesn't put it like that on the token but that's what it does. It seems straightforward; I don't feel like it's baffling people.

Well, when there's no cards left in your deck or discard pile, I can see players being unsure of whether to remove the token or not.

Another question: I take it that when the token is on an empty deck, but you have cards in your discard, you remove the token without shuffling? Is this stated anywhere?

werothegreat

  • Adventurer
  • ******
  • Offline Offline
  • Posts: 8172
  • Shuffle iT Username: werothegreat
  • Let me tell you a secret...
  • Respect: +9625
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #66 on: March 22, 2016, 08:00:34 pm »
0

Another question: I take it that when the token is on an empty deck, but you have cards in your discard, you remove the token without shuffling? Is this stated anywhere?

That would be my assumption.  You would draw a card, but you don't.

With your seeing an inconsistency between "would gain" and would draw": I think this is where the whole empty pile being on the blue dog article comes in.  When your opponent plays Witch, you *would* gain a Curse.  That should be enough to trigger Trader, but the pile says "nope, I'm empty" - it's basically saying "When you would gain a card from here, if I'm empty, don't."  And this happens before other "would gain" triggers.  Whereas if your deck and discard are empty, you still try to draw a card if you play, say, Smithy - you just fail.  But if the -1 Card token is there, there's a "would draw" thing that happens before you actually "when draw".  Maybe coming up against an empty deck/discard is a "when draw" rather than a "would draw" trigger?
Logged
Contrary to popular belief, I do not run the wiki all on my own.  There are plenty of other people who are actively editing.  Go bother them!

Check out this fantasy epic adventure novel I wrote, the Broken Globe!  http://www.amazon.com/Broken-Globe-Tyr-Chronicles-Book-ebook/dp/B00LR1SZAS/

chipperMDW

  • Duke
  • *****
  • Offline Offline
  • Posts: 367
  • Respect: +813
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #67 on: March 22, 2016, 08:31:06 pm »
0

I'm confused. You seem to be contradicting this:

It's the exact same thing I've been saying all along. I don't know what part you think contradicts. I guess I can annotate my statements or something...

Ok, let me name a couple of my pseudocode functions, then I'll put my annotations in bold inside the quotes I think you're talking about.

GainSpecificCard
Code: [Select]
Player P gains specific card C:
fire a "P would gain C" event
if the event triggered something that vetoed the gain
nothing happens
else
move card C to the discard pile (I know it's not that simple)
fire a "P gains C" event

GainCardMatchingName
Code: [Select]
Player P gains a card specified by name N:
if there's a card C with name N visible in the supply
(currently, there can be no more than one such card)
player P gains specific card C
else
nothing happens

Quote
But in order to instruct someone to gain a card   In order to call GainSpecificCard...

(at least as far as what Trader's looking for),   (GainSpecificCard is the thing that fires a "p would gain c" event)

you must ultimately tell them a specific card to gain.   GainSpecificCard takes a card parameter, so you can't call it without that parameter

Gaining a card takes a "parameter."   Ditto.

If you can't point someone to a specific card, you can't instruct them to gain it.   More ditto.

When Witch tells someone to "gain a Curse,"   The Witch card has this text. That corresponds to calling GainCardMatchingName with a "Curse" parameter.

that's not doing the thing Trader is looking for   Trader is looking for the event that gets fired in GainSpecificCard. Witch is directly calling GainCardMatchingName, which does not fire that event

(yet);   Of course, GainCardMatchingName can wind up calling GainSpecificCard, which will fire the event.

that's just a shorthand for "if there's a card named Curse visible in the supply, gain that card."   That's, like, the entirety of GainCardMatchingName. EDIT: It performs the gain of the specific card decided upon by calling the lower-level GainSpecificCard, passing it that specific card.

If there are no Curses, no actual gain instruction is issued.   If there are no Curses, the "else" branch of GainCardMatchingName gets taken. Nothing happens there.

So instructing someone to gain a Curse when Curses are empty doesn't trigger Trader because the instructions bail out before a gain is attempted.   If GainCardMatchingName never calls GainSpecificCard because it took the "else" branch, then no event is ever fired because that only happens in GainSpecificCard.

Quote
I'm saying the gain instruction that takes a parameter for which specific card to gain   That's GainSpecificCard. It's the one that takes that parameter.

absolutely does fire a "gain" event right away. That's the very first thing it does.   That's the first line in GainSpecificCard.

The thing that carries out an "if"   GainCardMatchingName would be an example of such a function. It has the "if" statement that bails out if it can't find any Curses.

is a higher-level instruction that does not have a parameter for which specific card to gain.   It doesn't. It has a "name" parameter. You can imagine other high-level functions that might take a combination of cost ranges and types as parameters.

Its parameters would be a set of conditions deciding which cards are eligible to select   In this case, the set of conditions are "Cards visible in the Supply named Curse."

(or maybe there's just one eligible and that's it).   If there's more than one Curse visible in the Supply, something has gone wrong.

EDIT: On further reflection, I really can't define "gain" without recognizing the high-level part that doesn't fire an event and the low-level part that does; it's not an arbitrary split. If we were just talking about Trader, it might not matter much, but since we have Possession, we know that "would gain" events can actually operate on the card you would have gained, so you really can't fire a "would gain" event before you have a specific card to talk about gaining. So my definition for gain is not "non-common sense" at all.
« Last Edit: March 23, 2016, 12:34:01 am by chipperMDW »
Logged

chipperMDW

  • Duke
  • *****
  • Offline Offline
  • Posts: 367
  • Respect: +813
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #68 on: March 22, 2016, 08:34:22 pm »
+1

Another question: I take it that when the token is on an empty deck, but you have cards in your discard, you remove the token without shuffling? Is this stated anywhere?

Correct. That was stated earlier in this thread:
Similarly if you have to draw one card, would have to shuffle to draw it, and have the -1 Card token, you don't shuffle.
Logged

Jeebus

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2515
  • Shuffle iT Username: jeebus
  • Respect: +1635
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #69 on: March 23, 2016, 01:00:53 am »
+1

So in my previous post I was referring to your definition of a "gain" instruction, like on Witch: "gains a Curse". That is, this is your high-level instruction, and it doesn't issue a gain command right away, unlike your high-level instruction for draw. That's the distinction that I don't think there is any basis for.

There might be some misconceptions here.

All gain instructions that let you choose a card to gain, have an implicit "choose" instruction first. The choose part is not really part of the gain instruction. (I can point you to the relevant ruling on this.) So all actual gain instructions have an explicit card as a parameter. Workshop really says: "Choose a card costing up to $4. Gain it." But Witch just says: "Gain a Curse" (for each other player).

You're right that a gain instruction first fires when-would-gain, before the actual gain. But that doesn't mean that the high-level part doesn't have the card as a parameter. Actually it does. A gain instruction always has a specific card in mind. Workshop doesn't let you choose an empty pile, because you have to choose a specific card, not a pile. (I can point you to the relevant ruling on this too.) So the high-level gain instruction, which comes after the choose instruction, will have a specific card as a parameter. For Witch it's the top Curse card in the Curse pile. For Workshop it's the specific chosen card. For Thief it's the specific trashed card.

Similarly, a draw instruction references the top card of the player's deck. So as far as I see, there is no difference between the gain and the draw instructions. Logically, they both first check if the specified card exists in the specified location; then potentially fire "when-would" abilities; then potentially move the card and fire "when" abilities (currently not existing for draw).

Davio

  • 2012 Dutch Champion
  • *
  • Offline Offline
  • Posts: 4787
  • Respect: +3412
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #70 on: March 23, 2016, 03:11:08 am »
+1

I must admit I do love these nitpicky discussions about things that aren't really an issue in practice.
Logged

BSG: Cagprezimal Adama
Mage Knight: Arythea

chipperMDW

  • Duke
  • *****
  • Offline Offline
  • Posts: 367
  • Respect: +813
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #71 on: March 23, 2016, 03:54:34 am »
+1

(Ugh. Apologies for the long posts.)

So in my previous post I was referring to your definition of a "gain" instruction, like on Witch: "gains a Curse". That is, this is your high-level instruction, and it doesn't issue a gain command right away, unlike your high-level instruction for draw. That's the distinction that I don't think there is any basis for.
Well, like you said earlier, I'm just making definitions that do what the rulings say. My only basis is the rulings that exist.

Quote
All gain instructions that let you choose a card to gain, have an implicit "choose" instruction first. The choose part is not really part of the gain instruction. (I can point you to the relevant ruling on this.)
Agreed. The implicit "choose" would be in the high-level function. For example, there might be GainCardMatchingCostRange function that Workshop could use, and it would include a choice.

I also agree that the "choose" part is not really part of the gain instruction. That's one of the points I've been trying to get across: the low-level gain function is the only thing that counts for things like Trader. The high-level function might use the word "gain," but it encompasses things that happen before really gaining (namely, the determination of the specific card to gain), and it might fail to lead to an actual gain in come circumstances.

Quote
So all actual gain instructions have an explicit card as a parameter.
Yes!

Quote
Workshop really says: "Choose a card costing up to $4. Gain it."
Exactly.

Quote
But Witch just says: "Gain a Curse" (for each other player).
I'm not sure what distinction you're making here. I'd say that it "really" says something like: "Select a/the Curse visible in the Supply. Gain it." Either way, I hope we agree that "gain a curse" ultimately means you do an actual (Trader-visible) gain on the specific card that's the Curse on top of the Curse pile, unless the Curse pile is empty, in which case no (Trader-visible) gain occurs.

Quote
You're right that a gain instruction first fires when-would-gain, before the actual gain. But that doesn't mean that the high-level part doesn't have the card as a parameter. Actually it does.
I disagree.

We already agree that there's an implicit "choose" that's not part of the actual gain. The high-level instruction is the thing that does that choosing. (That's the entire reason I make the distinction in the first place.) You can't pass the specific card that got chosen... as a parameter to the thing that's going to choose it!

What the high-level instruction has as parameters are the criteria for selecting specific card.

Here's a high-level instruction that Workshop might use. Its parameters are a min cost and max cost. Workshop would call it with MIN = $0 and MAX = $4:

GainCardMatchingCostRange
Code: [Select]
Player P gains a card with (MIN <= cost <= MAX):
find all cards visible in the supply with (MIN <= cost <= MAX)
if any cards were found:
player P chooses a specific card C from them
player P gains specific card C # using GainSpecificCard(P, C)
else
nothing happens

Quote
A gain instruction always has a specific card in mind. Workshop doesn't let you choose an empty pile, because you have to choose a specific card, not a pile. (I can point you to the relevant ruling on this too.)
We agree on this. That's consistent with the high-level instruction I just said Workshop might use. You choose a card from among the ones visible in the supply that are in the given price range. There's no way to select an empty pile; there's no way to select a pile at all.

Quote
So the high-level gain instruction, which comes after the choose instruction,
No. The thing I'm calling the high-level instruction is the implicit choose instruction.

Quote
will have a specific card as a parameter.
No. Again, you can't pass the chosen card as a parameter before it's been chosen.

Quote
For Witch it's the top Curse card in the Curse pile. For Workshop it's the specific chosen card. For Thief it's the specific trashed card.
Correct, correct, and correct. But they don't get passed to the high-level instruction; they get passed to the low-level instruction, which is the one that takes a specific card as a parameter.


Quote
Similarly, a draw instruction references the top card of the player's deck.
It references it internally, yes. Once it exists (and assuming it ever does exist).

But the draw instruction doesn't get passed the specific card as a parameter (i.e. the specific card doesn't get chosen by the thing that issued the draw instruction). That specific card may not even exist (rather, may not be known) at the time you begin the draw instruction. The thing that tells you to "draw a card" can't say "draw(this here card on top of your deck)" because your deck might be empty at that point.

Rather, the thing that says "draw a card" simply says "draw_a_card." Or "draw." It doesn't know or care what card is ultimately going to get moved. The draw instruction is the thing that takes care of determining the specific card (if any) and moving it.

Now, ok, you could say that "draw_a_card" is analogous to the high-level gain instructions that determine a specific card. And you could say that there's a corresponding low-level draw instruction that takes a specific card as a parameter and moves it into your hand. You'd call that low-level instruction after the high-level draw instruction determined a specific card (after maybe reshuffling). In the case of a -1 Card Token, the low-level draw instruction would never happen.

But, unlike with gaining, making such a distinction with drawing doesn't really buy you anything. With gaining, you make the distinction because the rulings suggest that events don't occur until the low-level, "specific-card" gain happens. But the rulings for the token suggest that events occur on the high-level "draw_a_card" instruction at a time when it doesn't yet know what specific card it's going to draw.

So yeah, you can split off a lower-level draw instruction that operates on specific card by moving it, but it won't trigger any events, so there's no point in making that distinction.

I guess you could change the rules to trigger events off such a low-level draw instruction, but that'd be a different game. You'd have to reshuffle before removing the token, and you couldn't get rid of the token by drawing when your deck and discard were empty.

Quote
So as far as I see, there is no difference between the gain and the draw instructions. Logically, they both first check if the specified card exists in the specified location;
Yes, but gain checks if the specified card exists up in the implicit "choose," which we seemed to agree is not actually part of a (Trader-visible) gain instruction. By contrast, draw checks if the specified card exists as part of the (-1-Card-Token-visible) "draw_a_card" instruction.

Why are they different? Well, "would gains" sorta have to fire on the low-level instruction, after an implicit choosing of a specific card. Otherwise, you couldn't have cards like Possession that manipulate the chosen card you "would have gained." And Trader would let you gain Sivers when you got Witched when the Curses were out, which wouldn't make any sense.

Drawing, I suppose, could have been defined either way. And it didn't really matter until Adventures. But if you had events on a low-level draw instruction, you'd have weird token interactions described above. And your hypothetical card wouldn't gain you $ on an empty deck. I think that would just seem wrong. The token-removal and the hypothetical $ shouldn't replace a card; they should replace a draw.

Quote
then potentially fire "when-would" abilities;
It happens in that order for gain.

But if draw fired these events after it made the checks for existence, that wouldn't fit with the rulings we have.

So, to match with current rulings, draw has to fire "when-would" abilities before it starts doing any reshuffling or checking for existence of cards. All that stuff is part of drawing.

Quote
then potentially move the card and fire "when" abilities (currently not existing for draw).
Right.


EDIT:
Look, say I rename GainCardMatchingName and GainCardMatchingCostRange to FindCardMatchingNameThenGainIt and ChooseCardInCostRangeThenGainIt.  Is that what you're getting hung up on?  Does that make it clear that I'm saying those high-level instructions are not part of the actual gain, and that the low-level function (which takes a specific card determined by a higher-level function) is the only thing that's doing an actual gain?

Because I'm pretty sure we're defining gain the exact same way, and we're just using different terminology:

You say Workshop's instruction is really an implicit choose followed by an actual gain of the chosen card.  I say Workshop performs a high-level instruction that first has a player choose a card and then performs a low-level gain instruction on that specific card.

(I believe) you say Witch determines a specific Curse card (the one on top of the pile), then performs an actual gain on that card.  I say Witch performs a high-level instruction that first determines a specific card in the supply and then performs a low-level gain instruction on that specific card.

You say the choose part is not really part of the gain instruction.  I say the high-level instruction itself doesn't count as a gain as far as "would gain" and "did gain" events are concerned; only the low-level instruction fires those events.

I mean, I really don't see what's different to the point that you think I have misconceptions about how gaining works.
« Last Edit: March 23, 2016, 10:16:36 am by chipperMDW »
Logged

Jeebus

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2515
  • Shuffle iT Username: jeebus
  • Respect: +1635
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #72 on: March 23, 2016, 02:40:03 pm »
+1

No. Again, you can't pass the chosen card as a parameter before it's been chosen.
You keep saying this, in different ways, but you fail to take into account that in my model, which was obviously the one I was talking about, the "choose" instruction comes first, so the card is already specified.

Quote
I'm not sure what distinction you're making here. I'd say that it "really" says something like: "Select a/the Curse visible in the Supply. Gain it."
You not being sure about that distinction, is the reason you fail to understand my point. Only Workshop lets you choose. Witch already knows exactly which card to gain - the top card of the Curse pile. That's the instruction, independently of whether or not that card actually exists. Compare it with Upgrade telling you to gain a card based on the trashed card. In this case the specified card is the trashed card, independently of whether or not that card actually exists. That's the instruction. Then, when carrying it out, you check whether the card exists. If it doesn't, the instruction fails.

Quote
We already agree that there's an implicit "choose" that's not part of the actual gain. The high-level instruction is the thing that does that choosing. (That's the entire reason I make the distinction in the first place.)
I actually said that the "choose" is not part of the actual gain, it's a separate (implicit) instruction that comes first. There is no choosing in Witch. Anyway, that's not the entire reason you made the distinction. We need the distinction because of "when-would-gain" coming first. And I agree with that part.

This is how I see gain and draw behaving. (Note: Just like "gain 2 Coppers" is actually two gain instructions, "Draw two cards" is two draw instructions.)

Witch:
Code: [Select]
Draw {you, the top card, your deck}
Draw {you, the top card, your deck}
for each other player, Gain {the player, the top Curse card, the supply}

Gain {Player, Card, FromLocation}
Code: [Select]
if Card is in FromLocation
fire When-would-gain abilities
if Card is in FromLocation and gain was not prevented
move Card from FromLocation to Player's discard pile
fire When-gain abilities
else
nothing happens
else
nothing happens

Draw {Player, Card, FromLocation}
Code: [Select]
if Card is in FromLocation
fire When-would-draw abilities
if Card is in FromLocation and draw was not prevented
move Card from FromLocation to Player's hand
fire When-draw abilities (don't exist in the game)
else
nothing happens
else
nothing happens

Alternatively we can imagine the card and location hardcoded into Draw:

Draw {Player}
Code: [Select]
Card = the top card
FromLocation = Player's deck
(etc...)
And the instruction on Witch would be: Draw {the player}

We can also have "choose" be part of the Gain function, the result is the same. We can invent an instruction in the Gain function that is called first and which specifies a card. If it's Workshop, it lets the player choose; if it's Witch, it just says that it's the top Curse of the pile. In both cases it can end up that the card will not exist. So we need to check that first in any case, in the Gain function, before getting to when-would-gain. It would be the same for Draw (except that for Draw there is no "choose" (like Workshop), just specify (like Witch)).

Quote
Yes, but gain checks if the specified card exists up in the implicit "choose," which we seemed to agree is not actually part of a (Trader-visible) gain instruction. By contrast, draw checks if the specified card exists as part of the (-1-Card-Token-visible) "draw_a_card" instruction.
"Choose" (on Workshop) can end up referring to no card. So can the gain instruction on Witch - which I do not call "choose" but even if you do, it's the same (see above). So can a draw instruction, which is analogous to the gain instruction on Witch. It references a card in a specific location, which can end up not existing.

What I'm saying is that a gain instruction that references a card that is supposed to be in a specific location (the top of the Curse pile) is the same as a draw instruction that references a card that is supposed to be in a specific location (the top of your deck).

You say that you are making definitions to fit the ruling. I agree. I'm saying that there is no reason to define gain and draw your way, other than to shoehorn it into the ruling without having to acknowledge that "when you would" is defined inconsistently. Yes, gain had to be defined with having a when-would-gain first, because of Trader, but I don't view this definition of gain as just an arbitrary ruling because of when-would-gain abilities, I view it as a definition of how events work in Dominion. We now know that gain checks if the card exists before doing when-would, but that didn't come into existence because of Trader, Trader just made it known. So we must assume that all events in Dominion work the same way. (You actually say that it could work that way for draw, it's just not necessary. Well, it's necessary for events in Dominion to work the same way, which to me is the default assumption not knowing anything to the contrary.)

Quote
Drawing, I suppose, could have been defined either way. And it didn't really matter until Adventures. But if you had events on a low-level draw instruction, you'd have weird token interactions described above. And your hypothetical card wouldn't gain you $ on an empty deck. I think that would just seem wrong.

To me the opposite would seem wrong, and non-intuitive, especially knowing that when-would-gain doesn't do anything on an empty pile. And actually i don't think it would get you $ on an empty deck, as I mentioned. I don't think when-would-draw would be defined that way. I think this is just a matter of the -1 Card token having an unfortunate shorthand text, while really it's just a matter of viewing the token as a card when we're instructed to draw.

chipperMDW

  • Duke
  • *****
  • Offline Offline
  • Posts: 367
  • Respect: +813
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #73 on: March 24, 2016, 01:18:48 am »
0

Quote
I'm not sure what distinction you're making here. I'd say that it "really" says something like: "Select a/the Curse visible in the Supply. Gain it."
You not being sure about that distinction, is the reason you fail to understand my point. Only Workshop lets you choose. Witch already knows exactly which card to gain - the top card of the Curse pile. That's the instruction, independently of whether or not that card actually exists. Compare it with Upgrade telling you to gain a card based on the trashed card. In this case the specified card is the trashed card, independently of whether or not that card actually exists. That's the instruction. Then, when carrying it out, you check whether the card exists. If it doesn't, the instruction fails.

The phrase "the top card of the Curse pile," as you're using it here, doesn't represent what I'd call a "specific card."  It represents a set of instructions that can be evaluated at a later time to determine a specific card.  It might fail to determine any card at the moment it's evaluated.

The phrase is like a "card specifier."  You don't get a specific card until you evaluate a specifier (and not even then if it fails to specify a card).

Yes, only Workshop has a player make a choice.  But Witch still has to take the "top Curse in the supply" specifier and resolve it into a specific card (or fail).

You say Witch already knows exactly what to gain.  But your Witch doesn't determine a specific card and pass that to your Gain.  Your Witch determines a card specifier, "the top Curse card," and passes that to Gain.  Gain does the work of evaluating the (simple) instructions in the specifier and determining a specific card (or failing to do so).  If it found a specific card, it fires events and maybe goes on to move the card.

My Witch calls GainCardMatchingName with the name "Curse."  GainCardMatchingName forms the same "top Curse in the supply" specifier and evaluates its instructions to determine a specific card (or fail).  If it found a specific card, it calls GainSpecificCard, which fires events and maybe goes on to move the card.

Both ways are equivalent.  The difference is just whether the specifier is evaluated inside the lowest-level gain instruction (like in your model) or outside it (like in mine).

It's a somewhat arbitrary decision as long as the results are the same, but I find your definition of Gain non-intuitive in that it doesn't have a one-to-one correspondence with the idea of a "gain event."  Not all of your Gains "would gain."  Part of what you do in Gain (resolving the card specifier) happens before you "would gain."

I chose my definition of GainSpecificCard because that has a one-to-one correspondence with gain events.  The moment when you can lay your hands on a specific card is the moment you're done fiddling around with choosing cards and evaluating card specifiers and are definitively about to gain something.  Each call to GainSpecificCard corresponds to a "would gain" (and usually a "gain").

Quote
What I'm saying is that a gain instruction that references a card that is supposed to be in a specific location (the top of the Curse pile) is the same as a draw instruction that references a card that is supposed to be in a specific location (the top of your deck).

I agree they both involve "card specifiers." I'm just saying that the specifier has already been resolved into a specific card at the time a "would gain" event happens, but not at the time a "would draw" event happens. According to current rulings.

Quote
You say that you are making definitions to fit the ruling. I agree. I'm saying that there is no reason to define gain and draw your way, other than to shoehorn it into the ruling without having to acknowledge that "when you would" is defined inconsistently.

Ok, sure. It's arbitrary. I don't think I'm shoehorning anything, though. I'm just giving definitions that make sense to me. I guess it's possible they only make sense to me because I'm familiar with the rules and they fit with the rules.

Quote
To me the opposite would seem wrong, and non-intuitive, especially knowing that when-would-gain doesn't do anything on an empty pile. And actually i don't think it would get you $ on an empty deck, as I mentioned. I don't think when-would-draw would be defined that way. I think this is just a matter of the -1 Card token having an unfortunate shorthand text, while really it's just a matter of viewing the token as a card when we're instructed to draw.

Well, I completely disagree with all that, but it probably doesn't matter. We may never know.

EDIT: I think the thing that seems the most wrong to me about your model is the case where you have cards in your discard pile, but not in your deck. There, your model has you reshuffling before getting the +$. I can't imagine someone guessing that you're supposed to reshuffle for a result that doesn't involve the cards at all.



Just for fun, would you expect something like this to work if you had no cards to draw?
« Last Edit: March 24, 2016, 09:54:02 am by chipperMDW »
Logged

Jeebus

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2515
  • Shuffle iT Username: jeebus
  • Respect: +1635
    • View Profile
Re: Let's Discuss Adventures Cards: Relic
« Reply #74 on: March 24, 2016, 10:55:58 am »
+1

I agree that both ways are equivalent. And whichever model you choose, it should be the same for draw as for gain. I can't see that you have replied to my arguments for this. If you have a high level instruction first evaluating whether "top Curse in the supply pile" exists, then you also have a high level instruction first evaluating whether "top card in player's deck" exists.

As I said, compare with Upgrade referring to "the trashed card". Does this call a high level instruction first, to evaluate whether the card exists? To me it's simpler and more intuitive that "the trashed card" is a specific card, that may or may not exist, and then we check whether the specific card exists before proceeding. If you want to put in some high level instruction first, go ahead. The result is the same. Another example of an "event" that should work the same as for "gain" or for "draw".

I think this is just a matter of the -1 Card token having an unfortunate shorthand text, while really it's just a matter of viewing the token as a card when we're instructed to draw.
Well, I completely disagree with all that, but it probably doesn't matter. We may never know.
Well, Donald wrote: "There is only so much room on a token. The -1 Card token reduces how many cards you draw when told to draw cards. It doesn't put it like that on the token but that's what it does."
I think this is a pretty strong indication for what I wrote.

Quote
EDIT: I think the thing that seems the most wrong to me about your model is the case where you have cards in your discard pile, but not in your deck. There, your model has you reshuffling before getting the +$. I can't imagine someone guessing that you're supposed to reshuffle for a result that doesn't involve the cards at all.
I agree that that's the kind of thing that needs to be specified in a FAQ. (And as I said, I can't imagine someone guessing that you get +$ with no cards to draw.) It also comes back to the question posed by Davio: when is the reshuffle timed? The reshuffle happens when you actually need a card from your deck. Whether this is before or after "would draw" is not really defined. It could be that you "would draw" a card just because you have cards in your discard pile, although I agree that it seems like there should be a physical card on top of your deck before you can say that you "would draw". In any case, sometimes following the rules to their logical and consistent conclusion does get you weird results (like a Possessed player not getting a bonus from Ironworks).

Quote
Just for fun, would you expect something like this to work if you had no cards to draw?
You already said that it does work. To me I would think that it doesn't, but I don't know the rules of Magic. Going by the rules of Dominion, I don't think it would work.

EDIT:
I agree they both involve "card specifiers." I'm just saying that the specifier has already been resolved into a specific card at the time a "would gain" event happens, but not at the time a "would draw" event happens. According to current rulings.
There is no ruling on exactly what "when you would draw" means, only on how the -1 Card token is supposed to work. Donald has not said that the text on the token invokes a general "when you would draw" timing (as I said, I think he indicated the opposite). I'm saying that according to the ruling on the token, the "when you would draw" text on it, taken literally, is inconsistent with how "when you would gain" works. You're saying that it's not, because you're interpreting "draw" and "gain" differently (inconsistently!) so as to make those two when-woulds consistent.
« Last Edit: March 24, 2016, 11:05:53 am by Jeebus »
Logged
Pages: 1 2 [3] 4  All
 

Page created in 0.625 seconds with 20 queries.