report_skillup.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. <!DOCTYPE html>
  2. <html lang='en'>
  3. <head>
  4. <meta content='text/html; charset=utf-8' http-equiv='content-type'/>
  5. <meta name='viewport' content='width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1'/>
  6. <title><?=$page->title?></title>
  7. <link rel='shortcut icon' href='<?=$page->favicon?>'/>
  8. <!-- CSS files -->
  9. <link rel='stylesheet' type='text/css' href='<?=$path["css"]?>ui.css'/>
  10. <link rel='stylesheet' type='text/css' href='<?=$path["css"]?>report.css'/>
  11. <!-- Script files -->
  12. <script src="<?=$path["js"]?>ui.js"></script>
  13. <!-- Meta tags -->
  14. <link rel='canonical' href='<?=$page->canonical?>'/>
  15. <link rel='author' href='<?=$page->author?>'/>
  16. <link rel='publisher' href='<?=$page->author?>'/>
  17. <meta name='description' content='<?=$page->description?>'/>
  18. <meta property='og:title' content='<?=$page->title?>'/>
  19. <meta property='og:url' content='<?=$page->canonical?>'/>
  20. <meta property='og:description' content='<?=$page->description?>'/>
  21. <meta property='og:image' content='<?=$page->icon?>'/>
  22. <meta property='og:site_name' content='<?=$page->name?>'/>
  23. <meta property='og:type' content='website'/>
  24. <meta property='og:locale' content='en'/>
  25. <meta name='twitter:card' content='summary'/>
  26. <meta name='twitter:title' content='<?=$page->title?>'/>
  27. <meta name='twitter:description' content='<?=$page->description?>'/>
  28. <meta name='twitter:image' content='<?=$page->icon?>'/>
  29. <meta name='twitter:url' content='<?=$page->canonical?>'/>
  30. <meta name='robots' content='index follow'/>
  31. </head>
  32. <body id='body_report_skillup'>
  33. <?php
  34. include __DIR__ . "/inc/header.php";
  35. ?>
  36. <section id='filters'>
  37. <form action='/report/skillup/' method='get'>
  38. <div class='filter' id='filter_stars'>
  39. <span>Min. stars:</span>
  40. <input type='number' name='min_stars' id='filter_stars_min' min='1' max='6' value='<?=$page->filters["min_stars"]?>'/>
  41. <br/>
  42. <span>Max. stars:</span>
  43. <input type='number' name='max_stars' id='filter_stars_max' min='1' max='6' value='<?=$page->filters["max_stars"]?>'/>
  44. </div>
  45. <div class='filter' id='filter_stars'>
  46. <span>Min. natural stars:</span>
  47. <input type='number' name='min_natural_stars' id='filter_stars_min' min='1' max='5' value='<?=$page->filters["min_natural_stars"]?>'/>
  48. <br/>
  49. <span>Max. natural stars:</span>
  50. <input type='number' name='max_natural_stars' id='filter_stars_max' min='1' max='5' value='<?=$page->filters["max_natural_stars"]?>'/>
  51. </div>
  52. <div class='filter'>
  53. <?php
  54. $checked = "";
  55. if ($page->filters["in_storage"]){
  56. $checked = "checked";
  57. }
  58. ?>
  59. <input type='checkbox' name='in_storage' <?=$checked?>/>
  60. Show monsters in storage
  61. <br/>
  62. <?php
  63. $checked = "";
  64. if ($page->filters["without_runes"]){
  65. $checked = "checked";
  66. }
  67. ?>
  68. <input type='checkbox' name='without_runes' <?=$checked?>/>
  69. Show monsters without runes
  70. </div>
  71. <div id='filter_apply'>
  72. <input type='submit' value='Apply'/>
  73. </div>
  74. </form>
  75. </section> <!-- #filters -->
  76. <section id='list'>
  77. <article>
  78. <?php
  79. foreach ($page->monsters as $mon){
  80. if ($mon->monster->awakens_from == "" && $mon->monster->awakens_to == ""){
  81. // No to, no from, silver monster.
  82. $star_src = $path["img"]["layout"] . "icon/star_silver.png";
  83. $mon_title = $mon->monster->element . " " . $mon->monster->name;
  84. }
  85. elseif ($mon->monster->awakens_from =! "" && $mon->monster->awakens_to == ""){
  86. // Already awakened.
  87. $star_src = $path["img"]["layout"] . "icon/star_aw.png";
  88. $mon_title = $mon->monster->name;
  89. }
  90. elseif ($mon->monster->awakens_to =! ""){
  91. // Awakeable.
  92. $star_src = $path["img"]["layout"] . "icon/star.png";
  93. $mon_title = $mon->monster->element . " " . $mon->monster->name;
  94. }
  95. // TODO: Handle second awakenings
  96. ?>
  97. <div class='monster'>
  98. <div class='profile'>
  99. <img id='monster_image' title='<?=$mon_title?>' class='border_<?=$mon->monster->element?>' src='<?=$mon->monster->get_image()?>'/>
  100. <div id='details'>
  101. <h1><?=$mon_title?></h1>
  102. <span class='stars'>
  103. <?php
  104. for ($i = 0; $i < $mon->stars; $i ++){
  105. ?>
  106. <img class='star' src='<?=$star_src?>'/>
  107. <?php
  108. }
  109. ?>
  110. </span>
  111. <span class='level'>
  112. Lv. <?=$mon->level?>
  113. </span>
  114. </div> <!-- #details -->
  115. </div> <!-- .profile -->
  116. <div class='skills'>
  117. <?php
  118. $skill_num = 1;
  119. $absolute_level = 0;
  120. $absolute_max_level = 0;
  121. $ponderated_level = 0;
  122. $ponderated_max_level = 0;
  123. foreach ($mon->monster->skill as $skill){
  124. if ($skill->max_level > 1){
  125. $absolute_max_level += $skill->max_level - 1;
  126. }
  127. switch ($skill_num){
  128. case 1:
  129. $cur_lvl = $mon->skill_1_level;
  130. if ($skill->max_level > 1){
  131. $absolute_level += $cur_lvl - 1;
  132. $ponderated_level += $cur_lvl - 1;
  133. $ponderated_max_level += $skill->max_level - 1;
  134. }
  135. break;
  136. case 2:
  137. $cur_lvl = $mon->skill_2_level;
  138. if ($skill->max_level > 1){
  139. $absolute_level += $cur_lvl - 1;
  140. $ponderated_level += ($cur_lvl - 1) * 1.5;
  141. $ponderated_max_level += ($skill->max_level - 1) * 1.5;
  142. }
  143. break;
  144. case 3:
  145. $cur_lvl = $mon->skill_3_level;
  146. if ($skill->max_level > 1){
  147. $absolute_level += $cur_lvl - 1;
  148. $ponderated_level += ($cur_lvl - 1) * 2.0;
  149. $ponderated_max_level += ($skill->max_level - 1) * 2.0;
  150. }
  151. break;
  152. case 4:
  153. $cur_lvl = $mon->skill_4_level;
  154. if ($skill->max_level > 1){
  155. $absolute_level += $cur_lvl - 1;
  156. $ponderated_level += ($cur_lvl - 1) * 2.5;
  157. $ponderated_max_level += ($skill->max_level - 1) * 2.5;
  158. }
  159. break;
  160. }
  161. $max_lvl = $skill->max_level;
  162. if ($max_lvl == $cur_lvl){
  163. $maxed = "maxed";
  164. }
  165. else{
  166. $maxed = "";
  167. }
  168. ?>
  169. <div class='skill'>
  170. <img src='<?=$skill->get_image()?>'/>
  171. <span class='skill_level <?=$maxed?>'>
  172. <?=$cur_lvl?>/<?=$max_lvl?>
  173. </span>
  174. <span class='skill_name'>
  175. <?=$skill->name?>
  176. </span>
  177. </div>
  178. <?php
  179. $skill_num ++;
  180. }
  181. ?>
  182. </div> <!-- #skills -->
  183. <table id='skill_averages'>
  184. <tr>
  185. <td class='title'>
  186. Absolute skill-ups:
  187. </td>
  188. <td class='value'>
  189. <?=number_format($absolute_level * 100 / $absolute_max_level, 2)?>%
  190. </td>
  191. </tr>
  192. <tr>
  193. <td class='title'>
  194. Ponderated skill-ups:
  195. </td>
  196. <td class='value'>
  197. <?=number_format($ponderated_level * 100 / $ponderated_max_level, 2)?>%
  198. </td>
  199. </tr>
  200. <tr>
  201. <td class='title'>
  202. Remaining skill-ups:
  203. </td>
  204. <td class='value'>
  205. <?=$absolute_max_level - $absolute_level?>
  206. </td>
  207. </tr>
  208. </table>
  209. </div>
  210. <?php
  211. }
  212. ?>
  213. </article>
  214. </section> <!-- #catalog -->
  215. <?php
  216. include __DIR__ . "/inc/footer.php";
  217. ?>
  218. </body>
  219. </html>