public static function renderPage($address) { global $MAIN_DIR; $item = tools::getPage($address); $template = file_get_contents('templates/athlas.htm'); // Если это не неведомое, не песочница и не меморизы - обрезаем сцену под коэффициент if (!tools::startswith($address, 'unknown') && !tools::startswith($address, 'common/memories') && $_SESSION['doctor_skills']['text_size']) { $item['scen'] = tools::splice_text($item['scen'], $_SESSION['doctor_skills']['text_size']); } if (!$_SESSION['labels']['memories_passed']) { $_SESSION['labels']['memories_passed'] = array(); } // Если это меморизы, и на этой странице уже были - разрешаем второй раз не читать if (strpos($_SESSION['current_page'], 'memories') && in_array($_SESSION['current_page'], $_SESSION['labels']['memories_passed'])) { $arr = tools::split_text($item['scen']); // print_r($arr); if (count($arr) > 9) { $item['scen'] = join('', array_slice($arr, 0, 5)) . "{3mm}...{3mm}" . join("", array_slice($arr, -4)); } } $out = $template; if (!$item['image']) { $item['image'] = $item['page'] . '.jpg'; } $item['athlas_page'] = ''; $sack = new cStoneSet($_SESSION['sack']); $item['sack_stones'] = $sack->getStonesText(); $heap = new cStoneSet($_SESSION['heap']); $item['heap_stones'] = $heap->getStonesText(); $patient = $_SESSION['patient']; if ($item['todos']) { $item['todos'] = "<img src='../images/question.png' class=img_question>" . $item['todos']; } foreach ($item as $key => $value) { $out = str_replace("{" . $key . "}", $value, $out); } $out = tools::replace_hiddens($out); $out = tools::replace_template_conditions($out); $out = tools::replace_page_fog($out); $out = tools::replace_template_conditions($out); // Заменяем hypno_next if (count($_SESSION['labels']['hypno_page_sequence'])) { $out = str_replace('{hypno_next}', 'Иди {page:' . $_SESSION['labels']['hypno_page_sequence'][0] . '}', $out); } else { $out = str_replace('{hypno_next}', '{hypno_end}', $out); } $out = preg_replace('~\\{awake:(.*?)\\}~', 'Перейди {page:unknown/sandbox/random_\\1}', $out); $out = preg_replace('~\\{page:(.*?)\\}~', '<div class=button><a onclick="transfer(\'\\1\');">НА СЛЕДУЮЩУЮ СТРАНИЦУ</a></div>', $out); $repl = file_get_contents($MAIN_DIR . "replacements.py"); $repl = substr($repl, strpos($repl, '{')); $repl = json_decode($repl, 1); foreach ($repl as $key => $value) { $out = str_replace("{" . $key . "}", $value, $out); } // die("<pre>".$out."</pre>"); return $out; }
} $_SESSION['current_page'] = implode('/', $address); $_SESSION['current_page'] = tools::decipher_address($_SESSION['current_page']); $page = tools::getPage($_SESSION['current_page']); } // Берем новую страницу и смотрим, есть ли на ней коды if ($page['code'] && $_SESSION['page_last_code_executed'] != $_SESSION['current_page']) { eval($page['code'] . ';'); } $_SESSION['page_last_code_executed'] = $_SESSION['current_page']; // Если это - очередная страница гипносеквенса, отрезаем от гипносеквенса первый элемент if ($_SESSION['current_page'] == $_SESSION['labels']['hypno_page_sequence'][0]) { $_SESSION['labels']['hypno_page_sequence'] = array_slice($_SESSION['labels']['hypno_page_sequence'], 1); } // Костыль для эксперимента: получение бонуса if (tools::startswith($_SESSION['current_page'], 'common/experiment/death_after')) { # Определяем бонус // $bonus = $bonuses[$_SESSION['patient']['color']][$_SESSION['exp']['drug']]; $penalty_prx = 'Что-то в тебе неуловимо изменилось... <br>'; $penalty_sfx = '<br/>Этот эффект будет длиться следующие 9 часов и НЕ может быть снят НИКАКИМ способом. НО следующая порция препарата "Непобедимый" ЗАМЕНИТ его на свои, НОВЫЕ эффекты.'; $penalty2_sfx = '<br/>Эти эффекты будут длиться следующие 9 часов и НЕ могут быть сняты НИКАКИМ способом. НО следующая порция препарата "Непобедимый" ЗАМЕНИТ их на свои, НОВЫЕ эффекты.'; if ($year == '1945') { $bonus = $new_bonuses[$_SESSION['exp']['drug']][$_SESSION['labels']['selected_psychotype']]; } else { $bonus = $bonuses[$_SESSION['patient']['color']][$_SESSION['exp']['drug']]; } $penalty = $_SESSION['exp']['penalty']; $_SESSION['messages'][] = $_SESSION['labels']['exp_good_scenes']; $_SESSION['messages'][] = $penalty_prx . $bonus . "<br>" . ($penalty ? $penalty . $penalty2_sfx : $penalty_sfx); } $_SESSION['sack'] = $sack->getStones();