PageRenderTime 59ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/core.php

https://bitbucket.org/marecki/orodlin-v.1
PHP | 1284 lines | 1145 code | 60 blank | 79 comment | 201 complexity | 0f9dca9371bd66981f33e61ce30d8828 MD5 | raw file

Large files files are truncated, but you can click here to view the full file

  1. <?php
  2. /**
  3. * File functions:
  4. * Core arena
  5. *
  6. * @name : core.php
  7. * @copyright : (C) 2004,2005,2006,2007 Vallheru Team based on Gamers-Fusion ver 2.5
  8. * @author : thindil <thindil@users.sourceforge.net>
  9. * @author : eyescream <tduda@users.sourceforge.net>
  10. * @author : Marek 'marq' Chodor <marek.chodor@gmail.com>
  11. * @version : 1.3
  12. * @since : 10.09.2007
  13. *
  14. */
  15. //
  16. //
  17. // This program is free software; you can redistribute it and/or modify
  18. // it under the terms of the GNU General Public License as published by
  19. // the Free Software Foundation; either version 2 of the License, or
  20. // (at your option) any later version.
  21. //
  22. // This program is distributed in the hope that it will be useful,
  23. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  24. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  25. // GNU General Public License for more details.
  26. //
  27. // You should have received a copy of the GNU General Public License
  28. // along with this program; if not, write to the Free Software
  29. // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  30. //
  31. // $Id$
  32. /**
  33. * function returns found core's id from random number
  34. */
  35. function whichcore ($number) {
  36. if ($number > 1156) return 0;
  37. if ($number > 1153) return 30;
  38. if ($number > 1148) return 29;
  39. if ($number > 1143) return 28;
  40. if ($number > 1136) return 27;
  41. if ($number > 1129) return 26;
  42. if ($number > 1120) return 25;
  43. if ($number > 1111) return 24;
  44. if ($number > 1100) return 23;
  45. if ($number > 1089) return 22;
  46. if ($number > 1076) return 21;
  47. if ($number > 1063) return 20;
  48. if ($number > 1048) return 19;
  49. if ($number > 1033) return 18;
  50. if ($number > 1016) return 17;
  51. if ($number > 999) return 16;
  52. if ($number > 680) return 0;
  53. if ($number > 670) return 15;
  54. if ($number > 649) return 14;
  55. if ($number > 618) return 13;
  56. if ($number > 586) return 12;
  57. if ($number > 551) return 11;
  58. if ($number > 514) return 10;
  59. if ($number > 475) return 9;
  60. if ($number > 435) return 8;
  61. if ($number > 390) return 7;
  62. if ($number > 340) return 6;
  63. if ($number > 285) return 5;
  64. if ($number > 225) return 4;
  65. if ($number > 150) return 3;
  66. if ($number > 80) return 2;
  67. return 1;
  68. }
  69. /**
  70. * function for cores fight
  71. * arguments: attacker array, defender array
  72. * returns fight's log
  73. */
  74. function corefight(&$attacker,&$defender) {
  75. $attacksPerRound = min( floor($attacker['speed']/$defender['speed']), 5);
  76. $log = '';
  77. for ($rounds=0; ($rounds<24 && $attacker['hp'] > 0 && $defender['hp'] > 0); $rounds++) {
  78. for ($i=0; $i < $attacksPerRound && $defender['hp'] > 0; $i++) {
  79. $damage = floor($attacker['attack'] * rand(90,110) / 100 - $defender['defence']);
  80. if ($damage < 0) $damage = 0;
  81. $defender['hp'] -= $damage;
  82. $log .= '<b>'.($attacker['name']).' ['.($attacker['user']).']</b> '.ATTACKS.' <b>'.($defender['name']).' ['.($defender['user']).']</b> '.AND_HITS.' <b>'.$damage.'</b> '.DAMAGES.' ('.($defender['hp']).' '.HP_LEFT.')<br/>';
  83. }
  84. if ($defender['hp'] > 0) {
  85. $damage = floor($defender['attack'] * rand(90,110) / 100 - $attacker['defence']);
  86. if ($damage < 0) $damage = 0;
  87. $attacker['hp'] -= $damage;
  88. $log .= '<b>'.($defender['name']).' ['.($defender['user']).']</b> '.ATTACKS.' <b>'.($attacker['name']).' ['.($attacker['user']).']</b> '.AND_HITS.' <b>'.$damage.'</b> '.DAMAGES.' ('.($attacker['hp']).' '.HP_LEFT.')<br/>';
  89. }
  90. }
  91. return $log;
  92. }
  93. $title = "Polana Chowańców";
  94. require_once("includes/head.php");
  95. if ($player -> location != 'Altara' && $player -> location != 'Ardulith') {
  96. error (ERROR);
  97. }
  98. //getting info about corepass and breeding
  99. $player -> raredata();
  100. //getting language data
  101. require_once("languages/".$player -> lang."/core.php");
  102. global $smarty;
  103. $smarty -> assign("Corepass" ,$player -> corepass);
  104. /**
  105. * without license
  106. */
  107. if ($player -> corepass !='Y') {
  108. //welcome
  109. if (!isset($_GET['answer'])) {
  110. $smarty -> assign(array(
  111. "Corepass" => ($player -> corepass),
  112. "Corepassinfo" => COREPASS_INFO,
  113. "Gold" => ($player -> credits)
  114. ));
  115. if ($player -> credits >= 500) {
  116. $smarty -> assign(array(
  117. "Havemoney" => HAVE_MONEY,
  118. "Ayes" => A_YES,
  119. "Ano" => A_NO
  120. ));
  121. }
  122. else {
  123. $smarty -> assign("Nomoney",NO_MONEY);
  124. }
  125. $smarty -> display('core.tpl');
  126. }
  127. //buying license
  128. else if ($_GET['answer'] == 'yes') {
  129. if ($player -> corepass == 'Y') error(ERROR);
  130. if ($player -> credits < 500) {
  131. $smarty -> assign("Message",NO_MONEY);
  132. }
  133. else {
  134. global $db;
  135. $db -> Execute("UPDATE `players` SET `credits`=`credits`-500, `corepass`='Y' WHERE `id`=".($player -> id));
  136. $smarty -> assign("Message",YES_LICENSE);
  137. }
  138. $smarty -> display('error1.tpl');
  139. }
  140. }
  141. /**
  142. * with license
  143. */
  144. else {
  145. /**
  146. * main/welcome view
  147. */
  148. if (!isset($_GET['view'])) {
  149. $smarty -> assign (array(
  150. "view" => 'none',
  151. "Coremain" => CORE_MAIN,
  152. "Mycore" => A_MY_CORE,
  153. "Arena" => A_ARENA,
  154. "Train" => A_TRAIN,
  155. "Market" => A_MARKET,
  156. "Search" => A_SEARCH,
  157. "Breed" => A_BREED,
  158. "Monuments" => A_MONUMENTS,
  159. "Back" => BACK
  160. ));
  161. $smarty -> display('core.tpl');
  162. }
  163. else {
  164. $smarty -> assign("view",$_GET['view']);
  165. global $db;
  166. switch ($_GET['view']) {
  167. /**
  168. * view my cores
  169. */
  170. case 'my': {
  171. //forms from other "view"
  172. if (isset($_POST['id'])) $_GET['id'] = $_POST['id'];
  173. //view list of cores
  174. if (!isset($_GET['id'])) {
  175. $list = '';
  176. $corelist = $db -> Execute("SELECT `coresplayers`.`id`, `status`, `petname`, `coresbase`.`id` AS `name`, `arena` FROM `coresplayers`, `coresbase` WHERE `owner`=".($player -> id)." AND `base` = `coresbase`.`id` ORDER BY `status`, `coresbase`.`id`");
  177. for ($i = 0, $j = 0; !$corelist -> EOF; $corelist -> MoveNext()) {
  178. if (($corelist -> fields["arena"]) == 'Z') {
  179. $normalnamelist[$i] = (($corelist -> fields["petname"]) != '') ? '<b>'.$corelist -> fields["petname"].'</b> - ' : '' ;
  180. $normalnamelist[$i] .= $names[$corelist -> fields["name"]];
  181. $normalidlist[$i] = $corelist -> fields["id"];
  182. $normalstatuslist[$i] = $corelist -> fields["status"];
  183. $i++;
  184. }
  185. else {
  186. $magicnamelist[$j] = (($corelist -> fields["petname"]) != '') ? '<b>'.$corelist -> fields["petname"].'</b> - ' : '' ;
  187. $magicnamelist[$j] .= $names[$corelist -> fields["name"]];
  188. $magicidlist[$j] = $corelist -> fields["id"];
  189. $magicstatuslist[$j] = $corelist -> fields["status"];
  190. $j++;
  191. }
  192. }
  193. if (isset($normalnamelist))
  194. $smarty -> assign(array(
  195. "Normalnamelist" => $normalnamelist,
  196. "Normalidlist" => $normalidlist,
  197. "Normalstatuslist" => $normalstatuslist
  198. ));
  199. else $smarty -> assign("Normalnamelist", '');
  200. if (isset($magicnamelist))
  201. $smarty -> assign(array(
  202. "Magicnamelist" => $magicnamelist,
  203. "Magicidlist" => $magicidlist,
  204. "Magicstatuslist" => $magicstatuslist
  205. ));
  206. else $smarty -> assign("Magicnamelist", '');
  207. $corelist -> Close();
  208. $smarty -> assign(array(
  209. "Info" => MY_CORES_INFO,
  210. "List" => $list,
  211. "Back" => BACK
  212. ));
  213. $smarty -> display('core.tpl');
  214. }
  215. //view one core
  216. else {
  217. //integercheck
  218. $coreid = (int)$_GET['id'];
  219. if (!isset($coreid) || $coreid == '') error(ERROR);
  220. if (isset($_GET['action'])) {
  221. $smarty -> assign("action",$_GET['action']);
  222. //change core name
  223. if ($_GET['action'] == 'changename' && isset($_POST['corename'])) {
  224. $core = $db -> Execute("SELECT `owner` FROM `coresplayers` WHERE `coresplayers`.`id` = ".$coreid);
  225. if (!isset($core) || $core -> EOF) error(NO_CORE);
  226. if ($core -> fields['owner'] != $player -> id) error(NOT_YOURS);
  227. $newname = str_replace(
  228. array("<",">","'","\""),
  229. array("&lt;","&gt","&apos;","&quot;"),
  230. $_POST['corename']);
  231. $db -> Execute("UPDATE `coresplayers` SET `petname`='".$newname."' WHERE `id`=".$coreid);
  232. $core -> Close();
  233. $smarty -> assign("Message",NAME_CHANGED);
  234. $smarty -> display('error1.tpl');
  235. }
  236. //sell core
  237. if ($_GET['action'] == 'sell') {
  238. $core = $db -> Execute("SELECT `owner`, `hp`, `status` FROM `coresplayers` WHERE `coresplayers`.`id` = ".$coreid);
  239. if (!isset($core) || $core -> EOF) error(NO_CORE);
  240. if ($core -> fields['owner'] != $player -> id) error(NOT_YOURS);
  241. if ($core -> fields['hp'] <= 0) error(IS_DEAD);
  242. if ($core -> fields['status'] == 'A') error(WRONG_STATUS);
  243. if (isset($_POST['prize'])) {
  244. //integercheck
  245. $prize = (int)$_POST['prize'];
  246. if (!isset($prize) || $prize == '') error(ERROR);
  247. if ($prize <= 0) error(BAD_PRIZE);
  248. $smarty -> assign("Sellinfo",'');
  249. $db -> Execute("UPDATE `coresplayers` SET `status`='S', `prize`=".$prize." WHERE `id`=".$coreid);
  250. $smarty -> assign("Sellinfo",'');
  251. $smarty -> assign("Message",YOU_SOLD);
  252. $smarty -> display('error1.tpl');
  253. }
  254. else {
  255. $smarty -> assign("Sellinfo",SELL_INFO);
  256. }
  257. }
  258. //unsell core
  259. if ($_GET['action'] == 'unsell') {
  260. $core = $db -> Execute("SELECT `owner`, `status` FROM `coresplayers` WHERE `coresplayers`.`id` = ".$coreid);
  261. if (!isset($core) || $core -> EOF) error(NO_CORE);
  262. if ($core -> fields['owner'] != $player -> id) error(NOT_YOURS);
  263. if ($core -> fields['status'] != 'S') error(NOT_FORSALE);
  264. $db -> Execute("UPDATE `coresplayers` SET `status`='N', `prize`= 0 WHERE `id`=".$coreid);
  265. $smarty -> assign("Message",YOU_UNSOLD);
  266. $smarty -> display('error1.tpl');
  267. }
  268. //pass core other player
  269. if ($_GET['action'] == 'pass') {
  270. $core = $db -> Execute("SELECT `status`, `owner`, `petname`, `coresbase`.`id` AS `name` FROM `coresplayers`, `coresbase` WHERE `coresplayers`.`id` = ".$coreid." AND `base`=`coresbase`.`id`");
  271. if (!isset($core) || $core -> EOF) error(NO_CORE);
  272. if ($core -> fields['owner'] != $player -> id) error(NOT_YOURS);
  273. if (isset($_POST['pid'])) {
  274. //integercheck
  275. $newowner = (int)$_POST['pid'];
  276. if (!isset($newowner) || $newowner == '') error(ERROR);
  277. if ($newowner == $player -> id) error(NO_SELF);
  278. if ($core -> fields['status'] != 'N') error(WRONG_STATUS);
  279. $owner = $db -> Execute("SELECT `user`, `id` FROM `players` WHERE `id` = ".$newowner);
  280. if ( !isset($owner -> fields['id']) || $newowner != ($owner -> fields['id'])) error(NO_PLAYER);
  281. $db -> Execute("UPDATE `coresplayers` SET `owner` = ".$newowner." WHERE `id`=".$coreid);
  282. (isset($core -> fields['petname']) && $core -> fields['petname'] != '' ) ? $name = ($core -> fields['petname']).' - ' : $name = '';
  283. $name .= $names[($core -> fields['name'])];
  284. $msg = YOU_PASSED.' '.$name.' '.TO_PLAYER.' <a href="view.php?view='.$newowner.'">'.($owner -> fields['user']).'</a>';
  285. $msg2 = YOU_GOT.' '.$name.' '.FROM_PLAYER.' <a href="view.php?view='.($player -> id).'">'.($player -> user).'</a>';
  286. $smarty -> assign("Message",$msg);
  287. $smarty -> display('error1.tpl');
  288. $smarty -> assign("Message",'<br/><a href="core.php">'.BACK.'</a>');
  289. $smarty -> display('error1.tpl');
  290. global $newdate;
  291. $strDate = $db -> DBDate($newdate);
  292. $db -> Execute('INSERT INTO `log` (`owner`, `log`, `czas`) VALUES('.$player -> id.', \''.$msg.'\', '.$strDate.');');
  293. $db -> Execute('INSERT INTO `log` (`owner`, `log`, `czas`) VALUES('.$newowner.', \''.$msg2.'\', '.$strDate.');');
  294. //there is no core to show after passing it
  295. break;
  296. }
  297. }
  298. //activate core
  299. if ($_GET['action'] == 'activate') {
  300. $core = $db -> Execute("SELECT `coresplayers`.`hp`, `owner`, `status`, `arena`, `value` FROM `coresplayers`, `coresbase` WHERE `coresplayers`.`id` = ".$coreid." AND `base`=`coresbase`.`id`");
  301. if (!isset($core) || $core -> EOF) error(NO_CORE);
  302. if ($core -> fields['owner'] != $player -> id) error(NOT_YOURS);
  303. if ($core -> fields['hp'] <= 0) error(IS_DEAD);
  304. if ($core -> fields['status'] != 'N') error(WRONG_STATUS);
  305. if ($core -> fields['arena'] == 'Z') {
  306. $goldcost = ($core -> fields['value']) * 100;
  307. $platinumcost = $core -> fields['value'];
  308. $smarty -> assign("Cost",YOU_PAY." ".$goldcost." ".GOLD_PIECES.", ".$platinumcost." ".PLATINUM);
  309. if ($goldcost > $player -> credits ||
  310. $platinumcost > $player -> platinum
  311. ) $nomoney = NO_MONEY;
  312. else $nomoney = '';
  313. }
  314. else {
  315. $minerals = $db -> Execute("SELECT `crystal`, `adamantium` FROM `minerals` WHERE `owner` = ".($player -> id));
  316. $adamantium = $minerals -> fields['adamantium'];
  317. $crystal = $minerals -> fields['crystal'];
  318. $goldcost = ($core -> fields['value']) * 500;
  319. $platinumcost = ($core -> fields['value']) * 2;
  320. $adamantiumcost = $core -> fields['value'];
  321. $crystalcost = $core -> fields['value'];
  322. $smarty -> assign("Cost",YOU_PAY." ".$goldcost." ".GOLD_PIECES.", ".$platinumcost." ".PLATINUM.", ".$adamantiumcost." ".ADAMANTIUM.", ".$crystalcost." ".CRYSTAL);
  323. if ($goldcost > $player -> credits ||
  324. $platinumcost > $player -> platinum ||
  325. $adamantiumcost > $adamantium ||
  326. $crystalcost > $crystal
  327. ) $nomoney = NO_MONEY;
  328. else $nomoney = '';
  329. }
  330. $smarty -> assign("Nomoney",$nomoney);
  331. if (isset($_POST['activate']) && $nomoney == '') {
  332. $smarty -> assign("Activateinfo","");
  333. $db -> Execute("UPDATE `coresplayers` SET `status` = 'A' WHERE `id`=".$coreid);
  334. $db -> Execute("UPDATE `players` SET `credits` = `credits` - ".$goldcost.", `platinum` = `platinum` - ".$platinumcost." WHERE `id`=".($player -> id));
  335. if ($core -> fields['arena'] == 'M') {
  336. $db -> Execute("UPDATE `minerals` SET `adamantium` = `adamantium` - ".$adamantiumcost.", `crystal` = `crystal` - ".$crystalcost." WHERE `owner`=".($player -> id));
  337. }
  338. $smarty -> assign("Message",CORE_ACTIVATED);
  339. $smarty -> display('error1.tpl');
  340. }
  341. else {
  342. $smarty -> assign("Activateinfo",ACTIVATE_INFO);
  343. }
  344. }
  345. //deactivate core
  346. if ($_GET['action'] == 'deactivate') {
  347. $core = $db -> Execute("SELECT `coresplayers`.`hp`, `owner`, `status`, `arena`, `value` FROM `coresplayers`, `coresbase` WHERE `coresplayers`.`id` = ".$coreid." AND `base`=`coresbase`.`id`");
  348. if (!isset($core) || $core -> EOF) error(NO_CORE);
  349. if ($core -> fields['owner'] != $player -> id) error(NOT_YOURS);
  350. if ($core -> fields['status'] != 'A') error(WRONG_STATUS2);
  351. if ($core -> fields['arena'] == 'Z') {
  352. $goldcost = ($core -> fields['value']) * 100;
  353. $platinumcost = $core -> fields['value'];
  354. $smarty -> assign("Cost",YOU_PAY." ".$goldcost." ".GOLD_PIECES.", ".$platinumcost." ".PLATINUM);
  355. if ($goldcost > $player -> credits ||
  356. $platinumcost > $player -> platinum
  357. ) $nomoney = NO_MONEY;
  358. else $nomoney = '';
  359. }
  360. else {
  361. $minerals = $db -> Execute("SELECT `crystal`, `adamantium` FROM `minerals` WHERE `owner` = ".($player -> id));
  362. $adamantium = $minerals -> fields['adamantium'];
  363. $crystal = $minerals -> fields['crystal'];
  364. $goldcost = ($core -> fields['value']) * 500;
  365. $platinumcost = ($core -> fields['value']) * 2;
  366. $adamantiumcost = $core -> fields['value'];
  367. $crystalcost = $core -> fields['value'];
  368. $smarty -> assign("Cost",YOU_PAY." ".$goldcost." ".GOLD_PIECES.", ".$platinumcost." ".PLATINUM.", ".$adamantiumcost." ".ADAMANTIUM.", ".$crystalcost." ".CRYSTAL);
  369. if ($goldcost > $player -> credits ||
  370. $platinumcost > $player -> platinum ||
  371. $adamantiumcost > $adamantium ||
  372. $crystalcost > $crystal
  373. ) $nomoney = NO_MONEY;
  374. else $nomoney = '';
  375. }
  376. $smarty -> assign("Nomoney",$nomoney);
  377. if (isset($_POST['deactivate']) && $nomoney == '') {
  378. $smarty -> assign("Deactivateinfo","");
  379. $db -> Execute("UPDATE `coresplayers` SET `status` = 'N' WHERE `id`=".$coreid);
  380. $db -> Execute("UPDATE `players` SET `credits` = `credits` - ".$goldcost.", `platinum` = `platinum` - ".$platinumcost." WHERE `id`=".($player -> id));
  381. if ($core -> fields['arena'] == 'M') {
  382. $db -> Execute("UPDATE `minerals` SET `adamantium` = `adamantium` - ".$adamantiumcost.", `crystal` = `crystal` - ".$crystalcost." WHERE `owner`=".($player -> id));
  383. }
  384. $smarty -> assign("Message",CORE_DEACTIVATED);
  385. $smarty -> display('error1.tpl');
  386. }
  387. else {
  388. $smarty -> assign("Deactivateinfo",DEACTIVATE_INFO);
  389. }
  390. }
  391. //free core
  392. if ($_GET['action'] == 'free') {
  393. $core = $db -> Execute("SELECT `owner` FROM `coresplayers` WHERE `coresplayers`.`id` = ".$coreid);
  394. if (!isset($core) || $core -> EOF) error(NO_CORE);
  395. if ($core -> fields['owner'] != $player -> id) error(NOT_YOURS);
  396. if (isset($_POST['free'])) {
  397. $db -> Execute("DELETE FROM `coresplayers` WHERE `id`=".$coreid);
  398. $smarty -> assign("Message",CORE_FREE);
  399. $smarty -> display('error1.tpl');
  400. $smarty -> assign("Message",'<br/><a href="core.php">'.BACK.'</a>');
  401. $smarty -> display('error1.tpl');
  402. //there is no core to show after freeing it
  403. break;
  404. }
  405. }
  406. //heal core
  407. if ($_GET['action'] == 'heal') {
  408. $core = $db -> Execute("SELECT `owner`, `coresplayers`.`hp`, `coresplayers`.`max_hp`, `coresplayers`.`attack`, `coresplayers`.`defence`, `coresplayers`.`speed`, `cost` FROM `coresplayers`, `coresbase` WHERE `coresplayers`.`id` = ".$coreid." AND `coresplayers`.`base` = `coresbase`.`id`");
  409. if (!isset($core) || $core -> EOF) error(NO_CORE);
  410. if ($core -> fields['owner'] != $player -> id) error(NOT_YOURS);
  411. if ($core -> fields['hp'] == $core -> fields['max_hp']) error(NO_NEED_HEAL);
  412. if ($core -> fields['hp'] == 0) error(NEED_RESURRECT);
  413. $cost = ceil(($core -> fields['attack'] + $core -> fields['defence'] + $core -> fields['speed']) * $core -> fields['cost'] / 2);
  414. $healinfo = HEAL_COST.' <b>'.$cost.'</b> '.GOLD_PIECES;
  415. $nomoney = '';
  416. if (isset($_POST['heal'])) {
  417. if ($player -> credits < $cost) error(NO_MONEY);
  418. $db -> Execute("UPDATE `players` SET `credits` = `credits` - ".$cost." WHERE `id` = ".($player -> id));
  419. $db -> Execute("UPDATE `coresplayers` SET `hp`=`max_hp` WHERE `id`=".$coreid);
  420. $smarty -> assign("Healinfo","");
  421. $smarty -> assign("Message",CORE_HEALED);
  422. $smarty -> display('error1.tpl');
  423. }
  424. else {
  425. if ($player -> credits < $cost) $nomoney = NO_MONEY;
  426. $smarty -> assign(array(
  427. "Healinfo" => $healinfo,
  428. "Nomoney" => $nomoney
  429. ));
  430. }
  431. }
  432. //resurrect core
  433. if ($_GET['action'] == 'resurrect') {
  434. $core = $db -> Execute("SELECT `owner`, `coresplayers`.`hp`, `coresplayers`.`attack`, `coresplayers`.`defence`, `coresplayers`.`speed`, `cost` FROM `coresplayers`, `coresbase` WHERE `coresplayers`.`id` = ".$coreid." AND `coresplayers`.`base` = `coresbase`.`id`");
  435. if (!isset($core) || $core -> EOF) error(NO_CORE);
  436. if ($core -> fields['owner'] != $player -> id) error(NOT_YOURS);
  437. if ($core -> fields['hp'] > 0) error(NO_NEED_RES);
  438. $cost = ($core -> fields['attack'] + $core -> fields['defence'] + $core -> fields['speed']) * $core -> fields['cost'];
  439. $goldcost = ceil($cost / 2);
  440. $platinumcost = floor($cost / 100);
  441. $adamantiumcost = floor($cost / 200);
  442. $crystalcost = floor($cost / 200);
  443. $resinfo = RESURRECT_COST.' <b>'.$goldcost.'</b> '.GOLD_PIECES;
  444. if ($platinumcost > 0) $resinfo .= ', <b>'.$platinumcost.'</b> '.PLATINUM;
  445. if ($adamantiumcost > 0) $resinfo .= ', <b>'.$adamantiumcost.'</b> '.ADAMANTIUM;
  446. if ($crystalcost > 0) $resinfo .= ', <b>'.$crystalcost.'</b> '.CRYSTAL;
  447. $nomoney = '';
  448. $minerals = $db -> Execute("SELECT `crystal`, `adamantium` FROM `minerals` WHERE `owner` = ".($player -> id));
  449. $adamantium = $minerals -> fields['adamantium'];
  450. $crystal = $minerals -> fields['crystal'];
  451. if (isset($_POST['resurrect'])) {
  452. if ($player -> credits < $goldcost ||
  453. $player -> platinum < $platinumcost ||
  454. $adamantium < $adamantiumcost ||
  455. $crystal < $crystalcost
  456. ) error(NO_MONEY2);
  457. $db -> Execute("UPDATE `players` SET `credits` = `credits` - ".$goldcost.", `platinum` = `platinum` - ".$platinumcost." WHERE `id` = ".($player -> id));
  458. if ($adamantiumcost > 0) $db -> Execute("UPDATE `minerals` SET `adamantium` = `adamantium` - ".$adamantiumcost.", `crystal` = `crystal` - ".$crystalcost." WHERE `owner` = ".($player -> id));
  459. $db -> Execute("UPDATE `coresplayers` SET `hp`=`max_hp` WHERE `id`=".$coreid);
  460. $smarty -> assign("Resinfo","");
  461. $smarty -> assign("Message",CORE_RESURRECTED);
  462. $smarty -> display('error1.tpl');
  463. }
  464. else {
  465. if ($player -> credits < $goldcost ||
  466. $player -> platinum < $platinumcost ||
  467. $adamantium < $adamantiumcost ||
  468. $crystal < $crystalcost
  469. ) $nomoney = NO_MONEY2;
  470. $smarty -> assign(array(
  471. "Resinfo" => $resinfo,
  472. "Nomoney" => $nomoney
  473. ));
  474. }
  475. }
  476. }
  477. else $smarty -> assign("action",'');
  478. $core = $db -> Execute("SELECT `owner`, `petname`, `coresplayers`.`attack`, `coresplayers`.`defence`, `coresplayers`.`speed`, `gender`, `coresplayers`.`hp`, `max_hp`, `status`, `wins`, `loses`, `age`, `coresbase`.`id` AS `name`, `picture`, `atuta`, `atutd`, `atuts`, `maturity`, `arena`, `prize`, `rest` FROM `coresplayers`, `coresbase` WHERE `coresplayers`.`id` = ".$coreid." AND `base` = `coresbase`.`id`");
  479. if (!isset($core) || $core -> EOF) error(NO_CORE);
  480. if ($core -> fields['owner'] != $player -> id) error(NOT_YOURS);
  481. $name = '';
  482. if (($core -> fields["petname"]) != '') $name .= $core -> fields["petname"].' - ';
  483. $name .= $names[$core -> fields["name"]];
  484. $age = $core -> fields['age'];
  485. if ($core -> fields['age'] < $core -> fields['maturity']) {
  486. $age .= ' ('.C_IMMATURE.')';
  487. $rest = 0;
  488. }
  489. else {
  490. $age .= ' ('.C_MATURE.')';
  491. $rest = $core -> fields['rest'];
  492. }
  493. $atut = '';
  494. if ($core -> fields['atuta'] == 1) $atut .= C_ATTACK.' ';
  495. if ($core -> fields['atutd'] == 1) $atut .= C_DEFENCE.' ';
  496. if ($core -> fields['atuts'] == 1) $atut .= C_SPEED.' ';
  497. switch ($core -> fields['status']) {
  498. case 'A': { $status = ACTIVE; break; }
  499. case 'N': { $status = NONACTIVE; break; }
  500. case 'S': { $status = FORSALE." (".($core -> fields['prize'])." ".GOLD_PIECES.")"; break; }
  501. }
  502. if ($core -> fields['hp'] <= 0) $status = C_DEAD;
  503. $smarty -> assign(array(
  504. "view" => "display",
  505. "Ctitle" => $name,
  506. "Gender" => ($core -> fields["gender"] == 'M' ? GENDER_MALE : GENDER_FEMALE),
  507. "Arena" => ($core -> fields["arena"] == 'Z' ? ARENA_Z : ARENA_M),
  508. "Status" => $status,
  509. "Statuscode" => ($core -> fields['status']),
  510. "Coreid" => $coreid,
  511. "Name" => ($core -> fields["petname"]),
  512. "Species" => ($names[$core -> fields["name"]]),
  513. "Text" => ($description[$core -> fields["name"]]),
  514. "Hp" => ($core -> fields['hp']),
  515. "Maxhp" => ($core -> fields['max_hp']),
  516. "Attack" => ($core -> fields["attack"]),
  517. "Defence" => ($core -> fields["defence"]),
  518. "Speed" => ($core -> fields["speed"]),
  519. "Wins" => ($core -> fields["wins"]),
  520. "Loses" => ($core -> fields["loses"]),
  521. "Age" => $age,
  522. "Rest" => $rest,
  523. "Atut" => $atut,
  524. "Image" => ($core -> fields['picture'])
  525. ));
  526. $smarty -> display('core.tpl');
  527. }
  528. break;
  529. }
  530. /**
  531. * search for cores
  532. */
  533. case 'search': {
  534. //szukanie chowańców
  535. $minerals = $db -> Execute("SELECT `meteor`, `adamantium`, `crystal` FROM `minerals` WHERE `owner` = ".($player -> id));
  536. $maxminerals = min(floor(($minerals -> fields['adamantium'])/5),
  537. floor(($minerals -> fields['crystal'])/3),
  538. floor(($minerals -> fields['meteor']))
  539. );
  540. $maxenergy = floor($player -> energy);
  541. $maxtries = min($maxminerals, $maxenergy);
  542. if (isset($_POST['times'])) {
  543. //integercheck
  544. $times = (int)$_POST['times'];
  545. if (!isset($times) || $times == '' || $times < 1) error(ERROR);
  546. if ($times > $maxenergy) error(NO_ENERGY);
  547. if ($times > $maxminerals) error(NO_MINERALS);
  548. //prepare hit array
  549. for ($i=1;$i<31;$i++) $hit[$i] = 0;
  550. $found = 0;
  551. for ($i=0;$i<$times;$i++) {
  552. $rzut = rand(1,10000);
  553. $core = whichcore($rzut);
  554. if ($core > 0) {
  555. $hit[$core]++;
  556. $found = 1;
  557. }
  558. }
  559. if ($found == 0) {
  560. $smarty -> assign(array(
  561. "Searchinfo" => '',
  562. "Nocores" => NO_CORES
  563. ));
  564. }
  565. else {
  566. $sqlpre = "INSERT INTO `coresplayers` (`owner`, `base`, `attack`, `defence`, `speed`, `hp`, `max_hp`, `age`, `gender`) VALUES";
  567. $sql = "";
  568. $list = '';
  569. $gainExp = 0;
  570. for ($i=1;$i<31;$i++)
  571. if ($hit[$i] > 0) {
  572. $core = $db -> Execute("SELECT `arena`, `coresbase`.`id` AS `name`, `attack`, `defence`, `speed`, `hp`, `maturity` FROM `coresbase` WHERE `id`=".$i);
  573. $list .= '<li>'.($names[$core -> fields['name']]).' '.$hit[$i].' '.TIMES.'</li>';
  574. $gainExp += ($core -> fields['arena'] == 'Z') ? 2 * $hit[$i] : 5 * $hit[$i];
  575. for ($j=0;$j<$hit[$i];$j++) {
  576. $attack = round($core -> fields['attack'] * rand(950,1050) / 1000);
  577. $defence = round($core -> fields['defence'] * rand(950,1050) / 1000);
  578. $speed = round($core -> fields['speed'] * rand(950,1050) / 1000);
  579. $hp = round($core -> fields['hp'] * rand(950,1050) / 1000);
  580. $age = rand(0,$core -> fields['maturity'] * 2);
  581. ($sql == '') ? $sql = '' : $sql .= ', ';
  582. $sql .= "(".($player -> id).", ".$i.", ".$attack.", ".$defence.", ".$speed.", ".$hp.", ".$hp.", ".$age.", ";
  583. $sql .= (rand(1,2) == 1) ? "'M')" : "'F')";
  584. }
  585. }
  586. if ($gainExp > 0) {
  587. require_once('includes/checkexp.php');
  588. checkexp($player -> exp, $gainExp, $player -> level, $player -> race, $player -> user, $player -> id, '', '', '','',0);
  589. }
  590. $db -> Execute($sqlpre.$sql);
  591. $smarty -> assign(array(
  592. "Searchinfo" => '',
  593. "Nocores" => '',
  594. "Gainexp" => $gainExp,
  595. "List" => $list
  596. ));
  597. }
  598. $db -> Execute("UPDATE `players` SET `energy` = `energy` - ".($times)." WHERE `id` = ".($player -> id));
  599. $db -> Execute("UPDATE `minerals` SET `meteor` = `meteor` - ".($times).",`adamantium` = `adamantium` - ".($times*5).", `crystal` = `crystal` - ".($times*3)." WHERE `owner` = ".($player -> id));
  600. }
  601. else {
  602. $smarty -> assign(array(
  603. "Searchinfo" => SEARCH_INFO,
  604. "Nocores" => '',
  605. "Maxtries" => $maxtries
  606. ));
  607. }
  608. $smarty -> display('core.tpl');
  609. break;
  610. }
  611. /**
  612. * train core
  613. */
  614. case 'train': {
  615. if (!isset($_POST['id'])) {
  616. $cores = $db -> Execute("SELECT `coresplayers`.`id`, `petname`, `coresplayers`.`attack`, `coresplayers`.`defence`, `coresplayers`.`speed`, `coresplayers`.`hp`, `coresplayers`.`max_hp`, `coresbase`.`id` AS `name` FROM `coresplayers`, `coresbase` WHERE `base` = `coresbase`.`id` AND `status`='N' AND `coresplayers`.`hp` > 0 AND `owner` = ".($player -> id)." ORDER BY `coresbase`.`id`");
  617. for ($i = 0; !$cores -> EOF ; $i++) {
  618. $namelist[$i] = ($cores -> fields['petname']).' ('.($names[$cores -> fields['name']]).')';
  619. $attacklist[$i] = $cores -> fields['attack'];
  620. $defencelist[$i] = $cores -> fields['defence'];
  621. $speedlist[$i] = $cores -> fields['speed'];
  622. $hplist[$i] = ($cores -> fields['hp']).' / '.($cores -> fields['max_hp']);
  623. $idlist[$i] = $cores -> fields['id'];
  624. $cores -> MoveNext();
  625. }
  626. if (isset($namelist))
  627. $smarty -> assign(array(
  628. "Namelist" => $namelist,
  629. "Attacklist" => $attacklist,
  630. "Defencelist" => $defencelist,
  631. "Speedlist" => $speedlist,
  632. "Hplist" => $hplist,
  633. "Idlist" => $idlist,
  634. "Cost" => "",
  635. "Trained" => "N"
  636. ));
  637. else $smarty -> assign(array(
  638. "Namelist" => '',
  639. "Cost" => '',
  640. "Trained" => 'N'
  641. ));
  642. }
  643. else {
  644. //integercheck
  645. $coreid = (int)$_POST['id'];
  646. if (!isset($coreid) || $coreid == '') error(ERROR);
  647. $smarty -> assign("Namelist", '');
  648. $smarty -> assign("Trained", '');
  649. $core = $db -> Execute("SELECT `owner`, `petname`, `status`, `coresplayers`.`attack`, `coresplayers`.`defence`, `coresplayers`.`speed`, `coresplayers`.`hp`, `coresplayers`.`max_hp`, `coresbase`.`id` AS `name`, `arena`, `cost`, `atuta`, `atutd`, `atuts` FROM `coresplayers`, `coresbase` WHERE `base` = `coresbase`.`id` AND `coresplayers`.`id` = ".$coreid);
  650. if ($core -> fields['owner'] != $player -> id) error(NOT_YOURS);
  651. if ($core -> fields['status'] != 'N') error(WRONG_STATUS);
  652. $baseenergycost = 0.1 * $core -> fields['cost'];
  653. $corename = ($core -> fields['petname']).' ('.($names[$core -> fields['name']]).')';
  654. $minerals = $db -> Execute("SELECT `adamantium`, `crystal` FROM `minerals` WHERE `owner` = ".($player -> id));
  655. $adamantium = $minerals -> fields['adamantium'];
  656. $crystal = $minerals -> fields['crystal'];
  657. $platinum = $player -> platinum;
  658. if (isset($_POST['stat']) && isset($_POST['times'])) {
  659. //integercheck
  660. $times = (int)$_POST['times'];
  661. if (!isset($times) || $times == '' || $times < 1) error(ERROR);
  662. if ($_POST['stat'] != 'A' && $_POST['stat'] != 'D' && $_POST['stat'] != 'S') error(WRONG_STAT);
  663. $energycost = $baseenergycost * $times;
  664. if ($core -> fields['arena'] == 'Z') {
  665. $baseadamantiumcost = 1;
  666. $basecrystalcost = 1;
  667. $baseplatinumcost = 0;
  668. }
  669. else {
  670. $baseadamantiumcost = 3;
  671. $basecrystalcost = 2;
  672. $baseplatinumcost = 1;
  673. }
  674. if ($energycost > $player -> energy) error(NO_ENERGY);
  675. $templebless = $db -> Execute("SELECT `bless`, `blessval` FROM `players` WHERE `id` = ".($player -> id));
  676. if ($templebless -> fields['bless'] == 'breeding') {
  677. $bless = $templebless -> fields['blessval'];
  678. $player -> breeding += $bless;
  679. }
  680. $gainbreed = 0;
  681. $gainstat = 0;
  682. $gainExp = 0;
  683. $statsum = $core -> fields['attack'] + $core -> fields['defence'] + $core -> fields['speed'];
  684. switch ($_POST['stat']) {
  685. case 'A': $stat = 'attack';
  686. $mult = ($core -> fields['atuta'] == 1)? 1.5 : 1;
  687. $strStat = T_ATTACK;
  688. break;
  689. case 'D': $stat = 'defence';
  690. $mult = ($core -> fields['atutd'] == 1)? 1.5 : 1;
  691. $strStat = T_DEFENCE;
  692. break;
  693. case 'S': $stat = 'speed';
  694. $mult = ($core -> fields['atuts'] == 1)? 1.5 : 1;
  695. $strStat = T_SPEED;
  696. }
  697. $statsum += $core -> fields[$stat];
  698. $adamantiumcost = 0;
  699. $crystalcost = 0;
  700. $platinumcost = 0;
  701. for ($i = 0; $i < $times; $i++) {
  702. //no minerals for succesfull training
  703. if ($adamantium < $adamantiumcost + $baseadamantiumcost ||
  704. $crystal < $crystalcost + $basecrystalcost ||
  705. $platinum < $platinumcost + $baseplatinumcost) {
  706. break;
  707. }
  708. $chance = 2000 * ($player -> breeding + $gainbreed) / ($statsum + $gainstat) - 5 * $core -> fields['cost'];
  709. if ($chance > 90) $chance = 90;
  710. if (rand(1,100) <= $chance) {
  711. $gainstat += (0.5 + ($player -> breeding + $gainbreed) / 50) * $mult;
  712. $gainbreed += $baseenergycost / 50;
  713. $gainExp += 5 * $core -> fields['cost'] * $baseenergycost;
  714. $adamantiumcost += $baseadamantiumcost;
  715. $crystalcost += $basecrystalcost;
  716. $platinumcost += $baseplatinumcost;
  717. }
  718. else {
  719. $gainbreed += $baseenergycost / 100;
  720. }
  721. }
  722. $energycost = $baseenergycost * $i;
  723. $gainbreed = round($gainbreed,2);
  724. $gainExp = floor($gainExp);
  725. $db -> Execute("UPDATE `coresplayers` SET `".$stat."` = `".$stat."` + ".$gainstat." WHERE `id` = ".$coreid);
  726. $playersql = "UPDATE `players` SET `energy` = `energy` - ".$energycost.", `platinum` = `platinum` - ".$platinumcost.", `breeding` = `breeding` + ".$gainbreed;
  727. if (isset($bless)) $playersql .= ", bless = '', blessval = 0";
  728. $playersql .= " WHERE `id` = ".($player -> id);
  729. $db -> Execute($playersql);
  730. $db -> Execute("UPDATE `minerals` SET `adamantium` = `adamantium` - ".$adamantiumcost.", `crystal` = `crystal` - ".$crystalcost." WHERE `owner`=".($player -> id));
  731. if ($gainExp > 0) {
  732. require_once('includes/checkexp.php');
  733. checkexp($player -> exp, $gainExp, $player -> level, $player -> race, $player -> user, $player -> id, '', '', '','',0);
  734. }
  735. $smarty -> assign(array(
  736. "Cost" => '',
  737. "Gainstat" => $gainstat,
  738. "Stat" => $strStat,
  739. "Gainbreed" => $gainbreed,
  740. "GainExp" => $gainExp,
  741. "Adamantium" => $adamantiumcost,
  742. "Platinum" => $platinumcost,
  743. "Crystal" => $crystalcost,
  744. "Energy" => $energycost,
  745. "Trained" => "Y"
  746. ));
  747. }
  748. else {
  749. if ($core -> fields['arena'] == 'Z') {
  750. $cost = (FOR_ONE_TRAIN.' 1 '.ADAMANTIUM.', 1 '.CRYSTAL.', '.$baseenergycost.' '.ENERGY);
  751. }
  752. else {
  753. $cost = (FOR_ONE_TRAIN.' 3 '.ADAMANTIUM.', 2 '.CRYSTAL.', 1 '.PLATINUM.', '.$baseenergycost.' '.ENERGY);
  754. }
  755. $maxtries = floor($player -> energy / $baseenergycost);
  756. $smarty -> assign(array(
  757. "Cost" => $cost,
  758. "Maxtries" => $maxtries,
  759. "Corename" => $corename,
  760. "Coreid" => $coreid,
  761. "Trained" => "N"
  762. ));
  763. }
  764. }
  765. $smarty -> display('core.tpl');
  766. break;
  767. }
  768. /**
  769. * buy cores
  770. */
  771. case 'market': {
  772. if (isset($_GET['buy'])) {
  773. $coreid = (int)$_GET['buy'];
  774. if (!isset($coreid) || $coreid == '') error(ERROR);
  775. $core = $db -> Execute("SELECT `prize`, `owner`, `status`, `coresbase`.`id` AS `name` FROM `coresplayers`, `coresbase` WHERE `base` = `coresbase`.`id` AND `coresplayers`.`id` = ".$coreid);
  776. if ($core -> fields['owner'] == $player -> id) error(IS_YOURS);
  777. if ($core -> fields['status'] != 'S') error(NOT_FOR_SALE);
  778. if ($core -> fields['prize'] > $player -> credits) error(NO_MONEY);
  779. $db -> Execute("UPDATE `players` SET `credits` = `credits` - ".($core -> fields['prize'])." WHERE `id` = ".($player -> id));
  780. $db -> Execute("UPDATE `players` SET `bank` = `bank` + ".($core -> fields['prize'])." WHERE `id` = ".($core -> fields['owner']));
  781. $db -> Execute("UPDATE `coresplayers` SET `prize` = 0, `status` = 'N', `owner` = ".($player -> id)." WHERE `id` = ".($coreid));
  782. $smarty -> assign("Message",'<b>'.YOU_BOUGHT.'</b><br/><br/>');
  783. $smarty -> display('error1.tpl');
  784. global $newdate;
  785. $strDate = $db -> DBDate($newdate);
  786. $msg = '<a href="view.php?view='.($player -> id).'">'.($player -> user).'</a> '.BOUGHT.' '.($names[$core -> fields['name']]).'. '.YOU_GOT.' <b>'.($core -> fields['prize']).'</b> '.GOLD_PIECES.' '.TO_BANK;
  787. $db -> Execute('INSERT INTO `log` (`owner`, `log`, `czas`) VALUES('.($core -> fields['owner']).', \''.$msg.'\', '.$strDate.');');
  788. }
  789. $cores = $db -> Execute("SELECT `players`.`id` AS `pid`, `coresplayers`.`id`, `user`, `prize`, `coresplayers`.`attack`, `coresplayers`.`defence`, `coresplayers`.`speed`, `coresplayers`.`max_hp`, `coresbase`.`id` AS `name`, `coresplayers`.`gender` FROM `players`, `coresplayers`, `coresbase` WHERE `status` = 'S' AND `owner`=`players`.`id` AND `base` = `coresbase`.`id` AND `owner` <> ".($player -> id)." ORDER BY `prize`, `coresbase`.`id`");
  790. for ($i = 0; !$cores -> EOF ; $i++) {
  791. $namelist[$i] = $names[$cores -> fields['name']];
  792. $attacklist[$i] = $cores -> fields['attack'];
  793. $defencelist[$i] = $cores -> fields['defence'];
  794. $speedlist[$i] = $cores -> fields['speed'];
  795. $hplist[$i] = $cores -> fields['max_hp'];
  796. $prizelist[$i] = $cores -> fields['prize'];
  797. $idlist[$i] = $cores -> fields['id'];
  798. $ownerlist[$i] = $cores -> fields['user'];
  799. $owneridlist[$i] = $cores -> fields['pid'];
  800. $genderlist[$i] = ($cores -> fields['gender'] == 'M') ? GENDER_MALE : GENDER_FEMALE;
  801. $cores -> MoveNext();
  802. }
  803. if (isset($namelist)) {
  804. $smarty -> assign(array(
  805. "Namelist" => $namelist,
  806. "Attacklist" => $attacklist,
  807. "Defencelist" => $defencelist,
  808. "Speedlist" => $speedlist,
  809. "Hplist" => $hplist,
  810. "Prizelist" => $prizelist,
  811. "Idlist" => $idlist,
  812. "Genderlist" => $genderlist,
  813. "Ownerlist" => $ownerlist,
  814. "Owneridlist" => $owneridlist
  815. ));
  816. }
  817. else $smarty -> assign('Namelist', '');
  818. $sellcores = $db -> Execute("SELECT `coresplayers`.`id`, `coresplayers`.`attack`, `coresplayers`.`defence`, `coresplayers`.`speed`, `coresplayers`.`hp`, `coresplayers`.`max_hp`, `coresbase`.`id` AS `name`, `petname`, `coresplayers`.`gender` FROM `coresplayers`, `coresbase` WHERE `status` = 'N' AND `coresplayers`.`hp` > 0 AND `base` = `coresbase`.`id` AND `owner` = ".($player -> id)." ORDER BY `coresbase`.`id`");
  819. for ($i = 0; !$sellcores -> EOF ; $i++) {
  820. $salenamelist[$i] = ($sellcores -> fields['petname']).' ('.($names[$sellcores -> fields['name']]).')';
  821. $saleattacklist[$i] = $sellcores -> fields['attack'];
  822. $saledefencelist[$i] = $sellcores -> fields['defence'];
  823. $salespeedlist[$i] = $sellcores -> fields['speed'];
  824. $salehplist[$i] = ($sellcores -> fields['hp']).' / '.($sellcores -> fields['max_hp']);
  825. $saleidlist[$i] = $sellcores -> fields['id'];
  826. $salegenderlist[$i] = ($sellcores -> fields['gender'] == 'M') ? GENDER_MALE : GENDER_FEMALE;
  827. $sellcores -> MoveNext();
  828. }
  829. if (isset($salenamelist)) {
  830. $smarty -> assign(array(
  831. "SellNamelist" => $salenamelist,
  832. "SellAttacklist" => $saleattacklist,
  833. "SellDefencelist" => $saledefencelist,
  834. "SellSpeedlist" => $salespeedlist,
  835. "SellHplist" => $salehplist,
  836. "SellIdlist" => $saleidlist,
  837. "SellGenderlist" => $salegenderlist
  838. ));
  839. }
  840. else $smarty -> assign('SellNamelist', '');
  841. $smarty -> display('core.tpl');
  842. break;
  843. }
  844. /**
  845. * cores' arena
  846. */
  847. case 'arena': {
  848. //choosing cores to fight
  849. if (isset($_GET['arena'])) {
  850. if ($player -> energy < 0.5) error(NO_ENERGY);
  851. if ($_GET['arena'] != 'Z' && $_GET['arena'] != 'M') error(WRONG_ARENA);
  852. else $smarty -> assign("Arena",$_GET['arena']);
  853. $mycores = $db -> Execute("SELECT `coresplayers`.`id`, `coresplayers`.`petname`, `coresplayers`.`attack`, `coresplayers`.`defence`, `coresplayers`.`speed`, `coresplayers`.`max_hp`, `coresplayers`.`hp`, `coresbase`.`id` AS `name` FROM `coresplayers`, `coresbase` WHERE `status` = 'A' AND `base` = `coresbase`.`id` AND `coresplayers`.`hp` > 0 AND `coresbase`.`arena` = '".($_GET['arena'])."' AND `fights` < 3 AND `owner` = ".($player -> id)." ORDER BY `base`");
  854. for ($i = 0; !$mycores -> EOF ; $i++) {
  855. $namelist[$i] = ($mycores -> fields['petname']).' ('.($names[$mycores -> fields['name']]).')';
  856. $attacklist[$i] = $mycores -> fields['attack'];
  857. $defencelist[$i] = $mycores -> fields['defence'];
  858. $speedlist[$i] = $mycores -> fields['speed'];
  859. $hplist[$i] = ($mycores -> fields['hp']).' / '.($mycores -> fields['max_hp']);
  860. $idlist[$i] = $mycores -> fields['id'];
  861. $mycores -> MoveNext();
  862. }
  863. if ($i == 0) error(NO_ACTIVE_CORE);
  864. $opcores = $db -> Execute("SELECT `user`, `owner`, `coresplayers`.`id`, `coresplayers`.`petname`, `coresbase`.`id` AS `name` FROM `players`, `coresplayers`, `coresbase` WHERE `status` = 'A' AND `base` = `coresbase`.`id` AND `coresplayers`.`hp` > 0 AND `coresbase`.`arena` = '".($_GET['arena'])."' AND `owner` <> ".($player -> id)." AND `fights` < 3 AND `owner`=`players`.`id` ORDER BY `base`");
  865. for ($i = 0; !$opcores -> EOF ; $i++) {
  866. $onamelist[$i] = ($opcores -> fields['petname']).' ('.($names[$opcores -> fields['name']]).')';
  867. $oidlist[$i] = $opcores -> fields['id'];
  868. $oownerlist[$i] = $opcores -> fields['user'];
  869. $oowneridlist[$i] = $opcores -> fields['owner'];
  870. $opcores -> MoveNext();
  871. }
  872. if ($i == 0) error(NO_OPPONENTS);
  873. $smarty -> assign(array(
  874. "Namelist" => $namelist,
  875. "Attacklist" => $attacklist,
  876. "Defencelist" => $defencelist,
  877. "Speedlist" => $speedlist,
  878. "Hplist" => $hplist,
  879. "Idlist" => $idlist,
  880. "ONamelist" => $onamelist,
  881. "OIdlist" => $oidlist,
  882. "OOwnerlist" => $oownerlist,
  883. "OOwneridlist" => $oowneridlist,
  884. ));
  885. }
  886. //cores fight
  887. else if (isset($_GET['action']) && $_GET['action'] == 'fight') {
  888. //integercheck
  889. if (isset($_POST['my'])) $myid = (int)$_POST['my'];
  890. if (!isset($myid) || $myid == '') error(ERROR);
  891. if (isset($_POST['opponent'])) $opid = (int)$_POST['opponent'];
  892. if (!isset($opid) || $opid == '') error(ERROR);
  893. if ($player -> energy < 0.5) error(NO_ENERGY);
  894. $mycore = $db -> Execute("SELECT `owner`, `coresplayers`.`petname`, `coresplayers`.`attack`, `coresplayers`.`defence`, `coresplayers`.`speed`, `arena`, `fights`, `coresplayers`.`hp`, `coresplayers`.`max_hp`, `coresbase`.`id` AS `name`, `cost` FROM `coresplayers`, `coresbase` WHERE `status` = 'A' AND `base` = `coresbase`.`id` AND `coresplayers`.`id` = ".$myid);
  895. if (!isset($mycore) || $mycore -> EOF) error(NO_CORE);
  896. if ($mycore -> fields['fights'] > 2) error(YOURS_EXHAUSTED);
  897. if ($mycore -> fields['owner'] != $player -> id) error(NOT_YOURS);
  898. if ($mycore -> fields['hp'] <= 0) error(YOURS_IS_DEAD);
  899. //prepare attacker's core array
  900. $attacker['name'] = ($mycore -> fields['petname'] != '') ? ($mycore -> fields['petname']).' - ' : '' ;
  901. $attacker['name'] .= $names[($mycore -> fields['name'])];
  902. $attacker['attack'] = $mycore -> fields['attack'];
  903. $attacker['defence'] = $mycore -> fields['defence'];
  904. $attacker['speed'] = $mycore -> fields['speed'];
  905. $attacker['hp'] = $mycore -> fields['hp'];
  906. $attacker['max_hp'] = $mycore -> fields['max_hp'];
  907. $attacker['user'] = $player -> user;
  908. $attacker['ownerid'] = $player -> id;
  909. $opcore = $db -> Execute("SELECT `players`.`id`, `user`, `owner`, `coresplayers`.`petname`, `coresplayers`.`attack`, `coresplayers`.`defence`, `coresplayers`.`speed`, `arena`, `fights`, `coresplayers`.`hp`, `coresplayers`.`max_hp`, `coresbase`.`id` AS `name`, `cost` FROM `players`, `coresplayers`, `coresbase` WHERE `status` = 'A' AND `base` = `coresbase`.`id` AND `coresplayers`.`id` = ".$opid." AND `owner` = `players`.`id`");
  910. if (!isset($opcore) || $opcore -> EOF) error(NO_OPPONENT);
  911. if ($opcore -> fields['fights'] > 2) error(OPPONENTS_EXHAUSTED);
  912. if ($opcore -> fields['hp'] <= 0) error(OPPONENTS_IS_DEAD);
  913. if ($mycore -> fields['owner'] == $opcore -> fields['owner']) error(YOUR_OWN);
  914. if ($mycore -> fields['arena'] != $opcore -> fields['arena']) error(DIFFERENT_ARENA);
  915. //prepare defender's core array
  916. $defender['name'] = ($opcore -> fields['petname'] != '') ? ($opcore -> fields['petname']).' - ' : '' ;
  917. $defender['name'] .= $names[($opcore -> fields['name'])];
  918. $defender['attack'] = $opcore -> fields['attack'];
  919. $defender['defence'] = $opcore -> fields['defence'];
  920. $defender['speed'] = $opcore -> fields['speed'];
  921. $defender['hp'] = $opcore -> fields['hp'];
  922. $defender['max_hp'] = $opcore -> fields['max_hp'];
  923. $defender['user'] = $opcore -> fields['user'];
  924. $defender['ownerid'] = $opcore -> fields['id'];
  925. $db -> Execute("UPDATE `players` SET `energy` = `energy` - 0.5 WHERE `id` = ".($player -> id));
  926. //fight
  927. if ($attacker['speed'] < $defender['speed']) $fightlog = corefight($defender,$attacker);
  928. else $fightlog = corefight($attacker,$defender);
  929. //page title
  930. $fight = '['.($attacker['user']).'] '.($attacker['name']).' '.VERSUS.' '.($defender['name']).' ['.($defender['user']).']';
  931. //after fight
  932. if ($attacker['hp'] < 0) $attacker['hp'] = 0;
  933. if ($defender['hp'] < 0) $defender['hp'] = 0;
  934. if ($attacker['hp'] > 0 && $defender['hp'] > 0) {
  935. $result = YOU_DRAW;
  936. $db -> Execute("UPDATE `coresplayers` SET `hp` = ".($attacker['hp']).", `fights` = `fights` + 1 WHERE `id` = ".$myid);
  937. $db -> Execute("UPDATE `coresplayers` SET `hp` = ".($defender['hp']).", `fights` = `fights` + 1 WHERE `id` = ".$opid);
  938. $smarty -> assign('Reward','');
  939. $msg = CORE_M.' '.($attacker['name']).' [<a href="view.php?view='.($attacker['ownerid']).'">'.($attacker['user']).'</a>] '.ATTACKED.' '.($defender['name']).'. '.YOU_DRAW;
  940. }
  941. else if ($attacker['hp'] > 0 && $defender['hp'] == 0) {
  942. $result = YOU_WON;
  943. $gainHp = rand(1, ($opcore -> fields['cost'])) / 10;
  944. $db -> Execute("UPDATE `coresplayers` SET `hp` = ".($attacker['hp']).", `max_hp` = `max_hp` + ".$gainHp.", `fights` = `fights` + 1, `wins` = `wins` + 1 WHERE `id` = ".$myid);
  945. $db -> Execute("UPDATE `coresplayers` SET `hp` = ".($defender['hp']).", `fights` = `fights` + 1, `loses` = `loses` + 1 WHERE `id` = ".$opid);
  946. //attacker wins and get gold to hand
  947. $gainGold = ceil($defender['attack'] + $defender['defence'] + $defender['speed'] + $defender['max_hp']);
  948. $gainGold *= (($opcore -> fields['arena']) == 'Z') ? 2 : 3;
  949. $gainPlatinum = rand(0,ceil($gainGold/200));
  950. $smarty -> assign('Reward',YOU_GOT.' <b>'.$gainGold.'</b> '.GOLD_PIECES.', <b>'.$gainPlatinum.'</b> '.PLATINUM);
  951. $db -> Execute("UPDATE `players` SET `credits` = `credits` + ".$gainGold.", `platinum` = `platinum` + ".$gainPlatinum." WHERE `id` = ".$attacker['ownerid']);
  952. $msg = CORE_M.' '.($attacker['name']).' [<a href="view.php?view='.($attacker['ownerid']).'">'.($attacker['user']).'</a>] '.ATTACKED.' '.($defender['name']).'. '.YOU_LOST;
  953. }
  954. else {
  955. $result = YOU_LOST;
  956. $gainHp = rand(1, ($mycore -> fields['cost'])) / 10;
  957. $db -> Execute("UPDATE `coresplayers` SET `hp` = ".($attacker['hp']).", `fights` = `fights` + 1, `loses` = `loses` + 1 WHERE `id` = ".$myid);
  958. $db -> Execute("UPDATE `coresplayers` SET `hp` = ".($defender['hp']).", `max_hp` = `max_hp` + ".$gainHp.", `fights` = `fights` + 1, `wins` = `wins` + 1 WHERE `id` = ".$opid);
  959. //defender wins and get gold to bank
  960. $gainGold = ceil($attacker['attack'] + $attacker['defence'] + $attacker['speed'] + $attacker['max_hp']);
  961. $gainGold *= (($opcore -> fields['arena']) == 'Z') ? 2 : 3;
  962. $gainPlatinum = rand(0,ceil($gainGold/200));
  963. $db -> Execute("UPDATE `players` SET `bank` = `bank` + ".$gainGold.", `platinum` = `platinum` + ".$gainPlatinum." WHERE `id` = ".$defender['ownerid']);
  964. $smarty -> assign('Reward','');
  965. $msg = CORE_M.' '.($attacker['name']).' [<a href="view.php?view='.($attacker['ownerid']).'">'.($attacker['user']).'</a>] '.ATTACKED.' '.($defender['name']).'. '.YOU_WON.' '.YOU_GOT.' <b>'.($gainGold).'</b> '.GOLD_PIECES.', '.($gainPlatinum).PLATINUM;
  966. }
  967. global $newdate;
  968. $strDate = $db -> DBDate($newdate);
  969. $db -> Execute('INSERT INTO `log` (`owner`, `log`, `czas`) VALUES('.($defender['ownerid']).', \''.$msg.'\', '.$strDate.');');
  970. $smarty -> assign(array(
  971. "Fight" => $fight,
  972. "Log" => $fightlog,
  973. "Result" => $result,
  974. "Arena" => ''
  975. ));
  976. }
  977. //choosing arena - main view
  978. else {
  979. $smarty -> assign(array(
  980. "Arena" => '',
  981. "Fight" => ''
  982. ));
  983. }
  984. $smarty -> display('core.tpl');
  985. break;
  986. }
  987. /**
  988. * breeding cores
  989. */
  990. case 'breed': {
  991. if (isset($_POST['maleid']) && isset($_POST['femaleid'])) {
  992. //integercheck
  993. $malecoreid = (int)$_POST['maleid'];
  994. if (!isset($malecoreid) || $malecoreid == '') error(ERROR);
  995. $femalecoreid = (int)$_POST['femaleid'];
  996. if (!isset($femalecoreid) || $femalecoreid == '') error(ERROR);
  997. $malecore = $db -> Execute("SELECT `owner`, `coresplayers`.`attack`, `coresplayers`.`defence`, `coresplayers`.`speed`, `coresplayers`.`hp`, `coresplayers`.`max_hp`, `coresbase`.`id` AS `name`, `petname`, `gender`, `age`, `maturity`, `rest`, `status`, `arena`, `cost`, `base` FROM `coresplayers`, `coresbase` WHERE `coresbase`.`id` = `base` AND `coresplayers`.`id` = ".($malecoreid));
  998. if ($malecore -> fields['owner'] != $player -> id) error(NOT_YOURS);
  999. if ($malecore -> fields['status'] != 'N') error(WRONG_STATUS);
  1000. if ($malecore -> fields['hp'] <= 0) error(IS_DEAD);
  1001. if ($malecore -> fields['gender'] != 'M') error(WRONG_GENDER);
  1002. if ($malecore -> fields['age'] < $malecore -> fields['maturity']) error(TOO_YOUNG);
  1003. if ($malecore -> fields['rest'] > 0) error(NEED_REST);
  1004. $femalecore = $db -> Execute("SELECT `owner`, `coresplayers`.`attack`, `coresplayers`.`defence`, `coresplayers`.`speed`, `coresplayers`.`hp`, `coresplayers`.`max_hp`, `coresbase`.`id` AS `name`, `petname`, `gender`, `age`, `maturity`, `rest`, `status` FROM `coresplayers`, `coresbase` WHERE `coresbase`.`id` = `base` AND `coresplayers`.`id` = ".($femalecoreid));
  1005. if ($femalecore -> fields['owner'] != $player -> id) error(NOT_YOURS);
  1006. if ($femalecore -> fields['status'] != 'N') error(WRONG_STATUS);
  1007. if ($femalecore -> fields['hp'] <= 0) error(IS_DEAD);
  1008. if ($femalecore -> fields[

Large files files are truncated, but you can click here to view the full file