X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=ND%2FWeb%2FPages%2FRaids.pm;h=2ae5201e0a187cf78788b31005159b21539f7b98;hb=7b149393a59ae55d92ade1243df82658f6c1aea8;hp=eddd7c8935e7de626374bf4b606d12d98321470d;hpb=bb18679a784a5e292be83060ae2d3853e05bcdd5;p=ndwebbie.git diff --git a/ND/Web/Pages/Raids.pm b/ND/Web/Pages/Raids.pm index eddd7c8..2ae5201 100644 --- a/ND/Web/Pages/Raids.pm +++ b/ND/Web/Pages/Raids.pm @@ -63,7 +63,6 @@ sub generateClaimXml : method { while (my $target = $targets->fetchrow_hashref){ my %target; $target{Id} = $target->{id}; - $target{Coords} = $target->{id}; my @waves; for (my $i = 1; $i <= $raid->{waves}; $i++){ my %wave; @@ -83,9 +82,6 @@ sub generateClaimXml : method { $claimers = join '/', @claimers; if ($owner){ $wave{Command} = 'Unclaim'; - if ($raid->{released_coords}){ - $target{Coords} = $DBH->selectrow_array('SELECT coords(x,y,z) FROM current_planet_stats WHERE id = ?',undef,$target->{planet}); - } }elsif ($joinable){ $wave{Command} = 'Join'; }else{ @@ -207,6 +203,14 @@ sub render_body { my @targets; while (my $target = $targetquery->fetchrow_hashref){ my %target; + if ($planet){ + if ($planet->{x} == $target->{x}){ + $target{style} = 'incluster'; + } + $target{ScoreBash} = 'bash' if ($target->{score}/$planet->{score} < 0.4); + $target{ValueBash} = 'bash' if ($target->{value}/$planet->{value} < 0.4); + #next if ($target->{score}/$planet->{score} < 0.4) && ($target->{value}/$planet->{value} < 0.4); + } $target{Id} = $target->{id}; $target{Race} = $target->{race}; my $num = pow(10,length($target->{score})-2); @@ -247,11 +251,6 @@ sub render_body { } $target{Scans} = \@scans; - if ($planet){ - if ($planet->{x} == $target->{x}){ - $target{style} = 'incluster'; - } - } my @roids; my @claims; @@ -259,9 +258,9 @@ sub render_body { for (my $i = 1; $i <= $raid->{waves}; $i++){ my $roids = floor(0.25*$size); $size -= $roids; - my $xp; + my $xp = 0; if ($planet){ - $xp = max(0,floor($roids * 10 * (min(2,$target{Score}/$planet->{score}) + min(2,$target{Value}/$planet->{value})-1))); + $xp = pa_xp($roids,$planet->{score},$planet->{value},$target{Score},$target{Value}); } push @roids,{Wave => $i, Roids => $roids, XP => $xp}; if ($self->{AJAX}){ @@ -280,25 +279,63 @@ sub render_body { $BODY->param(Targets => \@targets); }else{#list raids if we haven't chosen one yet - my $query = $DBH->prepare(q{SELECT id,released_coords FROM raids WHERE open AND not removed AND - id IN (SELECT raid FROM raid_access NATURAL JOIN groupmembers WHERE uid = ?)}); + my $launched = 0; + my $query = $DBH->prepare(q{SELECT r.id AS raid,released_coords AS releasedcoords,tick,waves*COUNT(DISTINCT rt.id) AS waves, + COUNT(rc.uid) AS claims, COUNT(nullif(rc.launched,false)) AS launched,COUNT(NULLIF(rc.uid > 0,true)) AS blocked + FROM raids r JOIN raid_targets rt ON r.id = rt.raid + LEFT OUTER JOIN raid_claims rc ON rt.id = rc.target + WHERE open AND not removed AND r.id + IN (SELECT raid FROM raid_access NATURAL JOIN groupmembers WHERE uid = ?) + GROUP BY r.id,released_coords,tick,waves}); $query->execute($ND::UID); my @raids; while (my $raid = $query->fetchrow_hashref){ - push @raids,{Raid => $raid->{id}, ReleasedCoords => $raid->{released_coords}}; + $raid->{waves} -= $raid->{blocked}; + $raid->{claims} -= $raid->{blocked}; + delete $raid->{blocked}; + $launched += $raid->{launched}; + push @raids,$raid; } $BODY->param(Raids => \@raids); if ($self->isBC){ $BODY->param(isBC => 1); - my $query = $DBH->prepare(q{SELECT id,open FROM raids WHERE not removed AND (not open - OR id NOT IN (SELECT raid FROM raid_access NATURAL JOIN groupmembers WHERE uid = ?))}); + my $query = $DBH->prepare(q{SELECT r.id AS raid,open ,tick,waves*COUNT(DISTINCT rt.id) AS waves, + COUNT(rc.uid) AS claims, COUNT(nullif(rc.launched,false)) AS launched ,COUNT(NULLIF(uid > 0,true)) AS blocked + FROM raids r JOIN raid_targets rt ON r.id = rt.raid + LEFT OUTER JOIN raid_claims rc ON rt.id = rc.target + WHERE not removed AND (not open + OR r.id NOT IN (SELECT raid FROM raid_access NATURAL JOIN groupmembers WHERE uid = ?)) + GROUP BY r.id,open,tick,waves}); $query->execute($ND::UID); my @raids; while (my $raid = $query->fetchrow_hashref){ - push @raids,{Raid => $raid->{id}, Open => $raid->{open}}; + $raid->{waves} -= $raid->{blocked}; + $raid->{claims} -= $raid->{blocked}; + delete $raid->{blocked}; + $launched += $raid->{launched}; + push @raids,$raid; } $BODY->param(ClosedRaids => \@raids); + + + $query = $DBH->prepare(q{SELECT r.id AS raid,tick,waves*COUNT(DISTINCT rt.id) AS waves, + COUNT(rc.uid) AS claims, COUNT(nullif(rc.launched,false)) AS launched ,COUNT(NULLIF(uid > 0,true)) AS blocked + FROM raids r JOIN raid_targets rt ON r.id = rt.raid + LEFT OUTER JOIN raid_claims rc ON rt.id = rc.target + WHERE removed + GROUP BY r.id,tick,waves}); + $query->execute; + my @oldraids; + while (my $raid = $query->fetchrow_hashref){ + $raid->{waves} -= $raid->{blocked}; + $raid->{claims} -= $raid->{blocked}; + delete $raid->{blocked}; + $launched += $raid->{launched}; + push @oldraids,$raid; + } + $BODY->param(RemovedRaids => \@oldraids); + $BODY->param(Launched => $launched); } } return $BODY;