DisplayCondition and StartCondition combo.

Game development with Board Game Arena Studio
Post Reply
User avatar
Rudolf
Posts: 557
Joined: 24 December 2011, 23:04

DisplayCondition and StartCondition combo.

Post by Rudolf »

Hi... I 've got a problem, I 've tried two ways, on nothing works...
I need to display or start an option with "AND" options ... and seems be "OR"

Code: Select all

'displaycondition' => array(
                                                    array( 'type' => 'otheroption','id'=>100, 'value' =>70),
                                                    array( 'type' => 'otheroption','id'=>102, 'value' =>4),
                                                    array( 'type' => 'otheroption','id'=>104, 'value' =>12),
                                                  ),
does start of any of those, but I want all together!.
and if i try:

Code: Select all

'startcondition' => array(
                                0 => array( ),
                                1 => array(
                                            array( 'type' => 'maxplayers', 'value' => 1, 'message' => totranslate( 'This mission is only available for solo mode.' ) ),
                                            array( 'type' => 'otheroption', 'value' => 4, 'id'=>102, 'message' => totranslate( 'This mission should be made in one aim.' ) ),
                                            array( 'type' => 'otheroption', 'value' => 12, 'id'=>104, 'message' => totranslate( 'This mission should be mdae with swiss guard playerboard.' ) ),
                                          ),
                                ),
seems that otheroption is not available for startcondition.

Then my solution is to force the other options after start... but it's a bad trick....
any idea
User avatar
Rudolf
Posts: 557
Joined: 24 December 2011, 23:04

Re: DisplayCondition and StartCondition combo.

Post by Rudolf »

Well I've found a trick... but seems something does not work also:

Code: Select all

