|
|
@@ -0,0 +1,221 @@
|
|
|
+<!DOCTYPE html>
|
|
|
+<html lang='en'>
|
|
|
+ <head>
|
|
|
+ <meta content='text/html; charset=utf-8' http-equiv='content-type'/>
|
|
|
+ <meta name='viewport' content='width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1'/>
|
|
|
+ <title><?=$page->title?></title>
|
|
|
+ <link rel='shortcut icon' href='<?=$page->favicon?>'/>
|
|
|
+ <!-- CSS files -->
|
|
|
+ <link rel='stylesheet' type='text/css' href='<?=$path["css"]?>ui.css'/>
|
|
|
+ <link rel='stylesheet' type='text/css' href='<?=$path["css"]?>report.css'/>
|
|
|
+ <!-- Script files -->
|
|
|
+ <script src="<?=$path["js"]?>ui.js"></script>
|
|
|
+ <!-- Meta tags -->
|
|
|
+ <link rel='canonical' href='<?=$page->canonical?>'/>
|
|
|
+ <link rel='author' href='<?=$page->author?>'/>
|
|
|
+ <link rel='publisher' href='<?=$page->author?>'/>
|
|
|
+ <meta name='description' content='<?=$page->description?>'/>
|
|
|
+ <meta property='og:title' content='<?=$page->title?>'/>
|
|
|
+ <meta property='og:url' content='<?=$page->canonical?>'/>
|
|
|
+ <meta property='og:description' content='<?=$page->description?>'/>
|
|
|
+ <meta property='og:image' content='<?=$page->icon?>'/>
|
|
|
+ <meta property='og:site_name' content='<?=$page->name?>'/>
|
|
|
+ <meta property='og:type' content='website'/>
|
|
|
+ <meta property='og:locale' content='en'/>
|
|
|
+ <meta name='twitter:card' content='summary'/>
|
|
|
+ <meta name='twitter:title' content='<?=$page->title?>'/>
|
|
|
+ <meta name='twitter:description' content='<?=$page->description?>'/>
|
|
|
+ <meta name='twitter:image' content='<?=$page->icon?>'/>
|
|
|
+ <meta name='twitter:url' content='<?=$page->canonical?>'/>
|
|
|
+ <meta name='robots' content='index follow'/>
|
|
|
+ </head>
|
|
|
+ <body id='body_report_skillup'>
|
|
|
+<?php
|
|
|
+ include __DIR__ . "/inc/header.php";
|
|
|
+?>
|
|
|
+ <section id='filters'>
|
|
|
+ <form action='/report/skillup/' method='get'>
|
|
|
+ <div class='filter' id='filter_stars'>
|
|
|
+ <span>Min. stars:</span>
|
|
|
+ <input type='number' name='min_stars' id='filter_stars_min' min='1' max='6' value='<?=$page->filters["min_stars"]?>'/>
|
|
|
+ <br/>
|
|
|
+ <span>Max. stars:</span>
|
|
|
+ <input type='number' name='max_stars' id='filter_stars_max' min='1' max='6' value='<?=$page->filters["max_stars"]?>'/>
|
|
|
+ </div>
|
|
|
+ <div class='filter' id='filter_stars'>
|
|
|
+ <span>Min. natural stars:</span>
|
|
|
+ <input type='number' name='min_natural_stars' id='filter_stars_min' min='1' max='5' value='<?=$page->filters["min_natural_stars"]?>'/>
|
|
|
+ <br/>
|
|
|
+ <span>Max. natural stars:</span>
|
|
|
+ <input type='number' name='max_natural_stars' id='filter_stars_max' min='1' max='5' value='<?=$page->filters["max_natural_stars"]?>'/>
|
|
|
+ </div>
|
|
|
+ <div class='filter'>
|
|
|
+<?php
|
|
|
+ $checked = "";
|
|
|
+ if ($page->filters["in_storage"]){
|
|
|
+ $checked = "checked";
|
|
|
+ }
|
|
|
+?>
|
|
|
+ <input type='checkbox' name='in_storage' <?=$checked?>/>
|
|
|
+ Show monsters in storage
|
|
|
+ <br/>
|
|
|
+<?php
|
|
|
+ $checked = "";
|
|
|
+ if ($page->filters["without_runes"]){
|
|
|
+ $checked = "checked";
|
|
|
+ }
|
|
|
+?>
|
|
|
+ <input type='checkbox' name='without_runes' <?=$checked?>/>
|
|
|
+ Show monsters without runes
|
|
|
+ </div>
|
|
|
+ <div id='filter_apply'>
|
|
|
+ <input type='submit' value='Apply'/>
|
|
|
+ </div>
|
|
|
+ </form>
|
|
|
+ </section> <!-- #filters -->
|
|
|
+ <section id='list'>
|
|
|
+ <article>
|
|
|
+<?php
|
|
|
+ foreach ($page->monsters as $mon){
|
|
|
+ if ($mon->monster->awakens_from == "" && $mon->monster->awakens_to == ""){
|
|
|
+ // No to, no from, silver monster.
|
|
|
+ $star_src = $path["img"]["layout"] . "icon/star_silver.png";
|
|
|
+ $mon_title = $mon->monster->element . " " . $mon->monster->name;
|
|
|
+ }
|
|
|
+ elseif ($mon->monster->awakens_from =! "" && $mon->monster->awakens_to == ""){
|
|
|
+ // Already awakened.
|
|
|
+ $star_src = $path["img"]["layout"] . "icon/star_aw.png";
|
|
|
+ $mon_title = $mon->monster->name;
|
|
|
+ }
|
|
|
+ elseif ($mon->monster->awakens_to =! ""){
|
|
|
+ // Awakeable.
|
|
|
+ $star_src = $path["img"]["layout"] . "icon/star.png";
|
|
|
+ $mon_title = $mon->monster->element . " " . $mon->monster->name;
|
|
|
+ }
|
|
|
+ // TODO: Handle second awakenings
|
|
|
+?>
|
|
|
+ <div class='monster'>
|
|
|
+ <div class='profile'>
|
|
|
+ <img id='monster_image' title='<?=$mon_title?>' class='border_<?=$mon->monster->element?>' src='<?=$mon->monster->get_image()?>'/>
|
|
|
+ <div id='details'>
|
|
|
+ <h1><?=$mon_title?></h1>
|
|
|
+ <span class='stars'>
|
|
|
+<?php
|
|
|
+ for ($i = 0; $i < $mon->stars; $i ++){
|
|
|
+?>
|
|
|
+ <img class='star' src='<?=$star_src?>'/>
|
|
|
+<?php
|
|
|
+ }
|
|
|
+?>
|
|
|
+ </span>
|
|
|
+ <span class='level'>
|
|
|
+ Lv. <?=$mon->level?>
|
|
|
+ </span>
|
|
|
+ </div> <!-- #details -->
|
|
|
+ </div> <!-- .profile -->
|
|
|
+
|
|
|
+ <div class='skills'>
|
|
|
+<?php
|
|
|
+ $skill_num = 1;
|
|
|
+ $absolute_level = 0;
|
|
|
+ $absolute_max_level = 0;
|
|
|
+ $ponderated_level = 0;
|
|
|
+ $ponderated_max_level = 0;
|
|
|
+ foreach ($mon->monster->skill as $skill){
|
|
|
+ if ($skill->max_level > 1){
|
|
|
+ $absolute_max_level += $skill->max_level - 1;
|
|
|
+ }
|
|
|
+ switch ($skill_num){
|
|
|
+ case 1:
|
|
|
+ $cur_lvl = $mon->skill_1_level;
|
|
|
+ if ($skill->max_level > 1){
|
|
|
+ $absolute_level += $cur_lvl - 1;
|
|
|
+ $ponderated_level += $cur_lvl - 1;
|
|
|
+ $ponderated_max_level += $skill->max_level - 1;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ $cur_lvl = $mon->skill_2_level;
|
|
|
+ if ($skill->max_level > 1){
|
|
|
+ $absolute_level += $cur_lvl - 1;
|
|
|
+ $ponderated_level += ($cur_lvl - 1) * 1.5;
|
|
|
+ $ponderated_max_level += ($skill->max_level - 1) * 1.5;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ $cur_lvl = $mon->skill_3_level;
|
|
|
+ if ($skill->max_level > 1){
|
|
|
+ $absolute_level += $cur_lvl - 1;
|
|
|
+ $ponderated_level += ($cur_lvl - 1) * 2.0;
|
|
|
+ $ponderated_max_level += ($skill->max_level - 1) * 2.0;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ $cur_lvl = $mon->skill_4_level;
|
|
|
+ if ($skill->max_level > 1){
|
|
|
+ $absolute_level += $cur_lvl - 1;
|
|
|
+ $ponderated_level += ($cur_lvl - 1) * 2.5;
|
|
|
+ $ponderated_max_level += ($skill->max_level - 1) * 2.5;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ $max_lvl = $skill->max_level;
|
|
|
+ if ($max_lvl == $cur_lvl){
|
|
|
+ $maxed = "maxed";
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ $maxed = "";
|
|
|
+ }
|
|
|
+?>
|
|
|
+ <div class='skill'>
|
|
|
+ <img src='<?=$skill->get_image()?>'/>
|
|
|
+ <span class='skill_level <?=$maxed?>'>
|
|
|
+ <?=$cur_lvl?>/<?=$max_lvl?>
|
|
|
+ </span>
|
|
|
+ <span class='skill_name'>
|
|
|
+ <?=$skill->name?>
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+<?php
|
|
|
+ $skill_num ++;
|
|
|
+ }
|
|
|
+?>
|
|
|
+ </div> <!-- #skills -->
|
|
|
+ <table id='skill_averages'>
|
|
|
+ <tr>
|
|
|
+ <td class='title'>
|
|
|
+ Absolute skill-ups:
|
|
|
+ </td>
|
|
|
+ <td class='value'>
|
|
|
+ <?=number_format($absolute_level * 100 / $absolute_max_level, 2)?>%
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td class='title'>
|
|
|
+ Ponderated skill-ups:
|
|
|
+ </td>
|
|
|
+ <td class='value'>
|
|
|
+ <?=number_format($ponderated_level * 100 / $ponderated_max_level, 2)?>%
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td class='title'>
|
|
|
+ Remaining skill-ups:
|
|
|
+ </td>
|
|
|
+ <td class='value'>
|
|
|
+ <?=$absolute_max_level - $absolute_level?>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+<?php
|
|
|
+ }
|
|
|
+?>
|
|
|
+ </article>
|
|
|
+ </section> <!-- #catalog -->
|
|
|
+
|
|
|
+<?php
|
|
|
+ include __DIR__ . "/inc/footer.php";
|
|
|
+?>
|
|
|
+ </body>
|
|
|
+</html>
|