function improvement_getImprovementDetail($caveID, &$details) { global $template; // open template $template->setFile('improvementBuilder.tmpl'); // messages $messageText = array(0 => array('type' => 'success', 'message' => _('Der Arbeitsauftrag wurde erfolgreich gestoppt.')), 1 => array('type' => 'error', 'message' => _('Es konnte kein Arbeitsauftrag gestoppt werden.')), 2 => array('type' => 'error', 'message' => _('Der Auftrag konnte nicht erteilt werden. Es fehlen die notwendigen Voraussetzungen.')), 3 => array('type' => 'success', 'message' => _('Der Arbeitsauftrag wurde erfolgreich erteilt.')), 5 => array('type' => 'success', 'message' => _('Das Gebäude wurde erfolgreich abgerissen.')), 6 => array('type' => 'error', 'message' => _('Das Gebäude konnte nicht abgerissen werden.')), 7 => array('type' => 'error', 'message' => _('Sie haben von der Sorte gar keine Gebäude.')), 8 => array('type' => 'error', 'message' => sprintf(_('Sie können derzeit kein Gebäude oder Verteidigungen abreißen, weil erst vor Kurzem etwas in dieser Höhle abgerissen wurde. Generell muss zwischen zwei Abrissen eine Zeitspanne von %d Minuten liegen.'), TORE_DOWN_TIMEOUT)), 9 => array('type' => 'error', 'message' => _('Der Arbeitsauftrag konnte nicht erteilt werden. Ein Arbeitsauftrag ist schon im Gange.'))); // get this cave's queue $queue = improvement_getQueue($_SESSION['player']->playerID, $caveID); $action = Request::getVar('action', ''); switch ($action) { /**************************************************************************************************** * * Erweiterung bauen * ****************************************************************************************************/ case 'build': $buildingID = Request::getVar('buildingID', -1); if ($buildingID == -1) { $messageID = 2; break; } // check queue exist if (sizeof($queue)) { $messageID = 9; break; } $messageID = improvement_processOrder($buildingID, $caveID, $details); $details = getCaveSecure($caveID, $_SESSION['player']->playerID); $queue = improvement_getQueue($_SESSION['player']->playerID, $caveID); break; /**************************************************************************************************** * * Ausbau der Erweiterung abbrechen * ****************************************************************************************************/ /**************************************************************************************************** * * Ausbau der Erweiterung abbrechen * ****************************************************************************************************/ case 'cancelOrder': $eventID = Request::getVar('id', 0); if ($eventID == 0) { $messageID = 1; break; } // check queue exist if (!sizeof($queue) || $queue['event_expansionID'] != $eventID) { $messageID = 1; break; } if (Request::isPost('cancelOrderConfirm')) { $messageID = improvement_cancelOrder($eventID, $caveID); if ($messageID == 0) { $queue = null; } } else { $template->addVars(array('cancelOrder_box' => true, 'confirm_action' => 'cancelOrder', 'confirm_id' => $eventID, 'confirm_mode' => IMPROVEMENT_BUILDER, 'confirm_msg' => sprintf(_('Möchtest du den Arbeitsauftrag von <span class="bold">%s</span> abbrechen?'), $GLOBALS['buildingTypeList'][$queue['expansionID']]->name))); } break; /**************************************************************************************************** * * Erweiterung abreißen * ****************************************************************************************************/ /**************************************************************************************************** * * Erweiterung abreißen * ****************************************************************************************************/ case 'demolishing': $improvementID = Request::getVar('id', -1); if ($improvementID == -1) { $messageID = 4; break; } if (!isset($GLOBALS['buildingTypeList'][$improvementID])) { $messageID = 4; break; } if (Request::isPost('cancelOrderConfirm')) { $messageID = improvement_Demolishing($improvementID, $caveID, $details); $details = getCaveSecure($caveID, $_SESSION['player']->playerID); } else { $template->addVars(array('cancelOrder_box' => true, 'confirm_action' => 'demolishing', 'confirm_id' => $improvementID, 'confirm_mode' => IMPROVEMENT_BUILDER, 'confirm_msg' => sprintf(_('Möchtest du <span class="bold">%s</span> einmal abreißen?'), $GLOBALS['buildingTypeList'][$improvementID]->name))); } break; } $improvement = $improvementRelict = $improvementUnqualified = array(); foreach ($GLOBALS['buildingTypeList'] as $id => $building) { $maxLevel = round(eval('return ' . formula_parseToPHP("{$building->maxLevel};", '$details'))); $notenough = FALSE; $result = rules_checkDependencies($building, $details); /**************************************************************************************************** * * Erweiterungen die gebaut werden können. * ****************************************************************************************************/ if ($result === TRUE) { $improvement[$building->buildingID] = array('name' => $building->name, 'dbFieldName' => $building->dbFieldName, 'building_id' => $building->buildingID, 'cave_id' => $caveID, 'time' => time_formatDuration(eval('return ' . formula_parseToPHP($building->productionTimeFunction . ";", '$details')) * BUILDING_TIME_BASE_FACTOR), 'maxlevel' => $maxLevel, 'currentlevel' => "0" + $details[$building->dbFieldName], 'breakdown_link' => $details[$building->dbFieldName] > 0 ? true : false); $improvement[$building->buildingID] = array_merge($improvement[$building->buildingID], parseCost($building, $details)); // show the building link ?! if (sizeof($queue)) { $improvement[$building->buildingID]['no_build_msg'] = _('Ausbau im Gange'); } else { if ($improvement[$building->buildingID]['notenough'] && $maxLevel > $details[$building->dbFieldName]) { $improvement[$building->buildingID]['no_build_msg'] = _('Zu wenig Rohstoffe'); } else { if ($maxLevel > $details[$building->dbFieldName]) { $improvement[$building->buildingID]['build_link'] = true; } else { $improvement[$building->buildingID]['no_build_msg'] = _('Max. Stufe'); } } } /**************************************************************************************************** * * Erweiterungen die zwar nicht gebaut werden können aber schon in der Höhle sind (Relikt) * ****************************************************************************************************/ } else { if ($details[$building->dbFieldName]) { $improvementRelict[$building->buildingID] = array('name' => $building->name, 'dbFieldName' => $building->dbFieldName, 'building_id' => $building->buildingID, 'cave_id' => $caveID, 'currentlevel' => "0" + $details[$building->dbFieldName], 'dependencies' => $result !== FALSE ? $result : false); /**************************************************************************************************** * * Erweiterungen die nicht gebaut werden können. * ****************************************************************************************************/ } else { if ($result !== FALSE && !$building->nodocumentation) { $improvementUnqualified[$building->buildingID] = array('name' => $building->name, 'dbFieldName' => $building->dbFieldName, 'building_id' => $building->buildingID, 'cave_id' => $caveID, 'dependencies' => $result); } } } } /**************************************************************************************************** * * Irgendwas im Ausbau? * ****************************************************************************************************/ if (sizeof($queue)) { $template->addVars(array('quene_show' => true, 'quene_name' => $GLOBALS['buildingTypeList'][$queue['expansionID']]->name, 'quene_nextlevel' => $details[$GLOBALS['buildingTypeList'][$queue['expansionID']]->dbFieldName] + 1, 'quene_finish' => time_formatDatetime($queue['end']), 'quene_modus' => IMPROVEMENT_BUILDER, 'quene_event_id' => $queue['event_expansionID'])); } /**************************************************************************************************** * * Übergeben ans Template * ****************************************************************************************************/ $template->addVars(array('cave_id' => $caveID, 'status_msg' => isset($messageID) ? $messageText[$messageID] : '', 'improvement' => $improvement, 'improvement_unqualified' => $improvementUnqualified, 'improvement_relict' => $improvementRelict)); }
function merchant_getMechantDetail($playerID, $caveID, &$details) { global $db, $template; // open template $template->setFile('merchant.tmpl'); @(include_once 'rules/rndMessages.php'); // messages $messageText = array(-3 => array('type' => 'info', 'message' => "Der Händler schaut dich entgeistert an. \"Was willst du von mir?\""), -2 => array('type' => 'info', 'message' => "Der Händler schaut dich entgeistert an. \"Du warst doch gerade erst hier. Komm später nochmal wieder\""), -1 => array('type' => 'error', 'message' => "Es ist ein Fehler bei der Verarbeitung Ihrer Anfrage aufgetreten. Bitte wenden Sie sich an die Administratoren."), 0 => array('type' => 'info', 'message' => "Der Händler schüttelt mit dem Kopf. \"Meine Ware hat ihren Preis und sie ist jeden Rohstoff wert! Der nächste Häuptling ist bestimmt bereit meinen Preis zu zahlen!\""), 1 => array('type' => 'success', 'message' => "Erfreut nimmt der Händler deine Bezahlung entgegen. \"Ich hoffe dir gefällt meine Ware. Empfehle mich bitte weiter!\"")); $action = Request::getVar('action', ''); switch ($action) { /**************************************************************************************************** * * Holen wir mal das zeugs * ****************************************************************************************************/ case 'order': $tradeID = Request::getVar('tradeID', -1); if (!isset($GLOBALS['tradeTypeList'][$tradeID])) { $messageID = -3; break; } $messageID = merchant_processOrder($tradeID, $caveID, $details); $details = getCaveSecure($caveID, $_SESSION['player']->playerID); break; } /**************************************************************************************************** * * Anzeigen der kaufbaren Sachen * ****************************************************************************************************/ foreach ($GLOBALS['tradeCategoriesTypeList'] as $j => $cat) { $trades[$j] = array('id' => $j, 'name' => $GLOBALS['tradeCategoriesTypeList'][$j]->name); $lockedCat = array(); $sql = $db->prepare("SELECT LockTill < :LockTill as allowed, LockTill, cat\n FROM " . TRADELOCK_TABLE . "\n WHERE PlayerID = :playerID"); $sql->bindValue('LockTill', date("Y-m-d H:i:s", time()), PDO::PARAM_STR); $sql->bindValue('playerID', $playerID, PDO::PARAM_INT); if (!$sql->execute()) { $locktill = array(); } while ($row = $sql->fetch(PDO::FETCH_ASSOC)) { if ($row['allowed'] == 0) { $lockedCat[$row['cat']] = time_fromDatetime($row['LockTill']); } } $sql->closeCursor(); $count = 0; foreach ($GLOBALS['tradeTypeList'] as $id => $trade) { if ($trade->nodocumentation) { continue; } if ($trade->category != $GLOBALS['tradeCategoriesTypeList'][$j]->id) { continue; } $less = false; $canbuy = true; $locktill = ''; if (isset($lockedCat[$cat->id])) { $canbuy = false; $locktill = $lockedCat[$cat->id]; } $trades[$j]['data'][$id] = array('bgID' => $count++ % 2 + 1, 'name' => $trade->name, 'trade_id' => $id, 'description' => $trade->description, 'dbFieldName' => $trade->tradeID, 'locktill' => !$canbuy ? sprintf(_('Wieder im Angebot ab %s'), gmdate("d.m.Y H:i:s", $locktill)) : ''); $trades[$j]['data'][$id] = array_merge($trades[$j]['data'][$id], parseCost($trade, $details)); // show the building link ?! if (!$canbuy) { $trades[$j]['data'][$id]['no_build_msg'] = sprintf(_('Wieder im Angebot ab %s'), gmdate("d.m.Y H:i:s", $locktill)); } else { if ($trades[$j]['data'][$id]['notenough']) { $trades[$j]['data'][$id]['no_build_msg'] = _('Zu wenig Rohstoffe'); } else { $trades[$j]['data'][$id]['build_link'] = true; } } } } if (isset($GLOBALS['rndMerchantMessageText'])) { if (!isset($_SESSION['merchant_text_id']) || !isset($_SESSION['merchant_text_time']) || $_SESSION['merchant_text_time'] < time()) { $_SESSION['merchant_text_id'] = array_rand($GLOBALS['rndMerchantMessageText'], 1); $_SESSION['merchant_text_time'] = time() + 900; } $template->addVar('rndMessage', $GLOBALS['rndMerchantMessageText'][$_SESSION['merchant_text_id']]); } /**************************************************************************************************** * * Übergeben ans Template * ****************************************************************************************************/ $template->addVars(array('cave_id' => $caveID, 'status_msg' => isset($messageID) ? $messageText[$messageID] : '', 'trades' => $trades)); }
function wonder_getWonderContent($caveID, &$details) { global $template; // open template $template->setFile('wonder.tmpl'); // messages $messageText = array(-3 => array('type' => 'error', 'message' => _('Die angegebene Zielhöhle wurde nicht gefunden.')), -2 => array('type' => 'error', 'message' => _('Das Wunder kann nicht auf die angegbene Zielhöhle erwirkt werden.')), -1 => array('type' => 'error', 'message' => _('Es ist ein Fehler bei der Verarbeitung Ihrer Anfrage aufgetreten. Bitte wenden Sie sich an die Administratoren')), 0 => array('type' => 'error', 'message' => _('Das Wunder kann nicht erwirkt werden. Es fehlen die notwendigen Voraussetzungen')), 1 => array('type' => 'success', 'message' => _('Das Erflehen des Wunders scheint Erfolg zu haben.')), 2 => 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!'))); $action = Request::getVar('action', ''); switch ($action) { /**************************************************************************************************** * * "wundern" xD * ****************************************************************************************************/ case 'wonder': $wonderID = Request::getVar('wonderID', -1); $caveName = Request::getVar('CaveName', ''); $xCoord = Request::getVar('xCoord', 0); $yCoord = Request::getVar('yCoord', 0); if ($wonderID != -1) { if (!empty($caveName)) { $caveData = getCaveByName($caveName); $xCoord = $caveData['xCoord']; $yCoord = $caveData['yCoord']; } else { if ($xCoord == 0 && $yCoord == 0) { $messageID = -3; break; } } } else { $messageID = -1; break; } $messageID = wonder_processOrder($_SESSION['player']->playerID, $wonderID, $caveID, $xCoord, $yCoord, $details); $details = getCaveSecure($caveID, $_SESSION['player']->playerID); if ($messageID == 1 || $messageID == 2) { wonder_addStatistic($wonderID, $messageID); } break; } // Show the wonder table $wonders = $wondersUnqualified = array(); foreach ($GLOBALS['wonderTypeList'] as $id => $wonder) { // exclude tribeWonders if ($wonder->isTribeWonder) { continue; } $result = rules_checkDependencies($wonder, $details); /**************************************************************************************************** * * Wunder die gebetet werden können. * ****************************************************************************************************/ if ($result === TRUE && !$wonder->nodocumentation) { $wonders[$wonder->wonderCategory]['items'][$wonder->wonderID] = array('dbFieldName' => $wonder->wonderID, 'name' => $wonder->name, 'wonder_id' => $wonder->wonderID, 'wonderCategory' => $wonder->wonderCategory, 'description' => $wonder->description, 'same' => $wonder->target == 'same' ? true : false); $wonders[$wonder->wonderCategory]['items'][$wonder->wonderID] = array_merge($wonders[$wonder->wonderCategory]['items'][$wonder->wonderID], parseCost($wonder, $details)); // show the building link ?! if ($wonders[$wonder->wonderCategory]['items'][$wonder->wonderID]['notenough']) { $wonders[$wonder->wonderCategory]['items'][$wonder->wonderID]['no_build_msg'] = _('Zu wenig Rohstoffe'); } else { $wonders[$wonder->wonderCategory]['items'][$wonder->wonderID]['build_link'] = true; } /**************************************************************************************************** * * Wunder die nicht gewundert werden können. * ****************************************************************************************************/ } else { if ($result !== FALSE && !$wonder->nodocumentation) { $wondersUnqualified[$wonder->wonderCategory]['items'][$wonder->wonderID] = array('name' => $wonder->name, 'wonder_id' => $wonder->wonderID, 'wonderCategory' => $wonder->wonderCategory, 'description' => $wonder->description, 'dependencies' => $result); } } } /**************************************************************************************************** * * Namen zu den Kategorien hinzufügen & sortieren * ****************************************************************************************************/ $tmpWonders = $tmpWondersUnqualified = array(); foreach ($GLOBALS['wonderCategoryTypeList'] as $wonderCategory) { if (isset($wonders[$wonderCategory->id])) { $tmpWonders[$wonderCategory->sortID] = array('name' => $wonderCategory->name, 'items' => $wonders[$wonderCategory->id]['items']); unset($wonders[$wonderCategory->id]); } if (isset($wondersUnqualified[$wonderCategory->id])) { $tmpWondersUnqualified[$wonderCategory->sortID] = array('name' => $wonderCategory->name, 'items' => $wondersUnqualified[$wonderCategory->id]['items']); unset($wondersUnqualified[$wonderCategory->id]); } } $wonders = $tmpWonders; $wondersUnqualified = $tmpWondersUnqualified; unset($tmpWonders, $tmpWondersUnqualified); ksort($wonders); ksort($wondersUnqualified); /**************************************************************************************************** * * Übergeben ans Template * ****************************************************************************************************/ $template->addVars(array('cave_id' => $caveID, 'status_msg' => isset($messageID) ? $messageText[$messageID] : '', 'wonders' => $wonders, 'wonders_unqualified' => $wondersUnqualified)); }
/** * */ function defense_builder($caveID, &$details) { global $template; // open template $template->setFile('defenseBuilder.tmpl'); //messages $messageText = array(0 => array('type' => 'error', 'message' => _('Es konnte kein Arbeitsauftrag gestoppt werden.')), 1 => array('type' => 'success', 'message' => _('Der Arbeitsauftrag wurde erfolgreich gestoppt.')), 2 => array('type' => 'info', 'message' => sprintf(_('Du kannst derzeit kein Gebäude oder Verteidigungen abreissen, weil erst vor Kurzem etwas in dieser Höhle abgerissen wurde. Generell muss zwischen zwei Abrissen eine Zeitspanne von %d Minuten liegen.'), TORE_DOWN_TIMEOUT)), 3 => array('type' => 'error', 'message' => _('Du hast von der Sorte gar keine Gebäude')), 4 => array('type' => 'error', 'message' => _('Das Gebäude konnte nicht abgerissen werden.')), 5 => array('type' => 'success', 'message' => _('Das Gebäude wurde erfolgreich abgerissen.')), 6 => array('type' => 'error', 'message' => _('Der Auftrag konnte nicht erteilt werden. Es fehlen die notwendigen Voraussetzungen.')), 7 => array('type' => 'success', 'message' => _('Der Arbeitsauftrag wurde erteilt.')), 8 => array('type' => 'error', 'message' => _('Der Arbeitsauftrag konnte nicht erteilt werden. Ein Arbeitsauftrag ist schon im Gange.'))); // get this cave's queue $queue = defense_getQueue($_SESSION['player']->playerID, $caveID); $action = Request::getVar('action', ''); switch ($action) { /**************************************************************************************************** * * Verteidigungsanlage bauen * ****************************************************************************************************/ case 'build': $defenseID = Request::getVar('defenseID', -1); if ($defenseID == -1 || !isset($GLOBALS['defenseSystemTypeList'][$defenseID])) { $messageID = 6; break; } // check queue exist if (sizeof($queue)) { $messageID = 8; break; } $messageID = defense_processOrder($defenseID, $caveID, $details); $details = getCaveSecure($caveID, $_SESSION['player']->playerID); $queue = defense_getQueue($_SESSION['player']->playerID, $caveID); break; /**************************************************************************************************** * * Ausbau der Verteidigungsanlage abbrechen * ****************************************************************************************************/ /**************************************************************************************************** * * Ausbau der Verteidigungsanlage abbrechen * ****************************************************************************************************/ case 'cancelOrder': $eventID = Request::getVar('id', 0); if ($eventID == 0) { $messageID = 0; break; } // check queue exist if (!sizeof($queue) || $queue['event_defenseSystemID'] != $eventID) { $messageID = 0; break; } if (Request::isPost('postConfirm')) { $messageID = defense_cancelOrder($eventID, $caveID); if ($messageID == 1) { $queue = null; } } else { $template->addVars(array('cancelOrder_box' => true, 'confirm_action' => 'cancelOrder', 'confirm_id' => $eventID, 'confirm_mode' => DEFENSE_BUILDER, 'confirm_msg' => sprintf(_('Möchtest du den Arbeitsauftrag von <span class="bold">%s</span> abbrechen?'), $GLOBALS['defenseSystemTypeList'][$queue['defenseSystemID']]->name))); } break; /**************************************************************************************************** * * Verteidigungsanlage abreißen * ****************************************************************************************************/ /**************************************************************************************************** * * Verteidigungsanlage abreißen * ****************************************************************************************************/ case 'demolishing': $defenseID = Request::getVar('id', -1); if ($defenseID == -1) { $messageID = 4; break; } if (!isset($GLOBALS['defenseSystemTypeList'][$defenseID])) { $messageID = 4; break; } if (Request::isPost('postConfirm')) { $messageID = defense_Demolishing($defenseID, $caveID, $details); $details = getCaveSecure($caveID, $_SESSION['player']->playerID); } else { $template->addVars(array('cancelOrder_box' => true, 'confirm_action' => 'demolishing', 'confirm_id' => $defenseID, 'confirm_mode' => DEFENSE_BUILDER, 'confirm_msg' => sprintf(_('Möchtest du <span class="bold">%s</span> einmal abreißen?'), $GLOBALS['defenseSystemTypeList'][$defenseID]->name))); } break; } $defenseSystem = $defenseSystemRelict = $defenseSystemUnqualified = array(); foreach ($GLOBALS['defenseSystemTypeList'] as $id => $defense) { $maxLevel = round(eval('return ' . formula_parseToPHP("{$defense->maxLevel};", '$details'))); $result = rules_checkDependencies($defense, $details); // if all requirements are met, but the maxLevel is 0, treat it like a non-buildable if ($maxLevel <= 0 && $result === TRUE) { $result = !$details[$defense->dbFieldName] ? _('Max. Stufe: 0') : false; } /**************************************************************************************************** * * Verteidigungsanlage die gebaut werden können. * ****************************************************************************************************/ if ($result === TRUE) { $defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID] = array('name' => $defense->name, 'dbFieldName' => $defense->dbFieldName, 'defense_id' => $defense->defenseSystemID, 'cave_id' => $caveID, 'time' => time_formatDuration(eval('return ' . formula_parseToPHP($defense->productionTimeFunction . ";", '$details')) * DEFENSESYSTEM_TIME_BASE_FACTOR), 'maxlevel' => $maxLevel, 'currentlevel' => "0" + $details[$defense->dbFieldName], 'antiSpyChance' => $defense->antiSpyChance, 'breakdown_link' => $details[$defense->dbFieldName] > 0 ? true : false); $defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID] = array_merge($defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID], parseCost($defense, $details)); // show the building link ?! if (sizeof($queue)) { $defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID]['no_build_msg'] = _('Ausbau im Gange'); } else { if ($defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID]['notenough'] && $maxLevel > $details[$defense->dbFieldName]) { $defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID]['no_build_msg'] = _('Zu wenig Rohstoffe'); } else { if ($maxLevel > $details[$defense->dbFieldName]) { $defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID]['build_link'] = true; } else { $defenseSystem[$defense->defenseCategory]['items'][$defense->defenseSystemID]['no_build_msg'] = _('Max. Stufe'); } } } /**************************************************************************************************** * * Verteidigungsanlage die zwar nicht gebaut werden können aber schon in der Höhle sind (Relikt) * ****************************************************************************************************/ } else { if ($details[$defense->dbFieldName]) { $defenseSystemRelict[$defense->defenseCategory]['items'][$defense->defenseSystemID] = array('name' => $defense->name, 'dbFieldName' => $defense->dbFieldName, 'defense_id' => $defense->defenseSystemID, 'cave_id' => $caveID, 'currentlevel' => "0" + $details[$defense->dbFieldName], 'dependencies' => $result !== false ? $result : false); /**************************************************************************************************** * * Verteidigungsanlage die nicht gebaut werden können. * ****************************************************************************************************/ } else { if ($result !== false && !$defense->nodocumentation) { $defenseSystemUnqualified[$defense->defenseCategory]['items'][$defense->defenseSystemID] = array('name' => $defense->name, 'dbFieldName' => $defense->dbFieldName, 'defense_id' => $defense->defenseSystemID, 'cave_id' => $caveID, 'dependencies' => $result, 'antiSpyChance' => $defense->antiSpyChance); } } } } /**************************************************************************************************** * * Namen zu den Kategorien hinzufügen & sortieren * ****************************************************************************************************/ $tmpDefenseSystem = $tmpDefenseSystemRelict = $tmpDefenseSystemUnqualified = array(); foreach ($GLOBALS['defenseCategoryTypeList'] as $defenseCategory) { if (isset($defenseSystem[$defenseCategory->id])) { $tmpDefenseSystem[$defenseCategory->sortID] = array('id' => $defenseCategory->id, 'name' => $defenseCategory->name, 'items' => $defenseSystem[$defenseCategory->id]['items']); unset($defenseSystem[$defenseCategory->id]); } if (isset($defenseSystemRelict[$defenseCategory->id])) { $tmpDefenseSystemRelict[$defenseCategory->sortID] = array('id' => $defenseCategory->id, 'name' => $defenseCategory->name, 'items' => $defenseSystemRelict[$defenseCategory->id]['items']); unset($defenseSystemRelict[$defenseCategory->id]); } if (isset($defenseSystemUnqualified[$defenseCategory->id])) { $tmpDefenseSystemUnqualified[$defenseCategory->sortID] = array('id' => $defenseCategory->id, 'name' => $defenseCategory->name, 'items' => $defenseSystemUnqualified[$defenseCategory->id]['items']); unset($defenseSystemUnqualified[$defenseCategory->id]); } } $defenseSystem = $tmpDefenseSystem; $defenseSystemRelict = $tmpDefenseSystemRelict; $defenseSystemUnqualified = $tmpDefenseSystemUnqualified; unset($tmpDefenseSystem, $tmpDefenseSystemRelict, $tmpDefenseSystemUnqualified); ksort($defenseSystem); ksort($defenseSystemRelict); ksort($defenseSystemUnqualified); /**************************************************************************************************** * * Irgendwas im Ausbau? * ****************************************************************************************************/ if (sizeof($queue)) { $template->addVars(array('quene_show' => true, 'quene_name' => $GLOBALS['defenseSystemTypeList'][$queue['defenseSystemID']]->name, 'quene_nextlevel' => $details[$GLOBALS['defenseSystemTypeList'][$queue['defenseSystemID']]->dbFieldName] + 1, 'quene_finish' => time_formatDatetime($queue['end']), 'quene_modus' => DEFENSE_BUILDER, 'quene_event_id' => $queue['event_defenseSystemID'])); } /**************************************************************************************************** * * Übergeben ans Template * ****************************************************************************************************/ $template->addVars(array('cave_id' => $caveID, 'status_msg' => isset($messageID) ? $messageText[$messageID] : '', 'defense_system' => $defenseSystem, 'defense_system_unqualified' => $defenseSystemUnqualified, 'defense_system_relict' => $defenseSystemRelict)); }
function tribe_getContent($caveID, &$details) { global $template; // messages $messageText = array(-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.'))); if (!$_SESSION['player']->tribe) { tribe_getContentNoTribe($caveID, $details); return; } $tribeTag = $_SESSION['player']->tribe; $tribeData = tribe_getTribeByTag($tribeTag); if ($tribeData == null) { $template->throwError('Der Stamm konnte nicht geladen werden.'); return; } $tribeMembers = tribe_getAllMembers($tribeTag); // open template $template->setFile('tribeMember.tmpl'); $template->setShowRresource(true); // init auth $auth = new auth(); $userAuth = $auth->getAllTypePermission('tribe', $_SESSION['player']->auth['tribe']); $userAuth['isLeader'] = $tribeData['leaderID'] == $_SESSION['player']->playerID ? true : false; // process form data $messageID = 0; $tribeAction = Request::getVar('action', 0); switch ($tribeAction) { /**************************************************************************************************** * * Spielerrechte Ändern * ****************************************************************************************************/ case TRIBE_ACTION_AUTH: if (!$userAuth['isLeader']) { $messageID = -1; break; } if (!Request::isPost('player_id', true)) { $messageID = -30; break; } $authID = 0; foreach ($auth->perm['tribe'] as $type => $data) { $authID = $authID | Request::getVar($type, 0); } if ($auth->setPermission('tribe', $authID, Request::getVar('player_id', 0))) { $messageID = 10; } else { $messageID = -31; } $tribeMembers = tribe_getAllMembers($tribeTag); break; /**************************************************************************************************** * * Auswahl des Anführers * ****************************************************************************************************/ /**************************************************************************************************** * * Auswahl des Anführers * ****************************************************************************************************/ case TRIBE_ACTION_CHOOSE_LEADER: $voteID = Request::getVar('chooseLeaderID', 0); $messageID = leaderChoose_processChoiceUpdate($voteID, $_SESSION['player']->playerID, $tribeTag); break; /**************************************************************************************************** * * Ressie Spende an den Stamm * ****************************************************************************************************/ /**************************************************************************************************** * * Ressie Spende an den Stamm * ****************************************************************************************************/ case TRIBE_ACTION_DONATE: $value = Request::getVar('value', array('' => '')); $messageID = tribe_donateResources($value, $caveID, $details); $tribeData = tribe_getTribeByTag($tribeTag); break; /**************************************************************************************************** * * Regierungstyp ändern * ****************************************************************************************************/ /**************************************************************************************************** * * Regierungstyp ändern * ****************************************************************************************************/ case TRIBE_ACTION_GOVERMENT: if (!$userAuth['isLeader']) { $messageID = -1; break; } $governmentData = Request::getVar('governmentData', array('' => '')); $messageID = government_processGovernmentUpdate($tribeTag, $governmentData); 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); $messageID = tribe_processKickMember($playerID, $tribeTag); $tribeMembers = tribe_getAllMembers($tribeTag); break; /**************************************************************************************************** * * Bye Bye Stamm :( * ****************************************************************************************************/ /**************************************************************************************************** * * Bye Bye Stamm :( * ****************************************************************************************************/ case TRIBE_ACTION_LEAVE: if (Request::isPost('cancelOrderConfirm')) { $messageID = tribe_processLeave($_SESSION['player']->playerID, $tribeTag); 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; } if (!Request::isPost('messageText', true)) { $messageID = -6; break; } if (Request::isPost('ingame') && ($userAuth['msg_public'] || $userAuth['isLeader'])) { $messageID = tribe_processSendTribeIngameMessage($_SESSION['player']->playerID, $tribeTag, Request::getVar('messageText', '', true)); } else { if ($userAuth['msg_tribe'] || $userAuth['isLeader']) { $messageID = tribe_processSendTribeMessage($_SESSION['player']->playerID, $tribeTag, Request::getVar('messageText', '', true)); } 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; } $relationData = Request::getVar('relationData', array('' => '')); if (Request::isPost('forceSurrender')) { $messageID = relation_forceSurrender($tribeTag, $relationData); } else { $messageID = relation_processRelationUpdate($tribeTag, $relationData); } break; /**************************************************************************************************** * * Stammesinfos aktualisieren * ****************************************************************************************************/ /**************************************************************************************************** * * Stammesinfos aktualisieren * ****************************************************************************************************/ case TRIBE_ACTION_UPDATE: if (!$userAuth['change_settings'] && !$userAuth['isLeader']) { $messageID = -1; break; } $password = Request::getVar('tribe_password', ''); $postData = array('name' => Request::getVar('tribe_name', '', true), 'password' => !empty($password) ? $password : $tribeData['password'], 'avatar' => Request::getVar('tribe_avatar', ''), 'description' => Request::getVar('tribe_description', '', true)); $messageID = tribe_processAdminUpdate($tribeTag, $postData); $tribeData = tribe_getTribeByTag($tribeTag); 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 = wonder_processTribeWonder($caveID, $wonderID, $tribeTag, $tribeName); if ($messageID > 0) { wonder_updateTribeLocked($tribeTag, $wonderID, $tribeData['wonderLocked']); } if ($messageID == 11 || $messageID == 12) { $success = $messageID == 12 ? 1 : 2; wonder_addStatistic($wonderID, $success); } $tribeData = tribe_getTribeByTag($tribeTag); break; } /**************************************************************************************************** * * Auswahl der Regierungsformen * ****************************************************************************************************/ $tribeGovernment = government_getGovernmentForTribe($tribeTag); 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 = leaderChoose_getVoteOf($_SESSION['player']->playerID); $votes = leaderChoose_getElectionResultsForTribe($tribeTag); $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'])); } /**************************************************************************************************** * * Parsen für die Mitgliederliste * ****************************************************************************************************/ $tribeMembersAll = tribe_getPlayerList($tribeTag, true, true); /**************************************************************************************************** * * Auslesen der Stammesnachrichten * ****************************************************************************************************/ $messagesClass = new Messages(); $messageAry = array(); $messages = tribe_getTribeMessages($tribeTag); 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 = relation_getRelationsForTribe($tribeTag); $relationsWar = relation_getWarTargetsAndFame($tribeTag); // 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' => $target, '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' => $target, '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' => $target, '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 = tribe_getTribeStorageDonations($tribeData['tag']); $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; } } } /**************************************************************************************************** * * Übergabe ans Template * ****************************************************************************************************/ if ($messageID && isset($messageText[$messageID])) { $template->addVar('status_msg', $messageText[$messageID]); } $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_all' => $tribeMembersAll, '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, 'tribe_action_auth' => TRIBE_ACTION_AUTH, '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, 'wonders' => $wonders)); }
function unit_getUnitDetail($caveID, &$details) { global $template; // open template $template->setFile('unitBuilder.tmpl'); // messages $messageText = array(0 => array('type' => 'success', 'message' => _('Der Arbeitsauftrag wurde erfolgreich gestoppt.')), 1 => array('type' => 'error', 'message' => _('Es konnte kein Arbeitsauftrag gestoppt werden.')), 2 => array('type' => 'error', 'message' => _('Der Auftrag konnte nicht erteilt werden. Es fehlen die notwendigen Voraussetzungen.')), 3 => array('type' => 'success', 'message' => _('Der Auftrag wurde erteilt')), 4 => array('type' => 'info', 'message' => sprintf(_('Bitte korrekte Anzahl der Einheiten Angeben (1 ... %d)'), MAX_SIMULTAN_BUILDED_UNITS)), 5 => array('type' => 'error', 'message' => _('Der Arbeitsauftrag konnte nicht erteilt werden. Ein Arbeitsauftrag ist schon im Gange.'))); // get this cave's queue $queue = unit_getQueue($_SESSION['player']->playerID, $caveID); $action = Request::getVar('action', ''); switch ($action) { /**************************************************************************************************** * * Einheiten bauen * ****************************************************************************************************/ case 'build': $unitID = Request::getVar('unitID', -1); $quantity = Request::getVar('quantity', 0); if ($unitID == -1) { $messageID = 2; break; } // check queue exist if (sizeof($queue)) { $messageID = 5; break; } $messageID = unit_processOrder($unitID, $quantity, $caveID, $details); $details = getCaveSecure($caveID, $_SESSION['player']->playerID); $queue = unit_getQueue($_SESSION['player']->playerID, $caveID); break; /**************************************************************************************************** * * Ausbau der Einheiten abbrechen * ****************************************************************************************************/ /**************************************************************************************************** * * Ausbau der Einheiten abbrechen * ****************************************************************************************************/ case 'cancelOrder': $eventID = Request::getVar('id', 0); if ($eventID == 0) { $messageID = 1; break; } // check queue exist if (!sizeof($queue) || $queue['event_unitID'] != $eventID) { $messageID = 1; break; } if (Request::isPost('postConfirm')) { $messageID = unit_cancelOrder($eventID, $caveID); if ($messageID == 0) { $queue = null; } } else { $template->addVars(array('cancelOrder_box' => true, 'confirm_action' => 'cancelOrder', 'confirm_id' => $eventID, 'confirm_mode' => UNIT_BUILDER, 'confirm_msg' => sprintf(_('Möchtest du den Arbeitsauftrag von <span class="bold">%s</span> abbrechen?'), $GLOBALS['unitTypeList'][$queue['unitID']]->name))); } break; } $units = $unitsUnqualified = array(); foreach ($GLOBALS['unitTypeList'] as $id => $unit) { $result = rules_checkDependencies($unit, $details); /**************************************************************************************************** * * Einheiten die gebaut werden können. * ****************************************************************************************************/ if ($result === TRUE) { $units[$unit->unitCategory]['items'][$unit->unitID] = array('name' => $unit->name, 'dbFieldName' => $unit->dbFieldName, 'unit_id' => $unit->unitID, 'unitCategory' => $unit->unitCategory, 'cave_id' => $caveID, 'time' => time_formatDuration(eval('return ' . formula_parseToPHP($unit->productionTimeFunction . ";", '$details')) * BUILDING_TIME_BASE_FACTOR), 'stock' => "0" + $details[$unit->dbFieldName], 'description' => $unit->description, 'duration_formula' => formula_parseToReadable($unit->productionTimeFunction), 'visible' => $unit->visible, 'range_attack' => $unit->attackRange, 'areal_attack' => $unit->attackAreal, 'attack_rate' => $unit->attackRate, 'rd_Resist' => $unit->rangedDamageResistance, 'defense_rate' => $unit->defenseRate, 'size' => $unit->hitPoints, 'spy_value' => $unit->spyValue, 'spy_chance' => $unit->spyChance, 'spy_quality' => $unit->spyQuality, 'anti_spy_chance' => $unit->antiSpyChance, 'fuel_name' => $GLOBALS['resourceTypeList'][GameConstants::FUEL_RESOURCE_ID]->dbFieldName, 'fuel_factor' => $unit->foodCost, 'way_cost' => $unit->wayCost, 'normal_damage_probabilit' => 100 * (1 - ($unit->heavyDamageProbability + $unit->criticalDamageProbability)), 'heavy_damage_probability' => 100 * $unit->heavyDamageProbability, 'critical_damage_probability' => 100 * $unit->criticalDamageProbability); $units[$unit->unitCategory]['items'][$unit->unitID] = array_merge($units[$unit->unitCategory]['items'][$unit->unitID], parseCost($unit, $details)); // show the building link ?! if (sizeof($queue)) { $units[$unit->unitCategory]['items'][$unit->unitID]['no_build_msg'] = _('Ausbau im Gange'); } else { if ($units[$unit->unitCategory]['items'][$unit->unitID]['notenough']) { $units[$unit->unitCategory]['items'][$unit->unitID]['no_build_msg'] = _('Zu wenig Rohstoffe'); } else { $units[$unit->unitCategory]['items'][$unit->unitID]['build_link'] = true; } } /**************************************************************************************************** * * Einheiten die nicht gebaut werden können. * ****************************************************************************************************/ } else { if ($result !== FALSE && !$unit->nodocumentation) { $unitsUnqualified[$unit->unitCategory]['items'][$unit->unitID] = array('name' => $unit->name, 'dbFieldName' => $unit->dbFieldName, 'unit_id' => $unit->unitID, 'unitCategory' => $unit->unitCategory, 'cave_id' => $caveID, 'dependencies' => $result, 'description' => $unit->description, 'duration_formula' => formula_parseToReadable($unit->productionTimeFunction), 'visible' => $unit->visible, 'range_attack' => $unit->attackRange, 'areal_attack' => $unit->attackAreal, 'attack_rate' => $unit->attackRate, 'rd_Resist' => $unit->rangedDamageResistance, 'defense_rate' => $unit->defenseRate, 'size' => $unit->hitPoints, 'spy_value' => $unit->spyValue, 'spy_chance' => $unit->spyChance, 'spy_quality' => $unit->spyQuality, 'anti_spy_chance' => $unit->antiSpyChance, 'fuel_name' => $GLOBALS['resourceTypeList'][GameConstants::FUEL_RESOURCE_ID]->dbFieldName, 'fuel_factor' => $unit->foodCost, 'way_cost' => $unit->wayCost, 'normal_damage_probabilit' => 100 * (1 - ($unit->heavyDamageProbability + $unit->criticalDamageProbability)), 'heavy_damage_probability' => 100 * $unit->heavyDamageProbability, 'critical_damage_probability' => 100 * $unit->criticalDamageProbability); $unitsUnqualified[$unit->unitCategory]['items'][$unit->unitID] = array_merge($unitsUnqualified[$unit->unitCategory]['items'][$unit->unitID], parseCost($unit, $details)); } } } /**************************************************************************************************** * * Namen zu den Kategorien hinzufügen & sortieren * ****************************************************************************************************/ $tmpUnits = $tmpUnitsUnqualified = array(); foreach ($GLOBALS['unitCategoryTypeList'] as $unitsCategory) { if (isset($units[$unitsCategory->id])) { $tmpUnits[$unitsCategory->sortID] = array('id' => $unitsCategory->id, 'name' => $unitsCategory->name, 'items' => $units[$unitsCategory->id]['items']); unset($units[$unitsCategory->id]); } if (isset($unitsUnqualified[$unitsCategory->id])) { $tmpUnitsUnqualified[$unitsCategory->sortID] = array('id' => $unitsCategory->id, 'name' => $unitsCategory->name, 'items' => $unitsUnqualified[$unitsCategory->id]['items']); unset($unitsUnqualified[$unitsCategory->id]); } } $units = $tmpUnits; $unitsUnqualified = $tmpUnitsUnqualified; unset($tmpUnits, $tmpUnitsUnqualified); ksort($units); ksort($unitsUnqualified); /**************************************************************************************************** * * Irgendwas im Ausbau? * ****************************************************************************************************/ if (sizeof($queue)) { $template->addVars(array('quene_show' => true, 'quene_name' => $GLOBALS['unitTypeList'][$queue['unitID']]->name, 'quene_quantity' => $queue['quantity'], 'quene_finish' => time_formatDatetime($queue['end']), 'quene_modus' => UNIT_BUILDER, 'quene_event_id' => $queue['event_unitID'])); } /**************************************************************************************************** * * Übergeben ans Template * ****************************************************************************************************/ $template->addVars(array('cave_id' => $caveID, 'status_msg' => isset($messageID) ? $messageText[$messageID] : '', 'units' => $units, 'units_unqualified' => $unitsUnqualified, 'max_build_units' => MAX_SIMULTAN_BUILDED_UNITS)); }
function science_getScienceDetail($caveID, &$details) { global $template; // open template $template->setFile('scienceBuilder.tmpl'); // messages $messageText = array(0 => array('type' => 'success', 'message' => _('Der Forschungsauftrag wurde erfolgreich gestoppt.')), 1 => array('type' => 'error', 'message' => _('Es konnte kein Forschungsauftrag gestoppt werden.')), 2 => array('type' => 'error', 'message' => _('Der Auftrag konnte nicht erteilt werden. Es fehlen die notwendigen Voraussetzungen.')), 3 => array('type' => 'success', 'message' => _('Der Auftrag wurde erteilt')), 4 => array('type' => 'info', 'message' => _('Dieses Wissen wird schon in einer anderen Höhle erforscht.')), 5 => array('type' => 'info', 'message' => _('Es wird gerade in einer anderen Höhle Wissen erforscht, das dieses Wissen ausschließt.'))); // get this cave's queue $queue = science_getQueue($_SESSION['player']->playerID, $caveID); $action = Request::getVar('action', ''); switch ($action) { /**************************************************************************************************** * * Forschung starten * ****************************************************************************************************/ case 'build': $scienceID = Request::getVar('scienceID', -1); if ($scienceID == -1) { $messageID = 2; break; } // check queue exist if (sizeof($queue)) { $messageID = 2; break; } $messageID = science_processOrder($scienceID, $caveID, $details); $details = getCaveSecure($caveID, $_SESSION['player']->playerID); $queue = science_getQueue($_SESSION['player']->playerID, $caveID); break; /**************************************************************************************************** * * Forschung abbrechen * ****************************************************************************************************/ /**************************************************************************************************** * * Forschung abbrechen * ****************************************************************************************************/ case 'cancelOrder': $eventID = Request::getVar('id', 0); if ($eventID == 0) { $messageID = 2; break; } // check queue exist if (!sizeof($queue) || $queue['event_scienceID'] != $eventID) { $messageID = 2; break; } if (Request::isPost('cancelOrderConfirm')) { $messageID = science_cancelOrder($eventID, $caveID); if ($messageID == 0) { $queue = null; } } else { $template->addVars(array('cancelOrder_box' => true, 'confirm_action' => 'cancelOrder', 'confirm_id' => $eventID, 'confirm_mode' => SCIENCE_BUILDER, 'confirm_msg' => sprintf(_('Möchtest die Forschung von <span class="bold">%s</span> abbrechen?'), $GLOBALS['scienceTypeList'][$queue['scienceID']]->name))); } break; } $sciences = $sciencesUnqualified = array(); foreach ($GLOBALS['scienceTypeList'] as $id => $science) { $maxLevel = round(eval('return ' . formula_parseToPHP("{$science->maxLevel};", '$details'))); $notenough = FALSE; $result = rules_checkDependencies($science, $details); /**************************************************************************************************** * * Forschungen die man forschen kann. * ****************************************************************************************************/ if ($result === TRUE) { $sciences[$science->scienceID] = array('name' => $science->name, 'dbFieldName' => $science->dbFieldName, 'science_id' => $science->scienceID, 'modus' => SCIENCE_BUILDER, 'cave_id' => $caveID, 'time' => time_formatDuration(eval('return ' . formula_parseToPHP($science->productionTimeFunction . ";", '$details')) * SCIENCE_TIME_BASE_FACTOR), 'maxlevel' => $maxLevel, 'currentlevel' => "0" + $details[$science->dbFieldName], 'description' => $science->description, 'duration_formula' => formula_parseToReadable($science->productionTimeFunction)); $sciences[$science->scienceID] = array_merge($sciences[$science->scienceID], parseCost($science, $details)); // show the building link ?! if (sizeof($queue)) { $sciences[$science->scienceID]['no_build_msg'] = _('Erforschung im Gange'); } else { if ($sciences[$science->scienceID]['notenough'] && $maxLevel > $details[$science->dbFieldName]) { $sciences[$science->scienceID]['no_build_msg'] = _('Zu wenig Rohstoffe'); } else { if ($maxLevel > $details[$science->dbFieldName]) { $sciences[$science->scienceID]['build_link'] = true; } else { $sciences[$science->scienceID]['no_build_msg'] = _('Max. Stufe'); } } } /**************************************************************************************************** * * Forschungen die noch nicht geforscht werden können. * ****************************************************************************************************/ } else { if ($result !== FALSE && !$science->nodocumentation) { $sciencesUnqualified[$science->scienceID] = array('name' => $science->name, 'dbFieldName' => $science->dbFieldName, 'science_id' => $science->scienceID, 'modus' => SCIENCE_DETAIL, 'caveID' => $caveID, 'dependencies' => $result, 'description' => $science->description, 'duration_formula' => formula_parseToReadable($science->productionTimeFunction)); } } } /**************************************************************************************************** * * Irgendwas im Ausbau? * ****************************************************************************************************/ if (sizeof($queue)) { $template->addVars(array('quene_show' => true, 'quene_name' => $GLOBALS['scienceTypeList'][$queue['scienceID']]->name, 'quene_nextlevel' => $details[$GLOBALS['scienceTypeList'][$queue['scienceID']]->dbFieldName] + 1, 'quene_finish' => time_formatDatetime($queue['end']), 'quene_modus' => SCIENCE_BUILDER, 'quene_event_id' => $queue['event_scienceID'])); } /**************************************************************************************************** * * Übergeben ans Template * ****************************************************************************************************/ $template->addVars(array('cave_id' => $caveID, 'status_msg' => isset($messageID) ? $messageText[$messageID] : '', 'science' => $sciences, 'science_unqualified' => $sciencesUnqualified)); }