This repository has been archived on 2024-07-18. You can view files and clone it, but cannot push or open issues or pull requests.
lwb5/scripts/game/beta5/alliance/library/updateVictory.inc

54 lines
1.5 KiB
PHP

<?php
class beta5_alliance_updateVictory {
function beta5_alliance_updateVictory($lib) {
$this->lib = $lib;
$this->db = $this->lib->game->db;
}
// Compute victory conditions for an alliance
function run($aid) {
// Get the total amount of planets
$q = $this->db->query("SELECT COUNT(*) FROM planet WHERE status = 0");
list($pCount) = dbFetchArray($q);
// Get the amount of planets the alliance controls
$q = $this->db->query("SELECT COUNT(*) FROM planet WHERE owner IN ("
. "SELECT id FROM player WHERE alliance = $aid AND a_status='IN')");
list($aCount) = dbFetchArray($q);
// Compute the ratio
$pRatio = $aCount / $pCount;
if ($pRatio > 0.75) {
$pRatio = 0.75;
// Check if the alliance was already scheduled for victory
$q = $this->db->query("SELECT time_of_victory FROM alliance_victory WHERE alliance=$aid");
if (dbCount($q)) {
list($tov) = dbFetchArray($q);
if (time() > $tov) {
$tValue = 0.25;
} else {
$diff = $tov - time();
if ($diff > 604800) {
$diff = 604800;
}
$tValue = (604800 - $diff) / 2419200; // 7*24*3600*4
}
logText("tov = $tov, diff = $diff, tval = $tValue");
} else {
$this->db->query("INSERT INTO alliance_victory(alliance, time_of_victory)"
. " VALUES ($aid, UNIX_TIMESTAMP(NOW()) + 604800)");
$tValue = 0;
}
} else {
$tValue = 0;
$this->db->query("DELETE FROM alliance_victory WHERE alliance=$aid");
}
return round(($pRatio + $tValue) * 100);
}
}
?>