]> ruin.nu Git - NDIRC.git/blobdiff - Commands/Def.pm
Converted .defcall
[NDIRC.git] / Commands / Def.pm
index 7931033e2f6ddd1ba1cf1b04372dff5bb5fbaef0..74d0aa8dd85de111414620e2510cbb2d2483e983 100644 (file)
@@ -39,5 +39,45 @@ sub anon
        $c->message("msg ".$c->channel, "<c03>$target << $mess</c>");
 }
 
+sub defcall
+       : Help(syntax: .defcall [callid] | if a call id is given, then shiptypes and eta will be fetched from the database and added to the message)
+       : Type(def)
+       : ACL(irc_defcall)
+{
+       my ($self,$c,$msg) = @_;
+       my ($callnr,$mess) = $msg =~ /^(\d+)?(.*)$/ or die 'ARGS';
+       my $dbh = $c->model;
+
+       my $callinfo = "";
+       if ($callnr){
+               my $st = $dbh->prepare(q{
+SELECT covered
+       ,c.landing_tick - (SELECT value::integer FROM misc WHERE id = 'TICK') AS eta
+       ,concat(i.shiptype||'/') AS shiptype
+FROM calls c
+       JOIN incomings i ON i.call = c.id
+       LEFT OUTER JOIN users dc ON dc.uid = c.dc
+       JOIN users u ON u.uid = c.member
+WHERE c.id = ?
+GROUP BY c.id,c.landing_tick,c.covered
+ORDER BY c.landing_tick;
+               });
+               my $call = $dbh->selectrow_hashref($st,undef,$callnr);
+               unless (defined $call->{covered}){
+                       $c->reply("No call with id: $callnr");
+                       return;
+               }
+               chop($call->{shiptype});
+               $callinfo = "(Anti $call->{shiptype} ETA: $call->{eta})";
+               if($call->{covered}){
+                       $c->reply("Call <b>$callnr</b> $callinfo is covered.");
+                       return;
+               }
+       }
+       $c->message("notice $ND::memchan", "DEFENSE REQUIRED!! WAKE UP!!");
+       $c->message("msg $ND::memchan", "DEFENSE REQUIRED $mess $callinfo MSG "
+               .$c->nick." TO RESPOND");
+}
+
 1;