$game_options = array(

    100 => array(
                'displaycondition' => array(array( 'type' => 'otheroption','id'=>107, 'value' =>0)),
                'name' => _('Party style'),
                'values' => array(
                            2 => array( 'name' => totranslate( '2 aims' ), 'tmdisplay' => totranslate( '2 aims'  ) ),
                            3 => array( 'name' => totranslate( '3 aims'), 'tmdisplay' => totranslate( '3 aims'  ) ),
                            4 => array( 'name' => totranslate( '4 aims'  ), 'tmdisplay' => totranslate( '4 aims'  ) ),
                            5 => array( 'name' => totranslate( '5 aims'  ), 'tmdisplay' => totranslate( '5 aims'  ) ),
                            6 => array( 'name' => totranslate( 'Neutralize Kara (Dark Agent)' ), 'tmdisplay' => totranslate( 'Neutralize Kara (The Dark Agent)')),
                            70 => array( 'name' => totranslate( 'Blitzkrieg (1 aim)' ), 'tmdisplay' => totranslate( 'Blitzkrieg (1 aim)' ) ) ,
                        )
            ),

    101 => array(
                'name' => _('Special aim'),
                'values' => array(
                            1 => array( 'name' => totranslate( 'Normal mode' ), 'tmdisplay' => totranslate( 'Normal mode'  ) ),
                            3 => array( 'name' => totranslate( 'BGA MODE 1: 10 turns limit if BGA Aim still on board' ), 'tmdisplay' => totranslate( 'BGA MODE 1: 10 turns limit if BGA Aim still on board'  ) ),
                            4 => array( 'name' => totranslate( 'BGA MODE 2: winning BGA aim stops the game, 10 turns limit' ), 'tmdisplay' => totranslate( 'BGA MODE 2: winning BGA aim stops the game, 10 turns limit'  ) ),
                    )
            ),

    102 => array(
                'displaycondition' => array(array( 'type' => 'otheroption','id'=>107, 'value' =>0)),
                'name' => _('Rules level'),
                'values' => array(
                            //0 => array( 'name' => totranslate( "Beginner rules: no spy upper than level 1" ), 'tmdisplay' => totranslate( "Beginner rules: no spy upper than level 1") ),
                            //1 => array( 'name' => totranslate( "Normal rules" ), 'tmdisplay' => totranslate( "Normal rules" ) ),
                            2 => array( 'name' => totranslate( "Standard rules: boardpowers available at start" ), 'tmdisplay' => totranslate( "Standard rules: boardpowers available at start" )),
                            3 => array( 'name' => totranslate( "Expert rules: boardpowers available at level5 sent" ), 'tmdisplay' => totranslate( "Expert rules: boardpowers available at level5 sent" )),
                            4 => array( 'name' => totranslate( "Promotional Locker (EXPERT)" ), 'tmdisplay' => totranslate( "Promotional Locker (EXPERT)" )),
                            5 => array( 'name' => totranslate( "Promotional Locker (NORMAL)" ), 'tmdisplay' => totranslate( "Promotional Locker (NORMAL)" )),
                )


            ),

    103 => array(
            'name' => _('Team play'),
          //  'displaycondition' => array(array( 'type' => 'nbplayers', 'value' =>array(4,6))),
            'values' => array(
                0 => array( 'name' => totranslate( "Alone/no team"), 'tmdisplay' => totranslate( "Alone/no team" )),
                40=> array( 'name' => totranslate( "4 players - Team random" ), 'tmdisplay' => totranslate( "4 players - Team random" )),
                42=> array( 'name' => totranslate( "4 players - Team 1-3 vs 2-4" ), 'tmdisplay' => totranslate( "4 players - Team 1-3 vs 2-4" )),

                //41 => array( 'name' => totranslate( "4 players - Team elo equillibrium" ), 'tmdisplay' => totranslate( "4 players - Team elo equillibrium" )),
                60=> array( 'name' => totranslate( "6 players - Team 2 players random" ), 'tmdisplay' => totranslate( "6 players - Team 2 players random" )),
                //61 => array( 'name' => totranslate( "6 players - Team 2 players elo equillibrium" ), 'tmdisplay' => totranslate( "6 players - Team 2 players elo equillibrium" )),
                62 => array( 'name' => totranslate( "6 players - Team 1-4 vs 2-5 vs 3-6" ), 'tmdisplay' => totranslate( "6 players - Team 1-4 vs 2-5 vs 3-6" )),
                70=> array( 'name' => totranslate( "6 players - Team 3 players random" ), 'tmdisplay' => totranslate( "6 players - Team 3 players random" )),
                //71 => array( 'name' => totranslate( "6 players - Team 3 players elo equillibrium" ), 'tmdisplay' => totranslate( "6 players - Team 3 players elo equillibrium" )),
                72 => array( 'name' => totranslate( "6 players - Team 1-3-5 vs 2-4-6" ), 'tmdisplay' => totranslate( "6 players - Team 1-3-5 vs 2-4-6" )),


                        //60 => array( 'name' => totranslate( "6 players - Team 2 players" ), 'tmdisplay' => totranslate( "6 players - Team 2 players" )),
                        //61 => array( 'name' => totranslate( "6 players - Team 3 players" ), 'tmdisplay' => totranslate( "6 players - Team 3 players" )),
                ),
            'displaycondition' => array(array( 'type' => 'otheroption','id'=>107, 'value' =>0)),
            'startcondition' => array(
                   0 => array( ),
                   40 => array( array( 'type' => 'maxplayers', 'value' => 4, 'message' => totranslate( 'This team mode is only available for 4 players.' ) ),
                                array( 'type' => 'minplayers', 'value' => 4, 'message' => totranslate( 'This team mode is only available for 4 players.' ) )
                              ),
                   42 => array( array( 'type' => 'maxplayers', 'value' => 4, 'message' => totranslate( 'This team mode is only available for 4 players.' ) ),
                                array( 'type' => 'minplayers', 'value' => 4, 'message' => totranslate( 'This team mode is only available for 4 players.' ) )
                              ),
                   60 => array( array( 'type' => 'maxplayers', 'value' => 6, 'message' => totranslate( 'This team mode is only available for 6 players.' ) ),
                                array( 'type' => 'minplayers', 'value' => 6, 'message' => totranslate( 'This team mode is only available for 6 players.' ) )
                              ),
                   62 => array( array( 'type' => 'maxplayers', 'value' => 6, 'message' => totranslate( 'This team mode is only available for 6 players.' ) ),
                                array( 'type' => 'minplayers', 'value' => 6, 'message' => totranslate( 'This team mode is only available for 6 players.' ) )
                              ),
                   70 => array( array( 'type' => 'maxplayers', 'value' => 6, 'message' => totranslate( 'This team mode is only available for 6 players.' ) ),
                                array( 'type' => 'minplayers', 'value' => 6, 'message' => totranslate( 'This team mode is only available for 6 players.' ) )
                              ),
                   72 => array( array( 'type' => 'maxplayers', 'value' => 6, 'message' => totranslate( 'This team mode is only available for 6 players.' ) ),
                                array( 'type' => 'minplayers', 'value' => 6, 'message' => totranslate( 'This team mode is only available for 6 players.' ) )
                              ),

                  ),
            ),
    104 => array(
                        'displaycondition' => array(array( 'type' => 'otheroption','id'=>107, 'value' =>0)),
                        'name' => _('Playerboards'),
                        'values' => array(
                            0 => array( 'name' => totranslate( "player choice" ), 'tmdisplay' => totranslate( "player choice" )),
                            1 => array( 'name' => totranslate( "DGSE(France)" ), 'tmdisplay' => totranslate( "DGSE" )),
                            2 => array( 'name' => totranslate( "MI6(UK)" ), 'tmdisplay' => totranslate( "MI6" )),
                            3 => array( 'name' => totranslate( "BND(Germany)" ), 'tmdisplay' => totranslate( "BND" )),
                            4 => array( 'name' => totranslate( "CIA(US)" ), 'tmdisplay' => totranslate( "CIA" )),
                            5 => array( 'name' => totranslate( "SVR(Russia)" ), 'tmdisplay' => totranslate( "SVR" )),
                            6 => array( 'name' => totranslate( "MOSSAD(Israel)" ), 'tmdisplay' => totranslate( "MOSSAD" )),
                            7 => array( 'name' => totranslate( "UNDK(Sweden)" ), 'tmdisplay' => totranslate( "UNDK" )),
                            8 => array( 'name' => totranslate( "GUONG BO(China)" ), 'tmdisplay' => totranslate( "GUONG BO" )),
                            9 => array( 'name' => totranslate( "NAICHO(Japan)" ), 'tmdisplay' => totranslate( "NAICHO" )),
                            10 => array( 'name' => totranslate( "CSIS(Canada)" ), 'tmdisplay' => totranslate( "CSIS" )),
                            11 => array( 'name' => totranslate( "GIP(Egypt)" ), 'tmdisplay' => totranslate( "GIP" )),
                            12 => array( 'name' => totranslate( "SWISS GUARD(Vatican)" ), 'tmdisplay' => totranslate( "SWISS GUARD" )) ,
                            13 => array( 'name' => totranslate( "NIS(Norway)" ), 'tmdisplay' => totranslate( "NIS" )),
                            14 => array( 'name' => totranslate( "SGRS(Belgium)" ), 'tmdisplay' => totranslate( "SGRS" )),
                            15 => array( 'name' => totranslate( "NISK(South Korea)" ), 'tmdisplay' => totranslate( "NISK" )),
                            16 => array( 'name' => totranslate( "ABIN(Brazil)" ), 'tmdisplay' => totranslate( "ABIN" )),
                            80 => array( 'name' => totranslate( "Random Service, same for all" ), 'tmdisplay' => totranslate( "Random Service, same for all" )),
                            81 => array( 'name' => totranslate( "Random Service for each player" ), 'tmdisplay' => totranslate( "Random Service for each player" )),
                        )
                    ),
    105 => array(
                        'name' => _('Playerboards second team'),
                        'displaycondition' => array(array( 'type' => 'otheroption','id'=>103, 'value' =>array(40,42,60,62,70,72))),
                        'values' => array(
                            0 => array( 'name' => totranslate( "player choice" ), 'tmdisplay' => totranslate( "player choice" )),
                            1 => array( 'name' => totranslate( "DGSE(France)" ), 'tmdisplay' => totranslate( "DGSE" )),
                            2 => array( 'name' => totranslate( "MI6(UK)" ), 'tmdisplay' => totranslate( "MI6" )),
                            3 => array( 'name' => totranslate( "BND(Germany)" ), 'tmdisplay' => totranslate( "BND" )),
                            4 => array( 'name' => totranslate( "CIA(US)" ), 'tmdisplay' => totranslate( "CIA" )),
                            5 => array( 'name' => totranslate( "SVR(Russia)" ), 'tmdisplay' => totranslate( "SVR" )),
                            6 => array( 'name' => totranslate( "MOSSAD(Israel)" ), 'tmdisplay' => totranslate( "MOSSAD" )),
                            7 => array( 'name' => totranslate( "UNDK(Sweden)" ), 'tmdisplay' => totranslate( "UNDK" )),
                            8 => array( 'name' => totranslate( "GUONG BO(China)" ), 'tmdisplay' => totranslate( "GUONG BO" )),
                            9 => array( 'name' => totranslate( "NAICHO(Japan)" ), 'tmdisplay' => totranslate( "NAICHO" )),
                            10 => array( 'name' => totranslate( "CSIS(Canada)" ), 'tmdisplay' => totranslate( "CSIS" )),
                            11 => array( 'name' => totranslate( "GIP(Egypt)" ), 'tmdisplay' => totranslate( "GIP" )),
                            12 => array( 'name' => totranslate( "SWISS GUARD(Vatican)" ), 'tmdisplay' => totranslate( "SWISS GUARD" )) ,
                            13 => array( 'name' => totranslate( "NIS(Norway)" ), 'tmdisplay' => totranslate( "NIS" )),
                            14 => array( 'name' => totranslate( "SGRS(Belgium)" ), 'tmdisplay' => totranslate( "SGRS" )),
                            15 => array( 'name' => totranslate( "NISK(South Korea)" ), 'tmdisplay' => totranslate( "NISK" )),
                            16 => array( 'name' => totranslate( "ABIN(Brazil)" ), 'tmdisplay' => totranslate( "ABIN" )),
                            80 => array( 'name' => totranslate( "Random Service, same for all" ), 'tmdisplay' => totranslate( "Random Service, same for all" )),
                            81 => array( 'name' => totranslate( "Random Service for each player" ), 'tmdisplay' => totranslate( "Random Service for each player" )),
                        )
      ),
    106 => array(
                        'name' => _('Playerboards third team'),
                        'displaycondition' => array(array( 'type' => 'otheroption','id'=>103, 'value' =>62)),
                        'values' => array(
                            0 => array( 'name' => totranslate( "player choice" ), 'tmdisplay' => totranslate( "player choice" )),
                            1 => array( 'name' => totranslate( "DGSE(France)" ), 'tmdisplay' => totranslate( "DGSE" )),
                            2 => array( 'name' => totranslate( "MI6(UK)" ), 'tmdisplay' => totranslate( "MI6" )),
                            3 => array( 'name' => totranslate( "BND(Germany)" ), 'tmdisplay' => totranslate( "BND" )),
                            4 => array( 'name' => totranslate( "CIA(US)" ), 'tmdisplay' => totranslate( "CIA" )),
                            5 => array( 'name' => totranslate( "SVR(Russia)" ), 'tmdisplay' => totranslate( "SVR" )),
                            6 => array( 'name' => totranslate( "MOSSAD(Israel)" ), 'tmdisplay' => totranslate( "MOSSAD" )),
                            7 => array( 'name' => totranslate( "UNDK(Sweden)" ), 'tmdisplay' => totranslate( "UNDK" )),
                            8 => array( 'name' => totranslate( "GUONG BO(China)" ), 'tmdisplay' => totranslate( "GUONG BO" )),
                            9 => array( 'name' => totranslate( "NAICHO(Japan)" ), 'tmdisplay' => totranslate( "NAICHO" )),
                            10 => array( 'name' => totranslate( "CSIS(Canada)" ), 'tmdisplay' => totranslate( "CSIS" )),
                            11 => array( 'name' => totranslate( "GIP(Egypt)" ), 'tmdisplay' => totranslate( "GIP" )),
                            12 => array( 'name' => totranslate( "SWISS GUARD(Vatican)" ), 'tmdisplay' => totranslate( "SWISS GUARD" )) ,
                            13 => array( 'name' => totranslate( "NIS(Norway)" ), 'tmdisplay' => totranslate( "NIS" )),
                            14 => array( 'name' => totranslate( "SGRS(Belgium)" ), 'tmdisplay' => totranslate( "SGRS" )),
                            15 => array( 'name' => totranslate( "NISK(South Korea)" ), 'tmdisplay' => totranslate( "NISK" )),
                            16 => array( 'name' => totranslate( "ABIN(Brazil)" ), 'tmdisplay' => totranslate( "ABIN" )),
                            80 => array( 'name' => totranslate( "Random Service, same for all" ), 'tmdisplay' => totranslate( "Random Service, same for all" )),
                            81 => array( 'name' => totranslate( "Random Service for each player" ), 'tmdisplay' => totranslate( "Random Service for each player" )),
                            )
      ),
      107   => array(
                            'name' => _('Secret Master Missions'),
                            'displaycondition' => array(
                                                    array( 'type' => 'otheroption','id'=>100, 'value' =>70),
                                                    array( 'type' => 'otheroption','id'=>102, 'value' =>4),
                                                    array( 'type' => 'otheroption','id'=>104, 'value' =>12),
                                                  ),
                            'startcondition' => array(
                                0 => array( ),
                                1 => array(
                                            array( 'type' => 'maxplayers', 'value' => 1, 'message' => totranslate( 'This mission is only available for solo mode.' ) ),
                                          ),
                                ),
                            'values' => array(
                                0 => array( 'name' => "--------------", 'tmdisplay' => "--------------"),
                                1 => array( 'name' => totranslate( "Accept Mission" ), 'tmdisplay' => totranslate( "Accept Mission" )),
                            )
        ),
);
in game:

