BalanceOfPower
view release on metacpan or search on metacpan
lib/BalanceOfPower/Commands/DeclareWar.pm view on Meta::CPAN
package BalanceOfPower::Commands::DeclareWar;
$BalanceOfPower::Commands::DeclareWar::VERSION = '0.400115';
use v5.10;
use Moo;
use Array::Utils qw(intersect);
use BalanceOfPower::Constants ":all";
use BalanceOfPower::Utils qw( prev_turn );
extends 'BalanceOfPower::Commands::InMilitaryRange';
sub get_available_targets
{
my $self = shift;
my @targets = $self->SUPER::get_available_targets();
my @out = ();
for(@targets)
{
my $t = $_;
if((! $self->world->is_under_influence($t) || $self->world->is_under_influence($t) ne $self->actor) &&
! $self->world->war_busy($t))
{
push @out, $t;
}
}
return @out;
}
sub IA
{
my $self = shift;
my $actor = $self->get_nation();
my @choose = $self->world->shuffle("Choosing someone to declare war to for ". $actor->name , $self->get_available_targets());
for(@choose)
{
my $enemy = $self->world->get_nation($_);
if($actor->good_prey($enemy, $self->world))
{
return "DECLARE WAR TO " . $enemy->name;
}
}
return undef;
}
1;
( run in 0.818 second using v1.01-cache-2.11-cpan-99c4e6809bf )