unit.php 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622
  1. <?php
  2. /**
  3. * Monster view.
  4. *
  5. * Contains the view layout and some code to present the data.
  6. *
  7. * @category View
  8. * @var Monster_Page $page The page model.
  9. * @var player get_context()->get_player() Currently selected player.
  10. * @var int get_context()->get_game_mode() Game mode.
  11. */
  12. ?>
  13. <!DOCTYPE html>
  14. <html lang='en'>
  15. <head>
  16. <meta content='text/html; charset=utf-8' http-equiv='content-type'/>
  17. <meta name='viewport' content='width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1'/>
  18. <title><?=$page->title?></title>
  19. <link rel='shortcut icon' href='<?=$page->favicon?>'/>
  20. <!-- CSS files -->
  21. <link rel='stylesheet' type='text/css' href='<?=URL::CSS?>ui.css'/>
  22. <?php
  23. if (get_context()->get_game_mode() == GAME_MODE_ID::RTA){
  24. ?>
  25. <link rel='stylesheet' type='text/css' href='<?=URL::CSS?>ui-rta.css'/>
  26. <?php
  27. }
  28. ?>
  29. <link rel='stylesheet' type='text/css' href='<?=URL::CSS?>monster.css'/>
  30. <!-- Meta tags -->
  31. <link rel='canonical' href='<?=$page->canonical?>'/>
  32. <link rel='author' href='<?=$page->author?>'/>
  33. <link rel='publisher' href='<?=$page->author?>'/>
  34. <meta name='description' content='<?=$page->description?>'/>
  35. <meta property='og:title' content='<?=$page->title?>'/>
  36. <meta property='og:url' content='<?=$page->canonical?>'/>
  37. <meta property='og:description' content='<?=$page->description?>'/>
  38. <meta property='og:image' content='<?=$page->icon?>'/>
  39. <meta property='og:site_name' content='<?=$page->name?>'/>
  40. <meta property='og:type' content='website'/>
  41. <meta property='og:locale' content='en'/>
  42. <meta name='twitter:card' content='summary'/>
  43. <meta name='twitter:title' content='<?=$page->title?>'/>
  44. <meta name='twitter:description' content='<?=$page->description?>'/>
  45. <meta name='twitter:image' content='<?=$page->icon?>'/>
  46. <meta name='twitter:url' content='<?=$page->canonical?>'/>
  47. <meta name='robots' content='index follow'/>
  48. </head>
  49. <body>
  50. <?php
  51. include __DIR__ . "/inc/header.php";
  52. ?>
  53. <aside>
  54. <h2>
  55. <?=$page->unit->get_title()?>
  56. </h2>
  57. <div id='monster_info'>
  58. <div class='monster_panel'>
  59. <?=HTML::unit_panel($page->unit)?>
  60. </div>
  61. <?php
  62. if ($page->unit->get_experience_level() != 0){
  63. $exp_pct = ceil($page->unit->get_current_level_experience() * 100 / $page->unit->get_experience_level());
  64. $exp_txt = $page->unit->get_current_level_experience() . " / " . $page->unit->get_experience_level();
  65. }
  66. else{
  67. $exp_pct = 100;
  68. $exp_txt = "MAX";
  69. }
  70. $now = time();
  71. $date = strtotime($page->unit->get_creation_time('Y-m-d H:i:s'));
  72. $datediff = $now - $date;
  73. ?>
  74. <div id='monster_details'>
  75. <div id='exp'>
  76. <span id='exp_bar' style='width:<?=$exp_pct?>%'>
  77. </span>
  78. <span id='exp_text'>
  79. <?=$exp_txt?>
  80. </span>
  81. </div>
  82. Obtained on <?=$date?> (<?=$datediff?> days ago)<!-- from <?=$page->unit->get_source()->name?> TODO SOurce name, days ago -->
  83. <?php
  84. if (sizeof($page->unit->get_teams()) > 0){
  85. ?>
  86. <div id='teams'>
  87. <h4>
  88. Teams:
  89. </h4>
  90. <ul>
  91. <?php
  92. foreach($page->unit->get_teams() as $team){
  93. ?>
  94. <li>
  95. <a target='blank' href='/<?=get_context()->get_player()->get_id()?>/teams/<?=$team->id?>'>
  96. <?=$team->name?>
  97. </a>
  98. </li>
  99. <?php
  100. }
  101. ?>
  102. </ul>
  103. </div>
  104. <?php
  105. }
  106. ?>
  107. <a id='optimize' class='a_button' href='/<?=get_context()->get_player()->get_id()?>/optimizer/<?=$page->unit->get_id()?>'>
  108. Optimize
  109. </a>
  110. </div>
  111. </div>
  112. </aside>
  113. <main>
  114. <section id='monster' class='content'>
  115. <h2>
  116. <?=$page->unit->get_title()?>
  117. </h2>
  118. <article id='stats'>
  119. <table>
  120. <tr>
  121. <th>
  122. Stats
  123. </th>
  124. <th>
  125. Base
  126. </th>
  127. <th>
  128. Runes
  129. </th>
  130. <th>
  131. Artif.
  132. </th>
  133. <th>
  134. Bldg.
  135. </th>
  136. <th>
  137. Total
  138. </th>
  139. </tr>
  140. <tr>
  141. <th>
  142. ATK
  143. </th>
  144. <td class='base'>
  145. <?=$page->unit->get_base_stats()["atk"]?>
  146. <span class='percent'>&nbsp;</span>
  147. </td>
  148. <td class='extra'>
  149. +<?=$page->unit->get_rune_stats()["atk"]?>
  150. <span class='percent'>&nbsp;</span>
  151. </td>
  152. <td class='extra'>
  153. +<?=$page->unit->get_artifact_stats()["atk"]?>
  154. <span class='percent'>&nbsp;</span>
  155. </td>
  156. <td class='extra'>
  157. +<?=$page->unit->get_building_stats()["atk"]?>
  158. <span class='percent'>&nbsp;</span>
  159. </td>
  160. <td class='total'>
  161. <?=$page->unit->get_stats()["atk"]?>
  162. <span class='percent'>&nbsp;</span>
  163. </td>
  164. </tr>
  165. <tr>
  166. <th>
  167. DEF
  168. </th>
  169. <td class='base'>
  170. <?=$page->unit->get_base_stats()["def"]?>
  171. <span class='percent'>&nbsp;</span>
  172. </td>
  173. <td class='extra'>
  174. +<?=$page->unit->get_rune_stats()["def"]?>
  175. <span class='percent'>&nbsp;</span>
  176. </td>
  177. <td class='extra'>
  178. +<?=$page->unit->get_artifact_stats()["def"]?>
  179. <span class='percent'>&nbsp;</span>
  180. </td>
  181. <td class='extra'>
  182. +<?=$page->unit->get_building_stats()["def"]?>
  183. <span class='percent'>&nbsp;</span>
  184. </td>
  185. <td class='total'>
  186. <?=$page->unit->get_stats()["def"]?>
  187. <span class='percent'>&nbsp;</span>
  188. </td>
  189. </tr>
  190. <tr>
  191. <th>
  192. HP
  193. </th>
  194. <td class='base'>
  195. <?=$page->unit->get_base_stats()["hp"]?>
  196. <span class='percent'>&nbsp;</span>
  197. </td>
  198. <td class='extra'>
  199. +<?=$page->unit->get_rune_stats()["hp"]?>
  200. <span class='percent'>&nbsp;</span>
  201. </td>
  202. <td class='extra'>
  203. +<?=$page->unit->get_artifact_stats()["hp"]?>
  204. <span class='percent'>&nbsp;</span>
  205. </td>
  206. <td class='extra'>
  207. +<?=$page->unit->get_building_stats()["hp"]?>
  208. <span class='percent'>&nbsp;</span>
  209. </td>
  210. <td class='total'>
  211. <?=$page->unit->get_stats()["hp"]?>
  212. <span class='percent'>&nbsp;</span>
  213. </td>
  214. </tr>
  215. <tr>
  216. <th>
  217. SPD
  218. </th>
  219. <td class='base'>
  220. <?=$page->unit->get_base_stats()["spd"]?>
  221. <span class='percent'>&nbsp;</span>
  222. </td>
  223. <td class='extra'>
  224. +<?=$page->unit->get_rune_stats()["spd"]?>
  225. <span class='percent'>&nbsp;</span>
  226. </td>
  227. <td class='extra'>
  228. +<?=$page->unit->get_artifact_stats()["spd"]?>
  229. <span class='percent'>&nbsp;</span>
  230. </td>
  231. <td class='extra'>
  232. +<?=$page->unit->get_building_stats()["spd"]?>
  233. <span class='percent'>&nbsp;</span>
  234. </td>
  235. <td class='total'>
  236. <?=$page->unit->get_stats()["spd"]?>
  237. <span class='percent'>&nbsp;</span>
  238. </td>
  239. </tr>
  240. <tr>
  241. <th>
  242. CRR
  243. </th>
  244. <td class='base'>
  245. <?=$page->unit->get_base_stats()["crr"]?>
  246. <span class='percent'>%</span>
  247. </td>
  248. <td class='extra'>
  249. +<?=$page->unit->get_rune_stats()["crr"]?>
  250. <span class='percent'>%</span>
  251. </td>
  252. <td class='extra'>
  253. +<?=$page->unit->get_artifact_stats()["crr"]?>
  254. <span class='percent'>%</span>
  255. </td>
  256. <td class='extra'>
  257. +<?=$page->unit->get_building_stats()["crr"]?>
  258. <span class='percent'>%</span>
  259. </td>
  260. <td class='total'>
  261. <?=$page->unit->get_stats()["crr"]?>
  262. <span class='percent'>%</span>
  263. </td>
  264. </tr>
  265. <tr>
  266. <th>
  267. CRD
  268. </th>
  269. <td class='base'>
  270. <?=$page->unit->get_base_stats()["crd"]?>
  271. <span class='percent'>%</span>
  272. </td>
  273. <td class='extra'>
  274. +<?=$page->unit->get_rune_stats()["crd"]?>
  275. <span class='percent'>%</span>
  276. </td>
  277. <td class='extra'>
  278. +<?=$page->unit->get_artifact_stats()["crd"]?>
  279. <span class='percent'>%</span>
  280. </td>
  281. <td class='extra'>
  282. +<?=$page->unit->get_building_stats()["crd"]?>
  283. <span class='percent'>%</span>
  284. </td>
  285. <td class='total'>
  286. <?=$page->unit->get_stats()["crd"]?>
  287. <span class='percent'>%</span>
  288. </td>
  289. </tr>
  290. <tr>
  291. <th>
  292. ACC
  293. </th>
  294. <td class='base'>
  295. <?=$page->unit->get_base_stats()["acc"]?>
  296. <span class='percent'>%</span>
  297. </td>
  298. <td class='extra'>
  299. +<?=$page->unit->get_rune_stats()["acc"]?>
  300. <span class='percent'>%</span>
  301. </td>
  302. <td class='extra'>
  303. +<?=$page->unit->get_artifact_stats()["acc"]?>
  304. <span class='percent'>%</span>
  305. </td>
  306. <td class='extra'>
  307. +<?=$page->unit->get_building_stats()["acc"]?>
  308. <span class='percent'>%</span>
  309. </td>
  310. <td class='total'>
  311. <?=$page->unit->get_stats()["acc"]?>
  312. <span class='percent'>%</span>
  313. </td>
  314. </tr>
  315. <tr>
  316. <th>
  317. RES
  318. </th>
  319. <td class='base'>
  320. <?=$page->unit->get_base_stats()["res"]?>
  321. <span class='percent'>%</span>
  322. </td>
  323. <td class='extra'>
  324. +<?=$page->unit->get_rune_stats()["res"]?>
  325. <span class='percent'>%</span>
  326. </td>
  327. <td class='extra'>
  328. +<?=$page->unit->get_artifact_stats()["res"]?>
  329. <span class='percent'>%</span>
  330. </td>
  331. <td class='extra'>
  332. +<?=$page->unit->get_building_stats()["res"]?>
  333. <span class='percent'>%</span>
  334. </td>
  335. <td class='total'>
  336. <?=$page->unit->get_stats()["res"]?>
  337. <span class='percent'>%</span>
  338. </td>
  339. </tr>
  340. <tr>
  341. <th>
  342. EHP
  343. </th>
  344. <td class='base'>
  345. <?=$page->unit->get_base_stats()["ehp"]?>
  346. <span class='percent'>&nbsp;</span>
  347. </td>
  348. <td class='extra'>
  349. +<?=$page->unit->get_rune_stats()["ehp"]?>
  350. <span class='percent'>&nbsp;</span>
  351. </td>
  352. <td class='extra'>
  353. +<?=$page->unit->get_artifact_stats()["ehp"]?>
  354. <span class='percent'>&nbsp;</span>
  355. </td>
  356. <td class='extra'>
  357. +<?=$page->unit->get_building_stats()["ehp"]?>
  358. <span class='percent'>&nbsp;</span>
  359. </td>
  360. <td class='total'>
  361. <?=$page->unit->get_stats()["ehp"]?>
  362. <span class='percent'>&nbsp;</span>
  363. </td>
  364. </tr>
  365. <tr>
  366. <th>
  367. DMG
  368. </th>
  369. <td class='base'>
  370. <?=$page->unit->get_base_stats()["dmg"]?>
  371. <span class='percent'>&nbsp;</span>
  372. </td>
  373. <td class='extra'>
  374. +<?=$page->unit->get_rune_stats()["dmg"]?>
  375. <span class='percent'>&nbsp;</span>
  376. </td>
  377. <td class='extra'>
  378. +<?=$page->unit->get_artifact_stats()["dmg"]?>
  379. <span class='percent'>&nbsp;</span>
  380. </td>
  381. <td class='extra'>
  382. +<?=$page->unit->get_building_stats()["dmg"]?>
  383. <span class='percent'>&nbsp;</span>
  384. </td>
  385. <td class='total'>
  386. <?=$page->unit->get_stats()["dmg"]?>
  387. <span class='percent'>&nbsp;</span>
  388. </td>
  389. </tr>
  390. </table>
  391. </article>
  392. <article id='artifacts'>
  393. <?=HTML::artifact_table($page->unit->get_artifacts()[ARTIFACT_TYPE::ARCHETYPE])?>
  394. <?=HTML::artifact_table($page->unit->get_artifacts()[ARTIFACT_TYPE::ELEMENT])?>
  395. </article>
  396. <article id='runes'>
  397. <?php
  398. $total_efficiency = 0;
  399. $total_max_efficiency = 0;
  400. $total_reached_efficiency = 0;
  401. $total_level = 0;
  402. $total_stars = 0;
  403. $total_value = 0;
  404. $total_runes = 0;
  405. $show_list = [6, 1, 2, 5, 4, 3];
  406. foreach ($show_list as $i){
  407. $rune = $page->unit->get_runes()[$i - 1];
  408. $total_efficiency += $rune->efficiency;
  409. $total_max_efficiency += $rune->max_efficiency;
  410. if ($rune->max_efficiency > 0){
  411. $total_reached_efficiency += ($rune->efficiency * 100 / $rune->max_efficiency);
  412. }
  413. else{
  414. $total_reached_efficiency = 0;
  415. }
  416. $total_level += $rune->level;
  417. $total_stars += $rune->stars;
  418. $total_value += $rune->value;
  419. $total_runes ++;
  420. ?>
  421. <?=HTML::rune_table($rune)?>
  422. <?php
  423. }
  424. ?>
  425. <!--<table id='table_averages'>
  426. <tr>
  427. <td class='title'>
  428. Avg. level:
  429. </td>
  430. <td class='value'>
  431. <?=number_format($total_level / $total_runes, 2)?>
  432. </td>
  433. </tr>
  434. <tr>
  435. <td class='title'>
  436. Avg. stars:
  437. </td>
  438. <td class='value'>
  439. <?=number_format($total_stars / $total_runes, 2)?>
  440. </td>
  441. </tr>
  442. <tr>
  443. <td class='title'>
  444. Avg. value:
  445. </td>
  446. <td class='value'>
  447. <?=number_format($total_value / $total_runes, 2, '.', '')?>
  448. </td>
  449. </tr>
  450. <tr>
  451. <td class='title'>
  452. Total value:
  453. </td>
  454. <td class='value'>
  455. <?=$total_value?>
  456. </td>
  457. </tr>
  458. <tr>
  459. <td class='title'>
  460. Avg. efficiency:
  461. </td>
  462. <td class='value'>
  463. <?=number_format($total_efficiency / $total_runes, 2)?>
  464. <span class='percent'>%</span>
  465. </td>
  466. </tr>
  467. <tr>
  468. <td class='title'>
  469. Avg. max. efficiency:
  470. </td>
  471. <td class='value'>
  472. <?=number_format($total_max_efficiency / $total_runes, 2)?>
  473. <span class='percent'>%</span>
  474. </td>
  475. </tr>
  476. <tr>
  477. <td class='title'>
  478. Avg. reached efficiency:
  479. </td>
  480. <td class='value'>
  481. <?=number_format($total_reached_efficiency / $total_runes, 2)?>
  482. <span class='percent'>%</span>
  483. </td>
  484. </tr>
  485. </table>-->
  486. </article>
  487. <article id='skills'>
  488. <table id='skills'>
  489. <tr>
  490. <th colspan='4'>
  491. Skills
  492. </th>
  493. <tr/>
  494. <?php
  495. $l_skill = $page->unit->get_monster()->get_leader_skill();
  496. if ($l_skill != null){
  497. ?>
  498. <tr>
  499. <td class='skill_img'>
  500. <img src='<?=$l_skill->get_image()?>'/>
  501. </td>
  502. <td colspan='3' class='skill_text'>
  503. <h4>
  504. Leader Skill
  505. </h4>
  506. <p>
  507. <?=$l_skill->create_description()?>
  508. </p>
  509. </td>
  510. </tr>
  511. <?php
  512. }
  513. $skill_num = 0;
  514. $absolute_level = 0;
  515. $absolute_max_level = 0;
  516. $ponderated_level = 0;
  517. $ponderated_max_level = 0;
  518. foreach ($page->unit->get_monster()->get_skills() as $skill){
  519. if ($skill->max_level > 1){
  520. $absolute_max_level += $skill->max_level - 1;
  521. }
  522. $cur_lvl = $page->unit->get_skill_levels()[$skill_num];
  523. if ($skill->max_level > 1){
  524. $absolute_level += $cur_lvl - 1;
  525. $ponderated_level += ($cur_lvl - 1) * (1 + ($skill_num / 2));
  526. $ponderated_max_level += ($skill->max_level - 1) * (1 + ($skill_num / 2));
  527. }
  528. $max_lvl = $skill->max_level;
  529. if ($max_lvl == $cur_lvl){
  530. $maxed = "maxed";
  531. }
  532. else{
  533. $maxed = "";
  534. }
  535. ?>
  536. <tr>
  537. <td class='skill_img'>
  538. <img src='<?=$skill->get_image()?>'/>
  539. <span class='skill_level <?=$maxed?>'>
  540. <?=$cur_lvl?>/<?=$max_lvl?>
  541. </span>
  542. </td>
  543. <td class='skill_text'>
  544. <h4>
  545. <?=$skill->name?>
  546. </h4>
  547. <p>
  548. <?=$skill->description?>
  549. &emsp;
  550. <span class='formula'>
  551. <?=$skill->multiplier_formula?>
  552. </span>
  553. </p>
  554. <div class='effects'>
  555. <?php
  556. foreach ($skill->effect as $effect){
  557. ?>
  558. <img class='effect_img' title='<?=$effect->get_name()?>' src='<?=$effect->get_image()?>'/>
  559. <?php
  560. }
  561. ?>
  562. </div>
  563. </td>
  564. <?php
  565. $cur_lvl = $page->unit->get_skill_levels()[$skill_num];
  566. ?>
  567. <td class='skill_ups'>
  568. <?php
  569. if ($skill->max_level > 1){
  570. ?>
  571. <table>
  572. <?php
  573. foreach ($skill->level as $level){
  574. if ($level->level > 1){
  575. $aquired = "";
  576. if ($level->level <= $cur_lvl){
  577. $aquired = "aquired";
  578. }
  579. ?>
  580. <tr>
  581. <td class='level <?=$aquired?>'>
  582. Lv. <?=$level->level?>
  583. </td>
  584. <td class='upgrade <?=$aquired?>'>
  585. <?=$level->description?>
  586. </td>
  587. </tr>
  588. <?php
  589. }
  590. }
  591. ?>
  592. </table>
  593. <?php
  594. }
  595. $skill_num ++;
  596. ?>
  597. </td>
  598. </tr>
  599. <?php
  600. }
  601. ?>
  602. <!--<tr>
  603. <td colspan='3' id='skill_averages'>
  604. Absolute skill-ups: <?=number_format($absolute_level * 100 / $absolute_max_level, 2)?>
  605. <span class='percent'>%</span>
  606. <br/>
  607. Ponderated skill-ups: <?=number_format($ponderated_level * 100 / $ponderated_max_level, 2)?>
  608. <span class='percent'>%</span>
  609. </td>
  610. </tr>-->
  611. </table>
  612. </article> <!-- #skills -->
  613. </section>
  614. </main>
  615. <?php
  616. include __DIR__ . "/inc/footer.php";
  617. ?>
  618. </body>
  619. </html>