]> ruin.nu Git - NDIRC.git/blobdiff - Commands/Usermgm.pm
Set points before the check
[NDIRC.git] / Commands / Usermgm.pm
index eed0d19718b2774bfab1f951d054e928a3dd4eeb..00ebeb0d77ff4064b871a9b13d52e56489c32b18 100644 (file)
@@ -423,10 +423,10 @@ my $points = class extends NDIRC::Command {
        method execute ($c,$msg) {
                my ($nick,$points) = $msg =~ /^(\S+)(?: (-?(:?\d+|\d*\.\d+)))?$/ or die 'ARGS';
 
-               return unless $self->check($c,$nick,$points);
-
                $points //= 1;
 
+               return unless $self->check($c,$nick,$points);
+
                my $dbh = $c->model;
 
                if ($points*$points > 400){
@@ -496,4 +496,54 @@ command h => {
        acl => q(irc_h),
 }, $points;
 
+command getanti => {
+       help => q(Usage: .getanti class [eta] | class is the target class, like fi or bs, eta is optional max eta for the ships.),
+       acl => q(irc_getships),
+}, class extends NDIRC::Command {
+       method execute ($c,$msg) {
+               my ($class,$eta) = $msg =~ /^(\S+)(?: (\d+))?$/ or die 'ARGS';
+               my $dbh = $c->model;
+
+               $eta //= 9;
+
+               my @classes = qw/Fi Co Fr De Cr Bs/;
+               for (@classes){
+                       if (lc $class eq lc $_){
+                               $class = $_;
+                               last;
+                       }
+               }
+
+               while ($eta < 9){
+                       pop @classes;
+                       pop @classes;
+                       $eta++;
+               }
+
+               my $f = $dbh->prepare(q{
+SELECT username, ship, amount, CASE WHEN $1 = t1 THEN 't1' ELSE 't2' END AS t
+FROM available_ships a
+       JOIN ship_stats s ON (a.ship = s.name)
+WHERE uid IN (SELECT uid FROM groupmembers WHERE gid = 'M')
+       AND class = ANY($2)
+       AND $1 IN (t1,t2)
+ORDER BY amount*(metal+crystal+eonium)*CASE WHEN $1 = t1 THEN 1.0 ELSE 0.6 END DESC
+                       });
+               $f->execute($class,\@classes);
+               my $text;
+               my $i = 0;
+               my $total = 0;
+               while (my $user = $f->fetchrow_hashref){
+                       $text .= "($user->{username}: $user->{ship} $user->{amount} $user->{t}) ";
+                       $i++;
+                       $total += $user->{amount};
+               }
+               if ($text){
+                       $c->reply("<b>$i</b> fleets with anti-<b>$class</b>: $text");
+               }else{
+                       $c->reply("Couldn't find any user with anti-<b>$class</b>");
+               }
+       }
+};
+
 1;