buttonmen-dev / buttonmen

Buttonmen - an online dice game
Other
16 stars 24 forks source link

potentially unplayable buttons #1303

Open ManvilleFog opened 10 years ago

ManvilleFog commented 10 years ago

There are buttons that are currently commented out in the sql script that makes the button tables, and I'd like to remove those comments. There are a few in my list of buttons to add that pose problems similar to those that are currently commented. I'd like to remove those comments. Even if the buttons are never implemented to be playable, I'd like them to be available to whatever other resources the site has to provide info about these buttons.

Heres a list:

'Buzzing Weasel','F R P G S' 'James Ernest','(pi) (inf) (sqrt(-2)) (X)' 'Killer Christmas Tree', '(6) Z(6) (10) Z(12) (X)' (I'm not sure why this is still commented out) 'Dead Guy', '(0) (0) (0) (0) (0)'

'Bob', '(pX+Y+Z) (t0]) (sA!) (zA!) (cA!) (X+Y+Z)'
'Bayani', '(F) (SFD) (16) (16) (12/20)'

These last two are from buttons not yet added to the database. I have no idea WTF Bob's recipe is meant to be, but that's how it appears on the button. It's a rare Yoyodyne button. Bayani's recipe uses F (I have to look that up again) from Buzzing Weasel's recipe.

ManvilleFog commented 10 years ago

James Ernest (Summer 1999) From beatpeopleup: "The Button is potentially the most powerful Button Man inexistence, although it's debatable whether it could ever make a starting roll. Richard Garfield, PHD and creator of the Magic: the Gathering card game, has argued that it is impossible to randomly generate a number between one and infinity in a linear distribution, and that this is the essential flaw in the famous 'two envelopes' paradox. Combine this with the impossibility of even describing 'i' in real terms, and the pi-sided die seem like a walk in the park."

Since it's mathematically impossible to play this button, the potential implementation is in creating die types for infinity, pi, and imaginary(2).


The Buzzing Weasel: (A one-of-a-kind button) F R P G S

From beatpeopleup: The Buzzing Weasel is one of those infamous Button Men created on a whim and available to a select few. A game industry internet club created a limited number of Buzzing Weasels and distributed these buttons to its membership in the summer of 1999. The five letter symbols have no meaning outside the context of this button (many of them are now defined as Swing Dice), but they are defined on the Buzzing Weasel as:

F: "Fudge" die. Rolls -1, 0, and 1 in a linear distribution. Is worth either 0, 1, or 3 points depending on who you talk to. Zero, because that's twice its average roll; One, because that's its highest value; Three because it can vary between 3 different values. It's a fruitless debate, really.

R: "Regular" die. Equivalent to an "X" Swing Die.

P: "Prestige" die. A variable die which can be any size between 30 and 100 sides, the Prestige Die cannot make any Attacks and is not worth any points.

G: "Gamer" die. A variable die which can be any size between 3 and 21, except for the common die sizes of 4, 6, 8, 10, 12, and 20.

S: "Screw" or "Suck" die. A 7-sided die. If the S die makes an attack and rolls odd, its owner gets another turn. If it rolls even, its owner loses.

Despite its multivariability, the Buzzing Weasel is probably the least effective Button Man ever devised. Its weakness stems from a conspiracy of the Fudge, Prestige, and Screw dice: The last thing a player with the Weasel wants to do is make attacks, specifically with the Screw Die. Unfortunately, the Fudge nearly guarantees that he will go first, the Prestige die is powerless to attack, and the other two normal dice are soon captured or locked out. The result is that the Buzzing Weasel is almost always forced to make multiple attacks with its Screw Die, and nearly always loses the game by killing itself.

NOTE: Rather than make separate skills for each of the dice on this button, my thoughts are this button should be treated as a whole and that none of its unique skills should be applied elsewhere, ever!


Killer Christmas Tree has no special rules, but introduces (and is perhaps the only button using) Sleep Dice. I think I might have decided to leave this commented till an issue was posted for the implementation of Sleep Dice. whatevs - I'll add this to the button table without further discussion - it will act just like any other button currently lacking implemented die types.


ShadowShade had tried playing Dead Guy, but it didn't work. It doesn't show up as being unplayable because it doesn't have unimplemented die types. The problem is that when the site tries to roll a die it choose a random positive whole number between 1 and the number of sides. It gave the same error given when trying to play Wildcard - another button with a special die size not yet implemented.


Bayani's first die is a Fudge Die (explained above). It's second die is a Sustained Fire Die. It rolls 0, 1, 1, 2, 2, 3 in linear distribution. If a zero is rolled, the only attack Bayani can make afterwards is a skill attack. Alternatively, he can just reroll it without making an attack. It's worth 3 points.


My guesses with Bob are that the dice with + are either Triplet (rather than Twin) dice or Plasma Dice. I was going to guess that the ! was their way of noting prime swing dice, but then realized there isn't an A swing. oops. I can't even begin to guess what t0] is suppose to do!