Code: Select all

parent::__construct();self::initGameStateLabels( array(
 			"totalsat" =>10 ,
 			"maxsat"=>11,
 			"jetlocX"=>12,
 			"jetlocY"=>13,
 			"turn"=>14,
 			"nbplayers"=>15,
 			"zombieORA"=>16,
			"zombieBLU"=>17,
 			"zombieGRE"=>18,
 			"zombiePUR"=>19,
 			"zombieYEL"=>20,
 			"zombieRED"=>21,


            //    "my_first_global_variable" => 10,
            //    "my_second_global_variable" => 11,
            //      ...
            "partystyle" => 100,
            "specialaim" => 101,
            "playerlevel"=> 102,
            "teamplay"   => 103,

            "playerboard1"=> 104,
            "playerboard2"=> 105,
            "playerboard3"=> 106,
            "mission"     => 107,
            //    "my_second_game_variant" => 101,
            //      ...
 			) );
 		$this->inStudio = preg_match('/(studio|far)\\.boardgamearena\\.com/', $_SERVER['SERVER_NAME']);

 	}

Code: Select all

$secretmission= self::getGameStateValue("mission");
if I select "Accept Mission" in options.... $secretmission has a value of 0 .... I don't understand why.
User avatar
Rudolf
Posts: 557
Joined: 24 December 2011, 23:04

Re: DisplayCondition and StartCondition combo.

Post by Rudolf »

I've found a trick... but it's not great: I force the change of other options when the game begins... but As I was expecting this, a player asked me "Why can't you hide the option, because I selected something else"

it would be good to add new feathures in BGA code ;) :

* AND instead or OR (or a field for condition type) in Displaycondition array of conditions.
* 'nbplayers', 'maxplayers', 'minplayers' available in Displaycondition

* 'Otheroption' condition field also available in Startcondition ...
* nbplayers available in Startcondition

It would be nice :) thanks by advance.
Post Reply

Return to “Developers”