function tribe_getContent($caveID, $tribeID) { global $db, $template; if (!$tribeID) { $template->throwError('Der Stamm wurde nicht gefunden.'); return; } // open template $template->setFile('tribeDetail.tmpl'); $template->setShowResource(false); $tribe = Tribe::getByID($tribeID); if ($tribe == null) { $template->throwError('Der Stamm wurde nicht gefunden.'); return; } // parse tribe message $parser = new parser(); $tribe['description'] = $parser->p($tribe['description']); $ranking = Tribe::getRanking($tribeID); $tribe['rank'] = $ranking; // leader if ($tribe['leaderID'] != 0) { $leader = Player::getPlayer($tribe['leaderID']); $tribe['leader_name'] = $leader->name; } $template->addVar('tribe_details', $tribe); // history $template->addVar('tribe_history', Tribe::getHistory($tribeID)); // player list $template->addVar('tribe_player_list', Tribe::getPlayerList($tribeID, true, true)); // relations $relations = TribeRelation::getRelations($tribeID); $relationsData = array(); if (isset($relations['own'])) { foreach ($relations['own'] as $target => $relationData) { $relationsData[$target] = array('tribe' => $relationData['targetTag'], 'tribeID_target' => $relationData['tribeID_target'], 'relation_to' => $GLOBALS['relationList'][$relationData['relationType']]['name'], 'relation_from' => isset($relations['other'][$target]) && $relations['other'][$target] ? $GLOBALS['relationList'][$relations['other'][$target]['relationType']]['name'] : $GLOBALS['relationList'][0]['name']); } } if (isset($relations['other'])) { foreach ($relations['other'] as $target => $relationData) { // already printed out this relation if (isset($relationsData[$target])) { continue; } $relationsData[$target] = array('tribe' => $relationData['targetTag'], 'tribeID_target' => $relationData['tribeID_target'], 'relation_to' => $GLOBALS['relationList'][0]['name'], 'relation_from' => $GLOBALS['relationList'][$relationData['relationType']]['name']); } } $template->addVar('relations_data', $relationsData); }
echo "Error recalcing leader for Tribe {$data['tag']}\n"; return -1; } if ($r > 0) { echo "Tribe {$data['tag']} has a new leader: {$r}\n"; } } // ---------------------------------------------------------------------------- // Step 3 Check Relations echo "-- Check Relations --\n"; $sql = $db->prepare("SELECT *\n FROM " . TRIBE_ELECTION_TABLE . "\n WHERE relationType = :iwr"); $sql->bindValue('iwr', ID_WARALLY_RELATION, PDO::PARAM_INT); if (!$sql->execute()) { echo "Error checking for war-allies tribes.\n"; return -2; } while ($row = $sql->fetch()) { if (!TribeRelation::hasSameEnemy($row['tribeID'], $row['tribeID_target'], true, true)) { echo "Tear down war-ally : " . $row['tribeID'] . " => " . $row['tribeID_target'] . " "; $update = $db->prepare("UPDATE " . RELATION_TABLE . "\n SET relationType = :iafwr\n WHERE tribeID = :tribeID\n AND tribeID_target = :tribeID_target"); $update->bindValue('iafwr', ID_AFTER_WARALLY_RELATION, PDO::PARAM_INT); $update->bindValue('tribeID', $row['tribe'], PDO::PARAM_INT); $update->bindValue('tribeID_target', $row['tribeID_target'], PDO::PARAM_INT); if ($update->execute()) { echo "Success\n"; } else { echo "FAILED\n"; } } } echo "Tribes end " . date("r") . " -----------------------\n\n";
public static function processWonder($wonderID, $casterTribeData, $targetTribeName) { global $db; if ($wonderID < 0 || empty($casterTribeData) || empty($targetTribeName)) { return -30; } // check if wonder exists and is TribeWonder if (isset($GLOBALS['wonderTypeList'][$wonderID]) || !$wonder->isTribeWonder) { $wonder = $GLOBALS['wonderTypeList'][$wonderID]; } else { return -33; } // check if tribes exist $targetTribeData = Tribe::getID($targetTribeName, true); if (empty($targetTribeData)) { return -15; } $casterTribeID = $casterTribeData['tribeID']; $targetTribeID = $targetTribeData['tribeID']; // check if tribe is valid if (!$targetTribeData['valid']) { return -34; } // check if caster tribe ist valid if (!$casterTribeData['valid']) { return -35; } $casterTribeRelations = TribeRelation::getRelations($casterTribeID); $targetTribeRelations = TribeRelation::getRelations($targetTribeID); $wonderPossible = false; foreach ($wonder->targetsPossible as $targetsPossible) { // check target if ($targetsPossible['target'] == 'own' && $casterTribeID !== $targetTribeID) { continue; } if ($targetsPossible['target'] == 'other' && $casterTribeID === $targetTribeID) { continue; } // check relation $check = self::checkRelations($targetsPossible['relation'], $targetTribeID, $casterTribeID, $casterTribeRelations, $targetTribeRelations); if ($check == true) { $wonderPossible = true; break; } } if ($wonderPossible == false) { return -37; } // take wonder Costs from TribeStorage $memberNumber = Tribe::getMemberCount($casterTribeID); if (!processProductionCost($wonder, 0, NULL, $memberNumber, true)) { return -33; } // does the wonder fail? if ((double) rand() / (double) getRandMax() > $wonder->chance) { return 11; // wonder did fail } // schedule the wonder's impacts // create a random factor between -0.3 and +0.3 $delayRandFactor = rand(0, getrandmax()) / getrandmax() * 0.6 - 0.3; // now calculate the delayDelta depending on the first impact's delay $delayDelta = $wonder->impactList[0]['delay'] * $delayRandFactor; // get targets $targets = Tribe::getPlayerList($targetTribeID, false, true); if (sizeof($targets) == 0) { return -33; } $now = time(); // loop over targets foreach ($targets as $playerID => $playerData) { foreach ($playerData['caves'] as $caveID => $caveData) { // loop over impacts foreach ($wonder->impactList as $impactID => $impact) { $delay = (int) (($delayDelta + $impact['delay']) * WONDER_TIME_BASE_FACTOR); $sql = $db->prepare("INSERT INTO " . EVENT_WONDER_TABLE . "\n (casterID, sourceID, targetID, wonderID, impactID, start, end)\n VALUES\n (:playerID, :caveID, :targetID, :wonderID, :impactID, :start, :end)"); $sql->bindValue('playerID', 0, PDO::PARAM_INT); // playerID 0, for not receiving lots of wonder-end-messages $sql->bindValue('caveID', $casterTribeID, PDO::PARAM_INT); $sql->bindValue('targetID', $caveID, PDO::PARAM_INT); $sql->bindValue('wonderID', $wonderID, PDO::PARAM_INT); $sql->bindValue('impactID', $impactID, PDO::PARAM_INT); $sql->bindValue('start', time_toDatetime($now), PDO::PARAM_STR); $sql->bindValue('end', time_toDatetime($now + $delay), PDO::PARAM_STR); $sql->execute(); } // end foreach impactList } } // end foreach target // send caster messages $messageClass = new Messages(); $messageClass->sendSystemMessage($_SESSION['player']->playerID, 9, sprintf(_("Stammeswunder erwirkt auf %s"), $targetTribeData['tag']), sprintf(_("Sie haben auf den Stamm %s ein Stammeswunder %s erwirkt."), $targetTribeData['tag'], $wonder->name)); // send target messages $targetPlayersArray = array(); foreach ($targets as $target) { if (!isset($targetPlayersArray[$target['playerID']])) { $targetPlayersArray[$target['playerID']] = $target; } } foreach ($targetPlayersArray as $target) { $messageClass->sendSystemMessage($target['playerID'], 9, 'Stammeswunder!', sprintf(_("Der Stamm %s hat ein Stammeswunder auf deine Höhlen gewirkt."), $casterTribeData['tag'])); } return 12; }
function cave_giveUpCave($caveID, $playerID, $tribeID) { global $db; $sql = $db->prepare("UPDATE " . CAVE_TABLE . "\n SET playerID = 0,\n takeoverable = 0,\n protection_end = NOW()+0,\n secureCave = 0\n WHERE playerID = :playerID\n AND caveID = :caveID\n AND starting_position = 0"); $sql->bindValue('playerID', $playerID, PDO::PARAM_INT); $sql->bindValue('caveID', $caveID, PDO::PARAM_INT); if (!$sql->execute() || $sql->rowCount() == 0) { return false; } $sql = $db->prepare("UPDATE " . CAVE_TABLE . " c\n SET name = (SELECT name FROM " . CAVE_ORGINAL_NAME_TABLE . " co WHERE co.caveID = :caveID)\n WHERE c.caveID = :caveID"); $sql->bindValue('caveID', $caveID, PDO::PARAM_INT); $sql->execute(); @unlink("/var/www/speed/images/temp/{$caveID}.png"); // delete all scheduled Events // Event_movement - will only be deleted, when a new player gets that cave // Event_artefact - can't be deleted, as it would result in serious errors // Event_wonder - FIX ME: don't know $db->query("DELETE FROM " . EVENT_DEFENSE_SYSTEM_TABLE . " WHERE caveID = '{$caveID}'"); $db->query("DELETE FROM " . EVENT_EXPANSION_TABLE . " WHERE caveID = '{$caveID}'"); $db->query("DELETE FROM " . EVENT_SCIENCE_TABLE . " WHERE caveID = '{$caveID}'"); $db->query("DELETE FROM " . EVENT_UNIT_TABLE . " WHERE caveID = '{$caveID}'"); $db->query("DELETE FROM " . EVENT_HERO_TABLE . " WHERE caveID = '{$caveID}'"); if ($tribeID != 0) { $ownRelations = TribeRelation::getRelations($tribeID); foreach ($ownRelations['own'] as $actRelation) { $ownType = $actRelation['relationType']; if ($GLOBALS['relationList'][$ownType]['isPrepareForWar'] || $GLOBALS['relationList'][$ownType]['isWar']) { $newfame = $actRelation['fame'] - NONSECURE_CAVE_VAlUE * NONSECURE_CAVE_GIVEUP_FAKTOR; $sql = $db->prepare("UPDATE " . RELATION_TABLE . "\n SET fame = :newfame\n WHERE tribeID = :actTribeRelation\n AND tribeID_target = :actTargetRelation"); $sql->bindValue('newfame', $newfame, PDO::PARAM_INT); $sql->bindValue('actTribeRelation', $actRelation['tribeID'], PDO::PARAM_INT); $sql->bindValue('actTargetRelation', $actRelation['tribeID_target'], PDO::PARAM_INT); $sql->execute(); } } } // delete hero $caveData = getCaveByID($caveID); if ($caveData['hero'] != 0) { hero_killHero($playerID); } return 1; }
/** calculates the displayed data for a specific map region. */ function calcCaveMapRegionData($caveID, $caves, $xCoord, $yCoord) { $caveData = $caves[$caveID]; $mapSize = getMapSize(); // Größe der Karte wird benötigt $message = ''; // calculate the dimensions of the visible map region $section = calcVisibleMapRegion($mapSize, $xCoord, $yCoord); $minX = $section['minX']; // minimum x-coordinate of caves in visible part of the map $minY = $section['minY']; // minimum y-coordinate of caves in visible part of the map $maxX = $section['maxX']; // maximum x-coordinate of caves in visible part of the map $maxY = $section['maxY']; // maximum y-coordinate of caves in visible part of the map $centerX = $section['centerX']; $centerY = $section['centerY']; // get the map details $caveDetails = getCaveDetailsByCoords($minX, $minY, $maxX, $maxY); $relations = TribeRelation::getRelations($_SESSION['player']->tribeID); $map = array(); foreach ($caveDetails as $cave) { $cell = array('caveID' => $cave['caveID'], 'terrain' => 'terrain' . $cave['terrain'], 'terrain_tribe' => $GLOBALS['terrainList'][$cave['terrain']]['tribeRegion'], 'imgMap' => $GLOBALS['terrainList'][$cave['terrain']]['imgMap'], 'barren' => $GLOBALS['terrainList'][$cave['terrain']]['barren'], 'title' => 'Dies ist der Landstrich "' . $cave['cavename'] . '" (' . $cave['xCoord'] . '|' . $cave['yCoord'] . ') - ' . $GLOBALS['terrainList'][$cave['terrain']]['name']); // unbewohnte Höhle if ($cave['playerID'] == 0) { // als Frei! zeigen if ($cave['takeoverable'] == 1) { $text = _('Frei!'); $file = "icon_cave_empty"; // als Einöde zeigen } else { $text = _('Einöde'); $file = "icon_waste"; } // bewohnte Höhle } else { // eigene Höhle if ($cave['playerID'] == $_SESSION['player']->playerID) { $file = "icon_cave_own"; } else { $file = "icon_cave_other"; // fremde Höhle } // mit Artefakt if ($cave['hasArtefact'] && ($cave['tribe'] != GOD_ALLY || $_SESSION['player']->tribe == GOD_ALLY)) { $file .= "_artefact"; } // Stamm abkürzen $decodedTribe = unhtmlentities($cave['tribe']); if (strlen($decodedTribe) > 10) { $cell['tribe'] = htmlentities(substr($decodedTribe, 0, 8)) . ".."; } else { $cell['tribe'] = $cave['tribe']; } $cell['tribeID'] = $cave['tribeID']; // Besitzer $decodedOwner = unhtmlentities($cave['name']); if (strlen($decodedOwner) > 10) { $text = htmlentities(substr($decodedOwner, 0, 8)) . ".."; } else { $text = $cave['name']; } // übernehmbare Höhlen können gekennzeichnet werden if ($cave['secureCave'] != 1) { $cell['unsecure'] = array('dummy' => ''); } if ($_SESSION['player']->playerID == $cave['playerID']) { $cell['css_self'] = 't_self'; } if (isset($relations['own'][$cave['tribeID']])) { $cell['css_own'] = 't_own_relation_' . $relations['own'][$cave['tribeID']]['relationType']; } if (isset($relations['other'][$cave['tribeID']])) { $cell['css_other'] = 't_other_relation_' . $relations['other'][$cave['tribeID']]['relationType']; } } $cell['file'] = $file; $cell['text'] = $text; $map[$cave['xCoord']][$cave['yCoord']] = $cell; } // create a region data array with an empty row as starting point. $regionData = array('rows' => array()); // über alle Zeilen for ($j = $minY - 1; $j <= $maxY + 1; ++$j) { $cells = array(); // über alle Spalten for ($i = $minX - 1; $i <= $maxX + 1; ++$i) { // leere Zellen if (($j == $minY - 1 || $j == $maxY + 1) && ($i == $minX - 1 || $i == $maxX + 1)) { array_push($cells, getCornerCell()); // x-Beschriftung } else { if ($j == $minY - 1 || $j == $maxY + 1) { array_push($cells, getLegendCell('x', $i)); // y-Beschriftung } else { if ($i == $minX - 1 || $i == $maxX + 1) { array_push($cells, getLegendCell('y', $j)); // Kartenzelle } else { array_push($cells, getMapCell($map, $i, $j)); } } } } array_push($regionData['rows'], $cells); } $mapData = array('centerXCoord' => $centerX, 'centerYCoord' => $centerY, 'queryXCoord' => $xCoord, 'queryYCoord' => $yCoord, 'mapregion' => $regionData); return $mapData; }
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); $hero['maxUnitsSize'] = max(HERO_MAX_UNIT_SIZE, $hero['exp']); if ($hero['isAlive'] != 1) { $details['hero'] = 0; } } if ($details['hero'] != 0 && Request::getVar('moveHero', 0) == 1) { $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 = Player::getPlayer($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('resource', 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 ($targetPlayer != null) { if ($targetPlayer->tribeID != $_SESSION['player']->tribeID) { //may tade in own tribe $ownTribeAtWar = TribeRelation::hasWar($_SESSION['player']->tribeID, true); $targetTribeAtWar = TribeRelation::hasWar($targetPlayer->tribeID, true); $TribesMayTrade = TribeRelation::isAlly($_SESSION['player']->tribeID, $targetPlayer->tribeID) && TribeRelation::hasSameEnemy($_SESSION['player']->tribeID, $targetPlayer->tribeID, true, true) || TribeRelation::isEnemy($_SESSION['player']->tribeID, $targetPlayer->tribeID); $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'] && $armySize > HERO_MAX_UNIT_SIZE) { $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' && Request::getVar('eventID', 0)) { $msgID = reverseMovementEvent($caveID, Request::getVar('eventID', 0)); 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'); // movements $selectableMovements = array(); foreach ($ua_movements as $value) { if ($value->playerMayChoose) { $selectableMovements[$value->id] = get_object_vars($value); } } $template->addVar('selectable_movements', $selectableMovements); $movementData = array('currentX' => $details['xCoord'], 'currentY' => $details['yCoord'], 'dim_x' => $dim_x, 'dim_y' => $dim_y, 'minutesPerCave' => $minutesPerCave, 'foodID' => GameConstants::FUEL_RESOURCE_ID, 'foodfactor' => $foodPerCave, 'movements' => $selectableMovements); $template->addVars(array('fuel_name' => $GLOBALS['resourceTypeList'][GameConstants::FUEL_RESOURCE_ID]->name, 'status_msg' => isset($msg) ? $msg : '', 'movement_data' => json_encode($movementData))); // resources $resources = array(); foreach ($GLOBALS['resourceTypeList'] as $resourceID => $dummy) { $amount = isset($details[$GLOBALS['resourceTypeList'][$resourceID]->dbFieldName]) ? floor($details[$GLOBALS['resourceTypeList'][$resourceID]->dbFieldName]) : 0; if (!$GLOBALS['resourceTypeList'][$resourceID]->nodocumentation || $amount > 0) { $resources[] = array('resource_id' => $GLOBALS['resourceTypeList'][$resourceID]->resourceID, 'name' => $GLOBALS['resourceTypeList'][$resourceID]->name, 'current_amount' => $details[$GLOBALS['resourceTypeList'][$resourceID]->dbFieldName], 'dbFieldName' => $GLOBALS['resourceTypeList'][$resourceID]->dbFieldName, 'value' => $safeForm && isset($resource[$resourceID]) && $resource[$resourceID] > 0 ? $resource[$resourceID] : ''); $resourcesJson[$resourceID] = array('resource_id' => $GLOBALS['resourceTypeList'][$resourceID]->resourceID, 'name' => $GLOBALS['resourceTypeList'][$resourceID]->name, 'current_amount' => $details[$GLOBALS['resourceTypeList'][$resourceID]->dbFieldName], 'amount' => 0); } } $template->addVar('resource', $resources); $template->addVar('resource_json', json_encode($resourcesJson)); // units table $unitprops = array(); $units = array(); $unitsJson = 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) { $amount = isset($details[$GLOBALS['resourceTypeList'][$resourceID]->dbFieldName]) ? floor($details[$GLOBALS['resourceTypeList'][$resourceID]->dbFieldName]) : 0; if (!$GLOBALS['resourceTypeList'][$resourceID]->nodocumentation || $amount > 0) { $encumbrance[$resourceID] = array('resourceID' => $resourceID, 'dbFieldName' => isset($GLOBALS['unitTypeList'][$unitID]->encumbranceList[$resourceID]) ? $GLOBALS['resourceTypeList'][$resourceID]->dbFieldName : '', 'name' => isset($GLOBALS['unitTypeList'][$unitID]->encumbranceList[$resourceID]) ? $GLOBALS['resourceTypeList'][$resourceID]->name : '', 'load' => isset($GLOBALS['unitTypeList'][$unitID]->encumbranceList[$resourceID]) ? $GLOBALS['unitTypeList'][$unitID]->encumbranceList[$resourceID] : 0); $temp[] = 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, '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] : '', 'size' => $GLOBALS['unitTypeList'][$unitID]->hitPoints, 'arealAttack' => $GLOBALS['unitTypeList'][$unitID]->attackAreal, 'rangeAttack' => $GLOBALS['unitTypeList'][$unitID]->attackRange, 'attackRate' => $GLOBALS['unitTypeList'][$unitID]->attackRate); $unitsJson[] = array('unit_id' => $unitID, 'foodCost' => $GLOBALS['unitTypeList'][$unitID]->foodCost, 'speedFactor' => $GLOBALS['unitTypeList'][$unitID]->wayCost, 'maxUnitCount' => $details[$GLOBALS['unitTypeList'][$unitID]->dbFieldName], 'encumbrance' => $encumbrance, 'hitPoints' => $GLOBALS['unitTypeList'][$unitID]->hitPoints, 'size' => $GLOBALS['unitTypeList'][$unitID]->hitPoints, 'arealAttack' => $GLOBALS['unitTypeList'][$unitID]->attackAreal, 'rangeAttack' => $GLOBALS['unitTypeList'][$unitID]->attackRange, 'attackRate' => $GLOBALS['unitTypeList'][$unitID]->attackRate); } $template->addVar('unit_list', $units); $template->addVar('unit_list_json', json_encode($unitsJson)); // 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' => '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) { $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); } } }
function tribe_getContent($caveID, &$details) { global $template; // messages $messageText = array(-47 => array('type' => 'error', 'message' => _('Fehler beim entfernen der Spielerrechte.')), -46 => array('type' => 'error', 'message' => _('Der Stamm wurde nicht gefunden.')), -45 => array('type' => 'error', 'message' => _('Der Spieler wurde nicht gefunden.')), -44 => array('type' => 'error', 'message' => _('Beim hinzufügen der Spielerrechte ist ein Fehler aufgetreten.')), -43 => array('type' => 'error', 'message' => _('Die Regierung wurde nicht geändert, weil sie sich nicht geändert hat.')), -42 => array('type' => 'error', 'message' => _('Ein Rohstoff wurde erst vor kurzen eingelagert. Bitte warte bis du es erneut versucht.')), -41 => array('type' => 'error', 'message' => _('Beim kicken das Spielers ist ein Fehler aufgetreten.')), -40 => array('type' => 'error', 'message' => _('Der Stamm befindet sich zur Zeit in einem Krieg und es kann kein Spieler gekickt werden.')), -39 => array('type' => 'error', 'message' => _('Der Stammesführer kann nicht entlassen werden.')), -38 => array('type' => 'error', 'message' => _('Der Spieler wurde in dem Stamm nicht gefunden!')), -37 => array('type' => 'error', 'message' => _('Der Zielstamm besitzt nicht die benötigte Vorraussetzung um das Wunder erwirken zu können.')), -36 => array('type' => 'error', 'message' => _('Dieses Wunder wurde erst vor kurzen gewundert. Bitte warte etwas bevor du es erneut wunderst.')), -35 => array('type' => 'error', 'message' => _('Der gegnerische Stamm hat nicht genug Mitglieder um Stammeswunder bekommen zu können!')), -34 => array('type' => 'error', 'message' => _('Ihr Stamm hat nicht genug Mitglieder um Stammeswunder sprechen zu können!')), -33 => array('type' => 'error', 'message' => _('Beim erbitten des Stammeswunders ist ein Problem aufgetreten!')), -32 => array('type' => 'error', 'message' => _('Das Stammeswunder konnte nicht gewirkt werden.')), -31 => array('type' => 'error', 'message' => _('Die Rechte konnten nicht angewandt werden.')), -30 => array('type' => 'error', 'message' => _('Fehler in den Formulardaten!')), -29 => array('type' => 'error', 'message' => _('Die Stimme konnte wegen eines Fehlers nicht abgegeben werden.')), -28 => array('type' => 'error', 'message' => _('Die Regierung konnte nicht geändert werden, weil sie erst vor kurzem geändert wurde.')), -27 => array('type' => 'error', 'message' => _('Die Regierung konnte aufgrund eines Fehlers nicht aktualisiert werden')), -26 => array('type' => 'error', 'message' => _('Ihr Kriegsanteil ist nicht hoch genug, um den Gegner zur Aufgabe zu zwingen.')), -25 => array('type' => 'error', 'message' => _('Eure Untergebenen weigern sich, diese Beziehung gegenüber einem so großen Stamm einzugehen.')), -24 => array('type' => 'error', 'message' => _('Eure Untergebenen weigern sich, diese Beziehung gegenüber einem so kleinen Stamm einzugehen.')), -23 => array('type' => 'error', 'message' => _('Ihr habt mit dem anderen Stamm keinen gleichen Kriegsgegner.')), -22 => array('type' => 'error', 'message' => _('Die Beziehung des anderen Stammes erlauben kein Kriegsbündniss.')), -21 => array('type' => 'error', 'message' => _('Unsere aktuelle Beziehung erlaubt kein Kriegsbündniss.')), -20 => array('type' => 'error', 'message' => _('Von der derzeitigen Beziehung kann nicht direkt auf die ausgewählte Beziehungsart gewechselt werden.')), -19 => array('type' => 'error', 'message' => _('Die Mindestlaufzeit von der derzeitigen Beziehung läuft noch!')), -18 => array('type' => 'error', 'message' => _('Die Beziehung wurde nicht geändert, weil der ausgewählte Beziehungstyp bereits eingestellt ist.')), -17 => array('type' => 'error', 'message' => _('Die Beziehung konnte aufgrund eines Fehlers nicht aktualisiert werden.')), -16 => array('type' => 'error', 'message' => _('Der Stamm hat noch nicht genug Mitglieder um Beziehungen eingehen zu dürfen')), -15 => array('type' => 'error', 'message' => _('Den Stamm gibt es nicht!')), -14 => array('type' => 'error', 'message' => _('Zu sich selber kann man keine Beziehungen aufnehmen!')), -13 => array('type' => 'error', 'message' => _('Ungültiges Bild oder URL beim Avatar! Wird zurückgesetzt!')), -12 => array('type' => 'error', 'message' => _('Ungültiges Passwort! (Mind. 6 Zeichen, ohne Sonderzeichen)')), -11 => array('type' => 'error', 'message' => _('Fehler beim Eintragen ins Stammeslager!')), -10 => array('type' => 'error', 'message' => _('Nicht genug Rohstoffe vorhanden!')), -9 => array('type' => 'error', 'message' => _('Eine Rohstoff hat den maximalen Einzahlungswert überschritten!')), -8 => array('type' => 'info', 'message' => _('Bitte die gewünscht Menge an Rohstoffen die eingezahlt werden sollen angeben.')), -7 => array('type' => 'error', 'message' => _('Die Nachricht konnte nicht verschickt werden.')), -6 => array('type' => 'error', 'message' => _('Du mußt eine Nachricht schreiben um sie versenden zu können.')), -5 => array('type' => 'error', 'message' => _('Sie konnten nicht austreten. Vermutlich gehören Sie gar keinem Stamm an.')), -4 => array('type' => 'error', 'message' => _('Sie sind der Stammesanführer und konnten nicht entlassen werden.')), -3 => array('type' => 'error', 'message' => _('Die Stammeszugehörigkeit hat sich erst vor kurzem geändert. Warten Sie, bis die Stammeszugehörigkeit geändert werden darf.')), -2 => array('type' => 'error', 'message' => _('Ihr Stamm befindet sich im Krieg. Sie dürfen derzeit nicht austreten.')), -1 => array('type' => 'error', 'message' => _('Du hast keine Berechtigung dies zu tun.')), 1 => array('type' => 'success', 'message' => _('Du hast den Stamm verlassen.')), 2 => array('type' => 'success', 'message' => _('Du hast den Stamm erfolgreich verlassen.<br />Da du das letzte Mitglied warst, wurde der Stamm aufgelöst.')), 3 => array('type' => 'success', 'message' => _('Die Nachricht wurde Erfolgreich verschickt.')), 4 => array('type' => 'success', 'message' => _('Deine Rohstoffe wurden Erfolgreich ins Stammeslager eingezahlt!')), 5 => array('type' => 'success', 'message' => _('Die Daten wurden erfolgreich aktualisiert.')), 6 => array('type' => 'error', 'message' => _('Die Daten konnten gar nicht oder zumindest nicht vollständig aktualisiert werden.')), 7 => array('type' => 'success', 'message' => _('Die Beziehung zu dem anderen Stamm wurde erfolgreich geändert.')), 8 => array('type' => 'success', 'message' => _('Die Regierung des Stammes wurde erfolgreich geändert.')), 9 => array('type' => 'success', 'message' => _('Die Stimme wurde erfolgreich gezählt.')), 10 => array('type' => 'success', 'message' => _('Der Spieler hat seine Rechte erfolgreich erhalten.')), 11 => array('type' => 'info', 'message' => _('Die Götter haben Ihr Flehen nicht erhört! Die eingesetzten Opfergaben sind natürlich dennoch verloren. Mehr Glück beim nächsten Mal!')), 12 => array('type' => 'success', 'message' => _('Das Erflehen des Wunders scheint Erfolg zu haben.')), 13 => array('type' => 'success', 'message' => _('Der Spieler wurde erfolgreich gekickt.')), 14 => array('type' => 'success', 'message' => _('Spielerrechte erfolgreich hinzugefügt. In kürze kann der Spieler den Raum betreten.')), 15 => array('type' => 'success', 'message' => _('Spielerrechte erfolgreich hinzugefügt. In kürze können die Spieler den Raum betreten.')), 16 => array('type' => 'success', 'message' => _('Spielerrechte erfolgreich entfernt. In kürze können der/die Spieler den Raum nicht mehr betreten.'))); if (!$_SESSION['player']->tribeID) { tribe_getContentNoTribe($caveID, $details); return; } $tribeID = $_SESSION['player']->tribeID; $tribeData = Tribe::getByID($tribeID); if ($tribeData == null) { $template->throwError('Der Stamm konnte nicht geladen werden.'); return; } $tribeMembers = Tribe::getPlayerList($tribeID, true, true, 'p.name'); // open template $template->setFile('tribeMember.tmpl'); $template->setShowResource(true); // init auth $auth = new auth(); $userAuth = $auth->getAllTypePermission('tribe', $_SESSION['player']->auth['tribe']); $userAuth['isLeader'] = $tribeData['leaderID'] == $_SESSION['player']->playerID ? true : false; // init Chat Channel $chatRooms = Chat::getRoomsByTribeID($tribeID); // process form data $tribeAction = Request::getVar('action', 0); switch ($tribeAction) { /**************************************************************************************************** * * Spielerrechte Ändern * ****************************************************************************************************/ case TRIBE_ACTION_AUTH: if (!$userAuth['isLeader']) { $messageID = -1; break; } $playerID = Request::getVar('player_id', 0); if ($playerID == 0 || !isset($tribeMembers[$playerID])) { $messageID = -38; break; } $authID = 0; foreach ($auth->perm['tribe'] as $type => $data) { $authID = $authID | Request::getVar($type, 0); } $newUserAuth = $auth->setPermission('tribe', $authID, $playerID); if ($newUserAuth !== false) { $messageID = 10; $tribeMembers[$playerID]['tribeAuth'] = $auth->getAllTypePermission('tribe', $newUserAuth); } else { $messageID = -31; } break; /**************************************************************************************************** * * Auswahl des Anführers * ****************************************************************************************************/ /**************************************************************************************************** * * Auswahl des Anführers * ****************************************************************************************************/ case TRIBE_ACTION_CHOOSE_LEADER: $chooseLeaderID = Request::getVar('chooseLeaderID', 0); if ($chooseLeaderID != 0 && isset($tribeMembers[$chooseLeaderID])) { $messageID = TribeLeader::setChoice($chooseLeaderID, $_SESSION['player']->playerID, $tribeID); break; } else { if ($chooseLeaderID == 0) { $messageID = TribeLeader::removeChoice($_SESSION['player']->playerID); } else { $messageID = -38; } } break; /**************************************************************************************************** * * Ressie Spende an den Stamm * ****************************************************************************************************/ /**************************************************************************************************** * * Ressie Spende an den Stamm * ****************************************************************************************************/ case TRIBE_ACTION_DONATE: $value = Request::getVar('value', array('' => '')); $messageID = TribeDonation::setDonations($value, $caveID, $details); $tribeData = Tribe::getByID($tribeID); break; /**************************************************************************************************** * * Regierungstyp ändern * ****************************************************************************************************/ /**************************************************************************************************** * * Regierungstyp ändern * ****************************************************************************************************/ case TRIBE_ACTION_GOVERMENT: if (!$userAuth['isLeader']) { $messageID = -1; break; } if (!TribeGovernment::isChangeable($tribeID)) { $messageID = -28; break; } $governmentID = Request::getVar('governmentID', 0); if ($governmentID == 0) { $messageID = -27; break; } if ($governmentID == $tribeData['governmentID']) { $messageID = -43; break; } $messageID = TribeGovernment::setGovernment($tribeID, $governmentID); break; /**************************************************************************************************** * * bye bye Spieler * ****************************************************************************************************/ /**************************************************************************************************** * * bye bye Spieler * ****************************************************************************************************/ case TRIBE_ACTION_KICK: if (!$userAuth['kick_member'] && !$userAuth['isLeader']) { $messageID = -1; break; } $playerID = Request::getVar('playerID', 0); if ($playerID == 0 || !isset($tribeMembers[$playerID])) { $messageID = -38; break; } if ($tribeData['leaderID'] == $playerID) { $messageID = -39; break; } $messageID = Tribe::processKickMember($playerID, $tribeData); if ($messageID > 0) { unset($tribeMembers[$playerID]); } break; /**************************************************************************************************** * * Bye Bye Stamm :( * ****************************************************************************************************/ /**************************************************************************************************** * * Bye Bye Stamm :( * ****************************************************************************************************/ case TRIBE_ACTION_LEAVE: if (Request::isPost('postConfirm')) { $messageID = Tribe::processLeave($_SESSION['player']->playerID, $tribeData); if ($messageID > 0) { page_refreshUserData(); $template->addVar('status_msg', $messageText[$messageID]); tribe_getContentNoTribe($caveID, $details); return; } } else { $template->addVars(array('confirm_box' => true, 'confirm_action' => TRIBE_ACTION_LEAVE, 'confirm_id' => false, 'confirm_mode' => TRIBE, 'confirm_msg' => sprintf(_('Möchtest du den Stamm <span class="bold">%s</span> wirklich verlassen?'), $tribeTag))); } break; /**************************************************************************************************** * * paar Spieler informieren über irgendwas * ****************************************************************************************************/ /**************************************************************************************************** * * paar Spieler informieren über irgendwas * ****************************************************************************************************/ case TRIBE_ACTION_MESSAGE: if (!$userAuth['msg_tribe'] && !$userAuth['msg_public'] && !$userAuth['isLeader']) { $messageID = -1; break; } $message = Request::getVar('messageText', '', true); if (empty($message)) { $messageID = -6; break; } $button = Request::getVar('button', ''); $messageType = Request::getVar('messageType', ''); if ($button == 'ingame' && ($userAuth['msg_public'] || $userAuth['isLeader'])) { $messageID = TribeMessage::processSendPlayer($tribeID, $_SESSION['player']->name, $message); } else { if ($button == 'tribemsg' && $userAuth['msg_tribe'] || $userAuth['isLeader']) { $messageID = TribeMessage::processSendIntern($tribeID, $_SESSION['player']->name, $message); } else { $messageID = -1; } } break; /**************************************************************************************************** * * Krieg? Niederlage? Verbünden? Aktualisieren der Beziehung * ****************************************************************************************************/ /**************************************************************************************************** * * Krieg? Niederlage? Verbünden? Aktualisieren der Beziehung * ****************************************************************************************************/ case TRIBE_ACTION_RELATION: if (!$userAuth['change_relation'] && !$userAuth['isLeader']) { $messageID = -1; break; } $targetTribe = Request::getVar('targetTribe', ''); $relationID = Request::getVar('relationID', 0); if (empty($targetTribe)) { $messageID = -15; break; } $targeData = Tribe::getID($targetTribe, true); if (empty($targeData)) { $messageID = -15; break; } $button = Request::getVar('button', ''); if ($button == 'forceSurrender') { $messageID = TribeRelation::forceSurrender($tribeData, $targeData, $relationID); } else { $messageID = TribeRelation::processRelationUpdate($tribeData, $targeData, $relationID); } break; /**************************************************************************************************** * * Stammesinfos aktualisieren * ****************************************************************************************************/ /**************************************************************************************************** * * Stammesinfos aktualisieren * ****************************************************************************************************/ case TRIBE_ACTION_UPDATE: if (!$userAuth['change_settings'] && !$userAuth['isLeader']) { $messageID = -1; break; } $password = Request::getVar('inputPassword', ''); $postData = array('name' => Request::getVar('inputName', '', true), 'password' => !empty($password) ? $password : $tribeData['password'], 'avatar' => Request::getVar('inputAvatar', ''), 'description' => Request::getVar('inputDescription', '', true)); $messageID = Tribe::updateTribeData($tribeID, $postData); $tribeData = Tribe::getByID($tribeID); break; /**************************************************************************************************** * * Stammeswunder? * ****************************************************************************************************/ /**************************************************************************************************** * * Stammeswunder? * ****************************************************************************************************/ case TRIBE_ACTION_WONDER: if (!$userAuth['wonder'] && !$userAuth['isLeader']) { $messageID = -1; break; } $wonderID = Request::getVar('wonderID', -1); $tribeName = Request::getVar('tribeName', ''); if ($wonderID == -1) { $messageID = -32; break; } if (empty($tribeName)) { $messageID = -15; break; } if (isset($tribeData['wonderLocked'][$wonderID]) && $tribeData['wonderLocked'][$wonderID] > time()) { $messageID = -36; break; } $messageID = TribeWonder::processWonder($wonderID, $tribeData, $tribeName); if ($messageID > 0) { TribeWonder::setBlockedTime($tribeID, $wonderID, $tribeData['wonderLocked']); } if ($messageID == 11 || $messageID == 12) { $success = $messageID == 12 ? 1 : 2; wonder_addStatistic($wonderID, $success); } $tribeData = Tribe::getByID($tribeID); break; /**************************************************************************************************** * * User/Stammes Rechte für den Chat vergeben * ****************************************************************************************************/ /**************************************************************************************************** * * User/Stammes Rechte für den Chat vergeben * ****************************************************************************************************/ case TRIBE_ACTION_CHAT_ADD: if (!$userAuth['manage_chat'] && !$userAuth['isLeader']) { $messageID = -1; break; } $roomID = Request::getVar('roomID', 0); if (empty($roomID) || !isset($chatRooms[$roomID])) { $messageID = -30; break; } $user = Request::getVar('user', ''); $tribe = Request::getVar('tribe', ''); if (!empty($user)) { if (Chat::checkUserExists($user)) { if (Chat::authAdd($roomID, $user)) { $messageID = 14; break; } else { $messageID = -44; break; } } else { $messageID = -45; break; } } else { if (!empty($tribe)) { $chatTribeID = Tribe::getID($tribe); if ($tribe !== false) { if (Chat::authAddTribe($roomID, $chatTribeID)) { $messageID = 15; break; } else { $messageID = -44; break; } } else { $messageID = -45; break; } } else { $messageID = -30; break; } } break; /**************************************************************************************************** * * Userrechte entfernen * ****************************************************************************************************/ /**************************************************************************************************** * * Userrechte entfernen * ****************************************************************************************************/ case TRIBE_ACTION_CHAT_REMOVE: if (!$userAuth['manage_chat'] && !$userAuth['isLeader']) { $messageID = -1; break; } $roomID = Request::getVar('roomID', 0); if (empty($roomID) || !isset($chatRooms[$roomID])) { $messageID = -30; break; } $removeIDs = Request::getVar('removeIDs', array('' => '')); if (!empty($removeIDs)) { if (Chat::authDel($roomID, $removeIDs)) { $messageID = 16; break; } else { $messageID = -47; break; } } else { $messageID = -30; break; } break; } /**************************************************************************************************** * * Auswahl der Regierungsformen * ****************************************************************************************************/ $tribeGovernment = TribeGovernment::getGovernment($tribeID); if (empty($tribeGovernment)) { $template->throwError('Fehler beim Auslesen der Regierungsform.'); return; } $tribeGovernment['name'] = $GLOBALS['governmentList'][$tribeGovernment['governmentID']]['name']; if ($userAuth['isLeader'] && $tribeGovernment['isChangeable']) { $GovernmentSelect = array(); foreach ($GLOBALS['governmentList'] as $governmentID => $typeData) { $GovernmentSelect[] = array('value' => $governmentID, 'selected' => $governmentID == $tribeGovernment['governmentID'] ? 'selected="selected"' : '', 'name' => $typeData['name']); } $template->addVar('government_select', $GovernmentSelect); } else { $template->addVar('government_data', array('name' => $tribeGovernment['name'], 'duration' => $tribeGovernment['time'])); } if ($tribeGovernment['governmentID'] == 2) { $choice = TribeLeader::getVotes($_SESSION['player']->playerID); $votes = TribeLeader::getElection($tribeID); $possibleChoices = $tribeMembers; $possibleChoices[0] = array('name' => _('Keiner'), 'playerID' => 0); foreach ($possibleChoices as $key => $value) { if ($key == $choice) { $possibleChoices[$key]['selected'] = 'selected="selected"'; } } ksort($possibleChoices); $template->addVars(array('goverment_votes_list' => $votes, 'goverment_choice_list' => $possibleChoices, 'goverment_choice_name' => $GLOBALS['leaderDeterminationList'][$tribeGovernment['governmentID']]['name'], 'goverment_choice_description' => $GLOBALS['leaderDeterminationList'][$tribeGovernment['governmentID']]['description'])); } else { $template->addVars(array('choose' => false, 'goverment_choice_message' => _('Ihr habt keinen Einfluss auf die Bestimmung des Stammesanführers.'), 'goverment_choice_name' => $GLOBALS['leaderDeterminationList'][$tribeGovernment['governmentID']]['name'], 'goverment_choice_description' => $GLOBALS['leaderDeterminationList'][$tribeGovernment['governmentID']]['description'])); } /**************************************************************************************************** * * Auslesen der Stammesnachrichten * ****************************************************************************************************/ $messagesClass = new Messages(); $messageAry = array(); $messages = TribeMessage::getMessages($tribeID); if (sizeof($messages)) { foreach ($messages as $msgID => $messageData) { $messageAry[] = array('time' => $messageData['date'], 'subject' => $messageData['messageSubject'], 'message' => $messagesClass->p($messageData['messageText'])); } $template->addVar('tribe_messages', $messageAry); } /**************************************************************************************************** * * Auslesen und Anzeigen der Beziehungen * ****************************************************************************************************/ $relationsAll = TribeRelation::getRelations($tribeID); $relationsWar = TribeRelation::getWarRelations($tribeID); // Allgemein -> Allgemeines // Regierung -> Beziehungen $relations = $relationAlly = $relations_info = array(); foreach ($relationsAll['own'] as $target => $targetData) { if (in_array($targetData['relationType'], Config::$tribeRelationAlly)) { $relationAlly[] = $targetData; } if (!$targetData['changeable']) { $relations_info[$target] = array('tag' => $targetData['targetTag'], 'relation' => $GLOBALS['relationList'][$targetData['relationType']]['name'], 'duration' => $targetData['time'], 'their_relation' => isset($relationsAll['other'][$target]) ? $GLOBALS['relationList'][$relationsAll['other'][$target]['relationType']]['name'] : $GLOBALS['relationList'][0]['name']); // war? if (isset($relationsWar[$target])) { $relations_info[$target]['war'] = true; $relations_info[$target]['fame_own'] = $relationsWar[$target]['fame_own']; $relations_info[$target]['fame_target'] = $relationsWar[$target]['fame_target']; $relations_info[$target]['percent_actual'] = $relationsWar[$target]['percent_actual']; } } else { $relations[$target] = array('tag' => $targetData['targetTag'], 'target_points' => $targetData['target_rankingPoints'], 'tribe_points' => $targetData['tribe_rankingPoints'], 'their_relation' => isset($relationsAll['other'][$target]) ? $GLOBALS['relationList'][$relationsAll['other'][$target]['relationType']]['name'] : $GLOBALS['relationList'][0]['name'], 'relation_type' => $targetData['relationType']); if (isset($relationsWar[$target])) { $relations[$target]['war'] = true; $relations[$target]['fame_own'] = $relationsWar[$target]['fame_own']; $relations[$target]['fame_target'] = $relationsWar[$target]['fame_target']; $relations[$target]['percent_actual'] = $relationsWar[$target]['percent_actual']; if ($relationsWar[$target]['isForcedSurrenderTheoreticallyPossible']) { $relations[$target]['isForcePossible'] = true; $relations[$target]['percent_estimated'] = $relationsWar[$target]['percent_estimated']; } } } } foreach ($relationsAll['other'] as $target => $targetData) { if (isset($relationsAll['own'][$target])) { continue; } $relations[$target] = array('tag' => $targetData['targetTag'], 'their_relation' => $GLOBALS['relationList'][$relationsAll['other'][$target]['relationType']]['name'], 'duration' => $targetData['time'], 'relation_type' => 0); } /**************************************************************************************************** * * Stammeslager * ****************************************************************************************************/ $tribeStorageValues = $tribeStorage = array(); $dontePossible = false; foreach ($GLOBALS['resourceTypeList'] as $resourceID => $resource) { if ($resource->maxTribeDonation == 0) { continue; } $tribeStorage[$resource->dbFieldName] = $tribeData[$resource->dbFieldName]; $tribeStorageValues[$resource->dbFieldName]['resourceID'] = $resource->resourceID; $tribeStorageValues[$resource->dbFieldName]['name'] = $resource->name; $tribeStorageValues[$resource->dbFieldName]['value'] = $tribeData[$resource->dbFieldName]; $tribeStorageValues[$resource->dbFieldName]['dbFieldName'] = $resource->dbFieldName; $tribeStorageValues[$resource->dbFieldName]['maxTribeDonation'] = $resource->maxTribeDonation; if (!isset($_SESSION['player']->donateLocked['tribe'][$resource->dbFieldName]) || empty($_SESSION['player']->donateLocked['tribe'][$resource->dbFieldName])) { $tribeStorageValues[$resource->dbFieldName]['lastDonate'] = ''; $tribeStorageValues[$resource->dbFieldName]['donatePossible'] = true; $dontePossible = true; } else { $tribeStorageValues[$resource->dbFieldName]['lastDonate'] = date("d.m. H:i:s", $_SESSION['player']->donateLocked['tribe'][$resource->dbFieldName]); if ($_SESSION['player']->donateLocked['tribe'][$resource->dbFieldName] < time()) { $tribeStorageValues[$resource->dbFieldName]['donatePossible'] = true; $dontePossible = true; } else { $tribeStorageValues[$resource->dbFieldName]['donatePossible'] = false; } } } $template->addVars(array('tribeStorageValues' => $tribeStorageValues, 'donationInterval' => TRIBE_STORAGE_DONATION_INTERVAL, 'showTribeStorageDonations' => $dontePossible)); /**************************************************************************************************** * * Einzahlungen * ****************************************************************************************************/ $donations = TribeDonation::getDonations($tribeID); $template->addVar('donations', $donations); /**************************************************************************************************** * * Stammeswunder * ****************************************************************************************************/ $wonders = array(); $memberCount = count($tribeMembers); foreach ($GLOBALS['wonderTypeList'] as $wonder) { // exclude nonTribeWonders if (!$wonder->isTribeWonder || $wonder->nodocumentation) { continue; } // multiply costs with number of tribe members foreach ($wonder->resourceProductionCost as $prodID => $prod) { $wonder->resourceProductionCost[$prodID] = $prod * $memberCount; } foreach ($wonder->unitProductionCost as $prodID => $prod) { $wonder->unitProductionCost[$prodID] = $prod * $memberCount; } foreach ($wonder->buildingProductionCost as $prodID => $prod) { $wonder->buildingProductionCost[$prodID] = $prod * $memberCount; } $wonders[$wonder->wonderID] = array('dbFieldName' => $wonder->wonderID, 'name' => $wonder->name, 'wonder_id' => $wonder->wonderID, 'description' => $wonder->description); $wonders[$wonder->wonderID] = array_merge($wonders[$wonder->wonderID], parseCost($wonder, $tribeStorage)); // show the building link ?! if (isset($tribeData['wonderLocked'][$wonder->wonderID]) && $tribeData['wonderLocked'][$wonder->wonderID] > time()) { $wonders[$wonder->wonderID]['no_build_msg'] = sprintf(_('Das Wunder ist noch gesperrt bis: %s'), date("d. m. H:i:s", $tribeData['wonderLocked'][$wonder->wonderID])); } else { if ($wonders[$wonder->wonderID]['notenough']) { $wonders[$wonder->wonderID]['no_build_msg'] = _('Zu wenig Rohstoffe'); } else { $wonders[$wonder->wonderID]['build_link'] = true; } } } /**************************************************************************************************** * * Chat * ****************************************************************************************************/ $userRooms = Chat::getUsersByTribeID($tribeID); foreach ($chatRooms as $id => $data) { if (!isset($userRooms[$id]) || empty($userRooms[$id])) { continue; } $chatRooms[$id]['auth'] = $userRooms[$id]; } /**************************************************************************************************** * * Übergabe ans Template * ****************************************************************************************************/ $template->addVars(array('tribe_name' => $tribeData['name'], 'tribe_tag' => $tribeData['tag'], 'tribe_avatar' => $tribeData['avatar'], 'tribe_description' => $tribeData['description'], 'tribe_leader_name' => $tribeData['leaderName'], 'tribe_leader_id' => $tribeData['leaderID'], 'tribe_members' => $tribeMembers, 'tribe_members_count' => strval($memberCount), 'government_name' => $GLOBALS['governmentList'][$tribeData['governmentID']]['name'], 'is_auth' => $userAuth, 'relations' => isset($relations) ? $relations : array(), 'relations_ally' => $relationAlly, 'relations_list' => $GLOBALS['relationList'], 'relations_info' => $relations_info, 'relations_war' => !empty($relationsWar) ? true : false, 'wonders' => $wonders, 'chat_rooms' => $chatRooms, 'status_msg' => isset($messageID) ? $messageText[$messageID] : '', 'tribe_action_auth' => TRIBE_ACTION_AUTH, 'tribe_action_chat_add' => TRIBE_ACTION_CHAT_ADD, 'tribe_action_chat_remove' => TRIBE_ACTION_CHAT_REMOVE, 'tribe_action_choose_leader' => TRIBE_ACTION_CHOOSE_LEADER, 'tribe_action_donate' => TRIBE_ACTION_DONATE, 'tribe_action_goverment' => TRIBE_ACTION_GOVERMENT, 'tribe_action_leave' => TRIBE_ACTION_LEAVE, 'tribe_action_message' => TRIBE_ACTION_MESSAGE, 'tribe_action_relation' => TRIBE_ACTION_RELATION, 'tribe_action_update' => TRIBE_ACTION_UPDATE, 'tribe_action_wonder' => TRIBE_ACTION_WONDER, 'tribe_action_kick' => TRIBE_ACTION_KICK)); }