From: Arun Persaud Date: Sat, 18 Oct 2008 23:46:59 +0000 (-0700) Subject: NEW FEATURE: implement Lance's Schweinchen rule X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=commitdiff_plain;h=567f0d615194566c629887a315cd864bbe84fde9;hp=eb20bf1a0cae1192eb50c19220e72df8d971d8e7 NEW FEATURE: implement Lance's Schweinchen rule new rule that only allows Schweinchen in case one of the teammembers called re/contra. Signed-off-by: Arun Persaud --- diff --git a/include/functions.php b/include/functions.php index ca62cd9..d09408c 100644 --- a/include/functions.php +++ b/include/functions.php @@ -177,14 +177,27 @@ function compare_cards($a,$b,$game) return 1; if($b == 19 || $b == 20 ) return 0; - }; - if($RULES['schweinchen']=='second' && $GAME['schweinchen-second']) + } + else if($RULES['schweinchen']=='second' && $GAME['schweinchen-second']) { if($a == 19 || $a == 20 ) return 1; if($b == 19 || $b == 20 ) return 0; - }; + } + else if($RULES['schweinchen']=='secondaftercall' && $GAME['schweinchen-who'] && $GAME['schweinchen-second'] ) + { + /* check if a call was made either by the player or his partner. If so activate Schweinchen rule. */ + if(DB_get_call_by_hash($GAME['schweinchen-who']) || DB_get_partner_call_by_hash($GAME['schweinchen-who']) ) + { + if($a == 19 || $a == 20 ) + return 1; + if($b == 19 || $b == 20 ) + return 0; + } + /* if not, do nothing and the foxes are just handeled as normal trump */ + } + ; case "heart": case "spade": case "club": diff --git a/include/game.php b/include/game.php index 49957b1..afe6144 100644 --- a/include/game.php +++ b/include/game.php @@ -1324,7 +1324,11 @@ switch($mystatus) else $GAME['schweinchen-second'] = 1; /* this must be the second fox */ - if( ($GAME['schweinchen-second']==1 && $RULES['schweinchen']=='second') || $RULES['schweinchen']=='both') + if( $RULES['schweinchen']=='both' || + ($RULES['schweinchen']=='second' && $GAME['schweinchen-second']==1 )|| + ($RULES['schweinchen']=='secondaftercall' && $GAME['schweinchen-second']==1 && + (DB_get_call_by_hash($GAME['schweinchen-who']) || DB_get_partner_call_by_hash($GAME['schweinchen-who']) )) + ) { DB_insert_comment('Schweinchen! ',$playid,$myid); $commentSchweinchen = 'Schweinchen! '; @@ -1871,9 +1875,15 @@ switch($mystatus) foreach($mycards as $card) { + /* display only cards that the player is allowed to play as links, the rest just display normal + * also check if we have both schweinchen, in that case only display on of them as playable + */ if( ($followsuit && !same_type($card,$firstcard)) || - ( (int)($card)==19 && ($RULES['schweinchen']=='second'||$RULES['schweinchen']=='secondaftercall') - && $GAME['schweinchen-who']==$me && !$GAME['schweinchen-first'] ) + ( (int)($card)==19 && !$GAME['schweinchen-first'] && + ($RULES['schweinchen']=='second'|| + ( $RULES['schweinchen']=='secondaftercall' && + (DB_get_call_by_hash($GAME['schweinchen-who']) || DB_get_partner_call_by_hash($GAME['schweinchen-who']) ))) + && $GAME['schweinchen-who']==$me ) ) display_card($card,$PREF['cardset']); else diff --git a/include/output.php b/include/output.php index 1531c77..723dd54 100644 --- a/include/output.php +++ b/include/output.php @@ -75,8 +75,8 @@ function output_form_for_new_game($names)
  • first one normal, second one becomes highest (call during the game)
  • -
  • - second one become highest only in case re/contra was announced (not working yet) +
  • + second one become highest only in case re/contra was announced
  • Call Re/Contra, etc.: