Thursday, June 04, 2020

The Random spin

For reference, here’s what I believe happened during my last spin of the wheel:
The original spin came up as Random. The winners are Axemabaro, Trigon, and myself. The Ruleset asks me to apply the Payout: “For each Winner, select another Segment at random and apply its Payout to them.”, to each Winner. So, I first applied this Payout to Axemabaro. What does this mean? For each winner, I selected another Segment at random and apply the Payout to them - the fact that this action is done “to Axemabaro” is meaningless. These random segments came up Random for Axemabaro, False for me, and Unearned for Trigon. Since Axemabaro’s came up Random again, I have to again apply Random “to Axemabaro”. Still meaningless, but I take the same action of applying a random payout to each Winner; these were Numbness, False, Numbness.

Back to the original spin, I apply Random “to pokes”, which applies Power to Axemabaro, Shaft unfortunately to myself, and Laziness to Trigon.

I then apply Random “to Trigon”, which applies Tiptop to Axemabaro (Random doesn’t specify that the random Segment is chosen from the Wheel), ANOTHER SHAFT FOR ME, and another Random for Trigon! I resolved Trigon’s Random the way I resolved Axemabaro’s Random from the first Random; this was False, Manatee, False.

The global effect applied from the original Random was Tiptop, which does nothing since nobody had it in their wager.

The final tally of points won from all the Randoms applied was:
- Axemabaro: Numbness (+12), Power (+2 power), Tiptop (+1), False (+12)
- pokes: False (+12), False (+12), Manatee (+12)
- Trigon: Unearned (+12), Numbness (+12), Laziness (+12), False (+12)

Comments

Tantusar: he/they

04-06-2020 14:36:20 UTC

“Random doesn’t specify that the random Segment is chosen from the Wheel”

I agree with this, but it does specify “another segment” so I don’t think Random can be re-selected.

pokes:

04-06-2020 14:40:12 UTC

Oh no

Outcomes I was expecting: this stands (no mess), or is CfJed away (small mess)

Outcomes I was not expecting: this was half-legal (large mess)

pokes:

04-06-2020 14:41:15 UTC

I suppose per Atomic Actions that means rolling back to having rolled the first Random, and nothing else?

Lulu: she/her

04-06-2020 14:41:22 UTC

Oh no indeed

pokes:

04-06-2020 14:55:03 UTC

Okay, if I had instead done it the correct Tantusar way, Axemabaro gets a False Unearned Manatee; I get a Manatee Ditzy False; Trigon gets a Numbness False Power; then we all get the global effect from Unearned.

pokes:

04-06-2020 15:00:15 UTC

I think The Wheel is now correct, the large mess having been fixed.

Kevan: he/him

04-06-2020 15:04:22 UTC

“the fact that this action is done “to Axemabaro” is meaningless” - is it, though?

What does the action unpack to, here? “Apply [For each Winner, select another Segment at random and apply its Payout to them.], to Axemabaro.”? That seems like a big enough syntax error that it couldn’t be meaningfully processed, rather than something that can be resolved by choosing to overlook the “to Axemabaro” as meaningless.

Publius Scribonius Scholasticus: he/they

04-06-2020 15:14:50 UTC

I don’t understand why you think that the Payouts are applied to everyone. Could you expand on that?

pokes:

04-06-2020 15:26:26 UTC

@Kevan I think needing literal inclusion to make sense is an overly restrictive standard.

The way I was thinking about it is, applying the Payout to Axemabaro means doing what the Payout says with Axemabaro in my mind as the destination of what it says. But that destination doesn’t need to be relevant, and can be overridden; I think we would all accept a Payout of “Josh gets 3 points”, if he had somehow snuck that on the wheel,  as meaning that when that segment is hit in someone’s wager, Josh gets 3 points, even though “Apply ‘Josh gets 3 points’ to Axemabaro” doesn’t make sense.

In this case, what is being done “to Axemabaro” itself includes doing a multitude of things. In programming terms there seems to me to be two loops, one in the Ruleset “to each Amnesiac, for each time”, and another in the Payout “For each winner”, and this inner loop is overriding the destination of the Payout.

Kevan: he/him

04-06-2020 15:38:03 UTC

That inner loop reads more as if it’s being performed with the context of “to Axemabaro”, though; not that it’s a subroutine that is processed in isolation and then returns a value which is then applied to Axemabaro.

The programming analogy feels more like it’s calling the subroutine with the argument “apply_to=Axemabaro” and we haven’t any code for what “Josh gets 3 points applied to Axemabaro” means.

Clucky: he/him

04-06-2020 15:38:48 UTC

nice try, but “Winner” isn’t really a defined term here now is it. What winner are they talking about? Seems awfully persumptius of you to assume its referring to the winners of that Payout.

Seems to me like you should all get nothing

Tantusar: he/they

04-06-2020 15:46:13 UTC

“Apply the Payout of the Segment with Index corresponding to the die roll, to every Amnesiac for each time that Segment appears in their Wager. (Such Amnesiacs are known as the Payout’s Winners.)”

Clucky: he/him

04-06-2020 15:50:01 UTC

Note that the rule doesn’t say “For each of this payout’s Winner”...

pokes:

04-06-2020 15:58:02 UTC

@Kevan to extend the programming analogy, in Pythonish pseudocode, if one had

def josh_segment(apply_to):
    josh.points += 3

josh_segment(axemabaro)

there’s no problem. In this case, I’m reading the Random effect as:

def random_segment(apply_to):
   for winner in winners:
       segment = random_segment()
       segment(apply_to=winner)

Clucky: he/him

04-06-2020 16:17:13 UTC

the problem is “winners” isn’t defined here

could easily make the case that its empty. or that it just contains “apply_to” at this point

pokes:

04-06-2020 16:19:31 UTC

Sure, the set of winners is a separate consideration. I disagree and think it’s implied that it’s the winners of Random, but that’s what the CfJ is for.

Kevan: he/him

04-06-2020 16:40:34 UTC

[pokes] To me it seems more like:

def josh_segment(apply_to):
    if (apply_to != null)
        josh.apply_to.points += 3
    else
        josh.points += 3

Where “josh.apply_to.points” (“give Josh 3 points to Axemabaro”) is a syntax error that only crashes at runtime.

Kevan: he/him

04-06-2020 16:58:58 UTC

How are we resolving the fact that Josh and I added Random to our Wagers before Pokes had finished their processing of the atomic action?

pokes:

04-06-2020 17:01:07 UTC

Oh no

pokes:

04-06-2020 17:02:28 UTC

(Changing my wager after someone else rolled but before they updated points was what I had in mind when I asked if anyone wanted to scam with me, on Slack. But then the proposal that locked wagers before the time you can roll prevented that. Or so I thought! Since I think this is a successful loophole around that.)

pokes:

04-06-2020 17:17:59 UTC

Actually, I think changing your wagers was illegal: the wheel was past due when they were changed, because the Atomic Action wasn’t complete; at the time it was completed is when the due date changed “for the purposes of determining the ordering or legality of game actions”.

Kevan: he/him

04-06-2020 17:20:47 UTC

Yes, that makes sense. Reassuring to know that an atomic actioner can’t scam the timing in these situations, then.