Dominion Strategy Forum

Please login or register.

Login with username, password and session length

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - chipperMDW

Filter to certain boards:

Pages: 1 ... 10 11 [12] 13 14 15
276
Dominion: Empires Previews / Re: Empires Rulebook
« on: June 06, 2016, 11:19:23 pm »
Is it significant that Ritual uses past tense ("+1VP per $1 it cost") compared to, say, Apprentice, which uses present tense ("+1 Card per $ is costs")? I would assume that Ritual is intended to work the same as most other things, which look at the properties of a card after it's trashed. But the use of past tense might suggest it looks at the properties of the card at the time of trashing.

I ask because Donald has said that Treasure Map, which has been the only thing that does look at a card property at the time of trashing, should have used "did" instead of "do" to indicate that fact. So... just checking to see whether that's supposed to matter here.

(Situation where it would make a difference: while Inheriting something, trash one of your Estates while you have Quarry in play. The Estate stops being yours, so it stops being an action, and its cost stops being reduced.)

277
Dominion General Discussion / Re: Thematic Kingdom Design Contest
« on: May 27, 2016, 01:49:58 pm »
something from adventures? can't think of a last meme

Most interesting Baron in the world?

Or Bomb.

278
Rules Questions / Re: Introducing a new rules document
« on: May 19, 2016, 04:52:06 pm »
p31: Band of Misfits describes how it works if it gets trashed with Transmute while it's imitating a card. I don't believe there's currently any way for Transmute (which trashes from your hand) to trash a Band of Misfits that's imitating something (and which must therefore be in play), so there should be no need to mention that.

279
Dominion: Empires Previews / Re: Empires Bonus Preview #2: Crown
« on: May 17, 2016, 02:42:05 pm »
Herbalist becomes a Scheme!

Due to the difference in Herbalist's and Scheme's wording, Herbalist can topdeck a Crown doubling a Duration, whereas a Scheme cannot.
Luckily we already accepted that a Duration could still be doubled without the doubled card having to be attached to it.

In fact, I think it would have probably been easier from the get-go to just use little tokens to remind you that you TR-ed or KC-ed a Duration instead of leaving them attached.

Well, one could probably argue that discarding the TR would be inconsistent with the general rule that a card stays in play until the last turn it does something.

That rule is specific to durations, though. That's why Possession doesn't stay out.

280
Dominion: Empires Previews / Re: Empires Bonus Preview #5: Castles
« on: May 16, 2016, 09:46:07 am »
Setup: replace the floorboards or carpet with rats.

Talk about an annoying card to have in the Black Market deck. All that work and you probably don't even see the card.

281
Fortunately, multiple Enchantress attacks do not stack.

I guess you're responding to me. Saying that it doesn't "stack" is very different from saying that it gives a huge benefit to the other players. I just read that as "it has no further effect".

