+};
+
+my $points = class extends NDIRC::Command {
+ has point => (
+ is => 'ro',
+ isa => 'Str',
+ required => 1
+ );
+ method execute ($c,$msg) {
+ my ($nick,$points) = $msg =~ /^(\S+)(?: (-?(:?\d+|\d*\.\d+)))?$/ or die 'ARGS';
+
+ return unless $self->check($c,$nick);
+
+ $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){
+ my $type .= $self->point . "_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;
+ }
+ method check ($c,$nick) {
+ return 1;
+ }
+};
+
+command a => {
+ help => q(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.),
+ point => 'attack',
+ acl => q(irc_a)
+}, class {
+ extends $points->name;
+ method check ($c,$nick) {
+ 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 0;
+ }
+ return 1;
+ }
+};
+
+command d => {
+ help => q(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 => q(irc_d),
+ point => 'defense',
+ type => q(def)
+}, $points;
+
+command s => {
+ help => q(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.),
+ point => 'scan',
+ acl => q(irc_s),
+}, $points;
+
+command h => {
+ help => q(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.),
+ point => 'humor',
+ acl => q(irc_h),
+}, $points;