alliance; } $allianceinfo = $database->getAlliance($aid); // Titlul si bara de taburi, exact ca in celelalte pagini de alianta. // Fara ele, intrarea pe tabul de bonusuri facea sa dispara navigatia si nu // mai aveai cum sa te intorci la Overview. echo "

" . htmlspecialchars($allianceinfo['tag'], ENT_QUOTES, 'UTF-8') . " - " . htmlspecialchars($allianceinfo['name'], ENT_QUOTES, 'UTF-8') . "

"; include("alli_menu.tpl"); $abEngine = new AllianceBonus(); $abMessage = ''; $abError = false; /* ---------------------------------------------------------------- donatie */ if (isset($_POST['ab_donate'])) { $abType = (int) ($_POST['ab_type'] ?? 0); $abTriple = isset($_POST['ab_triple']) && $_POST['ab_triple'] === '1'; $abAmounts = array( (float) ($_POST['ab_wood'] ?? 0), (float) ($_POST['ab_clay'] ?? 0), (float) ($_POST['ab_iron'] ?? 0), (float) ($_POST['ab_crop'] ?? 0), ); $abResult = $abEngine->donate($session->uid, $village->wid, $abType, $abAmounts, $abTriple); switch ($abResult) { case AllianceBonus::DONATE_OK: $abMessage = defined('ALLYBONUS_MSG_OK') ? ALLYBONUS_MSG_OK : 'Resources donated.'; break; case AllianceBonus::DONATE_UPGRADING: $abMessage = defined('ALLYBONUS_MSG_UPGRADING') ? ALLYBONUS_MSG_UPGRADING : 'This bonus is currently being unlocked; donations are paused.'; $abError = true; break; case AllianceBonus::DONATE_LIMIT: $abMessage = defined('ALLYBONUS_MSG_LIMIT') ? ALLYBONUS_MSG_LIMIT : 'That would exceed your daily donation limit.'; $abError = true; break; case AllianceBonus::DONATE_RESOURCES: $abMessage = defined('ALLYBONUS_MSG_RESOURCES') ? ALLYBONUS_MSG_RESOURCES : 'Not enough resources in this village.'; $abError = true; break; case AllianceBonus::DONATE_NO_GOLD: $abMessage = defined('ALLYBONUS_MSG_NOGOLD') ? ALLYBONUS_MSG_NOGOLD : 'Not enough gold to triple this donation.'; $abError = true; break; case AllianceBonus::DONATE_NO_ALLIANCE: $abMessage = defined('ALLYBONUS_MSG_NOALLY') ? ALLYBONUS_MSG_NOALLY : 'You are not in an alliance.'; $abError = true; break; default: $abMessage = defined('ALLYBONUS_MSG_INVALID') ? ALLYBONUS_MSG_INVALID : 'Invalid donation.'; $abError = true; } } /* ------------------------------------------------------------------ stare */ $abAid = $aid; $abState = $abEngine->getState($abAid); $abHighest = $abEngine->highestLevel($abAid); $abLimit = AllianceBonus::dailyLimit($abHighest); $abUsed = $abEngine->donatedToday($session->uid); $abLeft = max(0, $abLimit - $abUsed); $abTypes = AllianceBonus::types(); $abGpack = defined('GP_LOCATE') ? GP_LOCATE : 'gpack/travian_default/'; ?>

: /

$abInfo) { $abRow = $abState[$abT]; $abLevel = (int) $abRow['level']; $abNext = $abLevel + 1; $abCost = AllianceBonus::costFor($abLevel); $abPool = (float) $abRow['pool']; $abBusy = $abRow['upgrade_end'] > time(); $abPct = ($abCost > 0) ? max(0, min(100, $abPool / $abCost * 100)) : 100; $abName = defined($abInfo['lang']) ? constant($abInfo['lang']) : ucfirst($abInfo['key']); ?>
<?php echo $abName; ?>
/ effectiveLevel($session->uid, $abT); $abWait = $abEngine->waitingFor($session->uid, $abT); ?>  +%
: 0) { ?> – getTimeFormat($abWait); ?>
= AllianceBonus::MAX_LEVEL) { ?>
getTimeFormat($abRow['upgrade_end'] - time()); ?>
/  (: +%)



contributions($abAid, 20); if ($abTop) { ?>