Example #1
0
function hero_clearHeroEffectsAndSkills($playerID)
{
    global $db;
    $hero = getHeroByPlayer($playerID);
    $fields = array();
    foreach ($GLOBALS['effectTypeList'] as $effect) {
        array_push($fields, $effect->dbFieldName . " = 0");
    }
    foreach ($GLOBALS['heroSkillTypeList'] as $skill) {
        array_push($fields, $skill['dbFieldName'] . " = 0");
    }
    $sql = $db->prepare("UPDATE " . HERO_TABLE . " SET " . implode(", ", $fields) . " WHERE playerID = :playerID");
    $sql->bindValue('playerID', $playerID, PDO::PARAM_INT);
    return $sql->execute();
}
function effect_getEffectWonderDetailContent($caveID, $caveData)
{
    global $db, $template;
    // open template
    $template->setFile('effectWonderDetail.tmpl');
    $wonders = wonder_getActiveWondersForCaveID($caveID);
    $wondersData = array();
    if ($wonders) {
        foreach ($wonders as $key => $data) {
            if ($GLOBALS['wonderTypeList'][$data['wonderID']]->groupID == 0 or $GLOBALS['wonderTypeList'][$data['wonderID']]->groupID == 3) {
                $wonderData = array('name' => $GLOBALS['wonderTypeList'][$data['wonderID']]->name, 'end' => $data['end_time']);
                $effectsData = array();
                // iterating through effectTypes
                foreach ($GLOBALS['effectTypeList'] as $effect) {
                    if ($value = $data[$effect->dbFieldName] + 0) {
                        $effectsData[] = array('name' => $effect->name, 'value' => ($value > 0 ? "+" : "") . $value);
                    }
                }
                // iterating through resourceTypes
                foreach ($GLOBALS['resourceTypeList'] as $resource) {
                    if ($value = $data[$resource->dbFieldName] + 0) {
                        $effectsData[] = array('name' => $resource->name, 'value' => ($value > 0 ? "+" : "") . $value);
                    }
                }
                // iterating through buildingTypes
                foreach ($GLOBALS['buildingTypeList'] as $building) {
                    if ($value = $data[$building->dbFieldName] + 0) {
                        $effectsData[] = array('name' => $building->name, 'value' => ($value > 0 ? "+" : "") . $value);
                    }
                }
                // iterating through scienceTypes
                foreach ($GLOBALS['scienceTypeList'] as $science) {
                    if ($value = $data[$science->dbFieldName] + 0) {
                        $effectsData[] = array('name' => $science->name, 'value' => ($value > 0 ? "+" : "") . $value);
                    }
                }
                // iterating through unitTypes
                foreach ($GLOBALS['unitTypeList'] as $unit) {
                    if ($value = $data[$unit->dbFieldName] + 0) {
                        $effectsData[] = array('name' => $unit->name, 'value' => ($value > 0 ? "+" : "") . $value);
                    }
                }
                // iterating through defenseSystemTypes
                foreach ($GLOBALS['defenseSystemTypeList'] as $defenseSystem) {
                    if ($value = $data[$defenseSystem->dbFieldName] + 0) {
                        $effectsData[] = array('name' => $defenseSystem->name, 'value' => ($value > 0 ? "+" : "") . $value);
                    }
                }
                $wonderData['EFFECT'] = $effectsData;
                $wondersData[] = $wonderData;
            }
        }
        // end iterating through active wonders
    }
    //hero effects
    $hero = getHeroByPlayer($_SESSION['player']->playerID);
    $heroData = array();
    if ($hero && $hero['caveID'] == $caveID) {
        foreach ($GLOBALS['effectTypeList'] as $effect) {
            $value = $hero[$effect->dbFieldName] + 0;
            if ($value) {
                $heroData[] = array('name' => $effect->name, 'value' => $value);
            }
        }
    }
    $effectsData = array();
    foreach ($GLOBALS['effectTypeList'] as $data) {
        $value = $caveData[$data->dbFieldName] + 0;
        if ($value) {
            $effectsData[] = array('name' => $data->name, 'value' => $value);
        }
    }
    // end iterating through effectTypes
    $data = array();
    $data['wonder'] = $wondersData;
    $data['effect'] = $effectsData;
    $data['hero'] = $heroData;
    $data['farmpoints'] = $_SESSION['player']->fame;
    $template->addVars($data);
}
Example #3
0
function unit_Movement($caveID, &$ownCave)
{
    global $db, $template;
    $safeForm = true;
    // get movements
    $ua_movements = Movement::getMovements();
    $details = $ownCave[$caveID];
    /***************************************************************************/
    /**                                                                       **/
    /** CHECK ARTEFACTS                                                       **/
    /**                                                                       **/
    /***************************************************************************/
    // artefact moving: get ID if any
    //
    // $params->POST->myartefacts will be
    //   NULL, if it is not set at all
    //   -1 when choosing no artefact to move
    //   0 if there was a real choice
    // default: Move No Artefact (this var holds the artefactID to move)
    $moveArtefact = 0;
    // this array shall contain the artefacts if any
    $myartefacts = array();
    // does the cave contain an artefact at least?
    if ($details['artefacts'] > 0) {
        // get artefacts
        $myartefacts = artefact_getArtefactsReadyForMovement($caveID);
        $moveArtefactID = Request::getVar('myartefacts', 0);
        // was an artefact chosen?
        if ($moveArtefactID > 0) {
            // now check, whether this artefactID belongs to this cave
            foreach ($myartefacts as $key => $value) {
                // if found, set it
                if ($moveArtefactID == $value['artefactID']) {
                    $moveArtefact = $moveArtefactID;
                    break;
                }
            }
        }
    }
    // now $moveArtefact should contain 0 for 'move no artefact'
    // or the artefactID of the artefact to be moved
    /***************************************************************************/
    /***************************************************************************/
    /***************************************************************************/
    /**
     * HERO MOVEMENT
     */
    $moveHero = 0;
    if ($details['hero'] != 0) {
        $hero = getHeroByPlayer($_SESSION['player']->playerID);
        if ($hero['isAlive'] != 1) {
            $details['hero'] = 0;
        }
    }
    if ($details['hero'] != 0 && Request::getVar('moveHero', false) == true) {
        $moveHero = $details['hero'];
    }
    /**
     * END HERO MOVEMENTS
     */
    // put user, its session and nogfx flag into session
    $_SESSION['player'] = Player::getPlayer($_SESSION['player']->playerID);
    // get Map Size
    $size = getMapSize();
    $dim_x = ($size['maxX'] - $size['minX'] + 1) / 2;
    $dim_y = ($size['maxY'] - $size['minY'] + 1) / 2;
    $foodPerCave = eval('return ' . formula_parseToPHP(GameConstants::MOVEMENT_COST . ';', '$details'));
    $minutesPerCave = eval('return ' . formula_parseToPHP(GameConstants::MOVEMENT_SPEED . ';', '$details'));
    $minutesPerCave *= MOVEMENT_TIME_BASE_FACTOR / 60;
    if (Request::getVar('moveit', false) && sizeof(Request::getVar('unit', array('' => '')))) {
        $targetXCoord = Request::getVar('targetXCoord', 0);
        $targetYCoord = Request::getVar('targetYCoord', 0);
        $targetCaveName = Request::getVar('targetCaveName', '');
        $targetCaveID = Request::getVar('targetCaveID', 0);
        $movementID = Request::getVar('movementID', 0);
        // check for scripters
        check_timestamp(Request::getVar('tstamp', 0));
        $validCaveName = false;
        // targetCaveID >>> coords
        if ($targetCaveID > 0) {
            $result = getCaveByID(intval($targetCaveID));
            if (sizeof($result) != 0) {
                $targetXCoord = $result['xCoord'];
                $targetYCoord = $result['yCoord'];
                $validCaveName = true;
            }
            // name >>> coords
        } else {
            if ($targetCaveName != "") {
                $result = getCaveByName($targetCaveName);
                if (sizeof($result) != 0) {
                    $targetXCoord = $result['xCoord'];
                    $targetYCoord = $result['yCoord'];
                    $validCaveName = true;
                }
            }
        }
        // get target player
        $result = getCaveByCoords(intval($targetXCoord), intval($targetYCoord));
        if (sizeof($result) != 0) {
            $targetPlayer = new Player(getPlayerByID($result['playerID']));
        }
        // Array von Nullwerten befreien
        $unit = array_filter(Request::getVar('unit', array('' => '')), "filterZeros");
        $unit = array_map("checkFormValues", $unit);
        $resource = array_map("checkFormValues", Request::getVar('rohstoff', array('' => '')));
        // Test, ob Einheitentragekapazität ausgelastet
        $overloaded = 0;
        foreach ($resource as $resKey => $aRes) {
            $capacity = 0;
            foreach ($unit as $unitKey => $aUnit) {
                if (isset($GLOBALS['unitTypeList'][$unitKey]->encumbranceList[$resKey])) {
                    $capacity += $aUnit * $GLOBALS['unitTypeList'][$unitKey]->encumbranceList[$resKey];
                }
            }
            if ($capacity < $aRes) {
                $overloaded = 1;
                break;
            }
        }
        $denymovement_nonenemy = false;
        $denymovement_targetwar = false;
        if ($movementID == 2) {
            // move units/resources
            if (strtoupper($targetPlayer->tribe) != strtoupper($_SESSION['player']->tribe)) {
                //may tade in own tribe
                $ownTribe = $_SESSION['player']->tribe;
                $targetTribe = $targetPlayer->tribe;
                $targetIsNonPlayer = $targetPlayer->playerID == 0;
                $ownTribeAtWar = tribe_isAtWar($ownTribe, TRUE);
                $targetTribeAtWar = tribe_isAtWar($targetTribe, TRUE);
                $TribesMayTrade = relation_areAllies($ownTribe, $targetTribe) || relation_areEnemys($ownTribe, $targetTribe) || $targetIsNonPlayer;
                $denymovement_nonenemy = $ownTribeAtWar && !$TribesMayTrade;
                $denymovement_targetwar = $targetTribeAtWar && !$TribesMayTrade;
            }
        }
        // check if army is small enough for hero
        $denymovement_hero = false;
        if ($moveHero && (Request::getVar('movementID', 0) == 3 || Request::getVar('movementID', 0) == 6)) {
            //calculate size of army
            $armySize = 0;
            foreach ($unit as $unitID => $value) {
                $armySize += $GLOBALS['unitTypeList'][$unitID]->hitPoints * $value;
            }
            if ($armySize > $hero['exp']) {
                $denymovement_hero = true;
            }
        }
        if (Request::getVar('movementID', 0) == 0) {
            $msg = array('type' => 'error', 'message' => _('Bitte Bewegungsart auswählen!'));
            $moveHero = 0;
        } else {
            if (!sizeof($unit)) {
                $msg = array('type' => 'error', 'message' => _('Es sind keine Einheiten ausgewählt!'));
                $moveHero = 0;
            } else {
                if (($targetXCoord == 0 || $targetYCoord == 0) && $targetCaveName == "") {
                    $msg = array('type' => 'error', 'message' => _('Es fehlt eine Zielkoordinate oder ein Zielhöhlenname!'));
                    $moveHero = 0;
                } else {
                    if (($targetXCoord == 0 || $targetYCoord == 0) && !($targetCaveName == "") && $validCaveName === FALSE) {
                        $msg = array('type' => 'error', 'message' => sprintf(_('Es gibt keine Höhle mit dem Namen "%s"!'), $targetCaveName));
                        $moveHero = 0;
                    } else {
                        if ($overloaded) {
                            $msg = array('type' => 'error', 'message' => _('Deine Krieger können die Menge an Ressourcen nicht tragen!!'));
                            $moveHero = 0;
                        } else {
                            if (beginner_isCaveProtectedByCoord($targetXCoord, $targetYCoord)) {
                                $msg = array('type' => 'error', 'message' => _('Die Zielhöhle steht unter Anfängerschutz.'));
                                $moveHero = 0;
                            } else {
                                if (beginner_isCaveProtectedByID($caveID)) {
                                    $msg = array('type' => 'error', 'message' => _('Ihre Höhle steht unter Anfängerschutz. Sie können den Schutz sofort unter dem Punkt <a href="?modus=cave_detail">Bericht über diese Höhle</a> beenden'));
                                    $moveHero = 0;
                                } else {
                                    if (Request::getVar('movementID', 0) == 6 && cave_isCaveSecureByCoord($targetXCoord, $targetYCoord)) {
                                        $msg = array('type' => 'error', 'message' => _('Sie können diese Höhle nicht übernehmen. Sie ist gegen übernahmen geschützt.'));
                                        $moveHero = 0;
                                    } else {
                                        if ($denymovement_nonenemy) {
                                            $msg = array('type' => 'error', 'message' => _('Sie können im Krieg keine Einheiten zu unbeteiligten Parteien verschieben!'));
                                        } else {
                                            if ($denymovement_targetwar) {
                                                $msg = array('type' => 'error', 'message' => _('Sie können keine Einheiten zu kriegführenden Stämmen verschieben, wenn Sie unbeteiligt sind.'));
                                                $moveHero = 0;
                                            } else {
                                                if ($denymovement_hero) {
                                                    $msg = array('type' => 'error', 'message' => _('Die Armee ist zu groß um vom Helden unterstützt zu werden!'));
                                                    $moveHero = 0;
                                                } else {
                                                    // Entfernung x Dauer pro Höhle x größter Geschwindigkeitsfaktor x Bewegungsfaktor
                                                    $duration = ceil(getDistanceByCoords($details['xCoord'], $details['yCoord'], $targetXCoord, $targetYCoord) * $minutesPerCave * getMaxSpeedFactor($unit) * $ua_movements[$movementID]->speedfactor);
                                                    $distance = ceil(getDistanceByCoords($details['xCoord'], $details['yCoord'], $targetXCoord, $targetYCoord));
                                                    $tmpdist = 0;
                                                    $i = 0;
                                                    if ($distance > 15) {
                                                        $distance = $distance - 15;
                                                        $tmpdist = 15;
                                                        if (floor($distance / 5) < 11) {
                                                            $tmpdist += $distance % 5 * (1 - 0.1 * floor($distance / 5));
                                                        }
                                                        for ($i = 1; $i <= floor($distance / 5) && $i < 11; $i++) {
                                                            $tmpdist += 5 * (1 - 0.1 * ($i - 1));
                                                        }
                                                    } else {
                                                        $tmpdist = $distance;
                                                    }
                                                    // Dauer x Rationen x Größe einer Ration x Bewegungsfaktor
                                                    $reqFood = ceil($tmpdist * $minutesPerCave * getMaxSpeedFactor($unit) * $ua_movements[$movementID]->speedfactor * calcRequiredFood($unit) * $foodPerCave * $ua_movements[$movementID]->foodfactor);
                                                    if ($details[$GLOBALS['resourceTypeList'][GameConstants::FUEL_RESOURCE_ID]->dbFieldName] < $reqFood) {
                                                        $msg = array('type' => 'error', 'message' => _('Nicht genug Nahrung zum Ernähren der Krieger auf ihrem langen Marsch vorhanden!'));
                                                    } else {
                                                        $msgID = setMovementEvent($caveID, $details, $targetXCoord, $targetYCoord, $unit, $resource, $movementID, $reqFood, $duration, $moveArtefact, $moveHero, $minutesPerCave * $ua_movements[$movementID]->speedfactor);
                                                        switch ($msgID) {
                                                            case 0:
                                                                $msg = array('type' => 'success', 'message' => sprintf(_('Die Krieger wurden losgeschickt und haben %d Nahrung mitgenommen!'), $reqFood));
                                                                $safeForm = false;
                                                                break;
                                                            case 1:
                                                                $msg = array('type' => 'error', 'message' => _('In diesen Koordinaten liegt keine Höhle!'));
                                                                $moveHero = 0;
                                                                break;
                                                            case 2:
                                                                $msg = array('type' => 'error', 'message' => _('Für diese Bewegung sind nicht genügend Einheiten/Rohstoffe verfügbar!'));
                                                                $moveHero = 0;
                                                                break;
                                                            case 3:
                                                                $msg = array('type' => 'error', 'message' => _('Schwerer Fehler: Bitte Admin kontaktieren!'));
                                                                $moveHero = 0;
                                                                break;
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    } else {
        if (Request::isPost('action') && Request::getVar('action', '') == 'cancel' && ($eventID = Request::getVar('eventID', 0))) {
            $msgID = reverseMovementEvent($caveID, $eventID);
            switch ($msgID) {
                case 0:
                    $msg = array('type' => 'success', 'message' => _('Die Einheiten kehren zurück!'));
                    break;
                case 1:
                    $msg = array('type' => 'error', 'message' => _('Fehler bei der Rückkehr!'));
                    break;
            }
        } else {
            if (Request::getVar('moveit', false) && !sizeof(Request::getVar('unit', array('' => '')))) {
                $msg = array('type' => 'error', 'message' => _('Einheiten mitnehmen?'));
            }
        }
    }
    // refresh this cave
    $temp = getCaveSecure($caveID, $_SESSION['player']->playerID);
    $ownCave[$caveID] = $details = $temp;
    // make sure that bagged artefacts are not shown again
    if ($moveArtefact != 0) {
        $myartefacts = artefact_getArtefactsReadyForMovement($caveID);
    }
    // make sure that moved hero is not shown again
    if ($moveHero != 0) {
        $details['hero'] = 0;
    }
    // //////////////////////////////////////////////////////////////
    // Create the page
    // //////////////////////////////////////////////////////////////
    // open template
    $template->setFile('unitMovement.tmpl');
    $template->addVars(array('currentX' => $details['xCoord'], 'currentY' => $details['yCoord'], 'dim_x' => $dim_x, 'dim_y' => $dim_y, 'speed' => $minutesPerCave, 'fuel_id' => GameConstants::FUEL_RESOURCE_ID, 'fuel_name' => $GLOBALS['resourceTypeList'][GameConstants::FUEL_RESOURCE_ID]->name, 'movement_cost_constant' => $foodPerCave, 'resource_types' => GameConstants::MAX_RESOURCE, 'status_msg' => isset($msg) ? $msg : ''));
    // movements
    $selectable_movements = array();
    foreach ($ua_movements as $value) {
        if ($value->playerMayChoose) {
            $selectable_movements[] = get_object_vars($value);
        }
    }
    $template->addVar('selectable_movements', $selectable_movements);
    // resources
    $resources = array();
    foreach ($GLOBALS['resourceTypeList'] as $resourceID => $dummy) {
        if (!$GLOBALS['resourceTypeList'][$resourceID]->nodocumentation) {
            $resources[] = array('resource_id' => $GLOBALS['resourceTypeList'][$resourceID]->resourceID, 'name' => $GLOBALS['resourceTypeList'][$resourceID]->name, 'current_amount' => "0" + $details[$GLOBALS['resourceTypeList'][$resourceID]->dbFieldName], 'dbFieldName' => $GLOBALS['resourceTypeList'][$resourceID]->dbFieldName, 'value' => $safeForm && isset($resource[$resourceID]) && $resource[$resourceID] > 0 ? $resource[$resourceID] : '');
        }
    }
    $template->addVar('resource', $resources);
    // units table
    $unitprops = array();
    $units = array();
    foreach ($GLOBALS['unitTypeList'] as $unitID => $dummy) {
        // if no units of this type, next type
        if (!$details[$GLOBALS['unitTypeList'][$unitID]->dbFieldName]) {
            continue;
        }
        $temp = array();
        $encumbrance = array();
        foreach ($GLOBALS['resourceTypeList'] as $resourceID => $dummy) {
            if (!$GLOBALS['resourceTypeList'][$resourceID]->nodocumentation) {
                $encumbrance[$resourceID] = array('resourceID' => $resourceID, 'load' => "0" + (isset($GLOBALS['unitTypeList'][$unitID]->encumbranceList[$resourceID]) ? $GLOBALS['unitTypeList'][$unitID]->encumbranceList[$resourceID] : 0));
                $temp[] = "0" + (isset($GLOBALS['unitTypeList'][$unitID]->encumbranceList[$resourceID]) ? $GLOBALS['unitTypeList'][$unitID]->encumbranceList[$resourceID] : 0);
            }
        }
        $units[] = array('name' => $GLOBALS['unitTypeList'][$unitID]->name, 'unit_id' => $unitID, 'food_cost' => $GLOBALS['unitTypeList'][$unitID]->foodCost, 'resource_load' => implode(",", $temp), 'speed_factor' => $GLOBALS['unitTypeList'][$unitID]->wayCost, 'max_unit_count' => $details[$GLOBALS['unitTypeList'][$unitID]->dbFieldName], 'encumbrance' => $encumbrance, 'hitPoints' => $GLOBALS['unitTypeList'][$unitID]->hitPoints, 'value' => $safeForm && isset($unit[$unitID]) ? $unit[$unitID] : '');
    }
    $template->addVar('unit_list', $units);
    // weitergereichte Koordinaten
    if (!Request::getVar('movementID', 0) || $safeForm) {
        if (Request::getVar('targetCaveID', 0) > 0) {
            $caveData = getCaveByID(Request::getVar('targetCaveID', 0));
            $template->addVars(array('target_x_coord' => $caveData['xCoord'], 'target_y_coord' => $caveData['yCoord'], 'target_cave_name' => $caveData['name']));
        } else {
            $template->addVars(array('target_x_coord' => Request::getVar('targetXCoord', ''), 'target_y_coord' => Request::getVar('targetYCoord', ''), 'target_cave_name' => Request::getVar('targetCaveName', '')));
        }
    }
    // weitere Paramter
    $template->addVar('params', array(array('name' => 'modus', 'value' => UNIT_MOVEMENT), array('name' => 'moveit', 'value' => 'true'), array('name' => 'trigger', 'value' => 'self'), array('name' => 'tstamp', 'value' => "" . time())));
    $movements = digest_getMovements(array($caveID => $details), array(), true);
    $ownMovement = $oppMovement = array();
    foreach ($movements as $move) {
        if ($move['isOwnMovement']) {
            $ownMovement[] = $move;
        } else {
            $oppMovement[] = $move;
        }
    }
    $template->addVars(array('ownMovement' => $ownMovement, 'oppMovement' => $oppMovement));
    // artefakte
    if (sizeof($myartefacts) != 0) {
        //tmpl_set($template, '/ARTEFACTS/ARTEFACT', $myartefacts);
        $template->addVar('artefact', $myartefacts);
    }
    // hero
    if ($details['hero'] != 0) {
        $template->addVar('hero', $hero);
    }
    // Module "CaveBookmarks" Integration
    // FIXME should know whether the module is installed
    if (TRUE) {
        // get model
        $cb_model = new CaveBookmarks_Model();
        // get bookmarks
        $bookmarks = $cb_model->getCaveBookmarks(true);
        // set bookmarks
        if (sizeof($bookmarks)) {
            $template->addVar('bookmarks_cave', $bookmarks);
        }
    }
}
Example #4
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 #5
0
/** This function returns basic hero details
 *
 *  @param caveID       the current caveID
 *  @param meineHöhlen  all the data of all your caves
 */
function hero_getHeroDetail($caveID, $meineHoehlen)
{
    // get configuration settings
    global $config;
    // get parameters from the page request
    global $params;
    // get db link
    global $db;
    global $resourceTypeList;
    // hide the top resource bar
    global $no_resource_flag;
    $no_resource_flag = true;
    // get current playerID by user
    $playerID = $params->SESSION->player->playerID;
    // get data from Helden-table by current user-playerID
    $result = getHeroByPlayer($playerID);
    // variables for bonuspoints
    $bonuspoints = $result['bonusPunkte'];
    // for bodypower
    $bodypower = $result['koerperKraft'];
    // and if hero is in tournament
    $hero_in_turnier = isHeroInTurnier($playerID);
    $hero_by_monster = isHeroInDuell($playerID);
    // set messages
    $boni_message = "Sie k&ouml;nnen " . $bonuspoints . " Bonuspunkte verteilen.";
    $flucht_message = "Setze die Fluchtgrenze";
    $turnier_msng = "Schicke Helden zu einem der zur Zeit angebotenen Turniere";
    $monster_msng = "Schicke Helden zu einem Monsterduell ...";
    // Fluchtgrenze-parameter abfangen
    if (isset($params->POST->set_grenze)) {
        $flucht = $params->POST->flucht;
        if ($flucht < 0) {
            $flucht_message = "Fluchtgrenze kann nicht negativ sein, versuchen Sie sie neu zu setzen";
        } else {
            if ($flucht > $bodypower) {
                $flucht_message = "F&uuml;r die Fluchtgrenze sind nur Werte 0..K erlaubt. " . "F&uuml;r Ihren Helden gilt K == " . $bodypower;
            } else {
                if (setRunAwayPoint($playerID, $flucht) == 1) {
                    $result['fluchtGrenze'] = $flucht;
                }
            }
        }
    }
    // Held zum Monsterduell parameter abfangen
    if (isset($params->POST->monster)) {
        $xCoord = $params->POST->xCoord;
        $yCoord = $params->POST->yCoord;
        $cName = $params->POST->cName;
        $cNameExists = false;
        if (empty($xCoord) || empty($yCoord) and !empty($cName)) {
            $cave = getCaveByName($cName);
            if (sizeof($cave) != 0) {
                $xCoord = $cave['xCoord'];
                $yCoord = $cave['yCoord'];
                $cNameExists = true;
            }
        }
        if (empty($xCoord) || empty($yCoord) and empty($cName)) {
            $monster_msng = "Sie sollten die Koordinaten oder Name der Zielh&ouml;hle setzen," . " denn erst dann geht Held zum Monsterkampf ...";
        } else {
            if (empty($xCoord) || empty($yCoord) and !empty($cName) and !$cNameExists) {
                $monster_msng = "Es existiert keine H&ouml;hle mit dem Namen '" . $cName . "' ! <br>" . "Gebe richtigen Namen der H&ouml;hle oder Koordinaten an und schicke " . "den Helden zum Monsterduell ...";
            } else {
                if ($xCoord <= 0 || $yCoord <= 0) {
                    $monster_msng = "Die Koordinaten der H&ouml;hlen in UGA-AGGA-Land k&ouml;nnen nicht negativ " . "und Null sein :-)<br>Setze richtige (positive :) Koordinaten " . "und schicke Helden zum Monsterduell ...";
                } else {
                    $monster_cave = letHeroFight($playerID, $xCoord, $yCoord);
                    if ($monster_cave == -2) {
                        $monster_msng = "Held konnet nicht (wieso auch immer) zu einem Monsterduell geschickt werden" . "<br>Versuche erneut die Zielkoordinaten einzugeben und" . "schicke den Helden zum Monsterduell ...";
                    } else {
                        if ($monster_cave == -1) {
                            $monster_msng = "Es existiert keine H&ouml;hle mit Koordinaten " . $xCoord . "/" . $yCoord . "<br>Setze existierende Koordinaten und schicke Helden zum Monsterduell ...";
                        } else {
                            if ($monster_cave == 0) {
                                $monster_msng = "Held ist bei einem Monsterduell";
                                $hero_by_monster = true;
                            }
                        }
                    }
                }
            }
        }
        $choose_turnier = true;
    }
    // Held zum Turnier parameter abfangen
    if (isset($params->POST->turnier)) {
        $turnierID = $params->POST->turniere;
        $meingebot = 0;
        if (isset($params->POST->meinGebot)) {
            $meingebot = $params->POST->meinGebot;
        }
        if ($turnierID < 0) {
            $turnier_msng = "W&auml;hle zuerst <b>einen Turnier</b> und gebe danach noch das Gebot ein";
        } else {
            if ($meingebot < 0) {
                $turnier_msng = "Das Gebot kann nicht negativ sein. W&auml;hle ein Turnier und gebe " . "das richtige Gebot ein";
            } else {
                if ($meingebot == 0) {
                    $turnier_msng = "Sie sollten schon was f&uuml;r die Teilnahme bieten";
                } else {
                    $play = letHeroPlay($caveID, $playerID, $turnierID, $meingebot);
                    if ($play == -1) {
                        $turnier_msng = "Held konnte nicht zu dem Turnier geschickt werden";
                    } else {
                        if ($play == -2) {
                            $turnier_msng = "Sie haben nicht gen&uuml;gend Rohstoffe um f&uuml;r diesen Turnier zu bieten";
                        } else {
                            if ($play == 1) {
                                $turnier_msng = "Held ist beim Turnier";
                                $hero_in_turnier = true;
                            }
                        }
                    }
                }
            }
        }
        $choose_turnier = true;
    }
    // Held zurueck vom Turnier
    if (isset($params->POST->abmelden)) {
        $hero_in_turnier = letHeroGoHome($playerID);
        if (!$hero_in_turnier) {
            $turnier_msng = "<b>Ihr Held ist wieder da</b><br>Schicke Helden zu einem der zur Zeit angebotenen Turniere";
        }
        $choose_turnier = true;
    }
    // Held zurueck vom Monsterduell
    if (isset($params->POST->umkehren)) {
        $hero_by_monster = letHeroTurnBack($playerID);
        if (!$hero_in_turnier) {
            $monster_msng = "<b>Ihr Held ist wieder da</b><br>Schicke Helden zu einem Monsterduell";
        }
        $choose_turnier = true;
    }
    // bonus-parameter abfangen, boni vergeben
    if (isset($params->POST->set_boni)) {
        $a_bonus = 0 + $params->POST->A_bonus;
        $v_bonus = 0 + $params->POST->V_bonus;
        $m_bonus = 0 + $params->POST->M_bonus;
        $allSetPoints = $a_bonus + $v_bonus + $m_bonus;
        if ($a_bonus < 0 || $v_bonus < 0 || $m_bonus < 0) {
            $boni_message = "Negative Werte sind nicht erlaubt. Sie k&ouml;nnen immer noch " . $bonuspoints . " Bonuspunkte verteilen";
        } else {
            if ($bonuspoints - $allSetPoints < 0) {
                $boni_message = "Zuviele Bonuspunkte verteilt. Sie k&ouml;nnen nur " . $bonuspoints . " Bonuspunkte verteilen";
            } else {
                $boni = array('angriffsWert' => intval($a_bonus), 'verteidigungsWert' => intval($v_bonus), 'mentalKraft' => intval($m_bonus));
                if (setBonusPoints($playerID, $boni, $allSetPoints) == 1) {
                    $result['bonusPunkte'] = $bonuspoints = $bonuspoints - $allSetPoints;
                    $result['angriffsWert'] = $result['angriffsWert'] + $a_bonus;
                    $result['verteidigungsWert'] = $result['verteidigungsWert'] + $v_bonus;
                    $result['mentalKraft'] = $result['mentalKraft'] + $m_bonus;
                    $boni_message = "Sie k&ouml;nnen " . $bonuspoints . " Bonuspunkte verteilen.";
                }
            }
        }
    }
    /* **** CREATE HERO PAGE ***** *********************************************/
    // get the template
    $template = tmpl_open($params->SESSION->player->getTemplatePath() . 'hero_detail.ihtml');
    // user has a hero
    if ($result) {
        // and hero wants to go to tournament
        if (isset($params->POST->choose_turnier)) {
            $choose_turnier = true;
        }
        // turnier
        if ($choose_turnier) {
            $no_resource_flag = false;
            if ($hero_in_turnier) {
                if (isset($params->POST->abmelden)) {
                    $turnier_msng = "Zur&uuml;ckholen hat nicht geklappt (wieso auch immer)<br><b>Held ist beim Turnier</b>";
                } else {
                    $turnier_msng = "<b>Held ist beim Turnier</b>";
                }
                tmpl_set($template, 'HERO/MESSAGE/message', $turnier_msng);
                tmpl_set($template, "HERO/ZUMTURNIER/BUTTON/button_value", "Held vom Turnier abmelden " . "(Ihr Gebot wird dabei verlorengehen)");
                $hidden = array(array('name' => 'modus', 'value' => HERO_DETAIL), array('name' => 'abmelden', 'value' => 'true'));
                tmpl_set($template, 'HERO/ZUMTURNIER/BUTTON/PARAMS', $hidden);
            } else {
                if ($hero_by_monster) {
                    if (isset($params->POST->umkehren)) {
                        $turnier_msng = "Held umkehren hat nicht geklappt (wieso auch immer)<br><b>Held ist im Monsterduell</b>";
                    } else {
                        $turnier_msng = "<b>Held ist in einem Monsterduell</b>";
                    }
                    tmpl_set($template, 'HERO/MESSAGE/message', $turnier_msng);
                    tmpl_set($template, "HERO/ZUMTURNIER/BUTTON/button_value", "Held vom Monsterduell zur&uuml;ckholen");
                    $hidden = array(array('name' => 'modus', 'value' => HERO_DETAIL), array('name' => 'umkehren', 'value' => 'true'));
                    tmpl_set($template, 'HERO/ZUMTURNIER/BUTTON/PARAMS', $hidden);
                } else {
                    $turniere = array();
                    $turniere = getAllTurniers();
                    if ($turniere) {
                        tmpl_set($template, "HERO/ZUMTURNIER/message", $turnier_msng);
                        tmpl_set($template, "HERO/ZUMTURNIER/SELECTION/SELECT/id", "-1");
                        tmpl_set($template, "HERO/ZUMTURNIER/SELECTION/SELECT/selected", "selected");
                        tmpl_set($template, "HERO/ZUMTURNIER/SELECTION/SELECT/turnier_name", "- - - W&auml;hle einen Turnier - - -");
                        foreach ($turniere as $value) {
                            tmpl_iterate($template, "HERO/ZUMTURNIER/SELECTION/SELECT");
                            tmpl_set($template, "HERO/ZUMTURNIER/SELECTION/SELECT/id", $value['turnierID']);
                            tmpl_set($template, "HERO/ZUMTURNIER/SELECTION/SELECT/turnier_name", "Turnier \"" . $value['turnierName'] . "\" ( mit Gebot in " . $resourceTypeList[$value['art']]->name . getStartPointForTournament($value['turnierID']) . " )");
                        }
                        tmpl_set($template, "HERO/ZUMTURNIER/SELECTION/value", 0);
                        tmpl_set($template, "HERO/ZUMTURNIER/BUTTON/button_value", "Held zum Turnier");
                        $hidden = array(array('name' => 'modus', 'value' => HERO_DETAIL), array('name' => 'turnier', 'value' => 'true'));
                        tmpl_set($template, 'HERO/ZUMTURNIER/BUTTON/PARAMS', $hidden);
                    } else {
                        tmpl_set($template, "HERO/ZUMTURNIER/message", "Es werden zur Zeit keine Turniere angeboten ...");
                    }
                    // Monstern
                    tmpl_set($template, "HERO/MONSTER/message", $monster_msng);
                    tmpl_set($template, "HERO/MONSTER/MONSTERFIELD/button_value", "Los geht's");
                    $hidden = array(array('name' => 'modus', 'value' => HERO_DETAIL), array('name' => 'monster', 'value' => 'true'));
                    tmpl_set($template, 'HERO/MONSTER/MONSTERFIELD/PARAMS', $hidden);
                }
            }
        } else {
            // set names for columns
            $detail_for_hero = array('level' => "Lvl : ", 'erfahrungsWert' => "Exp : ", 'angriffsWert' => "<b>A :</b> ", 'verteidigungsWert' => "<b>V :</b> ", 'mentalKraft' => "<b>M :</b> ", 'koerperKraft' => "<b>K :</b> ");
            // set hero detail
            tmpl_set($template, "HERO/HERO_DETAIL/name", "<u><b>" . $result['name'] . " :</b></u>");
            foreach ($detail_for_hero as $key => $value) {
                tmpl_iterate($template, "HERO/HERO_DETAIL/DETAIL");
                tmpl_set($template, "HERO/HERO_DETAIL/DETAIL/name", $detail_for_hero[$key]);
                tmpl_set($template, "HERO/HERO_DETAIL/DETAIL/value", $result[$key] . ",");
            }
            // if hero was lazy
            if ($result['leichteSiege'] > 9) {
                tmpl_set($template, "HERO/MESSAGE/message", "<i>Ihr Held gewinnt keine Erfahrung.</i>");
            } else {
                if ($result['leichteSiege'] >= 3) {
                    tmpl_set($template, "HERO/MESSAGE/message", "<i>Ihr Held gewinnt nur die H&auml;lfte der Erfahrung.</i>");
                }
            }
            // wenn bonuspunkte vorhanden
            if ($bonuspoints > 0) {
                tmpl_set($template, "HERO/BONUSPOINTS/message", $boni_message);
                $cols_for_bonus = array('angriffsWert' => "A", 'verteidigungsWert' => "V", 'mentalKraft' => "M");
                foreach ($cols_for_bonus as $key => $value) {
                    tmpl_iterate($template, "HERO/BONUSPOINTS/VERTEILE");
                    tmpl_set($template, "HERO/BONUSPOINTS/VERTEILE/vor_input", "<b>" . $cols_for_bonus[$key] . "</b> : ");
                    tmpl_set($template, "HERO/BONUSPOINTS/VERTEILE/name", $cols_for_bonus[$key] . "_bonus");
                }
                $hidden = array(array('name' => 'modus', 'value' => HERO_DETAIL), array('name' => 'set_boni', 'value' => 'true'));
                tmpl_set($template, 'HERO/BONUSPOINTS/PARAMS', $hidden);
            }
            // fluchtgrenze
            tmpl_set($template, "HERO/FLUCHT/message", $flucht_message);
            tmpl_set($template, 'HERO/FLUCHT/value', $result['fluchtGrenze']);
            $hidden = array(array('name' => 'modus', 'value' => HERO_DETAIL), array('name' => 'set_grenze', 'value' => 'true'));
            tmpl_set($template, 'HERO/FLUCHT/PARAMS', $hidden);
            // set names for rows for treasure
            $body_array = array('schatzKopf' => "Kopf", 'schatzHals' => "Hals", 'schatzRing' => "Finger", 'schatzRuestung' => "R&uuml;stung", 'schatzSchild' => "Schild", 'schatzWaffe' => "Waffe");
            $schaetze_attribute = array();
            // Set all artifacts
            foreach ($body_array as $key => $value) {
                tmpl_iterate($template, "HERO/SCHAETZE/SCHATZ");
                tmpl_set($template, "HERO/SCHAETZE/SCHATZ/body_part", $body_array[$key]);
                // if user has this type of artifact
                if ($result[$key]) {
                    // get artifact detail
                    $schaetze = getSchatzBySchatzID($result[$key]);
                    // set it into template
                    tmpl_set($template, "HERO/SCHAETZE/SCHATZ/artefact", $schaetze['name']);
                    tmpl_set($template, "HERO/SCHAETZE/SCHATZ/artefact_value", " (" . $schaetze['eigenschaften'] . ")");
                    // get all artifact attributes one by one
                    $schaetze_attribute = array_merge($schaetze_attribute, explode(" ", $schaetze['eigenschaften']));
                } else {
                    tmpl_set($template, "HERO/SCHAETZE/SCHATZ/artefact", "kein Schatz angelegt");
                }
            }
            // turnierbutton
            if ($hero_in_turnier) {
                tmpl_set($template, 'HERO/TURNIERBUTTON/MESSAGE/message', "<b>Held ist in einem Turnier</b>");
            }
            if ($hero_by_monster) {
                tmpl_set($template, 'HERO/TURNIERBUTTON/MESSAGE/message', "<b>Held ist in einem Monsterduell</b>");
            }
            $hidden = array(array('name' => 'modus', 'value' => HERO_DETAIL), array('name' => 'choose_turnier', 'value' => 'true'));
            tmpl_set($template, 'HERO/TURNIERBUTTON/PARAMS', $hidden);
        }
    } else {
        tmpl_set($template, "HERO/MESSAGE/message", "Sie haben keinen Helden.");
        // buy new hero hier (function is not exist at moment, only view)
        $hidden = array(array('name' => 'modus', 'value' => HERO_DETAIL), array('name' => 'new_hero', 'value' => 'true'));
        tmpl_set($template, 'HERO/BUY/PARAMS', $hidden);
    }
    // return the parsed template
    return tmpl_parse($template);
}