$f->finish;
}
+sub a
+ : Help(Usage: .a username [points] | % can be used for wildcards %arro% will match barrow, if the number of points isn't specified, then 1 will be assumed.)
+ : ACL(irc_a)
+{
+ my ($self,$c,$msg) = @_;
+ my ($nick,$points) = $msg =~ /^(\S+)(?: (-?(:?\d+|\d*\.\d+)))?$/ or die 'ARGS';
+ $points //= 1;
+
+ my ($fleets) = $c->model->selectrow_array(q{
+SELECT count(*) FROM raids r
+ JOIN raid_targets rt ON r.id = rt.raid
+ JOIN raid_claims rc ON rt.id = rc.target
+WHERE not launched AND tick + 24 > tick()
+ AND uid = (SELECT uid FROM users WHERE username ILIKE $1);
+ },undef,$nick);
+
+ if ($fleets > 0 && $points > 0){
+ $c->reply("$nick has $fleets claimed waves the last 24 ticks that aren't marked as launched, so no points.");
+ return;
+ }
+ addPoints($c, 'attack', $nick, $points);
+}
+
+sub d
+ : Help(Usage: .d username [points] | % can be used for wildcards %arro% will match barrow, if the number of points isn't specified, then 1 will be assumed.)
+ : ACL(irc_d)
+ : Type(def)
+{
+ my ($self,$c,$msg) = @_;
+ my ($nick,$points) = $msg =~ /^(\S+)(?: (-?(:?\d+|\d*\.\d+)))?$/ or die 'ARGS';
+
+ addPoints($c, 'defense', $nick, $points);
+}
+
+sub s
+ : Help(Usage: .s username [points] | % can be used for wildcards %arro% will match barrow, if the number of points isn't specified, then 1 will be assumed.)
+ : ACL(irc_s)
+{
+ my ($self,$c,$msg) = @_;
+ my ($nick,$points) = $msg =~ /^(\S+)(?: (-?(:?\d+|\d*\.\d+)))?$/ or die 'ARGS';
+
+ addPoints($c, 'scan', $nick, $points);
+}
+
+sub h
+ : Help(Usage: .h username [points] | % can be used for wildcards %arro% will match barrow, if the number of points isn't specified, then 1 will be assumed.)
+ : ACL(irc_h)
+{
+ my ($self,$c,$msg) = @_;
+ my ($nick,$points) = $msg =~ /^(\S+)(?: (-?(:?\d+|\d*\.\d+)))?$/ or die 'ARGS';
+
+ addPoints($c, 'humor', $nick, $points);
+}
+
+sub addPoints {
+ my ($c,$type, $nick, $points) = @_;
+ $points //= 1;
+
+ my $dbh = $c->model;
+
+ if ($points*$points > 400){
+ $c->reply("Values between -20 and 20 please");
+ return;
+ }
+
+ my $f = $dbh->prepare(q{SELECT uid,username FROM users WHERE username ILIKE ?});
+ $f->execute($nick);
+ my $user = $f->fetchrow_hashref;
+ if ($f->rows == 1){
+ $type .= "_points";
+ $dbh->do(qq{UPDATE users SET $type = $type + ? WHERE uid = ?}
+ ,undef,$points,$user->{uid});
+ $c->reply("$user->{username} has been given $points $type");
+ }elsif ($f->rows == 0){
+ $c->reply("No hit, maybe spelling mistake, or add % as wildcard");
+ }else{
+ $c->reply("More than 1 user matched, please refine the search");
+ }
+ $f->finish;
+}
+
1;