,count(CASE WHEN i.mission = 'Attack' THEN 1 ELSE NULL END) AS attacks
,count(CASE WHEN (i.mission = 'Defend' OR i.mission = 'AllyDef') THEN 1 ELSE NULL END) AS defenses
,count(CASE WHEN i.mission = 'Attack' AND rt.id IS NULL THEN 1 ELSE NULL END) AS solo
- ,count(CASE WHEN i.mission = 'Defend' OR i.mission = 'AllyDef' THEN NULLIF(i.ingal OR (t.alliance_id = 1),TRUE) ELSE NULL END) AS bad_def
+ ,count(CASE WHEN i.mission = 'Defend' OR i.mission = 'AllyDef' THEN NULLIF(i.ingal OR (t.alliance = 'NewDawn'),TRUE) ELSE NULL END) AS bad_def
FROM users u
JOIN groupmembers gm USING (uid)
- LEFT OUTER JOIN (SELECT DISTINCT ON (planet) planet,tick from scans where type = 'News' ORDER BY planet,tick DESC) n USING (planet)
- LEFT OUTER JOIN (SELECT DISTINCT name,eta,tick,sender,target,mission,ingal FROM intel WHERE amount IS NULL) i ON i.sender = u.planet
- LEFT OUTER JOIN current_planet_stats t ON i.target = t.id
- LEFT OUTER JOIN (SELECT rt.id,planet,tick FROM raids r
- JOIN raid_targets rt ON r.id = rt.raid) rt ON rt.planet = i.target
- AND (rt.tick + 12) > i.tick AND rt.tick <= i.tick
+ LEFT OUTER JOIN (SELECT DISTINCT ON (pid) pid,tick from scans where type = 'News' ORDER BY pid,tick DESC) n USING (pid)
+ LEFT OUTER JOIN (SELECT DISTINCT name,eta,tick,sender,target,mission,ingal FROM intel WHERE amount IS NULL) i ON i.sender = u.pid
+ LEFT OUTER JOIN current_planet_stats t ON i.target = t.pid
+ LEFT OUTER JOIN (SELECT rt.id,pid,tick FROM raids r
+ JOIN raid_targets rt ON r.id = rt.raid) rt ON rt.pid = i.target
+ AND (rt.tick + 12) > i.tick AND rt.tick <= i.tick
LEFT OUTER JOIN raid_claims rc ON rt.id = rc.target AND rc.uid = u.uid AND i.tick = rt.tick + rc.wave - 1
WHERE gm.gid = 2
GROUP BY u.uid,u.username,u.attack_points, u.defense_points,n.tick
my $query = $dbh->prepare(q{
SELECT coords(t.x,t.y,t.z), i.eta, i.tick, rt.id AS ndtarget, rc.launched, inc.landing_tick
FROM users u
- LEFT OUTER JOIN (SELECT DISTINCT eta,tick,sender,target,mission,name FROM intel WHERE amount IS NULL) i ON i.sender = u.planet
- LEFT OUTER JOIN current_planet_stats t ON i.target = t.id
- LEFT OUTER JOIN (SELECT rt.id,planet,tick FROM raids r
- JOIN raid_targets rt ON r.id = rt.raid) rt ON rt.planet = i.target
- AND (rt.tick + 12) > i.tick AND rt.tick <= i.tick
+ LEFT OUTER JOIN (SELECT DISTINCT eta,tick,sender,target,mission,name FROM intel WHERE amount IS NULL) i ON i.sender = u.pid
+ LEFT OUTER JOIN current_planet_stats t ON i.target = t.pid
+ LEFT OUTER JOIN (SELECT rt.id,pid,tick FROM raids r
+ JOIN raid_targets rt ON r.id = rt.raid) rt ON rt.pid = i.target
+ AND (rt.tick + 12) > i.tick AND rt.tick <= i.tick
LEFT OUTER JOIN raid_claims rc ON rt.id = rc.target AND rc.uid = u.uid AND i.tick = rt.tick + rc.wave - 1
- LEFT OUTER JOIN (SELECT sender, eta, landing_tick FROM calls c
- JOIN incomings i ON i.call = c.id) inc ON inc.sender = i.target
+ LEFT OUTER JOIN (SELECT pid, eta, landing_tick FROM calls c
+ JOIN incomings i USING (call)) inc ON inc.pid = i.target
AND (inc.landing_tick + inc.eta) >= i.tick
- AND (inc.landing_tick - inc.eta - 1) <= (i.tick - i.eta)
+ AND (inc.landing_tick - inc.eta - 1) <= (i.tick - i.eta)
WHERE u.uid = $1 AND i.mission = 'Attack'
ORDER BY (i.tick - i.eta)
});
$c->stash(attacks => \@attacks);
$query = $dbh->prepare(q{
- SELECT coords(t.x,t.y,t.z),t.alliance_id, t.alliance, i.eta, i.tick, i.ingal
+ SELECT coords(t.x,t.y,t.z),t.aid, t.alliance, i.eta, i.tick, i.ingal
FROM users u
- JOIN (SELECT DISTINCT name,eta,tick,sender,target,mission,ingal FROM intel WHERE amount IS NULL) i ON i.sender = u.planet
- LEFT OUTER JOIN current_planet_stats t ON i.target = t.id
+ JOIN (SELECT DISTINCT name,eta,tick,sender,target,mission,ingal FROM intel WHERE amount IS NULL) i ON i.sender = u.pid
+ LEFT OUTER JOIN current_planet_stats t ON i.target = t.pid
WHERE u.uid = $1 AND (i.mission = 'Defend' OR i.mission = 'AllyDef')
ORDER BY (i.tick - i.eta)
});
my @other_def;
while (my $intel = $query->fetchrow_hashref){
my $def = {target => $intel->{coords}, other => $intel->{alliance}, tick => $intel->{tick}};
- if (defined $intel->{alliance_id} && $intel->{alliance_id} == 1){
+ if ($intel->{alliance} ~~ 'NewDawn'){
push @nd_def, $def;
}elsif($intel->{ingal}){
push @ingal_def, $def;