$total['SDs'] = $db->getInt('tot_sds'); } $db->query(' SELECT sector_has_forces.sector_id, sector_has_forces.owner_id FROM player JOIN sector_has_forces ON player.game_id = sector_has_forces.game_id AND player.account_id = sector_has_forces.owner_id WHERE player.game_id=' . $db->escapeNumber($alliance->getGameID()) . ' AND player.alliance_id=' . $db->escapeNumber($alliance->getAllianceID()) . ' AND expire_time >= ' . $db->escapeNumber(TIME) . ' ORDER BY ' . $categorySQL . ', ' . $subcategory); $PHP_OUTPUT .= '<div align="center"><a href="http://wiki.smrealms.de/index.php?title=Game_Guide:_Forces" target="_blank"><img align="right" src="images/silk/help.png" width="16" height="16" alt="Wiki Link" title="Goto SMR Wiki: Forces"/></a>'; if ($db->getNumRows() > 0) { $PHP_OUTPUT .= 'Your alliance currently has '; $PHP_OUTPUT .= $db->getNumRows(); $PHP_OUTPUT .= ' stacks of forces in the universe!<br />'; $hardwareTypes =& Globals::getHardwareTypes(); $PHP_OUTPUT .= create_table(); $PHP_OUTPUT .= '<th>Number of Force</th><th>Value</th></tr>'; $PHP_OUTPUT .= '<tr><td><span class="yellow">' . number_format($total['Mines']) . '</span> mines</td><td><span class="creds">' . number_format($total['Mines'] * $hardwareTypes[HARDWARE_MINE]['Cost']) . '</span> credits</td></tr>'; $PHP_OUTPUT .= '<tr><td><span class="yellow">' . number_format($total['CDs']) . '</span> combat drones</td><td><span class="creds">' . number_format($total['CDs'] * $hardwareTypes[HARDWARE_COMBAT]['Cost']) . '</span> credits</td></tr>'; $PHP_OUTPUT .= '<tr><td><span class="yellow">' . number_format($total['SDs']) . '</span> scout drones</td><td><span class="creds">' . number_format($total['SDs'] * $hardwareTypes[HARDWARE_SCOUT]['Cost']) . '</span> credits</td></tr>'; $PHP_OUTPUT .= '<tr><td><span class="yellow bold">' . number_format(array_sum($total)) . '</span> forces</td><td><span class="creds bold">' . number_format($total['Mines'] * $hardwareTypes[HARDWARE_MINE]['Cost'] + $total['CDs'] * $hardwareTypes[HARDWARE_COMBAT]['Cost'] + $total['SDs'] * $hardwareTypes[HARDWARE_SCOUT]['Cost']) . '</span> credits</td></tr>'; $PHP_OUTPUT .= '</table><br />'; $PHP_OUTPUT .= '<table class="standard inset"><tr>'; $container = create_container('skeleton.php', 'alliance_forces.php'); $container['seq'] = $order == 'ASC' ? 'DESC' : 'ASC'; setCategories($container, 'player_name', $category, $categorySQL, $subcategory); $PHP_OUTPUT .= '<th>'; $PHP_OUTPUT .= create_header_link($container, 'Player Name'); $PHP_OUTPUT .= '</th>'; setCategories($container, 'sector_has_forces.sector_id', $category, $categorySQL, $subcategory);
function canWeUNO(AbstractSmrPlayer &$player, $oppurtunisticOnly) { if ($player->getCredits() < MINUMUM_RESERVE_CREDITS) { return false; } $ship =& $player->getShip(); if ($ship->hasMaxShields() && $ship->hasMaxArmour() && $ship->hasMaxCargoHolds()) { return false; } $sector =& $player->getSector(); // We buy armour in preference to shields as it's cheaper. // We buy cargo holds last if we have no newbie turns because we'd rather not die $hardwareArray = array(HARDWARE_ARMOUR, HARDWARE_SHIELDS, HARDWARE_CARGO); $amount = 0; $locations =& $sector->getLocations(); foreach ($locations as &$location) { if ($location->isHardwareSold()) { $hardwareSold =& $location->getHardwareSold(); if ($player->getNewbieTurns() > MIN_NEWBIE_TURNS_TO_BUY_CARGO && !$ship->hasMaxCargoHolds() && isset($hardwareSold[HARDWARE_CARGO]) && ($amount = floor(($player->getCredits() - MINUMUM_RESERVE_CREDITS) / Globals::getHardwareCost(HARDWARE_CARGO))) > 0) { // Buy cargo holds first if we have plenty of newbie turns left. $hardwareID = HARDWARE_CARGO; } else { foreach ($hardwareArray as $hardwareArrayID) { if (!$ship->hasMaxHardware($hardwareArrayID) && isset($hardwareSold[$hardwareArrayID]) && ($amount = floor(($player->getCredits() - MINUMUM_RESERVE_CREDITS) / Globals::getHardwareCost($hardwareArrayID))) > 0) { $hardwareID = $hardwareArrayID; break; } } } if (isset($hardwareID)) { return doUNO($hardwareID, min($ship->getMaxHardware($hardwareID) - $ship->getHardware($hardwareID), $amount)); } } } if ($oppurtunisticOnly === true) { return false; } if ($player->getCredits() - $ship->getCostToUNO() < MINUMUM_RESERVE_CREDITS) { return false; } //Only do non-oppurtunistic UNO if we have the money to do it properly! foreach ($hardwareArray as $hardwareArrayID) { if (!$ship->hasMaxHardware($hardwareArrayID)) { $hardwareNeededID = $hardwareArrayID; return plotToNearest($player, Globals::getHardwareTypes($hardwareArrayID)); } } }