Example #1
0
/**
 *
 */
function externals_showProperties($cave)
{
    global $buildingTypeList, $defenseSystemTypeList, $resourceTypeList, $scienceTypeList, $unitTypeList, $config, $params;
    $externalID = intval($params->POST->externalID);
    // first check whether that defense should be displayed...
    $defense = $defenseSystemTypeList[$externalID];
    $maxLevel = round(eval('return ' . formula_parseToPHP("{$defense->maxLevel};", '$cave')));
    if (!$defense || $defense->nodocumentation && !$cave[$defense->dbFieldName] && rules_checkDependencies($defense, $cave) !== TRUE) {
        $defense = current($defenseSystemTypeList);
    }
    $template = tmpl_open($params->SESSION->player->getTemplatePath() . 'externalProperties.ihtml');
    $currentlevel = $cave[$defense->dbFieldName];
    $levels = array();
    for ($level = $cave[$defense->dbFieldName], $count = 0; $level < $maxLevel && $count < 6; ++$count, ++$level, ++$cave[$defense->dbFieldName]) {
        $duration = time_formatDuration(eval('return ' . formula_parseToPHP($defense->productionTimeFunction . ";", '$cave')) * DEFENSESYSTEM_TIME_BASE_FACTOR);
        // iterate ressourcecosts
        $resourcecost = array();
        foreach ($defense->resourceProductionCost as $resourceID => $function) {
            $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$cave')));
            if ($cost) {
                array_push($resourcecost, array('name' => $resourceTypeList[$resourceID]->name, 'dbFieldName' => $resourceTypeList[$resourceID]->dbFieldName, 'value' => $cost));
            }
        }
        // iterate unitcosts
        $unitcost = array();
        foreach ($defense->unitProductionCost as $unitID => $function) {
            $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$cave')));
            if ($cost) {
                array_push($unitcost, array('name' => $unitTypeList[$unitID]->name, 'dbFieldName' => $unitTypeList[$unitID]->dbFieldName, 'value' => $cost));
            }
        }
        $buildingCost = array();
        foreach ($defense->buildingProductionCost as $key => $value) {
            if ($value != "" && $value != 0) {
                array_push($buildingCost, array('dbFieldName' => $buildingTypeList[$key]->dbFieldName, 'name' => $buildingTypeList[$key]->name, 'value' => ceil(eval('return ' . formula_parseToPHP($defense->buildingProductionCost[$key] . ';', '$details')))));
            }
        }
        $externalCost = array();
        foreach ($defense->externalProductionCost as $key => $value) {
            if ($value != "" && $value != 0) {
                array_push($externalCost, array('dbFieldName' => $defenseSystemTypeList[$key]->dbFieldName, 'name' => $defenseSystemTypeList[$key]->name, 'value' => ceil(eval('return ' . formula_parseToPHP($defense->externalProductionCost[$key] . ';', '$details')))));
            }
        }
        $levels[$count] = array('level' => $level + 1, 'time' => $duration, 'BUILDINGCOST' => $buildingCost, 'EXTERNALCOST' => $externalCost, 'RESOURCECOST' => $resourcecost, 'UNITCOST' => $unitcost);
    }
    if (sizeof($levels)) {
        $levels = array('population' => $cave['resource_population'], 'LEVEL' => $levels);
    }
    $dependencies = array();
    $buildingdep = array();
    $defensesystemdep = array();
    $resourcedep = array();
    $sciencedep = array();
    $unitdep = array();
    foreach ($defense->buildingDepList as $key => $level) {
        if ($level) {
            array_push($buildingdep, array('name' => $buildingTypeList[$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($defense->defenseSystemDepList as $key => $level) {
        if ($level) {
            array_push($defensesystemdep, array('name' => $defenseSystemTypeList[$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($defense->resourceDepList as $key => $level) {
        if ($level) {
            array_push($resourcedep, array('name' => $resourceTypeList[$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($defense->scienceDepList as $key => $level) {
        if ($level) {
            array_push($sciencedep, array('name' => $scienceTypeList[$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($defense->unitDepList as $key => $level) {
        if ($level) {
            array_push($unitdep, array('name' => $unitTypeList[$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($defense->maxBuildingDepList as $key => $level) {
        if ($level != -1) {
            array_push($buildingdep, array('name' => $buildingTypeList[$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($defense->maxDefenseSystemDepList as $key => $level) {
        if ($level != -1) {
            array_push($defensesystemdep, array('name' => $defenseSystemTypeList[$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($defense->maxResourceDepList as $key => $level) {
        if ($level != -1) {
            array_push($resourcedep, array('name' => $resourceTypeList[$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($defense->maxScienceDepList as $key => $level) {
        if ($level != -1) {
            array_push($sciencedep, array('name' => $scienceTypeList[$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($defense->maxUnitDepList as $key => $level) {
        if ($level != -1) {
            array_push($unitdep, array('name' => $unitTypeList[$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    if (sizeof($buildingdep)) {
        array_push($dependencies, array('name' => _('Erweiterungen'), 'DEP' => $buildingdep));
    }
    if (sizeof($defensesystemdep)) {
        array_push($dependencies, array('name' => _('Verteidigungsanlagen'), 'DEP' => $defensesystemdep));
    }
    if (sizeof($resourcedep)) {
        array_push($dependencies, array('name' => _('Rohstoffe'), 'DEP' => $resourcedep));
    }
    if (sizeof($sciencedep)) {
        array_push($dependencies, array('name' => _('Forschungen'), 'DEP' => $sciencedep));
    }
    if (sizeof($unitdep)) {
        array_push($dependencies, array('name' => _('Einheiten'), 'DEP' => $unitdep));
    }
    tmpl_set($template, '/', array('name' => $defense->name, 'dbFieldName' => $defense->dbFieldName, 'description' => $defense->description, 'maxlevel' => $maxLevel, 'currentlevel' => $currentlevel, 'rangeAttack' => $defense->attackRange, 'arealAttack' => $defense->attackAreal, 'attackRate' => $defense->attackRate, 'defenseRate' => $defense->defenseRate, 'size' => $defense->hitPoints, 'antiSpyChance' => $defense->antiSpyChance, 'LEVELS' => $levels, 'DEPGROUP' => $dependencies, 'rules_path' => RULES_PATH));
    return tmpl_parse($template);
}
Example #2
0
function improvement_getImprovementDetail($caveID, &$details)
{
    global $template;
    // open template
    $template->setFile('improvementBuilder.tmpl');
    // messages
    $messageText = array(0 => array('type' => 'success', 'message' => _('Der Arbeitsauftrag wurde erfolgreich gestoppt.')), 1 => array('type' => 'error', 'message' => _('Es konnte kein Arbeitsauftrag gestoppt werden.')), 2 => array('type' => 'error', 'message' => _('Der Auftrag konnte nicht erteilt werden. Es fehlen die notwendigen Voraussetzungen.')), 3 => array('type' => 'success', 'message' => _('Der Arbeitsauftrag wurde erfolgreich erteilt.')), 5 => array('type' => 'success', 'message' => _('Das Gebäude wurde erfolgreich abgerissen.')), 6 => array('type' => 'error', 'message' => _('Das Gebäude konnte nicht abgerissen werden.')), 7 => array('type' => 'error', 'message' => _('Sie haben von der Sorte gar keine Gebäude.')), 8 => array('type' => 'error', 'message' => sprintf(_('Sie können derzeit kein Gebäude oder Verteidigungen abreißen, weil erst vor Kurzem etwas in dieser Höhle abgerissen wurde. Generell muss zwischen zwei Abrissen eine Zeitspanne von %d Minuten liegen.'), TORE_DOWN_TIMEOUT)), 9 => array('type' => 'error', 'message' => _('Der Arbeitsauftrag konnte nicht erteilt werden. Ein Arbeitsauftrag ist schon im Gange.')));
    // get this cave's queue
    $queue = improvement_getQueue($_SESSION['player']->playerID, $caveID);
    $action = Request::getVar('action', '');
    switch ($action) {
        /****************************************************************************************************
        *
        * Erweiterung bauen
        *
        ****************************************************************************************************/
        case 'build':
            $buildingID = Request::getVar('buildingID', -1);
            if ($buildingID == -1) {
                $messageID = 2;
                break;
            }
            // check queue exist
            if (sizeof($queue)) {
                $messageID = 9;
                break;
            }
            $messageID = improvement_processOrder($buildingID, $caveID, $details);
            $details = getCaveSecure($caveID, $_SESSION['player']->playerID);
            $queue = improvement_getQueue($_SESSION['player']->playerID, $caveID);
            break;
            /****************************************************************************************************
            *
            * Ausbau der Erweiterung abbrechen
            *
            ****************************************************************************************************/
        /****************************************************************************************************
        *
        * Ausbau der Erweiterung abbrechen
        *
        ****************************************************************************************************/
        case 'cancelOrder':
            $eventID = Request::getVar('id', 0);
            if ($eventID == 0) {
                $messageID = 1;
                break;
            }
            // check queue exist
            if (!sizeof($queue) || $queue['event_expansionID'] != $eventID) {
                $messageID = 1;
                break;
            }
            if (Request::isPost('cancelOrderConfirm')) {
                $messageID = improvement_cancelOrder($eventID, $caveID);
                if ($messageID == 0) {
                    $queue = null;
                }
            } else {
                $template->addVars(array('cancelOrder_box' => true, 'confirm_action' => 'cancelOrder', 'confirm_id' => $eventID, 'confirm_mode' => IMPROVEMENT_BUILDER, 'confirm_msg' => sprintf(_('Möchtest du den Arbeitsauftrag von <span class="bold">%s</span> abbrechen?'), $GLOBALS['buildingTypeList'][$queue['expansionID']]->name)));
            }
            break;
            /****************************************************************************************************
            *
            * Erweiterung abreißen
            *
            ****************************************************************************************************/
        /****************************************************************************************************
        *
        * Erweiterung abreißen
        *
        ****************************************************************************************************/
        case 'demolishing':
            $improvementID = Request::getVar('id', -1);
            if ($improvementID == -1) {
                $messageID = 4;
                break;
            }
            if (!isset($GLOBALS['buildingTypeList'][$improvementID])) {
                $messageID = 4;
                break;
            }
            if (Request::isPost('cancelOrderConfirm')) {
                $messageID = improvement_Demolishing($improvementID, $caveID, $details);
                $details = getCaveSecure($caveID, $_SESSION['player']->playerID);
            } else {
                $template->addVars(array('cancelOrder_box' => true, 'confirm_action' => 'demolishing', 'confirm_id' => $improvementID, 'confirm_mode' => IMPROVEMENT_BUILDER, 'confirm_msg' => sprintf(_('Möchtest du <span class="bold">%s</span> einmal abreißen?'), $GLOBALS['buildingTypeList'][$improvementID]->name)));
            }
            break;
    }
    $improvement = $improvementRelict = $improvementUnqualified = array();
    foreach ($GLOBALS['buildingTypeList'] as $id => $building) {
        $maxLevel = round(eval('return ' . formula_parseToPHP("{$building->maxLevel};", '$details')));
        $notenough = FALSE;
        $result = rules_checkDependencies($building, $details);
        /****************************************************************************************************
        *
        * Erweiterungen die gebaut werden können.
        *
        ****************************************************************************************************/
        if ($result === TRUE) {
            $improvement[$building->buildingID] = array('name' => $building->name, 'dbFieldName' => $building->dbFieldName, 'building_id' => $building->buildingID, 'cave_id' => $caveID, 'time' => time_formatDuration(eval('return ' . formula_parseToPHP($building->productionTimeFunction . ";", '$details')) * BUILDING_TIME_BASE_FACTOR), 'maxlevel' => $maxLevel, 'currentlevel' => "0" + $details[$building->dbFieldName], 'breakdown_link' => $details[$building->dbFieldName] > 0 ? true : false);
            $improvement[$building->buildingID] = array_merge($improvement[$building->buildingID], parseCost($building, $details));
            // show the building link ?!
            if (sizeof($queue)) {
                $improvement[$building->buildingID]['no_build_msg'] = _('Ausbau im Gange');
            } else {
                if ($improvement[$building->buildingID]['notenough'] && $maxLevel > $details[$building->dbFieldName]) {
                    $improvement[$building->buildingID]['no_build_msg'] = _('Zu wenig Rohstoffe');
                } else {
                    if ($maxLevel > $details[$building->dbFieldName]) {
                        $improvement[$building->buildingID]['build_link'] = true;
                    } else {
                        $improvement[$building->buildingID]['no_build_msg'] = _('Max. Stufe');
                    }
                }
            }
            /****************************************************************************************************
            *
            * Erweiterungen die zwar nicht gebaut werden können aber schon in der Höhle sind (Relikt)
            *
            ****************************************************************************************************/
        } else {
            if ($details[$building->dbFieldName]) {
                $improvementRelict[$building->buildingID] = array('name' => $building->name, 'dbFieldName' => $building->dbFieldName, 'building_id' => $building->buildingID, 'cave_id' => $caveID, 'currentlevel' => "0" + $details[$building->dbFieldName], 'dependencies' => $result !== FALSE ? $result : false);
                /****************************************************************************************************
                *
                * Erweiterungen die nicht gebaut werden können.
                *
                ****************************************************************************************************/
            } else {
                if ($result !== FALSE && !$building->nodocumentation) {
                    $improvementUnqualified[$building->buildingID] = array('name' => $building->name, 'dbFieldName' => $building->dbFieldName, 'building_id' => $building->buildingID, 'cave_id' => $caveID, 'dependencies' => $result);
                }
            }
        }
    }
    /****************************************************************************************************
    *
    * Irgendwas im Ausbau?
    *
    ****************************************************************************************************/
    if (sizeof($queue)) {
        $template->addVars(array('quene_show' => true, 'quene_name' => $GLOBALS['buildingTypeList'][$queue['expansionID']]->name, 'quene_nextlevel' => $details[$GLOBALS['buildingTypeList'][$queue['expansionID']]->dbFieldName] + 1, 'quene_finish' => time_formatDatetime($queue['end']), 'quene_modus' => IMPROVEMENT_BUILDER, 'quene_event_id' => $queue['event_expansionID']));
    }
    /****************************************************************************************************
    *
    * Übergeben ans Template
    *
    ****************************************************************************************************/
    $template->addVars(array('cave_id' => $caveID, 'status_msg' => isset($messageID) ? $messageText[$messageID] : '', 'improvement' => $improvement, 'improvement_unqualified' => $improvementUnqualified, 'improvement_relict' => $improvementRelict));
}
Example #3
0
function unit_getUnitDetails($unitID, $caveData, $method)
{
    global $template;
    global $buildingTypeList, $defenseSystemTypeList, $resourceTypeList, $scienceTypeList, $unitTypeList;
    $details = $caveData;
    // first check whether that unit should be displayed...
    $unit = $unitTypeList[$unitID];
    if (!$unit || $unit->nodocumentation && !$caveData[$unit->dbFieldName] && rules_checkDependencies($unit, $caveData) !== TRUE) {
        $unit = current($unitTypeList);
    }
    // open template
    if ($method == 'ajax') {
        $shortVersion = true;
        $template->setFile('unitDetailAjax.tmpl');
    } else {
        $shortVersion = false;
        $template->setFile('unitDetail.tmpl');
        $template->setShowRresource(false);
    }
    // iterate ressourcecosts
    $resourceCost = array();
    foreach ($unit->resourceProductionCost as $resourceID => $function) {
        $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$caveData')));
        if ($cost) {
            array_push($resourceCost, array('name' => $GLOBALS['resourceTypeList'][$resourceID]->name, 'dbFieldName' => $GLOBALS['resourceTypeList'][$resourceID]->dbFieldName, 'value' => $cost));
        }
    }
    // iterate unitcosts
    $unitCost = array();
    foreach ($unit->unitProductionCost as $unitID => $function) {
        $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$caveData')));
        if ($cost) {
            array_push($unitCost, array('name' => $GLOBALS['unitTypeList'][$unitID]->name, 'dbFieldName' => $GLOBALS['unitTypeList'][$unitID]->dbFieldName, 'value' => $cost));
        }
    }
    // iterate buildingCost
    $buildingCost = array();
    foreach ($unit->buildingProductionCost as $buildingID => $function) {
        $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$caveData')));
        if ($cost) {
            array_push($buildingCost, array('name' => $GLOBALS['buildingTypeList'][$buildingID]->name, 'dbFieldName' => $GLOBALS['buildingTypeList'][$buildingID]->dbFieldName, 'value' => $cost));
        }
    }
    // iterate defenseCost
    $defenseCost = array();
    foreach ($unit->defenseProductionCost as $defenseID => $function) {
        $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$caveData')));
        if ($cost) {
            array_push($defenseCost, array('name' => $GLOBALS['defenseSystemTypeList'][$defenseID]->name, 'dbFieldName' => $GLOBALS['defenseSystemTypeList'][$defenseID]->dbFieldName, 'value' => $cost));
        }
    }
    $dependencies = array();
    $buildingdep = array();
    $defensesystemdep = array();
    $resourcedep = array();
    $sciencedep = array();
    $unitdep = array();
    foreach ($unit->buildingDepList as $key => $level) {
        if ($level) {
            array_push($buildingdep, array('name' => $GLOBALS['buildingTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($unit->defenseSystemDepList as $key => $level) {
        if ($level) {
            array_push($defensesystemdep, array('name' => $GLOBALS['defenseSystemTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($unit->resourceDepList as $key => $level) {
        if ($level) {
            array_push($resourcedep, array('name' => $GLOBALS['resourceTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($unit->scienceDepList as $key => $level) {
        if ($level) {
            array_push($sciencedep, array('name' => $GLOBALS['scienceTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($unit->unitDepList as $key => $level) {
        if ($level) {
            array_push($unitdep, array('name' => $GLOBALS['unitTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($unit->maxBuildingDepList as $key => $level) {
        if ($level != -1) {
            array_push($buildingdep, array('name' => $GLOBALS['buildingTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($unit->maxDefenseSystemDepList as $key => $level) {
        if ($level != -1) {
            array_push($defensesystemdep, array('name' => $GLOBALS['defenseSystemTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($unit->maxResourceDepList as $key => $level) {
        if ($level != -1) {
            array_push($resourcedep, array('name' => $GLOBALS['resourceTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($unit->maxScienceDepList as $key => $level) {
        if ($level != -1) {
            array_push($sciencedep, array('name' => $GLOBALS['scienceTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    if (sizeof($buildingdep)) {
        array_push($dependencies, array('name' => _('Erweiterungen'), 'dep' => $buildingdep));
    }
    if (sizeof($defensesystemdep)) {
        array_push($dependencies, array('name' => _('Verteidigungsanlagen'), 'dep' => $defensesystemdep));
    }
    if (sizeof($resourcedep)) {
        array_push($dependencies, array('name' => _('Rohstoffe'), 'dep' => $resourcedep));
    }
    if (sizeof($sciencedep)) {
        array_push($dependencies, array('name' => _('Forschungen'), 'dep' => $sciencedep));
    }
    if (sizeof($unitdep)) {
        array_push($dependencies, array('name' => _('Einheiten'), 'dep' => $unitdep));
    }
    if ($unit->visible != 1) {
        $template->addVar('INVISIBLE', array('text' => _('unsichtbar')));
    }
    $template->addVars(array('name' => $unit->name, 'dbFieldName' => $unit->dbFieldName, 'description' => $unit->description, 'resouce_cost' => $resourceCost, 'unit_cost' => $unitCost, 'buiding_cost' => $buildingCost, 'defense_cost' => $defenseCost, 'rangeAttack' => $unit->attackRange, 'arealAttack' => $unit->attackAreal, 'attackRate' => $unit->attackRate, 'rd_Resist' => $unit->rangedDamageResistance, 'defenseRate' => $unit->defenseRate, 'size' => $unit->hitPoints, 'spyValue' => $unit->spyValue, 'spyChance' => $unit->spyChance, 'spyQuality' => $unit->spyQuality, 'antiSpyChance' => $unit->antiSpyChance, 'fuelName' => $resourceTypeList[1]->dbFieldName, 'fuelFactor' => $unit->foodCost, 'wayCost' => $unit->wayCost, 'dependencies' => $dependencies, 'duration' => time_formatDuration(eval('return ' . formula_parseToPHP($unit->productionTimeFunction . ";", '$details')) * BUILDING_TIME_BASE_FACTOR), 'rules_path' => RULES_PATH));
}
Example #4
0
function defense_showProperties($defenseID, $cave, $method)
{
    global $template;
    // open template
    if ($method == 'ajax') {
        $shortVersion = true;
        $template->setFile('defenseDetailAjax.tmpl');
    } else {
        $shortVersion = false;
        $template->setFile('defenseDetail.tmpl');
    }
    // first check whether that unit should be displayed...
    if (!isset($GLOBALS['defenseSystemTypeList'][$defenseID])) {
        $template->addVar('status_msg', array('type' => 'error', 'message' => _('Die Verteidigung wurde nicht gefunden oder ist derzeit nicht baubar.')));
        return;
    }
    $defense = $GLOBALS['defenseSystemTypeList'][$defenseID];
    $maxLevel = round(eval('return ' . formula_parseToPHP("{$defense->maxLevel};", '$cave')));
    $maxLevel = $maxLevel < 0 ? 0 : $maxLevel;
    $maxReadable = formula_parseToReadable($defense->maxLevel);
    if ($defense->nodocumentation && !$cave[$defense->dbFieldName] && rules_checkDependencies($defense, $cave) !== true) {
        $template->addVar('status_msg', array('type' => 'error', 'message' => _('Die Erweiterung wurde nicht gefunden oder ist derzeit nicht baubar.')));
        return;
    }
    $currentlevel = $cave[$defense->dbFieldName];
    $levels = $costTimeLvl = array();
    for ($level = $cave[$defense->dbFieldName], $count = 0; $level < $maxLevel && $count < ($shortVersion ? 3 : 10); ++$count, ++$level, ++$cave[$defense->dbFieldName]) {
        $duration = time_formatDuration(eval('return ' . formula_parseToPHP($defense->productionTimeFunction . ";", '$cave')) * DEFENSESYSTEM_TIME_BASE_FACTOR);
        // iterate ressourcecosts
        $resourceCost = array();
        foreach ($defense->resourceProductionCost as $resourceID => $function) {
            $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$cave')));
            if ($cost) {
                array_push($resourceCost, array('name' => $GLOBALS['resourceTypeList'][$resourceID]->name, 'dbFieldName' => $GLOBALS['resourceTypeList'][$resourceID]->dbFieldName, 'value' => $cost));
            }
        }
        // iterate unitcosts
        $unitCost = array();
        foreach ($defense->unitProductionCost as $unitID => $function) {
            $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$cave')));
            if ($cost) {
                array_push($unitCost, array('name' => $GLOBALS['unitTypeList'][$unitID]->name, 'dbFieldName' => $GLOBALS['unitTypeList'][$unitID]->dbFieldName, 'value' => $cost));
            }
        }
        // iterate buildingCost
        $buildingCost = array();
        foreach ($defense->buildingProductionCost as $buildingID => $function) {
            $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$caveData')));
            if ($cost) {
                array_push($buildingCost, array('name' => $GLOBALS['buildingTypeList'][$buildingID]->name, 'dbFieldName' => $GLOBALS['buildingTypeList'][$buildingID]->dbFieldName, 'value' => $cost));
            }
        }
        // iterate defenseCost
        $defenseCost = array();
        foreach ($defense->defenseProductionCost as $defenseID => $function) {
            $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$caveData')));
            if ($cost) {
                array_push($defenseCost, array('name' => $GLOBALS['defenseSystemTypeList'][$defenseID]->name, 'dbFieldName' => $GLOBALS['defenseSystemTypeList'][$defenseID]->dbFieldName, 'value' => $cost));
            }
        }
        if (rules_checkDependencies($defense, $cave) === true) {
            $levels[$count] = array('level' => $level + 1, 'time' => $duration, 'resource_cost' => $resourceCost, 'unit_cost' => $unitCost, 'building_cost' => $buildingCost, 'defense_cost' => $defenseCost);
        }
    }
    if (sizeof($levels)) {
        $costTimeLvl = array('population' => $cave['population'], 'item' => $levels);
    }
    $dependencies = array();
    $buildingdep = array();
    $defensesystemdep = array();
    $resourcedep = array();
    $sciencedep = array();
    $unitdep = array();
    foreach ($defense->buildingDepList as $key => $level) {
        if ($level) {
            array_push($buildingdep, array('name' => $GLOBALS['buildingTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($defense->defenseSystemDepList as $key => $level) {
        if ($level) {
            array_push($defensesystemdep, array('name' => $GLOBALS['defenseSystemTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($defense->resourceDepList as $key => $level) {
        if ($level) {
            array_push($resourcedep, array('name' => $GLOBALS['resourceTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($defense->scienceDepList as $key => $level) {
        if ($level) {
            array_push($sciencedep, array('name' => $GLOBALS['scienceTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($defense->unitDepList as $key => $level) {
        if ($level) {
            array_push($unitdep, array('name' => $GLOBALS['unitTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($defense->maxBuildingDepList as $key => $level) {
        if ($level != -1) {
            array_push($buildingdep, array('name' => $GLOBALS['buildingTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($defense->maxDefenseSystemDepList as $key => $level) {
        if ($level != -1) {
            array_push($defensesystemdep, array('name' => $GLOBALS['defenseSystemTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($defense->maxResourceDepList as $key => $level) {
        if ($level != -1) {
            array_push($resourcedep, array('name' => $GLOBALS['resourceTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($defense->maxScienceDepList as $key => $level) {
        if ($level != -1) {
            array_push($sciencedep, array('name' => $GLOBALS['scienceTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($defense->maxUnitDepList as $key => $level) {
        if ($level != -1) {
            array_push($unitdep, array('name' => $GLOBALS['unitTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    if (sizeof($buildingdep)) {
        array_push($dependencies, array('name' => _('Erweiterungen'), 'dep' => $buildingdep));
    }
    if (sizeof($defensesystemdep)) {
        array_push($dependencies, array('name' => _('Verteidigungsanlagen'), 'dep' => $defensesystemdep));
    }
    if (sizeof($resourcedep)) {
        array_push($dependencies, array('name' => _('Rohstoffe'), 'dep' => $resourcedep));
    }
    if (sizeof($sciencedep)) {
        array_push($dependencies, array('name' => _('Forschungen'), 'dep' => $sciencedep));
    }
    if (sizeof($unitdep)) {
        array_push($dependencies, array('name' => _('Einheiten'), 'dep' => $unitdep));
    }
    $template->addVars(array('name' => $defense->name, 'dbFieldName' => $defense->dbFieldName, 'description' => $defense->description, 'maxlevel' => $maxLevel, 'maxReadable' => $maxReadable, 'currentlevel' => $currentlevel, 'rangeAttack' => $defense->attackRange, 'attackRate' => $defense->attackRate, 'defenseRate' => $defense->defenseRate, 'size' => $defense->hitPoints, 'antiSpyChance' => $defense->antiSpyChance, 'warPoints' => $defense->warPoints, 'cost_time_lvl' => $costTimeLvl, 'dependencies' => $dependencies, 'rules_path' => RULES_PATH));
}
Example #5
0
function science_getScienceDetail($caveID, &$details)
{
    global $buildingTypeList, $defenseSystemTypeList, $resourceTypeList, $unitTypeList, $scienceTypeList, $config, $params, $db;
    // messages
    $messageText = array(0 => _('Der Forschungsauftrag wurde erfolgreich gestoppt.'), 1 => _('Es konnte kein Forschungsauftrag gestoppt werden.'), 2 => _('Der Auftrag konnte nicht erteilt werden. Es fehlen die notwendigen Voraussetzungen.'), 3 => _('Der Auftrag wurde erteilt'), 4 => _('Dieses Wissen wird schon in einer anderen Höhle erforscht.'), 5 => _('Es wird gerade in einer anderen Höhle Wissen erforscht, dass dieses Wissen ausschließt.'));
    // proccess a cancel-order request
    if (isset($params->POST->eventID)) {
        $messageID = science_processOrderCancel($params->POST->eventID, $caveID, $db);
    }
    if (isset($params->POST->scienceID)) {
        $messageID = science_processOrder($params->POST->scienceID, $caveID, $params->SESSION->player->playerID, $details, $db);
        $r = getCaveSecure($caveID, $params->SESSION->player->playerID);
        if ($r->isEmpty()) {
            page_dberror();
        }
        $details = $r->nextRow();
    }
    $queue = science_getScienceQueueForCave($params->SESSION->player->playerID, $caveID);
    $template = tmpl_open($params->SESSION->player->getTemplatePath() . 'science.ihtml');
    // Show a special message
    if (isset($messageID)) {
        tmpl_set($template, '/MESSAGE/message', $messageText[$messageID]);
    }
    // Show the science table
    for ($i = 0; $i < sizeof($scienceTypeList); $i++) {
        $science = $scienceTypeList[$i];
        // the current science
        $maxLevel = round(eval('return ' . formula_parseToPHP("{$science->maxLevel};", '$details')));
        $notenough = FALSE;
        $result = rules_checkDependencies($science, $details);
        if ($result === TRUE) {
            tmpl_iterate($template, 'SCIENCE');
            tmpl_set($template, "SCIENCE/alternate", $count++ % 2 ? "alternate" : "");
            tmpl_set($template, 'SCIENCE', array('dbFieldName' => $science->dbFieldName, 'name' => $science->name, 'scienceID' => $i, 'modus' => SCIENCE_DETAIL, 'caveID' => $caveID, 'size' => "0" + $details[$science->dbFieldName], 'time' => time_formatDuration(eval('return ' . formula_parseToPHP($science->productionTimeFunction . ";", '$details')) * SCIENCE_TIME_BASE_FACTOR)));
            // iterate ressourcecosts
            foreach ($science->resourceProductionCost as $resourceID => $function) {
                $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details')));
                if ($cost) {
                    tmpl_iterate($template, "SCIENCE/RESSOURCECOST");
                    if ($details[$resourceTypeList[$resourceID]->dbFieldName] >= $cost) {
                        tmpl_set($template, "SCIENCE/RESSOURCECOST/ENOUGH/value", $cost);
                    } else {
                        tmpl_set($template, "SCIENCE/RESSOURCECOST/LESS/value", $cost);
                        $notenough = TRUE;
                    }
                    tmpl_set($template, "SCIENCE/RESSOURCECOST/dbFieldName", $resourceTypeList[$resourceID]->dbFieldName);
                    tmpl_set($template, "SCIENCE/RESSOURCECOST/name", $resourceTypeList[$resourceID]->name);
                }
            }
            // iterate unitcosts
            foreach ($science->unitProductionCost as $unitID => $function) {
                $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details')));
                if ($cost) {
                    tmpl_iterate($template, "SCIENCE/UNITCOST");
                    if ($details[$unitTypeList[$unitID]->dbFieldName] >= $cost) {
                        tmpl_set($template, "SCIENCE/UNITCOST/ENOUGH/value", $cost);
                    } else {
                        tmpl_set($template, "SCIENCE/UNITCOST/LESS/value", $cost);
                        $notenough = TRUE;
                    }
                    tmpl_set($template, "SCIENCE/UNITCOST/name", $unitTypeList[$unitID]->name);
                }
            }
            // iterate buildingcosts
            foreach ($science->buildingProductionCost as $buildingID => $function) {
                $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details')));
                if ($cost) {
                    tmpl_iterate($template, "DEFENSESYSTEM/BUILDINGCOST");
                    if ($details[$buildingTypeList[$buildingID]->dbFieldName] >= $cost) {
                        tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/ENOUGH/value", $cost);
                    } else {
                        tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/LESS/value", $cost);
                        $notenough = TRUE;
                    }
                    tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/name", $buildingTypeList[$buildingID]->name);
                }
            }
            // iterate externalcosts
            foreach ($science->externalProductionCost as $externalID => $function) {
                $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details')));
                if ($cost) {
                    tmpl_iterate($template, "DEFENSESYSTEM/EXTERNALCOST");
                    if ($details[$defenseSystemTypeList[$externalID]->dbFieldName] >= $cost) {
                        tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/ENOUGH/value", $cost);
                    } else {
                        tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/LESS/value", $cost);
                        $notenough = TRUE;
                    }
                    tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/name", $defenseSystemTypeList[$externalID]->name);
                }
            }
            // show the science link ?!
            if ($queue) {
                tmpl_set($template, 'SCIENCE/RESEARCH_LINK_NO/message', _('Erforschung im Gange'));
            } else {
                if ($notenough && $maxLevel > $details[$science->dbFieldName]) {
                    tmpl_set($template, 'SCIENCE/RESEARCH_LINK_NO/message', _('Zu wenig Rohstoffe'));
                } else {
                    if ($maxLevel > $details[$science->dbFieldName]) {
                        tmpl_set($template, 'SCIENCE/RESEARCH_LINK', array('action' => SCIENCE, 'scienceID' => $science->scienceID, 'caveID' => $caveID));
                    } else {
                        tmpl_set($template, '/SCIENCE/RESEARCH_LINK_NO/message', _('Max. Stufe'));
                    }
                }
            }
        } else {
            if ($result !== FALSE && !$science->nodocumentation) {
                tmpl_iterate($template, '/UNQUALIFIEDSCIENCES/SCIENCE');
                tmpl_set($template, '/UNQUALIFIEDSCIENCES/SCIENCE', array('alternate' => $count_unqualified++ % 2 ? "" : "alternate", 'modus' => SCIENCE_DETAIL, 'scienceID' => $science->scienceID, 'caveID' => $caveID, 'dbFieldName' => $science->dbFieldName, 'name' => $science->name, 'dependencies' => $result));
            }
        }
    }
    // Show the science queue
    if ($queue) {
        // display the science queue
        $row = $queue->nextRow();
        tmpl_set($template, 'SCIENCE_QUEUE', array('name' => $scienceTypeList[$row['scienceID']]->name, 'size' => $details[$scienceTypeList[$row['scienceID']]->dbFieldName] + 1, 'finish' => time_formatDatetime($row['end']), 'action' => SCIENCE, 'eventID' => $row['event_scienceID'], 'caveID' => $caveID));
    }
    tmpl_set($template, "rules_path", RULES_PATH);
    return tmpl_parse($template);
}
Example #6
0
function artefact_getDetail($caveID, &$myCaves, $artefactID)
{
    global $params, $config, $resourceTypeList, $buildingTypeList, $unitTypeList, $scienceTypeList, $defenseSystemTypeList;
    $template = tmpl_open($params->SESSION->player->getTemplatePath() . 'artefactdetail.ihtml');
    $show_artefact = TRUE;
    $artefact = artefact_getArtefactByID($artefactID);
    $description_initiated = $artefact['description_initiated'];
    unset($artefact['description_initiated']);
    // Gott oder nicht?
    if ($params->SESSION->player->tribe != GOD_ALLY) {
        // gibts nicht oder nicht in einer Höhle
        if (!$artefact['caveID']) {
            $show_artefact = FALSE;
        } else {
            $cave = getCaveByID($artefact['caveID']);
            // leere Höhle
            if (!$cave['playerID']) {
                $show_artefact = FALSE;
            } else {
                $owner = getPlayerByID($cave['playerID']);
                // Besitzer ist ein Gott
                if ($owner['tribe'] == GOD_ALLY) {
                    $show_artefact = FALSE;
                }
            }
        }
    }
    if ($show_artefact) {
        // eigene Höhle ...
        if (array_key_exists($artefact['caveID'], $myCaves)) {
            // Ritual ausführen?
            if (isset($params->POST->initiate)) {
                $message = artefact_beginInitiation($artefact);
                tmpl_set($template, 'message', $message);
                // reload
                $myCaves = getCaves($params->SESSION->player->playerID);
            } else {
                if ($artefact['caveID'] == $caveID && $artefact['initiated'] == ARTEFACT_UNINITIATED) {
                    // Check, ob bereits eingeweiht wird.
                    if (sizeof(artefact_getArtefactInitiationsForCave($caveID)) == 0) {
                        // Hol das Einweihungsritual
                        $ritual = artefact_getRitualByID($artefact['initiationID']);
                        // Hol die Kosten und beurteile ob genug da ist
                        $merged_game_rules = array_merge($resourceTypeList, $buildingTypeList, $unitTypeList, $scienceTypeList, $defenseSystemTypeList);
                        $cost = array();
                        foreach ($merged_game_rules as $val) {
                            if ($ritual[$val->dbFieldName]) {
                                $object_context = ceil($ritual[$val->dbFieldName]) > floor($myCaves[$artefact['caveID']][$val->dbFieldName]) ? 'LESS' : 'ENOUGH';
                                array_push($cost, array('object' => $val->name, $object_context . '/amount' => $ritual[$val->dbFieldName]));
                            }
                        }
                        $artefact['INITIATION'] = array('COST' => $cost, 'name' => $ritual['name'], 'description' => $ritual['description'], 'duration' => time_formatDuration($ritual['duration']), 'HIDDEN' => array(array('name' => "artefactID", 'value' => $artefact['artefactID']), array('name' => "modus", 'value' => ARTEFACT_DETAIL), array('name' => "initiate", 'value' => 1)));
                    } else {
                        tmpl_iterate($template, 'ARTEFACT/NO_INITIATION');
                    }
                }
            }
            // "geheime" Beschreibung nur zeigen, wenn eingeweiht
            if ($artefact['initiated'] == ARTEFACT_INITIATED) {
                $artefact['description_initiated'] = $description_initiated;
            }
        }
        tmpl_set($template, 'ARTEFACT', $artefact);
    } else {
        tmpl_set($template, 'message', _('Über dieses Artefakt weiss man nichts.'));
    }
    return tmpl_parse($template);
}
Example #7
0
function artefact_getDetail($caveID, &$myCaves)
{
    global $template;
    $messageText = array(-5 => array('type' => 'error', 'message' => _('Dieses Artefakt kann nicht noch einmal eingeweiht werden.')), -4 => array('type' => 'error', 'message' => _('Fehler: Artefakt konnte nicht auf ARTEFACT_INITIATING gestellt werden.')), -3 => array('type' => 'error', 'message' => _('Sie weihen bereits ein anderes Artefakt ein.')), -2 => array('type' => 'error', 'message' => _('Es fehlen die notwendigen Voraussetzungen.')), -1 => array('type' => 'error', 'message' => _('Fehler: Ritual nicht gefunden.')), 0 => array('type' => 'notice', 'message' => _('Über dieses Artefakt weiß man nichts!')), 1 => array('type' => 'success', 'message' => _('Die Einweihung des Artefakts wurde gestartet!')));
    // open template
    $template->setFile('artefactDetail.tmpl');
    $show_artefact = TRUE;
    $artefactID = Request::getVar('artefactID', 0);
    $artefact = artefact_getArtefactByID($artefactID);
    if (empty($artefact)) {
        $messageID = 0;
    } else {
        $description_initiated = $artefact['description_initiated'];
        unset($artefact['description_initiated']);
        // Gott oder nicht?
        if ($_SESSION['player']->tribe != GOD_ALLY) {
            // gibts nicht oder nicht in einer Höhle
            if (!$artefact['caveID']) {
                $show_artefact = FALSE;
            } else {
                $cave = getCaveByID($artefact['caveID']);
                // leere Höhle
                if (!$cave['playerID']) {
                    $show_artefact = FALSE;
                } else {
                    $owner = getPlayerByID($cave['playerID']);
                    // Besitzer ist ein Gott
                    if ($owner['tribe'] == GOD_ALLY) {
                        $show_artefact = FALSE;
                    }
                }
            }
        }
        $showRitual = 0;
        $showStatus = 0;
        $template->addVars(array('show_artefact' => $show_artefact));
        if ($show_artefact) {
            $artefact['img'] = $artefact['uninitiationImg'];
            // Bild vom uninitalisierten Artefakt per default anzeigen!
            // eigene Höhle ...
            if (isset($myCaves[$artefact['caveID']])) {
                $showStatus = 1;
                // Ritual ausführen?
                if (Request::isPost('initiate')) {
                    $messageID = artefact_beginInitiation($artefact);
                    // reload
                    $myCaves = getCaves($_SESSION['player']->playerID);
                    // wenn noch uneingeweiht und in der "richtigen" Höhle, ritual zeigen
                } else {
                    if ($artefact['caveID'] == $caveID && $artefact['initiated'] == ARTEFACT_UNINITIATED) {
                        // Check, ob bereits eingeweiht wird.
                        if (sizeof(artefact_getArtefactInitiationsForCave($caveID)) == 0) {
                            $showRitual = 1;
                            // Hol das Einweihungsritual
                            $ritual = artefact_getRitualByID($artefact['initiationID']);
                            // Hol die Kosten und beurteile ob genug da ist
                            $merged_game_rules = array_merge($GLOBALS['resourceTypeList'], $GLOBALS['buildingTypeList'], $GLOBALS['unitTypeList'], $GLOBALS['scienceTypeList'], $GLOBALS['defenseSystemTypeList']);
                            $cost = array();
                            foreach ($merged_game_rules as $val) {
                                if (isset($ritual[$val->dbFieldName])) {
                                    if ($ritual[$val->dbFieldName]) {
                                        $object_context = ceil($ritual[$val->dbFieldName]) > floor($myCaves[$artefact['caveID']][$val->dbFieldName]) ? 'less-' : 'enough ';
                                        array_push($cost, array('object' => $val->name, 'amount' => $ritual[$val->dbFieldName], 'class' => $object_context));
                                    }
                                }
                            }
                            $artefact['initiation'] = array('cost' => $cost, 'name' => $ritual['name'], 'description' => $ritual['description'], 'duration' => time_formatDuration($ritual['duration']), 'initiate' => 1);
                        } else {
                            $showRitual = -1;
                        }
                    } elseif ($artefact['caveID'] == $caveID && $artefact['initiated'] == ARTEFACT_INITIATING) {
                        // Arte wird gerade eingeweiht
                        $showRitual = -1;
                    }
                }
                // "geheime" Beschreibung nur zeigen, wenn eingeweiht
                if ($artefact['initiated'] == ARTEFACT_INITIATED) {
                    $artefact['description_initiated'] = $description_initiated;
                    // Besitzer des Artefaktes und initalisiert? Richtiges Artefakt Bild anzeigen
                    if (isset($myCaves[$artefact['caveID']])) {
                        $artefact['img'] = $artefact['initiationImg'];
                    }
                }
            }
            $template->addVars(array('artefact' => $artefact));
            $template->addVars(array('showRitual' => $showRitual));
            $template->addVars(array('showStatus' => $showStatus));
        } else {
            // über dieses Artefakt weiß man nichts!
            $messageID = 0;
        }
    }
    $template->addVar('status_msg', isset($messageID) ? $messageText[$messageID] : '');
}
Example #8
0
/** This function returns basic hero details
 *
 *  @param caveID       the current caveID
 *  @param ownCaves  all the data of all your caves
 */
function hero_getHeroDetail($caveID, &$ownCaves)
{
    global $db, $template;
    // open template
    $template->setFile('hero.tmpl');
    // get current playerID by user
    $playerID = $_SESSION['player']->playerID;
    $player = getPlayerByID($playerID);
    $newhero = false;
    $messageText = array(-24 => array('type' => 'error', 'message' => _('Es können nur Rohstoffe aus der aktuellen Höhle geopfert werden!')), -23 => array('type' => 'error', 'message' => _('Die Fähigkeit wurde schon erlernt!')), -22 => array('type' => 'error', 'message' => _('Dein Held hat den falschen Typ, um die Fähigkeit zu erlernen!')), -21 => array('type' => 'error', 'message' => _('Fehler beim Erlernen der Fähigkeit!')), -20 => array('type' => 'error', 'message' => _('Dein Held hat nicht das erforderliche Level!')), -19 => array('type' => 'error', 'message' => _('Fehler beim Eintragen des neuen Heldentyps!')), -18 => array('type' => 'error', 'message' => _('Euer Held ist tot!')), -17 => array('type' => 'error', 'message' => _('Euer Held ist gar nicht tot!')), -16 => array('type' => 'error', 'message' => _('Fehler beim Eintragen der Erfahrungspunkte nach der Opferung!')), -15 => array('type' => 'error', 'message' => _('Fehler beim Abziehen der geopferten Rohstoffe!')), -14 => array('type' => 'error', 'message' => _('Nicht genug Rohstoffe zum Opfern vorhanden!')), -13 => array('type' => 'error', 'message' => _('Fehler beim Holen der Opferwerte!')), -12 => array('type' => 'error', 'message' => _('Fehler beim Erhöhen des Levels!')), -11 => array('type' => 'error', 'message' => _('Nicht genug Talentpunkte vorhanden!')), -10 => array('type' => 'error', 'message' => _('Ihr Held ist noch nicht erfahren genug, diesen Trank zu nutzen!')), -9 => array('type' => 'error', 'message' => _('Nicht genug Tränke vorhanden!')), -8 => array('type' => 'error', 'message' => _('Fehler beim Anwenden des Trankes!')), -7 => array('type' => 'error', 'message' => _('Fehler beim Schreiben in die Datenbank.')), -6 => array('type' => 'error', 'message' => _('Der Held existiert bereits.')), -5 => array('type' => 'error', 'message' => _('Maximallevel des Skills erreicht.')), -4 => array('type' => 'notice', 'message' => _('Fehler beim Abbrechen der Wiederbelebung.')), -3 => array('type' => 'error', 'message' => _('Nicht genug Rohstoffe zum Wiederbeleben.')), -2 => array('type' => 'error', 'message' => _('Der Held wird bereits wiederbelebt.')), -1 => array('type' => 'error', 'message' => _('Dafür sind nicht genug Talentpunkte vorhanden.')), 0 => array('type' => 'error', 'message' => _('Euch steht noch kein Held zur Verfügung.')), 1 => array('type' => 'success', 'message' => _('Euer Held hat eine neue Fähigkeit erlernt.')), 2 => array('type' => 'notice', 'message' => _('Die Wiederbelebung eures Helden hat begonnen.')), 3 => array('type' => 'success', 'message' => _('Euer Held wurde erstellt.')), 4 => array('type' => 'notice', 'message' => _('Wählt mit Bedacht, dies lässt sich womöglich nicht mehr rückgängig machen.')), 5 => array('type' => 'success', 'message' => _('Der Trank hat seine Wirkung entfaltet. Die Lebenspunkte wurden erhöht.')), 6 => array('type' => 'success', 'message' => _('Der Trank des Vergessens hat Wirkung gezeigt. Der Held ist nun wieder unerfahren.')), 7 => array('type' => 'success', 'message' => _('Euer Held hat das nächste Level erreicht!')), 8 => array('type' => 'success', 'message' => _('Eurem Helden wurden expValue Erfahrungspunkte gutgeschrieben.')), 9 => array('type' => 'success', 'message' => _('Die Wiederbelebung wurde erfolgreich abgebrochen.')), 10 => array('type' => 'success', 'message' => _('Heldentyp erfolgreich gewechselt!')), 11 => array('type' => 'success', 'message' => _('Dein Held hat eine neue Fähigkeit erlernt!')));
    // create new hero
    $action = Request::getVar('action', '');
    $newHeroID = Request::getVar('id', '');
    if ($action == "createHero") {
        if (isset($GLOBALS['heroTypesList'][$newHeroID])) {
            $messageID = createNewHero($GLOBALS['heroTypesList'][$newHeroID]['heroTypeID'], $playerID, $caveID);
        }
    }
    $hero = getHeroByPlayer($playerID);
    $showTypesList = false;
    $changeType = false;
    if ($hero['heroTypeID'] == 1000) {
        $hero = null;
        $changeType = true;
        $showTypesList = true;
    }
    if ($hero != null) {
        $showLevelUp = false;
        $ritual = getRitual($hero);
        $resource['duration'] = $ritual['duration'];
        $cave = getCaveSecure($caveID, $playerID);
        foreach ($GLOBALS['resourceTypeList'] as $key) {
            $dbFieldName = $key->dbFieldName;
            if (!isset($ritual[$dbFieldName])) {
                continue;
            }
            $enough = $ritual[$dbFieldName] <= $cave[$dbFieldName];
            $tmp = array('enough' => $enough, 'value' => $ritual[$dbFieldName], 'missing' => $ritual[$dbFieldName] - $cave[$dbFieldName], 'dbFieldName' => $dbFieldName, 'name' => $key->name);
            $resource[$key->dbFieldName] = $tmp;
        }
        $action = Request::getVar('action', '');
        switch ($action) {
            case 'reincarnate':
                if ($hero['isAlive'] == 1) {
                    $messageID = -17;
                    break;
                }
                if (checkEventHeroExists($playerID)) {
                    $messageID = -2;
                } else {
                    $messageID = createRitual($caveID, $playerID, $resource, $hero, $ownCaves);
                }
                break;
            case 'cancelOrder':
                if (checkEventHeroExists($playerID)) {
                    $messageID = hero_cancelOrder();
                }
                break;
            case 'skill':
                if ($hero['isAlive'] != 1) {
                    $messageID = -18;
                    break;
                }
                if ($hero['tpFree'] >= 1) {
                    $skill = Request::getVar('skill', '');
                    switch ($skill) {
                        case 'force':
                            //typ='force';
                            if ($hero['forceLvl'] < 10) {
                                if (skillForce($playerID, $hero)) {
                                    $messageID = 1;
                                }
                                break;
                            }
                            $messageID = -5;
                            break;
                        case 'maxHP':
                            //typ='maxHP';
                            if ($hero['maxHpLvl'] < 10) {
                                if (skillMaxHp($playerID, $hero)) {
                                    $messageID = 1;
                                } else {
                                    $messageID = -5;
                                }
                                break;
                            }
                            $messageID = -5;
                            break;
                        case 'regHP':
                            //typ='regHP';
                            if ($hero['regHpLvl'] < 10) {
                                if (skillRegHp($playerID, $hero)) {
                                    $messageID = 1;
                                } else {
                                    $messageID = -5;
                                }
                                break;
                            }
                            $messageID = -5;
                            break;
                    }
                }
                break;
            case 'skill_ability':
                if ($hero['isAlive'] != 1) {
                    $messageID = -18;
                    break;
                }
                if ($hero['tpFree'] >= 1) {
                    if ($skillID = Request::getVar('skillID', '')) {
                        $messageID = hero_skillAbility($skillID, $hero);
                    }
                }
                break;
            case 'lvlUp':
                if ($hero['isAlive'] != 1) {
                    $messageID = -18;
                    break;
                }
                $messageID = hero_levelUp($hero);
                break;
            case 'immolateResources':
                $value = Request::getVar('value', array('' => ''));
                $resultArray = hero_immolateResources($value, $caveID, $ownCaves);
                $messageID = $resultArray['messageID'];
                // set exp value in message
                if ($resultArray['value'] > 0) {
                    $messageText[$messageID]['message'] = str_replace('expValue', $resultArray['value'], $messageText[$messageID]['message']);
                }
                break;
            case 'usePotion':
                if ($hero['isAlive'] != 1) {
                    $messageID = -18;
                    break;
                }
                $potionID = Request::getVar('potionID', -1);
                $value = Request::getVar('value', 0);
                if ($potionID == -1) {
                    $messageID = -8;
                    break;
                }
                if ($value < 0) {
                    $messageID = -8;
                    break;
                }
                $messageID = hero_usePotion($potionID, $value);
                if ($messageID == 6) {
                    $hero = null;
                    $showTypesList = true;
                    $changeType = true;
                }
                break;
        }
        $queue = getHeroQueue($playerID);
        $player = getPlayerByID($playerID);
        $potions = array();
        foreach ($GLOBALS['potionTypeList'] as $potionID => $potion) {
            if ($player[$potion->dbFieldName] > 0) {
                $potion->value = $player[$potion->dbFieldName];
                $potions[] = $potion;
            }
        }
    } elseif ($changeType) {
        if (Request::getVar('action', '') == 'changeType') {
            $messageID = hero_changeType(Request::getVar('typeID', -1));
            $showTypesList = false;
            $hero = getHeroByPlayer($playerID);
        }
    } else {
        $player = getPlayerByID($playerID);
        if ($player['heroism'] >= 1) {
            $messageID = 4;
            $newhero = true;
        } else {
            $messageID = 0;
        }
    }
    /****************************************************************************************************
     *
     * Übergeben ans Template
     *
     ****************************************************************************************************/
    $template->addVars(array('status_msg' => isset($messageID) ? $messageText[$messageID] : ''));
    if (isset($queue) && $queue) {
        $template->addVars(array('quene_show' => true, 'quene_finish' => time_formatDatetime($queue['end'])));
    }
    if ($hero != null) {
        $hero = getHeroByPlayer($playerID);
        if ($hero['expLeft'] <= 0) {
            $showLevelUp = true;
        }
        if ($hero['healPoints'] <= 0.2 * $hero['maxHealPoints']) {
            $hero['HPbar'] = 'error';
        } else {
            $hero['HPbar'] = 'success';
        }
        $template->addVars(array('hero' => $hero, 'showLevelUp' => isset($showLevelUp) ? $showLevelUp : '', 'delay' => time_formatDuration($ritual['duration']), 'ritual' => $ritual, 'resource' => $resource, 'resourceTypeList' => $GLOBALS['resourceTypeList']));
    }
    if ($newhero) {
        $template->addVars(array('newhero' => $newhero, 'heroTypesList' => $GLOBALS['heroTypesList']));
    }
    if ($showTypesList) {
        $template->addVars(array('changeType' => $changeType, 'heroTypesList' => $GLOBALS['heroTypesList']));
    }
    $showImmolation = false;
    if ($ownCaves[$caveID]['hero']) {
        $showImmolation = true;
    }
    $template->addVar('showImmolation', $showImmolation);
    if (isset($potions) && $potions) {
        $template->addVar('potions', $potions);
    }
    if ($GLOBALS['heroSkillTypeList']) {
        $skills = array();
        foreach ($GLOBALS['heroSkillTypeList'] as $skillID => $skill) {
            // calculate skill effect
            foreach ($skill['effects'] as $effect_dbFieldName => $effect) {
                foreach ($GLOBALS['effectTypeList'] as $eff) {
                    if ($eff->dbFieldName == $effect_dbFieldName) {
                        $name = $eff->name;
                        break;
                    }
                }
                $skill['effect_values'][] = $name . ": " . $skill['skillFactor'] * $hero['forceLvl'];
            }
            // filter skills by hero type
            foreach ($skill['requiredType'] as $rt) {
                if ($rt == $hero['id']) {
                    $skills[] = $skill;
                }
            }
        }
        // check if send button is disabled
        foreach ($skills as $skillID => $skill) {
            if ($hero[$skill['dbFieldName']] || $skill['costTP'] > $hero['tpFree'] || $skill['requiredLevel'] > $hero['lvl']) {
                $skills[$skillID]['disableButton'] = true;
            }
            if ($hero[$skill['dbFieldName']]) {
                $skills[$skillID]['showEffects'] = true;
            }
        }
        $template->addVar('skills', $skills);
    }
}
Example #9
0
function unit_getUnitDetail($caveID, &$details)
{
    global $buildingTypeList, $defenseSystemTypeList, $resourceTypeList, $unitTypeList, $config, $params, $db, $MAX_RESOURCE;
    // messages
    $messageText = array(0 => "Der Arbeitsauftrag wurde erfolgreich gestoppt.", 1 => "Es konnte kein Arbeitsauftrag gestoppt werden.", 2 => "Der Auftrag konnte nicht erteilt werden. Es fehlen die " . "notwendigen Voraussetzungen.", 3 => "Der Auftrag wurde erteilt", 4 => "Bitte korrekte Anzahl der Einheiten Angeben (1 ... " . MAX_SIMULTAN_BUILDED_UNITS . ")");
    // proccess a cancel-order request
    if (isset($params->POST->eventID)) {
        $messageID = unit_processOrderCancel($params->POST->eventID, $caveID, $db);
    }
    // proccess a new order request
    if (isset($params->POST->unitID)) {
        $messageID = unit_processOrder($params->POST->unitID, intval($params->POST->quantity), $caveID, $db, $details);
        $r = getCaveSecure($caveID, $params->SESSION->user['playerID']);
        if ($r->isEmpty()) {
            page_dberror();
        }
        $details = $r->nextRow();
    }
    $queue = unit_getUnitQueueForCave($params->SESSION->user['playerID'], $caveID);
    $template = @tmpl_open("./templates/" . $config->template_paths[$params->SESSION->user['template']] . "/unitbuild.ihtml");
    // Show a special message
    if (isset($messageID)) {
        tmpl_set($template, '/MESSAGE/message', $messageText[$messageID]);
    }
    // Show the unit table
    for ($i = 0; $i < sizeof($unitTypeList); $i++) {
        $notenough = FALSE;
        $unit = $unitTypeList[$i];
        // the current unit
        $result = rules_checkDependencies($unit, $details);
        if ($result === TRUE) {
            tmpl_iterate($template, '/UNIT');
            tmpl_set($template, "UNIT/alternate", $count++ % 2 ? "alternate" : "");
            tmpl_set($template, 'UNIT', array('name' => $unit->name, 'dbFieldName' => $unit->dbFieldName, 'unitID' => $i, 'modus' => UNIT_PROPERTIES, 'caveID' => $caveID, 'size' => "0" + $details[$unit->dbFieldName], 'time' => time_formatDuration(eval('return ' . formula_parseToPHP($unit->productionTimeFunction . ";", '$details')) * BUILDING_TIME_BASE_FACTOR)));
            // iterate ressourcecosts
            foreach ($unit->resourceProductionCost as $resourceID => $function) {
                $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details')));
                if ($cost) {
                    tmpl_iterate($template, "UNIT/RESSOURCECOST");
                    if ($details[$resourceTypeList[$resourceID]->dbFieldName] >= $cost) {
                        tmpl_set($template, "UNIT/RESSOURCECOST/ENOUGH/value", $cost);
                    } else {
                        tmpl_set($template, "UNIT/RESSOURCECOST/LESS/value", $cost);
                        $notenough = TRUE;
                    }
                    tmpl_set($template, "UNIT/RESSOURCECOST/dbFieldName", $resourceTypeList[$resourceID]->dbFieldName);
                    tmpl_set($template, "UNIT/RESSOURCECOST/name", $resourceTypeList[$resourceID]->name);
                }
            }
            // iterate unitcosts
            foreach ($unit->unitProductionCost as $unitID => $function) {
                $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details')));
                if ($cost) {
                    tmpl_iterate($template, "UNIT/UNITCOST");
                    if ($details[$unitTypeList[$unitID]->dbFieldName] >= $cost) {
                        tmpl_set($template, "UNIT/UNITCOST/ENOUGH/value", $cost);
                    } else {
                        tmpl_set($template, "UNIT/UNITCOST/LESS/value", $cost);
                        $notenough = TRUE;
                    }
                    tmpl_set($template, "UNIT/UNITCOST/name", $unitTypeList[$unitID]->name);
                }
            }
            // iterate buildingcosts
            foreach ($unit->buildingProductionCost as $buildingID => $function) {
                $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details')));
                if ($cost) {
                    tmpl_iterate($template, "DEFENSESYSTEM/BUILDINGCOST");
                    if ($details[$buildingTypeList[$buildingID]->dbFieldName] >= $cost) {
                        tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/ENOUGH/value", $cost);
                    } else {
                        tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/LESS/value", $cost);
                        $notenough = TRUE;
                    }
                    tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/name", $buildingTypeList[$buildingID]->name);
                }
            }
            // iterate externalcosts
            foreach ($unit->externalProductionCost as $externalID => $function) {
                $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details')));
                if ($cost) {
                    tmpl_iterate($template, "DEFENSESYSTEM/EXTERNALCOST");
                    if ($details[$defenseSystemTypeList[$externalID]->dbFieldName] >= $cost) {
                        tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/ENOUGH/value", $cost);
                    } else {
                        tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/LESS/value", $cost);
                        $notenough = TRUE;
                    }
                    tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/name", $defenseSystemTypeList[$externalID]->name);
                }
            }
            // show the improvement link ?!
            if ($queue) {
                tmpl_set($template, "UNIT/UNIT_LINK_NO/message", "Ausbildung im Gange");
            } else {
                if ($notenough) {
                    tmpl_set($template, "UNIT/UNIT_LINK_NO/message", "");
                } else {
                    $formParams = array(array('name' => 'modus', 'value' => UNIT_BUILDER), array('name' => 'caveID', 'value' => $caveID), array('name' => 'unitID', 'value' => $unit->unitID));
                    tmpl_set($template, "UNIT/UNIT_LINK/PARAMS", $formParams);
                }
            }
        } else {
            if ($params->SESSION->user['show_unqualified'] && $result !== FALSE && !$unit->nodocumentation) {
                tmpl_iterate($template, '/UNQUALIFIEDUNITS/UNIT');
                tmpl_set($template, '/UNQUALIFIEDUNITS/UNIT', array('alternate' => $count_unqualified++ % 2 ? "" : "alternate", 'modus' => UNIT_PROPERTIES, 'unitID' => $i, 'caveID' => $caveID, 'dbFieldName' => $unit->dbFieldName, 'name' => $unit->name, 'dependencies' => $result));
            }
        }
    }
    // Show the building queue
    if ($queue) {
        // display the unit building queue
        $row = $queue->nextRow();
        tmpl_set($template, 'UNIT_QUEUE', array('name' => $unitTypeList[$row[unitID]]->name, 'quantity' => $row['quantity'], 'finish' => date("d.m.Y H:i:s", time_timestampToTime($row[event_end])), 'action' => UNIT_BUILDER, 'eventID' => $row['event_unitID'], 'caveID' => $caveID));
    }
    return tmpl_parse($template);
}
Example #10
0
function improvement_getImprovementDetail($caveID, &$details)
{
    global $buildingTypeList, $defenseSystemTypeList, $resourceTypeList, $unitTypeList, $config, $params, $db;
    // messages
    $messageText = array(0 => "Der Arbeitsauftrag wurde erfolgreich gestoppt.", 1 => "Es konnte kein Arbeitsauftrag gestoppt werden.", 2 => "Der Auftrag konnte nicht erteilt werden. Es fehlen die " . "notwendigen Voraussetzungen.", 3 => "Der Auftrag wurde erteilt", 5 => "Das Geb&auml;ude wurde erfolgreich abgerissen", 6 => "Das Geb&auml;ude konnte nicht abgerissen werden", 7 => "Sie haben von der Sorte gar keine Geb&auml;ude", 8 => "Sie k&ouml;nnen derzeit kein Geb&auml;ude abreissen, weil erst vor Kurzem etwas in dieser Siedlung abgerissen wurde. Generell muss zwischen zwei Abrissen eine Zeitspanne von " . TORE_DOWN_TIMEOUT . " Minuten liegen.");
    // proccess a cancel-order request
    if (isset($params->POST->eventID)) {
        $messageID = improvement_processOrderCancel($params->POST->eventID, $caveID, $db);
    }
    // proccess a tore down or new order request
    if (isset($params->POST->breakDownConfirm)) {
        $messageID = improvement_breakDown($params->POST->buildingID, $caveID, $details, $db);
        $reload = 1;
    } else {
        if (isset($params->POST->buildingID)) {
            $messageID = improvement_processOrder($params->POST->buildingID, $caveID, $details, $db);
            $reload = 1;
        }
    }
    if ($reload) {
        // this isn't that elegant...
        $r = getCaveSecure($caveID, $params->SESSION->user['playerID']);
        if ($r->isEmpty()) {
            page_dberror();
        }
        $details = $r->nextRow();
    }
    $queue = improvement_getImprovementQueueForCave($params->SESSION->user['playerID'], $caveID);
    $template = @tmpl_open("./templates/" . $config->template_paths[$params->SESSION->user['template']] . "/improvement.ihtml");
    // Show a special message
    if (isset($messageID)) {
        tmpl_set($template, '/MESSAGE/message', $messageText[$messageID]);
    }
    // Show the improvement table
    for ($i = 0; $i < sizeof($buildingTypeList); $i++) {
        $notenough = FALSE;
        $building = $buildingTypeList[$i];
        // the current building
        $maxLevel = round(eval('return ' . formula_parseToPHP("{$building->maxLevel};", '$details')));
        $result = rules_checkDependencies($building, $details);
        if ($result === TRUE) {
            tmpl_iterate($template, 'IMPROVEMENT');
            tmpl_set($template, "IMPROVEMENT/alternate", $count++ % 2 ? "alternate" : "");
            tmpl_set($template, 'IMPROVEMENT', array('name' => $building->name, 'dbFieldName' => $building->dbFieldName, 'buildingID' => $i, 'modus' => IMPROVEMENT_BUILDING_DETAIL, 'caveID' => $caveID, 'maxlevel' => $maxLevel, 'size' => "0" + $details[$building->dbFieldName], 'time' => time_formatDuration(eval('return ' . formula_parseToPHP($building->productionTimeFunction . ";", '$details')) * BUILDING_TIME_BASE_FACTOR)));
            // iterate ressourcecosts
            foreach ($building->resourceProductionCost as $resourceID => $function) {
                $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details')));
                if ($cost) {
                    tmpl_iterate($template, "IMPROVEMENT/RESSOURCECOST");
                    if ($details[$resourceTypeList[$resourceID]->dbFieldName] >= $cost) {
                        tmpl_set($template, "IMPROVEMENT/RESSOURCECOST/ENOUGH/value", $cost);
                    } else {
                        tmpl_set($template, "IMPROVEMENT/RESSOURCECOST/LESS/value", $cost);
                        $notenough = TRUE;
                    }
                    tmpl_set($template, "IMPROVEMENT/RESSOURCECOST/dbFieldName", $resourceTypeList[$resourceID]->dbFieldName);
                    tmpl_set($template, "IMPROVEMENT/RESSOURCECOST/name", $resourceTypeList[$resourceID]->name);
                }
            }
            // iterate unitcosts
            foreach ($building->unitProductionCost as $unitID => $function) {
                $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details')));
                if ($cost) {
                    tmpl_iterate($template, "IMPROVEMENT/UNITCOST");
                    if ($details[$unitTypeList[$unitID]->dbFieldName] >= $cost) {
                        tmpl_set($template, "IMPROVEMENT/UNITCOST/ENOUGH/value", $cost);
                    } else {
                        tmpl_set($template, "IMPROVEMENT/UNITCOST/LESS/value", $cost);
                        $notenough = TRUE;
                    }
                    tmpl_set($template, "IMPROVEMENT/UNITCOST/name", $unitTypeList[$unitID]->name);
                }
            }
            // iterate buildingcosts
            /*
                  foreach ($building->buildingProductionCost as $buildingID => $function){
            
                    $cost = ceil(eval('return '. formula_parseToPHP($function . ';', '$details')));
            
                    if ($cost){
                      tmpl_iterate($template, "DEFENSESYSTEM/BUILDINGCOST");
            
                      if ($details[$buildingTypeList[$buildingID]->dbFieldName] >= $cost){
                        tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/ENOUGH/value", $cost);
            
                      } else {
                        tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/LESS/value", $cost);
            $notenough = TRUE;
                      }
                      tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/name", $buildingTypeList[$buildingID]->name);
                    }
                  }
            */
            // iterate buildingcosts
            foreach ($building->buildingProductionCost as $buildingID => $function) {
                $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details')));
                if ($cost) {
                    tmpl_iterate($template, "IMPROVEMENT/BUILDINGCOST");
                    if ($details[$buildingTypeList[$buildingID]->dbFieldName] >= $cost) {
                        tmpl_set($template, "IMPROVEMENT/BUILDINGCOST/ENOUGH/value", $cost);
                    } else {
                        tmpl_set($template, "IMPROVEMENT/BUILDINGCOST/LESS/value", $cost);
                        $notenough = TRUE;
                    }
                    tmpl_set($template, "IMPROVEMENT/BUILDINGCOST/name", $buildingTypeList[$buildingID]->name);
                }
            }
            // iterate externalcosts
            foreach ($building->externalProductionCost as $externalID => $function) {
                $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details')));
                if ($cost) {
                    tmpl_iterate($template, "DEFENSESYSTEM/EXTERNALCOST");
                    if ($details[$defenseSystemTypeList[$externalID]->dbFieldName] >= $cost) {
                        tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/ENOUGH/value", $cost);
                    } else {
                        tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/LESS/value", $cost);
                        $notenough = TRUE;
                    }
                    tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/name", $defenseSystemTypeList[$externalID]->name);
                }
            }
            // show the break down link
            tmpl_set($template, 'IMPROVEMENT/BREAK_DOWN_LINK', array('action' => IMPROVEMENT_BREAK_DOWN, 'buildingID' => $building->buildingID, 'caveID' => $caveID));
            // show the building link ?!
            if ($queue) {
                tmpl_set($template, 'IMPROVEMENT/BUILD_LINK_NO/message', "Ausbau im Gange");
            } else {
                if ($notenough && $maxLevel > $details[$building->dbFieldName]) {
                    tmpl_set($template, 'IMPROVEMENT/BUILD_LINK_NO/message', "");
                } else {
                    if ($maxLevel > $details[$building->dbFieldName]) {
                        tmpl_set($template, 'IMPROVEMENT/BUILD_LINK', array('action' => IMPROVEMENT_DETAIL, 'buildingID' => $building->buildingID, 'caveID' => $caveID));
                    } else {
                        tmpl_set($template, '/IMPROVEMENT/BUILD_LINK_NO/message', "Max. Stufe");
                    }
                }
            }
        } else {
            if ($details[$building->dbFieldName]) {
                tmpl_iterate($template, '/UNWANTEDIMPROVEMENTS/IMPROVEMENT');
                tmpl_set($template, '/UNWANTEDIMPROVEMENTS/IMPROVEMENT', array('alternate' => $count_unwanted++ % 2 ? "" : "alternate", 'modus' => IMPROVEMENT_BUILDING_DETAIL, 'buildingID' => $i, 'caveID' => $caveID, 'size' => $details[$building->dbFieldName], 'dbFieldName' => $building->dbFieldName, 'name' => $building->name, 'action' => IMPROVEMENT_BREAK_DOWN));
                if ($result !== FALSE) {
                    tmpl_set($template, '/UNWANTEDIMPROVEMENTS/IMPROVEMENT/dependencies', $result);
                }
            } else {
                if ($params->SESSION->user['show_unqualified'] && $result !== FALSE && !$building->nodocumentation) {
                    tmpl_iterate($template, '/UNQUALIFIEDIMPROVEMENTS/IMPROVEMENT');
                    tmpl_set($template, '/UNQUALIFIEDIMPROVEMENTS/IMPROVEMENT', array('alternate' => $count_unqualified++ % 2 ? "" : "alternate", 'modus' => IMPROVEMENT_BUILDING_DETAIL, 'buildingID' => $i, 'caveID' => $caveID, 'dbFieldName' => $building->dbFieldName, 'name' => $building->name, 'dependencies' => $result));
                }
            }
        }
    }
    // Show the building queue
    if ($queue) {
        // display the building queue
        $row = $queue->nextRow();
        tmpl_set($template, 'IMPROVEMENT_QUEUE', array('name' => $buildingTypeList[$row['expansionID']]->name, 'size' => $details[$buildingTypeList[$row['expansionID']]->dbFieldName] + 1, 'finish' => date("d.m.Y H:i:s", time_timestampToTime($row['event_end'])), 'action' => IMPROVEMENT_DETAIL, 'eventID' => $row['event_expansionID'], 'caveID' => $caveID));
    }
    return tmpl_parse($template);
}
Example #11
0
function improvement_getBuildingDetails($buildingID, $caveData, $method)
{
    global $template;
    // first check whether that building should be displayed...
    $building = $GLOBALS['buildingTypeList'][$buildingID];
    $maxLevel = round(eval('return ' . formula_parseToPHP("{$building->maxLevel};", '$caveData')));
    $maxLevel = $maxLevel < 0 ? 0 : $maxLevel;
    $maxReadable = formula_parseToReadable($building->maxLevel);
    if (!$building || $building->nodocumentation && !$caveData[$building->dbFieldName] && rules_checkDependencies($building, $caveData) !== TRUE) {
        $building = current($GLOBALS['buildingTypeList']);
    }
    // open template
    if ($method == 'ajax') {
        $shortVersion = true;
        $template->setFile('improvementDetailAjax.tmpl');
    } else {
        $shortVersion = false;
        $template->setFile('improvementDetail.tmpl');
        $template->setShowRresource(false);
    }
    $currentlevel = $caveData[$building->dbFieldName];
    $levels = $costTimeLvl = array();
    for ($level = $caveData[$building->dbFieldName], $count = 0; $level < $maxLevel && $count < ($shortVersion ? 3 : 10); ++$count, ++$level, ++$caveData[$building->dbFieldName]) {
        $duration = time_formatDuration(eval('return ' . formula_parseToPHP($GLOBALS['buildingTypeList'][$buildingID]->productionTimeFunction . ";", '$caveData')) * BUILDING_TIME_BASE_FACTOR);
        // iterate ressourcecosts
        $resourceCost = array();
        foreach ($building->resourceProductionCost as $resourceID => $function) {
            $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$caveData')));
            if ($cost) {
                array_push($resourceCost, array('name' => $GLOBALS['resourceTypeList'][$resourceID]->name, 'dbFieldName' => $GLOBALS['resourceTypeList'][$resourceID]->dbFieldName, 'value' => $cost));
            }
        }
        // iterate unitcosts
        $unitCost = array();
        foreach ($building->unitProductionCost as $unitID => $function) {
            $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$caveData')));
            if ($cost) {
                array_push($unitCost, array('name' => $GLOBALS['unitTypeList'][$unitID]->name, 'dbFieldName' => $GLOBALS['unitTypeList'][$unitID]->dbFieldName, 'value' => $cost));
            }
        }
        // iterate buildingCost
        $buildingCost = array();
        foreach ($building->buildingProductionCost as $buildingID => $function) {
            $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$caveData')));
            if ($cost) {
                array_push($buildingCost, array('name' => $GLOBALS['buildingTypeList'][$buildingID]->name, 'dbFieldName' => $GLOBALS['buildingTypeList'][$buildingID]->dbFieldName, 'value' => $cost));
            }
        }
        // iterate defenseCost
        $defenseCost = array();
        foreach ($building->defenseProductionCost as $defenseID => $function) {
            $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$caveData')));
            if ($cost) {
                array_push($defenseCost, array('name' => $GLOBALS['defenseSystemTypeList'][$defenseID]->name, 'dbFieldName' => $GLOBALS['defenseSystemTypeList'][$defenseID]->dbFieldName, 'value' => $cost));
            }
        }
        $levels[$count] = array('level' => $level + 1, 'time' => $duration, 'resource_cost' => $resourceCost, 'unit_cost' => $unitCost, 'building_cost' => $buildingCost, 'defense_cost' => $defenseCost);
    }
    if (sizeof($levels)) {
        $costTimeLvl = array('population' => $caveData['population'], 'item' => $levels);
    }
    $dependencies = array();
    $buildingdep = array();
    $defensesystemdep = array();
    $resourcedep = array();
    $sciencedep = array();
    $unitdep = array();
    foreach ($building->buildingDepList as $key => $level) {
        if ($level) {
            array_push($buildingdep, array('name' => $GLOBALS['buildingTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($building->defenseSystemDepList as $key => $level) {
        if ($level) {
            array_push($defensesystemdep, array('name' => $GLOBALS['defenseSystemTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($building->resourceDepList as $key => $level) {
        if ($level) {
            array_push($resourcedep, array('name' => $GLOBALS['resourceTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($building->scienceDepList as $key => $level) {
        if ($level) {
            array_push($sciencedep, array('name' => $GLOBALS['scienceTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($building->unitDepList as $key => $level) {
        if ($level) {
            array_push($unitdep, array('name' => $GLOBALS['unitTypeList'][$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($building->maxBuildingDepList as $key => $level) {
        if ($level != -1) {
            array_push($buildingdep, array('name' => $GLOBALS['buildingTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($building->maxDefenseSystemDepList as $key => $level) {
        if ($level != -1) {
            array_push($defensesystemdep, array('name' => $GLOBALS['defenseSystemTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($building->maxResourceDepList as $key => $level) {
        if ($level != -1) {
            array_push($resourcedep, array('name' => $GLOBALS['resourceTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($building->maxScienceDepList as $key => $level) {
        if ($level != -1) {
            array_push($sciencedep, array('name' => $GLOBALS['scienceTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($building->maxUnitDepList as $key => $level) {
        if ($level != -1) {
            array_push($unitdep, array('name' => $GLOBALS['unitTypeList'][$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    if (sizeof($buildingdep)) {
        array_push($dependencies, array('name' => _('Erweiterungen'), 'dep' => $buildingdep));
    }
    if (sizeof($defensesystemdep)) {
        array_push($dependencies, array('name' => _('Verteidigungsanlagen'), 'dep' => $defensesystemdep));
    }
    if (sizeof($resourcedep)) {
        array_push($dependencies, array('name' => _('Rohstoffe'), 'dep' => $resourcedep));
    }
    if (sizeof($sciencedep)) {
        array_push($dependencies, array('name' => _('Forschungen'), 'dep' => $sciencedep));
    }
    if (sizeof($unitdep)) {
        array_push($dependencies, array('name' => _('Einheiten'), 'dep' => $unitdep));
    }
    $template->addVars(array('name' => $building->name, 'dbFieldName' => $building->dbFieldName, 'description' => $building->description, 'maxlevel' => $maxLevel, 'maxReadable' => $maxReadable, 'currentlevel' => $currentlevel, 'cost_time_lvl' => $costTimeLvl, 'dependencies' => $dependencies, 'rules_path' => RULES_PATH));
}
Example #12
0
/**
 *
 */
function defense_builder($caveID, &$details)
{
    global $template;
    // open template
    $template->setFile('defenseBuilder.tmpl');
    //messages
    $messageText = array(0 => array('type' => 'error', 'message' => _('Es konnte kein Arbeitsauftrag gestoppt werden.')), 1 => array('type' => 'success', 'message' => _('Der Arbeitsauftrag wurde erfolgreich gestoppt.')), 2 => array('type' => 'info', 'message' => sprintf(_('Du kannst derzeit kein Gebäude oder Verteidigungen abreissen, weil erst vor Kurzem etwas in dieser Höhle abgerissen wurde. Generell muss zwischen zwei Abrissen eine Zeitspanne von %d Minuten liegen.'), TORE_DOWN_TIMEOUT)), 3 => array('type' => 'error', 'message' => _('Du hast von der Sorte gar keine Gebäude')), 4 => array('type' => 'error', 'message' => _('Das Gebäude konnte nicht abgerissen werden.')), 5 => array('type' => 'success', 'message' => _('Das Gebäude wurde erfolgreich abgerissen.')), 6 => array('type' => 'error', 'message' => _('Der Auftrag konnte nicht erteilt werden. Es fehlen die notwendigen Voraussetzungen.')), 7 => array('type' => 'success', 'message' => _('Der Arbeitsauftrag wurde erteilt.')), 8 => array('type' => 'error', 'message' => _('Der Arbeitsauftrag konnte nicht erteilt werden. Ein Arbeitsauftrag ist schon im Gange.')));
    // get this cave's queue
    $queue = defense_getQueue($_SESSION['player']->playerID, $caveID);
    $action = Request::getVar('action', '');
    switch ($action) {
        /****************************************************************************************************
        *
        * Verteidigungsanlage bauen
        *
        ****************************************************************************************************/
        case 'build':
            $defenseID = Request::getVar('defenseID', -1);
            if ($defenseID == -1 || !isset($GLOBALS['defenseSystemTypeList'][$defenseID])) {
                $messageID = 6;
                break;
            }
            // check queue exist
            if (sizeof($queue)) {
                $messageID = 8;
                break;
            }
            $messageID = defense_processOrder($defenseID, $caveID, $details);
            $details = getCaveSecure($caveID, $_SESSION['player']->playerID);
            $queue = defense_getQueue($_SESSION['player']->playerID, $caveID);
            break;
            /****************************************************************************************************
            *
            * Ausbau der Verteidigungsanlage abbrechen
            *
            ****************************************************************************************************/
        /****************************************************************************************************
        *
        * Ausbau der Verteidigungsanlage abbrechen
        *
        ****************************************************************************************************/
        case 'cancelOrder':
            $eventID = Request::getVar('id', 0);
            if ($eventID == 0) {
                $messageID = 0;
                break;
            }
            // check queue exist
            if (!sizeof($queue) || $queue['event_defenseSystemID'] != $eventID) {
                $messageID = 0;
                break;
            }
            if (Request::isPost('postConfirm')) {
                $messageID = defense_cancelOrder($eventID, $caveID);
                if ($messageID == 1) {
                    $queue = null;
                }
            } else {
                $template->addVars(array('cancelOrder_box' => true, 'confirm_action' => 'cancelOrder', 'confirm_id' => $eventID, 'confirm_mode' => DEFENSE_BUILDER, 'confirm_msg' => sprintf(_('Möchtest du den Arbeitsauftrag von <span class="bold">%s</span> abbrechen?'), $GLOBALS['defenseSystemTypeList'][$queue['defenseSystemID']]->name)));
            }
            break;
            /****************************************************************************************************
            *
            * Verteidigungsanlage abreißen
            *
            ****************************************************************************************************/
        /****************************************************************************************************
        *
        * Verteidigungsanlage abreißen
        *
        ****************************************************************************************************/
        case 'demolishing':
            $defenseID = Request::getVar('id', -1);
            if ($defenseID == -1) {
                $messageID = 4;
                break;
            }
            if (!isset($GLOBALS['defenseSystemTypeList'][$defenseID])) {
                $messageID = 4;
                break;
            }
            if (Request::isPost('postConfirm')) {
                $messageID = defense_Demolishing($defenseID, $caveID, $details);
                $details = getCaveSecure($caveID, $_SESSION['player']->playerID);
            } else {
                $template->addVars(array('cancelOrder_box' => true, 'confirm_action' => 'demolishing', 'confirm_id' => $defenseID, 'confirm_mode' => DEFENSE_BUILDER, 'confirm_msg' => sprintf(_('Möchtest du <span class="bold">%s</span> einmal abreißen?'), $GLOBALS['defenseSystemTypeList'][$defenseID]->name)));
            }
            break;
    }
    $defenseSystem = $defenseSystemRelict = $defenseSystemUnqualified = array();
    foreach ($GLOBALS['defenseSystemTypeList'] as $id => $defense) {
        $maxLevel = round(eval('return ' . formula_parseToPHP("{$defense->maxLevel};", '$details')));
        $result = rules_checkDependencies($defense, $details);
        // if all requirements are met, but the maxLevel is 0, treat it like a non-buildable
        if ($maxLevel <= 0 && $result === TRUE) {
            $result = !$details[$defense->dbFieldName] ? _('Max. Stufe: 0') : false;
        }
        /****************************************************************************************************
        *
        * Verteidigungsanlage die gebaut werden können.
        *
        ****************************************************************************************************/
        if ($result === TRUE) {
            $defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID] = array('name' => $defense->name, 'dbFieldName' => $defense->dbFieldName, 'defense_id' => $defense->defenseSystemID, 'cave_id' => $caveID, 'time' => time_formatDuration(eval('return ' . formula_parseToPHP($defense->productionTimeFunction . ";", '$details')) * DEFENSESYSTEM_TIME_BASE_FACTOR), 'maxlevel' => $maxLevel, 'currentlevel' => "0" + $details[$defense->dbFieldName], 'antiSpyChance' => $defense->antiSpyChance, 'breakdown_link' => $details[$defense->dbFieldName] > 0 ? true : false);
            $defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID] = array_merge($defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID], parseCost($defense, $details));
            // show the building link ?!
            if (sizeof($queue)) {
                $defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID]['no_build_msg'] = _('Ausbau im Gange');
            } else {
                if ($defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID]['notenough'] && $maxLevel > $details[$defense->dbFieldName]) {
                    $defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID]['no_build_msg'] = _('Zu wenig Rohstoffe');
                } else {
                    if ($maxLevel > $details[$defense->dbFieldName]) {
                        $defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID]['build_link'] = true;
                    } else {
                        $defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID]['no_build_msg'] = _('Max. Stufe');
                    }
                }
            }
            /****************************************************************************************************
            *
            * Verteidigungsanlage die zwar nicht gebaut werden können aber schon in der Höhle sind (Relikt)
            *
            ****************************************************************************************************/
        } else {
            if ($details[$defense->dbFieldName]) {
                $defenseSystemRelict[$defense->defenseCategory]['items'][$defense->defenseSystemID] = array('name' => $defense->name, 'dbFieldName' => $defense->dbFieldName, 'defense_id' => $defense->defenseSystemID, 'cave_id' => $caveID, 'currentlevel' => "0" + $details[$defense->dbFieldName], 'dependencies' => $result !== false ? $result : false);
                /****************************************************************************************************
                *
                * Verteidigungsanlage die nicht gebaut werden können.
                *
                ****************************************************************************************************/
            } else {
                if ($result !== false && !$defense->nodocumentation) {
                    $defenseSystemUnqualified[$defense->defenseCategory]['items'][$defense->defenseSystemID] = array('name' => $defense->name, 'dbFieldName' => $defense->dbFieldName, 'defense_id' => $defense->defenseSystemID, 'cave_id' => $caveID, 'dependencies' => $result, 'antiSpyChance' => $defense->antiSpyChance);
                }
            }
        }
    }
    /****************************************************************************************************
    *
    * Namen zu den Kategorien hinzufügen & sortieren
    *
    ****************************************************************************************************/
    $tmpDefenseSystem = $tmpDefenseSystemRelict = $tmpDefenseSystemUnqualified = array();
    foreach ($GLOBALS['defenseCategoryTypeList'] as $defenseCategory) {
        if (isset($defenseSystem[$defenseCategory->id])) {
            $tmpDefenseSystem[$defenseCategory->sortID] = array('id' => $defenseCategory->id, 'name' => $defenseCategory->name, 'items' => $defenseSystem[$defenseCategory->id]['items']);
            unset($defenseSystem[$defenseCategory->id]);
        }
        if (isset($defenseSystemRelict[$defenseCategory->id])) {
            $tmpDefenseSystemRelict[$defenseCategory->sortID] = array('id' => $defenseCategory->id, 'name' => $defenseCategory->name, 'items' => $defenseSystemRelict[$defenseCategory->id]['items']);
            unset($defenseSystemRelict[$defenseCategory->id]);
        }
        if (isset($defenseSystemUnqualified[$defenseCategory->id])) {
            $tmpDefenseSystemUnqualified[$defenseCategory->sortID] = array('id' => $defenseCategory->id, 'name' => $defenseCategory->name, 'items' => $defenseSystemUnqualified[$defenseCategory->id]['items']);
            unset($defenseSystemUnqualified[$defenseCategory->id]);
        }
    }
    $defenseSystem = $tmpDefenseSystem;
    $defenseSystemRelict = $tmpDefenseSystemRelict;
    $defenseSystemUnqualified = $tmpDefenseSystemUnqualified;
    unset($tmpDefenseSystem, $tmpDefenseSystemRelict, $tmpDefenseSystemUnqualified);
    ksort($defenseSystem);
    ksort($defenseSystemRelict);
    ksort($defenseSystemUnqualified);
    /****************************************************************************************************
    *
    * Irgendwas im Ausbau?
    *
    ****************************************************************************************************/
    if (sizeof($queue)) {
        $template->addVars(array('quene_show' => true, 'quene_name' => $GLOBALS['defenseSystemTypeList'][$queue['defenseSystemID']]->name, 'quene_nextlevel' => $details[$GLOBALS['defenseSystemTypeList'][$queue['defenseSystemID']]->dbFieldName] + 1, 'quene_finish' => time_formatDatetime($queue['end']), 'quene_modus' => DEFENSE_BUILDER, 'quene_event_id' => $queue['event_defenseSystemID']));
    }
    /****************************************************************************************************
    *
    * Übergeben ans Template
    *
    ****************************************************************************************************/
    $template->addVars(array('cave_id' => $caveID, 'status_msg' => isset($messageID) ? $messageText[$messageID] : '', 'defense_system' => $defenseSystem, 'defense_system_unqualified' => $defenseSystemUnqualified, 'defense_system_relict' => $defenseSystemRelict));
}
Example #13
0
function unit_getUnitDetail($caveID, &$details)
{
    global $template;
    // open template
    $template->setFile('unitBuilder.tmpl');
    // messages
    $messageText = array(0 => array('type' => 'success', 'message' => _('Der Arbeitsauftrag wurde erfolgreich gestoppt.')), 1 => array('type' => 'error', 'message' => _('Es konnte kein Arbeitsauftrag gestoppt werden.')), 2 => array('type' => 'error', 'message' => _('Der Auftrag konnte nicht erteilt werden. Es fehlen die notwendigen Voraussetzungen.')), 3 => array('type' => 'success', 'message' => _('Der Auftrag wurde erteilt')), 4 => array('type' => 'info', 'message' => sprintf(_('Bitte korrekte Anzahl der Einheiten Angeben (1 ... %d)'), MAX_SIMULTAN_BUILDED_UNITS)), 5 => array('type' => 'error', 'message' => _('Der Arbeitsauftrag konnte nicht erteilt werden. Ein Arbeitsauftrag ist schon im Gange.')));
    // get this cave's queue
    $queue = unit_getQueue($_SESSION['player']->playerID, $caveID);
    $action = Request::getVar('action', '');
    switch ($action) {
        /****************************************************************************************************
        *
        * Einheiten bauen
        *
        ****************************************************************************************************/
        case 'build':
            $unitID = Request::getVar('unitID', -1);
            $quantity = Request::getVar('quantity', 0);
            if ($unitID == -1) {
                $messageID = 2;
                break;
            }
            // check queue exist
            if (sizeof($queue)) {
                $messageID = 5;
                break;
            }
            $messageID = unit_processOrder($unitID, $quantity, $caveID, $details);
            $details = getCaveSecure($caveID, $_SESSION['player']->playerID);
            $queue = unit_getQueue($_SESSION['player']->playerID, $caveID);
            break;
            /****************************************************************************************************
            *
            * Ausbau der Einheiten abbrechen
            *
            ****************************************************************************************************/
        /****************************************************************************************************
        *
        * Ausbau der Einheiten abbrechen
        *
        ****************************************************************************************************/
        case 'cancelOrder':
            $eventID = Request::getVar('id', 0);
            if ($eventID == 0) {
                $messageID = 1;
                break;
            }
            // check queue exist
            if (!sizeof($queue) || $queue['event_unitID'] != $eventID) {
                $messageID = 1;
                break;
            }
            if (Request::isPost('postConfirm')) {
                $messageID = unit_cancelOrder($eventID, $caveID);
                if ($messageID == 0) {
                    $queue = null;
                }
            } else {
                $template->addVars(array('cancelOrder_box' => true, 'confirm_action' => 'cancelOrder', 'confirm_id' => $eventID, 'confirm_mode' => UNIT_BUILDER, 'confirm_msg' => sprintf(_('Möchtest du den Arbeitsauftrag von <span class="bold">%s</span> abbrechen?'), $GLOBALS['unitTypeList'][$queue['unitID']]->name)));
            }
            break;
    }
    $units = $unitsUnqualified = array();
    foreach ($GLOBALS['unitTypeList'] as $id => $unit) {
        $result = rules_checkDependencies($unit, $details);
        /****************************************************************************************************
        *
        * Einheiten die gebaut werden können.
        *
        ****************************************************************************************************/
        if ($result === TRUE) {
            $units[$unit->unitCategory]['items'][$unit->unitID] = array('name' => $unit->name, 'dbFieldName' => $unit->dbFieldName, 'unit_id' => $unit->unitID, 'unitCategory' => $unit->unitCategory, 'cave_id' => $caveID, 'time' => time_formatDuration(eval('return ' . formula_parseToPHP($unit->productionTimeFunction . ";", '$details')) * BUILDING_TIME_BASE_FACTOR), 'stock' => "0" + $details[$unit->dbFieldName], 'description' => $unit->description, 'duration_formula' => formula_parseToReadable($unit->productionTimeFunction), 'visible' => $unit->visible, 'range_attack' => $unit->attackRange, 'areal_attack' => $unit->attackAreal, 'attack_rate' => $unit->attackRate, 'rd_Resist' => $unit->rangedDamageResistance, 'defense_rate' => $unit->defenseRate, 'size' => $unit->hitPoints, 'spy_value' => $unit->spyValue, 'spy_chance' => $unit->spyChance, 'spy_quality' => $unit->spyQuality, 'anti_spy_chance' => $unit->antiSpyChance, 'fuel_name' => $GLOBALS['resourceTypeList'][GameConstants::FUEL_RESOURCE_ID]->dbFieldName, 'fuel_factor' => $unit->foodCost, 'way_cost' => $unit->wayCost, 'normal_damage_probabilit' => 100 * (1 - ($unit->heavyDamageProbability + $unit->criticalDamageProbability)), 'heavy_damage_probability' => 100 * $unit->heavyDamageProbability, 'critical_damage_probability' => 100 * $unit->criticalDamageProbability);
            $units[$unit->unitCategory]['items'][$unit->unitID] = array_merge($units[$unit->unitCategory]['items'][$unit->unitID], parseCost($unit, $details));
            // show the building link ?!
            if (sizeof($queue)) {
                $units[$unit->unitCategory]['items'][$unit->unitID]['no_build_msg'] = _('Ausbau im Gange');
            } else {
                if ($units[$unit->unitCategory]['items'][$unit->unitID]['notenough']) {
                    $units[$unit->unitCategory]['items'][$unit->unitID]['no_build_msg'] = _('Zu wenig Rohstoffe');
                } else {
                    $units[$unit->unitCategory]['items'][$unit->unitID]['build_link'] = true;
                }
            }
            /****************************************************************************************************
            *
            * Einheiten die nicht gebaut werden können.
            *
            ****************************************************************************************************/
        } else {
            if ($result !== FALSE && !$unit->nodocumentation) {
                $unitsUnqualified[$unit->unitCategory]['items'][$unit->unitID] = array('name' => $unit->name, 'dbFieldName' => $unit->dbFieldName, 'unit_id' => $unit->unitID, 'unitCategory' => $unit->unitCategory, 'cave_id' => $caveID, 'dependencies' => $result, 'description' => $unit->description, 'duration_formula' => formula_parseToReadable($unit->productionTimeFunction), 'visible' => $unit->visible, 'range_attack' => $unit->attackRange, 'areal_attack' => $unit->attackAreal, 'attack_rate' => $unit->attackRate, 'rd_Resist' => $unit->rangedDamageResistance, 'defense_rate' => $unit->defenseRate, 'size' => $unit->hitPoints, 'spy_value' => $unit->spyValue, 'spy_chance' => $unit->spyChance, 'spy_quality' => $unit->spyQuality, 'anti_spy_chance' => $unit->antiSpyChance, 'fuel_name' => $GLOBALS['resourceTypeList'][GameConstants::FUEL_RESOURCE_ID]->dbFieldName, 'fuel_factor' => $unit->foodCost, 'way_cost' => $unit->wayCost, 'normal_damage_probabilit' => 100 * (1 - ($unit->heavyDamageProbability + $unit->criticalDamageProbability)), 'heavy_damage_probability' => 100 * $unit->heavyDamageProbability, 'critical_damage_probability' => 100 * $unit->criticalDamageProbability);
                $unitsUnqualified[$unit->unitCategory]['items'][$unit->unitID] = array_merge($unitsUnqualified[$unit->unitCategory]['items'][$unit->unitID], parseCost($unit, $details));
            }
        }
    }
    /****************************************************************************************************
    *
    * Namen zu den Kategorien hinzufügen & sortieren
    *
    ****************************************************************************************************/
    $tmpUnits = $tmpUnitsUnqualified = array();
    foreach ($GLOBALS['unitCategoryTypeList'] as $unitsCategory) {
        if (isset($units[$unitsCategory->id])) {
            $tmpUnits[$unitsCategory->sortID] = array('id' => $unitsCategory->id, 'name' => $unitsCategory->name, 'items' => $units[$unitsCategory->id]['items']);
            unset($units[$unitsCategory->id]);
        }
        if (isset($unitsUnqualified[$unitsCategory->id])) {
            $tmpUnitsUnqualified[$unitsCategory->sortID] = array('id' => $unitsCategory->id, 'name' => $unitsCategory->name, 'items' => $unitsUnqualified[$unitsCategory->id]['items']);
            unset($unitsUnqualified[$unitsCategory->id]);
        }
    }
    $units = $tmpUnits;
    $unitsUnqualified = $tmpUnitsUnqualified;
    unset($tmpUnits, $tmpUnitsUnqualified);
    ksort($units);
    ksort($unitsUnqualified);
    /****************************************************************************************************
    *
    * Irgendwas im Ausbau?
    *
    ****************************************************************************************************/
    if (sizeof($queue)) {
        $template->addVars(array('quene_show' => true, 'quene_name' => $GLOBALS['unitTypeList'][$queue['unitID']]->name, 'quene_quantity' => $queue['quantity'], 'quene_finish' => time_formatDatetime($queue['end']), 'quene_modus' => UNIT_BUILDER, 'quene_event_id' => $queue['event_unitID']));
    }
    /****************************************************************************************************
    *
    * Übergeben ans Template
    *
    ****************************************************************************************************/
    $template->addVars(array('cave_id' => $caveID, 'status_msg' => isset($messageID) ? $messageText[$messageID] : '', 'units' => $units, 'units_unqualified' => $unitsUnqualified, 'max_build_units' => MAX_SIMULTAN_BUILDED_UNITS));
}
Example #14
0
function science_getScienceDetail($caveID, &$details)
{
    global $template;
    // open template
    $template->setFile('scienceBuilder.tmpl');
    // messages
    $messageText = array(0 => array('type' => 'success', 'message' => _('Der Forschungsauftrag wurde erfolgreich gestoppt.')), 1 => array('type' => 'error', 'message' => _('Es konnte kein Forschungsauftrag gestoppt werden.')), 2 => array('type' => 'error', 'message' => _('Der Auftrag konnte nicht erteilt werden. Es fehlen die notwendigen Voraussetzungen.')), 3 => array('type' => 'success', 'message' => _('Der Auftrag wurde erteilt')), 4 => array('type' => 'info', 'message' => _('Dieses Wissen wird schon in einer anderen Höhle erforscht.')), 5 => array('type' => 'info', 'message' => _('Es wird gerade in einer anderen Höhle Wissen erforscht, das dieses Wissen ausschließt.')));
    // get this cave's queue
    $queue = science_getQueue($_SESSION['player']->playerID, $caveID);
    $action = Request::getVar('action', '');
    switch ($action) {
        /****************************************************************************************************
        *
        * Forschung starten
        *
        ****************************************************************************************************/
        case 'build':
            $scienceID = Request::getVar('scienceID', -1);
            if ($scienceID == -1) {
                $messageID = 2;
                break;
            }
            // check queue exist
            if (sizeof($queue)) {
                $messageID = 2;
                break;
            }
            $messageID = science_processOrder($scienceID, $caveID, $details);
            $details = getCaveSecure($caveID, $_SESSION['player']->playerID);
            $queue = science_getQueue($_SESSION['player']->playerID, $caveID);
            break;
            /****************************************************************************************************
            *
            * Forschung abbrechen
            *
            ****************************************************************************************************/
        /****************************************************************************************************
        *
        * Forschung abbrechen
        *
        ****************************************************************************************************/
        case 'cancelOrder':
            $eventID = Request::getVar('id', 0);
            if ($eventID == 0) {
                $messageID = 2;
                break;
            }
            // check queue exist
            if (!sizeof($queue) || $queue['event_scienceID'] != $eventID) {
                $messageID = 2;
                break;
            }
            if (Request::isPost('cancelOrderConfirm')) {
                $messageID = science_cancelOrder($eventID, $caveID);
                if ($messageID == 0) {
                    $queue = null;
                }
            } else {
                $template->addVars(array('cancelOrder_box' => true, 'confirm_action' => 'cancelOrder', 'confirm_id' => $eventID, 'confirm_mode' => SCIENCE_BUILDER, 'confirm_msg' => sprintf(_('Möchtest die Forschung von <span class="bold">%s</span> abbrechen?'), $GLOBALS['scienceTypeList'][$queue['scienceID']]->name)));
            }
            break;
    }
    $sciences = $sciencesUnqualified = array();
    foreach ($GLOBALS['scienceTypeList'] as $id => $science) {
        $maxLevel = round(eval('return ' . formula_parseToPHP("{$science->maxLevel};", '$details')));
        $notenough = FALSE;
        $result = rules_checkDependencies($science, $details);
        /****************************************************************************************************
        *
        *  Forschungen die man forschen kann.
        *
        ****************************************************************************************************/
        if ($result === TRUE) {
            $sciences[$science->scienceID] = array('name' => $science->name, 'dbFieldName' => $science->dbFieldName, 'science_id' => $science->scienceID, 'modus' => SCIENCE_BUILDER, 'cave_id' => $caveID, 'time' => time_formatDuration(eval('return ' . formula_parseToPHP($science->productionTimeFunction . ";", '$details')) * SCIENCE_TIME_BASE_FACTOR), 'maxlevel' => $maxLevel, 'currentlevel' => "0" + $details[$science->dbFieldName], 'description' => $science->description, 'duration_formula' => formula_parseToReadable($science->productionTimeFunction));
            $sciences[$science->scienceID] = array_merge($sciences[$science->scienceID], parseCost($science, $details));
            // show the building link ?!
            if (sizeof($queue)) {
                $sciences[$science->scienceID]['no_build_msg'] = _('Erforschung im Gange');
            } else {
                if ($sciences[$science->scienceID]['notenough'] && $maxLevel > $details[$science->dbFieldName]) {
                    $sciences[$science->scienceID]['no_build_msg'] = _('Zu wenig Rohstoffe');
                } else {
                    if ($maxLevel > $details[$science->dbFieldName]) {
                        $sciences[$science->scienceID]['build_link'] = true;
                    } else {
                        $sciences[$science->scienceID]['no_build_msg'] = _('Max. Stufe');
                    }
                }
            }
            /****************************************************************************************************
            *
            * Forschungen die noch nicht geforscht werden können.
            *
            ****************************************************************************************************/
        } else {
            if ($result !== FALSE && !$science->nodocumentation) {
                $sciencesUnqualified[$science->scienceID] = array('name' => $science->name, 'dbFieldName' => $science->dbFieldName, 'science_id' => $science->scienceID, 'modus' => SCIENCE_DETAIL, 'caveID' => $caveID, 'dependencies' => $result, 'description' => $science->description, 'duration_formula' => formula_parseToReadable($science->productionTimeFunction));
            }
        }
    }
    /****************************************************************************************************
    *
    * Irgendwas im Ausbau?
    *
    ****************************************************************************************************/
    if (sizeof($queue)) {
        $template->addVars(array('quene_show' => true, 'quene_name' => $GLOBALS['scienceTypeList'][$queue['scienceID']]->name, 'quene_nextlevel' => $details[$GLOBALS['scienceTypeList'][$queue['scienceID']]->dbFieldName] + 1, 'quene_finish' => time_formatDatetime($queue['end']), 'quene_modus' => SCIENCE_BUILDER, 'quene_event_id' => $queue['event_scienceID']));
    }
    /****************************************************************************************************
    *
    * Übergeben ans Template
    *
    ****************************************************************************************************/
    $template->addVars(array('cave_id' => $caveID, 'status_msg' => isset($messageID) ? $messageText[$messageID] : '', 'science' => $sciences, 'science_unqualified' => $sciencesUnqualified));
}
function unit_showUnitProperties($unitID, $caveData)
{
    global $buildingTypeList, $defenseSystemTypeList, $resourceTypeList, $scienceTypeList, $unitTypeList, $no_resource_flag, $config, $params;
    $no_resource_flag = 1;
    // first check whether that unit should be displayed...
    $unit = $unitTypeList[$unitID];
    if (!$unit || $unit->nodocumentation && !$caveData[$unit->dbFieldName] && rules_checkDependencies($unit, $caveData) !== TRUE) {
        $unit = current($unitTypeList);
    }
    $template = tmpl_open($params->SESSION->player->getTemplatePath() . 'unit_properties.ihtml');
    $resourceCost = array();
    foreach ($unit->resourceProductionCost as $key => $value) {
        if ($value != "" && $value != 0) {
            array_push($resourceCost, array('dbFieldName' => $resourceTypeList[$key]->dbFieldName, 'name' => $resourceTypeList[$key]->name, 'value' => ceil(eval('return ' . formula_parseToPHP($unit->resourceProductionCost[$key] . ';', '$details')))));
        }
    }
    $unitCost = array();
    foreach ($unit->unitProductionCost as $key => $value) {
        if ($value != "" && $value != 0) {
            array_push($unitCost, array('dbFieldName' => $unitTypeList[$key]->dbFieldName, 'name' => $unitTypeList[$key]->name, 'value' => ceil(eval('return ' . formula_parseToPHP($unit->unitProductionCost[$key] . ';', '$details')))));
        }
    }
    $buildingCost = array();
    foreach ($unit->buildingProductionCost as $key => $value) {
        if ($value != "" && $value != 0) {
            array_push($buildingCost, array('dbFieldName' => $buildingTypeList[$key]->dbFieldName, 'name' => $buildingTypeList[$key]->name, 'value' => ceil(eval('return ' . formula_parseToPHP($unit->buildingProductionCost[$key] . ';', '$details')))));
        }
    }
    $externalCost = array();
    foreach ($unit->externalProductionCost as $key => $value) {
        if ($value != "" && $value != 0) {
            array_push($externalCost, array('dbFieldName' => $defenseSystemTypeList[$key]->dbFieldName, 'name' => $defenseSystemTypeList[$key]->name, 'value' => ceil(eval('return ' . formula_parseToPHP($unit->externalProductionCost[$key] . ';', '$details')))));
        }
    }
    $dependencies = array();
    $buildingdep = array();
    foreach ($unit->buildingDepList as $key => $level) {
        if ($level) {
            array_push($buildingdep, array('name' => $buildingTypeList[$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    $defensesystemdep = array();
    foreach ($unit->defenseSystemDepList as $key => $level) {
        if ($level) {
            array_push($defensesystemdep, array('name' => $defenseSystemTypeList[$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    $resourcedep = array();
    foreach ($unit->resourceDepList as $key => $level) {
        if ($level) {
            array_push($resourcedep, array('name' => $resourceTypeList[$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    $sciencedep = array();
    foreach ($unit->scienceDepList as $key => $level) {
        if ($level) {
            array_push($sciencedep, array('name' => $scienceTypeList[$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    $unitdep = array();
    foreach ($unit->unitDepList as $key => $level) {
        if ($level) {
            array_push($unitdep, array('name' => $unitTypeList[$key]->name, 'level' => "&gt;= " . $level));
        }
    }
    foreach ($unit->maxBuildingDepList as $key => $level) {
        if ($level != -1) {
            array_push($buildingdep, array('name' => $buildingTypeList[$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($unit->maxDefenseSystemDepList as $key => $level) {
        if ($level != -1) {
            array_push($defensesystemdep, array('name' => $defenseSystemTypeList[$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($unit->maxResourceDepList as $key => $level) {
        if ($level != -1) {
            array_push($resourcedep, array('name' => $resourceTypeList[$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($unit->maxScienceDepList as $key => $level) {
        if ($level != -1) {
            array_push($sciencedep, array('name' => $scienceTypeList[$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    foreach ($unit->maxUnitDepList as $key => $level) {
        if ($level != -1) {
            array_push($unitdep, array('name' => $unitTypeList[$key]->name, 'level' => "&lt;= " . $level));
        }
    }
    if (sizeof($buildingdep)) {
        array_push($dependencies, array('name' => _('Erweiterungen'), 'DEP' => $buildingdep));
    }
    if (sizeof($defensesystemdep)) {
        array_push($dependencies, array('name' => _('Verteidigungsanlagen'), 'DEP' => $defensesystemdep));
    }
    if (sizeof($resourcedep)) {
        array_push($dependencies, array('name' => _('Rohstoffe'), 'DEP' => $resourcedep));
    }
    if (sizeof($sciencedep)) {
        array_push($dependencies, array('name' => _('Forschungen'), 'DEP' => $sciencedep));
    }
    if (sizeof($unitdep)) {
        array_push($dependencies, array('name' => _('Einheiten'), 'DEP' => $unitdep));
    }
    if ($unit->visible != 1) {
        tmpl_set($template, '/INVISIBLE', array('text' => _('unsichtbar')));
    }
    tmpl_set($template, '/', array('name' => $unit->name, 'dbFieldName' => $unit->dbFieldName, 'description' => $unit->description, 'RESSOURCECOST' => $resourceCost, 'UNITCOST' => $unitCost, 'BUILDINGCOST' => $buildingCost, 'EXTERNALCOST' => $externalCost, 'rangeAttack' => $unit->attackRange, 'arealAttack' => $unit->attackAreal, 'attackRate' => $unit->attackRate, 'rd_Resist' => $unit->rangedDamageResistance, 'defenseRate' => $unit->defenseRate, 'size' => $unit->hitPoints, 'spyValue' => $unit->spyValue, 'spyChance' => $unit->spyChance, 'spyQuality' => $unit->spyQuality, 'antiSpyChance' => $unit->antiSpyChance, 'fuelName' => $resourceTypeList[1]->dbFieldName, 'fuelFactor' => $unit->foodCost, 'wayCost' => $unit->wayCost, 'DEPGROUP' => $dependencies, 'duration' => time_formatDuration(eval('return ' . formula_parseToPHP($unit->productionTimeFunction . ";", '$details')) * BUILDING_TIME_BASE_FACTOR), 'rules_path' => RULES_PATH));
    return tmpl_parse($template);
}
Example #16
0
function defenseSystem_getDefenseSystemDetail($caveID, &$details)
{
    global $buildingTypeList, $defenseSystemTypeList, $resourceTypeList, $unitTypeList, $config, $params, $db;
    // messages
    $messageText = array(0 => "Der Arbeitsauftrag wurde erfolgreich gestoppt.", 1 => "Es konnte kein Arbeitsauftrag gestoppt werden.", 2 => "Der Auftrag konnte nicht erteilt werden. Es fehlen die " . "notwendigen Voraussetzungen.", 3 => "Der Auftrag wurde erteilt", 5 => "Das Geb&auml;ude wurde erfolgreich abgerissen", 6 => "Das Geb&auml;ude konnte nicht abgerissen werden", 7 => "Sie haben von der Sorte gar keine Geb&auml;ude");
    // proccess a cancel-order request
    if (isset($params->POST->eventID)) {
        $messageID = defenseSystem_processOrderCancel($params->POST->eventID, $caveID, $db);
    }
    // proccess a tore down or new order request
    if (isset($params->POST->breakDownConfirm)) {
        $messageID = defenseSystem_breakDown($params->POST->defenseSystemID, $caveID, $details, $db);
        $reload = 1;
    } else {
        if (isset($params->POST->defenseSystemID)) {
            check_timestamp($params->POST->tstamp);
            $messageID = defenseSystem_processOrder($params->POST->defenseSystemID, $caveID, $details, $db);
            $reload = 1;
        }
    }
    if ($reload) {
        // this isn't that elegant...
        $r = getCaveSecure($caveID, $params->SESSION->user['playerID']);
        if ($r->isEmpty()) {
            page_dberror();
        }
        $details = $r->nextRow();
    }
    $queue = defenseSystem_getDefenseSystemQueueForCave($params->SESSION->user['playerID'], $caveID);
    $template = @tmpl_open("./templates/" . $config->template_paths[$params->SESSION->user['template']] . "/fortification.ihtml");
    // Show a special message
    if (isset($messageID)) {
        tmpl_set($template, '/MESSAGE/message', $messageText[$messageID]);
    }
    // Show the defenseSystem table
    for ($i = 0; $i < sizeof($defenseSystemTypeList); $i++) {
        $notenough = FALSE;
        $defenseSystem = $defenseSystemTypeList[$i];
        // the current building
        $maxLevel = round(eval('return ' . formula_parseToPHP("{$defenseSystem->maxLevel};", '$details')));
        $result = rules_checkDependencies($defenseSystem, $details);
        // if all requirements are met but the maxLevel is 0,
        // treat it like a non-buildable
        if ($maxLevel <= 0 && $result === TRUE) {
            $result = $details[$defenseSystem->dbFieldName] ? 'Max. Stufe: 0' : FALSE;
        }
        if ($result === TRUE) {
            tmpl_iterate($template, 'DEFENSESYSTEM');
            tmpl_set($template, "DEFENSESYSTEM/alternate", $count++ % 2 ? "alternate" : "");
            tmpl_set($template, 'DEFENSESYSTEM', array('name' => $defenseSystem->name, 'dbFieldName' => $defenseSystem->dbFieldName, 'defenseSystemID' => $i, 'modus' => DEFENSESYSTEM_DETAIL, 'caveID' => $caveID, 'maxlevel' => $maxLevel, 'size' => "0" + $details[$defenseSystem->dbFieldName], 'time' => time_formatDuration(eval('return ' . formula_parseToPHP($defenseSystem->productionTimeFunction . ";", '$details')) * DEFENSESYSTEM_TIME_BASE_FACTOR)));
            // iterate ressourcecosts
            foreach ($defenseSystem->resourceProductionCost as $resourceID => $function) {
                $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details')));
                if ($cost) {
                    tmpl_iterate($template, "DEFENSESYSTEM/RESSOURCECOST");
                    if ($details[$resourceTypeList[$resourceID]->dbFieldName] >= $cost) {
                        tmpl_set($template, "DEFENSESYSTEM/RESSOURCECOST/ENOUGH/value", $cost);
                    } else {
                        tmpl_set($template, "DEFENSESYSTEM/RESSOURCECOST/LESS/value", $cost);
                        $notenough = TRUE;
                    }
                    tmpl_set($template, "DEFENSESYSTEM/RESSOURCECOST/dbFieldName", $resourceTypeList[$resourceID]->dbFieldName);
                    tmpl_set($template, "DEFENSESYSTEM/RESSOURCECOST/name", $resourceTypeList[$resourceID]->name);
                }
            }
            // iterate unitcosts
            foreach ($defenseSystem->unitProductionCost as $unitID => $function) {
                $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details')));
                if ($cost) {
                    tmpl_iterate($template, "DEFENSESYSTEM/UNITCOST");
                    if ($details[$unitTypeList[$unitID]->dbFieldName] >= $cost) {
                        tmpl_set($template, "DEFENSESYSTEM/UNITCOST/ENOUGH/value", $cost);
                    } else {
                        tmpl_set($template, "DEFENSESYSTEM/UNITCOST/LESS/value", $cost);
                        $notenough = TRUE;
                    }
                    tmpl_set($template, "DEFENSESYSTEM/UNITCOST/name", $unitTypeList[$unitID]->name);
                }
            }
            // iterate buildingcosts
            foreach ($defenseSystem->buildingProductionCost as $buildingID => $function) {
                $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details')));
                if ($cost) {
                    tmpl_iterate($template, "DEFENSESYSTEM/BUILDINGCOST");
                    if ($details[$buildingTypeList[$buildingID]->dbFieldName] >= $cost) {
                        tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/ENOUGH/value", $cost);
                    } else {
                        tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/LESS/value", $cost);
                        $notenough = TRUE;
                    }
                    tmpl_set($template, "DEFENSESYSTEM/BUILDINGCOST/name", $buildingTypeList[$buildingID]->name);
                }
            }
            // iterate externalcosts
            foreach ($defenseSystem->externalProductionCost as $externalID => $function) {
                $cost = ceil(eval('return ' . formula_parseToPHP($function . ';', '$details')));
                if ($cost) {
                    tmpl_iterate($template, "DEFENSESYSTEM/EXTERNALCOST");
                    if ($details[$defenseSystemTypeList[$externalID]->dbFieldName] >= $cost) {
                        tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/ENOUGH/value", $cost);
                    } else {
                        tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/LESS/value", $cost);
                        $notenough = TRUE;
                    }
                    tmpl_set($template, "DEFENSESYSTEM/EXTERNALCOST/name", $defenseSystemTypeList[$externalID]->name);
                }
            }
            // show the break down link
            if ($details[$defenseSystem->dbFieldName]) {
                tmpl_set($template, 'DEFENSESYSTEM/BREAK_DOWN_LINK', array('action' => DEFENSESYSTEM_BREAK_DOWN, 'defenseSystemID' => $defenseSystem->defenseSystemID, 'caveID' => $caveID));
            }
            // show the improvement link ?!
            if ($queue) {
                tmpl_set($template, 'DEFENSESYSTEM/BUILD_LINK_NO/message', "Ausbau im Gange");
            } else {
                if ($notenough && $maxLevel > $details[$defenseSystem->dbFieldName]) {
                    tmpl_set($template, 'DEFENSESYSTEM/BUILD_LINK_NO/message', "");
                } else {
                    if ($maxLevel > $details[$defenseSystem->dbFieldName]) {
                        tmpl_set($template, 'DEFENSESYSTEM/BUILD_LINK', array('action' => DEFENSESYSTEM, 'defenseSystemID' => $defenseSystem->defenseSystemID, 'caveID' => $caveID, 'tstamp' => "" . time()));
                    } else {
                        tmpl_set($template, '/DEFENSESYSTEM/BUILD_LINK_NO/message', "Max. Stufe");
                    }
                }
            }
        } else {
            if ($details[$defenseSystem->dbFieldName]) {
                tmpl_iterate($template, '/UNWANTEDDEFENSESYSTEMS/DEFENSESYSTEM');
                tmpl_set($template, '/UNWANTEDDEFENSESYSTEMS/DEFENSESYSTEM', array('alternate' => $count_unwanted++ % 2 ? "" : "alternate", 'modus' => DEFENSESYSTEM_DETAIL, 'defenseSystemID' => $i, 'size' => $details[$defenseSystem->dbFieldName], 'dbFieldName' => $defenseSystem->dbFieldName, 'name' => $defenseSystem->name, 'action' => DEFENSESYSTEM_BREAK_DOWN));
                if ($result !== FALSE) {
                    tmpl_set($template, '/UNWANTEDDEFENSESYSTEMS/DEFENSESYSTEM/dependencies', $result);
                }
            } else {
                if ($params->SESSION->user['show_unqualified'] && $result !== FALSE && !$defenseSystem->nodocumentation) {
                    tmpl_iterate($template, '/UNQUALIFIEDDEFENSESYSTEMS/DEFENSESYSTEM');
                    tmpl_set($template, '/UNQUALIFIEDDEFENSESYSTEMS/DEFENSESYSTEM', array('alternate' => $count_unqualified++ % 2 ? "" : "alternate", 'modus' => DEFENSESYSTEM_DETAIL, 'defenseSystemID' => $i, 'name' => $defenseSystem->name, 'dbFieldName' => $defenseSystem->dbFieldName, 'dependencies' => $result));
                }
            }
        }
    }
    // Show the building queue
    if ($queue) {
        $row = $queue->nextRow();
        tmpl_set($template, 'DEFENSESYSTEM_QUEUE', array('name' => $defenseSystemTypeList[$row['defenseSystemID']]->name, 'size' => $details[$defenseSystemTypeList[$row['defenseSystemID']]->dbFieldName] + 1, 'finish' => date("d.m.Y H:i:s", time_timestampToTime($row['event_end'])), 'action' => DEFENSESYSTEM, 'eventID' => $row['event_defenseSystemID'], 'caveID' => $caveID));
    }
    return tmpl_parse($template);
}