\ExplSyntaxOn \cs_generate_variant:Nn \keys_define:nn {ee} \cs_generate_variant:Nn \keys_define:nn {en} \keys_define:nn {pgfgo} {players .code:n = {\keys_set:nn {pgfgo/players} {#1}}} \def\pgfgosetplayer#1#2{\pgfgoset{players = {#1 = {#2}}}} \bool_new:N \l_pgfgo_mark_inside_mark_bool \def\pgfgochooseplayers#1#2#3{ \pgfgocopyplayer{neutral} {#1} \pgfgocopyplayer{black} {#2} \pgfgocopyplayer{white} {#3} } \def\pgfgocopyplayer#1#2{ \dim_set_eq:cc {l_pgfgo_players_ #1 _stone_radius_dim} {l_pgfgo_players_ #2 _stone_radius_dim} \fp_set_eq:cc {l_pgfgo_players_ #1 _stone_scale_fp} {l_pgfgo_players_ #2 _stone_scale_fp} \bool_set_eq:cc {l_pgfgo_players_ #1 _stone_line_bool} {l_pgfgo_players_ #1 _stone_line_bool} \tl_set_eq:cc {l_pgfgo_players_ #1 _stone_line_color_tl} {l_pgfgo_players_ #2 _stone_line_color_tl} \dim_set_eq:cc {l_pgfgo_players_ #1 _stone_line_width_dim} {l_pgfgo_players_ #2 _stone_line_width_dim} \fp_set_eq:cc {l_pgfgo_players_ #1 _stone_line_opacity_fp} {l_pgfgo_players_ #2 _stone_line_opacity_fp} \bool_set_eq:cc {l_pgfgo_players_ #1 _stone_fill_bool} {l_pgfgo_players_ #2 _stone_fill_bool} \tl_set_eq:cc {l_pgfgo_players_ #1 _stone_fill_color_tl} {l_pgfgo_players_ #2 _stone_fill_color_tl} \fp_set_eq:cc {l_pgfgo_players_ #1 _stone_fill_opacity_fp} {l_pgfgo_players_ #2 _stone_fill_opacity_fp} \bool_set_eq:cc {l_pgfgo_players_ #1 _stone_drop_shadow_bool} {l_pgfgo_players_ #2 _stone_drop_shadow_bool} \fp_set_eq:cc {l_pgfgo_players_ #1 _stone_drop_shadow_angle_fp} {l_pgfgo_players_ #2 _stone_drop_shadow_angle_fp} \dim_set_eq:cc {l_pgfgo_players_ #1 _stone_drop_shadow_offset_dim} {l_pgfgo_players_ #2 _stone_drop_shadow_offset_dim} \fp_set_eq:cc {l_pgfgo_players_ #1 _stone_drop_shadow_opacity_fp} {l_pgfgo_players_ #2 _stone_drop_shadow_opacity_fp} \bool_set_eq:cc {l_pgfgo_players_ #1 _stone_drop_shine_bool} {l_pgfgo_players_ #2 _stone_drop_shine_bool} \fp_set_eq:cc {l_pgfgo_players_ #1 _stone_drop_shine_angle_fp} {l_pgfgo_players_ #2 _stone_drop_shine_angle_fp} \fp_set_eq:cc {l_pgfgo_players_ #1 _stone_drop_shine_opacity_fp} {l_pgfgo_players_ #2 _stone_drop_shine_opacity_fp} \tl_set_eq:cc {l_pgfgo_players_ #1 _stone_drop_shine_color_tl} {l_pgfgo_players_ #2 _stone_drop_shine_color_tl} \dim_set_eq:cc {l_pgfgo_players_ #1 _move_label_font_size_dim} {l_pgfgo_players_ #2 _move_label_font_size_dim} \tl_set_eq:cc {l_pgfgo_players_ #1 _move_label_color_tl} {l_pgfgo_players_ #2 _move_label_color_tl} \cs_set_eq:cc {pgfgo_players_ #1 _move_label_format:n}{pgfgo_players_ #2 _move_label_format:n} \tl_set_eq:cc {l_pgfgo_players_ #1 _mark_line_color_tl} {l_pgfgo_players_ #2 _mark_line_color_tl} \dim_set_eq:cc {l_pgfgo_players_ #1 _mark_line_width_dim} {l_pgfgo_players_ #2 _mark_line_width_dim} \tl_set_eq:cc {l_pgfgo_players_ #1 _mark_fill_color_tl} {l_pgfgo_players_ #2 _mark_fill_color_tl} \bool_set_eq:cc {l_pgfgo_players_ #1 _mark_fill_bool} {l_pgfgo_players_ #2 _mark_fill_bool} \tl_set_eq:cc {l_pgfgo_players_ #1 _mark_label_color_tl} {l_pgfgo_players_ #2 _mark_label_color_tl} \bool_set_eq:cc {l_pgfgo_players_ #1 _mark_sequence_bool} {l_pgfgo_players_ #2 _mark_sequence_bool} \int_set_eq:cc {l_pgfgo_ #1 _mark_sequence_from_int} {l_pgfgo_ #2 _mark_sequence_from_int} \cs_set_eq:cc {pgfgo_players_ #1 _mark_sequence_format:n} {pgfgo_players_ #2 _mark_sequence_format:n} \tl_set_eq:cc {l_pgfgo_players_ #1 _mark_label_font_tl} {l_pgfgo_players_ #2 _mark_label_font_tl} } \cs_new:Nn \pgfgo_get_variables_from_current_player: { \bool_if:NTF \l_pgfgo_players_black_bool { \pgfgo_get_values_from_player:n{black} }{ \bool_if:NTF \l_pgfgo_players_white_bool { \pgfgo_get_values_from_player:n{white} }{ \pgfgo_get_values_from_player:n{neutral} } } } \dim_new:N \l_pgfgo_players_stone_radius_dim \fp_new:N \l_pgfgo_players_stone_scale_fp \bool_new:N \l_pgfgo_players_stone_line_bool \tl_new:N \l_pgfgo_players_stone_line_color_tl \dim_new:N \l_pgfgo_players_stone_line_width_dim \fp_new:N \l_pgfgo_players_stone_line_opacity_fp \bool_new:N \l_pgfgo_players_stone_fill_bool \tl_new:N \l_pgfgo_players_stone_fill_color_tl \fp_new:N \l_pgfgo_players_stone_fill_opacity_fp \bool_new:N \l_pgfgo_players_stone_drop_shadow_bool \fp_new:N \l_pgfgo_players_stone_drop_shadow_angle_fp \dim_new:N \l_pgfgo_players_stone_drop_shadow_offset_dim \fp_new:N \l_pgfgo_players_stone_drop_shadow_opacity_fp \bool_new:N \l_pgfgo_players_stone_mark_bool \bool_new:N \l_pgfgo_players_stone_drop_shine_bool \fp_new:N \l_pgfgo_players_stone_drop_shine_angle_fp \fp_new:N \l_pgfgo_players_stone_drop_shine_opacity_fp \tl_new:N \l_pgfgo_players_stone_drop_shine_color_tl \dim_new:N \l_pgfgo_players_move_label_font_size_dim \tl_new:N \l_pgfgo_players_move_label_color_tl \bool_new:N \l_pgfgo_goban_remember_move_label_bool \tl_new:N \l_pgfgo_players_mark_line_color_tl \dim_new:N \l_pgfgo_players_mark_line_width_dim \tl_new:N \l_pgfgo_players_mark_fill_color_tl \bool_new:N \l_pgfgo_players_mark_fill_bool \tl_new:N \l_pgfgo_players_mark_label_color_tl \bool_new:N \l_pgfgo_players_mark_sequence_bool \int_new:N \l_pgfgo_mark_sequence_from_int \tl_new:N \l_pgfgo_players_mark_label_font_tl %COPIA LOS VALORES DE UN JUGADOR PARA USARLOS. \cs_new:Nn \pgfgo_get_values_from_player:n{ \dim_set_eq:Nc \l_pgfgo_players_stone_radius_dim {l_pgfgo_players_ #1 _stone_radius_dim} \fp_set_eq:Nc \l_pgfgo_players_stone_scale_fp {l_pgfgo_players_ #1 _stone_scale_fp} \bool_set_eq:Nc \l_pgfgo_players_stone_line_bool {l_pgfgo_players_ #1 _stone_line_bool} \tl_set_eq:Nc \l_pgfgo_players_stone_line_color_tl {l_pgfgo_players_ #1 _stone_line_color_tl} \dim_set_eq:Nc \l_pgfgo_players_stone_line_width_dim {l_pgfgo_players_ #1 _stone_line_width_dim} \fp_set_eq:Nc \l_pgfgo_players_stone_line_opacity_fp {l_pgfgo_players_ #1 _stone_line_opacity_fp} \bool_set_eq:Nc \l_pgfgo_players_stone_fill_bool {l_pgfgo_players_ #1 _stone_fill_bool} \tl_set_eq:Nc \l_pgfgo_players_stone_fill_color_tl {l_pgfgo_players_ #1 _stone_fill_color_tl} \fp_set_eq:Nc \l_pgfgo_players_stone_fill_opacity_fp {l_pgfgo_players_ #1 _stone_fill_opacity_fp} \bool_set_eq:Nc \l_pgfgo_players_stone_drop_shadow_bool {l_pgfgo_players_ #1 _stone_drop_shadow_bool} \fp_set_eq:Nc \l_pgfgo_players_stone_drop_shadow_angle_fp {l_pgfgo_players_ #1 _stone_drop_shadow_angle_fp} \dim_set_eq:Nc \l_pgfgo_players_stone_drop_shadow_offset_dim {l_pgfgo_players_ #1 _stone_drop_shadow_offset_dim} \fp_set_eq:Nc \l_pgfgo_players_stone_drop_shadow_opacity_fp {l_pgfgo_players_ #1 _stone_drop_shadow_opacity_fp} \bool_set_eq:Nc \l_pgfgo_players_stone_drop_shine_bool {l_pgfgo_players_ #1 _stone_drop_shine_bool} \fp_set_eq:Nc \l_pgfgo_players_stone_drop_shine_angle_fp {l_pgfgo_players_ #1 _stone_drop_shine_angle_fp} \fp_set_eq:Nc \l_pgfgo_players_stone_drop_shine_opacity_fp {l_pgfgo_players_ #1 _stone_drop_shine_opacity_fp} \tl_set_eq:Nc \l_pgfgo_players_stone_drop_shine_color_tl {l_pgfgo_players_ #1 _stone_drop_shine_color_tl} \dim_set_eq:Nc \l_pgfgo_players_move_label_font_size_dim {l_pgfgo_players_ #1 _move_label_font_size_dim} \tl_set_eq:Nc \l_pgfgo_players_move_label_color_tl {l_pgfgo_players_ #1 _move_label_color_tl} \cs_set_eq:Nc \pgfgo_players_move_label_format:n {pgfgo_players_ #1 _move_label_format:n} \tl_set_eq:Nc \l_pgfgo_players_mark_line_color_tl {l_pgfgo_players_ #1 _mark_line_color_tl} \dim_set_eq:Nc \l_pgfgo_players_mark_line_width_dim {l_pgfgo_players_ #1 _mark_line_width_dim} \tl_set_eq:Nc \l_pgfgo_players_mark_fill_color_tl {l_pgfgo_players_ #1 _mark_fill_color_tl} \bool_set_eq:Nc \l_pgfgo_players_mark_fill_bool {l_pgfgo_players_ #1 _mark_fill_bool} \tl_set_eq:Nc \l_pgfgo_players_mark_label_color_tl {l_pgfgo_players_ #1 _mark_label_color_tl} \bool_set_eq:Nc \l_pgfgo_players_mark_sequence_bool {l_pgfgo_players_ #1 _mark_sequence_bool} \int_set_eq:Nc \l_pgfgo_mark_sequence_from_int {l_pgfgo_ #1 _mark_sequence_from_int} \cs_set_eq:Nc \pgfgo_players_mark_sequence_format:n {pgfgo_players_ #1 _mark_sequence_format:n} \tl_set_eq:Nc \l_pgfgo_players_mark_label_font_tl {l_pgfgo_players_ #1 _mark_label_font_tl} } \keys_define:nn {pgfgo / players} { all .code:n = { \keys_set:nn {pgfgo / players / neutral} {#1} \keys_set:nn {pgfgo / players / black} {#1} \keys_set:nn {pgfgo / players / white} {#1} } } \def\pgfgonewplayers#1{ \clist_set:Nn \l_tmpa_clist {#1} \clist_map_variable:NNn \l_tmpa_clist\variable{ %SIRVE PARA DETERMINAR SI UNA PIEDRA ES O NO DE ESTE JUGADOR \bool_new:c {l_pgfgo_players_ \variable _bool} \keys_define:ne {pgfgo / players} {\variable .code:n = {\exp_not:N\keys_set:nn {pgfgo / players / \variable} {##1}}} \keys_define:ee { pgfgo / players / \variable } { stone .code:n = {\exp_not:N\keys_set:nn {pgfgo / players / \variable / stone} {##1}}, move .code:n = {\exp_not:N\keys_set:nn {pgfgo / players / \variable / move} {##1}}, mark .code:n = {\exp_not:N\keys_set:nn {pgfgo / players / \variable / mark} {##1}}, territory .code:n = {\exp_not:N\keys_set:nn {pgfgo / players / \variable / territory} {##1}}, } %---------------------------------------------------------------------------------------------------- %PIEDRA \dim_new:c {l_pgfgo_players_ \variable _stone_radius_dim} \fp_new:c {l_pgfgo_players_ \variable _stone_scale_fp} \keys_define:ee { pgfgo / players / \variable / stone } { prisoner .code:n = {\keys_set:nn { pgfgo / players / \variable / stone / fill } {opacity = 0.5}}, line .code:n = {\keys_set:nn { pgfgo / players / \variable / stone / line } {##1}}, fill .code:n = {\keys_set:nn { pgfgo / players / \variable / stone / fill } {##1}}, radius .code:n = {\dim_set:cn{l_pgfgo_players_ \variable _stone_radius_dim}{##1}}, radius .initial:n = {5.5pt}, scale .code:n = {\fp_set:cn{l_pgfgo_players_ \variable _stone_scale_fp}{##1}}, scale .initial:n = {1}, drop~shadow .code:n = {\keys_set:nn{ pgfgo / players / \variable / stone / drop~shadow }{##1}}, drop~shine .code:n = {\keys_set:nn{ pgfgo / players / \variable / stone / drop~shine }{##1}}, mark .groups:n = { external }, black .groups:n = { external }, b .groups:n = { external }, white .groups:n = { external }, w .groups:n = { external }, neutral .groups:n = { external }, n .groups:n = { external }, forget .groups:n = { external }, remember .groups:n = { external } } \bool_new:c {l_pgfgo_players_ \variable _stone_line_bool} \bool_set_true:c {l_pgfgo_players_ \variable _stone_line_bool} \tl_new:c {l_pgfgo_players_ \variable _stone_line_color_tl} \dim_new:c {l_pgfgo_players_ \variable _stone_line_width_dim} \fp_new:c {l_pgfgo_players_ \variable _stone_line_opacity_fp} \keys_define:ee { pgfgo / players / \variable / stone / line } { true .code:n = {\exp_not:N\bool_set_true:c {l_pgfgo_players_ \variable _stone_line_bool}}, false .code:n = {\exp_not:N\bool_set_false:c {l_pgfgo_players_ \variable _stone_line_bool}}, color .code:n = {\exp_not:N\tl_set:cn {l_pgfgo_players_ \variable _stone_line_color_tl}{##1}}, color .initial:n = {black}, width .code:n = {\exp_not:N\dim_set:cn {l_pgfgo_players_ \variable _stone_line_width_dim}{##1}}, width .initial:n = {0.7pt}, opacity .code:n = {\exp_not:N\fp_set:cn {l_pgfgo_players_ \variable _stone_line_opacity_fp}{##1}}, opacity .initial:n = {1} } \bool_new:c {l_pgfgo_players_ \variable _stone_fill_bool} \bool_set_true:c {l_pgfgo_players_ \variable _stone_fill_bool} \tl_new:c {l_pgfgo_players_ \variable _stone_fill_color_tl} \fp_new:c {l_pgfgo_players_ \variable _stone_fill_opacity_fp} \keys_define:ee { pgfgo / players / \variable / stone / fill } { true .code:n = {\exp_not:N\bool_set_true:c {l_pgfgo_players_ \variable _stone_fill_bool}}, false .code:n = {\exp_not:N\bool_set_false:c {l_pgfgo_players_ \variable _stone_fill_bool}}, color .code:n = {\exp_not:N\tl_set:cn {l_pgfgo_players_ \variable _stone_fill_color_tl}{##1}}, color .initial:n = {gray}, opacity .code:n = {\exp_not:N\fp_set:cn {l_pgfgo_players_ \variable _stone_fill_opacity_fp}{##1}}, opacity .initial:n = {1} } \bool_new:c {l_pgfgo_players_ \variable _stone_drop_shadow_bool} \bool_set_false:c {l_pgfgo_players_ \variable _stone_drop_shadow_bool} \fp_new:c {l_pgfgo_players_ \variable _stone_drop_shadow_angle_fp} \dim_new:c {l_pgfgo_players_ \variable _stone_drop_shadow_offset_dim} \fp_new:c {l_pgfgo_players_ \variable _stone_drop_shadow_opacity_fp} \keys_define:ee { pgfgo / players / \variable / stone / drop~shadow } { true .code:n = {\exp_not:N\bool_set_true:c {l_pgfgo_players_ \variable _stone_drop_shadow_bool}}, false .code:n = {\exp_not:N\bool_set_false:c {l_pgfgo_players_ \variable _stone_drop_shadow_bool}}, angle .code:n = {\exp_not:N\fp_set:cn {l_pgfgo_players_ \variable _stone_drop_shadow_angle_fp}{##1}}, angle .initial:n = {0}, offset .code:n = {\exp_not:N\dim_set:cn {l_pgfgo_players_ \variable _stone_drop_shadow_offset_dim}{##1}}, offset .initial:n = {0pt}, opacity .code:n = {\exp_not:N\fp_set:cn {l_pgfgo_players_ \variable _stone_drop_shadow_opacity_fp}{##1}}, opacity .initial:n = {0.5} } \bool_new:c {l_pgfgo_players_ \variable _stone_drop_shine_bool} \bool_set_false:c {l_pgfgo_players_ \variable _stone_drop_shine_bool} \fp_new:c {l_pgfgo_players_ \variable _stone_drop_shine_angle_fp} \fp_new:c {l_pgfgo_players_ \variable _stone_drop_shine_opacity_fp} \tl_new:c {l_pgfgo_players_ \variable _stone_drop_shine_color_tl} \keys_define:ee { pgfgo / players / \variable / stone / drop~shine } { true .code:n = {\exp_not:N\bool_set_true:c {l_pgfgo_players_ \variable _stone_drop_shine_bool}}, false .code:n = {\exp_not:N\bool_set_false:c {l_pgfgo_players_ \variable _stone_drop_shine_bool}}, angle .code:n = {\exp_not:N\tl_set:cn {l_pgfgo_players_ \variable _stone_drop_shine_angle_fp}{##1}}, angle .initial:n = {0}, opacity .code:n = {\exp_not:N\fp_set:cn {l_pgfgo_players_ \variable _stone_drop_shine_opacity_fp}{##1}}, opacity .initial:n = {1}, color .code:n = {\exp_not:N\tl_set:cn {l_pgfgo_players_ \variable _stone_drop_shine_color_tl}{##1}}, color .default:n = {gray!50!white}, } %-------------------------------------------------------------------------------------------- %MOVE \keys_define:ee { pgfgo / players / \variable / move } { label .code:n = {\keys_set:nn { pgfgo / players / \variable / move / label } {##1}}, label .groups:n = {label}, from .groups:n = {external}, black .groups:n = {external}, b .groups:n = {external}, white .groups:n = {external}, w .groups:n = {external}, remember .groups:n = {external}, forget .groups:n = {external}, } \dim_new:c {l_pgfgo_players_ \variable _move_label_font_size_dim} \tl_new:c {l_pgfgo_players_ \variable _move_label_color_tl} \keys_define:ee { pgfgo / players / \variable / move / label } { font~size .code:n = {\exp_not:N\dim_set:cn{l_pgfgo_players_ \variable _move_label_font_size_dim}{##1}}, font~size .initial:n = {8pt}, color .code:n = {\tl_set:cn{l_pgfgo_players_ \variable _move_label_color_tl}{##1}}, color .initial:n = {black}, forget .code:n = {\bool_set_false:N \l_pgfgo_goban_remember_move_label_bool}, remember .code:n = {\bool_set_true:N \l_pgfgo_goban_remember_move_label_bool}, format .choice:, format / arabic .code:n = {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _move_label_format:n}\exp_not:N\int_to_arabic:n}, format / alph .code:n = {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _move_label_format:n}\exp_not:N\int_to_alph:n}, format / Alph .code:n = {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _move_label_format:n}\exp_not:N\int_to_Alph:n}, format / roman .code:n = {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _move_label_format:n}\exp_not:N\int_to_roman:n}, format / Roman .code:n = {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _move_label_format:n}\exp_not:N\int_to_Roman:n}, format .initial:n = {arabic}, } %-------------------------------------------------------------------------------------------- %MARK \keys_define:ee { pgfgo / players / \variable / mark } { line .code:n = {\keys_set:nn { pgfgo / players / \variable / mark / line } {##1}}, fill .code:n = {\keys_set:nn { pgfgo / players / \variable / mark / fill } {##1}}, label .code:n = {\keys_set:nn { pgfgo / players / \variable / mark / label } {##1}}, sequence .code:n = {\keys_set:nn { pgfgo / players / \variable / mark / sequence } {##1}}, sequence .default:n = {from = 1}, custom .code:n = {\keys_set:nn { pgfgo } {mark = { custom = { ##1 }}}}, unknown .code:n = { \keys_set:nn {pgfgo / mark}{\l_keys_key_str} } } \tl_new:c {l_pgfgo_players_ \variable _mark_line_color_tl} \dim_new:c {l_pgfgo_players_ \variable _mark_line_width_dim} \keys_define:ee { pgfgo / players / \variable / mark / line } { color .code:n = {\tl_set:cn{l_pgfgo_players_ \variable _mark_line_color_tl}{##1}}, color .initial:n = {black}, width .code:n = {\dim_set:cn{l_pgfgo_players_ \variable _mark_line_width_dim}{##1}}, width .initial:n = {1pt} } \bool_new:c {l_pgfgo_players_ \variable _mark_fill_bool} \bool_set_false:c {l_pgfgo_players_ \variable _mark_fill_bool} \tl_new:c {l_pgfgo_players_ \variable _mark_fill_color_tl} \keys_define:ee { pgfgo / players / \variable / mark / fill } { true .code:n = {\bool_set_true:c {l_pgfgo_players_ \variable _mark_fill_bool}}, false .code:n = {\bool_set_false:c {l_pgfgo_players_ \variable _mark_fill_bool}}, color .code:n = {\tl_set:cn{l_pgfgo_players_ \variable _mark_fill_color_tl}{##1}}, color .initial:n = {gray!50!black} } \tl_new:c {l_pgfgo_players_ \variable _mark_label_color_tl} \tl_new:c {l_pgfgo_players_ \variable _mark_label_font_tl} \keys_define:ee { pgfgo / players / \variable / mark / label } { color .code:n = {\tl_set:cn{l_pgfgo_players_ \variable _mark_label_color_tl}{##1}}, color .initial:n = {black}, font .code:n = {\tl_set:cn{l_pgfgo_players_ \variable _mark_label_font_tl}{##1}}, format .choice:, format / arabic .code:n = {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _mark_sequence_format:n}\exp_not:N\int_to_arabic:n}, format / alph .code:n = {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _mark_sequence_format:n}\exp_not:N\int_to_alph:n}, format / Alph .code:n = {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _mark_sequence_format:n}\exp_not:N\int_to_Alph:n}, format / roman .code:n = {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _mark_sequence_format:n}\exp_not:N\int_to_roman:n}, format / Roman .code:n = {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _mark_sequence_format:n}\exp_not:N\int_to_Roman:n}, format .initial:n = {arabic}, } \bool_new:c {l_pgfgo_players_ \variable _mark_sequence_bool} \int_new:c {l_pgfgo_ \variable _mark_sequence_from_int} \keys_define:ee { pgfgo / players / \variable / mark / sequence } { true .code:n = {\bool_set_true:c {l_pgfgo_players_ \variable _mark_sequence_bool}}, false .code:n = {\bool_set_true:c {l_pgfgo_players_ \variable _mark_sequence_bool}}, use .code:n = {\bool_set_true:c {l_pgfgo_players_ \variable _mark_sequence_bool}}, from .code:n = { \bool_set_true:c {l_pgfgo_players_ \variable _mark_sequence_bool} \int_set:cn {l_pgfgo_ \variable _mark_sequence_from_int} {##1} }, } } } %LOS JUGADORES REALES. TODO SE ASIGNA ACA \pgfgonewplayers{neutral, black, white} \pgfgochooseplayers{neutral}{black}{white}