diff --git a/lib/Lacuna/DB.pm b/lib/Lacuna/DB.pm index da0e5c06..f63c8c3e 100644 --- a/lib/Lacuna/DB.pm +++ b/lib/Lacuna/DB.pm @@ -92,6 +92,17 @@ sub buildings { $self->resultset('Building')->search($where); } +sub ship { + my ($self, $building_id) = @_; + $self->resultset('Ships')->find($building_id); +} + + +sub ships { + my ($self, $id) = @_; + my $where = $self->_where(name => $id); + $self->resultset('Ships')->search($where); +} no Moose; __PACKAGE__->meta->make_immutable; diff --git a/lib/Lacuna/Role/Ship/Arrive/DamageBuilding.pm b/lib/Lacuna/Role/Ship/Arrive/DamageBuilding.pm index b0b28503..f65a82b5 100644 --- a/lib/Lacuna/Role/Ship/Arrive/DamageBuilding.pm +++ b/lib/Lacuna/Role/Ship/Arrive/DamageBuilding.pm @@ -19,7 +19,7 @@ after handle_arrival_procedures => sub { # 1) Group of snarks? # 2) How many target buildings? # 3) See if reasonable that buildings get zeroed? - my %snarks = { + my %snarks = ( snarks => { count => 0, target => [], @@ -36,7 +36,7 @@ after handle_arrival_procedures => sub { count => 0, target => [], }, - }; + ); if ($self->type eq "attack_group") { my $payload = $self->payload; for my $fleet (keys %{$payload->{fleet}}) { @@ -111,7 +111,7 @@ after handle_arrival_procedures => sub { else { my $building; for my $sn_type ("observatory_seeker", "security_ministry_seeker", - "spaceport_seeker", "snark_count") { + "spaceport_seeker", "snarks") { my @tbuilds; if ($snarks{$sn_type}->{count}) { for my $tb ( @{$snarks{$sn_type}->{target}}) { @@ -131,8 +131,7 @@ after handle_arrival_procedures => sub { } } else { - my $count = 0; - for (0..$snarks{$sn_type}->{count}) { + for (1..$snarks{$sn_type}->{count}) { my $amount = randint(10,70); ($building) = sort { diff --git a/lib/Lacuna/Role/Ship/Arrive/DeployBleeder.pm b/lib/Lacuna/Role/Ship/Arrive/DeployBleeder.pm index 6b5c372f..61b7408e 100644 --- a/lib/Lacuna/Role/Ship/Arrive/DeployBleeder.pm +++ b/lib/Lacuna/Role/Ship/Arrive/DeployBleeder.pm @@ -24,7 +24,7 @@ after handle_arrival_procedures => sub { delete $payload->{fleet}->{$key}; } if (keys %{$payload->{fleet}}) { - $self->payload = $payload; + $self->payload($payload); $done_after = 0; } } diff --git a/lib/Lacuna/Role/Ship/Arrive/DeploySmolderingCrater.pm b/lib/Lacuna/Role/Ship/Arrive/DeploySmolderingCrater.pm index bcf18c40..8a746100 100644 --- a/lib/Lacuna/Role/Ship/Arrive/DeploySmolderingCrater.pm +++ b/lib/Lacuna/Role/Ship/Arrive/DeploySmolderingCrater.pm @@ -25,7 +25,7 @@ after handle_arrival_procedures => sub { delete $payload->{fleet}->{$key}; } if (keys %{$payload->{fleet}}) { - $self->payload = $payload; + $self->payload($payload); $done_after = 0; } } diff --git a/lib/Lacuna/Role/Ship/Arrive/DumpWaste.pm b/lib/Lacuna/Role/Ship/Arrive/DumpWaste.pm index ee11eb7f..a4e39a91 100644 --- a/lib/Lacuna/Role/Ship/Arrive/DumpWaste.pm +++ b/lib/Lacuna/Role/Ship/Arrive/DumpWaste.pm @@ -82,7 +82,7 @@ after handle_arrival_procedures => sub { } } if (keys %{$payload->{fleet}}) { - $self->payload = $payload; + $self->payload($payload); $done_after = 0; } } diff --git a/lib/Lacuna/Role/Ship/Arrive/TriggerDefense.pm b/lib/Lacuna/Role/Ship/Arrive/TriggerDefense.pm index 3eaa36fe..8f31aa9d 100644 --- a/lib/Lacuna/Role/Ship/Arrive/TriggerDefense.pm +++ b/lib/Lacuna/Role/Ship/Arrive/TriggerDefense.pm @@ -29,7 +29,8 @@ after handle_arrival_procedures => sub { return if ( $is_planet && $body_attacked->empire && $body_attacked->empire_id == $ship_body->empire_id ); # no defense against allies - return if ( $is_planet && $body_attacked->empire && $body_attacked->empire->alliance_id == $ship_body->empire->alliance_id ); + return if ( $is_planet && $body_attacked->empire && $body_attacked->empire->alliance_id && $ship_body->empire->alliance_id && + $body_attacked->empire->alliance_id == $ship_body->empire->alliance_id ); # set last attack status $body_attacked->set_last_attacked_by($ship_body->id);