Throned Enchantress sets up two future effects that will each modify what resolving the first action card per turn (by an affected player) will actually do.  When a player plays his first action, both future effects simultaneously try to make that modification.  They are applied one after the other (you can pick an order, but it doesn't matter).  The first one changes the resolution to "+1 Card, +1 Action"; the second one changes it to that again.

282
Dominion: Empires Previews / Re: Empires Previews #5: Events
« on: May 13, 2016, 11:21:56 pm »
Also, any edge cases to how you could buy multiple Windfalls and get Golds each time?

In between buys of Windfall, buy a Cultist and trash it with Watchtower. Also Rats, but you'd have to buy and trash three of them between Windfalls.

283
Rules Questions / Re: Duration Attacks
« on: May 13, 2016, 04:58:30 pm »
This is all a matter of when the words "any other player" on Swamp Hag get evaluated.  If a player's Lighthouse is in play at the time those words are evaluated, then he's not one of the players referenced by that phrase.

Pretend that, whenever you set up a future effect, you take out a notecard and write out exactly what it does.  Then you keep the notecard around, following the instructions written on it as long as the effect lasts.

The incorrect way to handle Swamp Hag would be to simply write the words "when any other player buys a card, he gains a Curse" on the notecard, then, afterwards, whenever a player buys a card, check to see whether to follow those instructions by evaluating "any other player" and checking whether that player's Lighthouse is around at that point.

The correct way to handle Swamp Hag (i.e. the way that matches with the rulings) would be to first evaluate "any other player" immediately when the card is played, and then, based on that evaluation, write words like "when Alice or Bob [but not Carol because she had a Lighthouse when I played Swamp Hag] buys a card, they gain a Curse" on the notecard.  Then, when Carol buys a card, she's still not on the list of players you wrote down on the notecard.  You don't change the list just because her Lighthouse went away.


(It's comparable to the difference in MTG between an enchantment that says "Creatures you control get +1/+1" and a spell that says "Creatures you control get +1/+1 until end of turn."  The former, (because it's generated by a static ability) continuously evaluates "creatures you control," so any new creatures you play get the bonus, and creatures that you stop controlling stop having the bonus.  The latter determines the set of "creatures you control" at the moment it is played and applies the effect to those specific creatures; if you play new creatures, they don't get the bonus, and creatures that were affected and stop being controlled by you nonetheless keep the bonus.)

284
Dominion: Empires Previews / Re: Empires Bonus Preview #5: Castles
« on: May 13, 2016, 02:43:50 pm »
Does the Castle randomizer reflect the cost of Humble Castle (the split pile preview said the randomizer "usually" follows the top card), making all of these suitable as Banes?

285
Dominion: Empires Previews / Re: Empires Previews #3: VP Tokens
« on: May 11, 2016, 06:29:20 pm »
If the Temple pile is empty, you still continue adding VP tokens to it, right?  But there's no way to get those tokens without Ambassador shenanigans (or something unrevealed)?

How about Graverobber and Rogue? Ambassador Temple would be in favor of your left-hand-side opponent.

You are right, gaining from the trash still works for this.  And yeah, Amb-Temple isn't necessarily a good idea, but I was just thinking about ways to access those VP. :P

If you get Temple from the Black Market, is there still a Temple pile to put tokens onto (so you can later grab them by trashing Temple and gaining it with a Graverobber)? I remember the "Travellers" didn't have a pile to return to if they came out of the Black Market, so I'm guessing Black Market Gatherings don't work very well either.

286
Let's Discuss ... / Re: Let's Discuss Adventures Cards: Relic
« on: March 29, 2016, 02:15:28 am »
That's what I've been saying, because you argue about the definiton of "event" instead of actually addressing the substance of my posts.

I've been arguing the definition because you told me the -1 Card Token can't be represented using the existing event concept.  Even though it can be handled using the same logic used to handle events.  I was trying to figure out what about your definition of events precludes such a representation. Or to try to convince you to consider a broader definition.

Quote
(And I definitely think that should work the same for gain and trash. I mean, if you don't have any cards to trash, you can't say that you would have trashed a card, it's pretty obvious. But not to you I guess. Sigh.)

I do agree that that's obviously how it should work.  I mean, I said that's the way I would define it.  I just also said that it doesn't really matter how I'd define it because nothing requires that concept yet.  I'm being descriptive, not prescriptive.

Quote
I think you're just arguing to avoid conceding some points now.

Ok, here's a point conceded.  If I were implementing "when you draw a card," I'd definitely expect to be using the "movement event" you describe for draw.  Not the event that I proposed using for the -1 Card Token.  "When you draw a card" should not happen on an empty deck.

If the token was described in terms of an event, maybe it would be better to refer to that event as "when you would attempt to draw."  I recall the same thing had to happen in the Magic implementation: you needed two different events to handle drawing correctly.

287
Let's Discuss ... / Re: Let's Discuss Adventures Cards: Relic
« on: March 28, 2016, 11:40:35 pm »
Quote
So there are only two events in Dominion then, gaining and drawing?

I said events are things that need to follow that general logic. Either of the two trigger instructions might never do anything and could therefore be ignored, meaning nobody has to care exactly when it happens.  (Well, "when would" still has to care when the event ends so it knows what goes inside the conditional.)  Of course, if neither ever does anything, there's no real point in identifying the instructions between as an event.

(Note also that another implication of that being general logic is that the "instructions comprising the event" might themselves be blank. For something like "At the beginning of your turn," the event doesn't need to "do" anything itself; it just needs to trigger other things.)

Now, the two events you identified are the only ones (along with +$ for the other token) where it's necessary to define the timing of "when would."  No other event can currently have something happen "when it would" happen, so it's sufficient to understand "when" for everything else.

You could go ahead and describe where you imagine the event begins in anticipation of there someday being "when-would" effects for it. I'd probably imagine "trash" being defined analogously to gain, and would place the "when would" just after a specific card has been determined and before a move happens. But a (currently) equivalent definition would be to just have the entirety of the "trash" event be a null sequence of instructions (just like "beginning of turn") occurring immediately after a card is moved to the trash. It's a distinction without a difference until something needs "when you would trash."


Quote
And you're now doing what you accused me of, having what "comprises the event" as a sub-part of the actual event! Your "boundaries" ("when-would" and "would") are inside the event.

I don't particularly care whether you call the trigger instructions part of the event or say they're like parentheses around it.  That's irrelevant.  What's relevant is for people to agree that things like "choose" come before "when-would" when dealing with a gain event. I describe that as "choose" not being part of the event. (And we do agree about the timing, if not the terminology.)

However, I pretty clearly did not identify the trigger instructions as "instructions comprising the event." I said that an event (i.e. the instructions comprising the event) needs to be handled with that general logic: stuff might happen just before it happens; some of that stuff might stop it from happening after all; and other stuff might happen after it's done if it actually happens.

Long ago, when I designed a system for handling events in a Magic rules engine (hobby program, never even close to finished), the events were essentially objects with an "occur" method that performed the "instructions comprising the event" (i.e. just that one line of "code" in my previous post). An event object could be examined to see what type of event it represented (damage, life gain, etc.) and what parameters it had (how much damage, to what, from what...), and its parameters could even be modified (gain twice that much life).

An event object was passed to an event handler that would examine the event type and parameters to see if it matched what some registered replacement effect (a "when-would") or triggered ability (a "when") was looking for. The event manager would handle running any relevant replacement effects (which might modify the event or replace it with a different event) and deciding whether to go through with calling the event's "occur" method and subsequently running any relevant triggered abilities that matched what it did. (It also logged the event if it occurred so there was a way for things to examine what had happened in the past: functionality that might be relevant for something like Smuggler in Dominion.)

So in that implementation, the "when-would" and "would" were distinctly not a part of any event itself, but were part of a separate event manager where they were used to handle all events. That's how I tend to think of it.

If I were implementing a Dominion program (sometimes this thread feels like that's what I'm doing), I think that full-fledged event objects and an event manager would be overkill. I would probably just have functions that looked like what I wrote above, which made sure that the "when-would," the "instructions comprising the event," and the "when" happened with the correct logic for the relatively small number of existing events.

288
Let's Discuss ... / Re: Let's Discuss Adventures Cards: Relic
« on: March 28, 2016, 05:24:47 pm »
So actually I have no idea what constitutes an event in your mind.

Short answer: an event is anything that needs to be handled with this general logic:
Code: [Select]
Event:
handle "when-would"
if still happening:
carry out instructions comprising event
handle "when"

289
Let's Discuss ... / Re: Let's Discuss Adventures Cards: Relic
« on: March 27, 2016, 05:07:43 pm »
Even if I called that whole sequence e.g. gain, it doesn't mean that gain refers to both the whole sequence and the actual movement in isolation, as you seem to think.
Then I think we agree on that, at least.  I thought we had agreed about that earlier, but it seemed like you were saying the opposite in your last post.  I think the problem was I read "first" as "the first instruction of" when I guess you meant "just before."

Quote
Is an event like a matryoshka doll, that contains instructions which themselves contain more events?
Yeah.  Similar to how a programming language procedure is made of statements, some of which may be calls to other procedures.  Or a mathematical function is composed of expressions, some of which may be the evaluation of other functions.

290
Let's Discuss ... / Re: Let's Discuss Adventures Cards: Relic
« on: March 26, 2016, 02:32:34 am »
Ok, let's go with calling them "events", as we have sometimes done in this thread, although "instructions" would be better probably.

The things you listed are what I would call instructions.  Not all of those need to be thought of as generating events.  I think we're really not speaking the same language when it comes to events.

Quote
I agree with this, except as part of all movement events in Dominion, they first thing they do is to make sure the card exists. If not, the event fails outright. For a gain event, would-gain only triggers after that check is successful.

To me, it violates causality to have an event that has to begin happening before it decides whether it "would" or wouldn't happen.

Quote
And I say the same is true of all the movement events. Note that abilities like "when-would" and "when" always trigger on the actual events, not the shorthands.

Except, from what you describe, you don't have "when-would" triggering just before the thing you call the actual event begins to happen... you have it triggering in the middle of the event, after the instructions in the event make a check to see if... itself... is "really" going to happen. In which case, why make the distinction that the check is "a part" of the event rather than saying it's an instruction that's always present leading up to the event?

I mean, for me, the "when-would" and "when" are the things that define the boundaries of an event. The whole reason to call something an event in the first place is because something triggers on one or both of those things and you need to figure out the timing of the triggered things with respect to what happens in between.  It's meaningless to me to say that some instruction happens before "when-would," but is still "part of" the event somehow.

Quote
I think this model is self-consistent and aligned with how timing in Dominion actually works, and see no reason why any of the movement events would be different from each other when it comes to "when would".

I agree that your event timing works out, but I don't like that you require a definition of draw that makes the token not work with events. But ok, I'll try not to argue about that anymore.


All right, well, I didn't mean to type that much in this post. I got the hint that you want to wrap this up; I'm trying to get there, but I'm apparently not doing a very good job of it. Sorry.

291
Let's Discuss ... / Re: Let's Discuss Adventures Cards: Relic
« on: March 25, 2016, 06:38:26 pm »
You're not using the existing "event concept" that is already defined via "gain" though (which includes "would gain"), you're making up a new one.
I'm not making up a new one because my event concept is not defined via gain.  My concept of an event is just a sequence of instructions that you distinguish with a name and refer to in other instructions.  You can trigger things when the event happens (just after the event's last instruction), and you can also trigger things when the event would happen (just before the event's first instruction) that possibly result in skipping the entirety of the event's instructions (meaning the event didn't happen).

You want to place a restriction (derived from gain) on what sequences of instructions can be called events. Can you give a simple rule that describes exactly what restriction you want to use?

292
Let's Discuss ... / Re: Let's Discuss Adventures Cards: Relic
« on: March 25, 2016, 02:45:44 am »

I think defining "profit" in Dominion is possible without being inconsistent. (Although, part of your argument for why "draw" doesn't have a check for the existence of a card, was that it doesn't need it.

I argued that you didn't need to check for a card before initiating (my definition of) draw (because the check is internal to the draw).  That'd be analogous to not needing to check for the existence of a suitable card before initiating a profit (because the choice is internal to profit).  I intended both to be events that always "would" happen when you were instructed to do them.


Quote
I'm not sure how having an event that does the same as another event can do, can fit into your idea of how Dominion works.)

Well, "buy" is an event that does some stuff followed by initiating a "gain" event.  So, in some sense, that idea already exists in Dominion.


Quote
Since profit is defined as a gain, the whole point of a "when you would" would be to change the gain, so therefore it would in practice instead be "when you would gain a card costing up to $3". That would be clearer and work consistently with normal "when you would gain" (Trader).

Right, but that wouldn't be an equivalent definition.  Now, those cards would trigger on Workshop; the original definition limited them to triggering on cards that specifically had you profit.  (Plus the changed interaction with Trader, but you said that.)


Quote
We both agree that your definition of "draw" and mine are possible. I just see no reason to define it your way, making an unnecessary distinction between "draw" and "gain". Similarly I see no reason to ever have "when you would profit", since it creates an unnecessary level of abstraction (as you put it) that makes it inconsistent with how Trader works.

I guess I just think that simpler is better (contrary to what it seems judging by this discussion :P), and in line with how Dominion usually is built.

Your alternative is to say the -1 Card Token is a fake card that's there only while you're drawing*.  So you have to define what "while you're drawing" means.

In order to match the rulings, "while you're drawing" must begin after you've been instructed to draw (obviously), and at a point when you wouldn't have reshuffled yet (because you'd remove the token instead of reshuffling).  So, at this start point, you check whether the player has his token and put a null card on top of his deck.  If you placed a null card, the player draws it immediately, and you take the token away from him.

(And I guess "while you're drawing" ends once you've either moved a card, removed the token, or decided there's no card to move.  But the end condition isn't too important because there's never any need to do anything at that time; any null card will already be gone.)

So "while you're drawing" starts before you know whether or not you have a card to draw.  "While you're drawing" always starts whenever you're instructed to draw.  That sounds familiar...

Well, hey, the point where you want your "while you're drawing" to begin is the exact same point where I want to fire my "would draw" event.  And where you want to remove the token and place a null card to prevent the remaining draw instructions from having an effect, I just want to replace the draw event with getting rid of the token.

So you're actually using something like my definition of draw to make your fake token appear at the right time.  You're just calling it "while you're drawing" instead of a draw event. And you're just faking out the instructions with a null card instead of canceling a draw event outright.

So... I guess it's subjective, but to me, it's much simpler to just define the "would draw" to happen at the specified point (thereby defining a "draw" event as something that always "would happen" when you're instructed to draw, which does make it different from a "gain" event) and then, when the token is there, remove it instead of carrying out the draw event.  That way, I use the existing event concept, and I don't have to bother with defining or placing the null card.  Or reinterpreting what the token says.


Now, whether the "would draw" on the token is representative of a real "would draw" we might see on future cards? Maybe or maybe not. If those got defined to have different timings (like if your hypothetical didn't get $ on an empty deck), then I'd obviously need define something (DrawSpecificCard) similar to your idea of a draw event in order to handle those.


* Ok, you actually said "when you're drawing" and I changed it to "while."

293
Let's Discuss ... / Re: Let's Discuss Adventures Cards: Relic
« on: March 24, 2016, 04:53:41 pm »
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.
I can't agree that, just because the definition of "gain" does not encompass the evaluation of a card specifier, the definition of "draw" cannot encompass the evaluation of a card specifier (or is inconsistent if it does).  Why shouldn't it be possible to define events at different levels of abstraction?

Imagine there's a new instruction called "profit."  For a player to profit means for him to gain a card costing up to $3.  Some cards also do something when a player "would profit" (maybe gain a Gold instead or get +$5 instead; whatever); the intent is that these cards are supposed to work whenever a player is told to profit, even when there are no suitable cards left.

Profit and gain are two events defined at different levels of abstraction.  Profit is an operation on a player that encompasses the evaluation of a card specifier ("a card visible in the supply costing up to $3") and (potentially) entails a gain.  Gain is an operation on a player and a specific card, so it requires any card specifiers to have been evaluated before it can happen.

Now imagine there's a card called Profit whose only instruction is "profit."  Playing Profit and playing Workshop result in the exact same logic being followed: choose a card matching a set of criteria from the supply, then, if you found one, gain it.  Yet things that happen when you "would profit" happen before the choice (just on Profit, clearly), while things that happen when you "would gain" happen after the choice, and only if you were able to choose a card (on both Profit and Workshop).

Just because Profit does the same thing as Workshop doesn't mean "would profit" is required to happen at the same time as "would gain."  If it did mean that, there would be no way to create anything like "profit" because you would be forced to make it identical to gain, so you couldn't make it do what you want.

So why would the fact that "would gain" works at one level of abstraction mean that "would draw" should happen at the exact same level of abstraction?  Why shouldn't you be able to define draw at a higher level of abstraction, similar to that of "profit"?  Especially if defining it that way keeps other things consistent? (Yeah, I know; I understand that you don't think the token is a real "would draw" so you don't think it's inconsistent.)

Or do you think that, since "gain" is already defined to work at one level of abstraction, there should be no other events at any other level of abstraction, so defining something like "profit" would actually be impossible without being inconsistent?

294
Let's Discuss ... / Re: Let's Discuss Adventures Cards: Relic
« on: March 24, 2016, 01:18:48 am »
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?

295
Let's Discuss ... / Re: Let's Discuss Adventures Cards: Relic
« on: March 23, 2016, 03:54:34 am »
(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.

296
Let's Discuss ... / Re: Let's Discuss Adventures Cards: Relic
« on: March 22, 2016, 08:34:22 pm »
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.

297
Let's Discuss ... / Re: Let's Discuss Adventures Cards: Relic
« on: March 22, 2016, 08:31:06 pm »
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.

298
Let's Discuss ... / Re: Let's Discuss Adventures Cards: Relic
« on: March 22, 2016, 07:06:20 pm »
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.

299
Let's Discuss ... / Re: Let's Discuss Adventures Cards: Relic
« on: March 22, 2016, 03:48:12 pm »
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.

300
Let's Discuss ... / Re: Let's Discuss Adventures Cards: Relic
« on: March 22, 2016, 02:32:55 pm »
"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.)

Pages: 1 ... 10 11 [12] 13 14 15

Page created in 0.163 seconds with 19 queries.