ManvilleFog commented 10 years ago

The question I need answered is: Can I add these buttons to the database? I'd like to complete my additions to the button tables within the next week or two.

I plan to include these buttons even though they have (hopefully) one-of-a-kind die types.

blackshadowshade commented 10 years ago

The major issue here is that the button recipes are currently unparseable, and thus will probably break something. Of course, we should be gracefully handling the case where we can't parse the button recipe anyway, much like we currently do with Wildcard, but I'm pretty sure we don't yet.

blackshadowshade commented 10 years ago

Of course, I'm excepting Killer Christmas Tree.

As for Dead Guy, I'll take a look at what this would take to implement. New issue #1304 opened.

ManvilleFog commented 10 years ago

@blackshadowshade - please correct me if I'm wrong. Buttons with unimplemented button specials are disabled by the site.

All the buttons in question have button specials, so it shouldn't matter that their recipes are unparseable because the site won't try to parse them.

That's excepting Killer Christmas Tree, which really should not be on this list. Perhaps I just forgot to remove the comment, or just didn't bother because at the time there were still so many unimplemented die types that Sleep(Z) seemed a long way off.

blackshadowshade commented 10 years ago

You're correct in your statement, Fog, that buttons with unimplemented button specials are disabled on prod. They're not disabled on dev, but that is by design, and I guess we should be somewhat lenient on allowing things to break on dev when the recipe is not parseable.

As long as these buttons are all marked with the button_special flag, then I'm fine with them going into the database.

ManvilleFog commented 9 years ago

I think this will be closed with #1291 , currently in progress.

AdmiralJota commented 8 years ago

I notice this is still open, so I'd like to make some comments toward how we might start to consider tackling James Ernest's button:

James Ernest: (pi) (inf) (sqrt(-2)) (X)

The only real problem with the (pi) die is that it's a non-integer. (It's also irrational, but everyone uses decimal approximations of pi anyway, so I don't think that's a big deal.) My proposal for non-integer die sizes in general (because if we implement this, there's no reason not to allow other ones) is this:

Consider a three-sided die. Its maximum value is obviously 3, and its minimum value, like most dice, is 1. It has a one out of three (because it's three-sided) chance of rolling its minimum value of 1. Increase that value by one, and that gives a one out of three chance of rolling 2. Increase that by one again, and you have a one out of three chance of rolling 3.

For a 3,14159-sided die, I think we can use similar logic. Its maximum value is 3.14159, and its minimum value is 1. It has a one out of 3.14159 chance of rolling its minimum value of 1. Increase that by one, and that gives a one out of 3.14159 chance of rolling 2. Increase that by one again, and you have a one out of 3.14159 chance of rolling three. Finally, increase that by 0.14159, and you have a 0.14159 out of 3.14159 chance of rolling 3.14159.

Now, mathematically, (sqrt(-2)) is equal to i(sqrt(2)). If we decide on an appropriate definition for the Imaginary skill (symbol: i), then this becomes just another case of a non-integer die, this time with a size of approximately 1.4142.

The trickiest one is the (inf) die. If we are using decimal approximations to represent irrational numbers, then it seems reasonable to use $MAXINT as an approximation for infinity. However, this would ensure that the button would be virtually guaranteed to win, which would make it rather un-fun to play. To balance this out, we need to give some additional special quality to an "infinity"-sided die. I suggest treating infinity-sided dice the same as null dice: Infinity is not a number, so infinity dice do not count for scoring (whether kept or captured). Likewise, dice captured by an infinity die are like numbers added to infinity: they have no effect (on the score).

Hurtay commented 8 years ago

Sounds pretty logic to me. Is this how the button originally was intended to score?

AdmiralJota commented 8 years ago

I'm pretty sure that the button was intended to be completely impossible to even attempt to play.

But I like a challenge.

(That doesn't mean I'm adding ears to the game mat.)