report_skillup.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  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 class='filters'>
  37. <h2>
  38. <span>
  39. Monster filters
  40. </span>
  41. </h2>
  42. <form action='/report/skillup/' method='get'>
  43. <table>
  44. <tr>
  45. <td class='filter' id='filter_stars'>
  46. <span>Stars:</span>
  47. <input type='number' name='min_stars' min='1' max='6' value='<?=$page->filters["min_stars"]?>'/>
  48. -
  49. <input type='number' name='max_stars' min='1' max='6' value='<?=$page->filters["max_stars"]?>'/>
  50. </td>
  51. <td class='filter' id='filter_stars'>
  52. <span>Natural stars:</span>
  53. <input type='number' name='min_natural_stars' min='1' max='6' value='<?=$page->filters["min_natural_stars"]?>'/>
  54. -
  55. <input type='number' name='max_natural_stars' min='1' max='6' value='<?=$page->filters["max_natural_stars"]?>'/>
  56. </td>
  57. </tr>
  58. <tr>
  59. <td class='filter' colspan='2'>
  60. <?php
  61. $checked = "";
  62. if ($page->filters["family"]){
  63. $checked = "checked";
  64. }
  65. ?>
  66. <input type='checkbox' name='family' <?=$checked?>/>
  67. Show monsters with family with lower grade.
  68. </td>
  69. </tr>
  70. <tr>
  71. <td class='filter' colspan='2'>
  72. <?php
  73. $checked = "";
  74. if ($page->filters["2a"]){
  75. $checked = "checked";
  76. }
  77. ?>
  78. <input type='checkbox' name='2a' <?=$checked?>/>
  79. Include second-awakened monsters.
  80. </td>
  81. </tr>
  82. <tr>
  83. <td class='filter' colspan='2'>
  84. <?php
  85. $checked = "";
  86. if ($page->filters["in_storage"]){
  87. $checked = "checked";
  88. }
  89. ?>
  90. <input type='checkbox' name='in_storage' <?=$checked?>/>
  91. Show monsters in storage
  92. </td>
  93. </tr>
  94. <tr>
  95. <td class='filter' colspan='2'>
  96. <?php
  97. $checked = "";
  98. if ($page->filters["without_runes"]){
  99. $checked = "checked";
  100. }
  101. ?>
  102. <input type='checkbox' name='without_runes' <?=$checked?>/>
  103. Show monsters without runes
  104. </td>
  105. </tr>
  106. <tr>
  107. <td class='filter' colspan='2'>
  108. <?php
  109. $checked = "";
  110. if ($page->filters["maxed"]){
  111. $checked = "checked";
  112. }
  113. ?>
  114. <input type='checkbox' name='maxed' <?=$checked?>/>
  115. Show fully skilled-up monster
  116. </td>
  117. </tr>
  118. </table>
  119. <div id='filter_apply'>
  120. <input type='submit' value='Apply'/>
  121. </div>
  122. </form>
  123. </section> <!-- #filters -->
  124. <?php
  125. $index = 1;
  126. foreach ($page->monsters as $mon){
  127. if ($mon->monster->awakens_from == "" && $mon->monster->awakens_to == ""){
  128. // No to, no from, silver monster.
  129. $star_src = $path["img"]["layout"] . "icon/star_silver.png";
  130. $mon_title = $mon->monster->element . " " . $mon->monster->name;
  131. }
  132. elseif ($mon->monster->awakens_from =! "" && $mon->monster->awakens_to == ""){
  133. // Already awakened.
  134. $star_src = $path["img"]["layout"] . "icon/star_aw.png";
  135. $mon_title = $mon->monster->name;
  136. }
  137. elseif ($mon->monster->awakens_to =! ""){
  138. // Awakeable.
  139. $star_src = $path["img"]["layout"] . "icon/star.png";
  140. $mon_title = $mon->monster->element . " " . $mon->monster->name;
  141. }
  142. if ($mon->monster->awakens_from == "" && $mon->monster->awakens_to == ""){
  143. // No to, no from, silver monster.
  144. $star_class ="star_silver";
  145. $mon_title = $mon->monster->element . " " . $mon->monster->name;
  146. }
  147. elseif ($mon->monster->awakens_from =! "" && $mon->monster->awakens_to == ""){
  148. // Already awakened
  149. if ($mon->monster->base_stars - $mon->monster->natural_stars == 1){
  150. // Normal awaken.
  151. $star_class = "star_purple";
  152. }
  153. else{
  154. // Second awaken.
  155. $star_class = "star_red";
  156. }
  157. $mon_title = $mon->monster->name;
  158. }
  159. elseif ($mon->monster->awakens_to =! ""){
  160. // Awakeable.
  161. $star_class = "star_gold";
  162. $mon_title = $mon->monster->element . " " . $mon->monster->name;
  163. }
  164. switch ($index % 10){
  165. case 1:
  166. $index_title = $index . "<span class='superindex'>st</span> - " . $mon_title;
  167. break;
  168. case 2:
  169. $index_title = $index . "<span class='superindex'>nd</span> - " . $mon_title;
  170. break;
  171. case 3:
  172. $index_title = $index . "<span class='superindex'>rd</span> - " . $mon_title;
  173. break;
  174. default:
  175. $index_title = $index . "<span class='superindex'>th</span> - " . $mon_title;
  176. break;
  177. }
  178. switch ($index % 100){
  179. case 11:
  180. case 12:
  181. case 13:
  182. $index_title = $index . "<span class='superindex'>th</span> - " . $mon_title;
  183. break;
  184. }
  185. ?>
  186. <section class='content'>
  187. <h2>
  188. <span>
  189. <?=$index_title?>
  190. </span>
  191. </h2>
  192. <article>
  193. <div class='monster'>
  194. <div class='profile'>
  195. <div class='monster_panel'>
  196. <span class='stars'>
  197. <?php
  198. for ($i = 0; $i < $mon->stars; $i ++){
  199. ?>
  200. <img class='star <?=$star_class?>' src='<?=$path["img"]["layout"] . "icon/star.png"?>'/>
  201. <?php
  202. }
  203. ?>
  204. </span>
  205. <img title='<?=$mon_title?>' class='monster border_<?=$mon->monster->element?>' src='<?=$mon->monster->get_image()?>'/>
  206. <span class='level'>
  207. <?=$mon->level?>
  208. </span>
  209. </div>
  210. </div> <!-- .profile -->
  211. <div class='skills'>
  212. <?php
  213. $skill_num = 1;
  214. $absolute_level = 0;
  215. $absolute_max_level = 0;
  216. $ponderated_level = 0;
  217. $ponderated_max_level = 0;
  218. foreach ($mon->monster->skill as $skill){
  219. if ($skill->max_level > 1){
  220. $absolute_max_level += $skill->max_level - 1;
  221. }
  222. switch ($skill_num){
  223. case 1:
  224. $cur_lvl = $mon->skill_1_level;
  225. if ($skill->max_level > 1){
  226. $absolute_level += $cur_lvl - 1;
  227. $ponderated_level += $cur_lvl - 1;
  228. $ponderated_max_level += $skill->max_level - 1;
  229. }
  230. break;
  231. case 2:
  232. $cur_lvl = $mon->skill_2_level;
  233. if ($skill->max_level > 1){
  234. $absolute_level += $cur_lvl - 1;
  235. $ponderated_level += ($cur_lvl - 1) * 1.5;
  236. $ponderated_max_level += ($skill->max_level - 1) * 1.5;
  237. }
  238. break;
  239. case 3:
  240. $cur_lvl = $mon->skill_3_level;
  241. if ($skill->max_level > 1){
  242. $absolute_level += $cur_lvl - 1;
  243. $ponderated_level += ($cur_lvl - 1) * 2.0;
  244. $ponderated_max_level += ($skill->max_level - 1) * 2.0;
  245. }
  246. break;
  247. case 4:
  248. $cur_lvl = $mon->skill_4_level;
  249. if ($skill->max_level > 1){
  250. $absolute_level += $cur_lvl - 1;
  251. $ponderated_level += ($cur_lvl - 1) * 2.5;
  252. $ponderated_max_level += ($skill->max_level - 1) * 2.5;
  253. }
  254. break;
  255. }
  256. $max_lvl = $skill->max_level;
  257. if ($max_lvl == $cur_lvl){
  258. $maxed = "maxed";
  259. }
  260. else{
  261. $maxed = "";
  262. }
  263. ?>
  264. <div class='skill'>
  265. <img title='<?=$skill->description?>' src='<?=$skill->get_image()?>'/>
  266. <span class='skill_level <?=$maxed?>'>
  267. <?=$cur_lvl?>/<?=$max_lvl?>
  268. </span>
  269. <span class='skill_name'>
  270. <?=$skill->name?>
  271. </span>
  272. </div>
  273. <?php
  274. $skill_num ++;
  275. }
  276. ?>
  277. </div> <!-- #skills -->
  278. <table id='skill_averages'>
  279. <tr>
  280. <td class='title'>
  281. Absolute skill-ups:
  282. </td>
  283. <td class='value'>
  284. <?=number_format($absolute_level * 100 / $absolute_max_level, 2)?>%
  285. </td>
  286. </tr>
  287. <tr>
  288. <td class='title'>
  289. Ponderated skill-ups:
  290. </td>
  291. <td class='value'>
  292. <?=number_format($ponderated_level * 100 / $ponderated_max_level, 2)?>%
  293. </td>
  294. </tr>
  295. <tr>
  296. <td class='title'>
  297. Remaining skill-ups:
  298. </td>
  299. <td class='value'>
  300. <?=$absolute_max_level - $absolute_level?>
  301. </td>
  302. </tr>
  303. </table>
  304. </div>
  305. </article>
  306. </section>
  307. <?php
  308. $index ++;
  309. }
  310. ?>
  311. <?php
  312. include __DIR__ . "/inc/footer.php";
  313. ?>
  314. </body>
  315. </html>