]> ruin.nu Git - ndwebbie.git/blobdiff - lib/NDWeb/Controller/Members.pm
Treat Alliance Standby fleets as fleets with no missions
[ndwebbie.git] / lib / NDWeb / Controller / Members.pm
index e8a7d0e70e3d509b23a62787c5a9c85c502e5e20..19f7a2d128d784baefc8697a24310df0ff0d450d 100644 (file)
@@ -517,7 +517,7 @@ WHERE uid = $1 AND num = $2 AND back > tick()
                                }else{
                                        $m->{pid} = $c->user->planet;
                                }
-                       }elsif ($m->{target} =~ /^(\d+):(\d+):(\d+)$/) {
+                       }elsif ($m->{target} ~~ /^(\d+):(\d+):(\d+)$/) {
                                $m->{pid} = $dbh->selectrow_array($findplanet,undef,$1,$2,$3);
                                unless ($m->{pid}){
                                        $m->{warning} = "No planet at $m->{target}, try again next tick.";
@@ -585,15 +585,15 @@ sub parseconfirmations {
        $missions =~ s/\(\s/(/g;
        $missions =~ s/\s\)/)/g;
        my $returnetare = qr/(\d+) \s+
-               Arrival:(\d+)/sx;
-       my $missionetare = qr/(\d+) (\s+ \(\+\d+\))? \s+
-               Arrival:(\d+) \s+
+               Arrival:\s*(\d+)/sx;
+       my $missionetare = qr/\s* (\d+ \+ \s*)? (\d+) \s+
+               Arrival:\s*(\d+) \s+
                \QReturn ETA:\E\s*(?:(?<eta>Instant) \s+ Cancel \s+ Order
                        | (?<eta>\d+) \s+ Ticks \s+ Recall \s+ Fleet)/sx;
        my $etare = qr/(Galaxy:\d+Universe:\d+(?:Alliance:\d+)?
                |$missionetare
                |$returnetare)\s*/x;
-       my $missre = qr/((?:Fake\ )?\w+)\s*/x;
+       my $missre = qr/((?:Alliance\ Standby)|(?:(?:Fake\ )?\w+))\s*/x;
        if ($missions =~ m/
                Ships \s+ Cla \s+ T\s?1 \s+ T\s?2 \s+ T\s?3 \s+ Base \s+ \(i\) \s (?<name>.+?) \s+ \(i\) \s+ (?<name>.+?) \s+ \(i\) \s+ (?<name>.+?) \s+ \(i\) \s+ TOTAL \s+
                (?<ships>.+?)
@@ -629,10 +629,16 @@ sub parseconfirmations {
                                next;
                        }
 
+                       if ($missions[0] eq 'Alliance Standby'){
+                               shift @missions;
+                               push @slots,\%mission;
+                               next;
+                       }
+
                        given(shift @etas){
                                when(/$missionetare/sx){
                                        $mission{tick} = $3;
-                                       $mission{eta} = $1 + $+{eta};
+                                       $mission{eta} = $2 + $+{eta};
                                        $mission{back} = $3 + $mission{eta} - 1;
                                        $mission{target} = shift @targets;
                                        $mission{lt} = shift @lts;
@@ -645,7 +651,7 @@ sub parseconfirmations {
                                        $mission{target} = shift @targets;
                                        $mission{lt} = shift @lts;
                                        $mission{mission} = shift @missions;
-                                       die 'Did you forget some at the end?' if $mission{mission} ne 'Return';
+                                       die "Did you forget some at the end? '$mission{mission}'" if $mission{mission} ne 'Return';
                                }
                        }
                        push @slots,\%mission;