line |
true |
false |
branch |
59
|
0 |
1 |
unless @_ <= 2 |
|
0 |
1 |
unless @_ >= 1 |
|
1 |
0 |
@_ >= 2 ? : |
64
|
1 |
0 |
exists $args->{'log'} && ref $args->{'log'} eq 'GLOB' ? : |
83
|
0 |
11 |
unless @_ <= 3 |
|
0 |
11 |
unless @_ >= 2 |
|
4 |
7 |
@_ >= 3 ? : |
87
|
0 |
11 |
if (not $action_code) { } |
|
10 |
1 |
elsif (exists $actions{$action_code}) { } |
94
|
5 |
5 |
if $@ |
105
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 2 |
110
|
0 |
0 |
unless $player_number and $location |
113
|
0 |
0 |
unless $self->is_players_turn($player_number) |
116
|
0 |
0 |
unless $self->phase =~ /^(?:Deployment|Play)$/u |
119
|
0 |
0 |
if $self->player->has_built_road and $self->phase eq 'Deployment' |
124
|
0 |
0 |
unless $self->phase eq 'Deployment' or $self->player->has_rolled_dice or defined $self->{'road_building'} and $self->{'road_building'}->can_build_road |
126
|
0 |
0 |
if $self->robber->active |
129
|
0 |
0 |
unless my $path = $self->map->find_path($location) |
134
|
0 |
0 |
if grep $path->is_colliding($_->location), @{$player->roads;} |
138
|
0 |
0 |
$self->phase eq 'Deployment' || defined $self->{'road_building'} && $self->{'road_building'}->can_build_road ? : |
147
|
0 |
0 |
unless @_ <= 1 |
|
0 |
0 |
unless @_ >= 1 |
166
|
0 |
0 |
if ($have_tested_leading_road) { } |
|
0 |
0 |
elsif (@players == 1 and $road_length >= 6 and not $player->longest_road) { } |
168
|
0 |
0 |
if $player->longest_road |
179
|
0 |
0 |
if (my $game_over = $self->game_over) |
186
|
0 |
0 |
unless @_ <= 1 |
|
0 |
0 |
unless @_ >= 1 |
188
|
0 |
0 |
if (my $player = $self->player_victory_check) |
194
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 2 |
199
|
0 |
0 |
unless $self->phase =~ /^(?:Deployment|Play)$/u |
202
|
0 |
0 |
unless $player_number and $location |
205
|
0 |
0 |
unless $self->is_players_turn($player_number) |
208
|
0 |
0 |
unless $self->phase eq 'Deployment' or $self->player->has_rolled_dice |
211
|
0 |
0 |
if $self->player->has_built_settlement and $self->phase eq 'Deployment' |
214
|
0 |
0 |
if $self->robber->active |
217
|
0 |
0 |
unless my $intersection = $self->map->find_intersection($location) |
223
|
0 |
0 |
unless 0 == grep(($intersection->is_colliding($_->location) || $intersection->is_adjacent($_->location)), @{$player->properties;}) |
226
|
0 |
0 |
$self->phase eq 'Deployment' ? : |
232
|
0 |
0 |
if ($self->phase eq 'Deployment' and $self->round == 2) |
240
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 2 |
245
|
0 |
0 |
unless $self->phase =~ /^(?:Deployment|Play)$/u |
248
|
0 |
0 |
unless $player_number and $location |
251
|
0 |
0 |
unless $self->is_players_turn($player_number) |
254
|
0 |
0 |
unless $self->player->has_rolled_dice |
257
|
0 |
0 |
if $self->robber->active |
260
|
0 |
0 |
unless my $intersection = $self->map->find_intersection($location) |
266
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 2 |
271
|
0 |
0 |
unless $self->phase =~ /^(?:Deployment|Play)$/u |
274
|
0 |
0 |
unless $player_number |
277
|
0 |
0 |
unless $self->player->number == $player_number |
280
|
0 |
0 |
unless $self->player->has_rolled_dice |
283
|
0 |
0 |
if $self->robber->active |
290
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 2 |
295
|
0 |
0 |
unless $player_number and $type |
298
|
0 |
0 |
unless $self->phase eq 'Play' |
301
|
0 |
0 |
unless $self->is_players_turn($player_number) |
304
|
0 |
0 |
if $self->player->has_played_dc |
307
|
0 |
0 |
if $self->robber->active |
315
|
0 |
0 |
if ($card->type eq 'KN') { } |
|
0 |
0 |
elsif ($card->type eq 'YP') { } |
|
0 |
0 |
elsif ($card->type eq 'MO') { } |
|
0 |
0 |
elsif ($card->type eq 'RB') { } |
361
|
0 |
0 |
if ($have_tested_leaders) { } |
|
0 |
0 |
elsif (@players == 1 and $knights_played >= 3 and not $player->largest_army) { } |
363
|
0 |
0 |
if $player->largest_army |
375
|
0 |
0 |
if (my $game_over = $self->game_over) |
382
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 2 |
387
|
0 |
0 |
unless $player_number and $code |
390
|
0 |
0 |
unless $self->is_players_turn($player_number) |
394
|
0 |
0 |
unless defined $self->{'monopoly'} |
396
|
0 |
0 |
if $self->robber->active |
405
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 2 |
410
|
0 |
0 |
unless $player_number and $resources and ref $resources eq 'HASH' |
413
|
0 |
0 |
unless $self->is_players_turn($player_number) |
417
|
0 |
0 |
unless defined $self->{'year_of_plenty'} |
428
|
0 |
2 |
unless @_ <= 2 |
|
0 |
2 |
unless @_ >= 1 |
|
1 |
1 |
@_ >= 2 ? : |
430
|
0 |
2 |
if $self->{'phase_index'} == $#phases |
441
|
1 |
1 |
if ($new_phase eq 'Deployment') { } |
|
0 |
1 |
elsif ($new_phase eq 'Play') { } |
452
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 2 |
463
|
0 |
0 |
unless $player and $resources and ref $resources eq 'HASH' and 1 == keys %$resources and exists $resources->{$player_number} and &all(sub {
$_ < 0;
}
, values %{$$resources{$player_number};}) and 1 == grep(($player_number == $_->{'player'}->number), @{$self->robber->check_players_to_concede;}) |
478
|
0 |
0 |
if $msg |
483
|
0 |
6 |
unless @_ <= 2 |
|
0 |
6 |
unless @_ >= 2 |
488
|
0 |
6 |
unless $player_number eq 'A' || $self->is_player_number($player_number) and $msg |
494
|
0 |
1 |
unless @_ <= 2 |
|
0 |
1 |
unless @_ >= 1 |
|
0 |
1 |
@_ >= 2 ? : |
500
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 1 |
|
0 |
0 |
@_ >= 2 ? : |
504
|
0 |
0 |
$args->{'from_7'} ? : |
512
|
0 |
0 |
if $msg |
516
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 1 |
|
0 |
0 |
@_ >= 2 ? : |
523
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 2 |
529
|
0 |
0 |
unless $player and $target_player |
532
|
0 |
0 |
unless $self->is_players_turn($player->number) |
547
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 2 |
552
|
0 |
0 |
unless $player_number and $location |
555
|
0 |
0 |
unless $player_number == $self->player->number |
566
|
0 |
0 |
unless $self->robber->active |
570
|
0 |
1 |
unless @_ <= 2 |
|
0 |
1 |
unless @_ >= 1 |
|
1 |
0 |
@_ >= 2 ? : |
575
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 1 |
|
0 |
0 |
@_ >= 2 ? : |
580
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 1 |
|
0 |
0 |
@_ >= 2 ? : |
585
|
0 |
0 |
if ($self->phase eq 'Deployment' and $self->round == 2) |
592
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 1 |
|
0 |
0 |
@_ >= 2 ? : |
594
|
0 |
0 |
if $self->phase eq 'Setup' |
596
|
0 |
0 |
if ($self->turn == 0) { } |
|
0 |
0 |
elsif ($self->phase eq 'Deployment' and $self->turn == @{$self->players;} and @{$self->player->settlements;} == 1) { } |
|
0 |
0 |
elsif ($self->phase eq 'Deployment' and @{$self->player->settlements;} == 2) { } |
|
0 |
0 |
elsif ($self->phase eq 'Play' and $self->{'turn_index'} + 1 == @{$self->players;}) { } |
631
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 1 |
|
0 |
0 |
@_ >= 2 ? : |
635
|
0 |
0 |
unless $self->is_players_turn($player_number) |
638
|
0 |
0 |
unless $self->phase eq 'Deployment' or $self->player->has_rolled_dice |
641
|
0 |
0 |
if $self->phase eq 'Deployment' and not $self->player->has_built_road && $self->player->has_built_settlement |
647
|
0 |
0 |
if ($self->robber->active) |
664
|
0 |
0 |
if ($self->turn == @{$self->players;} and $self->phase eq 'Play' or $self->phase eq 'Deployment' and @{$self->player->properties;} == 2 and $self->turn == 1 or $self->phase eq 'Deployment' and @{$self->player->properties;} == 1 and $self->turn == @{$self->players;}) { } |
683
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 1 |
|
0 |
0 |
@_ >= 2 ? : |
688
|
0 |
0 |
if $players_by_vps[0]->victory_points_count >= 10 |
691
|
0 |
5 |
unless @_ <= 2 |
|
0 |
5 |
unless @_ >= 1 |
|
5 |
0 |
@_ >= 2 ? : |
693
|
0 |
5 |
unless $self->phase eq 'Setup' |
695
|
1 |
4 |
unless $self->{'max_players'} > @{$self->players;} |
703
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 2 |
707
|
0 |
0 |
unless $self->is_players_turn($player_number) |
714
|
0 |
0 |
if ($dice_roll == 7) { } |
725
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 2 |
733
|
0 |
0 |
if $self->robber->location->uuid eq $tile->uuid |
739
|
0 |
0 |
if ($property->location->is_adjacent($tile)) |
742
|
0 |
0 |
$property->isa('Catan::Asset::Settlement') ? : |
743
|
0 |
0 |
unless my $resource = $tile->yields($amount) |
751
|
0 |
0 |
if (exists $resources{$player->number}) |
766
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 2 |
775
|
0 |
0 |
unless $resource |
784
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 2 |
790
|
0 |
0 |
unless grep(($self->player->number == $_), keys %$details) |
793
|
0 |
0 |
unless grep(($offering_player == $_), keys %$details) |
796
|
0 |
0 |
unless $self->player->has_rolled_dice |
799
|
0 |
0 |
if exists $self->trades->{$uuid} |
811
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 2 |
816
|
0 |
0 |
unless grep(($self->player->number == $_), keys %$details) and $player_number == $self->player->number |
825
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 2 |
830
|
0 |
0 |
unless @_ <= 1 |
|
0 |
0 |
unless @_ >= 1 |
837
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 2 |
846
|
0 |
0 |
unless $player_number and $uuid and exists $self->trades->{$uuid} and $self->trades->{$uuid}{'player'} != $player_number and $self->trades->{$uuid}{'trade'}->resources($player_number) |
857
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 2 |
866
|
0 |
0 |
unless $player_number and $uuid and exists $self->trades->{$uuid} and $self->trades->{$uuid}{'player'} == $player_number and $self->trades->{$uuid}{'trade'}->resources($player_number) |
872
|
0 |
1 |
unless @_ <= 1 |
|
0 |
1 |
unless @_ >= 1 |
877
|
0 |
1 |
unless @_ <= 1 |
|
0 |
1 |
unless @_ >= 1 |
882
|
0 |
3 |
unless @_ <= 2 |
|
0 |
3 |
unless @_ >= 2 |
884
|
0 |
3 |
unless $self->phase eq 'Setup' |
898
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 2 |
900
|
0 |
0 |
unless $number |
902
|
0 |
0 |
unless @player |
906
|
0 |
0 |
unless @_ <= 2 |
|
0 |
0 |
unless @_ >= 2 |
908
|
0 |
0 |
unless $number |
915
|
0 |
11 |
unless $msgs and ref $msgs eq 'ARRAY' |
916
|
0 |
11 |
unless my $fh = $self->{'log'} |