<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.doc.boardgamearena.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Woodruff</id>
	<title>Board Game Arena - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://en.doc.boardgamearena.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Woodruff"/>
	<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/Special:Contributions/Woodruff"/>
	<updated>2026-09-16T21:28:31Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.0</generator>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Troubleshooting&amp;diff=8001</id>
		<title>Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Troubleshooting&amp;diff=8001"/>
		<updated>2021-04-19T14:33:48Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: /* Game starts but I can&amp;#039;t make a move */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Studio_Framework_Navigation}}&lt;br /&gt;
&lt;br /&gt;
Describing common errors which is hard to understand and debug &lt;br /&gt;
&lt;br /&gt;
== Game does not start at all ==&lt;br /&gt;
&lt;br /&gt;
=== Undefined offset: 0 in table/table.game.php on line 830 ===&lt;br /&gt;
&lt;br /&gt;
Check if you&#039;re calling self::getActivePlayerName () during setupNewGame()&lt;br /&gt;
&lt;br /&gt;
Check if you&#039;re NOT calling self::activeNextPlayer() at the end of your game setup. You must always have at least one active player.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Wrong formatted data from BGA gameserver 1 (method: createGame): ... ===&lt;br /&gt;
&lt;br /&gt;
This is generic message usually followed by exact position in your source code, and usually its syntax error in one of yours php script&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Propagating error from GS 1 (method: createGame): Fatal error during yourgame setup: Not logged ===&lt;br /&gt;
&lt;br /&gt;
Calling self::getCurrentPlayerId () or using $g_user from &#039;args&#039; state function, see also below&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Propagating error from GS 1 (method: createGame): Fatal error during yourgame setup: Unknow player statistic: ===&lt;br /&gt;
&lt;br /&gt;
Calling self::incStat() with second parameter which is an empty string&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error:  Propagating error from GS 1 (method: createGame): Fatal error during yourgame setup: Error while processing SQL request: INSERT INTO stats ... ===&lt;br /&gt;
&lt;br /&gt;
Fatal error during yourgame setup: Error while processing SQL request: INSERT INTO stats (stats_type, stats_player_id, stats_value) VALUES (&#039;10&#039;,&#039;2300663&#039;,&#039;0&#039;),(&#039;10&#039;,&#039;2300662&#039;,&#039;0&#039;)&lt;br /&gt;
Duplicate entry &#039;10-2300663&#039; for key &#039;stats_table_id&#039;&lt;br /&gt;
&lt;br /&gt;
Why? In the stats.inc.php you declared two keys with the same integer &amp;quot;id&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error:  Propagating error from GS 1 (method: createGame): Fatal error during yourgame setup: BGA main website do not respond ===&lt;br /&gt;
&lt;br /&gt;
Check if other games work; if not, it&#039;s a problem with BGA Studio; if so, your game likely reaches an end state immediately. Check your states.inc.php and your transitions.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Propagating error from GS 1 (method: createGame): BGA service error ===&lt;br /&gt;
&lt;br /&gt;
You may have syntax error in your dbmodel.sql.&lt;br /&gt;
&lt;br /&gt;
Or, you may be calling self::initStat() for a statistic that does not exist. Check the statistic name, and make sure you clicked &amp;quot;Reload statistics configuration&amp;quot; button in the admin console after making changes to stats.inc.php&lt;br /&gt;
&lt;br /&gt;
=== Fatal error during creation of database ebd_quoridor_389 Not logged ===&lt;br /&gt;
&lt;br /&gt;
Check that you didn&#039;t use $g_user or getCurrentPlayerId() in setupNewGame() function or in an &#039;args&#039; function of your state.&lt;br /&gt;
&lt;br /&gt;
As these functions are not consequences of a user action, there is no current player defined.&lt;br /&gt;
&lt;br /&gt;
As a general rule, you should use getActivePlayerId() and not getCurrentPlayerId(). See the [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine presentation on the game state machine] for more information.&lt;br /&gt;
&lt;br /&gt;
=== Warning: Invalid argument supplied for foreach() in table.game.php ===&lt;br /&gt;
&lt;br /&gt;
   Warning: Invalid argument supplied for foreach() in /var/tournoi/release/tournoi-151226-1240-gs/www/game/module/table/table.game.php on line 129 &lt;br /&gt;
   Fatal error: Cannot unset string offsets in /var/tournoi/release/tournoi-151226-1240-gs/www/game/module/table/table.game.php on line 143&lt;br /&gt;
&lt;br /&gt;
That appears when your arg* function that suppose to return array of state arguments returns a scalar (a non-array) value&lt;br /&gt;
&lt;br /&gt;
=== The server reported an error ===&lt;br /&gt;
&lt;br /&gt;
During table creation: &amp;quot;The server reported an error&amp;quot; error shown and nothing else.&lt;br /&gt;
&lt;br /&gt;
If you cannot even create a table - there is syntax error in gameinfos.php, check it, reload it from management panel.&lt;br /&gt;
If still no luck copy clean version from template https://github.com/elaskavaia/bga-sharedcode/blob/master/gameinfos.inc.php&lt;br /&gt;
&lt;br /&gt;
== Game starts but I can&#039;t make a move ==&lt;br /&gt;
&lt;br /&gt;
=== When I do a move, I got &amp;quot;Move recorded, waiting for update ...&amp;quot; forever ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Move recorded&amp;quot; means that your ajaxcall request has been sent to the server and returned normally.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Waiting for update&amp;quot; means that your client interface is waiting for some notifications from the server that correspond to the move we just did.&lt;br /&gt;
&lt;br /&gt;
If this message stays forever, it is probably that your PHP code does not send any notification when the move happens, which is abnormal. To fix this: add a notifyAllPlayers or a notifyPlayer call in your PHP code.&lt;br /&gt;
&lt;br /&gt;
=== When I do a move, I get &amp;quot;Sending move to server...&amp;quot; then nothing and game resets to state before the move ===&lt;br /&gt;
&lt;br /&gt;
Its possible that server code get into infinite loops or thinks too much, in which case it will timeout and will be aborted without any extra logs (and db transaction you saw in the log won&#039;t be committed). You will usually see &amp;quot;Unable to connect to server&amp;quot; message on console in this case. You have to put more logging into server&lt;br /&gt;
to trace where it hangs.&lt;br /&gt;
&lt;br /&gt;
=== When I do a move, I get &amp;quot;Ajaxcall error: empty answer&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
You either have missing self::ajaxResponse(); in your game.action.php method, or there is some problem with getting arguments (check that you are using btoa() on client when using AT_base64 arg type in action.php)&lt;br /&gt;
&lt;br /&gt;
=== Some player action is triggered randomly when I click somewhere on the game area ===&lt;br /&gt;
&lt;br /&gt;
You probably used &amp;quot;dojo.connect&amp;quot; on a null object. In this case, dojo.connect associate the event (ex: &amp;quot;onclick&amp;quot;) to the whole game area.&lt;br /&gt;
&lt;br /&gt;
Most of the time it happens in this situation, when my_object element does not exists:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   dojo.connect( $(&amp;quot;my_object&amp;quot;), &amp;quot;onclick&amp;quot;, this, (event)=&amp;gt;{})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To determine if this is the case, place &amp;quot;alert( $(&amp;quot;my_object&amp;quot;) )&amp;quot; before the dojo.connect to check if the object exists or not.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;This is not your turn&amp;quot; error when I click on a possible move ===&lt;br /&gt;
&lt;br /&gt;
You need to change to the active player by clicking the red arrow next to their name in the player panel (right side of the page).&lt;br /&gt;
&lt;br /&gt;
[[File:Change_active_player.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Please wait, an action is already in progress when I click on a possible move (Generated by checkAction / XXX) ===&lt;br /&gt;
&lt;br /&gt;
This error is triggered in the JS by the checkAction holder for XXX.&lt;br /&gt;
This can happen when the player sent an Ajax request action earlier, but did not get an answer from the PHP side.&lt;br /&gt;
To avoid this, put an empty notifyPlayer in the PHP side of the Ajax handler to ensure the client receives a response.&lt;br /&gt;
This line of code should do it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    self::notifyPlayer($player_id, &#039;system&#039;, &#039;&#039;, array()); /* $player_id is of course the Id of the player who made the request */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Predefined server errors ==&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Unexpected final game state (XX) ===&lt;br /&gt;
&lt;br /&gt;
The action function does not transition to any state, i.e.&lt;br /&gt;
  function selectField($field) {&lt;br /&gt;
    self::checkAction ( &#039;selectField&#039; );&lt;br /&gt;
    if ($field!=0) $this-&amp;gt;gamestate-&amp;gt;nextState ( &#039;next&#039; );&lt;br /&gt;
  }&lt;br /&gt;
Here if $field is 0 there is no transition&lt;br /&gt;
&lt;br /&gt;
=== This game action is impossible right now ===&lt;br /&gt;
&lt;br /&gt;
Check the game log. Usually your state does not define the action you trying to perform in &#039;possibleactions&#039; array.&lt;br /&gt;
&lt;br /&gt;
Also check your onActionName javascript function. Make sure you are calling the right &amp;quot;actionname.html&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: This transition (playerTurn) is impossible at this state (42) ===&lt;br /&gt;
&lt;br /&gt;
This is pretty self explanatory. Function nextState() takes transition name not a state name, so you probably did not&lt;br /&gt;
define this transition that the given state&lt;br /&gt;
&lt;br /&gt;
== Game interface hangs during reload or on start ==&lt;br /&gt;
&lt;br /&gt;
Showing &amp;quot;Application Loading...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Javascript error: During pageload undefined no_stack_avail Script: ===&lt;br /&gt;
&lt;br /&gt;
This error usually has no useful data, but it means you called somes API that require a callback and did not define callback function, i.e&lt;br /&gt;
in dojo.connect, this.connectClass, dojo.subscribe, etc&lt;br /&gt;
   &lt;br /&gt;
      this.connectClass(&#039;field&#039;, &#039;onclick&#039;, &#039;onField&#039;); // &amp;lt;-- onField is not defined&lt;br /&gt;
&lt;br /&gt;
=== Other errors with &amp;quot;Application loading...&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
You probably have a syntax error in your Javascript code, and the interface refuses to load.&lt;br /&gt;
&lt;br /&gt;
To find this error, check if there is an error message in the Javascript console (F12).&lt;br /&gt;
&lt;br /&gt;
If there is really nothing on the log, it&#039;s probably that the system was unable to load your Javascript because of an syntax error that affect the structure of the Javascript file, typically a missing &amp;quot;}&amp;quot; or a missing &amp;quot;,&amp;quot; after a method definition.&lt;br /&gt;
&lt;br /&gt;
If you have &amp;quot;Uncaught ReferenceError: bgagame is not defined&amp;quot; you have major syntax error in your js file, you should see some other clues in the log where the errors is.&lt;br /&gt;
&lt;br /&gt;
If you have &amp;quot;dojo.publish is not defined&amp;quot; or something similar, this could be caused by another error earlier. For example, a syntax error caused by a malformed generated file (such as using newlines in tiebreaker description). Also you might have left some images in the /img directory with special characters in the name which must be removed. If you edited images for the game box and website, ensure that you have not left any unnecessary files there.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected Syntax Error: ===&lt;br /&gt;
&lt;br /&gt;
No further details in the log. When log is filling with some social connect errors.&lt;br /&gt;
&lt;br /&gt;
Possible Reason: Syntax error in of the php script which is loaded before the start, such as gameoptions.inc.php, gameinfos.inc.php and such.&lt;br /&gt;
&lt;br /&gt;
=== Game interface spins in a loop throwing error ===&lt;br /&gt;
&lt;br /&gt;
Errors is something like &amp;quot;Cannot read property &#039;is_ai&#039; of undefined&amp;quot;. Cannot restart the game because cannot access UI to stop.&lt;br /&gt;
Likely you get in actplayer state with player id == 0. The only way to fix it is to edit database, globals index == 2 set player id to one of your test dudes&lt;br /&gt;
(can copy from row 5 for example).&lt;br /&gt;
&lt;br /&gt;
=== Unable to find table database (1): ebd_yourgame_112222 ===&lt;br /&gt;
&lt;br /&gt;
Its either temporarily server error especially on studio it timeouts sometimes, just try reloading again.&lt;br /&gt;
Or check if you have syntax errors in your php game file or sql.&lt;br /&gt;
&lt;br /&gt;
== Type conversion / juggling errors ==&lt;br /&gt;
&lt;br /&gt;
=== On php side I get a number instead of string I expect ===&lt;br /&gt;
&lt;br /&gt;
 $num = 3;&lt;br /&gt;
 $meeple = &amp;quot;meeple_&amp;quot; + $num; // &amp;lt;-- suppose to be &amp;quot;meeple_3&amp;quot;!&lt;br /&gt;
&lt;br /&gt;
When you switch between JS and PHP it easy to type this and not notice the +. Plus sign (+) in php does not mean string concatenation (in javascript does!),&lt;br /&gt;
in php + means integer arithmetic. So change + to . (dot)&lt;br /&gt;
&lt;br /&gt;
=== On php side my string comparison does not work ===&lt;br /&gt;
&lt;br /&gt;
   if ($color == &#039;4baae2&#039; || $color == &#039;000000&#039;) { &lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Apparently you should not be using &#039;==&#039; in php to compare strings! You should use &#039;===&#039;. The (==) operator will typecast the strings &lt;br /&gt;
to numbers then do comparison!&lt;br /&gt;
Its not very apparent because usually you can get away with it, but not when strings resemble numbers like hex &#039;colors&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Integer columns in the database are returned as strings ===&lt;br /&gt;
&lt;br /&gt;
This is normal PHP behavior. All fields are returned as string type, regardless of their actual type in the database. This also applies to global variables accessed via getGameStateValue(), since they are stored in a database table.&lt;br /&gt;
&lt;br /&gt;
You can use type-casting to convert them to the correct type after they come out of the database.&lt;br /&gt;
&lt;br /&gt;
   $myValueInt = (int)self::getGameStateValue(GLOBAL_ROUND_NUMBER);&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
   $myValueInt = self::getGameStateValue(GLOBAL_ROUND_NUMBER) + 0; // adding 0 casts to int&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
same with direct qdb ueries&lt;br /&gt;
   $sql = &amp;quot;SELECT my_int_column FROM my_table WHERE my_condition&amp;quot;;&lt;br /&gt;
   $myResult = self::getUniqueValueFromDB($sql); &amp;lt;-- this is a string&lt;br /&gt;
   $myResultAsInt = (int)$myResult;&lt;br /&gt;
&lt;br /&gt;
https://stackoverflow.com/questions/5323146/mysql-integer-field-is-returned-as-string-in-php&lt;br /&gt;
&lt;br /&gt;
== Zombie mode ==&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Propagating error from GS 1 (method: zombie): Not logged ===&lt;br /&gt;
&lt;br /&gt;
You are probably calling getCurrentPlayerId() or getCurrentPlayerName() in your zombieTurn method or any of the methods it uses. Instead, use the $active_player_id provided as parameter to zombieTurn().&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Can&#039;t manage zombie player in this game state ===&lt;br /&gt;
&lt;br /&gt;
Despite what the message suggests, this error has nothing to do with your state machine. It is caused by an exception in the zombie code. It could be an undefined value sent to a database query. Check the unexpected exceptions log. It could also be the same problem as above, so look for getCurrentPlayerId() or getCurrentPlayerName() in your zombieTurn method.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Wrong formatted data from BGA gameserver 1 (method: zombie): ===&lt;br /&gt;
&lt;br /&gt;
This is almost certainly an undefined value in PHP code. Look for a warning or error message in the game replay log on the right side of the table UI.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: BGA gameserver 1 do not respond (method: zombie) (timeout: cluster) ===&lt;br /&gt;
&lt;br /&gt;
You are trying to end the game from a zombie method. This is not allowed. The zombie logic must continue the game as best it can. See [[Main_game_logic:_yourgamename.game.php#Zombie_mode|Zombie mode]] for more info.&lt;br /&gt;
&lt;br /&gt;
=== Game unexpectedly ends when one player becomes zombie ===&lt;br /&gt;
&lt;br /&gt;
There is an error in handling zombie mode, check error log. Example: if the zombie turn is called again, framework detects a infinite loop and cancels the game. On the studio there is a notification called ZombieTurnFailed&lt;br /&gt;
&lt;br /&gt;
== Other errors ==&lt;br /&gt;
&lt;br /&gt;
=== Javascript does not know how to sum two numbers ===&lt;br /&gt;
&lt;br /&gt;
Be careful when you manipulate integers returned by notifications: most of the time, Javascript considers they are Strings and not Integers.&lt;br /&gt;
&lt;br /&gt;
As a result:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    var i=1;&lt;br /&gt;
    i += notif.args.increment;  // With notif.args.increment=&#039;1&#039;&lt;br /&gt;
    alert( i );                 // i=11 instead of 2 !! Javascript concatenate 2 strings !&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To solve this, you should use the &amp;quot;toint&amp;quot; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    var i=1;&lt;br /&gt;
    i += toint( notif.args.increment );  // With notif.args.increment=&#039;1&#039;&lt;br /&gt;
    alert( i );                 // i=2 :)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Javascript: do not use substr with negative numbers ===&lt;br /&gt;
&lt;br /&gt;
To get the last characters of a string, use &amp;quot;slice&amp;quot; instead of &amp;quot;substr&amp;quot; which has a bug on IE:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    var three_last_characters = string.substr( -3 );   // Wrong&lt;br /&gt;
    var three_last_characters = string.slice( -3 );    // Correct&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Game &amp;quot;spontaneously&amp;quot; transition to a new state without user input ===&lt;br /&gt;
&lt;br /&gt;
Make sure on php side you have no code after   $this-&amp;gt;gamestate-&amp;gt;nextState(...) code.&lt;br /&gt;
Because if you do accidentally have code that goes to another state it will cause another state transition without user interaction.&lt;br /&gt;
&lt;br /&gt;
 function selectField($field) {&lt;br /&gt;
   self::checkAction ( &#039;selectField&#039; );&lt;br /&gt;
   if ($field!=0) $this-&amp;gt;gamestate-&amp;gt;nextState ( &#039;next&#039; );&lt;br /&gt;
   $this-&amp;gt;gamestate-&amp;gt;nextState ( &#039;last&#039; ); // &amp;lt;-- here is missing else, so it will cause double state transition&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Troubleshooting&amp;diff=8000</id>
		<title>Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Troubleshooting&amp;diff=8000"/>
		<updated>2021-04-19T14:32:47Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: /* Game starts but I can&amp;#039;t make a move */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Studio_Framework_Navigation}}&lt;br /&gt;
&lt;br /&gt;
Describing common errors which is hard to understand and debug &lt;br /&gt;
&lt;br /&gt;
== Game does not start at all ==&lt;br /&gt;
&lt;br /&gt;
=== Undefined offset: 0 in table/table.game.php on line 830 ===&lt;br /&gt;
&lt;br /&gt;
Check if you&#039;re calling self::getActivePlayerName () during setupNewGame()&lt;br /&gt;
&lt;br /&gt;
Check if you&#039;re NOT calling self::activeNextPlayer() at the end of your game setup. You must always have at least one active player.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Wrong formatted data from BGA gameserver 1 (method: createGame): ... ===&lt;br /&gt;
&lt;br /&gt;
This is generic message usually followed by exact position in your source code, and usually its syntax error in one of yours php script&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Propagating error from GS 1 (method: createGame): Fatal error during yourgame setup: Not logged ===&lt;br /&gt;
&lt;br /&gt;
Calling self::getCurrentPlayerId () or using $g_user from &#039;args&#039; state function, see also below&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Propagating error from GS 1 (method: createGame): Fatal error during yourgame setup: Unknow player statistic: ===&lt;br /&gt;
&lt;br /&gt;
Calling self::incStat() with second parameter which is an empty string&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error:  Propagating error from GS 1 (method: createGame): Fatal error during yourgame setup: Error while processing SQL request: INSERT INTO stats ... ===&lt;br /&gt;
&lt;br /&gt;
Fatal error during yourgame setup: Error while processing SQL request: INSERT INTO stats (stats_type, stats_player_id, stats_value) VALUES (&#039;10&#039;,&#039;2300663&#039;,&#039;0&#039;),(&#039;10&#039;,&#039;2300662&#039;,&#039;0&#039;)&lt;br /&gt;
Duplicate entry &#039;10-2300663&#039; for key &#039;stats_table_id&#039;&lt;br /&gt;
&lt;br /&gt;
Why? In the stats.inc.php you declared two keys with the same integer &amp;quot;id&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error:  Propagating error from GS 1 (method: createGame): Fatal error during yourgame setup: BGA main website do not respond ===&lt;br /&gt;
&lt;br /&gt;
Check if other games work; if not, it&#039;s a problem with BGA Studio; if so, your game likely reaches an end state immediately. Check your states.inc.php and your transitions.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Propagating error from GS 1 (method: createGame): BGA service error ===&lt;br /&gt;
&lt;br /&gt;
You may have syntax error in your dbmodel.sql.&lt;br /&gt;
&lt;br /&gt;
Or, you may be calling self::initStat() for a statistic that does not exist. Check the statistic name, and make sure you clicked &amp;quot;Reload statistics configuration&amp;quot; button in the admin console after making changes to stats.inc.php&lt;br /&gt;
&lt;br /&gt;
=== Fatal error during creation of database ebd_quoridor_389 Not logged ===&lt;br /&gt;
&lt;br /&gt;
Check that you didn&#039;t use $g_user or getCurrentPlayerId() in setupNewGame() function or in an &#039;args&#039; function of your state.&lt;br /&gt;
&lt;br /&gt;
As these functions are not consequences of a user action, there is no current player defined.&lt;br /&gt;
&lt;br /&gt;
As a general rule, you should use getActivePlayerId() and not getCurrentPlayerId(). See the [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine presentation on the game state machine] for more information.&lt;br /&gt;
&lt;br /&gt;
=== Warning: Invalid argument supplied for foreach() in table.game.php ===&lt;br /&gt;
&lt;br /&gt;
   Warning: Invalid argument supplied for foreach() in /var/tournoi/release/tournoi-151226-1240-gs/www/game/module/table/table.game.php on line 129 &lt;br /&gt;
   Fatal error: Cannot unset string offsets in /var/tournoi/release/tournoi-151226-1240-gs/www/game/module/table/table.game.php on line 143&lt;br /&gt;
&lt;br /&gt;
That appears when your arg* function that suppose to return array of state arguments returns a scalar (a non-array) value&lt;br /&gt;
&lt;br /&gt;
=== The server reported an error ===&lt;br /&gt;
&lt;br /&gt;
During table creation: &amp;quot;The server reported an error&amp;quot; error shown and nothing else.&lt;br /&gt;
&lt;br /&gt;
If you cannot even create a table - there is syntax error in gameinfos.php, check it, reload it from management panel.&lt;br /&gt;
If still no luck copy clean version from template https://github.com/elaskavaia/bga-sharedcode/blob/master/gameinfos.inc.php&lt;br /&gt;
&lt;br /&gt;
== Game starts but I can&#039;t make a move ==&lt;br /&gt;
&lt;br /&gt;
=== When I do a move, I got &amp;quot;Move recorded, waiting for update ...&amp;quot; forever ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Move recorded&amp;quot; means that your ajaxcall request has been sent to the server and returned normally.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Waiting for update&amp;quot; means that your client interface is waiting for some notifications from the server that correspond to the move we just did.&lt;br /&gt;
&lt;br /&gt;
If this message stays forever, it is probably that your PHP code does not send any notification when the move happens, which is abnormal. To fix this: add a notifyAllPlayers or a notifyPlayer call in your PHP code.&lt;br /&gt;
&lt;br /&gt;
=== When I do a move, I get &amp;quot;Sending move to server...&amp;quot; then nothing and game resets to state before the move ===&lt;br /&gt;
&lt;br /&gt;
Its possible that server code get into infinite loops or thinks too much, in which case it will timeout and will be aborted without any extra logs (and db transaction you saw in the log won&#039;t be committed). You will usually see &amp;quot;Unable to connect to server&amp;quot; message on console in this case. You have to put more logging into server&lt;br /&gt;
to trace where it hangs.&lt;br /&gt;
&lt;br /&gt;
=== When I do a move, I get &amp;quot;Ajaxcall error: empty answer&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
You either have missing self::ajaxResponse(); in your game.action.php method, or there is some problem with getting arguments (check that you are using btoa() on client when using AT_base64 arg type in action.php)&lt;br /&gt;
&lt;br /&gt;
=== Some player action is triggered randomly when I click somewhere on the game area ===&lt;br /&gt;
&lt;br /&gt;
You probably used &amp;quot;dojo.connect&amp;quot; on a null object. In this case, dojo.connect associate the event (ex: &amp;quot;onclick&amp;quot;) to the whole game area.&lt;br /&gt;
&lt;br /&gt;
Most of the time it happens in this situation, when my_object element does not exists:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   dojo.connect( $(&amp;quot;my_object&amp;quot;), &amp;quot;onclick&amp;quot;, this, (event)=&amp;gt;{})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To determine if this is the case, place &amp;quot;alert( $(&amp;quot;my_object&amp;quot;) )&amp;quot; before the dojo.connect to check if the object exists or not.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;This is not your turn&amp;quot; error when I click on a possible move ===&lt;br /&gt;
&lt;br /&gt;
You need to change to the active player by clicking the red arrow next to their name in the player panel (right side of the page).&lt;br /&gt;
&lt;br /&gt;
[[File:Change_active_player.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Please wait, an action is already in progress when I click on a possible move (Generated by checkAction / XXX) ===&lt;br /&gt;
&lt;br /&gt;
This error is triggered in the JS by the checkAction holder for XXX.&lt;br /&gt;
This can happen when the player sent an Ajax request action earlier, but did not get an answer from the PHP side.&lt;br /&gt;
To avoid this, put an empty notifyPlayer in the PHP side of the Ajax handler to ensure the client receives a response.&lt;br /&gt;
For example: self::notifyPlayer($player_id, &#039;system&#039;, &#039;&#039;, array()); /* $player_id is of course the Id of the player who made the request */&lt;br /&gt;
&lt;br /&gt;
== Predefined server errors ==&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Unexpected final game state (XX) ===&lt;br /&gt;
&lt;br /&gt;
The action function does not transition to any state, i.e.&lt;br /&gt;
  function selectField($field) {&lt;br /&gt;
    self::checkAction ( &#039;selectField&#039; );&lt;br /&gt;
    if ($field!=0) $this-&amp;gt;gamestate-&amp;gt;nextState ( &#039;next&#039; );&lt;br /&gt;
  }&lt;br /&gt;
Here if $field is 0 there is no transition&lt;br /&gt;
&lt;br /&gt;
=== This game action is impossible right now ===&lt;br /&gt;
&lt;br /&gt;
Check the game log. Usually your state does not define the action you trying to perform in &#039;possibleactions&#039; array.&lt;br /&gt;
&lt;br /&gt;
Also check your onActionName javascript function. Make sure you are calling the right &amp;quot;actionname.html&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: This transition (playerTurn) is impossible at this state (42) ===&lt;br /&gt;
&lt;br /&gt;
This is pretty self explanatory. Function nextState() takes transition name not a state name, so you probably did not&lt;br /&gt;
define this transition that the given state&lt;br /&gt;
&lt;br /&gt;
== Game interface hangs during reload or on start ==&lt;br /&gt;
&lt;br /&gt;
Showing &amp;quot;Application Loading...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Javascript error: During pageload undefined no_stack_avail Script: ===&lt;br /&gt;
&lt;br /&gt;
This error usually has no useful data, but it means you called somes API that require a callback and did not define callback function, i.e&lt;br /&gt;
in dojo.connect, this.connectClass, dojo.subscribe, etc&lt;br /&gt;
   &lt;br /&gt;
      this.connectClass(&#039;field&#039;, &#039;onclick&#039;, &#039;onField&#039;); // &amp;lt;-- onField is not defined&lt;br /&gt;
&lt;br /&gt;
=== Other errors with &amp;quot;Application loading...&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
You probably have a syntax error in your Javascript code, and the interface refuses to load.&lt;br /&gt;
&lt;br /&gt;
To find this error, check if there is an error message in the Javascript console (F12).&lt;br /&gt;
&lt;br /&gt;
If there is really nothing on the log, it&#039;s probably that the system was unable to load your Javascript because of an syntax error that affect the structure of the Javascript file, typically a missing &amp;quot;}&amp;quot; or a missing &amp;quot;,&amp;quot; after a method definition.&lt;br /&gt;
&lt;br /&gt;
If you have &amp;quot;Uncaught ReferenceError: bgagame is not defined&amp;quot; you have major syntax error in your js file, you should see some other clues in the log where the errors is.&lt;br /&gt;
&lt;br /&gt;
If you have &amp;quot;dojo.publish is not defined&amp;quot; or something similar, this could be caused by another error earlier. For example, a syntax error caused by a malformed generated file (such as using newlines in tiebreaker description). Also you might have left some images in the /img directory with special characters in the name which must be removed. If you edited images for the game box and website, ensure that you have not left any unnecessary files there.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected Syntax Error: ===&lt;br /&gt;
&lt;br /&gt;
No further details in the log. When log is filling with some social connect errors.&lt;br /&gt;
&lt;br /&gt;
Possible Reason: Syntax error in of the php script which is loaded before the start, such as gameoptions.inc.php, gameinfos.inc.php and such.&lt;br /&gt;
&lt;br /&gt;
=== Game interface spins in a loop throwing error ===&lt;br /&gt;
&lt;br /&gt;
Errors is something like &amp;quot;Cannot read property &#039;is_ai&#039; of undefined&amp;quot;. Cannot restart the game because cannot access UI to stop.&lt;br /&gt;
Likely you get in actplayer state with player id == 0. The only way to fix it is to edit database, globals index == 2 set player id to one of your test dudes&lt;br /&gt;
(can copy from row 5 for example).&lt;br /&gt;
&lt;br /&gt;
=== Unable to find table database (1): ebd_yourgame_112222 ===&lt;br /&gt;
&lt;br /&gt;
Its either temporarily server error especially on studio it timeouts sometimes, just try reloading again.&lt;br /&gt;
Or check if you have syntax errors in your php game file or sql.&lt;br /&gt;
&lt;br /&gt;
== Type conversion / juggling errors ==&lt;br /&gt;
&lt;br /&gt;
=== On php side I get a number instead of string I expect ===&lt;br /&gt;
&lt;br /&gt;
 $num = 3;&lt;br /&gt;
 $meeple = &amp;quot;meeple_&amp;quot; + $num; // &amp;lt;-- suppose to be &amp;quot;meeple_3&amp;quot;!&lt;br /&gt;
&lt;br /&gt;
When you switch between JS and PHP it easy to type this and not notice the +. Plus sign (+) in php does not mean string concatenation (in javascript does!),&lt;br /&gt;
in php + means integer arithmetic. So change + to . (dot)&lt;br /&gt;
&lt;br /&gt;
=== On php side my string comparison does not work ===&lt;br /&gt;
&lt;br /&gt;
   if ($color == &#039;4baae2&#039; || $color == &#039;000000&#039;) { &lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Apparently you should not be using &#039;==&#039; in php to compare strings! You should use &#039;===&#039;. The (==) operator will typecast the strings &lt;br /&gt;
to numbers then do comparison!&lt;br /&gt;
Its not very apparent because usually you can get away with it, but not when strings resemble numbers like hex &#039;colors&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Integer columns in the database are returned as strings ===&lt;br /&gt;
&lt;br /&gt;
This is normal PHP behavior. All fields are returned as string type, regardless of their actual type in the database. This also applies to global variables accessed via getGameStateValue(), since they are stored in a database table.&lt;br /&gt;
&lt;br /&gt;
You can use type-casting to convert them to the correct type after they come out of the database.&lt;br /&gt;
&lt;br /&gt;
   $myValueInt = (int)self::getGameStateValue(GLOBAL_ROUND_NUMBER);&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
   $myValueInt = self::getGameStateValue(GLOBAL_ROUND_NUMBER) + 0; // adding 0 casts to int&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
same with direct qdb ueries&lt;br /&gt;
   $sql = &amp;quot;SELECT my_int_column FROM my_table WHERE my_condition&amp;quot;;&lt;br /&gt;
   $myResult = self::getUniqueValueFromDB($sql); &amp;lt;-- this is a string&lt;br /&gt;
   $myResultAsInt = (int)$myResult;&lt;br /&gt;
&lt;br /&gt;
https://stackoverflow.com/questions/5323146/mysql-integer-field-is-returned-as-string-in-php&lt;br /&gt;
&lt;br /&gt;
== Zombie mode ==&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Propagating error from GS 1 (method: zombie): Not logged ===&lt;br /&gt;
&lt;br /&gt;
You are probably calling getCurrentPlayerId() or getCurrentPlayerName() in your zombieTurn method or any of the methods it uses. Instead, use the $active_player_id provided as parameter to zombieTurn().&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Can&#039;t manage zombie player in this game state ===&lt;br /&gt;
&lt;br /&gt;
Despite what the message suggests, this error has nothing to do with your state machine. It is caused by an exception in the zombie code. It could be an undefined value sent to a database query. Check the unexpected exceptions log. It could also be the same problem as above, so look for getCurrentPlayerId() or getCurrentPlayerName() in your zombieTurn method.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: Wrong formatted data from BGA gameserver 1 (method: zombie): ===&lt;br /&gt;
&lt;br /&gt;
This is almost certainly an undefined value in PHP code. Look for a warning or error message in the game replay log on the right side of the table UI.&lt;br /&gt;
&lt;br /&gt;
=== Unexpected error: BGA gameserver 1 do not respond (method: zombie) (timeout: cluster) ===&lt;br /&gt;
&lt;br /&gt;
You are trying to end the game from a zombie method. This is not allowed. The zombie logic must continue the game as best it can. See [[Main_game_logic:_yourgamename.game.php#Zombie_mode|Zombie mode]] for more info.&lt;br /&gt;
&lt;br /&gt;
=== Game unexpectedly ends when one player becomes zombie ===&lt;br /&gt;
&lt;br /&gt;
There is an error in handling zombie mode, check error log. Example: if the zombie turn is called again, framework detects a infinite loop and cancels the game. On the studio there is a notification called ZombieTurnFailed&lt;br /&gt;
&lt;br /&gt;
== Other errors ==&lt;br /&gt;
&lt;br /&gt;
=== Javascript does not know how to sum two numbers ===&lt;br /&gt;
&lt;br /&gt;
Be careful when you manipulate integers returned by notifications: most of the time, Javascript considers they are Strings and not Integers.&lt;br /&gt;
&lt;br /&gt;
As a result:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    var i=1;&lt;br /&gt;
    i += notif.args.increment;  // With notif.args.increment=&#039;1&#039;&lt;br /&gt;
    alert( i );                 // i=11 instead of 2 !! Javascript concatenate 2 strings !&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To solve this, you should use the &amp;quot;toint&amp;quot; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    var i=1;&lt;br /&gt;
    i += toint( notif.args.increment );  // With notif.args.increment=&#039;1&#039;&lt;br /&gt;
    alert( i );                 // i=2 :)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Javascript: do not use substr with negative numbers ===&lt;br /&gt;
&lt;br /&gt;
To get the last characters of a string, use &amp;quot;slice&amp;quot; instead of &amp;quot;substr&amp;quot; which has a bug on IE:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    var three_last_characters = string.substr( -3 );   // Wrong&lt;br /&gt;
    var three_last_characters = string.slice( -3 );    // Correct&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Game &amp;quot;spontaneously&amp;quot; transition to a new state without user input ===&lt;br /&gt;
&lt;br /&gt;
Make sure on php side you have no code after   $this-&amp;gt;gamestate-&amp;gt;nextState(...) code.&lt;br /&gt;
Because if you do accidentally have code that goes to another state it will cause another state transition without user interaction.&lt;br /&gt;
&lt;br /&gt;
 function selectField($field) {&lt;br /&gt;
   self::checkAction ( &#039;selectField&#039; );&lt;br /&gt;
   if ($field!=0) $this-&amp;gt;gamestate-&amp;gt;nextState ( &#039;next&#039; );&lt;br /&gt;
   $this-&amp;gt;gamestate-&amp;gt;nextState ( &#039;last&#039; ); // &amp;lt;-- here is missing else, so it will cause double state transition&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Main_game_logic:_Game.php&amp;diff=7588</id>
		<title>Main game logic: Game.php</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Main_game_logic:_Game.php&amp;diff=7588"/>
		<updated>2021-03-09T00:38:19Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: /* Legacy games API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Studio_Framework_Navigation}}&lt;br /&gt;
&lt;br /&gt;
This is the main file for your game logic. Here you initialize the game, persist data, implement the rules and notify the client interface of changes.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
The details of how the file is structured are described directly with comments in the code skeleton provided to you.&lt;br /&gt;
 &lt;br /&gt;
Here is the basic structure:&lt;br /&gt;
&lt;br /&gt;
* Constructor: where you define global variables.&lt;br /&gt;
* setupNewGame: initial setup of the game. Takes an array of players, indexed by player_id. Structure of each player includes player_name, player_canal, player_avatar, and flags indicating admin/ai/premium/order/language/beginner.&lt;br /&gt;
* getAllDatas: where you retrieve all game data during a complete reload of the game. Returned value must include [&#039;players&#039;][playerId][&#039;score&#039;] for scores to populate when F5 is pressed.&lt;br /&gt;
* getGameProgression: where you compute the game progression indicator.&lt;br /&gt;
* Utility functions: your utility functions.&lt;br /&gt;
* Player actions: the entry points for players actions. &lt;br /&gt;
* Game state arguments: methods to return additional data on specific game states ([http://en.doc.boardgamearena.com/Your_game_state_machine:_states.inc.php#args more info here]).&lt;br /&gt;
* Game state actions: the logic to run when entering a new game state ([http://en.doc.boardgamearena.com/Your_game_state_machine:_states.inc.php#action more info here]).&lt;br /&gt;
* zombieTurn: what to do it&#039;s the turn of a zombie player.&lt;br /&gt;
* upgradeTableDb: function to migrate database if you change it after release on production.&lt;br /&gt;
&lt;br /&gt;
== Accessing player information ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: In the following methods, be mindful of the difference between the &amp;quot;active&amp;quot; player and the &amp;quot;current&amp;quot; player. The &#039;&#039;&#039;active&#039;&#039;&#039; player is the player whose turn it is - not necessarily the player who sent a request! The &#039;&#039;&#039;current&#039;&#039;&#039; player is the player who sent the request and will see the results returned by your methods: not necessarily the player whose turn it is!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; getPlayersNumber()&lt;br /&gt;
: Returns the number of players playing at the table&lt;br /&gt;
: Note: doesn&#039;t work in setupNewGame (use count($players) instead).&lt;br /&gt;
&lt;br /&gt;
; getActivePlayerId()&lt;br /&gt;
: Get the &amp;quot;active_player&amp;quot;, whatever what is the current state type.&lt;br /&gt;
: Note: it does NOT mean that this player is active right now, because state type could be &amp;quot;game&amp;quot; or &amp;quot;multiplayer&amp;quot;&lt;br /&gt;
: Note: avoid using this method in a &amp;quot;multiplayer&amp;quot; state because it does not mean anything.&lt;br /&gt;
&lt;br /&gt;
; getActivePlayerName()&lt;br /&gt;
: Get the &amp;quot;active_player&amp;quot; name&lt;br /&gt;
: Note: avoid using this method in a &amp;quot;multiplayer&amp;quot; state because it does not mean anything.&lt;br /&gt;
&lt;br /&gt;
; loadPlayersBasicInfos()&lt;br /&gt;
: Get an associative array with generic data about players (ie: not game specific data).&lt;br /&gt;
: The key of the associative array is the player id. The returned table is cached, so ok to call multiple times without performance concerns.&lt;br /&gt;
: The content of each value is:&lt;br /&gt;
: * player_name - the name of the player&lt;br /&gt;
: * player_color (ex: ff0000) - the color code of the player&lt;br /&gt;
: * player_no - the position of the player at the start of the game in natural table order, i.e. 1,2,3&lt;br /&gt;
&lt;br /&gt;
; getCurrentPlayerId()&lt;br /&gt;
: Get the &amp;quot;current_player&amp;quot;. The current player is the one from which the action originated (the one who sent the request).&lt;br /&gt;
: &#039;&#039;&#039;Be careful&#039;&#039;&#039;: This is not necessarily the active player!&lt;br /&gt;
: In general, you shouldn&#039;t use this method, unless you are in &amp;quot;multiplayer&amp;quot; state.&lt;br /&gt;
: &#039;&#039;&#039;Very important&#039;&#039;&#039;: in your setupNewGame and zombieTurn function, you must never use getCurrentPlayerId() or getCurrentPlayerName(), otherwise it will fail with a &amp;quot;Not logged&amp;quot; error message (these actions are triggered from the main site and propagated to the gameserver from a server, not from a browser. As a consequence, there is no current player associated to these actions).&lt;br /&gt;
&lt;br /&gt;
; getCurrentPlayerName()&lt;br /&gt;
: Get the &amp;quot;current_player&amp;quot; name&lt;br /&gt;
: Be careful using this method (see above).&lt;br /&gt;
&lt;br /&gt;
; getCurrentPlayerColor()&lt;br /&gt;
: Get the &amp;quot;current_player&amp;quot; color&lt;br /&gt;
: Be careful using this method (see above).&lt;br /&gt;
&lt;br /&gt;
; isCurrentPlayerZombie()&lt;br /&gt;
: Check the &amp;quot;current_player&amp;quot; zombie status. If true, player is zombie, i.e. left or was kicked out of the game.&lt;br /&gt;
&lt;br /&gt;
; getActivePlayerColor()&lt;br /&gt;
: This function does not seems to exist in API, if you need it here is implementation&lt;br /&gt;
      function getActivePlayerColor() {&lt;br /&gt;
        $player_id = self::getActivePlayerId();&lt;br /&gt;
        $players = self::loadPlayersBasicInfos();&lt;br /&gt;
        if( isset( $players[ $player_id ]) )&lt;br /&gt;
            return $players[ $player_id ][&#039;player_color&#039;];&lt;br /&gt;
        else&lt;br /&gt;
            return null;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Accessing the database ==&lt;br /&gt;
&lt;br /&gt;
The main game logic should be the only point from which you should access the game database. You access your database using SQL queries with the methods below.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
BGA uses [http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-transactions.html database transactions]. This means that your database changes WON&#039;T BE APPLIED to the database until your request ends normally (web request, not database request). Using transactions is in fact very useful for you; at any time, if your game logic detects that something is wrong (example: a disallowed move), you just have to throw an exception and all changes to the game situation will be removed. This also means that you need not (and in fact cannot) use your own transactions for multiple related database operations.&lt;br /&gt;
&lt;br /&gt;
; DbQuery( $sql )&lt;br /&gt;
: This is the generic method to access the database.&lt;br /&gt;
: It can execute any type of SELECT/UPDATE/DELETE/REPLACE/INSERT query on the database.&lt;br /&gt;
: You should use it for UPDATE/DELETE/REPLACE/INSERT queries. For SELECT queries, the specialized methods below are much better.&lt;br /&gt;
&lt;br /&gt;
; getUniqueValueFromDB( $sql )&lt;br /&gt;
: Returns a unique value from DB or null if no value is found.&lt;br /&gt;
: $sql must be a SELECT query.&lt;br /&gt;
: Raise an exception if more than 1 row is returned.&lt;br /&gt;
&lt;br /&gt;
; getCollectionFromDB( $sql, $bSingleValue=false )&lt;br /&gt;
: Returns an associative array of rows for a sql SELECT query.&lt;br /&gt;
: The key of the resulting associative array is the first field specified in the SELECT query.&lt;br /&gt;
: The value of the resulting associative array is an associative array with all the field specified in the SELECT query and associated values.&lt;br /&gt;
: First column must be a primary or alternate key.&lt;br /&gt;
: The resulting collection can be empty.&lt;br /&gt;
: If you specified $bSingleValue=true and if your SQL query request 2 fields A and B, the method returns an associative array &amp;quot;A=&amp;gt;B&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
self::getCollectionFromDB( &amp;quot;SELECT player_id id, player_name name, player_score score FROM player&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
Result:&lt;br /&gt;
array(&lt;br /&gt;
 1234 =&amp;gt; array( &#039;id&#039;=&amp;gt;1234, &#039;name&#039;=&amp;gt;&#039;myuser0&#039;, &#039;score&#039;=&amp;gt;1 ),&lt;br /&gt;
 1235 =&amp;gt; array( &#039;id&#039;=&amp;gt;1235, &#039;name&#039;=&amp;gt;&#039;myuser1&#039;, &#039;score&#039;=&amp;gt;0 )&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Example 2:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
self::getCollectionFromDB( &amp;quot;SELECT player_id id, player_name name FROM player&amp;quot;, true );&lt;br /&gt;
&lt;br /&gt;
Result:&lt;br /&gt;
array(&lt;br /&gt;
 1234 =&amp;gt; &#039;myuser0&#039;,&lt;br /&gt;
 1235 =&amp;gt; &#039;myuser1&#039;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; getNonEmptyCollectionFromDB( $sql )&lt;br /&gt;
: Same as getCollectionFromDB($sdl), but raise an exception if the collection is empty. Note: this function does NOT have 2nd argument as previous one does.&lt;br /&gt;
&lt;br /&gt;
; getObjectFromDB( $sql )&lt;br /&gt;
: Returns one row for the sql SELECT query as an associative array or null if there is no result&lt;br /&gt;
: Raise an exception if the query return more than one row&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
self::getObjectFromDB( &amp;quot;SELECT player_id id, player_name name, player_score score FROM player WHERE player_id=&#039;$player_id&#039;&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
Result:&lt;br /&gt;
array(&lt;br /&gt;
  &#039;id&#039;=&amp;gt;1234, &#039;name&#039;=&amp;gt;&#039;myuser0&#039;, &#039;score&#039;=&amp;gt;1 &lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; getNonEmptyObjectFromDB( $sql )&lt;br /&gt;
: Similar to previous one, but raise an exception if no row is found&lt;br /&gt;
&lt;br /&gt;
; getObjectListFromDB( $sql, $bUniqueValue=false )&lt;br /&gt;
: Return an array of rows for a sql SELECT query.&lt;br /&gt;
: The result is the same than &amp;quot;getCollectionFromDB&amp;quot; except that the result is a simple array (and not an associative array).&lt;br /&gt;
: The result can be empty.&lt;br /&gt;
: If you specified $bUniqueValue=true and if your SQL query request 1 field, the method returns directly an array of values.&lt;br /&gt;
&lt;br /&gt;
Example 1:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
self::getObjectListFromDB( &amp;quot;SELECT player_id id, player_name name, player_score score FROM player&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
Result:&lt;br /&gt;
array(&lt;br /&gt;
 array( &#039;id&#039;=&amp;gt;1234, &#039;name&#039;=&amp;gt;&#039;myuser0&#039;, &#039;score&#039;=&amp;gt;1 ),&lt;br /&gt;
 array( &#039;id&#039;=&amp;gt;1235, &#039;name&#039;=&amp;gt;&#039;myuser1&#039;, &#039;score&#039;=&amp;gt;0 )&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Example 2:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
self::getObjectListFromDB( &amp;quot;SELECT player_name name FROM player&amp;quot;, true );&lt;br /&gt;
&lt;br /&gt;
Result:&lt;br /&gt;
array(&lt;br /&gt;
 &#039;myuser0&#039;,&lt;br /&gt;
 &#039;myuser1&#039;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; getDoubleKeyCollectionFromDB( $sql, $bSingleValue=false )&lt;br /&gt;
: Return an associative array of associative array, from a SQL SELECT query.&lt;br /&gt;
: First array level correspond to first column specified in SQL query.&lt;br /&gt;
: Second array level correspond to second column specified in SQL query.&lt;br /&gt;
: If bSingleValue = true, keep only third column on result&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; DbGetLastId()&lt;br /&gt;
: Return the PRIMARY key of the last inserted row (see PHP mysql_insert_id function).&lt;br /&gt;
&lt;br /&gt;
; DbAffectedRow()&lt;br /&gt;
: Return the number of row affected by the last operation&lt;br /&gt;
&lt;br /&gt;
; escapeStringForDB( $string )&lt;br /&gt;
: You must use this function on every string type data in your database that contains unsafe data.&lt;br /&gt;
: (unsafe = can be modified by a player).&lt;br /&gt;
: This method makes sure that no SQL injection will be done through the string used.&lt;br /&gt;
: Note: if you using standard types in ajax actions, like AT_alphanum it is sanitized before arrival,&lt;br /&gt;
: this is only needed if you manage to get unchecked string, like in the games where user has to enter text as a response.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: see Editing [[Game database model: dbmodel.sql]] to know how to define your database model.&lt;br /&gt;
&lt;br /&gt;
== Use globals ==&lt;br /&gt;
&lt;br /&gt;
Sometimes, you want a single global integer value for your game, and you don&#039;t want to create a DB table specifically for it.&lt;br /&gt;
&lt;br /&gt;
You can do this with the BGA framework &amp;quot;global.&amp;quot; Your value will be stored in the &amp;quot;global&amp;quot; table in the database, and you can access it with simple methods.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;initGameStateLabels&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This method should be located at the beginning of &#039;&#039;yourgamename.php.&#039;&#039; This is where you define the globals used in your game logic, by assigning them IDs.&lt;br /&gt;
&lt;br /&gt;
You can define up to 80 globals, with IDs from 10 to 89 (inclusive). You must &#039;&#039;&#039;not&#039;&#039;&#039; use globals outside this range, as those values are used by other components of the framework.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        self::initGameStateLabels( array( &lt;br /&gt;
                &amp;quot;my_first_global_variable&amp;quot; =&amp;gt; 10,&lt;br /&gt;
                &amp;quot;my_second_global_variable&amp;quot; =&amp;gt; 11&lt;br /&gt;
        ) );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;setGameStateInitialValue( $value_label, $value_value )&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Initialize your global value. Must be called before any use of your global, so you should call this method from your &amp;quot;setupNewGame&amp;quot; method.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getGameStateValue( $value_label )&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Retrieve the current value of a global.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;setGameStateValue( $value_label, $value_value )&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Set the current value of a global.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;incGameStateValue( $value_label, $increment )&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Increment the current value of a global. If increment is negative, decrement the value of the global.&lt;br /&gt;
&lt;br /&gt;
Return the final value of the global.&lt;br /&gt;
&lt;br /&gt;
== Game states and active players ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Activate player handling ===&lt;br /&gt;
&lt;br /&gt;
; $this-&amp;gt;activeNextPlayer()&lt;br /&gt;
: Make the next player active in the natural player order.&lt;br /&gt;
: Note: you CANNOT use this method in a &amp;quot;activeplayer&amp;quot; or &amp;quot;multipleactiveplayer&amp;quot; state. You must use a &amp;quot;game&amp;quot; type game state for this.&lt;br /&gt;
&lt;br /&gt;
; $this-&amp;gt;activePrevPlayer()&lt;br /&gt;
: Make the previous player active (in the natural player order).&lt;br /&gt;
: Note: you CANNOT use this method in a &amp;quot;activeplayer&amp;quot; or &amp;quot;multipleactiveplayer&amp;quot; state. You must use a &amp;quot;game&amp;quot; type game state for this.&lt;br /&gt;
&lt;br /&gt;
; $this-&amp;gt;gamestate-&amp;gt;changeActivePlayer( $player_id )&lt;br /&gt;
: You can call this method to make any player active.&lt;br /&gt;
: Note: you CANNOT use this method in a &amp;quot;activeplayer&amp;quot; or &amp;quot;multipleactiveplayer&amp;quot; state. You must use a &amp;quot;game&amp;quot; type game state for this.&lt;br /&gt;
&lt;br /&gt;
; $this-&amp;gt;getActivePlayerId()&lt;br /&gt;
: Return the &amp;quot;active_player&amp;quot; id&lt;br /&gt;
: Note: it does NOT mean that this player is active right now, because state type could be &amp;quot;game&amp;quot; or &amp;quot;multipleactiveplayer&amp;quot;&lt;br /&gt;
: Note: avoid using this method in a &amp;quot;multipleactiveplayer&amp;quot; state because it does not mean anything.&lt;br /&gt;
&lt;br /&gt;
=== Multiple activate player handling ===&lt;br /&gt;
&lt;br /&gt;
; $this-&amp;gt;gamestate-&amp;gt;setAllPlayersMultiactive()&lt;br /&gt;
: All playing players are made active. Update notification is sent to all players (this will trigger &#039;&#039;&#039;onUpdateActionButtons&#039;&#039;&#039;).&lt;br /&gt;
: Usually, you use this method at the beginning of a game state (e.g., &amp;quot;stGameState&amp;quot;) which transitions to a &#039;&#039;multipleactiveplayer&#039;&#039; state in which multiple players have to perform some action. Do not use this method if you going to make some more changes in the active player list. (I.e., if you want to take away multipleactiveplayer status immediately afterwards, use setPlayersMultiactive instead.)&lt;br /&gt;
&lt;br /&gt;
Example of usage:&lt;br /&gt;
    &amp;lt;pre&amp;gt;&lt;br /&gt;
    function st_MultiPlayerInit() {&lt;br /&gt;
        $this-&amp;gt;gamestate-&amp;gt;setAllPlayersMultiactive();&lt;br /&gt;
    }&lt;br /&gt;
    &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And this is the state declaration:&lt;br /&gt;
    &amp;lt;pre&amp;gt;&lt;br /&gt;
    2 =&amp;gt; array(&lt;br /&gt;
    		&amp;quot;name&amp;quot; =&amp;gt; &amp;quot;playerTurnPlace&amp;quot;,&lt;br /&gt;
    		&amp;quot;description&amp;quot; =&amp;gt; clienttranslate(&#039;Other player must place ships&#039;),&lt;br /&gt;
    		&amp;quot;descriptionmyturn&amp;quot; =&amp;gt; clienttranslate(&#039;${you} must place ships (click on YOUR SHIPS board to place)&#039;),&lt;br /&gt;
    		&amp;quot;type&amp;quot; =&amp;gt; &amp;quot;multipleactiveplayer&amp;quot;,&lt;br /&gt;
                &#039;action&#039; =&amp;gt; &#039;multiPlayerDoSomething&#039;,&lt;br /&gt;
                &#039;args&#039; =&amp;gt; &#039;arg_playerTurnPlace&#039;,&lt;br /&gt;
    	     	&amp;quot;possibleactions&amp;quot; =&amp;gt; array( &amp;quot;actionBla&amp;quot; ),&lt;br /&gt;
                &amp;quot;transitions&amp;quot; =&amp;gt; array( &amp;quot;next&amp;quot; =&amp;gt; 4, &amp;quot;last&amp;quot; =&amp;gt; 99)&lt;br /&gt;
    ),&lt;br /&gt;
    &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; $this-&amp;gt;gamestate-&amp;gt;setAllPlayersNonMultiactive( $next_state )&lt;br /&gt;
: All playing players are made inactive. Transition to next state&lt;br /&gt;
&lt;br /&gt;
; $this-&amp;gt;gamestate-&amp;gt;setPlayersMultiactive( $players, $next_state, $bExclusive = false )&lt;br /&gt;
: Make a specific list of players active during a multiactive gamestate. Update notification is sent to all players whose state changed.&lt;br /&gt;
: &amp;quot;players&amp;quot; is the array of player id that should be made active.&lt;br /&gt;
: If &amp;quot;exclusive&amp;quot; parameter is not set or false it doesn&#039;t deactivate other previously active players. If its set to true, the players who will be multiactive at the end are only these in &amp;quot;$players&amp;quot; array&lt;br /&gt;
&lt;br /&gt;
: In case &amp;quot;players&amp;quot; is empty, the method trigger the &amp;quot;next_state&amp;quot; transition to go to the next game state.&lt;br /&gt;
: returns true if state transition happened, false otherwise&lt;br /&gt;
&lt;br /&gt;
; $this-&amp;gt;gamestate-&amp;gt;setPlayerNonMultiactive( $player_id, $next_state )&lt;br /&gt;
: During a multiactive game state, make the specified player inactive.&lt;br /&gt;
: Usually, you call this method during a multiactive game state after a player did his action. It is also possible to call it directly from multiplayer action handler.&lt;br /&gt;
: If this player was the last active player, the method trigger the &amp;quot;next_state&amp;quot; transition to go to the next game state.&lt;br /&gt;
: returns true if state transition happened, false otherwise&lt;br /&gt;
Example of usage (see state declaration of playerTurnPlace above):&lt;br /&gt;
    &amp;lt;pre&amp;gt;&lt;br /&gt;
    function actionBla($args) {&lt;br /&gt;
        self::checkAction(&#039;actionBla&#039;);&lt;br /&gt;
        // handle the action using $this-&amp;gt;getCurrentPlayerId()&lt;br /&gt;
        $this-&amp;gt;gamestate-&amp;gt;setPlayerNonMultiactive( $this-&amp;gt;getCurrentPlayerId(), &#039;next&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; $this-&amp;gt;gamestate-&amp;gt;getActivePlayerList()&lt;br /&gt;
: With this method you can retrieve the list of the active player at any time.&lt;br /&gt;
: During a &amp;quot;game&amp;quot; type gamestate, it will return a void array.&lt;br /&gt;
: During a &amp;quot;activeplayer&amp;quot; type gamestate, it will return an array with one value (the active player id).&lt;br /&gt;
: During a &amp;quot;multipleactiveplayer&amp;quot; type gamestate, it will return an array of the active players id.&lt;br /&gt;
: Note: you should only use this method in the latter case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;  $this-&amp;gt;gamestate-&amp;gt;updateMultiactiveOrNextState( $next_state_if_none )&lt;br /&gt;
: Sends update notification about multiplayer changes. All multiactive set* functions above do that, however if you want to change state manually using db queries for complex calculations, you have to call this yourself after. Do not call this if you calling one of the other setters above.&lt;br /&gt;
Example: you have player teams and you want to activate all players in one team&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        $sql = &amp;quot;UPDATE player SET player_is_multiactive=&#039;0&#039;&amp;quot;;&lt;br /&gt;
        self::DbQuery( $sql );&lt;br /&gt;
        $sql = &amp;quot;UPDATE player SET player_is_multiactive=&#039;1&#039; WHERE player_id=&#039;$player_id&#039; AND player_team=&#039;$team_no&#039;&amp;quot;;&lt;br /&gt;
        self::DbQuery( $sql );&lt;br /&gt;
        &lt;br /&gt;
        $this-&amp;gt;gamestate-&amp;gt;updateMultiactiveOrNextState( &#039;error&#039; );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; updating database manually&lt;br /&gt;
: Use this helper function to change multiactive state without sending notification&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    /**&lt;br /&gt;
     * Changes values of multiactivity in db, does not sent notifications.&lt;br /&gt;
     * To send notifications after use updateMultiactiveOrNextState&lt;br /&gt;
     * @param number $player_id, player id &amp;lt;=0 or null - means ALL&lt;br /&gt;
     * @param number $value - 1 multiactive, 0 non multiactive&lt;br /&gt;
     */&lt;br /&gt;
    function dbSetPlayerMultiactive($player_id = -1, $value = 1) {&lt;br /&gt;
        if (! $value)&lt;br /&gt;
            $value = 0;&lt;br /&gt;
        else&lt;br /&gt;
            $value = 1;&lt;br /&gt;
        $sql = &amp;quot;UPDATE player SET player_is_multiactive = &#039;$value&#039; WHERE player_zombie = 0 and player_eliminated = 0&amp;quot;;&lt;br /&gt;
        if ($player_id &amp;gt; 0) {&lt;br /&gt;
            $sql .= &amp;quot; AND player_id = $player_id&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        self::DbQuery($sql);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== States functions ===&lt;br /&gt;
; $this-&amp;gt;gamestate-&amp;gt;nextState( $transition )&lt;br /&gt;
: Change current state to a new state. Important: the $transition parameter is the name of the transition, and NOT the name of the target game state, see [[Your game state machine: states.inc.php]] for more information about states.&lt;br /&gt;
&lt;br /&gt;
; $this-&amp;gt;checkAction( $actionName, $bThrowException=true )&lt;br /&gt;
: Check if the current player can perform a specific action in the current game state, and optionally throw an exception if they can&#039;t.&lt;br /&gt;
: The action is valid if it is listed in the &amp;quot;possibleactions&amp;quot; array for the current game state (see game state description).&lt;br /&gt;
: This method MUST be the first one called in ALL your PHP methods that handle player actions, in order to make sure a player doesn&#039;t perform an action not allowed by the rules at the point in the game.  It should not be called from methods where the current player is not necessarily the active player, otherwise it may fail with an &amp;quot;It is not your turn&amp;quot; exception.&lt;br /&gt;
: If &amp;quot;bThrowException&amp;quot; is set to &amp;quot;false&amp;quot;, the function returns &#039;&#039;&#039;false&#039;&#039;&#039; in case of failure instead of throwing an exception. This is useful when several actions are possible, in order to test each of them without throwing exceptions.&lt;br /&gt;
&lt;br /&gt;
; $this-&amp;gt;gamestate-&amp;gt;checkPossibleAction( $action )&lt;br /&gt;
: (rarely used)&lt;br /&gt;
: This works exactly like &amp;quot;checkAction&amp;quot; (above), except that it does NOT check if the current player is active.&lt;br /&gt;
: This is used specifically in certain game states when you want to authorize additional actions for players that are not active at the moment.&lt;br /&gt;
: Example: in &#039;&#039;Libertalia&#039;&#039;, you want to authorize players to change their mind about the card played. They are of course not active at the time they change their mind, so you cannot use &amp;quot;checkAction&amp;quot;; use &amp;quot;checkPossibleAction&amp;quot; instead.&lt;br /&gt;
&lt;br /&gt;
This is how PHP action looks that returns player to active state (only for multiplayeractive states). To be able to execute on js side do not checkAction on js side for this specific one.&lt;br /&gt;
&lt;br /&gt;
   function actionUnpass() {&lt;br /&gt;
        $this-&amp;gt;gamestate-&amp;gt;checkPossibleAction(&#039;actionUnpass&#039;); // player chane mind about passing while others were thinking&lt;br /&gt;
        $this-&amp;gt;gamestate-&amp;gt;setPlayersMultiactive(array ($this-&amp;gt;getCurrentPlayerId() ), &#039;error&#039;, false);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
; $this-&amp;gt;gamestate-&amp;gt;state()&lt;br /&gt;
: Get an associative array of current game state attributes, see [[Your game state machine: states.inc.php]] for state attributes.&lt;br /&gt;
  $state=$this-&amp;gt;gamestate-&amp;gt;state(); if( $state[&#039;name&#039;] == &#039;myGameState&#039; ) {...}&lt;br /&gt;
&lt;br /&gt;
== Players turn order ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getNextPlayerTable()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Return an associative array which associate each player with the next player around the table.&lt;br /&gt;
&lt;br /&gt;
In addition, key 0 is associated to the first player to play.&lt;br /&gt;
&lt;br /&gt;
Example: if three player with ID 1, 2 and 3 are around the table, in this order, the method returns:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   array( &lt;br /&gt;
    1 =&amp;gt; 2, &lt;br /&gt;
    2 =&amp;gt; 3, &lt;br /&gt;
    3 =&amp;gt; 1, &lt;br /&gt;
    0 =&amp;gt; 1 &lt;br /&gt;
   );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getPrevPlayerTable()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Same as above, but the associative array associate the previous player around the table. However there no 0 index here.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getPlayerAfter( $player_id )&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Get player playing after given player in natural playing order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getPlayerBefore( $player_id )&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Get player playing before given player in natural playing order.&lt;br /&gt;
&lt;br /&gt;
Note: There is no API to modify this order, if you have custom player order you have to maintain it in your database&lt;br /&gt;
and have custom function to access it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;createNextPlayerTable( $players, $bLoop=true )&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Using $players array creates a map of current =&amp;gt; next as in example from getNextPlayerTable(), however you can use custom order here. &lt;br /&gt;
Parmeter $bLoop is true if last player points to first, false otherwise.&lt;br /&gt;
In any case index 0 points to first player (first element of $players array). $players is array of player ids in desired order.&lt;br /&gt;
&lt;br /&gt;
Example of usage:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    function getNextPlayerTableCustom() {&lt;br /&gt;
        $starting = $this-&amp;gt;getStartingPlayer(); // custom function to get starting player&lt;br /&gt;
        $player_ids = $this-&amp;gt;getPlayerIdsInOrder($starting); // custom function to create players array starting from starting player&lt;br /&gt;
        return self::createNextPlayerTable($player_ids, false); // create next player table in custom order&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notify players ==&lt;br /&gt;
&lt;br /&gt;
To understand notifications, please read [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] first.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Notifications are sent at the very end of the request, when it ends normally. It means that if you throw an exception for any reason (ex: move not allowed), no notifications will be sent to players.&lt;br /&gt;
Notifications sent between the game start (setupNewGame) and the end of the &amp;quot;action&amp;quot; method of the first active state will never reach their destination.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;notifyAllPlayers( $notification_type, $notification_log, $notification_args )&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Send a notification to all players of the game.&lt;br /&gt;
&lt;br /&gt;
* notification_type:&lt;br /&gt;
A string that defines the type of your notification.&lt;br /&gt;
&lt;br /&gt;
Your game interface Javascript logic will use this to know what is the type of the received notification (and to trigger the corresponding method).&lt;br /&gt;
&lt;br /&gt;
* notification_log:&lt;br /&gt;
A string that defines what is to be displayed in the game log.&lt;br /&gt;
&lt;br /&gt;
You can use an empty string here (&amp;quot;&amp;quot;). In this case, nothing is displayed in the game log.&lt;br /&gt;
&lt;br /&gt;
If you define a real string here, you should use &amp;quot;clienttranslate&amp;quot; method to make sure it can be translate.&lt;br /&gt;
&lt;br /&gt;
You can use arguments in your notification_log strings, that refers to values defines in the &amp;quot;notification_args&amp;quot; argument (see below). &lt;br /&gt;
Note: Make sure you only use single quotes (&#039;), otherwise PHP will try to interpolate the variable and will ignore the values in the args array.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* notification_args:&lt;br /&gt;
The arguments of your notifications, as an associative array.&lt;br /&gt;
&lt;br /&gt;
This array will be transmitted to the game interface logic, in order the game interface can be updated.&lt;br /&gt;
&lt;br /&gt;
Complete notifyAllPlayers example (from &amp;quot;Reversi&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
self::notifyAllPlayers( &amp;quot;playDisc&amp;quot;, clienttranslate( &#039;${player_name} plays a disc and turns over ${returned_nbr} disc(s)&#039; ),&lt;br /&gt;
 array(&lt;br /&gt;
        &#039;player_id&#039; =&amp;gt; $player_id,&lt;br /&gt;
        &#039;player_name&#039; =&amp;gt; self::getActivePlayerName(),&lt;br /&gt;
        &#039;returned_nbr&#039; =&amp;gt; count( $turnedOverDiscs ),&lt;br /&gt;
        &#039;x&#039; =&amp;gt; $x,&lt;br /&gt;
        &#039;y&#039; =&amp;gt; $y&lt;br /&gt;
     ) );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can see in the example above the use of the &amp;quot;clienttranslate&amp;quot; method, and the use of 2 arguments &amp;quot;player_name&amp;quot; and &amp;quot;returned_nbr&amp;quot; in the notification log.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: NO private data must be sent with this method, as a cheater could see it even it is not used explicitly by the game interface logic. If you want to send private information to a player, please use notifyPlayer below.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: this array is serialized to be sent to the browsers, and will be saved with the notification to be able to replay the game later. If it is too big, it can make notifications slower / less reliable, and replay archives very big (to the point of failing). So as a general rule, you should send only the minimum of information necessary to update the client interface with no overhead in order to keep the notifications as light as possible.&lt;br /&gt;
&lt;br /&gt;
Note: you CAN use some HTML inside your notification log, however it not recommended for many reasons:&lt;br /&gt;
* Its bad architecture, ui elements leak into server now you have to manage ui in many places&lt;br /&gt;
* If you decided to change something in ui in future version, old games reply and tutorials may not work, since they use stored notifications&lt;br /&gt;
* When you read log preview for old games its unreadable (this is log before you enter the game reply, useful for troubleshooting or game analysis)&lt;br /&gt;
* Its more data to transfer and store in db&lt;br /&gt;
* Its nightmare for translators, at least don&#039;t put HTML tags inside the &amp;quot;clienttranslate&amp;quot; method. You can use a notification argument instead, and provide your HTML through this argument.&lt;br /&gt;
&lt;br /&gt;
If you still want to have pretty pictures in the log check this [[BGA_Studio_Cookbook#Inject_images_and_styled_html_in_the_log]].&lt;br /&gt;
&lt;br /&gt;
If your notification contains some phrases that build programmatically you may need to use recursive notifications. In this case the argument can be not only the string but&lt;br /&gt;
an array itself, which contains &#039;log&#039; and &#039;args&#039;, i.e.&lt;br /&gt;
&lt;br /&gt;
  $this-&amp;gt;notifyAllPlayers(&#039;playerLog&#039;,clienttranslate(&#039;Game moves ${token_name_rec}&#039;),&lt;br /&gt;
                   [&#039;token_name_rec&#039;=&amp;gt;[&#039;log&#039;=&amp;gt;&#039;${token_name} #${token_number}&#039;,&lt;br /&gt;
                                       &#039;args&#039;=&amp;gt; [&#039;token_name&#039;=&amp;gt;clienttranslate(&#039;Boo&#039;), &#039;token_number&#039;=&amp;gt;$number, &#039;i18n&#039;=&amp;gt;[&#039;token_name&#039;] ]&lt;br /&gt;
                                      ]&lt;br /&gt;
                   ]);&lt;br /&gt;
&lt;br /&gt;
Special handling of arguments:&lt;br /&gt;
* ${player_name}  - this will be wrapped in html and text shown using color of the corresponding player, some colors also have reserved background. This will apply recursively as well.&lt;br /&gt;
* ${player_name2} - same &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;notifyPlayer( $player_id, $notification_type, $notification_log, $notification_args )&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Same as above, except that the notification is sent to one player only.&lt;br /&gt;
&lt;br /&gt;
This method must be used each time some private information must be transmitted to a player.&lt;br /&gt;
&lt;br /&gt;
Important: the variable for player name must be ${player_name} in order to be highlighted with the player color in the game log. If you want a second player name in the log, name the variable ${player_name2}, etc.&lt;br /&gt;
&lt;br /&gt;
== About random and randomness ==&lt;br /&gt;
&lt;br /&gt;
A large number of board games rely on random, most often based on dice, cards shuffling, picking some item in a bag, and so on. This is very important to ensure a high level of randomness for each of these situations.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s are a list of techniques you should use in these situations, from the best to the worst.&lt;br /&gt;
&lt;br /&gt;
=== Dice and bga_rand ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;bga_rand( min, max )&#039;&#039;&#039; &lt;br /&gt;
This is a BGA framework function that provides you a random number between &amp;quot;min&amp;quot; and &amp;quot;max&amp;quot; (inclusive), using the best available random method available on the system.&lt;br /&gt;
&lt;br /&gt;
This is the preferred function you should use, because we are updating it when a better method is introduced.&lt;br /&gt;
&lt;br /&gt;
As of now, bga_rand is based on the PHP function &amp;quot;random_int&amp;quot;, which ensures a cryptographic level of randomness.&lt;br /&gt;
&lt;br /&gt;
In particular, it is &#039;&#039;&#039;mandatory&#039;&#039;&#039; to use it for all &#039;&#039;&#039;dice throw&#039;&#039;&#039; (ie: games using other methods for dice throwing will be rejected by BGA during review).&lt;br /&gt;
&lt;br /&gt;
Note: rand() and mt_rand() are deprecated on BGA and should not be used anymore, as their randomness is not as good as &amp;quot;bga_rand&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== shuffle and cards shuffling ===&lt;br /&gt;
&lt;br /&gt;
To shuffle items, like a pile of cards, the best way is to use the BGA PHP [[Deck]] component and to use &amp;quot;shuffle&amp;quot; method. This ensures that the best available shuffling method is used, and that if in the future we improve it your game will be up to date.&lt;br /&gt;
&lt;br /&gt;
As of now, the Deck component shuffle method is based on PHP &amp;quot;shuffle&amp;quot; method, which has quite good randomness (even it is not as good as bga_rand). In consequence, we accept other shuffling methods during reviews, as long as they are based on PHP &amp;quot;shuffle&amp;quot; function (or similar, like &amp;quot;array_rand&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Other methods ===&lt;br /&gt;
&lt;br /&gt;
Mysql &amp;quot;RAND()&amp;quot; function has not enough randomness to be a valid method to get a random element on BGA. This function has been used in some existing games and has given acceptable results, but now it should be avoided and you should use other methods instead.&lt;br /&gt;
&lt;br /&gt;
== Game statistics ==&lt;br /&gt;
&lt;br /&gt;
There are 2 types of statistics:&lt;br /&gt;
* a &amp;quot;player&amp;quot; statistic is a statistic associated to a player&lt;br /&gt;
* a &amp;quot;table&amp;quot; statistic is a statistic not associated to a player (global statistic for this game).&lt;br /&gt;
&lt;br /&gt;
See [[Game statistics: stats.inc.php]] to see how you define statistics for your game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;initStat( $table_or_player, $name, $value, $player_id = null )&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create a statistic entry with a default value.&lt;br /&gt;
&lt;br /&gt;
This method must be called for each statistic of your game, in your setupNewGame method.&lt;br /&gt;
If you neglect to call this for a statistic, and also do not update the value during the course of a certain game using setStat or incStat, the value of the stat will be undefined rather than 0. This will result in it being ignored at the end of the game, as if it didn&#039;t apply to that particular game, and excluded from cumulative statistics. As a consequence - if do not want statistic to be applied, do not init it, or call set or inc on it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;$table_or_player&#039; must be set to &amp;quot;table&amp;quot; if this is a table statistic, or &amp;quot;player&amp;quot; if this is a player statistic.&lt;br /&gt;
&lt;br /&gt;
&#039;$name&#039; is the name of your statistic, as it has been defined in your stats.inc.php file.&lt;br /&gt;
&lt;br /&gt;
&#039;$value&#039; is the initial value of the statistic. If this is a player statistic and if the player is not specified by &amp;quot;$player_id&amp;quot; argument, the value is set for ALL players.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;setStat( $value, $name, $player_id = null )&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Set a statistic $name to $value.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;$player_id&amp;quot; is not specified, setStat consider it is a TABLE statistic.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;$player_id&amp;quot; is specified, setStat consider it is a PLAYER statistic.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;incStat( $delta, $name, $player_id = null )&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Increment (or decrement) specified statistic value by $delta value. Same behavior as setStat function.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getStat( $name, $player_id = null )&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Return the value of statistic specified by $name. Useful when creating derivative statistics such as average.&lt;br /&gt;
&lt;br /&gt;
== Translations ==&lt;br /&gt;
&lt;br /&gt;
See [[Translations]]&lt;br /&gt;
&lt;br /&gt;
== Manage player scores and Tie breaker ==&lt;br /&gt;
&lt;br /&gt;
=== Normal scoring ===&lt;br /&gt;
&lt;br /&gt;
At the end of the game, players automatically get a rank depending on their score: the player with the biggest score is #1, the player with the second biggest score is #2, and so on...&lt;br /&gt;
&lt;br /&gt;
During the game, you update player&#039;s score directly by updating &amp;quot;player_score&amp;quot; field of &amp;quot;player&amp;quot; table in database.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  // +2 points to active player&lt;br /&gt;
  self::DbQuery( &amp;quot;UPDATE player SET player_score=player_score+2 WHERE player_id=&#039;&amp;quot;.self::getActivePlayerId().&amp;quot;&#039;&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
  // Set score of active player to 5&lt;br /&gt;
  self::DbQuery( &amp;quot;UPDATE player SET player_score=5 WHERE player_id=&#039;&amp;quot;.self::getActivePlayerId().&amp;quot;&#039;&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: don&#039;t forget to notify the client side in order the score control can be updated accordingly.&lt;br /&gt;
&lt;br /&gt;
=== Tie breaker ===&lt;br /&gt;
&lt;br /&gt;
Tie breaker is used when two players get the same score at the end of a game.&lt;br /&gt;
&lt;br /&gt;
Tie breaker is using &amp;quot;player_score_aux&amp;quot; field of &amp;quot;player&amp;quot; table. It is updated exactly like the &amp;quot;player_score&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
Tie breaker score is displayed only for players who are tied at the end of the game. Most of the time, it is not supposed to be displayed explicitly during the game.&lt;br /&gt;
&lt;br /&gt;
When you are using &amp;quot;player_score_aux&amp;quot; functionality, you must describe the formula to use in your gameinfos.inc.php file like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         &#039;tie_breaker_description&#039; =&amp;gt; totranslate(&amp;quot;Describe here your tie breaker formula&amp;quot;),&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This description will be used as a tooltip to explain to players how this auxiliary score has been calculated.&lt;br /&gt;
&lt;br /&gt;
=== Co-operative game ===&lt;br /&gt;
&lt;br /&gt;
To make everyone win/lose together in a full-coop game:&lt;br /&gt;
&lt;br /&gt;
Add the following in gameinfos.inc.php :&lt;br /&gt;
&#039;is_coop&#039; =&amp;gt; 1, // full cooperative&lt;br /&gt;
&lt;br /&gt;
Assign a score of zero to everyone if it&#039;s a loss.&lt;br /&gt;
Assign the same score &amp;gt; 0 to everyone if it&#039;s a win.&lt;br /&gt;
&lt;br /&gt;
=== Semi-coop ===&lt;br /&gt;
&lt;br /&gt;
If the game is not full-coop, then everyone loses = everyone is tied. I.e. set score to 0 to everybody.&lt;br /&gt;
&lt;br /&gt;
=== Only &amp;quot;winners&amp;quot; and &amp;quot;losers&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
For some games, there is only a group (or a single) &amp;quot;winner&amp;quot;, and everyone else is a &amp;quot;loser&amp;quot;, with no &amp;quot;end of game rank&amp;quot; (1st, 2nd, 3rd...).&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
* Coup&lt;br /&gt;
* Not Alone&lt;br /&gt;
* Werewolves&lt;br /&gt;
* Quantum&lt;br /&gt;
&lt;br /&gt;
In this case:&lt;br /&gt;
* Set the scores so that the winner has the best score, and the other players have the same (lower) score.&lt;br /&gt;
* Add the following lines to gameinfos.inc.php:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// If in the game, all losers are equal (no score to rank them or explicit in the rules that losers are not ranked between them), set this to true &lt;br /&gt;
// The game end result will display &amp;quot;Winner&amp;quot; for the 1st player and &amp;quot;Loser&amp;quot; for all other players&lt;br /&gt;
&#039;losers_not_ranked&#039; =&amp;gt; true,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Werewolves and Coup are implemented like this, as you can see here:&lt;br /&gt;
* https://boardgamearena.com/#!gamepanel?game=werewolves&amp;amp;section=lastresults&lt;br /&gt;
* https://boardgamearena.com/#!gamepanel?game=coupcitystate&amp;amp;section=lastresults&lt;br /&gt;
&lt;br /&gt;
Adding this has the following effects:&lt;br /&gt;
* On game results for this game, &amp;quot;Winner&amp;quot; or &amp;quot;Loser&amp;quot; is going to appear instead of the usual &amp;quot;1st, 2nd, 3rd, ...&amp;quot;.&lt;br /&gt;
* When a game is over, the result of the game will be &amp;quot;End of game: Victory&amp;quot; or &amp;quot;End of game: Defeat&amp;quot; depending on the result of the CURRENT player (instead of the usual &amp;quot;Victory of XXX&amp;quot;).&lt;br /&gt;
* When calculating ELO points, if there is at least one &amp;quot;Loser&amp;quot;, no &amp;quot;victorious&amp;quot; player can lose ELO points, and no &amp;quot;losing&amp;quot; player can win ELO point. Usually it may happened because being tie with many players with a low rank is considered as a tie and may cost you points. If losers_not_ranked is set, we prevent this behavior and make sure you only gain/loss ELO when you get the corresponding results.&lt;br /&gt;
&lt;br /&gt;
Important: this SHOULD NOT be used for cooperative games (see is_coop parameter), or for 2 players games (it makes no sense in this case).&lt;br /&gt;
&lt;br /&gt;
=== Solo ===&lt;br /&gt;
&lt;br /&gt;
If game supports solo variant, a negative or zero score means defeat, a positive score means victory.&lt;br /&gt;
&lt;br /&gt;
=== Player elimination ===&lt;br /&gt;
&lt;br /&gt;
In some games, this is useful to eliminate a player from the game in order he/she can start another game without waiting for the current game end.&lt;br /&gt;
&lt;br /&gt;
This case should be rare. Please don&#039;t use player elimination feature if some player just has to wait the last 10% of the game for game end. This feature should be used only in games where players are eliminated all along the game (typical examples: &amp;quot;Perudo&amp;quot; or &amp;quot;The Werewolves of Miller&#039;s Hollow&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&lt;br /&gt;
* Player to eliminate should NOT be active anymore (preferably use the feature in a &amp;quot;game&amp;quot; type game state).&lt;br /&gt;
* In your PHP code:&lt;br /&gt;
  self::eliminatePlayer( &amp;lt;player_to_eliminate_id&amp;gt; );&lt;br /&gt;
* the player is informed in a dialog box that he no longer have to played and can start another game if he/she wants too (whith buttons &amp;quot;stay at this table&amp;quot; &amp;quot;quit table and back to main site&amp;quot;). In any case, the player is free to start &amp;amp; join another table from now.&lt;br /&gt;
* When your game is over, all players who have been eliminated before receive a &amp;quot;notification&amp;quot; (the small &amp;quot;!&amp;quot; icon on the top right of the BGA interface) that indicate them that &amp;quot;the game has ended&amp;quot; and invite them to review the game results.&lt;br /&gt;
&lt;br /&gt;
=== Scoring Helper functions ===&lt;br /&gt;
&lt;br /&gt;
These functions should have been API but they are not, just add them to your php game and use for every game.&lt;br /&gt;
&lt;br /&gt;
    // get score&lt;br /&gt;
    function dbGetScore($player_id) {&lt;br /&gt;
        return $this-&amp;gt;getUniqueValueFromDB(&amp;quot;SELECT player_score FROM player WHERE player_id=&#039;$player_id&#039;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // set score&lt;br /&gt;
    function dbSetScore($player_id, $count) {&lt;br /&gt;
        $this-&amp;gt;DbQuery(&amp;quot;UPDATE player SET player_score=&#039;$count&#039; WHERE player_id=&#039;$player_id&#039;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // set aux score (tie breaker)&lt;br /&gt;
    function dbSetAuxScore($player_id, $score) {&lt;br /&gt;
        $this-&amp;gt;DbQuery(&amp;quot;UPDATE player SET player_score_aux=$score WHERE player_id=&#039;$player_id&#039;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // increment score (can be negative too)&lt;br /&gt;
    function dbIncScore($player_id, $inc) {&lt;br /&gt;
        $count = $this-&amp;gt;dbGetScore($player_id);&lt;br /&gt;
        if ($inc != 0) {&lt;br /&gt;
            $count += $inc;&lt;br /&gt;
            $this-&amp;gt;dbSetScore($player_id, $count);&lt;br /&gt;
        }&lt;br /&gt;
        return $count;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Reflexion time ==&lt;br /&gt;
&lt;br /&gt;
; function giveExtraTime( $player_id, $specific_time=null )&lt;br /&gt;
: Give standard extra time to this player.&lt;br /&gt;
: Standard extra time depends on the speed of the game (small with &amp;quot;slow&amp;quot; game option, bigger with other options).&lt;br /&gt;
: You can also specify an exact time to add, in seconds, with the &amp;quot;specified_time&amp;quot; argument (rarely used).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Undo moves ==&lt;br /&gt;
&lt;br /&gt;
Please read our [[BGA Undo policy]] before.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important&#039;&#039;&#039;: Before using these methods, you must also add the following to your &amp;quot;gameinfos.inc.php&amp;quot; file, otherwise these methods are ineffective:&lt;br /&gt;
  &#039;db_undo_support&#039; =&amp;gt; true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; function undoSavepoint( )&lt;br /&gt;
: Save the whole game situation inside an &amp;quot;Undo save point&amp;quot;.&lt;br /&gt;
: There is only ONE undo save point available (see [[BGA Undo policy]]). Cannot use in multiactivate state or in game state where next state is multiactive.&lt;br /&gt;
: Note: this function does not actually do anything when it is called, it only raises the flag to store the database AFTER transaction is over. So the actual state will be saved when you exit the function  calling it (technically before first queued notification is sent, which matter if you transition to game state not to user state after), which may affect what you end up saved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; function undoRestorePoint()&lt;br /&gt;
: Restore the situation previously saved as an &amp;quot;Undo save point&amp;quot;.&lt;br /&gt;
: You must make sure that the active player is the same after and before the undoRestorePoint (ie: this is your responsibility to ensure that the player that is active when this method is called is exactly the same than the player that was active when the undoSavePoint method has been called).&lt;br /&gt;
&lt;br /&gt;
    function actionUndo() {&lt;br /&gt;
        self::checkAction(&#039;actionUndo&#039;);&lt;br /&gt;
        $this-&amp;gt;undoRestorePoint();&lt;br /&gt;
        $this-&amp;gt;gamestate-&amp;gt;nextState(&#039;next&#039;); // transition to single player state (i.e. beginning of player actions for this turn)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Managing errors and exceptions ==&lt;br /&gt;
&lt;br /&gt;
Note: when you throw an exception, all database changes and all notifications are cancelled immediately. This way, the game situation that existed before the request is completely restored.&lt;br /&gt;
&lt;br /&gt;
; throw new BgaUserException ( $error_message)&lt;br /&gt;
: Base class to notify a user error&lt;br /&gt;
: You must throw this exception when a player wants to do something that he is not allowed to do.&lt;br /&gt;
: The error message will be shown to the player as a &amp;quot;red message&amp;quot;, so it must be translated.&lt;br /&gt;
: Throwing such an exception is NOT considered a bug, so it is not traced in BGA error logs.&lt;br /&gt;
&lt;br /&gt;
Example from Gomoku:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     throw new BgaUserException( self::_(&amp;quot;There is already a stone on this intersection, you can&#039;t play there&amp;quot;) );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; throw new BgaVisibleSystemException ( $error_message)&lt;br /&gt;
: You must throw this exception when you detect something that is not supposed to happened in your code.&lt;br /&gt;
: The error message is shown to the user as an &amp;quot;Unexpected error&amp;quot;, in order that he can report it in the forum.&lt;br /&gt;
: The error message is logged in BGA error logs. If it happens regularly, we will report it to you.&lt;br /&gt;
&lt;br /&gt;
; throw new BgaSystemException ( $error_message)&lt;br /&gt;
: Base class to notify a system exception. The message will be hidden from the user, but show in the logs. Use this if the message contains technical information.&lt;br /&gt;
: You shouldn&#039;t use this type of exception except if you think the information shown could be critical. Indeed: a generic error message will be shown to the user, so it&#039;s going to be difficult for you to see what happened.&lt;br /&gt;
&lt;br /&gt;
== Zombie mode ==&lt;br /&gt;
&lt;br /&gt;
When a player leaves a game for any reason (expelled, quit), he becomes a &amp;quot;zombie player&amp;quot;. In this case, the results of the game won&#039;t count for statistics, but this is cool if the other players can finish the game anyway. That&#039;s why zombie mode exists: allow the other player to finish the game, even if the situation is not ideal.&lt;br /&gt;
&lt;br /&gt;
While developing your zombie mode, keep in mind that:&lt;br /&gt;
* Do not refer to the rules, because this situation is not planned by the rules.&lt;br /&gt;
* Try to figure that you are playing with your friends and one of them has to leave: how can we finish the game without killing the spirit of the game?&lt;br /&gt;
* The idea is NOT to develop an artificial intelligence for the game.&lt;br /&gt;
* Do not try to end the game early, even in a two-player game. The zombie is there to allow the game to continue, not to end it. Trying to end the game is not supported by the framework and will likely cause unexpected errors.&lt;br /&gt;
&lt;br /&gt;
Most of the time, the best thing to do when it is zombie player turn is to jump immediately to a state where he is not active anymore. For example, if he is in a game state where he has a choice between playing A and playing B, the best thing to do is NOT to choose A or B, but to pass. So, even if there&#039;s no &amp;quot;pass&amp;quot; action in the rules, add a &amp;quot;zombiepass&amp;quot; transitition in your game state and use it.&lt;br /&gt;
&lt;br /&gt;
Each time a zombie player must play, your &amp;quot;zombieTurn&amp;quot; method is called.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* $state: the name of the current game state.&lt;br /&gt;
* $active_player: the id of the active player.&lt;br /&gt;
&lt;br /&gt;
Most of the time, your zombieTurn method looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    function zombieTurn( $state, $active_player )&lt;br /&gt;
    {&lt;br /&gt;
    	$statename = $state[&#039;name&#039;];&lt;br /&gt;
&lt;br /&gt;
        if( $statename == &#039;myFirstGameState&#039;&lt;br /&gt;
             ||  $statename == &#039;my2ndGameState&#039;&lt;br /&gt;
             ||  $statename == &#039;my3rdGameState&#039;&lt;br /&gt;
               ....&lt;br /&gt;
           )&lt;br /&gt;
        {&lt;br /&gt;
            $this-&amp;gt;gamestate-&amp;gt;nextState( &amp;quot;zombiePass&amp;quot; );&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
            throw new BgaVisibleSystemException( &amp;quot;Zombie mode not supported at this game state: &amp;quot;.$statename );&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that in the example above, all corresponding game state should implement &amp;quot;zombiePass&amp;quot; as a transition.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Very important&#039;&#039;&#039;: your zombie code will be called when the player leaves the game. This action is triggered from the main site and propagated to the gameserver from a server, not from a browser. As a consequence, there is no current player associated to this action. In your zombieTurn function, you must &#039;&#039;&#039;never&#039;&#039;&#039; use getCurrentPlayerId() or getCurrentPlayerName(), otherwise it will fail with a &amp;quot;Not logged&amp;quot; error message.&lt;br /&gt;
&lt;br /&gt;
== Player color preferences ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BGA players (Club members) may now choose their preferred color for playing. For example, if they are used to play green for every board game, they can select &amp;quot;green&amp;quot; in their BGA preferences page.&lt;br /&gt;
&lt;br /&gt;
Making your game compatible with colors preferences is very easy and requires only 1 line of PHP and 1 configuration change :&lt;br /&gt;
&lt;br /&gt;
On your gameinfos.inc.php file, add the following lines :&lt;br /&gt;
&lt;br /&gt;
  // Favorite colors support : if set to &amp;quot;true&amp;quot;, support attribution of favorite colors based on player&#039;s preferences (see reattributeColorsBasedOnPreferences PHP method)&lt;br /&gt;
  // NB: this parameter is used only to flag games supporting this feature; you must use (or not use) reattributeColorsBasedOnPreferences PHP method to actually enable or disable the feature.&lt;br /&gt;
  &#039;favorite_colors_support&#039; =&amp;gt; true,&lt;br /&gt;
&lt;br /&gt;
Then, on your main &amp;lt;your_game&amp;gt;.game.php file, find the &amp;quot;reloadPlayersBasicInfos&amp;quot; call in your &amp;quot;setupNewGame&amp;quot; method and replace :&lt;br /&gt;
&lt;br /&gt;
        $sql .= implode( $values, &#039;,&#039; );&lt;br /&gt;
        self::DbQuery( $sql );&lt;br /&gt;
        self::reloadPlayersBasicInfos();&lt;br /&gt;
&lt;br /&gt;
By :&lt;br /&gt;
&lt;br /&gt;
        $sql .= implode( $values, &#039;,&#039; );&lt;br /&gt;
        self::DbQuery( $sql );&lt;br /&gt;
        self::reattributeColorsBasedOnPreferences( $players, array(  /* LIST HERE THE AVAILABLE COLORS OF YOUR GAME INSTEAD OF THESE ONES */&amp;quot;ff0000&amp;quot;, &amp;quot;008000&amp;quot;, &amp;quot;0000ff&amp;quot;, &amp;quot;ffa500&amp;quot;, &amp;quot;773300&amp;quot; ) );&lt;br /&gt;
        self::reloadPlayersBasicInfos();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;reattributeColorsBasedOnPreferences&amp;quot; method reattributes all colors, taking into account players color preferences and available colors.&lt;br /&gt;
&lt;br /&gt;
Note that you must update the colors to indicate the colors available for your game.&lt;br /&gt;
&lt;br /&gt;
2 important remarks :&lt;br /&gt;
* for some games (ex : Chess), the color has an influence on a mechanism of the game, most of the time by giving a special advantage to a player (ex : Starting the game). Color preference mechanism must NOT be used in such a case.&lt;br /&gt;
* your logic should NEVER consider that the first player has the color X, that the second player has the color Y, and so on. If this is the case, your game will NOT be compatible with reattributeColorsBasedOnPreferences as this method attribute colors to players based on their preferences and not based as their order at the table.&lt;br /&gt;
&lt;br /&gt;
Colours currently listed as a choice in preferences:&lt;br /&gt;
&lt;br /&gt;
* #ff0000 Red&lt;br /&gt;
* #008000 Green&lt;br /&gt;
* #0000ff Blue&lt;br /&gt;
* #ffa500 Yellow&lt;br /&gt;
* #000000 Black&lt;br /&gt;
* #ffffff White&lt;br /&gt;
* #e94190 Pink&lt;br /&gt;
* #982fff Purple&lt;br /&gt;
* #72c3b1 Cyan&lt;br /&gt;
* #f07f16 Orange&lt;br /&gt;
* #bdd002 Khaki green&lt;br /&gt;
* #7b7b7b Gray&lt;br /&gt;
&lt;br /&gt;
== Legacy games API ==&lt;br /&gt;
&lt;br /&gt;
For some very specific games (&amp;quot;legacy&amp;quot;, &amp;quot;campaign&amp;quot;), you need to keep some informations from a game to another.&lt;br /&gt;
&lt;br /&gt;
This should be an exceptional situation: the legacy API is costing resources on Board Game Arena databases, and is slowing down the game setup process + game end of game process. Please do not use it for things like:&lt;br /&gt;
* keeping a player preference/settings (=&amp;gt; player preferences and game options should be used instead)&lt;br /&gt;
* keeping a statistics, a score, or a ranking, while it is not planned in the physical board game, or while there is no added value compared to BGA statistics / rankings.&lt;br /&gt;
&lt;br /&gt;
You should use it for:&lt;br /&gt;
* legacy games: when some components of the game has been altered in a previous game and should be kept as it is.&lt;br /&gt;
* &amp;quot;campaign style&amp;quot; games: when a player is getting a &amp;quot;reward&amp;quot; at the end of a game, and should be able to use it in further games.&lt;br /&gt;
&lt;br /&gt;
Important: you cannot store more than 64k of data (serialized as JSON) per player per game. If you go over 64k, storeLegacyData function is going to FAIL, and there is a risk to create a major bug (= players blocked) in your game. You MUST make sure that no more than 64k of data is used for each player for your game. For example, if you are implementing a &amp;quot;campaign style&amp;quot; game and if you allow a player to start multiple campaign, you must LIMIT the number of different campaign so that the total data size to not go over the limit. We strongly recommend you to use this:&lt;br /&gt;
&lt;br /&gt;
  try &lt;br /&gt;
  {&lt;br /&gt;
  	$this-&amp;gt;storeLegacyTeamData( &#039;my_variable&#039;, $my_data );&lt;br /&gt;
  }&lt;br /&gt;
  catch( feException $e )&lt;br /&gt;
  {&lt;br /&gt;
  	if( $e-&amp;gt;getCode() == FEX_legacy_size_exceeded )&lt;br /&gt;
  	{&lt;br /&gt;
  		// Do something here to free some space in Legacy data (ex: by removing some variables)&lt;br /&gt;
  	}&lt;br /&gt;
  	else&lt;br /&gt;
  		throw $e;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; function storeLegacyData( $player_id, $key, $data, $ttl = 365 )&lt;br /&gt;
: Store some data associated with $key for the given user / current game&lt;br /&gt;
: In the opposite of all other game data, this data will PERSIST after the end of this table, and can be re-used&lt;br /&gt;
: in a future table with the same game.&lt;br /&gt;
: IMPORTANT: The only possible place where you can use this method is when the game is over at your table (last game action). Otherwise, there is a risk of conflicts between ongoing games.    &lt;br /&gt;
: TTL is a time-to-live: the maximum, and default, is 365 days.&lt;br /&gt;
: In any way, the total data (= all keys) you can store for a given user+game is 64k (note: data is store serialized as JSON data)&lt;br /&gt;
&lt;br /&gt;
; function retrieveLegacyData( $player_id, $key )&lt;br /&gt;
: Get data associated with $key for the current game&lt;br /&gt;
: This data is common to ALL tables from the same game for this player, and persist from one table to another.&lt;br /&gt;
: Note: calling this function has an important cost =&amp;gt; please call it few times (possibly: only ONCE) for each player for 1 game if possible&lt;br /&gt;
: Note: you can use &#039;%&#039; in $key to retrieve all keys matching the given patterns&lt;br /&gt;
&lt;br /&gt;
; function removeLegacyData( $player_id, $key )&lt;br /&gt;
: Remove some legacy data with the given key&lt;br /&gt;
: (useful to free some data to avoid going over 64k)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; function storeLegacyTeamData( $key, $data, $ttl = 365 )&lt;br /&gt;
: Same as storeLegacyData, except that it stores some data for the whole team within the current table&lt;br /&gt;
: Ie: if players A, B and C are at a table, the legacy data will be saved for future table with (exactly) A, B and C on the table.&lt;br /&gt;
: This is useful for games which are intended to be played several time by the same team.&lt;br /&gt;
: Note: the data total size is still limited, so you must implement catch the FEX_legacy_size_exceeded exception if it happens&lt;br /&gt;
&lt;br /&gt;
; function retrieveLegacyTeamData($key)&lt;br /&gt;
: Same as retrieveLegacyData, except that it retrieves some data for the whole team within the current table (set by storeLegacyTeamData)&lt;br /&gt;
&lt;br /&gt;
; function removeLegacyTeamData()&lt;br /&gt;
: Same as removeLegacyData, except that it retrieves some data for the whole team within the current table (set by storeLegacyTeamData)&lt;br /&gt;
&lt;br /&gt;
== Language dependent games API ==&lt;br /&gt;
&lt;br /&gt;
This API is used for games that are heavily language dependent. Two most common use cases are:&lt;br /&gt;
* Games that have a language dependent component that are not necessarily translatable, typically a list of words. (Think of games like Codenames, Decrypto, Just One...)&lt;br /&gt;
* Games with massive communication where players would like to ensure that all participants speak the same language. (Think of games like Werewolf, The Resistance, maybe even dixit...)&lt;br /&gt;
&lt;br /&gt;
If this option is used, the table created will be limited only to users that have specific language in their profile. Player starting the game would be able to chose one of the languages he speaks.&lt;br /&gt;
&lt;br /&gt;
There is a new property language_dependency in gameinfos.inc.php which can be set like this:&lt;br /&gt;
  &#039;language_dependecy&#039; =&amp;gt; false,  //or if the property is missing, the game is not language dependent&lt;br /&gt;
  &#039;language_dependecy&#039; =&amp;gt; true, //all players at the table must speak the same language&lt;br /&gt;
  &#039;language_dependecy&#039; =&amp;gt; array( 1 =&amp;gt; &#039;en&#039;, 2 =&amp;gt; &#039;fr&#039;, 3 =&amp;gt; &#039;it&#039; ), //1-based list of supported languages&lt;br /&gt;
&lt;br /&gt;
In the gamename.game.php file, you can get the id of selected language with the method &#039;&#039;&#039;getGameLanguage&#039;&#039;&#039;.&lt;br /&gt;
; function getGameLanguage()&lt;br /&gt;
: Returns an index of the selected language as defined in gameinfos.inc.php.&lt;br /&gt;
&lt;br /&gt;
Languages currently available on BGA are:&lt;br /&gt;
  &#039;ar&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;العربية&amp;quot;, &#039;code&#039; =&amp;gt; &#039;ar_AE&#039; ),             // Arabic&lt;br /&gt;
  &#039;be&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;беларуская мова&amp;quot;, &#039;code&#039; =&amp;gt; &#039;be_BY&#039; ),     // Belarusian&lt;br /&gt;
  &#039;bn&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;বাংলা&amp;quot;, &#039;code&#039; =&amp;gt; &#039;bn_BD&#039; ),                // Bengali&lt;br /&gt;
  &#039;bg&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;български език&amp;quot;, &#039;code&#039; =&amp;gt; &#039;bg_BG&#039; ),      // Bulgarian&lt;br /&gt;
  &#039;ca&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;català&amp;quot;, &#039;code&#039; =&amp;gt; &#039;ca_ES&#039; ),              // Catalan&lt;br /&gt;
  &#039;cs&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;čeština&amp;quot;, &#039;code&#039; =&amp;gt; &#039;cs_CZ&#039; ),             // Czech&lt;br /&gt;
  &#039;da&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;dansk&amp;quot;, &#039;code&#039; =&amp;gt; &#039;da_DK&#039; ),               // Danish&lt;br /&gt;
  &#039;de&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;deutsch&amp;quot;, &#039;code&#039; =&amp;gt; &#039;de_DE&#039; ),             // German&lt;br /&gt;
  &#039;el&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;Ελληνικά&amp;quot;, &#039;code&#039; =&amp;gt; &#039;el_GR&#039; ),            // Greek&lt;br /&gt;
  &#039;en&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;English&amp;quot;, &#039;code&#039; =&amp;gt; &#039;en_US&#039; ),             // English&lt;br /&gt;
  &#039;es&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;español&amp;quot;, &#039;code&#039; =&amp;gt; &#039;es_ES&#039; ),             // Spanish&lt;br /&gt;
  &#039;et&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;eesti keel&amp;quot;, &#039;code&#039; =&amp;gt; &#039;et_EE&#039; ),          // Estonian       &lt;br /&gt;
  &#039;fi&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;suomi&amp;quot;, &#039;code&#039; =&amp;gt; &#039;fi_FI&#039; ),               // Finnish&lt;br /&gt;
  &#039;fr&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;français&amp;quot;, &#039;code&#039; =&amp;gt; &#039;fr_FR&#039; ),            // French&lt;br /&gt;
  &#039;he&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;עברית&amp;quot;, &#039;code&#039; =&amp;gt; &#039;he_IL&#039; ),               // Hebrew       &lt;br /&gt;
  &#039;hi&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;हिन्दी&amp;quot;, &#039;code&#039; =&amp;gt; &#039;hi_IN&#039; ),                 // Hindi&lt;br /&gt;
  &#039;hr&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;Hrvatski&amp;quot;, &#039;code&#039; =&amp;gt; &#039;hr_HR&#039; ),            // Croatian&lt;br /&gt;
  &#039;hu&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;magyar&amp;quot;, &#039;code&#039; =&amp;gt; &#039;hu_HU&#039; ),              // Hungarian&lt;br /&gt;
  &#039;id&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;Bahasa Indonesia&amp;quot;, &#039;code&#039; =&amp;gt; &#039;id_ID&#039; ),    // Indonesian&lt;br /&gt;
  &#039;ms&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;Bahasa Malaysia&amp;quot;, &#039;code&#039; =&amp;gt; &#039;ms_MY&#039; ),     // Malaysian&lt;br /&gt;
  &#039;it&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;italiano&amp;quot;, &#039;code&#039; =&amp;gt; &#039;it_IT&#039; ),            // Italian&lt;br /&gt;
  &#039;ja&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;日本語&amp;quot;, &#039;code&#039; =&amp;gt; &#039;ja_JP&#039; ),               // Japanese&lt;br /&gt;
  &#039;jv&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;Basa Jawa&amp;quot;, &#039;code&#039; =&amp;gt; &#039;jv_JV&#039; ),           // Javanese                       &lt;br /&gt;
  &#039;ko&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;한국어&amp;quot;, &#039;code&#039; =&amp;gt; &#039;ko_KR&#039; ),               // Korean&lt;br /&gt;
  &#039;lt&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;lietuvių&amp;quot;, &#039;code&#039; =&amp;gt; &#039;lt_LT&#039; ),            // Lithuanian&lt;br /&gt;
  &#039;lv&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;latviešu&amp;quot;, &#039;code&#039; =&amp;gt; &#039;lv_LV&#039; ),            // Latvian&lt;br /&gt;
  &#039;nl&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;nederlands&amp;quot;, &#039;code&#039; =&amp;gt; &#039;nl_NL&#039; ),          // Dutch&lt;br /&gt;
  &#039;no&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;norsk&amp;quot;, &#039;code&#039; =&amp;gt; &#039;nb_NO&#039; ),               // Norwegian&lt;br /&gt;
  &#039;oc&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;occitan&amp;quot;, &#039;code&#039; =&amp;gt; &#039;oc_FR&#039; ),             // Occitan&lt;br /&gt;
  &#039;pl&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;polski&amp;quot;, &#039;code&#039; =&amp;gt; &#039;pl_PL&#039; ),              // Polish&lt;br /&gt;
  &#039;pt&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;português&amp;quot;,  &#039;code&#039; =&amp;gt; &#039;pt_PT&#039; ),          // Portuguese&lt;br /&gt;
  &#039;ro&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;română&amp;quot;,  &#039;code&#039; =&amp;gt; &#039;ro_RO&#039;  ),            // Romanian&lt;br /&gt;
  &#039;ru&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;Русский язык&amp;quot;, &#039;code&#039; =&amp;gt; &#039;ru_RU&#039; ),        // Russian&lt;br /&gt;
  &#039;sk&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;slovenčina&amp;quot;, &#039;code&#039; =&amp;gt; &#039;sk_SK&#039; ),          // Slovak&lt;br /&gt;
  &#039;sl&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;slovenščina&amp;quot;, &#039;code&#039; =&amp;gt; &#039;sl_SI&#039; ),         // Slovenian       &lt;br /&gt;
  &#039;sr&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;Српски&amp;quot;, &#039;code&#039; =&amp;gt; &#039;sr_RS&#039; ),              // Serbian       &lt;br /&gt;
  &#039;sv&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;svenska&amp;quot;, &#039;code&#039; =&amp;gt; &#039;sv_SE&#039; ),             // Swedish&lt;br /&gt;
  &#039;tr&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;Türkçe&amp;quot;, &#039;code&#039; =&amp;gt; &#039;tr_TR&#039; ),              // Turkish       &lt;br /&gt;
  &#039;uk&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;Українська мова&amp;quot;, &#039;code&#039; =&amp;gt; &#039;uk_UA&#039; ),     // Ukrainian&lt;br /&gt;
  &#039;zh&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;中文 (漢)&amp;quot;,  &#039;code&#039; =&amp;gt; &#039;zh_TW&#039; ),           // Traditional Chinese (Hong Kong, Macau, Taiwan)&lt;br /&gt;
  &#039;zh-cn&#039; =&amp;gt; array( &#039;name&#039; =&amp;gt; &amp;quot;中文 (汉)&amp;quot;, &#039;code&#039; =&amp;gt; &#039;zh_CN&#039; ),         // Simplified Chinese (Mainland China, Singapore)&lt;br /&gt;
&lt;br /&gt;
== Debugging and Tracing ==&lt;br /&gt;
&lt;br /&gt;
To debug php code you can use some tracing functions available from the parent class such as debug, trace, error, warn, dump.&lt;br /&gt;
  &lt;br /&gt;
  self::debug(&amp;quot;Ahh!&amp;quot;);&lt;br /&gt;
  self::dump(&#039;my_var&#039;,$my_var);&lt;br /&gt;
&lt;br /&gt;
See [[Practical_debugging]] section for complete information about debugging interfaces and where to find logs.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Tips_piratenkapern&amp;diff=6099</id>
		<title>Tips piratenkapern</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Tips_piratenkapern&amp;diff=6099"/>
		<updated>2020-11-07T23:58:19Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Please correct me if I&#039;m wrong]&lt;br /&gt;
&lt;br /&gt;
=Throwing 1 die=&lt;br /&gt;
*1 chance out of 6 (17%) to get a Skull&lt;br /&gt;
&lt;br /&gt;
=Throwing 2 dice=&lt;br /&gt;
*1 chance out of 36 (3%) to get 2 Skulls&lt;br /&gt;
*36% chance to get AT LEAST 1 Skull&lt;br /&gt;
*64% chance to get NO Skull&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Tips_piratenkapern&amp;diff=6098</id>
		<title>Tips piratenkapern</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Tips_piratenkapern&amp;diff=6098"/>
		<updated>2020-11-07T21:54:48Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Please correct me if I&#039;m wrong]&lt;br /&gt;
&lt;br /&gt;
==Throwing 1 die==&lt;br /&gt;
*1 chance out of 6 (17%) to get a Skull&lt;br /&gt;
&lt;br /&gt;
==Throwing 2 dice==&lt;br /&gt;
*1 chance out of 36 (3%) to get 2 Skulls&lt;br /&gt;
*36% chance to get AT LEAST 1 Skull&lt;br /&gt;
*64% chance to get NO Skull&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Tips_piratenkapern&amp;diff=6097</id>
		<title>Tips piratenkapern</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Tips_piratenkapern&amp;diff=6097"/>
		<updated>2020-11-07T21:43:23Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Correct me if I&#039;m wrong]&lt;br /&gt;
&lt;br /&gt;
==Throwing 1 die==&lt;br /&gt;
*1 chance out of 6 (17%) to get a Skull&lt;br /&gt;
&lt;br /&gt;
==Throwing 2 dice==&lt;br /&gt;
*1 chance out of 36 (3%) to get 2 Skulls&lt;br /&gt;
*36% chance to get AT LEAST 1 Skull&lt;br /&gt;
*64% chance to get NO Skull&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Tips_piratenkapern&amp;diff=6096</id>
		<title>Tips piratenkapern</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Tips_piratenkapern&amp;diff=6096"/>
		<updated>2020-11-07T21:43:01Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: /* Throwing 2 dice */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Throwing 1 die==&lt;br /&gt;
*1 chance out of 6 (17%) to get a Skull&lt;br /&gt;
&lt;br /&gt;
==Throwing 2 dice==&lt;br /&gt;
*1 chance out of 36 (3%) to get 2 Skulls&lt;br /&gt;
*36% chance to get AT LEAST 1 Skull&lt;br /&gt;
*64% chance to get NO Skull&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Tips_piratenkapern&amp;diff=6095</id>
		<title>Tips piratenkapern</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Tips_piratenkapern&amp;diff=6095"/>
		<updated>2020-11-07T21:40:25Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Throwing 1 die==&lt;br /&gt;
*1 chance out of 6 (17%) to get a Skull&lt;br /&gt;
&lt;br /&gt;
==Throwing 2 dice==&lt;br /&gt;
*1 chance out of 36 (3%) to get 2 Skulls&lt;br /&gt;
*1 chance out of 3 (33%) to get AT LEAST 1 Skull&lt;br /&gt;
*64% chance to get NO Skull&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Tips_piratenkapern&amp;diff=6094</id>
		<title>Tips piratenkapern</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Tips_piratenkapern&amp;diff=6094"/>
		<updated>2020-11-07T21:39:50Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Throwing 1 die==&lt;br /&gt;
-1 chance out of 6 (17%) to get a Skull&lt;br /&gt;
&lt;br /&gt;
==Throwing 2 dice==&lt;br /&gt;
-1 chance out of 36 (3%) to get 2 Skulls&lt;br /&gt;
-1 chance out of 3 (33%) to get AT LEAST 1 Skull&lt;br /&gt;
-64% chance to get NO Skull&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Tips_piratenkapern&amp;diff=6093</id>
		<title>Tips piratenkapern</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Tips_piratenkapern&amp;diff=6093"/>
		<updated>2020-11-07T21:34:33Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: Created page with &amp;quot;Throwing two dice:&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Throwing two dice:&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Game_database_model:_dbmodel.sql&amp;diff=4764</id>
		<title>Game database model: dbmodel.sql</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Game_database_model:_dbmodel.sql&amp;diff=4764"/>
		<updated>2020-06-19T20:32:00Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: /* Default tables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Studio_Framework_Navigation}}&lt;br /&gt;
&lt;br /&gt;
In this file you specify the database schema of your game.&lt;br /&gt;
&lt;br /&gt;
This file contains SQL queries that will be executed during the creation of your game table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; you can&#039;t change the database schema during the game.&lt;br /&gt;
&lt;br /&gt;
== Create your schema ==&lt;br /&gt;
&lt;br /&gt;
To build this file, we recommend you to build the tables you need with the PhpMyAdmin tool (see BGA user guide), and then to export them and to copy/paste the content inside this file.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; you must not use for a column the same name as for the table, as the framework replay function relies on regexp substitution to save/restore a previous state in a clone table with another name.&lt;br /&gt;
&lt;br /&gt;
== Default tables ==&lt;br /&gt;
&lt;br /&gt;
Important: by default, BGA creates 4 tables for your game: global, stats, gamelog, and player.&lt;br /&gt;
&lt;br /&gt;
You must not modify the schema of global, stats and gamelog tables (and you must not access them directly with SQL queries in your PHP code).&lt;br /&gt;
&lt;br /&gt;
You may add columns to &amp;quot;player&amp;quot; table. This is very practical to add simple values associated with players.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ALTER TABLE `player` ADD `player_reserve_size` SMALLINT UNSIGNED NOT NULL DEFAULT &#039;7&#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For your information, the useful columns of default &amp;quot;player&amp;quot; table are:&lt;br /&gt;
* &amp;lt;strong&amp;gt;player_no&amp;lt;/strong&amp;gt;: the index of player in natural playing order (starting with 1)&lt;br /&gt;
* &amp;lt;strong&amp;gt;player_id&amp;lt;/strong&amp;gt;&lt;br /&gt;
* &amp;lt;strong&amp;gt;player_name&amp;lt;/strong&amp;gt;: (note: you should better access this date with getActivePlayerName() or loadPlayersBasicInfos() methods)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;strong&amp;gt;player_score&amp;lt;/strong&amp;gt;: the current score of the player (displayed in the player panel). You must update this field to update player&#039;s scores.&lt;br /&gt;
* &amp;lt;strong&amp;gt;player_score_aux&amp;lt;/strong&amp;gt;: the secondary score, used as a tie breaker. You must update this field according to tie breaking rules of the game (see also: [[Main_game_logic:_yourgamename.game.php#Manage_player_scores_and_Tie_breaker|Manage_player_scores_and_Tie_breaker]])&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;strong&amp;gt;player_table_order&amp;lt;/strong&amp;gt;: gives an indication of the rank of the player by order of arrival in the lobby (starting with 1). It is not the same as player_no which is the player order &amp;lt;u&amp;gt;within&amp;lt;/u&amp;gt; the game. This is useful to set custom teams if wished in a game option (for instance 1st-2nd vs 3rd-4th).&amp;lt;br /&amp;gt;&amp;lt;strong&amp;gt;&amp;lt;u&amp;gt;CAUTION:&amp;lt;/u&amp;gt;&amp;lt;/strong&amp;gt; This value is currently &amp;lt;u&amp;gt;not guaranted&amp;lt;/u&amp;gt; to be actually equal with the rank of the player in the table. For example, in a 4 player game, if the table was full but the 3rd player have left before the game starts, the 4th player becomes 3rd on this table &amp;lt;u&amp;gt;but&amp;lt;/u&amp;gt; their player_table_no is still equal to 4! If another player then joins, their player_table_no will then be 5...&amp;lt;br /&amp;gt;Thus, it is essential to normalize these values first in the game setup if you wish to use them to prevent bugs at game launch. For example, if the set of player_table_order are &amp;lt;player A&amp;gt;: 3, &amp;lt;player B&amp;gt;: 2, &amp;lt;player C&amp;gt;: 5, &amp;lt;player D&amp;gt;: 7, you see that you can&#039;t read that values as ranks directly, but you can still deduce that &amp;lt;player B&amp;gt; was 1st on the table, then &amp;lt;player A&amp;gt; then &amp;lt;player C&amp;gt; then &amp;lt;player D&amp;gt;&amp;amp;nbsp;&amp;amp;#128521;&lt;br /&gt;
&lt;br /&gt;
== CREATE TABLES ==&lt;br /&gt;
you can create tables, using engine InnoDB&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE TABLE IF NOT EXISTS `hands` &lt;br /&gt;
(&lt;br /&gt;
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, &lt;br /&gt;
`player_id` TINYINT(1) NOT NULL,&lt;br /&gt;
`1` BOOL NOT NULL DEFAULT 1,	&lt;br /&gt;
`2` BOOL NOT NULL DEFAULT 1,	&lt;br /&gt;
`3` BOOL NOT NULL DEFAULT 1,	&lt;br /&gt;
`4` BOOL NOT NULL DEFAULT 1,	&lt;br /&gt;
`5` BOOL NOT NULL DEFAULT 1,		&lt;br /&gt;
`6` BOOL NOT NULL DEFAULT 1,	&lt;br /&gt;
`7` BOOL NOT NULL DEFAULT 1,	&lt;br /&gt;
PRIMARY KEY (`id`)&lt;br /&gt;
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: if you put comments, you cannot do it in the same line as code.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
`3` BOOL NOT NULL DEFAULT 1, --  activated or not&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will also comment out `3` BOOL, and that code will not be executed.&lt;br /&gt;
&lt;br /&gt;
== Link ==&lt;br /&gt;
You can add your Db inits in function SetupNewGame() from file &#039;gamename.game.php&#039;&lt;br /&gt;
  &lt;br /&gt;
== Errors Log ==&lt;br /&gt;
To trace Database creation check the logs that you can access in /admin/studio.&lt;br /&gt;
&lt;br /&gt;
== Post-release database modification ==&lt;br /&gt;
If you want to modify your database schema after the first release of your game in production, you should consult the [[Post-release phase#Updating the database schema|related section]]&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Game_database_model:_dbmodel.sql&amp;diff=4763</id>
		<title>Game database model: dbmodel.sql</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Game_database_model:_dbmodel.sql&amp;diff=4763"/>
		<updated>2020-06-19T20:31:32Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: /* Default tables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Studio_Framework_Navigation}}&lt;br /&gt;
&lt;br /&gt;
In this file you specify the database schema of your game.&lt;br /&gt;
&lt;br /&gt;
This file contains SQL queries that will be executed during the creation of your game table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; you can&#039;t change the database schema during the game.&lt;br /&gt;
&lt;br /&gt;
== Create your schema ==&lt;br /&gt;
&lt;br /&gt;
To build this file, we recommend you to build the tables you need with the PhpMyAdmin tool (see BGA user guide), and then to export them and to copy/paste the content inside this file.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; you must not use for a column the same name as for the table, as the framework replay function relies on regexp substitution to save/restore a previous state in a clone table with another name.&lt;br /&gt;
&lt;br /&gt;
== Default tables ==&lt;br /&gt;
&lt;br /&gt;
Important: by default, BGA creates 4 tables for your game: global, stats, gamelog, and player.&lt;br /&gt;
&lt;br /&gt;
You must not modify the schema of global, stats and gamelog tables (and you must not access them directly with SQL queries in your PHP code).&lt;br /&gt;
&lt;br /&gt;
You may add columns to &amp;quot;player&amp;quot; table. This is very practical to add simple values associated with players.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ALTER TABLE `player` ADD `player_reserve_size` SMALLINT UNSIGNED NOT NULL DEFAULT &#039;7&#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For your information, the useful columns of default &amp;quot;player&amp;quot; table are:&lt;br /&gt;
* &amp;lt;strong&amp;gt;player_no&amp;lt;/strong&amp;gt;: the index of player in natural playing order (starting with 1)&lt;br /&gt;
* &amp;lt;strong&amp;gt;player_id&amp;lt;/strong&amp;gt;&lt;br /&gt;
* &amp;lt;strong&amp;gt;player_name&amp;lt;/strong&amp;gt;: (note: you should better access this date with getActivePlayerName() or loadPlayersBasicInfos() methods)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;strong&amp;gt;player_score&amp;lt;/strong&amp;gt;: the current score of the player (displayed in the player panel). You must update this field to update player&#039;s scores.&lt;br /&gt;
* &amp;lt;strong&amp;gt;player_score_aux&amp;lt;/strong&amp;gt;: the secondary score, used as a tie breaker. You must update this field according to tie breaking rules of the game (see also: [[Main_game_logic:_yourgamename.game.php#Manage_player_scores_and_Tie_breaker|Manage_player_scores_and_Tie_breaker]])&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;strong&amp;gt;player_table_order&amp;lt;/strong&amp;gt;: gives an indication of the rank of the player by order of arrival in the lobby (starting with 1). It is not the same as player_no which is the player order &amp;lt;u&amp;gt;within&amp;lt;/u&amp;gt; the game. This is useful to set custom teams if wished in a game option (for instance 1st-2nd vs 3rd-4th).&amp;lt;br /&amp;gt;&amp;lt;strong&amp;gt;&amp;lt;u&amp;gt;CAUTION:&amp;lt;/u&amp;gt;&amp;lt;/strong&amp;gt; This value is currently &amp;lt;u&amp;gt;not guaranted&amp;lt;/u&amp;gt; to be actually equal with the rank of the player in the table. For example, in a 4 player game, if the table was full but the 3rd player have left before the game starts, the 4th player becomes 3rd on this table &amp;lt;u&amp;gt;but&amp;lt;/u&amp;gt; their player_table_no is still equal to 4! If another player then joins, their player_table_no will then be 5...&amp;lt;br /&amp;gt;Thus, it is essential to normalize these values first in the game setup if you wish to use them to prevent bugs at game launch. For example, if the set of player_table_order are &amp;lt;player A&amp;gt;: 3, &amp;lt;player B&amp;gt;: 2, &amp;lt;player C&amp;gt;: 5, &amp;lt;player D&amp;gt;: 7, you see that you can&#039;t read that values as ranks directly, but you can still deduce that &amp;lt;player B&amp;gt; was 1st on the table, then &amp;lt;player A&amp;gt; then &amp;lt;player C&amp;gt; then &amp;lt;player D&amp;gt; &amp;amp;#128521;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
== CREATE TABLES ==&lt;br /&gt;
you can create tables, using engine InnoDB&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE TABLE IF NOT EXISTS `hands` &lt;br /&gt;
(&lt;br /&gt;
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, &lt;br /&gt;
`player_id` TINYINT(1) NOT NULL,&lt;br /&gt;
`1` BOOL NOT NULL DEFAULT 1,	&lt;br /&gt;
`2` BOOL NOT NULL DEFAULT 1,	&lt;br /&gt;
`3` BOOL NOT NULL DEFAULT 1,	&lt;br /&gt;
`4` BOOL NOT NULL DEFAULT 1,	&lt;br /&gt;
`5` BOOL NOT NULL DEFAULT 1,		&lt;br /&gt;
`6` BOOL NOT NULL DEFAULT 1,	&lt;br /&gt;
`7` BOOL NOT NULL DEFAULT 1,	&lt;br /&gt;
PRIMARY KEY (`id`)&lt;br /&gt;
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: if you put comments, you cannot do it in the same line as code.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
`3` BOOL NOT NULL DEFAULT 1, --  activated or not&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will also comment out `3` BOOL, and that code will not be executed.&lt;br /&gt;
&lt;br /&gt;
== Link ==&lt;br /&gt;
You can add your Db inits in function SetupNewGame() from file &#039;gamename.game.php&#039;&lt;br /&gt;
  &lt;br /&gt;
== Errors Log ==&lt;br /&gt;
To trace Database creation check the logs that you can access in /admin/studio.&lt;br /&gt;
&lt;br /&gt;
== Post-release database modification ==&lt;br /&gt;
If you want to modify your database schema after the first release of your game in production, you should consult the [[Post-release phase#Updating the database schema|related section]]&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Game_database_model:_dbmodel.sql&amp;diff=4762</id>
		<title>Game database model: dbmodel.sql</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Game_database_model:_dbmodel.sql&amp;diff=4762"/>
		<updated>2020-06-19T20:30:22Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: /* Default tables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Studio_Framework_Navigation}}&lt;br /&gt;
&lt;br /&gt;
In this file you specify the database schema of your game.&lt;br /&gt;
&lt;br /&gt;
This file contains SQL queries that will be executed during the creation of your game table.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; you can&#039;t change the database schema during the game.&lt;br /&gt;
&lt;br /&gt;
== Create your schema ==&lt;br /&gt;
&lt;br /&gt;
To build this file, we recommend you to build the tables you need with the PhpMyAdmin tool (see BGA user guide), and then to export them and to copy/paste the content inside this file.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; you must not use for a column the same name as for the table, as the framework replay function relies on regexp substitution to save/restore a previous state in a clone table with another name.&lt;br /&gt;
&lt;br /&gt;
== Default tables ==&lt;br /&gt;
&lt;br /&gt;
Important: by default, BGA creates 4 tables for your game: global, stats, gamelog, and player.&lt;br /&gt;
&lt;br /&gt;
You must not modify the schema of global, stats and gamelog tables (and you must not access them directly with SQL queries in your PHP code).&lt;br /&gt;
&lt;br /&gt;
You may add columns to &amp;quot;player&amp;quot; table. This is very practical to add simple values associated with players.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ALTER TABLE `player` ADD `player_reserve_size` SMALLINT UNSIGNED NOT NULL DEFAULT &#039;7&#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For your information, the useful columns of default &amp;quot;player&amp;quot; table are:&lt;br /&gt;
* &amp;lt;strong&amp;gt;player_no&amp;lt;/strong&amp;gt;: the index of player in natural playing order (starting with 1)&lt;br /&gt;
* &amp;lt;strong&amp;gt;player_id&amp;lt;/strong&amp;gt;&lt;br /&gt;
* &amp;lt;strong&amp;gt;player_name&amp;lt;/strong&amp;gt;: (note: you should better access this date with getActivePlayerName() or loadPlayersBasicInfos() methods)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;strong&amp;gt;player_score&amp;lt;/strong&amp;gt;: the current score of the player (displayed in the player panel). You must update this field to update player&#039;s scores.&lt;br /&gt;
* &amp;lt;strong&amp;gt;player_score_aux&amp;lt;/strong&amp;gt;: the secondary score, used as a tie breaker. You must update this field according to tie breaking rules of the game (see also: [[Main_game_logic:_yourgamename.game.php#Manage_player_scores_and_Tie_breaker|Manage_player_scores_and_Tie_breaker]])&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;strong&amp;gt;player_table_order&amp;lt;/strong&amp;gt;: gives an indication of the rank of the player by order of arrival in the lobby (starting with 1). It is not the same as player_no which is the player order &amp;lt;u&amp;gt;within&amp;lt;/u&amp;gt; the game. This is useful to set custom teams if wished in a game option (for instance 1st-2nd vs 3rd-4th).&amp;lt;br /&amp;gt;&amp;lt;strong&amp;gt;&amp;lt;u&amp;gt;CAUTION:&amp;lt;/u&amp;gt;&amp;lt;/strong&amp;gt; This value is currently &amp;lt;u&amp;gt;not guaranted&amp;lt;/u&amp;gt; to be actually equal with the rank of the player in the table. For example, in a 4 player game, if the table was full but the 3rd player have left before the game starts, the 4th player becomes 3rd on this table &amp;lt;u&amp;gt;but&amp;lt;/u&amp;gt; their player_table_no is still equal to 4! If another player then joins, their player_table_no will then be 5...&amp;lt;br /&amp;gt;Thus, it is essential to normalize these values first in the game setup if you wish to use them to prevent bugs at game launch. For example, if the set of player_table_order are &amp;lt;player A&amp;gt;: 3, &amp;lt;player B&amp;gt;: 2, &amp;lt;player C&amp;gt;: 5, &amp;lt;player D&amp;gt;: 7, you see that you can&#039;t read that values as ranks directly, but you can still deduce that &amp;lt;player B&amp;gt; was 1st on the table, then &amp;lt;player A&amp;gt; then &amp;lt;player C&amp;gt; then &amp;lt;player D&amp;gt; &amp;lt;strong&amp;gt;;-)&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CREATE TABLES ==&lt;br /&gt;
you can create tables, using engine InnoDB&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE TABLE IF NOT EXISTS `hands` &lt;br /&gt;
(&lt;br /&gt;
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, &lt;br /&gt;
`player_id` TINYINT(1) NOT NULL,&lt;br /&gt;
`1` BOOL NOT NULL DEFAULT 1,	&lt;br /&gt;
`2` BOOL NOT NULL DEFAULT 1,	&lt;br /&gt;
`3` BOOL NOT NULL DEFAULT 1,	&lt;br /&gt;
`4` BOOL NOT NULL DEFAULT 1,	&lt;br /&gt;
`5` BOOL NOT NULL DEFAULT 1,		&lt;br /&gt;
`6` BOOL NOT NULL DEFAULT 1,	&lt;br /&gt;
`7` BOOL NOT NULL DEFAULT 1,	&lt;br /&gt;
PRIMARY KEY (`id`)&lt;br /&gt;
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: if you put comments, you cannot do it in the same line as code.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
`3` BOOL NOT NULL DEFAULT 1, --  activated or not&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will also comment out `3` BOOL, and that code will not be executed.&lt;br /&gt;
&lt;br /&gt;
== Link ==&lt;br /&gt;
You can add your Db inits in function SetupNewGame() from file &#039;gamename.game.php&#039;&lt;br /&gt;
  &lt;br /&gt;
== Errors Log ==&lt;br /&gt;
To trace Database creation check the logs that you can access in /admin/studio.&lt;br /&gt;
&lt;br /&gt;
== Post-release database modification ==&lt;br /&gt;
If you want to modify your database schema after the first release of your game in production, you should consult the [[Post-release phase#Updating the database schema|related section]]&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=4706</id>
		<title>Gamehelpfrenchtarot</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=4706"/>
		<updated>2020-06-12T10:46:41Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: /* Play */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;THIS PAGE WAS WRITTEN BY A FRENCH PLAYER...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DO NOT HESITATE TO CORRECT THAT CLUMSY ENGLISH ;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Cards ===&lt;br /&gt;
&lt;br /&gt;
There are 3 types of cards. &lt;br /&gt;
• 21 Trump cards numbered from 1 to 21 (These have stars)&lt;br /&gt;
&lt;br /&gt;
• The Fool (only one of these)&lt;br /&gt;
&lt;br /&gt;
• 14 cards in each color suit, increasing order : 1 2 3 4 5 6 7 8 9 10 V C D R&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jack (V) &amp;lt; Knight (C) &amp;lt; Queen (D) &amp;lt; King (R)&#039;&#039;&#039; (These are normal playing cards plus the knight)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are three Bout cards. These are worth more points and are special: The 1 of Trump (The Petit), The 21 of Trump, and The Fool.&lt;br /&gt;
&lt;br /&gt;
DEALING THE CARDS: the cards must not be shuffled but cut by the player on the right of the card dealer. The cards must be given three by three to each player. While dealing, the card dealer must also set aside 6 (three-player version) or 3 cards (five-player version), which are collectively called the Dog (or here, the Kitty).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each card is worth a number of points. Hover over your cards to determine the number of points or look further down this page.&lt;br /&gt;
&lt;br /&gt;
=== Card points ===&lt;br /&gt;
• Bout: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• King: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• Queen: 3 points and a half&lt;br /&gt;
&lt;br /&gt;
• Knight: 2 points and a half&lt;br /&gt;
&lt;br /&gt;
• Jack: 1 point and a half&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• Any other card: half a point.&lt;br /&gt;
&lt;br /&gt;
=== Taker&#039;s goal ===&lt;br /&gt;
&lt;br /&gt;
This is the amount of points the TAKER needs to win, in order to win the hand.&lt;br /&gt;
&lt;br /&gt;
The points are assigned per card. If you win a trick, you get the points of the cards in the won trick.&lt;br /&gt;
&lt;br /&gt;
The TAKER is the person who made the most aggressive bet at the beginning of the hand (Pass, Guard, Guard without, Guard with)&lt;br /&gt;
&lt;br /&gt;
Bouts are special cards, that you &#039;&#039;&#039;do not want the TAKER to have.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
• 0 Bout : 56 points&lt;br /&gt;
&lt;br /&gt;
• 1 Bout : 51 points&lt;br /&gt;
&lt;br /&gt;
• 2 Bouts: 41 points&lt;br /&gt;
&lt;br /&gt;
• 3 Bouts: 36 points.&lt;br /&gt;
&lt;br /&gt;
The goal for the TAKER is determined by the number of Bouts they are able to win during the hand.&lt;br /&gt;
&lt;br /&gt;
=== Play ===&lt;br /&gt;
• One must follow suit&lt;br /&gt;
&lt;br /&gt;
• One must play a Trump if one cannot follow suit&lt;br /&gt;
&lt;br /&gt;
• If one must play a Trump, one must play an higher Trump than any Trump already played on the trick&lt;br /&gt;
&lt;br /&gt;
• One must play a lower Trump if unable to play an higher&lt;br /&gt;
&lt;br /&gt;
• If one cannot follow suit nor play a Trump, one can play any card&lt;br /&gt;
&lt;br /&gt;
• The Fool can be played anytime, except on the last trick, otherwise it switches sides (exception: Chelem).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;English Speaker to the rescue:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The purpose of the game is to play against the TAKER.&lt;br /&gt;
&lt;br /&gt;
The TAKER is the person who made the most aggressive bet at the start of the round.&lt;br /&gt;
&lt;br /&gt;
You do not want to let the TAKER get any of the three bouts. The more bouts the TAKER has, the less points they need to win the hand.&lt;br /&gt;
&lt;br /&gt;
If the TAKER achieves the correct amount of card points (total amount of points gained via tricks), then the taker wins the hand and everyone else loses points.&lt;br /&gt;
&lt;br /&gt;
If the TAKER does not achieve the needed amount of card points, then everyone else scores points based on the takers losses. (Added up at the end of each deal).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other Notes:&lt;br /&gt;
&lt;br /&gt;
The fool only goes to the winner, if they won the hand with trump.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Special Circumstance, but I&#039;m not sure how it activates:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
THREE PLAYERS&lt;br /&gt;
&lt;br /&gt;
The Dog/Kitty is made of 6 cards. (It is an additional hand?)&lt;br /&gt;
&lt;br /&gt;
FIVE PLAYERS&lt;br /&gt;
&lt;br /&gt;
The Dog/Kitty is made of 3 cards. &lt;br /&gt;
&lt;br /&gt;
After announcing a bid but before revealing the Dog/Kitty (if applicable), the taker can call on another player (verbally?) to help by calling out a King (eg. &amp;quot;King of Spades&amp;quot;). The player who has the called King must help the taker and does so secretly until the relevant King is played. The called player will share the spoils / the loss of the taker (1/3 for the player, 2/3 for the taker). &lt;br /&gt;
If the called King is in the Dog/Kitty, the taker plays alone.&lt;br /&gt;
&lt;br /&gt;
=== Bids ===&lt;br /&gt;
• Small: coefficient x 1&lt;br /&gt;
&lt;br /&gt;
• Guard: coefficient x 2&lt;br /&gt;
&lt;br /&gt;
• Guard without the Dog/Kitty: coefficient x 4&lt;br /&gt;
&lt;br /&gt;
• Guard against the Dog/Kitty: coefficient x 6&lt;br /&gt;
&lt;br /&gt;
For Small and Guard, the Dog/Kitty is revealed and the taker integrates it in his/her hand then discards an equal number of cards. Any card may be put in the Dog/Kitty but the taker must announce it if they put Kings in (some variants forbid it / it is frowned upon).&lt;br /&gt;
&lt;br /&gt;
=== Petit au bout ===&lt;br /&gt;
If the Petit is played on the last trick (One of trump suit ((stars)))), the team who wins that trick scores the Petit au bout bonus:&lt;br /&gt;
&lt;br /&gt;
• 10 points x coefficient of the bid.&lt;br /&gt;
&lt;br /&gt;
=== Poignées ===&lt;br /&gt;
• Simple Poignée, 13 Trumps with three players, 10 Trumps with four players, 8 Trumps with five players, 20 points&lt;br /&gt;
&lt;br /&gt;
• Double Poignée, 15 Trumps with three players, 13 Trumps with four players, 10 Trumps with five players, 30 points&lt;br /&gt;
&lt;br /&gt;
• Triple Poignée, 18 Trumps with three players, 15 Trumps with four players, 13 Trumps with five players, 40 points&lt;br /&gt;
&lt;br /&gt;
The Poignée bonus is won by the team who wins the hand (it is not multiplied by the bid coefficient).&lt;br /&gt;
&lt;br /&gt;
=== Slam ===&lt;br /&gt;
That is winning all tricks. Can be announced over the normal bid.&lt;br /&gt;
&lt;br /&gt;
• 400 points if announced and achieved (it not multiplied by the bid coefficient)&lt;br /&gt;
&lt;br /&gt;
• 200 points if silent and achieved&lt;br /&gt;
&lt;br /&gt;
• -200 points if announced but failed&lt;br /&gt;
&lt;br /&gt;
If the team acheving the Slam has the Fool in hand, it can be played on the last trick and it will win it. In this case, the Petit is considered au bout at the penultimate trick.&lt;br /&gt;
&lt;br /&gt;
=== Misères (variant) ===&lt;br /&gt;
• Misère of Trumps: no Trump nor the Fool, 10 points&lt;br /&gt;
&lt;br /&gt;
• Misère of Honours: no Figure nor Bout, 10 points&lt;br /&gt;
&lt;br /&gt;
The announced Misères are paid immediately to the declarer, whoever wins the hand next.&lt;br /&gt;
&lt;br /&gt;
=== Goulash (variant) ===&lt;br /&gt;
If everybody passes, it is free-for-all and the goal is to avoid taking points.&lt;br /&gt;
&lt;br /&gt;
At the hand of the hand, each player pays each opponent the points he took.&lt;br /&gt;
&lt;br /&gt;
The play is the same but there is no Petit au bout nor Slam and Poignées cannot be declared.&lt;br /&gt;
&lt;br /&gt;
The Fool remains the property of one who plays it. If it is played on the last tricks, it wins it.&lt;br /&gt;
&lt;br /&gt;
The Dog/Kitty is not revealed and is no one&#039;s property.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelptoc&amp;diff=4163</id>
		<title>Gamehelptoc</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelptoc&amp;diff=4163"/>
		<updated>2020-04-28T16:35:45Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: /* Note: in case one player quits the game */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Tock is a card-and-board game for 2 to 6 players. With 4 or 6 players, it is possible to create two or three teams of 2 players, sitting opposite of each other.&lt;br /&gt;
&lt;br /&gt;
The game concept is the same as Ludo, Sorry! or Mensch ärgere Dich nicht: Each player owns 4 pawns, has to bring them out of their start area into the game circle, and then race them into their home zone. &lt;br /&gt;
&lt;br /&gt;
The difference is that the players don&#039;t roll a die. Instead, standard playing cards (like those used in Bridge or Rummy) are dealt to the players, and they can choose to play one of their cards to move a pawn.&lt;br /&gt;
&lt;br /&gt;
== Object of the game ==&lt;br /&gt;
In single player games (no teams), the winner is the player who is first to get all 4 pawns into his home. &lt;br /&gt;
&lt;br /&gt;
In team games, the winner is the team that is first to get the pawns of both players into their corresponding homes. After the first player of a team has brought all of his pawns into his home, both players continue to play with the remaining color.&lt;br /&gt;
&lt;br /&gt;
== Setup of your game on Board Game Arena ==&lt;br /&gt;
&lt;br /&gt;
===Game Type===&lt;br /&gt;
You can choose between three game types.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Free-for-all&#039;&#039;&#039;: This is the single player game, everyone fights for him- or herself, no mercy, no friends, just run and eat every pawn that has the wrong color.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2 vs 2&#039;&#039;&#039;: When you get 4 players at your table, there will be two teams with two players. Assuming that players A1 and A2 belong to team A, and B1,B2 to team B, then the turn order will be A1, B1, A2, B2. With any other number of players, you will play Free-for-all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2 vs 2 vs 2&#039;&#039;&#039;: When you get 6 players at your table, there will be three teams with two players each. The turn order will be A1, B1, C1, A2, B2, C2. &lt;br /&gt;
&lt;br /&gt;
===Game Variants===&lt;br /&gt;
Because it can be frustrating when the game starts and you don&#039;t have any card to let you start, there is the &amp;quot;start configuration&amp;quot; variant that allow you to place your first pawn on your start field before the game starts (Fast Start).&lt;br /&gt;
&lt;br /&gt;
== Playing a hand of cards ==&lt;br /&gt;
&lt;br /&gt;
One of the players takes the role of the dealer and deals three to five cards to each player. The exact number of cards dealt depends on the number of players, and varies so that the 52 cards of the deck can be distributed evenly. For example, in a 2 player game, the first two hands contain 5 cards, followed by four hands of 4 cards. Don&#039;t worry, the game takes care of this automatically. After all cards of a hand are played, the role of the dealer moves to the next player. &lt;br /&gt;
&lt;br /&gt;
The player following the dealer gets the first turn. In each turn, a player plays one of his hand cards and moves one or more pawns. The played card determines which move is possible. Then the next player takes his turn. This continues until all hands are empty, then the role of the dealer moves the player following the previous dealer, new hands are dealt from the remaining deck and the next round begins. And yes, you&#039;re right, this means that the dealer misses a turn.&lt;br /&gt;
&lt;br /&gt;
When all cards of the deck have been dealt and played, they are shuffled as the new deck and the game continues.&lt;br /&gt;
&lt;br /&gt;
== Exchanging of cards ==&lt;br /&gt;
&lt;br /&gt;
In team games, after dealing, each player exchanges one card with his team partner. Both partners choose a card, then the cards are exchanged. It is important to choose a card that is most useful for the team partner.&lt;br /&gt;
&lt;br /&gt;
nb - In team games there can be no discussion between partners about what cards are held, or suggestions/requests about how or what to play.  In reply to a recent question for clarification, Woodruff (who introduced and designed the game here) wrote:-&lt;br /&gt;
&lt;br /&gt;
&amp;quot;You&#039;re right, talking is not allowed between teammates, that is an implicit rule, As for many games like this (Belote, Scopa, Tarot)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Start Field ==&lt;br /&gt;
&lt;br /&gt;
Each player has a start zone, where their pawns are placed at the beginning of the game. Near the start zone, a field in the game circle is marked in the player&#039;s color. This is the start field. When a pawn is brought into play (see Ace or King), it is placed on that start field. Pawns are protected on that start field. They cannot be eaten, they cannot be skipped, and they cannot be swapped by a Jack. Once a pawn leaves the start field, the protection ends, even if it returns to it!&lt;br /&gt;
&lt;br /&gt;
== Eating and Skipping ==&lt;br /&gt;
&lt;br /&gt;
When a pawn is moved so that it stops on a field that is occupied by another pawn, that pawn is eaten (or thrown). It is removed to its start zone. Outside of the home zones, it is possible to eat ANY pawn, even your own or those of your team partner. If your start field is coccupied by the pawn of another player, and you play a start card (Ace or King), that pawn is eaten, too. If you can&#039;t play any other card, you may even be forced to eat yourself. &lt;br /&gt;
&lt;br /&gt;
Normally, it&#039;s no problem to overtake other pawns, just count the field where they are standing as any empty field and hop along. There are three exceptions. (1) The Start Field (see above), (2) the Seven (see below), (3) the home zone. You cannot skip pawns in the home zone. So, if using a card requires a pawn to skip other pawns, but they can&#039;t be skipped, the card cannot be used for that pawn.&lt;br /&gt;
&lt;br /&gt;
== Entering the home zone ==&lt;br /&gt;
&lt;br /&gt;
When you want to enter your home zone, the played card must fit. You must use the complete movement that a card provides. If that movement goes too far, you cannot enter the home zone, but must continue on the circle.&lt;br /&gt;
&lt;br /&gt;
== To play or not to play - being blocked ==&lt;br /&gt;
&lt;br /&gt;
As long as you can play a card that lets you make a allowed move, you must play. If that&#039;s not possible, you must discard one card. There are three situations that can force you to discard: (1) All your pawns are in your start zone, and you have neither Ace nor King. (2) You queue up behind some obstinate pawn that won&#039;t leave it&#039;s Start Field. (3) Your predecessor played or discarded a Ten (see below).&lt;br /&gt;
&lt;br /&gt;
== Effects of cards ==&lt;br /&gt;
&lt;br /&gt;
Playing a card allows you to move pawns by one or more fields. You can move pawns along the ring of fields, and you can move pawns into their own home zone. Cards that are not mentioned simply move one pawn by the number of fields given by the value of the card.&lt;br /&gt;
&lt;br /&gt;
The color (or suit) of the cards has no meaning in Tock.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Ace&#039;&#039;&#039;&lt;br /&gt;
: Bring a new pawn from your start zone to the start field, or move one pawn that is already in the game forward by one field.&lt;br /&gt;
;&#039;&#039;&#039;4&#039;&#039;&#039;&lt;br /&gt;
:Move one of your pawns 4 fields backwards! It is not possible to move backwards into the home fields. And it&#039;s not possible to back out of your home zone to go on a quick hunt. Home is Home!&lt;br /&gt;
;&#039;&#039;&#039;7&#039;&#039;&#039;&lt;br /&gt;
:You can choose between two options.&lt;br /&gt;
:* 7 split: you get seven one-step moves. You can do them with one pawn, or distribute them between your pawns. But you must play them all, even if it hurts. Since the pawns do single steps, all other pawns on their way are eaten. There is one restriction: you cannot use a 7 to move your last pawn into your home and continue to play with the pawns of your team partner. You must complete your move before you can start helping your partner.&lt;br /&gt;
:* 1-7 no split: you get up to seven one-step moves. You must do then with one pawn, but you can forfeit some of them if you want.&lt;br /&gt;
;&#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
: You move one of your pawns forward by 10 fields. Additionally, this forbids the next player all movement, so they have to discard one of their cards. The &#039;&#039;Stop Moving&#039;&#039; function of the 10 is always active, even when a 10 is discarded! There&#039;s one exception: The effect of a 10 does not carry over to the next hand, so when you play a 10 and the next player has an empty hand, there is no forced discard.&lt;br /&gt;
:&#039;&#039;&#039;Pay attention!&#039;&#039;&#039; Normally, when you click on a card, you just select it for movement. But if your predecessor played a 10, the function of a click changes to &#039;&#039;Discard&#039;&#039;, and the clicked card is discarded at once. This is evil by design, not a bug! &lt;br /&gt;
;&#039;&#039;&#039;Jack&#039;&#039;&#039;&lt;br /&gt;
: Exchange one of your pawns with any other pawn that&#039;s on the ring of fields. Pawns that are standing on their start field cannot be exchanged! You are allowed to exchange two of your own pawns, which has no effect at all. But sometimes, that&#039;s just what one needs.&lt;br /&gt;
;&#039;&#039;&#039;Queen&#039;&#039;&#039;&lt;br /&gt;
: Move one of your pawns by 12 fields&lt;br /&gt;
;&#039;&#039;&#039;King&#039;&#039;&#039;&lt;br /&gt;
: You can move one of your pawns by 13 fields, or bring a new pawn from your start zone to the start field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note: in case one player quits the game ==&lt;br /&gt;
Automatic actions performed when it should be their turn:&lt;br /&gt;
*If that player would play or discard, a card from his hand is chosen randomly by the system to be discarded (no pawn will be move. &#039;&#039;&#039;Note:&#039;&#039;&#039; if a 10 is discarded that way, &#039;&#039;&#039;the next player would not be forced to discard&#039;&#039;&#039; because of that card no matter what.&lt;br /&gt;
&lt;br /&gt;
*If that player would choose a card to be exchange, it is once again picked randomly by the system.&lt;br /&gt;
&lt;br /&gt;
*If that player has left having started a move of decomposing 7, that move stops immediately and it is now the next player turn.&lt;br /&gt;
&lt;br /&gt;
*If that player would have to take any other action, nothing happens.&lt;br /&gt;
&lt;br /&gt;
In addition, if that player got a blocking pawn before leaving, that pawn is unlocked immediately if it is the player turn when they leave, or as soon as it would have been their turn to play again. That makes that pawn vulnerable from passing, eating and exchanging, the same as if it has moved.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelptoc&amp;diff=4162</id>
		<title>Gamehelptoc</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelptoc&amp;diff=4162"/>
		<updated>2020-04-28T16:34:44Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: /* Note: in case one player quits the game */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Tock is a card-and-board game for 2 to 6 players. With 4 or 6 players, it is possible to create two or three teams of 2 players, sitting opposite of each other.&lt;br /&gt;
&lt;br /&gt;
The game concept is the same as Ludo, Sorry! or Mensch ärgere Dich nicht: Each player owns 4 pawns, has to bring them out of their start area into the game circle, and then race them into their home zone. &lt;br /&gt;
&lt;br /&gt;
The difference is that the players don&#039;t roll a die. Instead, standard playing cards (like those used in Bridge or Rummy) are dealt to the players, and they can choose to play one of their cards to move a pawn.&lt;br /&gt;
&lt;br /&gt;
== Object of the game ==&lt;br /&gt;
In single player games (no teams), the winner is the player who is first to get all 4 pawns into his home. &lt;br /&gt;
&lt;br /&gt;
In team games, the winner is the team that is first to get the pawns of both players into their corresponding homes. After the first player of a team has brought all of his pawns into his home, both players continue to play with the remaining color.&lt;br /&gt;
&lt;br /&gt;
== Setup of your game on Board Game Arena ==&lt;br /&gt;
&lt;br /&gt;
===Game Type===&lt;br /&gt;
You can choose between three game types.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Free-for-all&#039;&#039;&#039;: This is the single player game, everyone fights for him- or herself, no mercy, no friends, just run and eat every pawn that has the wrong color.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2 vs 2&#039;&#039;&#039;: When you get 4 players at your table, there will be two teams with two players. Assuming that players A1 and A2 belong to team A, and B1,B2 to team B, then the turn order will be A1, B1, A2, B2. With any other number of players, you will play Free-for-all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2 vs 2 vs 2&#039;&#039;&#039;: When you get 6 players at your table, there will be three teams with two players each. The turn order will be A1, B1, C1, A2, B2, C2. &lt;br /&gt;
&lt;br /&gt;
===Game Variants===&lt;br /&gt;
Because it can be frustrating when the game starts and you don&#039;t have any card to let you start, there is the &amp;quot;start configuration&amp;quot; variant that allow you to place your first pawn on your start field before the game starts (Fast Start).&lt;br /&gt;
&lt;br /&gt;
== Playing a hand of cards ==&lt;br /&gt;
&lt;br /&gt;
One of the players takes the role of the dealer and deals three to five cards to each player. The exact number of cards dealt depends on the number of players, and varies so that the 52 cards of the deck can be distributed evenly. For example, in a 2 player game, the first two hands contain 5 cards, followed by four hands of 4 cards. Don&#039;t worry, the game takes care of this automatically. After all cards of a hand are played, the role of the dealer moves to the next player. &lt;br /&gt;
&lt;br /&gt;
The player following the dealer gets the first turn. In each turn, a player plays one of his hand cards and moves one or more pawns. The played card determines which move is possible. Then the next player takes his turn. This continues until all hands are empty, then the role of the dealer moves the player following the previous dealer, new hands are dealt from the remaining deck and the next round begins. And yes, you&#039;re right, this means that the dealer misses a turn.&lt;br /&gt;
&lt;br /&gt;
When all cards of the deck have been dealt and played, they are shuffled as the new deck and the game continues.&lt;br /&gt;
&lt;br /&gt;
== Exchanging of cards ==&lt;br /&gt;
&lt;br /&gt;
In team games, after dealing, each player exchanges one card with his team partner. Both partners choose a card, then the cards are exchanged. It is important to choose a card that is most useful for the team partner.&lt;br /&gt;
&lt;br /&gt;
nb - In team games there can be no discussion between partners about what cards are held, or suggestions/requests about how or what to play.  In reply to a recent question for clarification, Woodruff (who introduced and designed the game here) wrote:-&lt;br /&gt;
&lt;br /&gt;
&amp;quot;You&#039;re right, talking is not allowed between teammates, that is an implicit rule, As for many games like this (Belote, Scopa, Tarot)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Start Field ==&lt;br /&gt;
&lt;br /&gt;
Each player has a start zone, where their pawns are placed at the beginning of the game. Near the start zone, a field in the game circle is marked in the player&#039;s color. This is the start field. When a pawn is brought into play (see Ace or King), it is placed on that start field. Pawns are protected on that start field. They cannot be eaten, they cannot be skipped, and they cannot be swapped by a Jack. Once a pawn leaves the start field, the protection ends, even if it returns to it!&lt;br /&gt;
&lt;br /&gt;
== Eating and Skipping ==&lt;br /&gt;
&lt;br /&gt;
When a pawn is moved so that it stops on a field that is occupied by another pawn, that pawn is eaten (or thrown). It is removed to its start zone. Outside of the home zones, it is possible to eat ANY pawn, even your own or those of your team partner. If your start field is coccupied by the pawn of another player, and you play a start card (Ace or King), that pawn is eaten, too. If you can&#039;t play any other card, you may even be forced to eat yourself. &lt;br /&gt;
&lt;br /&gt;
Normally, it&#039;s no problem to overtake other pawns, just count the field where they are standing as any empty field and hop along. There are three exceptions. (1) The Start Field (see above), (2) the Seven (see below), (3) the home zone. You cannot skip pawns in the home zone. So, if using a card requires a pawn to skip other pawns, but they can&#039;t be skipped, the card cannot be used for that pawn.&lt;br /&gt;
&lt;br /&gt;
== Entering the home zone ==&lt;br /&gt;
&lt;br /&gt;
When you want to enter your home zone, the played card must fit. You must use the complete movement that a card provides. If that movement goes too far, you cannot enter the home zone, but must continue on the circle.&lt;br /&gt;
&lt;br /&gt;
== To play or not to play - being blocked ==&lt;br /&gt;
&lt;br /&gt;
As long as you can play a card that lets you make a allowed move, you must play. If that&#039;s not possible, you must discard one card. There are three situations that can force you to discard: (1) All your pawns are in your start zone, and you have neither Ace nor King. (2) You queue up behind some obstinate pawn that won&#039;t leave it&#039;s Start Field. (3) Your predecessor played or discarded a Ten (see below).&lt;br /&gt;
&lt;br /&gt;
== Effects of cards ==&lt;br /&gt;
&lt;br /&gt;
Playing a card allows you to move pawns by one or more fields. You can move pawns along the ring of fields, and you can move pawns into their own home zone. Cards that are not mentioned simply move one pawn by the number of fields given by the value of the card.&lt;br /&gt;
&lt;br /&gt;
The color (or suit) of the cards has no meaning in Tock.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Ace&#039;&#039;&#039;&lt;br /&gt;
: Bring a new pawn from your start zone to the start field, or move one pawn that is already in the game forward by one field.&lt;br /&gt;
;&#039;&#039;&#039;4&#039;&#039;&#039;&lt;br /&gt;
:Move one of your pawns 4 fields backwards! It is not possible to move backwards into the home fields. And it&#039;s not possible to back out of your home zone to go on a quick hunt. Home is Home!&lt;br /&gt;
;&#039;&#039;&#039;7&#039;&#039;&#039;&lt;br /&gt;
:You can choose between two options.&lt;br /&gt;
:* 7 split: you get seven one-step moves. You can do them with one pawn, or distribute them between your pawns. But you must play them all, even if it hurts. Since the pawns do single steps, all other pawns on their way are eaten. There is one restriction: you cannot use a 7 to move your last pawn into your home and continue to play with the pawns of your team partner. You must complete your move before you can start helping your partner.&lt;br /&gt;
:* 1-7 no split: you get up to seven one-step moves. You must do then with one pawn, but you can forfeit some of them if you want.&lt;br /&gt;
;&#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
: You move one of your pawns forward by 10 fields. Additionally, this forbids the next player all movement, so they have to discard one of their cards. The &#039;&#039;Stop Moving&#039;&#039; function of the 10 is always active, even when a 10 is discarded! There&#039;s one exception: The effect of a 10 does not carry over to the next hand, so when you play a 10 and the next player has an empty hand, there is no forced discard.&lt;br /&gt;
:&#039;&#039;&#039;Pay attention!&#039;&#039;&#039; Normally, when you click on a card, you just select it for movement. But if your predecessor played a 10, the function of a click changes to &#039;&#039;Discard&#039;&#039;, and the clicked card is discarded at once. This is evil by design, not a bug! &lt;br /&gt;
;&#039;&#039;&#039;Jack&#039;&#039;&#039;&lt;br /&gt;
: Exchange one of your pawns with any other pawn that&#039;s on the ring of fields. Pawns that are standing on their start field cannot be exchanged! You are allowed to exchange two of your own pawns, which has no effect at all. But sometimes, that&#039;s just what one needs.&lt;br /&gt;
;&#039;&#039;&#039;Queen&#039;&#039;&#039;&lt;br /&gt;
: Move one of your pawns by 12 fields&lt;br /&gt;
;&#039;&#039;&#039;King&#039;&#039;&#039;&lt;br /&gt;
: You can move one of your pawns by 13 fields, or bring a new pawn from your start zone to the start field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note: in case one player quits the game ==&lt;br /&gt;
Automatic actions performed when it should be their turn:&lt;br /&gt;
*If that player would play or discard, a card from his hand is chosen randomly by the system to be discarded (no pawn will be move. &#039;&#039;&#039;Note:&#039;&#039;&#039; if a 10 is discarded that way, &#039;&#039;&#039;the next player would not be forced to discard&#039;&#039;&#039; because of that card no matter what.&lt;br /&gt;
&lt;br /&gt;
*If that player would choose a card to be exchange, it is once again picked randomly by the system.&lt;br /&gt;
&lt;br /&gt;
*If that player has left having started a move of decomposing 7, that move stops immediately and it is now the next player turn.&lt;br /&gt;
&lt;br /&gt;
*If that player would have to take any other action, nothing happens.&lt;br /&gt;
&lt;br /&gt;
In addition, if that player got a blocking pawn before leaving, that pawn is unlocked immediately if it is the player turn when they leave, or as soon as it would have been their turn to play again.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelptoc&amp;diff=4116</id>
		<title>Gamehelptoc</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelptoc&amp;diff=4116"/>
		<updated>2020-04-25T16:01:40Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: /* Note: in case quits the game */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Tock is a card-and-board game for 2 to 6 players. With 4 or 6 players, it is possible to create two or three teams of 2 players, sitting opposite of each other.&lt;br /&gt;
&lt;br /&gt;
The game concept is the same as Ludo, Sorry! or Mensch ärgere Dich nicht: Each player owns 4 pawns, has to bring them out of their start area into the game circle, and then race them into their home zone. &lt;br /&gt;
&lt;br /&gt;
The difference is that the players don&#039;t roll a die. Instead, standard playing cards (like those used in Bridge or Rummy) are dealt to the players, and they can choose to play one of their cards to move a pawn.&lt;br /&gt;
&lt;br /&gt;
== Object of the game ==&lt;br /&gt;
In single player games (no teams), the winner is the player who is first to get all 4 pawns into his home. &lt;br /&gt;
&lt;br /&gt;
In team games, the winner is the team that is first to get the pawns of both players into their corresponding homes. After the first player of a team has brought all of his pawns into his home, both players continue to play with the remaining color.&lt;br /&gt;
&lt;br /&gt;
== Setup of your game on Board Game Arena ==&lt;br /&gt;
&lt;br /&gt;
===Game Type===&lt;br /&gt;
You can choose between three game types.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Free-for-all&#039;&#039;&#039;: This is the single player game, everyone fights for him- or herself, no mercy, no friends, just run and eat every pawn that has the wrong color.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2 vs 2&#039;&#039;&#039;: When you get 4 players at your table, there will be two teams with two players. Assuming that players A1 and A2 belong to team A, and B1,B2 to team B, then the turn order will be A1, B1, A2, B2. With any other number of players, you will play Free-for-all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2 vs 2 vs 2&#039;&#039;&#039;: When you get 6 players at your table, there will be three teams with two players each. The turn order will be A1, B1, C1, A2, B2, C2. &lt;br /&gt;
&lt;br /&gt;
===Game Variants===&lt;br /&gt;
Because it can be frustrating when the game starts and you don&#039;t have any card to let you start, there is the &amp;quot;start configuration&amp;quot; variant that allow you to place your first pawn on your start field before the game starts (Fast Start).&lt;br /&gt;
&lt;br /&gt;
== Playing a hand of cards ==&lt;br /&gt;
&lt;br /&gt;
One of the players takes the role of the dealer and deals three to five cards to each player. The exact number of cards dealt depends on the number of players, and varies so that the 52 cards of the deck can be distributed evenly. For example, in a 2 player game, the first two hands contain 5 cards, followed by four hands of 4 cards. Don&#039;t worry, the game takes care of this automatically. After all cards of a hand are played, the role of the dealer moves to the next player. &lt;br /&gt;
&lt;br /&gt;
The player following the dealer gets the first turn. In each turn, a player plays one of his hand cards and moves one or more pawns. The played card determines which move is possible. Then the next player takes his turn. This continues until all hands are empty, then the role of the dealer moves the player following the previous dealer, new hands are dealt from the remaining deck and the next round begins. And yes, you&#039;re right, this means that the dealer misses a turn.&lt;br /&gt;
&lt;br /&gt;
When all cards of the deck have been dealt and played, they are shuffled as the new deck and the game continues.&lt;br /&gt;
&lt;br /&gt;
== Exchanging of cards ==&lt;br /&gt;
&lt;br /&gt;
In team games, after dealing, each player exchanges one card with his team partner. Both partners choose a card, then the cards are exchanged. It is important to choose a card that is most useful for the team partner.&lt;br /&gt;
&lt;br /&gt;
nb - In team games there can be no discussion between partners about what cards are held, or suggestions/requests about how or what to play.  In reply to a recent question for clarification, Woodruff (who introduced and designed the game here) wrote:-&lt;br /&gt;
&lt;br /&gt;
&amp;quot;You&#039;re right, talking is not allowed between teammates, that is an implicit rule, As for many games like this (Belote, Scopa, Tarot)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Start Field ==&lt;br /&gt;
&lt;br /&gt;
Each player has a start zone, where their pawns are placed at the beginning of the game. Near the start zone, a field in the game circle is marked in the player&#039;s color. This is the start field. When a pawn is brought into play (see Ace or King), it is placed on that start field. Pawns are protected on that start field. They cannot be eaten, they cannot be skipped, and they cannot be swapped by a Jack. Once a pawn leaves the start field, the protection ends, even if it returns to it!&lt;br /&gt;
&lt;br /&gt;
== Eating and Skipping ==&lt;br /&gt;
&lt;br /&gt;
When a pawn is moved so that it stops on a field that is occupied by another pawn, that pawn is eaten (or thrown). It is removed to its start zone. Outside of the home zones, it is possible to eat ANY pawn, even your own or those of your team partner. If your start field is coccupied by the pawn of another player, and you play a start card (Ace or King), that pawn is eaten, too. If you can&#039;t play any other card, you may even be forced to eat yourself. &lt;br /&gt;
&lt;br /&gt;
Normally, it&#039;s no problem to overtake other pawns, just count the field where they are standing as any empty field and hop along. There are three exceptions. (1) The Start Field (see above), (2) the Seven (see below), (3) the home zone. You cannot skip pawns in the home zone. So, if using a card requires a pawn to skip other pawns, but they can&#039;t be skipped, the card cannot be used for that pawn.&lt;br /&gt;
&lt;br /&gt;
== Entering the home zone ==&lt;br /&gt;
&lt;br /&gt;
When you want to enter your home zone, the played card must fit. You must use the complete movement that a card provides. If that movement goes too far, you cannot enter the home zone, but must continue on the circle.&lt;br /&gt;
&lt;br /&gt;
== To play or not to play - being blocked ==&lt;br /&gt;
&lt;br /&gt;
As long as you can play a card that lets you make a allowed move, you must play. If that&#039;s not possible, you must discard one card. There are three situations that can force you to discard: (1) All your pawns are in your start zone, and you have neither Ace nor King. (2) You queue up behind some obstinate pawn that won&#039;t leave it&#039;s Start Field. (3) Your predecessor played or discarded a Ten (see below).&lt;br /&gt;
&lt;br /&gt;
== Effects of cards ==&lt;br /&gt;
&lt;br /&gt;
Playing a card allows you to move pawns by one or more fields. You can move pawns along the ring of fields, and you can move pawns into their own home zone. Cards that are not mentioned simply move one pawn by the number of fields given by the value of the card.&lt;br /&gt;
&lt;br /&gt;
The color (or suit) of the cards has no meaning in Tock.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Ace&#039;&#039;&#039;&lt;br /&gt;
: Bring a new pawn from your start zone to the start field, or move one pawn that is already in the game forward by one field.&lt;br /&gt;
;&#039;&#039;&#039;4&#039;&#039;&#039;&lt;br /&gt;
:Move one of your pawns 4 fields backwards! It is not possible to move backwards into the home fields. And it&#039;s not possible to back out of your home zone to go on a quick hunt. Home is Home!&lt;br /&gt;
;&#039;&#039;&#039;7&#039;&#039;&#039;&lt;br /&gt;
:You can choose between two options.&lt;br /&gt;
:* 7 split: you get seven one-step moves. You can do them with one pawn, or distribute them between your pawns. But you must play them all, even if it hurts. Since the pawns do single steps, all other pawns on their way are eaten. There is one restriction: you cannot use a 7 to move your last pawn into your home and continue to play with the pawns of your team partner. You must complete your move before you can start helping your partner.&lt;br /&gt;
:* 1-7 no split: you get up to seven one-step moves. You must do then with one pawn, but you can forfeit some of them if you want.&lt;br /&gt;
;&#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
: You move one of your pawns forward by 10 fields. Additionally, this forbids the next player all movement, so they have to discard one of their cards. The &#039;&#039;Stop Moving&#039;&#039; function of the 10 is always active, even when a 10 is discarded! There&#039;s one exception: The effect of a 10 does not carry over to the next hand, so when you play a 10 and the next player has an empty hand, there is no forced discard.&lt;br /&gt;
:&#039;&#039;&#039;Pay attention!&#039;&#039;&#039; Normally, when you click on a card, you just select it for movement. But if your predecessor played a 10, the function of a click changes to &#039;&#039;Discard&#039;&#039;, and the clicked card is discarded at once. This is evil by design, not a bug! &lt;br /&gt;
;&#039;&#039;&#039;Jack&#039;&#039;&#039;&lt;br /&gt;
: Exchange one of your pawns with any other pawn that&#039;s on the ring of fields. Pawns that are standing on their start field cannot be exchanged! You are allowed to exchange two of your own pawns, which has no effect at all. But sometimes, that&#039;s just what one needs.&lt;br /&gt;
;&#039;&#039;&#039;Queen&#039;&#039;&#039;&lt;br /&gt;
: Move one of your pawns by 12 fields&lt;br /&gt;
;&#039;&#039;&#039;King&#039;&#039;&#039;&lt;br /&gt;
: You can move one of your pawns by 13 fields, or bring a new pawn from your start zone to the start field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note: in case one player quits the game ==&lt;br /&gt;
Automatic actions performed when it should be their turn:&lt;br /&gt;
*If that player would play or discard, a card from his hand is chosen randomly by the system to be discarded (no pawn will be move. &#039;&#039;&#039;Note:&#039;&#039;&#039; if a 10 is discarded that way, &#039;&#039;&#039;the next player would not be forced to discard&#039;&#039;&#039; because of that card no matter what.&lt;br /&gt;
&lt;br /&gt;
*If that player would choose a card to be exchange, it is once again picked randomly by the system.&lt;br /&gt;
&lt;br /&gt;
*If that player has left having started a move of decomposing 7, that move stops immediately and it is now the next player turn.&lt;br /&gt;
&lt;br /&gt;
*If that player would have to take any other action, nothing happens.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelptoc&amp;diff=4115</id>
		<title>Gamehelptoc</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelptoc&amp;diff=4115"/>
		<updated>2020-04-25T16:00:52Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: /* Note: in case of one player forfeit during the game */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Tock is a card-and-board game for 2 to 6 players. With 4 or 6 players, it is possible to create two or three teams of 2 players, sitting opposite of each other.&lt;br /&gt;
&lt;br /&gt;
The game concept is the same as Ludo, Sorry! or Mensch ärgere Dich nicht: Each player owns 4 pawns, has to bring them out of their start area into the game circle, and then race them into their home zone. &lt;br /&gt;
&lt;br /&gt;
The difference is that the players don&#039;t roll a die. Instead, standard playing cards (like those used in Bridge or Rummy) are dealt to the players, and they can choose to play one of their cards to move a pawn.&lt;br /&gt;
&lt;br /&gt;
== Object of the game ==&lt;br /&gt;
In single player games (no teams), the winner is the player who is first to get all 4 pawns into his home. &lt;br /&gt;
&lt;br /&gt;
In team games, the winner is the team that is first to get the pawns of both players into their corresponding homes. After the first player of a team has brought all of his pawns into his home, both players continue to play with the remaining color.&lt;br /&gt;
&lt;br /&gt;
== Setup of your game on Board Game Arena ==&lt;br /&gt;
&lt;br /&gt;
===Game Type===&lt;br /&gt;
You can choose between three game types.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Free-for-all&#039;&#039;&#039;: This is the single player game, everyone fights for him- or herself, no mercy, no friends, just run and eat every pawn that has the wrong color.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2 vs 2&#039;&#039;&#039;: When you get 4 players at your table, there will be two teams with two players. Assuming that players A1 and A2 belong to team A, and B1,B2 to team B, then the turn order will be A1, B1, A2, B2. With any other number of players, you will play Free-for-all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2 vs 2 vs 2&#039;&#039;&#039;: When you get 6 players at your table, there will be three teams with two players each. The turn order will be A1, B1, C1, A2, B2, C2. &lt;br /&gt;
&lt;br /&gt;
===Game Variants===&lt;br /&gt;
Because it can be frustrating when the game starts and you don&#039;t have any card to let you start, there is the &amp;quot;start configuration&amp;quot; variant that allow you to place your first pawn on your start field before the game starts (Fast Start).&lt;br /&gt;
&lt;br /&gt;
== Playing a hand of cards ==&lt;br /&gt;
&lt;br /&gt;
One of the players takes the role of the dealer and deals three to five cards to each player. The exact number of cards dealt depends on the number of players, and varies so that the 52 cards of the deck can be distributed evenly. For example, in a 2 player game, the first two hands contain 5 cards, followed by four hands of 4 cards. Don&#039;t worry, the game takes care of this automatically. After all cards of a hand are played, the role of the dealer moves to the next player. &lt;br /&gt;
&lt;br /&gt;
The player following the dealer gets the first turn. In each turn, a player plays one of his hand cards and moves one or more pawns. The played card determines which move is possible. Then the next player takes his turn. This continues until all hands are empty, then the role of the dealer moves the player following the previous dealer, new hands are dealt from the remaining deck and the next round begins. And yes, you&#039;re right, this means that the dealer misses a turn.&lt;br /&gt;
&lt;br /&gt;
When all cards of the deck have been dealt and played, they are shuffled as the new deck and the game continues.&lt;br /&gt;
&lt;br /&gt;
== Exchanging of cards ==&lt;br /&gt;
&lt;br /&gt;
In team games, after dealing, each player exchanges one card with his team partner. Both partners choose a card, then the cards are exchanged. It is important to choose a card that is most useful for the team partner.&lt;br /&gt;
&lt;br /&gt;
nb - In team games there can be no discussion between partners about what cards are held, or suggestions/requests about how or what to play.  In reply to a recent question for clarification, Woodruff (who introduced and designed the game here) wrote:-&lt;br /&gt;
&lt;br /&gt;
&amp;quot;You&#039;re right, talking is not allowed between teammates, that is an implicit rule, As for many games like this (Belote, Scopa, Tarot)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Start Field ==&lt;br /&gt;
&lt;br /&gt;
Each player has a start zone, where their pawns are placed at the beginning of the game. Near the start zone, a field in the game circle is marked in the player&#039;s color. This is the start field. When a pawn is brought into play (see Ace or King), it is placed on that start field. Pawns are protected on that start field. They cannot be eaten, they cannot be skipped, and they cannot be swapped by a Jack. Once a pawn leaves the start field, the protection ends, even if it returns to it!&lt;br /&gt;
&lt;br /&gt;
== Eating and Skipping ==&lt;br /&gt;
&lt;br /&gt;
When a pawn is moved so that it stops on a field that is occupied by another pawn, that pawn is eaten (or thrown). It is removed to its start zone. Outside of the home zones, it is possible to eat ANY pawn, even your own or those of your team partner. If your start field is coccupied by the pawn of another player, and you play a start card (Ace or King), that pawn is eaten, too. If you can&#039;t play any other card, you may even be forced to eat yourself. &lt;br /&gt;
&lt;br /&gt;
Normally, it&#039;s no problem to overtake other pawns, just count the field where they are standing as any empty field and hop along. There are three exceptions. (1) The Start Field (see above), (2) the Seven (see below), (3) the home zone. You cannot skip pawns in the home zone. So, if using a card requires a pawn to skip other pawns, but they can&#039;t be skipped, the card cannot be used for that pawn.&lt;br /&gt;
&lt;br /&gt;
== Entering the home zone ==&lt;br /&gt;
&lt;br /&gt;
When you want to enter your home zone, the played card must fit. You must use the complete movement that a card provides. If that movement goes too far, you cannot enter the home zone, but must continue on the circle.&lt;br /&gt;
&lt;br /&gt;
== To play or not to play - being blocked ==&lt;br /&gt;
&lt;br /&gt;
As long as you can play a card that lets you make a allowed move, you must play. If that&#039;s not possible, you must discard one card. There are three situations that can force you to discard: (1) All your pawns are in your start zone, and you have neither Ace nor King. (2) You queue up behind some obstinate pawn that won&#039;t leave it&#039;s Start Field. (3) Your predecessor played or discarded a Ten (see below).&lt;br /&gt;
&lt;br /&gt;
== Effects of cards ==&lt;br /&gt;
&lt;br /&gt;
Playing a card allows you to move pawns by one or more fields. You can move pawns along the ring of fields, and you can move pawns into their own home zone. Cards that are not mentioned simply move one pawn by the number of fields given by the value of the card.&lt;br /&gt;
&lt;br /&gt;
The color (or suit) of the cards has no meaning in Tock.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Ace&#039;&#039;&#039;&lt;br /&gt;
: Bring a new pawn from your start zone to the start field, or move one pawn that is already in the game forward by one field.&lt;br /&gt;
;&#039;&#039;&#039;4&#039;&#039;&#039;&lt;br /&gt;
:Move one of your pawns 4 fields backwards! It is not possible to move backwards into the home fields. And it&#039;s not possible to back out of your home zone to go on a quick hunt. Home is Home!&lt;br /&gt;
;&#039;&#039;&#039;7&#039;&#039;&#039;&lt;br /&gt;
:You can choose between two options.&lt;br /&gt;
:* 7 split: you get seven one-step moves. You can do them with one pawn, or distribute them between your pawns. But you must play them all, even if it hurts. Since the pawns do single steps, all other pawns on their way are eaten. There is one restriction: you cannot use a 7 to move your last pawn into your home and continue to play with the pawns of your team partner. You must complete your move before you can start helping your partner.&lt;br /&gt;
:* 1-7 no split: you get up to seven one-step moves. You must do then with one pawn, but you can forfeit some of them if you want.&lt;br /&gt;
;&#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
: You move one of your pawns forward by 10 fields. Additionally, this forbids the next player all movement, so they have to discard one of their cards. The &#039;&#039;Stop Moving&#039;&#039; function of the 10 is always active, even when a 10 is discarded! There&#039;s one exception: The effect of a 10 does not carry over to the next hand, so when you play a 10 and the next player has an empty hand, there is no forced discard.&lt;br /&gt;
:&#039;&#039;&#039;Pay attention!&#039;&#039;&#039; Normally, when you click on a card, you just select it for movement. But if your predecessor played a 10, the function of a click changes to &#039;&#039;Discard&#039;&#039;, and the clicked card is discarded at once. This is evil by design, not a bug! &lt;br /&gt;
;&#039;&#039;&#039;Jack&#039;&#039;&#039;&lt;br /&gt;
: Exchange one of your pawns with any other pawn that&#039;s on the ring of fields. Pawns that are standing on their start field cannot be exchanged! You are allowed to exchange two of your own pawns, which has no effect at all. But sometimes, that&#039;s just what one needs.&lt;br /&gt;
;&#039;&#039;&#039;Queen&#039;&#039;&#039;&lt;br /&gt;
: Move one of your pawns by 12 fields&lt;br /&gt;
;&#039;&#039;&#039;King&#039;&#039;&#039;&lt;br /&gt;
: You can move one of your pawns by 13 fields, or bring a new pawn from your start zone to the start field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note: in case quits the game ==&lt;br /&gt;
*If that player would play or discard, a card from his hand is chosen randomly by the system to be discarded (no pawn will be move. &#039;&#039;&#039;Note:&#039;&#039;&#039; if a 10 is discarded that way, &#039;&#039;&#039;the next player would not be forced to discard&#039;&#039;&#039; because of that card no matter what.&lt;br /&gt;
&lt;br /&gt;
*If that player would choose a card to be exchange, it is once again picked randomly by the system.&lt;br /&gt;
&lt;br /&gt;
*If that player has left having started a move of decomposing 7, that move stops immediately and it is now the next player turn.&lt;br /&gt;
&lt;br /&gt;
*If that player would have to take any other action, nothing happens.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelptoc&amp;diff=4114</id>
		<title>Gamehelptoc</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelptoc&amp;diff=4114"/>
		<updated>2020-04-25T16:00:11Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Tock is a card-and-board game for 2 to 6 players. With 4 or 6 players, it is possible to create two or three teams of 2 players, sitting opposite of each other.&lt;br /&gt;
&lt;br /&gt;
The game concept is the same as Ludo, Sorry! or Mensch ärgere Dich nicht: Each player owns 4 pawns, has to bring them out of their start area into the game circle, and then race them into their home zone. &lt;br /&gt;
&lt;br /&gt;
The difference is that the players don&#039;t roll a die. Instead, standard playing cards (like those used in Bridge or Rummy) are dealt to the players, and they can choose to play one of their cards to move a pawn.&lt;br /&gt;
&lt;br /&gt;
== Object of the game ==&lt;br /&gt;
In single player games (no teams), the winner is the player who is first to get all 4 pawns into his home. &lt;br /&gt;
&lt;br /&gt;
In team games, the winner is the team that is first to get the pawns of both players into their corresponding homes. After the first player of a team has brought all of his pawns into his home, both players continue to play with the remaining color.&lt;br /&gt;
&lt;br /&gt;
== Setup of your game on Board Game Arena ==&lt;br /&gt;
&lt;br /&gt;
===Game Type===&lt;br /&gt;
You can choose between three game types.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Free-for-all&#039;&#039;&#039;: This is the single player game, everyone fights for him- or herself, no mercy, no friends, just run and eat every pawn that has the wrong color.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2 vs 2&#039;&#039;&#039;: When you get 4 players at your table, there will be two teams with two players. Assuming that players A1 and A2 belong to team A, and B1,B2 to team B, then the turn order will be A1, B1, A2, B2. With any other number of players, you will play Free-for-all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2 vs 2 vs 2&#039;&#039;&#039;: When you get 6 players at your table, there will be three teams with two players each. The turn order will be A1, B1, C1, A2, B2, C2. &lt;br /&gt;
&lt;br /&gt;
===Game Variants===&lt;br /&gt;
Because it can be frustrating when the game starts and you don&#039;t have any card to let you start, there is the &amp;quot;start configuration&amp;quot; variant that allow you to place your first pawn on your start field before the game starts (Fast Start).&lt;br /&gt;
&lt;br /&gt;
== Playing a hand of cards ==&lt;br /&gt;
&lt;br /&gt;
One of the players takes the role of the dealer and deals three to five cards to each player. The exact number of cards dealt depends on the number of players, and varies so that the 52 cards of the deck can be distributed evenly. For example, in a 2 player game, the first two hands contain 5 cards, followed by four hands of 4 cards. Don&#039;t worry, the game takes care of this automatically. After all cards of a hand are played, the role of the dealer moves to the next player. &lt;br /&gt;
&lt;br /&gt;
The player following the dealer gets the first turn. In each turn, a player plays one of his hand cards and moves one or more pawns. The played card determines which move is possible. Then the next player takes his turn. This continues until all hands are empty, then the role of the dealer moves the player following the previous dealer, new hands are dealt from the remaining deck and the next round begins. And yes, you&#039;re right, this means that the dealer misses a turn.&lt;br /&gt;
&lt;br /&gt;
When all cards of the deck have been dealt and played, they are shuffled as the new deck and the game continues.&lt;br /&gt;
&lt;br /&gt;
== Exchanging of cards ==&lt;br /&gt;
&lt;br /&gt;
In team games, after dealing, each player exchanges one card with his team partner. Both partners choose a card, then the cards are exchanged. It is important to choose a card that is most useful for the team partner.&lt;br /&gt;
&lt;br /&gt;
nb - In team games there can be no discussion between partners about what cards are held, or suggestions/requests about how or what to play.  In reply to a recent question for clarification, Woodruff (who introduced and designed the game here) wrote:-&lt;br /&gt;
&lt;br /&gt;
&amp;quot;You&#039;re right, talking is not allowed between teammates, that is an implicit rule, As for many games like this (Belote, Scopa, Tarot)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Start Field ==&lt;br /&gt;
&lt;br /&gt;
Each player has a start zone, where their pawns are placed at the beginning of the game. Near the start zone, a field in the game circle is marked in the player&#039;s color. This is the start field. When a pawn is brought into play (see Ace or King), it is placed on that start field. Pawns are protected on that start field. They cannot be eaten, they cannot be skipped, and they cannot be swapped by a Jack. Once a pawn leaves the start field, the protection ends, even if it returns to it!&lt;br /&gt;
&lt;br /&gt;
== Eating and Skipping ==&lt;br /&gt;
&lt;br /&gt;
When a pawn is moved so that it stops on a field that is occupied by another pawn, that pawn is eaten (or thrown). It is removed to its start zone. Outside of the home zones, it is possible to eat ANY pawn, even your own or those of your team partner. If your start field is coccupied by the pawn of another player, and you play a start card (Ace or King), that pawn is eaten, too. If you can&#039;t play any other card, you may even be forced to eat yourself. &lt;br /&gt;
&lt;br /&gt;
Normally, it&#039;s no problem to overtake other pawns, just count the field where they are standing as any empty field and hop along. There are three exceptions. (1) The Start Field (see above), (2) the Seven (see below), (3) the home zone. You cannot skip pawns in the home zone. So, if using a card requires a pawn to skip other pawns, but they can&#039;t be skipped, the card cannot be used for that pawn.&lt;br /&gt;
&lt;br /&gt;
== Entering the home zone ==&lt;br /&gt;
&lt;br /&gt;
When you want to enter your home zone, the played card must fit. You must use the complete movement that a card provides. If that movement goes too far, you cannot enter the home zone, but must continue on the circle.&lt;br /&gt;
&lt;br /&gt;
== To play or not to play - being blocked ==&lt;br /&gt;
&lt;br /&gt;
As long as you can play a card that lets you make a allowed move, you must play. If that&#039;s not possible, you must discard one card. There are three situations that can force you to discard: (1) All your pawns are in your start zone, and you have neither Ace nor King. (2) You queue up behind some obstinate pawn that won&#039;t leave it&#039;s Start Field. (3) Your predecessor played or discarded a Ten (see below).&lt;br /&gt;
&lt;br /&gt;
== Effects of cards ==&lt;br /&gt;
&lt;br /&gt;
Playing a card allows you to move pawns by one or more fields. You can move pawns along the ring of fields, and you can move pawns into their own home zone. Cards that are not mentioned simply move one pawn by the number of fields given by the value of the card.&lt;br /&gt;
&lt;br /&gt;
The color (or suit) of the cards has no meaning in Tock.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Ace&#039;&#039;&#039;&lt;br /&gt;
: Bring a new pawn from your start zone to the start field, or move one pawn that is already in the game forward by one field.&lt;br /&gt;
;&#039;&#039;&#039;4&#039;&#039;&#039;&lt;br /&gt;
:Move one of your pawns 4 fields backwards! It is not possible to move backwards into the home fields. And it&#039;s not possible to back out of your home zone to go on a quick hunt. Home is Home!&lt;br /&gt;
;&#039;&#039;&#039;7&#039;&#039;&#039;&lt;br /&gt;
:You can choose between two options.&lt;br /&gt;
:* 7 split: you get seven one-step moves. You can do them with one pawn, or distribute them between your pawns. But you must play them all, even if it hurts. Since the pawns do single steps, all other pawns on their way are eaten. There is one restriction: you cannot use a 7 to move your last pawn into your home and continue to play with the pawns of your team partner. You must complete your move before you can start helping your partner.&lt;br /&gt;
:* 1-7 no split: you get up to seven one-step moves. You must do then with one pawn, but you can forfeit some of them if you want.&lt;br /&gt;
;&#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
: You move one of your pawns forward by 10 fields. Additionally, this forbids the next player all movement, so they have to discard one of their cards. The &#039;&#039;Stop Moving&#039;&#039; function of the 10 is always active, even when a 10 is discarded! There&#039;s one exception: The effect of a 10 does not carry over to the next hand, so when you play a 10 and the next player has an empty hand, there is no forced discard.&lt;br /&gt;
:&#039;&#039;&#039;Pay attention!&#039;&#039;&#039; Normally, when you click on a card, you just select it for movement. But if your predecessor played a 10, the function of a click changes to &#039;&#039;Discard&#039;&#039;, and the clicked card is discarded at once. This is evil by design, not a bug! &lt;br /&gt;
;&#039;&#039;&#039;Jack&#039;&#039;&#039;&lt;br /&gt;
: Exchange one of your pawns with any other pawn that&#039;s on the ring of fields. Pawns that are standing on their start field cannot be exchanged! You are allowed to exchange two of your own pawns, which has no effect at all. But sometimes, that&#039;s just what one needs.&lt;br /&gt;
;&#039;&#039;&#039;Queen&#039;&#039;&#039;&lt;br /&gt;
: Move one of your pawns by 12 fields&lt;br /&gt;
;&#039;&#039;&#039;King&#039;&#039;&#039;&lt;br /&gt;
: You can move one of your pawns by 13 fields, or bring a new pawn from your start zone to the start field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note: in case of one player forfeit during the game ==&lt;br /&gt;
*If that player would play or discard, a card from his hand is chosen randomly by the system to be discarded (no pawn will be move. &#039;&#039;&#039;Note:&#039;&#039;&#039; if a 10 is discarded that way, &#039;&#039;&#039;the next player would not be forced to discard&#039;&#039;&#039; because of that card no matter what.&lt;br /&gt;
&lt;br /&gt;
*If that player would choose a card to be exchange, it is once again picked randomly by the system.&lt;br /&gt;
&lt;br /&gt;
*If that player has left having started a move of decomposing 7, that move stops immediately and it is now the next player turn.&lt;br /&gt;
&lt;br /&gt;
*If that player would have to take any other action, nothing happens.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelptoc&amp;diff=4113</id>
		<title>Gamehelptoc</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelptoc&amp;diff=4113"/>
		<updated>2020-04-25T15:59:27Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Tock is a card-and-board game for 2 to 6 players. With 4 or 6 players, it is possible to create two or three teams of 2 players, sitting opposite of each other.&lt;br /&gt;
&lt;br /&gt;
The game concept is the same as Ludo, Sorry! or Mensch ärgere Dich nicht: Each player owns 4 pawns, has to bring them out of their start area into the game circle, and then race them into their home zone. &lt;br /&gt;
&lt;br /&gt;
The difference is that the players don&#039;t roll a die. Instead, standard playing cards (like those used in Bridge or Rummy) are dealt to the players, and they can choose to play one of their cards to move a pawn.&lt;br /&gt;
&lt;br /&gt;
== Object of the game ==&lt;br /&gt;
In single player games (no teams), the winner is the player who is first to get all 4 pawns into his home. &lt;br /&gt;
&lt;br /&gt;
In team games, the winner is the team that is first to get the pawns of both players into their corresponding homes. After the first player of a team has brought all of his pawns into his home, both players continue to play with the remaining color.&lt;br /&gt;
&lt;br /&gt;
== Setup of your game on Board Game Arena ==&lt;br /&gt;
&lt;br /&gt;
===Game Type===&lt;br /&gt;
You can choose between three game types.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Free-for-all&#039;&#039;&#039;: This is the single player game, everyone fights for him- or herself, no mercy, no friends, just run and eat every pawn that has the wrong color.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2 vs 2&#039;&#039;&#039;: When you get 4 players at your table, there will be two teams with two players. Assuming that players A1 and A2 belong to team A, and B1,B2 to team B, then the turn order will be A1, B1, A2, B2. With any other number of players, you will play Free-for-all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2 vs 2 vs 2&#039;&#039;&#039;: When you get 6 players at your table, there will be three teams with two players each. The turn order will be A1, B1, C1, A2, B2, C2. &lt;br /&gt;
&lt;br /&gt;
===Game Variants===&lt;br /&gt;
Because it can be frustrating when the game starts and you don&#039;t have any card to let you start, there is the &amp;quot;start configuration&amp;quot; variant that allow you to place your first pawn on your start field before the game starts (Fast Start).&lt;br /&gt;
&lt;br /&gt;
== Playing a hand of cards ==&lt;br /&gt;
&lt;br /&gt;
One of the players takes the role of the dealer and deals three to five cards to each player. The exact number of cards dealt depends on the number of players, and varies so that the 52 cards of the deck can be distributed evenly. For example, in a 2 player game, the first two hands contain 5 cards, followed by four hands of 4 cards. Don&#039;t worry, the game takes care of this automatically. After all cards of a hand are played, the role of the dealer moves to the next player. &lt;br /&gt;
&lt;br /&gt;
The player following the dealer gets the first turn. In each turn, a player plays one of his hand cards and moves one or more pawns. The played card determines which move is possible. Then the next player takes his turn. This continues until all hands are empty, then the role of the dealer moves the player following the previous dealer, new hands are dealt from the remaining deck and the next round begins. And yes, you&#039;re right, this means that the dealer misses a turn.&lt;br /&gt;
&lt;br /&gt;
When all cards of the deck have been dealt and played, they are shuffled as the new deck and the game continues.&lt;br /&gt;
&lt;br /&gt;
== Exchanging of cards ==&lt;br /&gt;
&lt;br /&gt;
In team games, after dealing, each player exchanges one card with his team partner. Both partners choose a card, then the cards are exchanged. It is important to choose a card that is most useful for the team partner.&lt;br /&gt;
&lt;br /&gt;
nb - In team games there can be no discussion between partners about what cards are held, or suggestions/requests about how or what to play.  In reply to a recent question for clarification, Woodruff (who introduced and designed the game here) wrote:-&lt;br /&gt;
&lt;br /&gt;
&amp;quot;You&#039;re right, talking is not allowed between teammates, that is an implicit rule, As for many games like this (Belote, Scopa, Tarot)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Start Field ==&lt;br /&gt;
&lt;br /&gt;
Each player has a start zone, where their pawns are placed at the beginning of the game. Near the start zone, a field in the game circle is marked in the player&#039;s color. This is the start field. When a pawn is brought into play (see Ace or King), it is placed on that start field. Pawns are protected on that start field. They cannot be eaten, they cannot be skipped, and they cannot be swapped by a Jack. Once a pawn leaves the start field, the protection ends, even if it returns to it!&lt;br /&gt;
&lt;br /&gt;
== Eating and Skipping ==&lt;br /&gt;
&lt;br /&gt;
When a pawn is moved so that it stops on a field that is occupied by another pawn, that pawn is eaten (or thrown). It is removed to its start zone. Outside of the home zones, it is possible to eat ANY pawn, even your own or those of your team partner. If your start field is coccupied by the pawn of another player, and you play a start card (Ace or King), that pawn is eaten, too. If you can&#039;t play any other card, you may even be forced to eat yourself. &lt;br /&gt;
&lt;br /&gt;
Normally, it&#039;s no problem to overtake other pawns, just count the field where they are standing as any empty field and hop along. There are three exceptions. (1) The Start Field (see above), (2) the Seven (see below), (3) the home zone. You cannot skip pawns in the home zone. So, if using a card requires a pawn to skip other pawns, but they can&#039;t be skipped, the card cannot be used for that pawn.&lt;br /&gt;
&lt;br /&gt;
== Entering the home zone ==&lt;br /&gt;
&lt;br /&gt;
When you want to enter your home zone, the played card must fit. You must use the complete movement that a card provides. If that movement goes too far, you cannot enter the home zone, but must continue on the circle.&lt;br /&gt;
&lt;br /&gt;
== To play or not to play - being blocked ==&lt;br /&gt;
&lt;br /&gt;
As long as you can play a card that lets you make a allowed move, you must play. If that&#039;s not possible, you must discard one card. There are three situations that can force you to discard: (1) All your pawns are in your start zone, and you have neither Ace nor King. (2) You queue up behind some obstinate pawn that won&#039;t leave it&#039;s Start Field. (3) Your predecessor played or discarded a Ten (see below).&lt;br /&gt;
&lt;br /&gt;
== Effects of cards ==&lt;br /&gt;
&lt;br /&gt;
Playing a card allows you to move pawns by one or more fields. You can move pawns along the ring of fields, and you can move pawns into their own home zone. Cards that are not mentioned simply move one pawn by the number of fields given by the value of the card.&lt;br /&gt;
&lt;br /&gt;
The color (or suit) of the cards has no meaning in Tock.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Ace&#039;&#039;&#039;&lt;br /&gt;
: Bring a new pawn from your start zone to the start field, or move one pawn that is already in the game forward by one field.&lt;br /&gt;
;&#039;&#039;&#039;4&#039;&#039;&#039;&lt;br /&gt;
:Move one of your pawns 4 fields backwards! It is not possible to move backwards into the home fields. And it&#039;s not possible to back out of your home zone to go on a quick hunt. Home is Home!&lt;br /&gt;
;&#039;&#039;&#039;7&#039;&#039;&#039;&lt;br /&gt;
:You can choose between two options.&lt;br /&gt;
:* 7 split: you get seven one-step moves. You can do them with one pawn, or distribute them between your pawns. But you must play them all, even if it hurts. Since the pawns do single steps, all other pawns on their way are eaten. There is one restriction: you cannot use a 7 to move your last pawn into your home and continue to play with the pawns of your team partner. You must complete your move before you can start helping your partner.&lt;br /&gt;
:* 1-7 no split: you get up to seven one-step moves. You must do then with one pawn, but you can forfeit some of them if you want.&lt;br /&gt;
;&#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
: You move one of your pawns forward by 10 fields. Additionally, this forbids the next player all movement, so they have to discard one of their cards. The &#039;&#039;Stop Moving&#039;&#039; function of the 10 is always active, even when a 10 is discarded! There&#039;s one exception: The effect of a 10 does not carry over to the next hand, so when you play a 10 and the next player has an empty hand, there is no forced discard.&lt;br /&gt;
:&#039;&#039;&#039;Pay attention!&#039;&#039;&#039; Normally, when you click on a card, you just select it for movement. But if your predecessor played a 10, the function of a click changes to &#039;&#039;Discard&#039;&#039;, and the clicked card is discarded at once. This is evil by design, not a bug! &lt;br /&gt;
;&#039;&#039;&#039;Jack&#039;&#039;&#039;&lt;br /&gt;
: Exchange one of your pawns with any other pawn that&#039;s on the ring of fields. Pawns that are standing on their start field cannot be exchanged! You are allowed to exchange two of your own pawns, which has no effect at all. But sometimes, that&#039;s just what one needs.&lt;br /&gt;
;&#039;&#039;&#039;Queen&#039;&#039;&#039;&lt;br /&gt;
: Move one of your pawns by 12 fields&lt;br /&gt;
;&#039;&#039;&#039;King&#039;&#039;&#039;&lt;br /&gt;
: You can move one of your pawns by 13 fields, or bring a new pawn from your start zone to the start field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Note: in case of one player forfeit during the game ==&lt;br /&gt;
-If that player would play or discard, a card from his hand is chosen randomly by the system to be discarded (no pawn will be move. &#039;&#039;&#039;Note:&#039;&#039;&#039; if a 10 is discarded that way, &#039;&#039;&#039;the next player would not be forced to discard&#039;&#039;&#039; because of that card no matter what.&lt;br /&gt;
&lt;br /&gt;
-If that player would choose a card to be exchange, it is once again picked randomly by the system.&lt;br /&gt;
&lt;br /&gt;
-If that player has left having started a move of decomposing 7, that move stops immediately and it is now the next player turn.&lt;br /&gt;
&lt;br /&gt;
-If that player would have to take any other action, nothing happens.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Options_and_preferences:_gameoptions.json,_gamepreferences.json&amp;diff=3995</id>
		<title>Options and preferences: gameoptions.json, gamepreferences.json</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Options_and_preferences:_gameoptions.json,_gamepreferences.json&amp;diff=3995"/>
		<updated>2020-04-12T19:58:14Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: /* User Preferences */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
In this file, you can define your game options (= game variants) and user preferences.&lt;br /&gt;
   &lt;br /&gt;
Note: If your game has no variants or preferences, you don&#039;t have to modify this file.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039; after you edited this file in your SFTP folder you have to go to the control panel and press &amp;quot;Reload game options configuration&amp;quot; for your changes to take effect.&lt;br /&gt;
&lt;br /&gt;
== Game Options ==&lt;br /&gt;
&lt;br /&gt;
Game options is something selected by table creator and usually correspond to game variant, for example if game includes expansion or certain special rule.&lt;br /&gt;
&lt;br /&gt;
These variants defined in gameoptions.inc.php as variable  &lt;br /&gt;
  $game_options = array(...); // exactly named that&lt;br /&gt;
&lt;br /&gt;
Each option is pair number =&amp;gt; &#039;option description array&#039;. &lt;br /&gt;
&lt;br /&gt;
All options defined in this file should have a corresponding &amp;quot;game state label&amp;quot; with the same ID (see &amp;quot;initGameStateLabels&amp;quot; in yourgame.game.php)&lt;br /&gt;
&lt;br /&gt;
             self::initGameStateLabels ( array (&lt;br /&gt;
                        ...&lt;br /&gt;
                        &amp;quot;my_first_game_variant&amp;quot; =&amp;gt; 100,&lt;br /&gt;
              ) );&lt;br /&gt;
&lt;br /&gt;
That is how you access them during runtime:&lt;br /&gt;
&lt;br /&gt;
              $this-&amp;gt;gamestate-&amp;gt;table_globals[100]&lt;br /&gt;
&lt;br /&gt;
The following are the parameters of option description array:&lt;br /&gt;
* &#039;&#039;&#039;name&#039;&#039;&#039; - &#039;&#039;&#039;mandatory&#039;&#039;&#039;. The name of the option visible for table creator. Value must be wrapped in totranslate function.&lt;br /&gt;
* &#039;&#039;&#039;values&#039;&#039;&#039; - &#039;&#039;&#039;mandatory&#039;&#039;&#039;. The array (map) of values with additional parameters per value.&lt;br /&gt;
** &#039;&#039;&#039;name&#039;&#039;&#039; - &#039;&#039;&#039;mandatory&#039;&#039;&#039;. String representation of the numeric value visible to table creator. Value must be wrapped in totranslate function.&lt;br /&gt;
** &#039;&#039;&#039;description&#039;&#039;&#039; - String description of this value to use when the name of the option is not self-explanatory. Displayed at the table under the option when this value is selected.&lt;br /&gt;
** &#039;&#039;&#039;tmdisplay&#039;&#039;&#039; - String representation of the option visible in the table description, usually if variant &amp;quot;names&amp;quot; are On and Off, but the description would be same as option name when On, and nothing when Off.&lt;br /&gt;
** &#039;&#039;&#039;nobeginner&#039;&#039;&#039; - Set to true if not recommended for begginers&lt;br /&gt;
** &#039;&#039;&#039;beta&#039;&#039;&#039; - Option in beta stage on development&lt;br /&gt;
** &#039;&#039;&#039;premium&#039;&#039;&#039; - Option can be only used by premium members&lt;br /&gt;
* &#039;&#039;&#039;displaycondition&#039;&#039;&#039; - checks the conditions before displaying the option for selection. All conditions must be true for the option to display. Supported condition types:&lt;br /&gt;
** &#039;&#039;otheroption&#039;&#039; condition ensures another option is set to this given values. Framework options - 201 - ELO OFF.&lt;br /&gt;
** &#039;&#039;otheroptionisnot&#039;&#039; conditions ensure another option is NOT set to this given values&lt;br /&gt;
* &#039;&#039;&#039;displayconditionoperand&#039;&#039;&#039; - can be &#039;and&#039; (this is the default) or &#039;or&#039;. Allows to change the behaviour to display the option if one of the conditions is true instead of all of them.&lt;br /&gt;
* &#039;&#039;&#039;startcondition&#039;&#039;&#039; - checks the conditions (on options VALUES) before starting the game. All conditions must be true for the game to start, otherwise players will get a red error message when attempting to begin the game. Supported condition types:&lt;br /&gt;
** &#039;&#039;minplayers&#039;&#039; condition ensures at least this many players&lt;br /&gt;
** &#039;&#039;maxplayers&#039;&#039; conditions ensure at most this many players&lt;br /&gt;
** &#039;&#039;otheroption&#039;&#039; conditions ensure another option is set to this given values. That works the same as in &#039;&#039;&#039;displaycondition&#039;&#039;&#039;.&lt;br /&gt;
** &#039;&#039;otheroptionisnot&#039;&#039; conditions ensure another option is NOT set to this given value.  That works the same as in &#039;&#039;&#039;displaycondition&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;notdisplayedmessage&#039;&#039;&#039; - if option is not suppose to be visible because of displaycondition but this is set, the text will be visible instead of combo drop down&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $game_options = array(&lt;br /&gt;
     100 =&amp;gt; array(&lt;br /&gt;
         &#039;name&#039; =&amp;gt; totranslate(&#039;my game option&#039;),&lt;br /&gt;
         &#039;values&#039; =&amp;gt; array(&lt;br /&gt;
             // A simple value for this option:&lt;br /&gt;
             1 =&amp;gt; array(&lt;br /&gt;
                 &#039;name&#039; =&amp;gt; totranslate(&#039;option 1&#039;)&lt;br /&gt;
             ),&lt;br /&gt;
&lt;br /&gt;
             // A simple value for this option.&lt;br /&gt;
             // If this value is chosen, the value of &amp;quot;tmdisplay&amp;quot; is displayed in the game lobby&lt;br /&gt;
             2 =&amp;gt; array(&lt;br /&gt;
                 &#039;name&#039; =&amp;gt; totranslate(&#039;option 2&#039;),&lt;br /&gt;
                 &#039;tmdisplay&#039; =&amp;gt; totranslate(&#039;option 2&#039;)&lt;br /&gt;
             ),&lt;br /&gt;
&lt;br /&gt;
             // Another value, with other options:&lt;br /&gt;
             //  beta=true =&amp;gt; this option is in beta version right now.&lt;br /&gt;
             //  nobeginner=true  =&amp;gt;  this option is not recommended for beginners&lt;br /&gt;
             3 =&amp;gt; array(&lt;br /&gt;
                 &#039;name&#039; =&amp;gt; totranslate(&#039;option 3&#039;),&lt;br /&gt;
                 &#039;beta&#039; =&amp;gt; true,&lt;br /&gt;
                 &#039;nobeginner&#039; =&amp;gt; true&lt;br /&gt;
             ),&lt;br /&gt;
         )&lt;br /&gt;
     ),&lt;br /&gt;
     &lt;br /&gt;
     101 =&amp;gt; array(&lt;br /&gt;
         &#039;name&#039; =&amp;gt; totranslate(&#039;Draft variant&#039;),&lt;br /&gt;
         &#039;values&#039; =&amp;gt; array(&lt;br /&gt;
             1 =&amp;gt; array(&lt;br /&gt;
                 &#039;name&#039; =&amp;gt; totranslate(&#039;No draft&#039;)&lt;br /&gt;
             ),&lt;br /&gt;
             2 =&amp;gt; array(&lt;br /&gt;
                 &#039;name&#039; =&amp;gt; totranslate(&#039;Draft&#039;),&lt;br /&gt;
                 &#039;tmdisplay&#039; =&amp;gt; totranslate(&#039;Draft&#039;),&lt;br /&gt;
                 &#039;premium&#039; =&amp;gt; true,&lt;br /&gt;
                 &#039;nobeginner&#039; =&amp;gt; true&lt;br /&gt;
             ),&lt;br /&gt;
         ),&lt;br /&gt;
         &#039;displaycondition&#039; =&amp;gt; array( &lt;br /&gt;
             // Note: do not display this option unless these conditions are met&lt;br /&gt;
             array(&lt;br /&gt;
                 &#039;type&#039; =&amp;gt; &#039;otheroption&#039;,&lt;br /&gt;
                 &#039;id&#039; =&amp;gt; 100, // Game specific option defined in the same array above&lt;br /&gt;
                 &#039;value&#039; =&amp;gt; array(2, 3, 4)&lt;br /&gt;
             ),&lt;br /&gt;
             // Note: do not display this option unless these conditions are met&lt;br /&gt;
            array( &#039;type&#039; =&amp;gt; &#039;otheroption&#039;, &lt;br /&gt;
                 &#039;id&#039; =&amp;gt; 201, // ELO OFF hardcoded framework option&lt;br /&gt;
                 &#039;value&#039; =&amp;gt; 1 // 1 if OFF&lt;br /&gt;
            )&lt;br /&gt;
         ),&lt;br /&gt;
&lt;br /&gt;
         &#039;startcondition&#039; =&amp;gt; array(&lt;br /&gt;
             1 =&amp;gt; array(),&lt;br /&gt;
             2 =&amp;gt; array(&lt;br /&gt;
                 array(&lt;br /&gt;
                     &#039;type&#039; =&amp;gt; &#039;maxplayers&#039;,&lt;br /&gt;
                     &#039;value&#039; =&amp;gt; 3,&lt;br /&gt;
                     &#039;message&#039; =&amp;gt; totranslate(&#039;Draft option is available for 3 players maximum.&#039;)&lt;br /&gt;
                 )&lt;br /&gt;
             ),&lt;br /&gt;
         ),&lt;br /&gt;
     ),&lt;br /&gt;
     &lt;br /&gt;
     102 =&amp;gt; array(&lt;br /&gt;
         &#039;name&#039; =&amp;gt; totranslate(&#039;Takeovers&#039;),&lt;br /&gt;
         &#039;values&#039; =&amp;gt; array(&lt;br /&gt;
             2 =&amp;gt; array(&lt;br /&gt;
                 &#039;name&#039; =&amp;gt; totranslate(&#039;No takeover&#039;)&lt;br /&gt;
             ),&lt;br /&gt;
             1 =&amp;gt; array(&lt;br /&gt;
                 &#039;name&#039; =&amp;gt; totranslate(&#039;Allow takeovers&#039;),&lt;br /&gt;
                 &#039;tmdisplay&#039; =&amp;gt; totranslate(&#039;Takeovers&#039;),&lt;br /&gt;
                 &#039;premium&#039; =&amp;gt; true,&lt;br /&gt;
                 &#039;nobeginner&#039; =&amp;gt; true&lt;br /&gt;
             ),&lt;br /&gt;
         ),&lt;br /&gt;
         &#039;displaycondition&#039; =&amp;gt; array( // Note: do not display this option unless these conditions are met&lt;br /&gt;
             array(&lt;br /&gt;
                 &#039;type&#039; =&amp;gt; &#039;otheroption&#039;,&lt;br /&gt;
                 &#039;id&#039; =&amp;gt; 100,&lt;br /&gt;
                 &#039;value&#039; =&amp;gt; array(3, 4)&lt;br /&gt;
             )&lt;br /&gt;
         ),&lt;br /&gt;
         &#039;startcondition&#039; =&amp;gt; array(&lt;br /&gt;
             2 =&amp;gt; array(),&lt;br /&gt;
             1 =&amp;gt; array(&lt;br /&gt;
                 array(&lt;br /&gt;
                     &#039;type&#039; =&amp;gt; &#039;maxplayers&#039;,&lt;br /&gt;
                     &#039;value&#039; =&amp;gt; 2,&lt;br /&gt;
                     &#039;message&#039; =&amp;gt; totranslate(&#039;Rebel vs Imperium Takeover Scenario is available for 2 players only.&#039;)&lt;br /&gt;
                 )&lt;br /&gt;
             ),&lt;br /&gt;
         ),&lt;br /&gt;
     )&lt;br /&gt;
 );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of option that condition on ELO off&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$game_options = array(&lt;br /&gt;
&lt;br /&gt;
        100 =&amp;gt; array(&lt;br /&gt;
                &#039;name&#039; =&amp;gt; totranslate(&#039;Learning Game (No Research)&#039;),&lt;br /&gt;
                &#039;values&#039; =&amp;gt; array(&lt;br /&gt;
                        &lt;br /&gt;
                        1 =&amp;gt; array( &#039;name&#039; =&amp;gt; totranslate(&#039;Off&#039;), &#039;tmdisplay&#039; =&amp;gt; totranslate(&#039;&#039;) ),&lt;br /&gt;
                        2 =&amp;gt; array( &#039;name&#039; =&amp;gt; totranslate(&#039;On&#039;), &#039;tmdisplay&#039; =&amp;gt; totranslate(&#039;Learning Game&#039;) ),&lt;br /&gt;
                        &lt;br /&gt;
                ),&lt;br /&gt;
                &#039;displaycondition&#039; =&amp;gt; array(&lt;br /&gt;
                        // Note: do not display this option unless these conditions are met&lt;br /&gt;
                        array( &#039;type&#039; =&amp;gt; &#039;otheroption&#039;,&lt;br /&gt;
                                &#039;id&#039; =&amp;gt; 201, // ELO OFF hardcoded framework option&lt;br /&gt;
                                &#039;value&#039; =&amp;gt; 1, // 1 if OFF&lt;br /&gt;
&lt;br /&gt;
                        )&lt;br /&gt;
                ),&lt;br /&gt;
                &#039;notdisplayedmessage&#039; =&amp;gt; totranslate(&#039;Learning variant available only with ELO off&#039;)&lt;br /&gt;
                ),&lt;br /&gt;
&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of using condition on your own option&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        102 =&amp;gt; array(&lt;br /&gt;
                &#039;name&#039; =&amp;gt; totranslate(&#039;Scenarios&#039;),&lt;br /&gt;
                &#039;values&#039; =&amp;gt; array(&lt;br /&gt;
                        1 =&amp;gt; array( &#039;name&#039; =&amp;gt; totranslate(&#039;Off&#039;),&lt;br /&gt;
                                &#039;nobeginner&#039; =&amp;gt; false  ),&lt;br /&gt;
                        2 =&amp;gt; array( &#039;name&#039; =&amp;gt; totranslate(&#039;On&#039;), &#039;tmdisplay&#039; =&amp;gt; totranslate(&#039;Scenarios&#039;),&lt;br /&gt;
                                &#039;nobeginner&#039; =&amp;gt; true  ),&lt;br /&gt;
                        &lt;br /&gt;
                ),&lt;br /&gt;
                &#039;displaycondition&#039; =&amp;gt; array(&lt;br /&gt;
                        // Note: do not display this option unless these conditions are met&lt;br /&gt;
                        array( &#039;type&#039; =&amp;gt; &#039;otheroptionisnot&#039;,&lt;br /&gt;
                                &#039;id&#039; =&amp;gt; 100, // learning variant&lt;br /&gt;
                                &#039;value&#039; =&amp;gt; 2, // 1 if OFF,2 is ON&lt;br /&gt;
                                &lt;br /&gt;
                        )&lt;br /&gt;
                ),&lt;br /&gt;
                &#039;notdisplayedmessage&#039; =&amp;gt; totranslate(&#039;Scenarios variant is not available if Learning variant is chosen&#039;)&lt;br /&gt;
        ),&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== User Preferences ==&lt;br /&gt;
&lt;br /&gt;
User preferences is something cosmetic about the game interface which however can create user wars, so you can satisfy all users&lt;br /&gt;
by giving them individual preferences. You should use this only if it significantly improves the interface for a large proportion of users.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$game_preferences = array(&lt;br /&gt;
    100 =&amp;gt; array(&lt;br /&gt;
			&#039;name&#039; =&amp;gt; totranslate(&#039;Notation style&#039;),&lt;br /&gt;
			&#039;needReload&#039; =&amp;gt; true, // after user changes this preference game interface would auto-reload&lt;br /&gt;
			&#039;values&#039; =&amp;gt; array(&lt;br /&gt;
					1 =&amp;gt; array( &#039;name&#039; =&amp;gt; totranslate( &#039;Classic&#039; ), &#039;cssPref&#039; =&amp;gt; &#039;notation_classic&#039; ),&lt;br /&gt;
					2 =&amp;gt; array( &#039;name&#039; =&amp;gt; totranslate( &#039;Tournament&#039; ), &#039;cssPref&#039; =&amp;gt; &#039;notation_tournament&#039; )&lt;br /&gt;
			)&lt;br /&gt;
	)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is two ways to check/apply this. In java Script&lt;br /&gt;
&lt;br /&gt;
  if (this.prefs[100].value == 2) ...&lt;br /&gt;
&lt;br /&gt;
This checks if preferences 100 has selected value 2.&lt;br /&gt;
&lt;br /&gt;
Second, if cssPref specified it will be applied to the &#039;&#039;&#039;&amp;lt;html&amp;gt;&#039;&#039;&#039; tag. So you can use different css styling for the preference. Note: it seems needed to set needReload to true for that class change to be effective.&lt;br /&gt;
&lt;br /&gt;
As user you have to select them from the Gear menu when game is started. On studio only user0 will have it actually working (bug?).&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Options_and_preferences:_gameoptions.json,_gamepreferences.json&amp;diff=3994</id>
		<title>Options and preferences: gameoptions.json, gamepreferences.json</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Options_and_preferences:_gameoptions.json,_gamepreferences.json&amp;diff=3994"/>
		<updated>2020-04-12T19:55:30Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: /* User Preferences */ fix error: cssPref is applied on html tag, not body&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
In this file, you can define your game options (= game variants) and user preferences.&lt;br /&gt;
   &lt;br /&gt;
Note: If your game has no variants or preferences, you don&#039;t have to modify this file.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039; after you edited this file in your SFTP folder you have to go to the control panel and press &amp;quot;Reload game options configuration&amp;quot; for your changes to take effect.&lt;br /&gt;
&lt;br /&gt;
== Game Options ==&lt;br /&gt;
&lt;br /&gt;
Game options is something selected by table creator and usually correspond to game variant, for example if game includes expansion or certain special rule.&lt;br /&gt;
&lt;br /&gt;
These variants defined in gameoptions.inc.php as variable  &lt;br /&gt;
  $game_options = array(...); // exactly named that&lt;br /&gt;
&lt;br /&gt;
Each option is pair number =&amp;gt; &#039;option description array&#039;. &lt;br /&gt;
&lt;br /&gt;
All options defined in this file should have a corresponding &amp;quot;game state label&amp;quot; with the same ID (see &amp;quot;initGameStateLabels&amp;quot; in yourgame.game.php)&lt;br /&gt;
&lt;br /&gt;
             self::initGameStateLabels ( array (&lt;br /&gt;
                        ...&lt;br /&gt;
                        &amp;quot;my_first_game_variant&amp;quot; =&amp;gt; 100,&lt;br /&gt;
              ) );&lt;br /&gt;
&lt;br /&gt;
That is how you access them during runtime:&lt;br /&gt;
&lt;br /&gt;
              $this-&amp;gt;gamestate-&amp;gt;table_globals[100]&lt;br /&gt;
&lt;br /&gt;
The following are the parameters of option description array:&lt;br /&gt;
* &#039;&#039;&#039;name&#039;&#039;&#039; - &#039;&#039;&#039;mandatory&#039;&#039;&#039;. The name of the option visible for table creator. Value must be wrapped in totranslate function.&lt;br /&gt;
* &#039;&#039;&#039;values&#039;&#039;&#039; - &#039;&#039;&#039;mandatory&#039;&#039;&#039;. The array (map) of values with additional parameters per value.&lt;br /&gt;
** &#039;&#039;&#039;name&#039;&#039;&#039; - &#039;&#039;&#039;mandatory&#039;&#039;&#039;. String representation of the numeric value visible to table creator. Value must be wrapped in totranslate function.&lt;br /&gt;
** &#039;&#039;&#039;description&#039;&#039;&#039; - String description of this value to use when the name of the option is not self-explanatory. Displayed at the table under the option when this value is selected.&lt;br /&gt;
** &#039;&#039;&#039;tmdisplay&#039;&#039;&#039; - String representation of the option visible in the table description, usually if variant &amp;quot;names&amp;quot; are On and Off, but the description would be same as option name when On, and nothing when Off.&lt;br /&gt;
** &#039;&#039;&#039;nobeginner&#039;&#039;&#039; - Set to true if not recommended for begginers&lt;br /&gt;
** &#039;&#039;&#039;beta&#039;&#039;&#039; - Option in beta stage on development&lt;br /&gt;
** &#039;&#039;&#039;premium&#039;&#039;&#039; - Option can be only used by premium members&lt;br /&gt;
* &#039;&#039;&#039;displaycondition&#039;&#039;&#039; - checks the conditions before displaying the option for selection. All conditions must be true for the option to display. Supported condition types:&lt;br /&gt;
** &#039;&#039;otheroption&#039;&#039; condition ensures another option is set to this given values. Framework options - 201 - ELO OFF.&lt;br /&gt;
** &#039;&#039;otheroptionisnot&#039;&#039; conditions ensure another option is NOT set to this given values&lt;br /&gt;
* &#039;&#039;&#039;displayconditionoperand&#039;&#039;&#039; - can be &#039;and&#039; (this is the default) or &#039;or&#039;. Allows to change the behaviour to display the option if one of the conditions is true instead of all of them.&lt;br /&gt;
* &#039;&#039;&#039;startcondition&#039;&#039;&#039; - checks the conditions (on options VALUES) before starting the game. All conditions must be true for the game to start, otherwise players will get a red error message when attempting to begin the game. Supported condition types:&lt;br /&gt;
** &#039;&#039;minplayers&#039;&#039; condition ensures at least this many players&lt;br /&gt;
** &#039;&#039;maxplayers&#039;&#039; conditions ensure at most this many players&lt;br /&gt;
** &#039;&#039;otheroption&#039;&#039; conditions ensure another option is set to this given values. That works the same as in &#039;&#039;&#039;displaycondition&#039;&#039;&#039;.&lt;br /&gt;
** &#039;&#039;otheroptionisnot&#039;&#039; conditions ensure another option is NOT set to this given value.  That works the same as in &#039;&#039;&#039;displaycondition&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;notdisplayedmessage&#039;&#039;&#039; - if option is not suppose to be visible because of displaycondition but this is set, the text will be visible instead of combo drop down&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $game_options = array(&lt;br /&gt;
     100 =&amp;gt; array(&lt;br /&gt;
         &#039;name&#039; =&amp;gt; totranslate(&#039;my game option&#039;),&lt;br /&gt;
         &#039;values&#039; =&amp;gt; array(&lt;br /&gt;
             // A simple value for this option:&lt;br /&gt;
             1 =&amp;gt; array(&lt;br /&gt;
                 &#039;name&#039; =&amp;gt; totranslate(&#039;option 1&#039;)&lt;br /&gt;
             ),&lt;br /&gt;
&lt;br /&gt;
             // A simple value for this option.&lt;br /&gt;
             // If this value is chosen, the value of &amp;quot;tmdisplay&amp;quot; is displayed in the game lobby&lt;br /&gt;
             2 =&amp;gt; array(&lt;br /&gt;
                 &#039;name&#039; =&amp;gt; totranslate(&#039;option 2&#039;),&lt;br /&gt;
                 &#039;tmdisplay&#039; =&amp;gt; totranslate(&#039;option 2&#039;)&lt;br /&gt;
             ),&lt;br /&gt;
&lt;br /&gt;
             // Another value, with other options:&lt;br /&gt;
             //  beta=true =&amp;gt; this option is in beta version right now.&lt;br /&gt;
             //  nobeginner=true  =&amp;gt;  this option is not recommended for beginners&lt;br /&gt;
             3 =&amp;gt; array(&lt;br /&gt;
                 &#039;name&#039; =&amp;gt; totranslate(&#039;option 3&#039;),&lt;br /&gt;
                 &#039;beta&#039; =&amp;gt; true,&lt;br /&gt;
                 &#039;nobeginner&#039; =&amp;gt; true&lt;br /&gt;
             ),&lt;br /&gt;
         )&lt;br /&gt;
     ),&lt;br /&gt;
     &lt;br /&gt;
     101 =&amp;gt; array(&lt;br /&gt;
         &#039;name&#039; =&amp;gt; totranslate(&#039;Draft variant&#039;),&lt;br /&gt;
         &#039;values&#039; =&amp;gt; array(&lt;br /&gt;
             1 =&amp;gt; array(&lt;br /&gt;
                 &#039;name&#039; =&amp;gt; totranslate(&#039;No draft&#039;)&lt;br /&gt;
             ),&lt;br /&gt;
             2 =&amp;gt; array(&lt;br /&gt;
                 &#039;name&#039; =&amp;gt; totranslate(&#039;Draft&#039;),&lt;br /&gt;
                 &#039;tmdisplay&#039; =&amp;gt; totranslate(&#039;Draft&#039;),&lt;br /&gt;
                 &#039;premium&#039; =&amp;gt; true,&lt;br /&gt;
                 &#039;nobeginner&#039; =&amp;gt; true&lt;br /&gt;
             ),&lt;br /&gt;
         ),&lt;br /&gt;
         &#039;displaycondition&#039; =&amp;gt; array( &lt;br /&gt;
             // Note: do not display this option unless these conditions are met&lt;br /&gt;
             array(&lt;br /&gt;
                 &#039;type&#039; =&amp;gt; &#039;otheroption&#039;,&lt;br /&gt;
                 &#039;id&#039; =&amp;gt; 100, // Game specific option defined in the same array above&lt;br /&gt;
                 &#039;value&#039; =&amp;gt; array(2, 3, 4)&lt;br /&gt;
             ),&lt;br /&gt;
             // Note: do not display this option unless these conditions are met&lt;br /&gt;
            array( &#039;type&#039; =&amp;gt; &#039;otheroption&#039;, &lt;br /&gt;
                 &#039;id&#039; =&amp;gt; 201, // ELO OFF hardcoded framework option&lt;br /&gt;
                 &#039;value&#039; =&amp;gt; 1 // 1 if OFF&lt;br /&gt;
            )&lt;br /&gt;
         ),&lt;br /&gt;
&lt;br /&gt;
         &#039;startcondition&#039; =&amp;gt; array(&lt;br /&gt;
             1 =&amp;gt; array(),&lt;br /&gt;
             2 =&amp;gt; array(&lt;br /&gt;
                 array(&lt;br /&gt;
                     &#039;type&#039; =&amp;gt; &#039;maxplayers&#039;,&lt;br /&gt;
                     &#039;value&#039; =&amp;gt; 3,&lt;br /&gt;
                     &#039;message&#039; =&amp;gt; totranslate(&#039;Draft option is available for 3 players maximum.&#039;)&lt;br /&gt;
                 )&lt;br /&gt;
             ),&lt;br /&gt;
         ),&lt;br /&gt;
     ),&lt;br /&gt;
     &lt;br /&gt;
     102 =&amp;gt; array(&lt;br /&gt;
         &#039;name&#039; =&amp;gt; totranslate(&#039;Takeovers&#039;),&lt;br /&gt;
         &#039;values&#039; =&amp;gt; array(&lt;br /&gt;
             2 =&amp;gt; array(&lt;br /&gt;
                 &#039;name&#039; =&amp;gt; totranslate(&#039;No takeover&#039;)&lt;br /&gt;
             ),&lt;br /&gt;
             1 =&amp;gt; array(&lt;br /&gt;
                 &#039;name&#039; =&amp;gt; totranslate(&#039;Allow takeovers&#039;),&lt;br /&gt;
                 &#039;tmdisplay&#039; =&amp;gt; totranslate(&#039;Takeovers&#039;),&lt;br /&gt;
                 &#039;premium&#039; =&amp;gt; true,&lt;br /&gt;
                 &#039;nobeginner&#039; =&amp;gt; true&lt;br /&gt;
             ),&lt;br /&gt;
         ),&lt;br /&gt;
         &#039;displaycondition&#039; =&amp;gt; array( // Note: do not display this option unless these conditions are met&lt;br /&gt;
             array(&lt;br /&gt;
                 &#039;type&#039; =&amp;gt; &#039;otheroption&#039;,&lt;br /&gt;
                 &#039;id&#039; =&amp;gt; 100,&lt;br /&gt;
                 &#039;value&#039; =&amp;gt; array(3, 4)&lt;br /&gt;
             )&lt;br /&gt;
         ),&lt;br /&gt;
         &#039;startcondition&#039; =&amp;gt; array(&lt;br /&gt;
             2 =&amp;gt; array(),&lt;br /&gt;
             1 =&amp;gt; array(&lt;br /&gt;
                 array(&lt;br /&gt;
                     &#039;type&#039; =&amp;gt; &#039;maxplayers&#039;,&lt;br /&gt;
                     &#039;value&#039; =&amp;gt; 2,&lt;br /&gt;
                     &#039;message&#039; =&amp;gt; totranslate(&#039;Rebel vs Imperium Takeover Scenario is available for 2 players only.&#039;)&lt;br /&gt;
                 )&lt;br /&gt;
             ),&lt;br /&gt;
         ),&lt;br /&gt;
     )&lt;br /&gt;
 );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of option that condition on ELO off&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$game_options = array(&lt;br /&gt;
&lt;br /&gt;
        100 =&amp;gt; array(&lt;br /&gt;
                &#039;name&#039; =&amp;gt; totranslate(&#039;Learning Game (No Research)&#039;),&lt;br /&gt;
                &#039;values&#039; =&amp;gt; array(&lt;br /&gt;
                        &lt;br /&gt;
                        1 =&amp;gt; array( &#039;name&#039; =&amp;gt; totranslate(&#039;Off&#039;), &#039;tmdisplay&#039; =&amp;gt; totranslate(&#039;&#039;) ),&lt;br /&gt;
                        2 =&amp;gt; array( &#039;name&#039; =&amp;gt; totranslate(&#039;On&#039;), &#039;tmdisplay&#039; =&amp;gt; totranslate(&#039;Learning Game&#039;) ),&lt;br /&gt;
                        &lt;br /&gt;
                ),&lt;br /&gt;
                &#039;displaycondition&#039; =&amp;gt; array(&lt;br /&gt;
                        // Note: do not display this option unless these conditions are met&lt;br /&gt;
                        array( &#039;type&#039; =&amp;gt; &#039;otheroption&#039;,&lt;br /&gt;
                                &#039;id&#039; =&amp;gt; 201, // ELO OFF hardcoded framework option&lt;br /&gt;
                                &#039;value&#039; =&amp;gt; 1, // 1 if OFF&lt;br /&gt;
&lt;br /&gt;
                        )&lt;br /&gt;
                ),&lt;br /&gt;
                &#039;notdisplayedmessage&#039; =&amp;gt; totranslate(&#039;Learning variant available only with ELO off&#039;)&lt;br /&gt;
                ),&lt;br /&gt;
&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of using condition on your own option&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        102 =&amp;gt; array(&lt;br /&gt;
                &#039;name&#039; =&amp;gt; totranslate(&#039;Scenarios&#039;),&lt;br /&gt;
                &#039;values&#039; =&amp;gt; array(&lt;br /&gt;
                        1 =&amp;gt; array( &#039;name&#039; =&amp;gt; totranslate(&#039;Off&#039;),&lt;br /&gt;
                                &#039;nobeginner&#039; =&amp;gt; false  ),&lt;br /&gt;
                        2 =&amp;gt; array( &#039;name&#039; =&amp;gt; totranslate(&#039;On&#039;), &#039;tmdisplay&#039; =&amp;gt; totranslate(&#039;Scenarios&#039;),&lt;br /&gt;
                                &#039;nobeginner&#039; =&amp;gt; true  ),&lt;br /&gt;
                        &lt;br /&gt;
                ),&lt;br /&gt;
                &#039;displaycondition&#039; =&amp;gt; array(&lt;br /&gt;
                        // Note: do not display this option unless these conditions are met&lt;br /&gt;
                        array( &#039;type&#039; =&amp;gt; &#039;otheroptionisnot&#039;,&lt;br /&gt;
                                &#039;id&#039; =&amp;gt; 100, // learning variant&lt;br /&gt;
                                &#039;value&#039; =&amp;gt; 2, // 1 if OFF,2 is ON&lt;br /&gt;
                                &lt;br /&gt;
                        )&lt;br /&gt;
                ),&lt;br /&gt;
                &#039;notdisplayedmessage&#039; =&amp;gt; totranslate(&#039;Scenarios variant is not available if Learning variant is chosen&#039;)&lt;br /&gt;
        ),&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== User Preferences ==&lt;br /&gt;
&lt;br /&gt;
User preferences is something cosmetic about the game interface which however can create user wars, so you can satisfy all users&lt;br /&gt;
by giving them individual preferences. You should use this only if it significantly improves the interface for a large proportion of users.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$game_preferences = array(&lt;br /&gt;
    100 =&amp;gt; array(&lt;br /&gt;
			&#039;name&#039; =&amp;gt; totranslate(&#039;Notation style&#039;),&lt;br /&gt;
			&#039;needReload&#039; =&amp;gt; true, // after user changes this preference game interface would auto-reload&lt;br /&gt;
			&#039;values&#039; =&amp;gt; array(&lt;br /&gt;
					1 =&amp;gt; array( &#039;name&#039; =&amp;gt; totranslate( &#039;Classic&#039; ), &#039;cssPref&#039; =&amp;gt; &#039;notation_classic&#039; ),&lt;br /&gt;
					2 =&amp;gt; array( &#039;name&#039; =&amp;gt; totranslate( &#039;Tournament&#039; ), &#039;cssPref&#039; =&amp;gt; &#039;notation_tournament&#039; )&lt;br /&gt;
			)&lt;br /&gt;
	)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is two ways to check/apply this. In java Script&lt;br /&gt;
&lt;br /&gt;
  if (this.prefs[100].value == 2) ...&lt;br /&gt;
&lt;br /&gt;
This checks if preferences 100 has selected value 2.&lt;br /&gt;
&lt;br /&gt;
Second, if cssPref specified it will be applied to the &#039;&#039;&#039;&amp;lt;html&amp;gt;&#039;&#039;&#039; tag. So you can use different css styling for the preference.&lt;br /&gt;
&lt;br /&gt;
As user you have to select them from the Gear menu when game is started. On studio only user0 will have it actually working (bug?).&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3857</id>
		<title>Gamehelpfrenchtarot</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3857"/>
		<updated>2020-02-28T23:54:13Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: /* Poignées */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;THIS PAGE WAS WRITTEN BY A FRENCH PLAYER...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DO NOT HESITATE TO CORRECT THAT CLUMSY ENGLISH ;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Cards ===&lt;br /&gt;
• 21 Trumps numbered from 1 to 21&lt;br /&gt;
&lt;br /&gt;
• The Fool&lt;br /&gt;
&lt;br /&gt;
• 14 cards in each color suit, increasing order : 1 2 3 4 5 6 7 8 9 10 V C D R&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jack (V) &amp;lt; Knight (C) &amp;lt; Queen (D) &amp;lt; King (R)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bouts : 1 of Trumps (the Petit), 21 of Trumps and the Fool.&lt;br /&gt;
&lt;br /&gt;
=== Card points ===&lt;br /&gt;
• Bout: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• King: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• Queen: 3 points and a half&lt;br /&gt;
&lt;br /&gt;
• Knight: 2 points and a half&lt;br /&gt;
&lt;br /&gt;
• Jack: 1 point and a half&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• Any other card: half a point.&lt;br /&gt;
&lt;br /&gt;
=== Taker&#039;s goal ===&lt;br /&gt;
• 0 Bout : 56 points&lt;br /&gt;
&lt;br /&gt;
• 1 Bout : 51 points&lt;br /&gt;
&lt;br /&gt;
• 2 Bouts: 41 points&lt;br /&gt;
&lt;br /&gt;
• 3 Bouts: 36 points.&lt;br /&gt;
&lt;br /&gt;
=== Play ===&lt;br /&gt;
• One must follow suit&lt;br /&gt;
&lt;br /&gt;
• One must play a Trump if one cannot follow suit&lt;br /&gt;
&lt;br /&gt;
• If one must play a Trump, one must play an higher Trump than any Trump already played on the trick&lt;br /&gt;
&lt;br /&gt;
• One must play a lower Trump if unable to play an higher&lt;br /&gt;
&lt;br /&gt;
• If one cannot follow suit nor play a Trump, one can play any card&lt;br /&gt;
&lt;br /&gt;
• The Fool can be played anytime, &#039;&#039;&#039;except on the last trick, otherwise it switches sides&#039;&#039;&#039; (exception: Chelem)&lt;br /&gt;
&lt;br /&gt;
=== Bids ===&lt;br /&gt;
• Small: coefficient x 1&lt;br /&gt;
&lt;br /&gt;
• Guard: coefficient x 2&lt;br /&gt;
&lt;br /&gt;
• Guard without the Kitty: coefficient x 4&lt;br /&gt;
&lt;br /&gt;
• Guard against the Kitty: coefficient x 6&lt;br /&gt;
&lt;br /&gt;
For Small and Guard, the Kitty is revealed and the taker integrates it in his/her hand then discards.&lt;br /&gt;
&lt;br /&gt;
=== Petit au bout ===&lt;br /&gt;
If the Petit is played on the last trick, the team who wins that trick scores the Petit au bout bonus:&lt;br /&gt;
&lt;br /&gt;
• 10 points x coefficient of the bid.&lt;br /&gt;
&lt;br /&gt;
=== Poignées ===&lt;br /&gt;
• Simple Poignée, 13 Trumps with three players, 10 Trumps with four players, 8 Trumps with five players, 20 points&lt;br /&gt;
&lt;br /&gt;
• Double Poignée, 15 Trumps with three players, 13 Trumps with four players, 10 Trumps with five players, 30 points&lt;br /&gt;
&lt;br /&gt;
• Triple Poignée, 18 Trumps with three players, 15 Trumps with four players, 13 Trumps with five players, 40 points&lt;br /&gt;
&lt;br /&gt;
The Poignée bonus is won by the team who wins the hand (it is not multiplied by the bid coefficient).&lt;br /&gt;
&lt;br /&gt;
=== Slam ===&lt;br /&gt;
That is winning all tricks. Can be announced over the normal bid.&lt;br /&gt;
&lt;br /&gt;
• 400 points if announced and achieved (it not multiplied by the bid coefficient)&lt;br /&gt;
&lt;br /&gt;
• 200 points if silent and achieved&lt;br /&gt;
&lt;br /&gt;
• -200 points if announced but failed&lt;br /&gt;
&lt;br /&gt;
If the team acheving the Slam has the Fool in hand, it can be played on the last trick and it will win it. In this case, the Petit is considered au bout at the penultimate trick.&lt;br /&gt;
&lt;br /&gt;
=== Misères (variant) ===&lt;br /&gt;
• Misère of Trumps: no Trump nor the Fool, 10 points&lt;br /&gt;
&lt;br /&gt;
• Misère of Honours: no Figure nor Bout, 10 points&lt;br /&gt;
&lt;br /&gt;
The announced Misères are paid immediately to the declarer, whoever wins the hand next.&lt;br /&gt;
&lt;br /&gt;
=== Goulash (variant) ===&lt;br /&gt;
If everybody pass, it is free-for-all and the goal is to avoid taking points.&lt;br /&gt;
&lt;br /&gt;
At the hand of the hand, each player pays each opponent the points he took.&lt;br /&gt;
&lt;br /&gt;
The play is the same but there is no Petit au bout nor Slam and Poignées cannot be declared.&lt;br /&gt;
&lt;br /&gt;
The Fool remains the property of one who plays it. If it is played on the last tricks, it wins it.&lt;br /&gt;
&lt;br /&gt;
The Kitty is not revealed and is no one property.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelptoc&amp;diff=3856</id>
		<title>Gamehelptoc</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelptoc&amp;diff=3856"/>
		<updated>2020-02-28T21:27:03Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: /* Game Variants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Tock is a card-and-board game for 2 to 6 players. With 4 or 6 players, it is possible to create two or three teams of 2 players, sitting opposite of each other.&lt;br /&gt;
&lt;br /&gt;
The game concept is the same as Ludo, Sorry! or Mensch ärgere Dich nicht: Each player owns 4 pawns, has to bring them out of their start area into the game circle, and then race them into their home zone. &lt;br /&gt;
&lt;br /&gt;
The difference is that the players don&#039;t roll a die. Instead, standard playing cards (like those used in Bridge or Rummy) are dealt to the players, and they can choose to play one of their cards to move a pawn.&lt;br /&gt;
&lt;br /&gt;
== Object of the game ==&lt;br /&gt;
In single player games (no teams), the winner is the player who is first to get all 4 pawns into his home. &lt;br /&gt;
&lt;br /&gt;
In team games, the winner is the team that is first to get the pawns of both players into their corresponding homes. After the first player of a team has brought all of his pawns into his home, both players continue to play with the remaining color.&lt;br /&gt;
&lt;br /&gt;
== Setup of your game on Board Game Arena ==&lt;br /&gt;
&lt;br /&gt;
===Game Type===&lt;br /&gt;
You can choose between three game types.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Free-for-all&#039;&#039;&#039;: This is the single player game, everyone fights for him- or herself, no mercy, no friends, just run and eat every pawn that has the wrong color.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2 vs 2&#039;&#039;&#039;: When you get 4 players at your table, there will be two teams with two players. Assuming that players A1 and A2 belong to team A, and B1,B2 to team B, then the turn order will be A1, B1, A2, B2. With any other number of players, you will play Free-for-all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2 vs 2 vs 2&#039;&#039;&#039;: When you get 6 players at your table, there will be three teams with two players each. The turn order will be A1, B1, C1, A2, B2, C2. &lt;br /&gt;
&lt;br /&gt;
===Game Variants===&lt;br /&gt;
Because it can be frustrating when the game starts and you don&#039;t have any card to let you start, there is the &amp;quot;start configuration&amp;quot; variant that allow you to place your first pawn on your start field before the game starts (Fast Start).&lt;br /&gt;
&lt;br /&gt;
== Playing a hand of cards ==&lt;br /&gt;
&lt;br /&gt;
One of the players takes the role of the dealer and deals three to five cards to each player. The exact number of cards dealt depends on the number of players, and varies so that the 52 cards of the deck can be distributed evenly. For example, in a 2 player game, the first two hands contain 5 cards, followed by four hands of 4 cards. Don&#039;t worry, the game takes care of this automatically. After all cards of a hand are played, the role of the dealer moves to the next player. &lt;br /&gt;
&lt;br /&gt;
The player following the dealer gets the first turn. In each turn, a player plays one of his hand cards and moves one or more pawns. The played card determines which move is possible. Then the next player takes his turn. This continues until all hands are empty, then the role of the dealer moves the player following the previous dealer, new hands are dealt from the remaining deck and the next round begins. And yes, you&#039;re right, this means that the dealer misses a turn.&lt;br /&gt;
&lt;br /&gt;
When all cards of the deck have been dealt and played, they are shuffeled as the new deck and the game continues.&lt;br /&gt;
&lt;br /&gt;
== Exchanging of cards ==&lt;br /&gt;
&lt;br /&gt;
In team games, after dealing, each player exchanges one card with his team partner. Both partners choose a card, then the cards are exchanged. It is important to choose a card that is most useful for the team partner.&lt;br /&gt;
&lt;br /&gt;
nb - In team games there can be no discussion between partners about what cards are held, or suggestions/requests about how or what to play.  In reply to a recent question for clarification, Woodruff (who introduced and designed the game here) wrote:-&lt;br /&gt;
&lt;br /&gt;
&amp;quot;You&#039;re right, talking is not allowed between teammates, that is an implicit rule, As for many games like this (Belote, Scopa, Tarot)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Start Field ==&lt;br /&gt;
&lt;br /&gt;
Each player has a start zone, where their pawns are placed at the beginning of the game. Near the start zone, a field in the game circle is marked in the player&#039;s color. This is the start field. When a pawn is brought into play (see Ace or King), it is placed on that start field. Pawns are protected on that start field. They cannot be eaten, they cannot be skipped, and they cannot be swapped by a Jack. Once a pawn leaves the start field, the protection ends, even if it returns to it!&lt;br /&gt;
&lt;br /&gt;
== Eating and Skipping ==&lt;br /&gt;
&lt;br /&gt;
When a pawn is moved so that it stops on a field that is occupied by another pawn, that pawn is eaten (or thrown). It is removed to its start zone. Outside of the home zones, it is possible to eat ANY pawn, even your own or those of your team partner. If your start field is coccupied by the pawn of another player, and you play a start card (Ace or King), that pawn is eaten, too. If you can&#039;t play any other card, you may even be forced to eat yourself. &lt;br /&gt;
&lt;br /&gt;
Normally, it&#039;s no problem to overtake other pawns, just count the field where they are standing as any empty field and hop along. There are three exceptions. (1) The Start Field (see above), (2) the Seven (see below), (3) the home zone. You cannot skip pawns in the home zone. So, if using a card requires a pawn to skip other pawns, but they can&#039;t be skipped, the card cannot be used for that pawn.&lt;br /&gt;
&lt;br /&gt;
== Entering the home zone ==&lt;br /&gt;
&lt;br /&gt;
When you want to enter your home zone, the played card must fit. You must use the complete movement that a card provides. If that movement goes too far, you cannot enter the home zone, but must continue on the circle.&lt;br /&gt;
&lt;br /&gt;
== To play or not to play - being blocked ==&lt;br /&gt;
&lt;br /&gt;
As long as you can play a card that lets you make a allowed move, you must play. If that&#039;s not possible, you must discard one card. There are three situations that can force you to discard: (1) All your pawns are in your start zone, and you have neither Ace nor King. (2) You queue up behind some obstinate pawn that won&#039;t leave it&#039;s Start Field. (3) Your predecessor played or discarded a Ten (see below).&lt;br /&gt;
&lt;br /&gt;
== Effects of cards ==&lt;br /&gt;
&lt;br /&gt;
Playing a card allows you to move pawns by one or more fields. You can move pawns along the ring of fields, and you can move pawns into their own home zone. Cards that are not mentioned simply move one pawn by the number of fields given by the value of the card.&lt;br /&gt;
&lt;br /&gt;
The color (or suit) of the cards has no meaning in Tock.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Ace&#039;&#039;&#039;&lt;br /&gt;
: Bring a new pawn from your start zone to the start field, or move one pawn that is already in the game forward by one field.&lt;br /&gt;
;&#039;&#039;&#039;4&#039;&#039;&#039;&lt;br /&gt;
:Move one of your pawns 4 fields backwards! It is not possible to move backwards into the home fields. And it&#039;s not possible to back out of your home zone to go on a quick hunt. Home is Home!&lt;br /&gt;
;&#039;&#039;&#039;7&#039;&#039;&#039;&lt;br /&gt;
:You can choose between two options.&lt;br /&gt;
:* 7 split: you get seven one-step moves. You can do them with one pawn, or distribute them between your pawns. But you must play them all, even if it hurts. Since the pawns do single steps, all other pawns on their way are eaten. There is one restriction: you cannot use a 7 to move your last pawn into your home and continue to play with the pawns of your team partner. You must complete your move before you can start helping your partner.&lt;br /&gt;
:* 1-7 no split: you get up to seven one-step moves. You must do then with one pawn, but you can forfeit some of them if you want.&lt;br /&gt;
;&#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
: You move one of your pawns forward by 10 fields. Additionally, this forbids the next player all movement, so they have to discard one of their cards. The &#039;&#039;Stop Moving&#039;&#039; function of the 10 is always active, even when a 10 is discarded! There&#039;s one exception: The effect of a 10 does not carry over to the next hand, so when you play a 10 and the next player has an empty hand, there is no forced discard.&lt;br /&gt;
:&#039;&#039;&#039;Pay attention!&#039;&#039;&#039; Normally, when you click on a card, you just select it for movement. But if your predecessor played a 10, the function of a click changes to &#039;&#039;Discard&#039;&#039;, and the clicked card is discarded at once. This is evil by design, not a bug! &lt;br /&gt;
;&#039;&#039;&#039;Jack&#039;&#039;&#039;&lt;br /&gt;
: Exchange one of your pawns with any other pawn that&#039;s on the ring of fields. Pawns that are standing on their start field cannot be exchanged! You are allowed to exchange two of your own pawns, which has no effect at all. But sometimes, that&#039;s just what one needs.&lt;br /&gt;
;&#039;&#039;&#039;Queen&#039;&#039;&#039;&lt;br /&gt;
: Move one of your pawns by 12 fields&lt;br /&gt;
;&#039;&#039;&#039;King&#039;&#039;&#039;&lt;br /&gt;
: You can move one of your pawns by 13 fields, or bring a new pawn from your start zone to the start field.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelptoc&amp;diff=3855</id>
		<title>Gamehelptoc</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelptoc&amp;diff=3855"/>
		<updated>2020-02-28T21:20:03Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: /* Effects of cards */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Tock is a card-and-board game for 2 to 6 players. With 4 or 6 players, it is possible to create two or three teams of 2 players, sitting opposite of each other.&lt;br /&gt;
&lt;br /&gt;
The game concept is the same as Ludo, Sorry! or Mensch ärgere Dich nicht: Each player owns 4 pawns, has to bring them out of their start area into the game circle, and then race them into their home zone. &lt;br /&gt;
&lt;br /&gt;
The difference is that the players don&#039;t roll a die. Instead, standard playing cards (like those used in Bridge or Rummy) are dealt to the players, and they can choose to play one of their cards to move a pawn.&lt;br /&gt;
&lt;br /&gt;
== Object of the game ==&lt;br /&gt;
In single player games (no teams), the winner is the player who is first to get all 4 pawns into his home. &lt;br /&gt;
&lt;br /&gt;
In team games, the winner is the team that is first to get the pawns of both players into their corresponding homes. After the first player of a team has brought all of his pawns into his home, both players continue to play with the remaining color.&lt;br /&gt;
&lt;br /&gt;
== Setup of your game on Board Game Arena ==&lt;br /&gt;
&lt;br /&gt;
===Game Type===&lt;br /&gt;
You can choose between three game types.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Free-for-all&#039;&#039;&#039;: This is the single player game, everyone fights for him- or herself, no mercy, no friends, just run and eat every pawn that has the wrong color.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2 vs 2&#039;&#039;&#039;: When you get 4 players at your table, there will be two teams with two players. Assuming that players A1 and A2 belong to team A, and B1,B2 to team B, then the turn order will be A1, B1, A2, B2. With any other number of players, you will play Free-for-all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2 vs 2 vs 2&#039;&#039;&#039;: When you get 6 players at your table, there will be three teams with two players each. The turn order will be A1, B1, C1, A2, B2, C2. &lt;br /&gt;
&lt;br /&gt;
===Game Variants===&lt;br /&gt;
Because it can be frustrating when the game starts and you don&#039;t have any card to let you start, there is the &amp;quot;start configuration&amp;quot; variant that allow you to place your first pawn on your start field before the game starts (Fast Start)&lt;br /&gt;
&lt;br /&gt;
== Playing a hand of cards ==&lt;br /&gt;
&lt;br /&gt;
One of the players takes the role of the dealer and deals three to five cards to each player. The exact number of cards dealt depends on the number of players, and varies so that the 52 cards of the deck can be distributed evenly. For example, in a 2 player game, the first two hands contain 5 cards, followed by four hands of 4 cards. Don&#039;t worry, the game takes care of this automatically. After all cards of a hand are played, the role of the dealer moves to the next player. &lt;br /&gt;
&lt;br /&gt;
The player following the dealer gets the first turn. In each turn, a player plays one of his hand cards and moves one or more pawns. The played card determines which move is possible. Then the next player takes his turn. This continues until all hands are empty, then the role of the dealer moves the player following the previous dealer, new hands are dealt from the remaining deck and the next round begins. And yes, you&#039;re right, this means that the dealer misses a turn.&lt;br /&gt;
&lt;br /&gt;
When all cards of the deck have been dealt and played, they are shuffeled as the new deck and the game continues.&lt;br /&gt;
&lt;br /&gt;
== Exchanging of cards ==&lt;br /&gt;
&lt;br /&gt;
In team games, after dealing, each player exchanges one card with his team partner. Both partners choose a card, then the cards are exchanged. It is important to choose a card that is most useful for the team partner.&lt;br /&gt;
&lt;br /&gt;
nb - In team games there can be no discussion between partners about what cards are held, or suggestions/requests about how or what to play.  In reply to a recent question for clarification, Woodruff (who introduced and designed the game here) wrote:-&lt;br /&gt;
&lt;br /&gt;
&amp;quot;You&#039;re right, talking is not allowed between teammates, that is an implicit rule, As for many games like this (Belote, Scopa, Tarot)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Start Field ==&lt;br /&gt;
&lt;br /&gt;
Each player has a start zone, where their pawns are placed at the beginning of the game. Near the start zone, a field in the game circle is marked in the player&#039;s color. This is the start field. When a pawn is brought into play (see Ace or King), it is placed on that start field. Pawns are protected on that start field. They cannot be eaten, they cannot be skipped, and they cannot be swapped by a Jack. Once a pawn leaves the start field, the protection ends, even if it returns to it!&lt;br /&gt;
&lt;br /&gt;
== Eating and Skipping ==&lt;br /&gt;
&lt;br /&gt;
When a pawn is moved so that it stops on a field that is occupied by another pawn, that pawn is eaten (or thrown). It is removed to its start zone. Outside of the home zones, it is possible to eat ANY pawn, even your own or those of your team partner. If your start field is coccupied by the pawn of another player, and you play a start card (Ace or King), that pawn is eaten, too. If you can&#039;t play any other card, you may even be forced to eat yourself. &lt;br /&gt;
&lt;br /&gt;
Normally, it&#039;s no problem to overtake other pawns, just count the field where they are standing as any empty field and hop along. There are three exceptions. (1) The Start Field (see above), (2) the Seven (see below), (3) the home zone. You cannot skip pawns in the home zone. So, if using a card requires a pawn to skip other pawns, but they can&#039;t be skipped, the card cannot be used for that pawn.&lt;br /&gt;
&lt;br /&gt;
== Entering the home zone ==&lt;br /&gt;
&lt;br /&gt;
When you want to enter your home zone, the played card must fit. You must use the complete movement that a card provides. If that movement goes too far, you cannot enter the home zone, but must continue on the circle.&lt;br /&gt;
&lt;br /&gt;
== To play or not to play - being blocked ==&lt;br /&gt;
&lt;br /&gt;
As long as you can play a card that lets you make a allowed move, you must play. If that&#039;s not possible, you must discard one card. There are three situations that can force you to discard: (1) All your pawns are in your start zone, and you have neither Ace nor King. (2) You queue up behind some obstinate pawn that won&#039;t leave it&#039;s Start Field. (3) Your predecessor played or discarded a Ten (see below).&lt;br /&gt;
&lt;br /&gt;
== Effects of cards ==&lt;br /&gt;
&lt;br /&gt;
Playing a card allows you to move pawns by one or more fields. You can move pawns along the ring of fields, and you can move pawns into their own home zone. Cards that are not mentioned simply move one pawn by the number of fields given by the value of the card.&lt;br /&gt;
&lt;br /&gt;
The color (or suit) of the cards has no meaning in Tock.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Ace&#039;&#039;&#039;&lt;br /&gt;
: Bring a new pawn from your start zone to the start field, or move one pawn that is already in the game forward by one field.&lt;br /&gt;
;&#039;&#039;&#039;4&#039;&#039;&#039;&lt;br /&gt;
:Move one of your pawns 4 fields backwards! It is not possible to move backwards into the home fields. And it&#039;s not possible to back out of your home zone to go on a quick hunt. Home is Home!&lt;br /&gt;
;&#039;&#039;&#039;7&#039;&#039;&#039;&lt;br /&gt;
:You can choose between two options.&lt;br /&gt;
:* 7 split: you get seven one-step moves. You can do them with one pawn, or distribute them between your pawns. But you must play them all, even if it hurts. Since the pawns do single steps, all other pawns on their way are eaten. There is one restriction: you cannot use a 7 to move your last pawn into your home and continue to play with the pawns of your team partner. You must complete your move before you can start helping your partner.&lt;br /&gt;
:* 1-7 no split: you get up to seven one-step moves. You must do then with one pawn, but you can forfeit some of them if you want.&lt;br /&gt;
;&#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
: You move one of your pawns forward by 10 fields. Additionally, this forbids the next player all movement, so they have to discard one of their cards. The &#039;&#039;Stop Moving&#039;&#039; function of the 10 is always active, even when a 10 is discarded! There&#039;s one exception: The effect of a 10 does not carry over to the next hand, so when you play a 10 and the next player has an empty hand, there is no forced discard.&lt;br /&gt;
:&#039;&#039;&#039;Pay attention!&#039;&#039;&#039; Normally, when you click on a card, you just select it for movement. But if your predecessor played a 10, the function of a click changes to &#039;&#039;Discard&#039;&#039;, and the clicked card is discarded at once. This is evil by design, not a bug! &lt;br /&gt;
;&#039;&#039;&#039;Jack&#039;&#039;&#039;&lt;br /&gt;
: Exchange one of your pawns with any other pawn that&#039;s on the ring of fields. Pawns that are standing on their start field cannot be exchanged! You are allowed to exchange two of your own pawns, which has no effect at all. But sometimes, that&#039;s just what one needs.&lt;br /&gt;
;&#039;&#039;&#039;Queen&#039;&#039;&#039;&lt;br /&gt;
: Move one of your pawns by 12 fields&lt;br /&gt;
;&#039;&#039;&#039;King&#039;&#039;&#039;&lt;br /&gt;
: You can move one of your pawns by 13 fields, or bring a new pawn from your start zone to the start field.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3529</id>
		<title>Gamehelpfrenchtarot</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3529"/>
		<updated>2019-07-15T17:50:34Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;THIS PAGE WAS WRITTEN BY A FRENCH PLAYER...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DO NOT HESITATE TO CORRECT THAT CLUMSY ENGLISH ;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Cards ===&lt;br /&gt;
• 21 Trumps numbered from 1 to 21&lt;br /&gt;
&lt;br /&gt;
• The Fool&lt;br /&gt;
&lt;br /&gt;
• 14 cards in each color suit, increasing order : 1 2 3 4 5 6 7 8 9 10 V C D R&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jack (V) &amp;lt; Knight (C) &amp;lt; Queen (D) &amp;lt; King (R)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bouts : 1 of Trumps (the Petit), 21 of Trumps and the Fool.&lt;br /&gt;
&lt;br /&gt;
=== Card points ===&lt;br /&gt;
• Bout: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• King: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• Queen: 3 points and a half&lt;br /&gt;
&lt;br /&gt;
• Knight: 2 points and a half&lt;br /&gt;
&lt;br /&gt;
• Jack: 1 point and a half&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• Any other card: half a point.&lt;br /&gt;
&lt;br /&gt;
=== Taker&#039;s goal ===&lt;br /&gt;
• 0 Bout : 56 points&lt;br /&gt;
&lt;br /&gt;
• 1 Bout : 51 points&lt;br /&gt;
&lt;br /&gt;
• 2 Bouts: 41 points&lt;br /&gt;
&lt;br /&gt;
• 3 Bouts: 36 points.&lt;br /&gt;
&lt;br /&gt;
=== Play ===&lt;br /&gt;
• One must follow suit&lt;br /&gt;
&lt;br /&gt;
• One must play a Trump if one cannot follow suit&lt;br /&gt;
&lt;br /&gt;
• If one must play a Trump, one must play an higher Trump than any Trump already played on the trick&lt;br /&gt;
&lt;br /&gt;
• One must play a lower Trump if unable to play an higher&lt;br /&gt;
&lt;br /&gt;
• If one cannot follow suit nor play a Trump, one can play any card&lt;br /&gt;
&lt;br /&gt;
• The Fool can be played anytime, &#039;&#039;&#039;except on the last trick, otherwise it switches sides&#039;&#039;&#039; (exception: Chelem)&lt;br /&gt;
&lt;br /&gt;
=== Bids ===&lt;br /&gt;
• Small: coefficient x 1&lt;br /&gt;
&lt;br /&gt;
• Guard: coefficient x 2&lt;br /&gt;
&lt;br /&gt;
• Guard without the Kitty: coefficient x 4&lt;br /&gt;
&lt;br /&gt;
• Guard against the Kitty: coefficient x 6&lt;br /&gt;
&lt;br /&gt;
For Small and Guard, the Kitty is revealed and the taker integrates it in his/her hand then discards.&lt;br /&gt;
&lt;br /&gt;
=== Petit au bout ===&lt;br /&gt;
If the Petit is played on the last trick, the team who wins that trick scores the Petit au bout bonus:&lt;br /&gt;
&lt;br /&gt;
• 10 points x coefficient of the bid.&lt;br /&gt;
&lt;br /&gt;
=== Poignées ===&lt;br /&gt;
• Simple Poignée, 13 Trumps with three players, 10 Trumps with four players, 8 Trumps with five players, 20 points&lt;br /&gt;
&lt;br /&gt;
• Double Poignée, 15 Trumps with three players, 13 Trumps with four players, 10 Trumps with five players, 30 points&lt;br /&gt;
&lt;br /&gt;
• Triple Poignée, 18 Trumps with three players, 15 Trumps with four players, 13 Trumps with five players, 40 points&lt;br /&gt;
&lt;br /&gt;
The Poignée bonus is won by the team who wins the hand (it not multiplied by the bid coefficient).&lt;br /&gt;
&lt;br /&gt;
=== Slam ===&lt;br /&gt;
That is winning all tricks. Can be announced over the normal bid.&lt;br /&gt;
&lt;br /&gt;
• 400 points if announced and achieved (it not multiplied by the bid coefficient)&lt;br /&gt;
&lt;br /&gt;
• 200 points if silent and achieved&lt;br /&gt;
&lt;br /&gt;
• -200 points if announced but failed&lt;br /&gt;
&lt;br /&gt;
If the team acheving the Slam has the Fool in hand, it can be played on the last trick and it will win it. In this case, the Petit is considered au bout at the penultimate trick.&lt;br /&gt;
&lt;br /&gt;
=== Misères (variant) ===&lt;br /&gt;
• Misère of Trumps: no Trump nor the Fool, 10 points&lt;br /&gt;
&lt;br /&gt;
• Misère of Honours: no Figure nor Bout, 10 points&lt;br /&gt;
&lt;br /&gt;
The announced Misères are paid immediately to the declarer, whoever wins the hand next.&lt;br /&gt;
&lt;br /&gt;
=== Goulash (variant) ===&lt;br /&gt;
If everybody pass, it is free-for-all and the goal is to avoid taking points.&lt;br /&gt;
&lt;br /&gt;
At the hand of the hand, each player pays each opponent the points he took.&lt;br /&gt;
&lt;br /&gt;
The play is the same but there is no Petit au bout nor Slam and Poignées cannot be declared.&lt;br /&gt;
&lt;br /&gt;
The Fool remains the property of one who plays it. If it is played on the last tricks, it wins it.&lt;br /&gt;
&lt;br /&gt;
The Kitty is not revealed and is no one property.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3524</id>
		<title>Gamehelpfrenchtarot</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3524"/>
		<updated>2019-06-29T15:14:41Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://fr.doc.boardgamearena.com/Gamehelpfrenchtarot Version française ici]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;THIS PAGE WAS WRITTEN BY A FRENCH PLAYER...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DO NOT HESITATE TO CORRECT THAT CLUMSY ENGLISH ;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Cards ===&lt;br /&gt;
• 21 Trumps numbered from 1 to 21&lt;br /&gt;
&lt;br /&gt;
• The Fool&lt;br /&gt;
&lt;br /&gt;
• 14 cards in each color suit, increasing order : 1 2 3 4 5 6 7 8 9 10 V C D R&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jack (V) &amp;lt; Knight (C) &amp;lt; Queen (D) &amp;lt; King (R)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bouts : 1 of Trumps (the Petit), 21 of Trumps and the Fool.&lt;br /&gt;
&lt;br /&gt;
=== Card points ===&lt;br /&gt;
• Bout: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• King: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• Queen: 3 points and a half&lt;br /&gt;
&lt;br /&gt;
• Knight: 2 points and a half&lt;br /&gt;
&lt;br /&gt;
• Jack: 1 point and a half&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• Any other card: half a point.&lt;br /&gt;
&lt;br /&gt;
=== Taker&#039;s goal ===&lt;br /&gt;
• 0 Bout : 56 points&lt;br /&gt;
&lt;br /&gt;
• 1 Bout : 51 points&lt;br /&gt;
&lt;br /&gt;
• 2 Bouts: 41 points&lt;br /&gt;
&lt;br /&gt;
• 3 Bouts: 36 points.&lt;br /&gt;
&lt;br /&gt;
=== Play ===&lt;br /&gt;
• One must follow suit&lt;br /&gt;
&lt;br /&gt;
• One must play a Trump if one cannot follow suit&lt;br /&gt;
&lt;br /&gt;
• If one must play a Trump, one must play an higher Trump than any Trump already played on the trick&lt;br /&gt;
&lt;br /&gt;
• One must play a lower Trump if unable to play an higher&lt;br /&gt;
&lt;br /&gt;
• If one cannot follow suit nor play a Trump, one can play any card&lt;br /&gt;
&lt;br /&gt;
• The Fool can be played anytime, &#039;&#039;&#039;except on the last trick, otherwise it switches sides&#039;&#039;&#039; (exception: Chelem)&lt;br /&gt;
&lt;br /&gt;
=== Bids ===&lt;br /&gt;
• Small: coefficient x 1&lt;br /&gt;
&lt;br /&gt;
• Guard: coefficient x 2&lt;br /&gt;
&lt;br /&gt;
• Guard without the Kitty: coefficient x 4&lt;br /&gt;
&lt;br /&gt;
• Guard against the Kitty: coefficient x 6&lt;br /&gt;
&lt;br /&gt;
For Small and Guard, the Kitty is revealed and the taker integrates it in his/her hand then discards.&lt;br /&gt;
&lt;br /&gt;
=== Petit au bout ===&lt;br /&gt;
If the Petit is played on the last trick, the team who wins that trick scores the Petit au bout bonus:&lt;br /&gt;
&lt;br /&gt;
• 10 points x coefficient of the bid.&lt;br /&gt;
&lt;br /&gt;
=== Poignées ===&lt;br /&gt;
• Simple Poignée, 13 Trumps with three players, 10 Trumps with four players, 8 Trumps with five players, 20 points&lt;br /&gt;
&lt;br /&gt;
• Double Poignée, 15 Trumps with three players, 13 Trumps with four players, 10 Trumps with five players, 30 points&lt;br /&gt;
&lt;br /&gt;
• Triple Poignée, 18 Trumps with three players, 15 Trumps with four players, 13 Trumps with five players, 40 points&lt;br /&gt;
&lt;br /&gt;
The Poignée bonus is won by the team who wins the hand (it not multiplied by the bid coefficient).&lt;br /&gt;
&lt;br /&gt;
=== Slam ===&lt;br /&gt;
That is winning all tricks. Can be announced over the normal bid.&lt;br /&gt;
&lt;br /&gt;
• 400 points if announced and achieved (it not multiplied by the bid coefficient)&lt;br /&gt;
&lt;br /&gt;
• 200 points if silent and achieved&lt;br /&gt;
&lt;br /&gt;
• -200 points if announced but failed&lt;br /&gt;
&lt;br /&gt;
If the team acheving the Slam has the Fool in hand, it can be played on the last trick and it will win it. In this case, the Petit is considered au bout at the penultimate trick.&lt;br /&gt;
&lt;br /&gt;
=== Misères (variant) ===&lt;br /&gt;
• Misère of Trumps: no Trump nor the Fool, 10 points&lt;br /&gt;
&lt;br /&gt;
• Misère of Honours: no Figure nor Bout, 10 points&lt;br /&gt;
&lt;br /&gt;
The announced Misères are paid immediately to the declarer, whoever wins the hand next.&lt;br /&gt;
&lt;br /&gt;
=== Goulash (variant) ===&lt;br /&gt;
If everybody pass, it is free-for-all and the goal is to avoid taking points.&lt;br /&gt;
&lt;br /&gt;
At the hand of the hand, each player pays each opponent the points he took.&lt;br /&gt;
&lt;br /&gt;
The play is the same but there is no Petit au bout nor Slam and Poignées cannot be declared.&lt;br /&gt;
&lt;br /&gt;
The Fool remains the property of one who plays it. If it is played on the last tricks, it wins it.&lt;br /&gt;
&lt;br /&gt;
The Kitty is not revealed and is no one property.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3522</id>
		<title>Gamehelpfrenchtarot</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3522"/>
		<updated>2019-06-27T21:16:24Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://fr.doc.boardgamearena.com/Gamehelpfrenchtarot Version française ici]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;THIS PAGE WAS WRITTEN BY A FRENCH PLAYER...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DO NOT HESITATE TO CORRECT THAT CLUMSY ENGLISH ;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Cards ===&lt;br /&gt;
• 21 Trumps numbered from 1 to 21&lt;br /&gt;
&lt;br /&gt;
• The Fool&lt;br /&gt;
&lt;br /&gt;
• 14 cards in each color suit, increasing order : 1 2 3 4 5 6 7 8 9 10 V C D R&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jack (V) &amp;lt; Knight (C) &amp;lt; Queen (D) &amp;lt; King (R)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bouts : 1 of Trumps (the Petit), 21 of Trumps and the Fool.&lt;br /&gt;
&lt;br /&gt;
=== Card points ===&lt;br /&gt;
• Bout: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• King: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• Queen: 3 points and a half&lt;br /&gt;
&lt;br /&gt;
• Knight: 2 points and a half&lt;br /&gt;
&lt;br /&gt;
• Jack: 1 point and a half&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• Any other card: half a point.&lt;br /&gt;
&lt;br /&gt;
=== Taker&#039;s goal ===&lt;br /&gt;
• 0 Bout : 56 points&lt;br /&gt;
&lt;br /&gt;
• 1 Bout : 51 points&lt;br /&gt;
&lt;br /&gt;
• 2 Bouts: 41 points&lt;br /&gt;
&lt;br /&gt;
• 3 Bouts: 36 points.&lt;br /&gt;
&lt;br /&gt;
=== Play ===&lt;br /&gt;
• One must follow suit&lt;br /&gt;
&lt;br /&gt;
• One must play a Trump if one cannot follow suit&lt;br /&gt;
&lt;br /&gt;
• If one must play a Trump, one must play an higher Trump than any Trump already played on the trick&lt;br /&gt;
&lt;br /&gt;
• One must play a lower Trump if unable to play an higher&lt;br /&gt;
&lt;br /&gt;
• If one cannot follow suit nor play a Trump, one can play any card&lt;br /&gt;
&lt;br /&gt;
• The Fool can be played anytime, &#039;&#039;&#039;except on the last trick, otherwise it switches sides&#039;&#039;&#039; (exception: Chelem)&lt;br /&gt;
&lt;br /&gt;
=== Bids ===&lt;br /&gt;
• Small: coefficient x 1&lt;br /&gt;
&lt;br /&gt;
• Guard: coefficient x 2&lt;br /&gt;
&lt;br /&gt;
• Guard without the Kitty: coefficient x 4&lt;br /&gt;
&lt;br /&gt;
• Guard against the Kitty: coefficient x 6&lt;br /&gt;
&lt;br /&gt;
For Small and Guard, the Kitty is revealed and the taker integrates it in his/her hand then discards.&lt;br /&gt;
&lt;br /&gt;
=== Petit au bout ===&lt;br /&gt;
If the Petit is played on the last trick, the team who wins that trick scores the Petit au bout bonus:&lt;br /&gt;
&lt;br /&gt;
• 10 points x coefficient of the bid.&lt;br /&gt;
&lt;br /&gt;
=== Poignées ===&lt;br /&gt;
• Simple Poignée, 13 Trumps with three players, 10 Trumps with four players, 8 Trumps with five players, 20 points&lt;br /&gt;
&lt;br /&gt;
• Double Poignée, 15 Trumps with three players, 13 Trumps with four players, 10 Trumps with five players, 30 points&lt;br /&gt;
&lt;br /&gt;
• Triple Poignée, 18 Trumps with three players, 15 Trumps with four players, 13 Trumps with five players, 40 points&lt;br /&gt;
&lt;br /&gt;
The Poignée bonus is won by the team who wins the hand (it not multiplied by the bid coefficient).&lt;br /&gt;
&lt;br /&gt;
=== Chelem ===&lt;br /&gt;
That is winning all tricks. Can be announced over the normal bid.&lt;br /&gt;
&lt;br /&gt;
• 400 points if announced and achieved (it not multiplied by the bid coefficient)&lt;br /&gt;
&lt;br /&gt;
• 200 points if silent and achieved&lt;br /&gt;
&lt;br /&gt;
• -200 points if announced but failed&lt;br /&gt;
&lt;br /&gt;
If the team acheving the Chelem has the Fool in hand, it can be played on the last trick and it will win it. In this case, the Petit is considered au bout at the penultimate trick.&lt;br /&gt;
&lt;br /&gt;
=== Misères (variant) ===&lt;br /&gt;
• Misère of Trumps: no Trump nor the Fool, 10 points&lt;br /&gt;
&lt;br /&gt;
• Misère of Honnours: no Figure nor Bout, 10 points&lt;br /&gt;
&lt;br /&gt;
The announced Misères are paid immediately to the declarer, whoever wins the hand next.&lt;br /&gt;
&lt;br /&gt;
=== Goulash (variant) ===&lt;br /&gt;
If everybody pass, it is free-for-all and the goal is to avoid taking points.&lt;br /&gt;
&lt;br /&gt;
At the hand of the hand, each player pays each opponent the points he took.&lt;br /&gt;
&lt;br /&gt;
The play is the same but there is no Petit au bout nor Chelem and Poignées cannot be declared.&lt;br /&gt;
&lt;br /&gt;
The Fool remains the property of one who plays it. If it is played on the last tricks, it wins it.&lt;br /&gt;
&lt;br /&gt;
The Kitty is not revealed and is no one property.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3521</id>
		<title>Gamehelpfrenchtarot</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3521"/>
		<updated>2019-06-27T19:53:42Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;THIS PAGE WAS WRITTEN BY A FRENCH PLAYER...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DO NOT HESITATE TO CORRECT THAT CLUMSY ENGLISH ;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Cards ===&lt;br /&gt;
• 21 Trumps numbered from 1 to 21&lt;br /&gt;
&lt;br /&gt;
• The Fool&lt;br /&gt;
&lt;br /&gt;
• 14 cards in each color suit, increasing order : 1 2 3 4 5 6 7 8 9 10 V C D R&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jack (V) &amp;lt; Knight (C) &amp;lt; Queen (D) &amp;lt; King (R)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bouts : 1 of Trumps (the Petit), 21 of Trumps and the Fool.&lt;br /&gt;
&lt;br /&gt;
=== Card points ===&lt;br /&gt;
• Bout: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• King: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• Queen: 3 points and a half&lt;br /&gt;
&lt;br /&gt;
• Knight: 2 points and a half&lt;br /&gt;
&lt;br /&gt;
• Jack: 1 point and a half&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• Any other card: half a point.&lt;br /&gt;
&lt;br /&gt;
=== Taker&#039;s goal ===&lt;br /&gt;
• 0 Bout : 56 points&lt;br /&gt;
&lt;br /&gt;
• 1 Bout : 51 points&lt;br /&gt;
&lt;br /&gt;
• 2 Bouts: 41 points&lt;br /&gt;
&lt;br /&gt;
• 3 Bouts: 36 points.&lt;br /&gt;
&lt;br /&gt;
=== Play ===&lt;br /&gt;
• One must follow suit&lt;br /&gt;
&lt;br /&gt;
• One must play a Trump if one cannot follow suit&lt;br /&gt;
&lt;br /&gt;
• If one must play a Trump, one must play an higher Trump than any Trump already played on the trick&lt;br /&gt;
&lt;br /&gt;
• One must play a lower Trump if unable to play an higher&lt;br /&gt;
&lt;br /&gt;
• If one cannot follow suit nor play a Trump, one can play any card&lt;br /&gt;
&lt;br /&gt;
• The Fool can be played anytime, &#039;&#039;&#039;except on the last trick, otherwise it switches sides&#039;&#039;&#039; (exception: Chelem)&lt;br /&gt;
&lt;br /&gt;
=== Bids ===&lt;br /&gt;
• Small: coefficient x 1&lt;br /&gt;
&lt;br /&gt;
• Guard: coefficient x 2&lt;br /&gt;
&lt;br /&gt;
• Guard without the Kitty: coefficient x 4&lt;br /&gt;
&lt;br /&gt;
• Guard against the Kitty: coefficient x 6&lt;br /&gt;
&lt;br /&gt;
For Small and Guard, the Kitty is revealed and the taker integrates it in his/her hand then discards.&lt;br /&gt;
&lt;br /&gt;
=== Petit au bout ===&lt;br /&gt;
If the Petit is played on the last trick, the team who wins that trick scores the Petit au bout bonus:&lt;br /&gt;
&lt;br /&gt;
• 10 points x coefficient of the bid.&lt;br /&gt;
&lt;br /&gt;
=== Poignées ===&lt;br /&gt;
• Simple Poignée, 13 Trumps with three players, 10 Trumps with four players, 8 Trumps with five players, 20 points&lt;br /&gt;
&lt;br /&gt;
• Double Poignée, 15 Trumps with three players, 13 Trumps with four players, 10 Trumps with five players, 30 points&lt;br /&gt;
&lt;br /&gt;
• Triple Poignée, 18 Trumps with three players, 15 Trumps with four players, 13 Trumps with five players, 40 points&lt;br /&gt;
&lt;br /&gt;
The Poignée bonus is won by the team who wins the hand (it not multiplied by the bid coefficient).&lt;br /&gt;
&lt;br /&gt;
=== Chelem ===&lt;br /&gt;
That is winning all tricks. Can be announced over the normal bid.&lt;br /&gt;
&lt;br /&gt;
• 400 points if announced and achieved (it not multiplied by the bid coefficient)&lt;br /&gt;
&lt;br /&gt;
• 200 points if silent and achieved&lt;br /&gt;
&lt;br /&gt;
• -200 points if announced but failed&lt;br /&gt;
&lt;br /&gt;
If the team acheving the Chelem has the Fool in hand, it can be played on the last trick and it will win it. In this case, the Petit is considered au bout at the penultimate trick.&lt;br /&gt;
&lt;br /&gt;
=== Misères (variant) ===&lt;br /&gt;
• Misère of Trumps: no Trump nor the Fool, 10 points&lt;br /&gt;
&lt;br /&gt;
• Misère of Honnours: no Figure nor Bout, 10 points&lt;br /&gt;
&lt;br /&gt;
The announced Misères are paid immediately to the declarer, whoever wins the hand next.&lt;br /&gt;
&lt;br /&gt;
=== Goulash (variant) ===&lt;br /&gt;
If everybody pass, it is free-for-all and the goal is to avoid taking points.&lt;br /&gt;
&lt;br /&gt;
At the hand of the hand, each player pays each opponent the points he took.&lt;br /&gt;
&lt;br /&gt;
The play is the same but there is no Petit au bout nor Chelem and Poignées cannot be declared.&lt;br /&gt;
&lt;br /&gt;
The Fool remains the property of one who plays it. If it is played on the last tricks, it wins it.&lt;br /&gt;
&lt;br /&gt;
The Kitty is not revealed and is no one property.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3520</id>
		<title>Gamehelpfrenchtarot</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3520"/>
		<updated>2019-06-27T19:53:17Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS PAGE WAS WRITTEN BY A FRENCH PLAYER...&lt;br /&gt;
DO NOT HESITATE TO CORRECT THAT CLUMSY ENGLISH ;)&lt;br /&gt;
&lt;br /&gt;
=== Cards ===&lt;br /&gt;
• 21 Trumps numbered from 1 to 21&lt;br /&gt;
&lt;br /&gt;
• The Fool&lt;br /&gt;
&lt;br /&gt;
• 14 cards in each color suit, increasing order : 1 2 3 4 5 6 7 8 9 10 V C D R&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jack (V) &amp;lt; Knight (C) &amp;lt; Queen (D) &amp;lt; King (R)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bouts : 1 of Trumps (the Petit), 21 of Trumps and the Fool.&lt;br /&gt;
&lt;br /&gt;
=== Card points ===&lt;br /&gt;
• Bout: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• King: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• Queen: 3 points and a half&lt;br /&gt;
&lt;br /&gt;
• Knight: 2 points and a half&lt;br /&gt;
&lt;br /&gt;
• Jack: 1 point and a half&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• Any other card: half a point.&lt;br /&gt;
&lt;br /&gt;
=== Taker&#039;s goal ===&lt;br /&gt;
• 0 Bout : 56 points&lt;br /&gt;
&lt;br /&gt;
• 1 Bout : 51 points&lt;br /&gt;
&lt;br /&gt;
• 2 Bouts: 41 points&lt;br /&gt;
&lt;br /&gt;
• 3 Bouts: 36 points.&lt;br /&gt;
&lt;br /&gt;
=== Play ===&lt;br /&gt;
• One must follow suit&lt;br /&gt;
&lt;br /&gt;
• One must play a Trump if one cannot follow suit&lt;br /&gt;
&lt;br /&gt;
• If one must play a Trump, one must play an higher Trump than any Trump already played on the trick&lt;br /&gt;
&lt;br /&gt;
• One must play a lower Trump if unable to play an higher&lt;br /&gt;
&lt;br /&gt;
• If one cannot follow suit nor play a Trump, one can play any card&lt;br /&gt;
&lt;br /&gt;
• The Fool can be played anytime, &#039;&#039;&#039;except on the last trick, otherwise it switches sides&#039;&#039;&#039; (exception: Chelem)&lt;br /&gt;
&lt;br /&gt;
=== Bids ===&lt;br /&gt;
• Small: coefficient x 1&lt;br /&gt;
&lt;br /&gt;
• Guard: coefficient x 2&lt;br /&gt;
&lt;br /&gt;
• Guard without the Kitty: coefficient x 4&lt;br /&gt;
&lt;br /&gt;
• Guard against the Kitty: coefficient x 6&lt;br /&gt;
&lt;br /&gt;
For Small and Guard, the Kitty is revealed and the taker integrates it in his/her hand then discards.&lt;br /&gt;
&lt;br /&gt;
=== Petit au bout ===&lt;br /&gt;
If the Petit is played on the last trick, the team who wins that trick scores the Petit au bout bonus:&lt;br /&gt;
&lt;br /&gt;
• 10 points x coefficient of the bid.&lt;br /&gt;
&lt;br /&gt;
=== Poignées ===&lt;br /&gt;
• Simple Poignée, 13 Trumps with three players, 10 Trumps with four players, 8 Trumps with five players, 20 points&lt;br /&gt;
&lt;br /&gt;
• Double Poignée, 15 Trumps with three players, 13 Trumps with four players, 10 Trumps with five players, 30 points&lt;br /&gt;
&lt;br /&gt;
• Triple Poignée, 18 Trumps with three players, 15 Trumps with four players, 13 Trumps with five players, 40 points&lt;br /&gt;
&lt;br /&gt;
The Poignée bonus is won by the team who wins the hand (it not multiplied by the bid coefficient).&lt;br /&gt;
&lt;br /&gt;
=== Chelem ===&lt;br /&gt;
That is winning all tricks. Can be announced over the normal bid.&lt;br /&gt;
&lt;br /&gt;
• 400 points if announced and achieved (it not multiplied by the bid coefficient)&lt;br /&gt;
&lt;br /&gt;
• 200 points if silent and achieved&lt;br /&gt;
&lt;br /&gt;
• -200 points if announced but failed&lt;br /&gt;
&lt;br /&gt;
If the team acheving the Chelem has the Fool in hand, it can be played on the last trick and it will win it. In this case, the Petit is considered au bout at the penultimate trick.&lt;br /&gt;
&lt;br /&gt;
=== Misères (variant) ===&lt;br /&gt;
• Misère of Trumps: no Trump nor the Fool, 10 points&lt;br /&gt;
&lt;br /&gt;
• Misère of Honnours: no Figure nor Bout, 10 points&lt;br /&gt;
&lt;br /&gt;
The announced Misères are paid immediately to the declarer, whoever wins the hand next.&lt;br /&gt;
&lt;br /&gt;
=== Goulash (variant) ===&lt;br /&gt;
If everybody pass, it is free-for-all and the goal is to avoid taking points.&lt;br /&gt;
&lt;br /&gt;
At the hand of the hand, each player pays each opponent the points he took.&lt;br /&gt;
&lt;br /&gt;
The play is the same but there is no Petit au bout nor Chelem and Poignées cannot be declared.&lt;br /&gt;
&lt;br /&gt;
The Fool remains the property of one who plays it. If it is played on the last tricks, it wins it.&lt;br /&gt;
&lt;br /&gt;
The Kitty is not revealed and is no one property.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3519</id>
		<title>Gamehelpfrenchtarot</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3519"/>
		<updated>2019-06-27T19:48:26Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Cards ===&lt;br /&gt;
• 21 Trumps numbered from 1 to 21&lt;br /&gt;
&lt;br /&gt;
• The Fool&lt;br /&gt;
&lt;br /&gt;
• 14 cards in each color suit, increasing order : 1 2 3 4 5 6 7 8 9 10 V C D R&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jack (V) &amp;lt; Knight (C) &amp;lt; Queen (D) &amp;lt; King (R)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bouts : 1 of Trumps (the Petit), 21 of Trumps and the Fool.&lt;br /&gt;
&lt;br /&gt;
=== Card points ===&lt;br /&gt;
• Bout: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• King: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• Queen: 3 points and a half&lt;br /&gt;
&lt;br /&gt;
• Knight: 2 points and a half&lt;br /&gt;
&lt;br /&gt;
• Jack: 1 point and a half&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• Any other card: half a point.&lt;br /&gt;
&lt;br /&gt;
=== Taker&#039;s goal ===&lt;br /&gt;
• 0 Bout : 56 points&lt;br /&gt;
&lt;br /&gt;
• 1 Bout : 51 points&lt;br /&gt;
&lt;br /&gt;
• 2 Bouts: 41 points&lt;br /&gt;
&lt;br /&gt;
• 3 Bouts: 36 points.&lt;br /&gt;
&lt;br /&gt;
=== Play ===&lt;br /&gt;
• One must follow suit&lt;br /&gt;
&lt;br /&gt;
• One must play a Trump if one cannot follow suit&lt;br /&gt;
&lt;br /&gt;
• If one must play a Trump, one must play an higher Trump than any Trump already played on the trick&lt;br /&gt;
&lt;br /&gt;
• One must play a lower Trump if unable to play an higher&lt;br /&gt;
&lt;br /&gt;
• If one cannot follow suit nor play a Trump, one can play any card&lt;br /&gt;
&lt;br /&gt;
• The Fool can be played anytime, &#039;&#039;&#039;except on the last trick, otherwise it switches sides&#039;&#039;&#039; (exception: Chelem)&lt;br /&gt;
&lt;br /&gt;
=== Bids ===&lt;br /&gt;
• Small: coefficient x 1&lt;br /&gt;
&lt;br /&gt;
• Guard: coefficient x 2&lt;br /&gt;
&lt;br /&gt;
• Guard without the Kitty: coefficient x 4&lt;br /&gt;
&lt;br /&gt;
• Guard against the Kitty: coefficient x 6&lt;br /&gt;
&lt;br /&gt;
For Small and Guard, the Kitty is revealed and the taker integrates it in his/her hand then discards.&lt;br /&gt;
&lt;br /&gt;
=== Petit au bout ===&lt;br /&gt;
If the Petit is played on the last trick, the team who wins that trick scores the Petit au bout bonus:&lt;br /&gt;
&lt;br /&gt;
• 10 points x coefficient of the bid.&lt;br /&gt;
&lt;br /&gt;
=== Poignées ===&lt;br /&gt;
• Simple Poignée, 13 Trumps with three players, 10 Trumps with four players, 8 Trumps with five players, 20 points&lt;br /&gt;
&lt;br /&gt;
• Double Poignée, 15 Trumps with three players, 13 Trumps with four players, 10 Trumps with five players, 30 points&lt;br /&gt;
&lt;br /&gt;
• Triple Poignée, 18 Trumps with three players, 15 Trumps with four players, 13 Trumps with five players, 40 points&lt;br /&gt;
&lt;br /&gt;
The Poignée bonus is won by the team who wins the hand (it not multiplied by the bid coefficient).&lt;br /&gt;
&lt;br /&gt;
=== Chelem ===&lt;br /&gt;
That is winning all tricks. Can be announced over the normal bid.&lt;br /&gt;
&lt;br /&gt;
• 400 points if announced and achieved (it not multiplied by the bid coefficient)&lt;br /&gt;
&lt;br /&gt;
• 200 points if silent and achieved&lt;br /&gt;
&lt;br /&gt;
• -200 points if announced but failed&lt;br /&gt;
&lt;br /&gt;
If the team acheving the Chelem has the Fool in hand, it can be played on the last trick and it will win it. In this case, the Petit is considered au bout at the penultimate trick.&lt;br /&gt;
&lt;br /&gt;
=== Misères (variant) ===&lt;br /&gt;
• Misère of Trumps: no Trump nor the Fool, 10 points&lt;br /&gt;
&lt;br /&gt;
• Misère of Honnours: no Figure nor Bout, 10 points&lt;br /&gt;
&lt;br /&gt;
The announced Misères are paid immediately to the declarer, whoever wins the hand next.&lt;br /&gt;
&lt;br /&gt;
=== Goulash (variant) ===&lt;br /&gt;
If everybody pass, it is free-for-all and the goal is to avoid taking points.&lt;br /&gt;
&lt;br /&gt;
At the hand of the hand, each player pays each opponent the points he took.&lt;br /&gt;
&lt;br /&gt;
The play is the same but there is no Petit au bout nor Chelem and Poignées cannot be declared.&lt;br /&gt;
&lt;br /&gt;
The Fool remains the property of one who plays it. If it is played on the last tricks, it wins it.&lt;br /&gt;
&lt;br /&gt;
The Kitty is not revealed and is no one property.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Tips_frenchtarot&amp;diff=3518</id>
		<title>Tips frenchtarot</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Tips_frenchtarot&amp;diff=3518"/>
		<updated>2019-06-27T19:47:48Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3517</id>
		<title>Gamehelpfrenchtarot</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3517"/>
		<updated>2019-06-27T19:45:45Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Cards ===&lt;br /&gt;
• 21 Trumps numbered from 1 to 21.&lt;br /&gt;
&lt;br /&gt;
• The Fool&lt;br /&gt;
&lt;br /&gt;
• 14 cards in each color suit, increasing order : 1 2 3 4 5 6 7 8 9 10 V C D R&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jack (V) &amp;lt; Knight (C) &amp;lt; Queen (D) &amp;lt; King (R)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bouts : 1 of Trumps (the Petit), 21 of Trumps and the Fool.&lt;br /&gt;
&lt;br /&gt;
=== Card points ===&lt;br /&gt;
• Bout: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• King: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• Queen: 3 points and a half&lt;br /&gt;
&lt;br /&gt;
• Knight: 2 points and a half&lt;br /&gt;
&lt;br /&gt;
• Jack: 1 point and a half&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• Any other card: half a point.&lt;br /&gt;
&lt;br /&gt;
=== Taker&#039;s goal ===&lt;br /&gt;
• 0 Bout : 56 points&lt;br /&gt;
&lt;br /&gt;
• 1 Bout : 51 points&lt;br /&gt;
&lt;br /&gt;
• 2 Bouts: 41 points&lt;br /&gt;
&lt;br /&gt;
• 3 Bouts: 36 points.&lt;br /&gt;
&lt;br /&gt;
=== Play ===&lt;br /&gt;
• One must follow suit&lt;br /&gt;
&lt;br /&gt;
• One must play a Trump if one cannot follow suit&lt;br /&gt;
&lt;br /&gt;
• If one must play a Trump, one must play an higher Trump than any Trump already played on the trick&lt;br /&gt;
&lt;br /&gt;
• One must play a lower Trump if unable to play an higher&lt;br /&gt;
&lt;br /&gt;
• If one cannot follow suit nor play a Trump, one can play any card&lt;br /&gt;
&lt;br /&gt;
• The Fool can be played anytime, &#039;&#039;&#039;except on the last trick, otherwise it switches sides&#039;&#039;&#039; (exception: Chelem)&lt;br /&gt;
&lt;br /&gt;
=== Bids ===&lt;br /&gt;
• Small: coefficient x 1&lt;br /&gt;
&lt;br /&gt;
• Guard: coefficient x 2&lt;br /&gt;
&lt;br /&gt;
• Guard without the Kitty: coefficient x 4&lt;br /&gt;
&lt;br /&gt;
• Guard against the Kitty: coefficient x 6&lt;br /&gt;
&lt;br /&gt;
For Small and Guard, the Kitty is revealed and the taker integrates it in his/her hand then discards.&lt;br /&gt;
&lt;br /&gt;
=== Petit au bout ===&lt;br /&gt;
If the Petit is played on the last trick, the team who wins that trick scores the Petit au bout bonus:&lt;br /&gt;
&lt;br /&gt;
• 10 points x coefficient of the bid.&lt;br /&gt;
&lt;br /&gt;
=== Poignées ===&lt;br /&gt;
• Simple Poignée, 13 Trumps with three players, 10 Trumps with four players, 8 Trumps with five players, 20 points&lt;br /&gt;
&lt;br /&gt;
• Double Poignée, 15 Trumps with three players, 13 Trumps with four players, 10 Trumps with five players, 30 points&lt;br /&gt;
&lt;br /&gt;
• Triple Poignée, 18 Trumps with three players, 15 Trumps with four players, 13 Trumps with five players, 40 points&lt;br /&gt;
&lt;br /&gt;
The Poignée bonus is won by the team who wins the hand (it not multiplied by the bid coefficient).&lt;br /&gt;
&lt;br /&gt;
=== Chelem ===&lt;br /&gt;
That is winning all tricks. Can be announced over the normal bid.&lt;br /&gt;
&lt;br /&gt;
• 400 points if announced and achieved (it not multiplied by the bid coefficient)&lt;br /&gt;
&lt;br /&gt;
• 200 points if silent and achieved&lt;br /&gt;
&lt;br /&gt;
• -200 points if announced but failed&lt;br /&gt;
&lt;br /&gt;
If the team acheving the Chelem has the Fool in hand, it can be played on the last trick and it will win it. In this case, the Petit is considered au bout at the penultimate trick.&lt;br /&gt;
&lt;br /&gt;
=== Misères (variant) ===&lt;br /&gt;
• Misère of Trumps: no Trump nor the Fool, 10 points&lt;br /&gt;
&lt;br /&gt;
• Misère of Honnours: no Figure nor Bout, 10 points&lt;br /&gt;
&lt;br /&gt;
The announced Misères are paid immediately to the declarer, whoever wins the hand next.&lt;br /&gt;
&lt;br /&gt;
=== Goulash (variant) ===&lt;br /&gt;
If everybody pass, it is free-for-all and the goal is to avoid taking points.&lt;br /&gt;
&lt;br /&gt;
At the hand of the hand, each player pays each opponent the points he took.&lt;br /&gt;
&lt;br /&gt;
The play is the same but there is no Petit au bout nor Chelem and Poignées cannot be declared.&lt;br /&gt;
&lt;br /&gt;
The Fool remains the property of one who plays it. If it is played on the last tricks, it wins it.&lt;br /&gt;
&lt;br /&gt;
The Kitty is not revealed and is no one property.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3516</id>
		<title>Gamehelpfrenchtarot</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3516"/>
		<updated>2019-06-27T19:44:27Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Cartes ===&lt;br /&gt;
• 21 Atouts numérotés de 1 à 21.&lt;br /&gt;
&lt;br /&gt;
• L&#039;Excuse&lt;br /&gt;
&lt;br /&gt;
• 14 cartes dans chaque couleur, par ordre croissant : 1 2 3 4 5 6 7 8 9 10 V C D R&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Valet (V) &amp;lt; Cavalier (C) &amp;lt; Dame (D) &amp;lt; Roi (R)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bouts : 1 d&#039;Atout (le Petit), 21 d&#039;Atout et l&#039;Excuse.&lt;br /&gt;
&lt;br /&gt;
=== Points des cartes ===&lt;br /&gt;
• Bout : 4 points et demi&lt;br /&gt;
&lt;br /&gt;
• Roi : 4 points et demi&lt;br /&gt;
&lt;br /&gt;
• Dame : 3 points et demi&lt;br /&gt;
&lt;br /&gt;
• Cavalier : 2 points et demi&lt;br /&gt;
&lt;br /&gt;
• Valet : 1 point et demi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• Toute autre carte : un demi point.&lt;br /&gt;
&lt;br /&gt;
=== Objectif du preneur ===&lt;br /&gt;
• 0 Bout  : 56 points&lt;br /&gt;
&lt;br /&gt;
• 1 Bout  : 51 points&lt;br /&gt;
&lt;br /&gt;
• 2 Bouts : 41 points&lt;br /&gt;
&lt;br /&gt;
• 3 Bouts : 36 points.&lt;br /&gt;
&lt;br /&gt;
=== Jeu de la carte ===&lt;br /&gt;
• Obligé de fournir&lt;br /&gt;
&lt;br /&gt;
• Obligé de couper&lt;br /&gt;
&lt;br /&gt;
• Obligé de surcouper&lt;br /&gt;
&lt;br /&gt;
• Obligé de souscouper si on ne peut pas surcouper&lt;br /&gt;
&lt;br /&gt;
• Si peut pas fournir ni couper, défausse d&#039;une carte au choix&lt;br /&gt;
&lt;br /&gt;
• Excuse jouable n&#039;importe quand, &#039;&#039;&#039;sauf au dernier pli, sinon elle change de camp&#039;&#039;&#039; (exception : Chelem)&lt;br /&gt;
&lt;br /&gt;
=== Enchères ===&lt;br /&gt;
• Petite : coefficient x 1&lt;br /&gt;
&lt;br /&gt;
• Garde : coefficient x 2&lt;br /&gt;
&lt;br /&gt;
• Garde sans le Chien : coefficient x 4&lt;br /&gt;
&lt;br /&gt;
• Garde contre le Chien : coefficient x 6&lt;br /&gt;
&lt;br /&gt;
Pour Petite et Garde, révélation du Chien et écart.&lt;br /&gt;
&lt;br /&gt;
=== Petit au bout ===&lt;br /&gt;
Si le Petit est joué au dernier pli, le camp vainqueur de ce pli gagne la prime du Petit au bout :&lt;br /&gt;
&lt;br /&gt;
• 10 points x coefficient du contrat.&lt;br /&gt;
&lt;br /&gt;
=== Poignées ===&lt;br /&gt;
• Simple Poignée, 13 Atouts à trois, 10 Atouts à quatre, 8 Atouts à cinq, 20 points&lt;br /&gt;
&lt;br /&gt;
• Double Poignée, 15 Atouts à trois, 13 Atouts à quatre, 10 Atouts à cinq, 30 points&lt;br /&gt;
&lt;br /&gt;
• Triple Poignée, 18 Atouts à trois, 15 Atouts à quatre, 13 Atouts à cinq, 40 points&lt;br /&gt;
&lt;br /&gt;
La prime de Poignée est remporté par le camp vainqueur du coup (non multiplié par le contrat).&lt;br /&gt;
&lt;br /&gt;
=== Chelem ===&lt;br /&gt;
Faire tous les plis. S&#039;annonce éventuellement en plus du contrat.&lt;br /&gt;
&lt;br /&gt;
• 400 points si annoncé et réalisé (non multiplié par le contrat)&lt;br /&gt;
&lt;br /&gt;
• 200 points si non-annoncé et réalisé&lt;br /&gt;
&lt;br /&gt;
• -200 points si annoncé mais non réalisé&lt;br /&gt;
&lt;br /&gt;
Si celui qui réalise le Chelem a l&#039;Excuse, il peut la jouer au dernier coup pour remporter le pli. Dans ce cas, Petit au bout à l&#039;avant-dernier pli.&lt;br /&gt;
&lt;br /&gt;
=== Misères (variante) ===&lt;br /&gt;
• Misère d&#039;Atouts : aucun Atout ni l&#039;Excuse, 10 points&lt;br /&gt;
&lt;br /&gt;
• Misère d&#039;Honneurs : aucune Figure (Tête) ni Bout, 10 points&lt;br /&gt;
&lt;br /&gt;
Les Misères annoncées sont payées immédiatement au déclarant, quel que soit le camp vainqueur.&lt;br /&gt;
&lt;br /&gt;
=== Goulash (variante) ===&lt;br /&gt;
Si tout le monde passe, chacun joue pour soi et le but est de prendre le moins de points possible.&lt;br /&gt;
&lt;br /&gt;
À la fin, chacun paie à chaque adversaire le nombre de points qu&#039;il a réalisé.&lt;br /&gt;
&lt;br /&gt;
Le jeu de la carte est identique mais il n&#039;y a pas de Petit au Bout ni de Chelem et on ne peut pas déclarer de Poignée.&lt;br /&gt;
&lt;br /&gt;
L&#039;Excuse reste la propriété de celui qui le joue. Si elle est jouée au dernier pli, elle le remporte.&lt;br /&gt;
&lt;br /&gt;
Le Chien n&#039;est pas révélé et n&#039;appartient à personne.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3515</id>
		<title>Gamehelpfrenchtarot</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3515"/>
		<updated>2019-06-27T19:42:16Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Cards ===&lt;br /&gt;
• 21 Trumps numbered from 1 to 21.&lt;br /&gt;
&lt;br /&gt;
• The Fool&lt;br /&gt;
&lt;br /&gt;
• 14 cards in each color suit, increasing order : 1 2 3 4 5 6 7 8 9 10 V C D R&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jack (V) &amp;lt; Knight (C) &amp;lt; Queen (D) &amp;lt; King (R)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bouts : 1 of Trumps (the Petit), 21 of Trumps and the Fool.&lt;br /&gt;
&lt;br /&gt;
=== Card points ===&lt;br /&gt;
• Bout: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• King: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• Queen: 3 points and a half&lt;br /&gt;
&lt;br /&gt;
• Knight: 2 points and a half&lt;br /&gt;
&lt;br /&gt;
• Jack: 1 point and a half&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• Any other card: half a point.&lt;br /&gt;
&lt;br /&gt;
=== Taker&#039;s goal ===&lt;br /&gt;
• 0 Bout : 56 points&lt;br /&gt;
&lt;br /&gt;
• 1 Bout : 51 points&lt;br /&gt;
&lt;br /&gt;
• 2 Bouts: 41 points&lt;br /&gt;
&lt;br /&gt;
• 3 Bouts: 36 points.&lt;br /&gt;
&lt;br /&gt;
=== Play ===&lt;br /&gt;
• One must follow suit&lt;br /&gt;
&lt;br /&gt;
• One must play a Trump if one cannot follow suit&lt;br /&gt;
&lt;br /&gt;
• If one must play a Trump, one must play an higher Trump than any Trump already played on the trick&lt;br /&gt;
&lt;br /&gt;
• One must play a lower Trump if unable to play an higher&lt;br /&gt;
&lt;br /&gt;
• If one cannot follow suit nor play a Trump, one can play any card&lt;br /&gt;
&lt;br /&gt;
• The Fool can be played anytime, &#039;&#039;&#039;except on the last trick, otherwise it switches sides&#039;&#039;&#039; (exception: Chelem)&lt;br /&gt;
&lt;br /&gt;
=== Bids ===&lt;br /&gt;
• Small: coefficient x 1&lt;br /&gt;
&lt;br /&gt;
• Guard: coefficient x 2&lt;br /&gt;
&lt;br /&gt;
• Guard without the Kitty: coefficient x 4&lt;br /&gt;
&lt;br /&gt;
• Guard against the Kitty: coefficient x 6&lt;br /&gt;
&lt;br /&gt;
For Small and Guard, the Kitty is revealed and the taker integrates it in his/her hand then discards.&lt;br /&gt;
&lt;br /&gt;
=== Petit au bout ===&lt;br /&gt;
If the Petit is played on the last trick, the team who wins that trick scores the Petit au bout bonus:&lt;br /&gt;
&lt;br /&gt;
• 10 points x coefficient of the bid.&lt;br /&gt;
&lt;br /&gt;
=== Poignées ===&lt;br /&gt;
• Simple Poignée, 13 Trumps with three players, 10 Trumps with four players, 8 Trumps with five players, 20 points&lt;br /&gt;
&lt;br /&gt;
• Double Poignée, 15 Trumps with three players, 13 Trumps with four players, 10 Trumps with five players, 30 points&lt;br /&gt;
&lt;br /&gt;
• Triple Poignée, 18 Trumps with three players, 15 Trumps with four players, 13 Trumps with five players, 40 points&lt;br /&gt;
&lt;br /&gt;
The Poignée bonus is won by the team who wins the hand (it not multiplied by the bid coefficient).&lt;br /&gt;
&lt;br /&gt;
=== Chelem ===&lt;br /&gt;
That is winning all tricks. Can be announced over the normal bid.&lt;br /&gt;
&lt;br /&gt;
• 400 points if announced and achieved (it not multiplied by the bid coefficient)&lt;br /&gt;
&lt;br /&gt;
• 200 points if silent and achieved&lt;br /&gt;
&lt;br /&gt;
• -200 points if announced but failed&lt;br /&gt;
&lt;br /&gt;
If the team acheving the Chelem has the Fool in hand, it can be played on the last trick and it will win it. In this case, the Petit is considered au bout at the penultimate trick.&lt;br /&gt;
&lt;br /&gt;
=== Misères (variant) ===&lt;br /&gt;
• Misère of Trumps: no Trump nor the Fool, 10 points&lt;br /&gt;
&lt;br /&gt;
• Misère of Honnours: no Figure nor Bout, 10 points&lt;br /&gt;
&lt;br /&gt;
The announced Misères are paid immediately to the declarer, whoever wins the hand next.&lt;br /&gt;
&lt;br /&gt;
=== Goulash (variant) ===&lt;br /&gt;
If everybody pass, it is free-for-all and the goal is to avoid taking points.&lt;br /&gt;
&lt;br /&gt;
At the hand of the hand, each player pays each opponent the points he took.&lt;br /&gt;
&lt;br /&gt;
The play is the same but there is no Petit au bout nor Chelem and Poignées cannot be declared.&lt;br /&gt;
&lt;br /&gt;
The Fool remains the property of one who plays it. If it is played on the last tricks, it wins it.&lt;br /&gt;
&lt;br /&gt;
The Kitty is not revealed and is no one property.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3514</id>
		<title>Gamehelpfrenchtarot</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3514"/>
		<updated>2019-06-27T19:41:33Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Cards ===&lt;br /&gt;
• 21 Trumps numbered from 1 to 21.&lt;br /&gt;
&lt;br /&gt;
• The Fool&lt;br /&gt;
&lt;br /&gt;
• 14 cards in each color suit, increasing order : 1 2 3 4 5 6 7 8 9 10 V C D R&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jack (V) &amp;lt; Knight (C) &amp;lt; Queen (D) &amp;lt; King (R)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bouts : 1 of Trumps (the Petit), 21 of Trumps and the Fool.&lt;br /&gt;
&lt;br /&gt;
=== Card points ===&lt;br /&gt;
• Bout: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• King: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• Queen: 3 points and a half&lt;br /&gt;
&lt;br /&gt;
• Knight: 2 points and a half&lt;br /&gt;
&lt;br /&gt;
• Jack: 1 point and a half&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• Any other card: half a point.&lt;br /&gt;
&lt;br /&gt;
=== Taker&#039;s goal ===&lt;br /&gt;
• 0 Bout : 56 points&lt;br /&gt;
&lt;br /&gt;
• 1 Bout : 51 points&lt;br /&gt;
&lt;br /&gt;
• 2 Bouts: 41 points&lt;br /&gt;
&lt;br /&gt;
• 3 Bouts: 36 points.&lt;br /&gt;
&lt;br /&gt;
=== Play ===&lt;br /&gt;
• One must follow suit&lt;br /&gt;
&lt;br /&gt;
• One must play a Trump if one cannot follow suit&lt;br /&gt;
&lt;br /&gt;
• If one must play a Trump, one must play an higher Trump than any Trump already played on the trick&lt;br /&gt;
&lt;br /&gt;
• One must play a lower Trump if unable to play an higher&lt;br /&gt;
&lt;br /&gt;
• If one cannot follow suit nor play a Trump, one can play any card&lt;br /&gt;
&lt;br /&gt;
• The Fool can be played anytime, &#039;&#039;&#039;except on the last trick, otherwise it switches sides&#039;&#039;&#039; (exception: Chelem)&lt;br /&gt;
&lt;br /&gt;
=== Bids ===&lt;br /&gt;
• Small: coefficient x 1&lt;br /&gt;
&lt;br /&gt;
• Guard: coefficient x 2&lt;br /&gt;
&lt;br /&gt;
• Guard without the Kitty: coefficient x 4&lt;br /&gt;
&lt;br /&gt;
• Guard against the Kitty: coefficient x 6&lt;br /&gt;
&lt;br /&gt;
For Small and Guard, the Kitty is revealed and the taker integrates it in his/her hand then discards.&lt;br /&gt;
&lt;br /&gt;
=== The Petit au bout ===&lt;br /&gt;
If the Petit is played on the last trick, the team who wins that trick scores the Petit au bout bonus:&lt;br /&gt;
&lt;br /&gt;
• 10 points x coefficient of the bid.&lt;br /&gt;
&lt;br /&gt;
=== Poignées ===&lt;br /&gt;
• Simple Poignée, 13 Trumps with three players, 10 Trumps with four players, 8 Trumps with five players, 20 points&lt;br /&gt;
&lt;br /&gt;
• Double Poignée, 15 Trumps with three players, 13 Trumps with four players, 10 Trumps with five players, 30 points&lt;br /&gt;
&lt;br /&gt;
• Triple Poignée, 18 Trumps with three players, 15 Trumps with four players, 13 Trumps with five players, 40 points&lt;br /&gt;
&lt;br /&gt;
The Poignée bonus is won by the team who wins the hand (it not multiplied by the bid coefficient).&lt;br /&gt;
&lt;br /&gt;
=== Chelem ===&lt;br /&gt;
That is winning all tricks. Can be announced over the normal bid.&lt;br /&gt;
&lt;br /&gt;
• 400 points if announced and achieved (it not multiplied by the bid coefficient)&lt;br /&gt;
&lt;br /&gt;
• 200 points if silent and achieved&lt;br /&gt;
&lt;br /&gt;
• -200 points if announced but failed&lt;br /&gt;
&lt;br /&gt;
If the team acheving the Chelem has the Fool in hand, it can be played on the last trick and it will win it. In this case, the Petit is considered au bout at the penultimate trick.&lt;br /&gt;
&lt;br /&gt;
=== Misères (variant) ===&lt;br /&gt;
• Misère of Trumps: no Trump nor the Fool, 10 points&lt;br /&gt;
&lt;br /&gt;
• Misère of Honnours: no Figure nor Bout, 10 points&lt;br /&gt;
&lt;br /&gt;
The announced Misères are paid immediately to the declarer, whoever wins the hand next.&lt;br /&gt;
&lt;br /&gt;
=== Goulash (variant) ===&lt;br /&gt;
If everybody pass, it is free-for-all and the goal is to avoid taking points.&lt;br /&gt;
&lt;br /&gt;
At the hand of the hand, each player pays each opponent the points he took.&lt;br /&gt;
&lt;br /&gt;
The play is the same but there is no Petit au bout nor Chelem and Poignées cannot be declared.&lt;br /&gt;
&lt;br /&gt;
The Fool remains the property of one who plays it. If it is played on the last tricks, it wins it.&lt;br /&gt;
&lt;br /&gt;
The Kitty is not revealed and is no one property.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3513</id>
		<title>Gamehelpfrenchtarot</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3513"/>
		<updated>2019-06-27T19:40:13Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Cartes ===&lt;br /&gt;
• 21 Trumps numbered from 1 to 21.&lt;br /&gt;
&lt;br /&gt;
• The Fool&lt;br /&gt;
&lt;br /&gt;
• 14 cards in each color suit, increasing order : 1 2 3 4 5 6 7 8 9 10 V C D R&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jack (V) &amp;lt; Knight (C) &amp;lt; Queen (D) &amp;lt; King (R)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bouts : 1 of Trumps (the Petit), 21 of Trumps and the Fool.&lt;br /&gt;
&lt;br /&gt;
=== Card points ===&lt;br /&gt;
• Bout: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• King: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• Queen: 3 points and a half&lt;br /&gt;
&lt;br /&gt;
• Knight: 2 points and a half&lt;br /&gt;
&lt;br /&gt;
• Jack: 1 point and a half&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• Any other card: half a point.&lt;br /&gt;
&lt;br /&gt;
=== Taker&#039;s goal ===&lt;br /&gt;
• 0 Bout : 56 points&lt;br /&gt;
&lt;br /&gt;
• 1 Bout : 51 points&lt;br /&gt;
&lt;br /&gt;
• 2 Bouts: 41 points&lt;br /&gt;
&lt;br /&gt;
• 3 Bouts: 36 points.&lt;br /&gt;
&lt;br /&gt;
=== Play ===&lt;br /&gt;
• One must follow suit&lt;br /&gt;
&lt;br /&gt;
• One must play a Trump if one cannot follow suit&lt;br /&gt;
&lt;br /&gt;
• If one must play a Trump, one must play an higher Trump than any Trump already played on the trick&lt;br /&gt;
&lt;br /&gt;
• One must play a lower Trump if unable to play an higher&lt;br /&gt;
&lt;br /&gt;
• If one cannot follow suit nor play a Trump, one can play any card&lt;br /&gt;
&lt;br /&gt;
• The Fool can be played anytime, &#039;&#039;&#039;except on the last trick, otherwise it switches sides&#039;&#039;&#039; (exception: Chelem)&lt;br /&gt;
&lt;br /&gt;
=== Bids ===&lt;br /&gt;
• Small: coefficient x 1&lt;br /&gt;
&lt;br /&gt;
• Guard: coefficient x 2&lt;br /&gt;
&lt;br /&gt;
• Guard without the Kitty: coefficient x 4&lt;br /&gt;
&lt;br /&gt;
• Guard against the Kitty: coefficient x 6&lt;br /&gt;
&lt;br /&gt;
For Small and Guard, the Kitty is revealed and the taker integrates it in his/her hand then discards.&lt;br /&gt;
&lt;br /&gt;
=== The Petit au bout ===&lt;br /&gt;
If the Petit is played on the last trick, the team who wins that trick scores the Petit au bout bonus:&lt;br /&gt;
&lt;br /&gt;
• 10 points x coefficient of the bid.&lt;br /&gt;
&lt;br /&gt;
=== Poignées ===&lt;br /&gt;
• Simple Poignée, 13 Trumps with three players, 10 Trumps with four players, 8 Trumps with five players, 20 points&lt;br /&gt;
&lt;br /&gt;
• Double Poignée, 15 Trumps with three players, 13 Trumps with four players, 10 Trumps with five players, 30 points&lt;br /&gt;
&lt;br /&gt;
• Triple Poignée, 18 Trumps with three players, 15 Trumps with four players, 13 Trumps with five players, 40 points&lt;br /&gt;
&lt;br /&gt;
The Poignée bonus is won by the team who wins the hand (it not multiplied by the bid coefficient).&lt;br /&gt;
&lt;br /&gt;
=== Chelem ===&lt;br /&gt;
That is winning all tricks. Can be announced over the normal bid.&lt;br /&gt;
&lt;br /&gt;
• 400 points if announced and achieved (it not multiplied by the bid coefficient)&lt;br /&gt;
&lt;br /&gt;
• 200 points if silent and achieved&lt;br /&gt;
&lt;br /&gt;
• -200 points if announced but failed&lt;br /&gt;
&lt;br /&gt;
If the team acheving the Chelem has the Fool in hand, it can be played on the last trick and it will win it. In this case, the Petit is considered au bout at the penultimate trick.&lt;br /&gt;
&lt;br /&gt;
=== Misères (variant) ===&lt;br /&gt;
• Misère of Trumps: no Trump nor the Fool, 10 points&lt;br /&gt;
&lt;br /&gt;
• Misère of Honnours: no Figure nor Bout, 10 points&lt;br /&gt;
&lt;br /&gt;
The announced Misères are paid immediately to the declarer, whoever wins the hand next.&lt;br /&gt;
&lt;br /&gt;
=== Goulash (variant) ===&lt;br /&gt;
If everybody pass, it is free-for-all and the goal is to avoid taking points.&lt;br /&gt;
&lt;br /&gt;
At the hand of the hand, each player pays each opponent the points he took.&lt;br /&gt;
&lt;br /&gt;
The play is the same but there is no Petit au bout nor Chelem and Poignées cannot be declared.&lt;br /&gt;
&lt;br /&gt;
The Fool remains the property of one who plays it. If it is played on the last tricks, it wins it.&lt;br /&gt;
&lt;br /&gt;
The Kitty is not revealed and is no one property.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3512</id>
		<title>Gamehelpfrenchtarot</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3512"/>
		<updated>2019-06-27T19:25:12Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Cartes ===&lt;br /&gt;
• 21 Trumps numbered from 1 to 21.&lt;br /&gt;
&lt;br /&gt;
• The Fool&lt;br /&gt;
&lt;br /&gt;
• 14 cards in each color suit, increasing order : 1 2 3 4 5 6 7 8 9 10 V C D R&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jack (V) &amp;lt; Knight (C) &amp;lt; Queen (D) &amp;lt; King (R)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bouts : 1 of Trumps (the Petit), 21 of Trumps and the Fool.&lt;br /&gt;
&lt;br /&gt;
=== Card points ===&lt;br /&gt;
• Bout: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• King: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• Queen: 3 points and a half&lt;br /&gt;
&lt;br /&gt;
• Knight: 2 points and a half&lt;br /&gt;
&lt;br /&gt;
• Jack: 1 point and a half&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• Any other card: half a point.&lt;br /&gt;
&lt;br /&gt;
=== Taker&#039;s goal ===&lt;br /&gt;
• 0 Bout : 56 points&lt;br /&gt;
&lt;br /&gt;
• 1 Bout : 51 points&lt;br /&gt;
&lt;br /&gt;
• 2 Bouts: 41 points&lt;br /&gt;
&lt;br /&gt;
• 3 Bouts: 36 points.&lt;br /&gt;
&lt;br /&gt;
=== Play ===&lt;br /&gt;
• One must follow suit&lt;br /&gt;
&lt;br /&gt;
• One must play a Trump if one cannot follow suit&lt;br /&gt;
&lt;br /&gt;
• If one must play a Trump, one must play an higher Trump than any Trump already played on the trick&lt;br /&gt;
&lt;br /&gt;
• One must play a lower Trump if unable to play an higher&lt;br /&gt;
&lt;br /&gt;
• If one cannot follow suit nor play a Trump, one can play any card&lt;br /&gt;
&lt;br /&gt;
• The Fool can be played anytime, &#039;&#039;&#039;except on the last trick, otherwise it switches sides&#039;&#039;&#039; (exception: Chelem)&lt;br /&gt;
&lt;br /&gt;
=== Bids ===&lt;br /&gt;
• Small: coefficient x 1&lt;br /&gt;
&lt;br /&gt;
• Guard: coefficient x 2&lt;br /&gt;
&lt;br /&gt;
• Guard without the Kitty: coefficient x 4&lt;br /&gt;
&lt;br /&gt;
• Guard against the Kitty: coefficient x 6&lt;br /&gt;
&lt;br /&gt;
For Small and Guard, the Kitty is revealed and the taker integrates it in his/her hand then discards.&lt;br /&gt;
&lt;br /&gt;
=== The Petit au bout ===&lt;br /&gt;
If the Petit is played on the last trick, the team who wins that trick scores the Petit au bout bonus:&lt;br /&gt;
&lt;br /&gt;
• 10 points x coefficient of the bid.&lt;br /&gt;
&lt;br /&gt;
=== Poignées ===&lt;br /&gt;
• Simple Poignée, 13 Trumps with three players, 10 Trumps with four players, 8 Trumps with five players, 20 points&lt;br /&gt;
&lt;br /&gt;
• Double Poignée, 15 Trumps with three players, 13 Trumps with four players, 10 Trumps with five players, 30 points&lt;br /&gt;
&lt;br /&gt;
• Triple Poignée, 18 Trumps with three players, 15 Trumps with four players, 13 Trumps with five players, 40 points&lt;br /&gt;
&lt;br /&gt;
The Poignée bonus is won by the team who wins the hand (it not multiplied by the bid coefficient).&lt;br /&gt;
&lt;br /&gt;
=== Chelem ===&lt;br /&gt;
Faire tous les plis. S&#039;annonce éventuellement en plus du contrat.&lt;br /&gt;
&lt;br /&gt;
• 400 points si annoncé et réalisé (non multiplié par le contrat)&lt;br /&gt;
&lt;br /&gt;
• 200 points si non-annoncé et réalisé&lt;br /&gt;
&lt;br /&gt;
• -200 points si annoncé mais non réalisé&lt;br /&gt;
&lt;br /&gt;
Si celui qui réalise le Chelem a l&#039;Excuse, il peut la jouer au dernier coup pour remporter le pli. Dans ce cas, Petit au bout à l&#039;avant-dernier pli.&lt;br /&gt;
&lt;br /&gt;
=== Misères (variante) ===&lt;br /&gt;
• Misère d&#039;Atout : aucun Atout ni l&#039;Excuse, 10 points&lt;br /&gt;
&lt;br /&gt;
• Misère d&#039;Honneurs : aucune Figure (Tête) ni Bout, 10 points&lt;br /&gt;
&lt;br /&gt;
Les Misères annoncées sont payées immédiatement au déclarant, quel que soit le camp vainqueur.&lt;br /&gt;
&lt;br /&gt;
=== Goulash (variante) ===&lt;br /&gt;
Si tout le monde passe, chacun joue pour soi et le but est de prendre le moins de points possible.&lt;br /&gt;
&lt;br /&gt;
Le jeu de la carte est identique mais il n&#039;y a pas de Petit au Bout ni de Chelem et on ne peut pas déclarer de Poignée.&lt;br /&gt;
&lt;br /&gt;
L&#039;Excuse reste la propriété de celui qui le joue. Si elle est jouée au dernier pli, elle le remporte.&lt;br /&gt;
&lt;br /&gt;
Le Chien n&#039;est pas révélé et n&#039;appartient à personne.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3510</id>
		<title>Gamehelpfrenchtarot</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3510"/>
		<updated>2019-06-27T06:36:16Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Cartes ===&lt;br /&gt;
• 21 Trumps numbered from 1 to 21.&lt;br /&gt;
&lt;br /&gt;
• The Fool&lt;br /&gt;
&lt;br /&gt;
• 14 cards in each color suit, increasing order : 1 2 3 4 5 6 7 8 9 10 V C D R&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Jack (V) &amp;lt; Knight (C) &amp;lt; Queen (D) &amp;lt; King (R)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bouts : 1 of Trumps (the Petit), 21 of Trumps and the Fool.&lt;br /&gt;
&lt;br /&gt;
=== Card points ===&lt;br /&gt;
• Bout: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• King: 4 points and a half&lt;br /&gt;
&lt;br /&gt;
• Queen: 3 points and a half&lt;br /&gt;
&lt;br /&gt;
• Knight: 2 points and a half&lt;br /&gt;
&lt;br /&gt;
• Jack: 1 point and a half&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• Any other card: half a point.&lt;br /&gt;
&lt;br /&gt;
=== Taker&#039;s goal ===&lt;br /&gt;
• 0 Bout : 56 points&lt;br /&gt;
&lt;br /&gt;
• 1 Bout : 51 points&lt;br /&gt;
&lt;br /&gt;
• 2 Bouts: 41 points&lt;br /&gt;
&lt;br /&gt;
• 3 Bouts: 36 points.&lt;br /&gt;
&lt;br /&gt;
=== Play ===&lt;br /&gt;
• One must follow suit&lt;br /&gt;
&lt;br /&gt;
• One must play a Trump if one cannot follow suit&lt;br /&gt;
&lt;br /&gt;
• If one must play a Trump, one must play an higher Trump than any Trump already played on the trick&lt;br /&gt;
&lt;br /&gt;
• One must play a lower Trump if unable to play an higher&lt;br /&gt;
&lt;br /&gt;
• If one cannot follow suit nor play a Trump, one can play any card&lt;br /&gt;
&lt;br /&gt;
• The Fool can be played anytime, &#039;&#039;&#039;except on the last trick, otherwise it switches sides&#039;&#039;&#039; (exception: Chelem)&lt;br /&gt;
&lt;br /&gt;
=== Enchères ===&lt;br /&gt;
• Small: coefficient x 1&lt;br /&gt;
&lt;br /&gt;
• Guard: coefficient x 2&lt;br /&gt;
&lt;br /&gt;
• Guard without the Kitty: coefficient x 4&lt;br /&gt;
&lt;br /&gt;
• Guard against the Kitty: coefficient x 6&lt;br /&gt;
&lt;br /&gt;
Pour Petite et Garde, révélation du Chien et écart.&lt;br /&gt;
&lt;br /&gt;
=== The Petit au bout ===&lt;br /&gt;
If the Petit is played on the last trick, the team who wins that trick scores the Petit au bout bonus:&lt;br /&gt;
&lt;br /&gt;
• 10 points x coefficient of the bid.&lt;br /&gt;
&lt;br /&gt;
=== Poignées ===&lt;br /&gt;
• Simple Poignée, 13 Atouts à trois, 10 Atouts à quatre, 8 Atouts à cinq, 20 points&lt;br /&gt;
&lt;br /&gt;
• Double Poignée, 15 Atouts à trois, 13 Atouts à quatre, 10 Atouts à cinq, 30 points&lt;br /&gt;
&lt;br /&gt;
• Triple Poignée, 18 Atouts à trois, 15 Atouts à quatre, 13 Atouts à cinq, 40 points&lt;br /&gt;
&lt;br /&gt;
La prime de poignée est remporté par le camp vainqueur du coup (non multiplié par le contrat).&lt;br /&gt;
&lt;br /&gt;
=== Chelem ===&lt;br /&gt;
Faire tous les plis. S&#039;annonce éventuellement en plus du contrat.&lt;br /&gt;
&lt;br /&gt;
• 400 points si annoncé et réalisé (non multiplié par le contrat)&lt;br /&gt;
&lt;br /&gt;
• 200 points si non-annoncé et réalisé&lt;br /&gt;
&lt;br /&gt;
• -200 points si annoncé mais non réalisé&lt;br /&gt;
&lt;br /&gt;
Si celui qui réalise le Chelem a l&#039;Excuse, il peut la jouer au dernier coup pour remporter le pli. Dans ce cas, Petit au bout à l&#039;avant-dernier pli.&lt;br /&gt;
&lt;br /&gt;
=== Misères (variante) ===&lt;br /&gt;
• Misère d&#039;Atout : aucun Atout ni l&#039;Excuse, 10 points&lt;br /&gt;
&lt;br /&gt;
• Misère d&#039;Honneurs : aucune Figure (Tête) ni Bout, 10 points&lt;br /&gt;
&lt;br /&gt;
Les Misères annoncées sont payées immédiatement au déclarant, quel que soit le camp vainqueur.&lt;br /&gt;
&lt;br /&gt;
=== Goulash (variante) ===&lt;br /&gt;
Si tout le monde passe, chacun joue pour soi et le but est de prendre le moins de points possible.&lt;br /&gt;
&lt;br /&gt;
Le jeu de la carte est identique mais il n&#039;y a pas de Petit au Bout ni de Chelem et on ne peut pas déclarer de Poignée.&lt;br /&gt;
&lt;br /&gt;
L&#039;Excuse reste la propriété de celui qui le joue. Si elle est jouée au dernier pli, elle le remporte.&lt;br /&gt;
&lt;br /&gt;
Le Chien n&#039;est pas révélé et n&#039;appartient à personne.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
	<entry>
		<id>https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3509</id>
		<title>Gamehelpfrenchtarot</title>
		<link rel="alternate" type="text/html" href="https://en.doc.boardgamearena.com/index.php?title=Gamehelpfrenchtarot&amp;diff=3509"/>
		<updated>2019-06-27T06:19:53Z</updated>

		<summary type="html">&lt;p&gt;Woodruff: Created page with &amp;quot;=== Cartes === • 21 Atouts numérotés de 1 à 21.  • L&amp;#039;Excuse  • 14 cartes dans chaque couleur, par ordre croissant : 1 2 3 4 5 6 7 8 9 10 V C D R  &amp;#039;&amp;#039;&amp;#039;Valet (V) &amp;lt; Caval...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Cartes ===&lt;br /&gt;
• 21 Atouts numérotés de 1 à 21.&lt;br /&gt;
&lt;br /&gt;
• L&#039;Excuse&lt;br /&gt;
&lt;br /&gt;
• 14 cartes dans chaque couleur, par ordre croissant : 1 2 3 4 5 6 7 8 9 10 V C D R&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Valet (V) &amp;lt; Cavalier (C) &amp;lt; Dame (D) &amp;lt; Roi (R)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bouts : 1 d&#039;Atout (le Petit), 21 d&#039;Atout et l&#039;Excuse.&lt;br /&gt;
&lt;br /&gt;
=== Points des cartes ===&lt;br /&gt;
• Bout : 4 points et demi&lt;br /&gt;
&lt;br /&gt;
• Roi : 4 points et demi&lt;br /&gt;
&lt;br /&gt;
• Dame : 3 points et demi&lt;br /&gt;
&lt;br /&gt;
• Cavalier : 2 points et demi&lt;br /&gt;
&lt;br /&gt;
• Valet : 1 point et demi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• Toute autre carte : un demi point.&lt;br /&gt;
&lt;br /&gt;
=== Objectif du preneur ===&lt;br /&gt;
• 0 Bout  : 56 points&lt;br /&gt;
&lt;br /&gt;
• 1 Bout  : 51 points&lt;br /&gt;
&lt;br /&gt;
• 2 Bouts : 41 points&lt;br /&gt;
&lt;br /&gt;
• 3 Bouts : 36 points.&lt;br /&gt;
&lt;br /&gt;
=== Jeu de la carte ===&lt;br /&gt;
• Obligé de fournir&lt;br /&gt;
&lt;br /&gt;
• Obligé de couper&lt;br /&gt;
&lt;br /&gt;
• Obligé de surcouper&lt;br /&gt;
&lt;br /&gt;
• Obligé de souscouper si on ne peut pas surcouper&lt;br /&gt;
&lt;br /&gt;
• Si peut pas fournir ni couper, défausse d&#039;une carte au choix&lt;br /&gt;
&lt;br /&gt;
• Excuse jouable n&#039;importe quand, &#039;&#039;&#039;sauf au dernier pli, sinon elle change de camp&#039;&#039;&#039; (exception : Chelem)&lt;br /&gt;
&lt;br /&gt;
=== Enchères ===&lt;br /&gt;
• Petite : coefficient x 1&lt;br /&gt;
&lt;br /&gt;
• Garde : coefficient x 2&lt;br /&gt;
&lt;br /&gt;
• Garde sans le Chien : coefficient x 4&lt;br /&gt;
&lt;br /&gt;
• Garde contre le Chien : coefficient x 6&lt;br /&gt;
&lt;br /&gt;
Pour Petite et Garde, révélation du Chien et écart.&lt;br /&gt;
&lt;br /&gt;
=== Le Petit au bout ===&lt;br /&gt;
Si le Petit est joué au dernier pli, le camp vainqueur de ce pli gagne la prime du Petit au bout :&lt;br /&gt;
&lt;br /&gt;
• 10 points x coefficient du contrat.&lt;br /&gt;
&lt;br /&gt;
=== Poignées ===&lt;br /&gt;
• Simple Poignée, 13 atouts à trois, 10 atouts à quatre, 8 atouts à cinq, 20 points&lt;br /&gt;
&lt;br /&gt;
• Double Poignée, 15 atouts à trois, 13 atouts à quatre, 10 atouts à cinq, 30 points&lt;br /&gt;
&lt;br /&gt;
• Triple Poignée, 18 atouts à trois, 15 atouts à quatre, 13 atouts à cinq, 40 points&lt;br /&gt;
&lt;br /&gt;
La prime de poignée est remporté par le camp vainqueur du coup (non multiplié par le contrat).&lt;br /&gt;
&lt;br /&gt;
=== Chelem ===&lt;br /&gt;
Faire tous les plis. S&#039;annonce éventuellement en plus du contrat.&lt;br /&gt;
&lt;br /&gt;
• 400 points si annoncé et réalisé (non multiplié par le contrat)&lt;br /&gt;
&lt;br /&gt;
• 200 points si non-annoncé et réalisé&lt;br /&gt;
&lt;br /&gt;
• -200 points si annoncé mais non réalisé&lt;br /&gt;
&lt;br /&gt;
Si celui qui réalise le Chelem a l&#039;Excuse, il peut la jouer au dernier coup pour remporter le pli. Dans ce cas, Petit au bout à l&#039;avant-dernier pli.&lt;br /&gt;
&lt;br /&gt;
=== Misères (variante) ===&lt;br /&gt;
• Misère d&#039;Atout : aucun Atout ni l&#039;Excuse, 10 points&lt;br /&gt;
&lt;br /&gt;
• Misère d&#039;Honneurs : aucune Figure (Tête) ni Bout, 10 points&lt;br /&gt;
&lt;br /&gt;
Les Misères annoncées sont payées immédiatement au déclarant, quel que soit le camp vainqueur.&lt;br /&gt;
&lt;br /&gt;
=== Goulash (variante) ===&lt;br /&gt;
Si tout le monde passe, chacun joue pour soi et le but est de prendre le moins de points possible.&lt;br /&gt;
&lt;br /&gt;
Le jeu de la carte est identique mais il n&#039;y a pas de Petit au Bout ni de Chelem et on ne peut pas déclarer de Poignée.&lt;br /&gt;
&lt;br /&gt;
L&#039;Excuse reste la propriété de celui qui le joue. Si elle est jouée au dernier pli, elle le remporte.&lt;br /&gt;
&lt;br /&gt;
Le Chien n&#039;est pas révélé et n&#039;appartient à personne.&lt;/div&gt;</summary>
		<author><name>Woodruff</name></author>
	</entry>
</feed>