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/planet/library/checkBuildFactories.inc

60 lines
1.6 KiB
PHP

<?php
class beta5_planet_checkBuildFactories {
function beta5_planet_checkBuildFactories($lib) {
$this->lib = $lib;
$this->game = $this->lib->game;
$this->db = $this->game->db;
$this->players = $this->game->getLib('beta5/player');
$this->rules = $this->game->getLib('beta5/rules');
}
// Check a planet to see whether it's possible to build factories
function run($id, $nb, $t) {
// Get planet data
$q = $this->db->query("SELECT ifact+mfact,sale,pop,owner FROM planet WHERE id=$id");
list($nf, $sale, $pop, $owner) = dbFetchArray($q);
logText("checkBuildFact($id, $nb, $t) : nf=$nf, sale=$sale owner=$owner");
// Get owner rules
$ru = $this->rules->call('get', $owner);
$cost = $ru["{$t}f_cost"] * $nb;
$pinf = $this->players->call('get', $owner);
if ($pinf['cash'] < $cost) {
return 1;
}
// Prevent building more factories if the planet's for sale
if (!is_null($sale)) {
return 2;
}
// Get the amount of factories built / destroyed in the past "24h" (actually, the interval between
// day ticks)
$interval = $this->game->ticks['day']->interval;
$q = $this->db->query(
"SELECT SUM(change) FROM facthist "
. "WHERE planet=$id AND UNIX_TIMESTAMP(NOW()) - moment <= $interval"
);
if (dbCount($q)) {
list($ch24) = dbFetchArray($q);
} else {
$ch24 = 0;
}
$onf = $nf - $ch24;
// We can't build more than optFact*1.5 factories every 24h
$x = ($pop - 2000) / 48000; $allowed = round(1.5 * (($pop / 30) - 754 * $x * $x));
if ($nf + $nb > $onf + $allowed) {
return 3;
}
// FIXME : siege
return 0;
}
}
?>