PageRenderTime 47ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/includes/classes/missions/MissionCaseDestruction.class.php

https://bitbucket.org/VolCh/2moons
PHP | 647 lines | 508 code | 106 blank | 33 comment | 21 complexity | b0c586ddee148d75504f4ef3eba56058 MD5 | raw file
Possible License(s): LGPL-2.1, LGPL-3.0, GPL-3.0, GPL-2.0, Apache-2.0, AGPL-3.0
  1. <?php
  2. /**
  3. * 2Moons
  4. * Copyright (C) 2012 Jan Krรถpke
  5. *
  6. * This program is free software: you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation, either version 3 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  18. *
  19. * @package 2Moons
  20. * @author Jan Krรถpke <info@2moons.cc>
  21. * @copyright 2012 Jan Krรถpke <info@2moons.cc>
  22. * @license http://www.gnu.org/licenses/gpl.html GNU GPLv3 License
  23. * @version 1.7.2 (2013-03-18)
  24. * @info $Id$
  25. * @link http://2moons.cc/
  26. */
  27. class MissionCaseDestruction extends MissionFunctions implements Mission
  28. {
  29. function __construct($Fleet)
  30. {
  31. $this->_fleet = $Fleet;
  32. }
  33. function TargetEvent()
  34. {
  35. global $resource, $reslist;
  36. $db = Database::get();
  37. $fleetAttack = array();
  38. $fleetDefend = array();
  39. $userAttack = array();
  40. $userDefend = array();
  41. $incomingFleets = array();
  42. $stealResource = array(
  43. 901 => 0,
  44. 902 => 0,
  45. 903 => 0,
  46. );
  47. $debris = array();
  48. $planetDebris = array();
  49. $debrisResource = array(901, 902);
  50. $messageHTML = <<<HTML
  51. <div class="raportMessage">
  52. <table>
  53. <tr>
  54. <td colspan="2"><a href="game.php?page=raport&raport=%s" target="_blank"><span class="%s">%s %s (%s)</span></a></td>
  55. </tr>
  56. <tr>
  57. <td>%s</td><td><span class="%s">%s: %s</span>&nbsp;<span class="%s">%s: %s</span></td>
  58. </tr>
  59. <tr>
  60. <td>%s</td><td><span>%s:&nbsp;<span class="reportSteal element901">%s</span>&nbsp;</span><span>%s:&nbsp;<span class="reportSteal element902">%s</span>&nbsp;</span><span>%s:&nbsp;<span class="reportSteal element903">%s</span></span></td>
  61. </tr>
  62. <tr>
  63. <td>%s</td><td><span>%s:&nbsp;<span class="reportDebris element901">%s</span>&nbsp;</span><span>%s:&nbsp;<span class="reportDebris element902">%s</span></span></td>
  64. </tr>
  65. </table>
  66. </div>
  67. HTML;
  68. //Minize HTML
  69. $messageHTML = str_replace(array("\n", "\t", "\r"), "", $messageHTML);
  70. $sql = "SELECT * FROM %%PLANETS%% WHERE id = :planetId;";
  71. $targetPlanet = $db->selectSingle($sql, array(
  72. ':planetId' => $this->_fleet['fleet_end_id']
  73. ));
  74. $sql = "SELECT * FROM %%USERS%% WHERE id = :userId;";
  75. $targetUser = $db->selectSingle($sql, array(
  76. ':userId' => $targetPlanet['id_owner']
  77. ));
  78. $targetUser['factor'] = getFactors($targetUser, 'basic', $this->_fleet['fleet_start_time']);
  79. $planetUpdater = new ResourceUpdate();
  80. list($targetUser, $targetPlanet) = $planetUpdater->CalcResource($targetUser, $targetPlanet, true, $this->_fleet['fleet_start_time']);
  81. if($this->_fleet['fleet_group'] != 0)
  82. {
  83. $sql = "DELETE FROM %%AKS%% WHERE id = :acsId;";
  84. $db->delete($sql, array(
  85. ':acsId' => $this->_fleet['fleet_group'],
  86. ));
  87. $sql = "SELECT * FROM %%FLEETS%% WHERE fleet_group = :acsId;";
  88. $incomingFleetsResult = $db->select($sql, array(
  89. ':acsId' => $this->_fleet['fleet_group'],
  90. ));
  91. foreach($incomingFleetsResult as $incomingFleetRow)
  92. {
  93. $incomingFleets[$incomingFleetRow['fleet_id']] = $incomingFleetRow;
  94. }
  95. unset($incomingFleetsResult);
  96. }
  97. else
  98. {
  99. $incomingFleets = array($this->_fleet['fleet_id'] => $this->_fleet);
  100. }
  101. foreach($incomingFleets as $fleetID => $fleetDetail)
  102. {
  103. $sql = "SELECT * FROM %%USERS%% WHERE id = :userId;";
  104. $fleetAttack[$fleetID]['player'] = $db->selectSingle($sql, array(
  105. ':userId' => $fleetDetail['fleet_owner']
  106. ));
  107. $fleetAttack[$fleetID]['player']['factor'] = getFactors($fleetAttack[$fleetID]['player'], 'attack', $this->_fleet['fleet_start_time']);
  108. $fleetAttack[$fleetID]['fleetDetail'] = $fleetDetail;
  109. $fleetAttack[$fleetID]['unit'] = FleetFunctions::unserialize($fleetDetail['fleet_array']);
  110. $userAttack[$fleetAttack[$fleetID]['player']['id']] = $fleetAttack[$fleetID]['player']['username'];
  111. }
  112. $sql = "SELECT * FROM %%FLEETS%%
  113. WHERE fleet_mission = :mission
  114. AND fleet_end_id = :fleetEndId
  115. AND fleet_start_time <= :timeStamp
  116. AND fleet_end_stay >= :timeStamp;";
  117. $targetFleetsResult = $db->select($sql, array(
  118. ':mission' => 5,
  119. ':fleetEndId' => $this->_fleet['fleet_end_id'],
  120. ':timeStamp' => TIMESTAMP
  121. ));
  122. foreach($targetFleetsResult as $fleetDetail)
  123. {
  124. $fleetID = $fleetDetail['fleet_id'];
  125. $sql = "SELECT * FROM %%USERS%% WHERE id = :userId;";
  126. $fleetAttack[$fleetID]['player'] = $db->selectSingle($sql, array(
  127. ':userId' => $fleetDetail['fleet_owner']
  128. ));
  129. $fleetDefend[$fleetID]['player']['factor'] = getFactors($fleetDefend[$fleetID]['player'], 'attack', $this->_fleet['fleet_start_time']);
  130. $fleetDefend[$fleetID]['fleetDetail'] = $fleetDetail;
  131. $fleetDefend[$fleetID]['unit'] = FleetFunctions::unserialize($fleetDetail['fleet_array']);
  132. $userDefend[$fleetDefend[$fleetID]['player']['id']] = $fleetDefend[$fleetID]['player']['username'];
  133. }
  134. unset($targetFleetsResult);
  135. $fleetDefend[0]['player'] = $targetUser;
  136. $fleetDefend[0]['player']['factor'] = getFactors($fleetDefend[0]['player'], 'attack', $this->_fleet['fleet_start_time']);
  137. $fleetDefend[0]['fleetDetail'] = array(
  138. 'fleet_start_galaxy' => $targetPlanet['galaxy'],
  139. 'fleet_start_system' => $targetPlanet['system'],
  140. 'fleet_start_planet' => $targetPlanet['planet'],
  141. 'fleet_start_type' => $targetPlanet['planet_type'],
  142. );
  143. $fleetDefend[0]['unit'] = array();
  144. foreach(array_merge($reslist['fleet'], $reslist['defense']) as $elementID)
  145. {
  146. if (empty($targetPlanet[$resource[$elementID]])) continue;
  147. $fleetDefend[0]['unit'][$elementID] = $targetPlanet[$resource[$elementID]];
  148. }
  149. $userDefend[$fleetDefend[0]['player']['id']] = $fleetDefend[0]['player']['username'];
  150. require_once 'includes/classes/missions/functions/calculateAttack.php';
  151. $fleetIntoDebris = Config::get($this->_fleet['fleet_universe'])->Fleet_Cdr;
  152. $defIntoDebris = Config::get($this->_fleet['fleet_universe'])->Defs_Cdr;
  153. $combatResult = calculateAttack($fleetAttack, $fleetDefend, $fleetIntoDebris, $defIntoDebris);
  154. foreach ($fleetAttack as $fleetID => $fleetDetail)
  155. {
  156. $fleetArray = '';
  157. $totalCount = 0;
  158. $fleetDetail['unit'] = array_filter($fleetDetail['unit']);
  159. foreach ($fleetDetail['unit'] as $elementID => $amount)
  160. {
  161. $fleetArray .= $elementID.','.floattostring($amount).';';
  162. $totalCount += $amount;
  163. }
  164. if($totalCount == 0)
  165. {
  166. if($this->_fleet['fleet_id'] == $fleetID)
  167. {
  168. $this->KillFleet();
  169. }
  170. else
  171. {
  172. $sql = 'DELETE %%FLEETS%%, %%FLEETS_EVENT%%
  173. FROM %%FLEETS%%
  174. INNER JOIN %%FLEETS_EVENT%% ON fleetID = fleet_id
  175. WHERE fleet_id = :fleetId;';
  176. $db->delete($sql, array(
  177. ':fleetId' => $fleetID
  178. ));
  179. }
  180. $sql = 'UPDATE %%LOG_FLEETS%% SET fleet_state = :fleetState WHERE fleet_id = :fleetId;';
  181. $db->update($sql, array(
  182. ':fleetId' => $fleetID,
  183. ':fleetState' => FLEET_HOLD,
  184. ));
  185. unset($fleetAttack[$fleetID]);
  186. }
  187. elseif($totalCount > 0)
  188. {
  189. $sql = "UPDATE %%FLEETS%% fleet, %%LOG_FLEETS%% log SET
  190. fleet.fleet_array = :fleetData,
  191. fleet.fleet_amount = :fleetCount,
  192. log.fleet_array = :fleetData,
  193. log.fleet_amount = :fleetCount
  194. WHERE log.fleet_id = :fleetId AND log.fleet_id = :fleetId;";
  195. $db->update($sql, array(
  196. ':fleetData' => substr($fleetArray, 0, -1),
  197. ':fleetCount' => $totalCount,
  198. ':fleetId' => $fleetID
  199. ));
  200. }
  201. else
  202. {
  203. throw new OutOfRangeException("Negative Fleet amount ....");
  204. }
  205. }
  206. foreach ($fleetDefend as $fleetID => $fleetDetail)
  207. {
  208. if($fleetID != 0)
  209. {
  210. // Stay fleet
  211. $fleetArray = '';
  212. $totalCount = 0;
  213. $fleetDetail['unit'] = array_filter($fleetDetail['unit']);
  214. foreach ($fleetDetail['unit'] as $elementID => $amount)
  215. {
  216. $fleetArray .= $elementID.','.floattostring($amount).';';
  217. $totalCount += $amount;
  218. }
  219. if($totalCount == 0)
  220. {
  221. $sql = 'DELETE %%FLEETS%%, %%FLEETS_EVENT%%
  222. FROM %%FLEETS%%
  223. INNER JOIN %%FLEETS_EVENT%% ON fleetID = fleet_id
  224. WHERE fleet_id = :fleetId;';
  225. $db->delete($sql, array(
  226. ':fleetId' => $fleetID
  227. ));
  228. $sql = 'UPDATE %%LOG_FLEETS%% SET fleet_state = :fleetState WHERE fleet_id = :fleetId;';
  229. $db->update($sql, array(
  230. ':fleetId' => $fleetID,
  231. ':fleetState' => FLEET_HOLD,
  232. ));
  233. unset($fleetAttack[$fleetID]);
  234. }
  235. elseif($totalCount > 0)
  236. {
  237. $sql = "UPDATE %%FLEETS%% fleet, %%LOG_FLEETS%% log SET
  238. fleet.fleet_array = :fleetData,
  239. fleet.fleet_amount = :fleetCount,
  240. log.fleet_array = :fleetData,
  241. log.fleet_amount = :fleetCount
  242. WHERE log.fleet_id = :fleetId AND log.fleet_id = :fleetId;";
  243. $db->update($sql, array(
  244. ':fleetData' => substr($fleetArray, 0, -1),
  245. ':fleetCount' => $totalCount,
  246. ':fleetId' => $fleetID
  247. ));
  248. }
  249. else
  250. {
  251. throw new OutOfRangeException("Negative Fleet amount ....");
  252. }
  253. }
  254. else
  255. {
  256. $params = array(':planetId' => $this->_fleet['fleet_end_id']);
  257. // Planet fleet
  258. $fleetArray = array();
  259. foreach ($fleetDetail['unit'] as $elementID => $amount)
  260. {
  261. $fleetArray[] = '`'.$resource[$elementID].'` = :'.$resource[$elementID];
  262. $params[':'.$resource[$elementID]] = $amount;
  263. }
  264. if(!empty($fleetArray))
  265. {
  266. $sql = 'UPDATE %%PLANETS%% SET '.implode(', ', $fleetArray).' WHERE id = :planetId;';
  267. $db->update($sql, $params);
  268. }
  269. }
  270. }
  271. if ($combatResult['won'] == "a")
  272. {
  273. require_once 'includes/classes/missions/functions/calculateSteal.php';
  274. $stealResource = calculateSteal($fleetAttack, $targetPlanet);
  275. }
  276. if($this->_fleet['fleet_end_type'] == 3)
  277. {
  278. // Use planet debris, if attack on moons
  279. $sql = "SELECT der_metal, der_crystal FROM %%PLANETS%% WHERE id_luna = :moonId;";
  280. $targetDebris = $db->selectSingle($sql, array(
  281. ':moonId' => $this->_fleet['fleet_end_id']
  282. ));
  283. $targetPlanet += $targetDebris;
  284. }
  285. foreach($debrisResource as $elementID)
  286. {
  287. $debris[$elementID] = $combatResult['debris']['attacker'][$elementID] + $combatResult['debris']['defender'][$elementID];
  288. $planetDebris[$elementID] = $targetPlanet['der_'.$resource[$elementID]] + $debris[$elementID];
  289. }
  290. $reportInfo = array(
  291. 'thisFleet' => $this->_fleet,
  292. 'debris' => $debris,
  293. 'stealResource' => $stealResource,
  294. 'moonChance' => NULL,
  295. 'moonDestroy' => true,
  296. 'moonName' => NULL,
  297. 'moonDestroyChance' => NULL,
  298. 'moonDestroySuccess' => NULL,
  299. 'fleetDestroyChance' => NULL,
  300. 'fleetDestroySuccess' => false,
  301. );
  302. switch($combatResult['won'])
  303. {
  304. case "a":
  305. $moonDestroyChance = round((100 - sqrt($targetPlanet['diameter'])) * sqrt($fleetAttack[$this->_fleet['fleet_id']]['unit'][214]), 1);
  306. // Max 100% | Min 0%
  307. $moonDestroyChance = min($moonDestroyChance, 100);
  308. $moonDestroyChance = max($moonDestroyChance, 0);
  309. $randChance = mt_rand(1, 100);
  310. if ($randChance <= $moonDestroyChance)
  311. {
  312. $sql = 'SELECT id FROM %%PLANETS%% WHERE id_luna = :moonId;';
  313. $planetID = $db->selectSingle($sql, array(
  314. ':moonId' => $targetPlanet['id']
  315. ), 'id');
  316. $sql = 'UPDATE %%FLEETS%% SET
  317. fleet_start_type = 1,
  318. fleet_start_id = :PlanetId
  319. WHERE fleet_start_id = :moonId;';
  320. $db->update($sql, array(
  321. ':planetId' => $planetID,
  322. ':moonId' => $targetPlanet['id']
  323. ));
  324. $sql = 'UPDATE %%FLEETS%% SET
  325. fleet_end_type = 1,
  326. fleet_end_id = :moonId,
  327. fleet_mission = IF(fleet_mission = 9, 1, fleet_mission)
  328. WHERE fleet_end_id = :planetId
  329. AND fleet_id != :fleetId;';
  330. $db->update($sql, array(
  331. ':planetId' => $planetID,
  332. ':moonId' => $targetPlanet['id'],
  333. ':fleetId' => $this->_fleet['fleet_id']
  334. ));
  335. $sql = "UPDATE %%AKS%% SET target = :planetId WHERE target = :moonId;";
  336. $db->update($sql, array(
  337. ':planetId' => $planetID,
  338. ':moonId' => $targetPlanet['id']
  339. ));
  340. PlayerUtil::deletePlanet($targetPlanet['id']);
  341. $reportInfo['moonDestroySuccess'] = 1;
  342. } else {
  343. $reportInfo['moonDestroySuccess'] = 0;
  344. }
  345. $fleetDestroyChance = round(sqrt($targetPlanet['diameter']) / 2);
  346. $randChance = mt_rand(1, 100);
  347. if ($randChance <= $fleetDestroyChance)
  348. {
  349. $this->KillFleet();
  350. $reportInfo['fleetDestroySuccess'] = true;
  351. }
  352. else
  353. {
  354. $reportInfo['fleetDestroySuccess'] = false;
  355. }
  356. $reportInfo['moonDestroyChance'] = $moonDestroyChance;
  357. $reportInfo['fleetDestroyChance'] = $fleetDestroyChance;
  358. // Win
  359. $attackStatus = 'wons';
  360. $defendStatus = 'loos';
  361. $class = array('raportWin', 'raportLose');
  362. break;
  363. case "r":
  364. // Lose
  365. $attackStatus = 'loos';
  366. $defendStatus = 'wons';
  367. $class = array('raportLose', 'raportWin');
  368. $reportInfo['moonDestroySuccess'] = -1;
  369. break;
  370. default:
  371. // Draw
  372. $attackStatus = 'draws';
  373. $defendStatus = 'draws';
  374. $class = array('raportDraw', 'raportDraw');
  375. $reportInfo['moonDestroySuccess'] = -1;
  376. break;
  377. }
  378. require_once 'includes/classes/missions/functions/GenerateReport.php';
  379. $reportData = GenerateReport($combatResult, $reportInfo);
  380. $reportID = md5(uniqid('', true).TIMESTAMP);
  381. $sql = 'INSERT INTO %%RW%% SET
  382. rid = :reportId,
  383. raport = :reportData,
  384. time = :time,
  385. attacker = :attackers,
  386. defender = :defenders;';
  387. $db->insert($sql, array(
  388. ':reportId' => $reportID,
  389. ':reportData' => serialize($reportData),
  390. ':time' => $this->_fleet['fleet_start_time'],
  391. ':attackers' => implode(',', array_keys($userAttack)),
  392. ':defenders' => implode(',', array_keys($userDefend))
  393. ));
  394. $i = 0;
  395. foreach(array($userAttack, $userDefend) as $data)
  396. {
  397. $thisClass = $class[$i];
  398. foreach($data as $userID => $userName)
  399. {
  400. $LNG = $this->getLanguage(NULL, $userID);
  401. $message = sprintf($messageHTML,
  402. $reportID,
  403. $thisClass[$i],
  404. $LNG['sys_mess_attack_report'],
  405. sprintf(
  406. $LNG['sys_adress_planet'],
  407. $this->_fleet['fleet_end_galaxy'],
  408. $this->_fleet['fleet_end_system'],
  409. $this->_fleet['fleet_end_planet']
  410. ),
  411. $LNG['type_planet_short'][$this->_fleet['fleet_end_type']],
  412. $LNG['sys_lost'],
  413. $thisClass[0],
  414. $LNG['sys_attack_attacker_pos'],
  415. pretty_number($combatResult['unitLost']['attacker']),
  416. $thisClass[1],
  417. $LNG['sys_attack_defender_pos'],
  418. pretty_number($combatResult['unitLost']['defender']),
  419. $LNG['sys_gain'],
  420. $LNG['tech'][901],
  421. pretty_number($stealResource[901]),
  422. $LNG['tech'][902],
  423. pretty_number($stealResource[902]),
  424. $LNG['tech'][903],
  425. pretty_number($stealResource[903]),
  426. $LNG['sys_debris'],
  427. $LNG['tech'][901],
  428. pretty_number($debris[901]),
  429. $LNG['tech'][902],
  430. pretty_number($debris[902])
  431. );
  432. PlayerUtil::sendMessage($userID, 0, $LNG['sys_mess_tower'], 3, $LNG['sys_mess_attack_report'],
  433. $message, $this->_fleet['fleet_start_time'], NULL, 1, $this->_fleet['fleet_universe']);
  434. $sql = "INSERT INTO %%TOPKB_USERS%% SET
  435. rid = :reportId,
  436. role = :userRole,
  437. username = :username,
  438. uid = :userId;";
  439. $db->insert($sql, array(
  440. ':reportId' => $reportID,
  441. ':userRole' => 1,
  442. ':username' => $userName,
  443. ':userId' => $userID
  444. ));
  445. }
  446. $i++;
  447. }
  448. if($this->_fleet['fleet_end_type'] == 3)
  449. {
  450. $debrisType = 'id_luna';
  451. }
  452. else
  453. {
  454. $debrisType = 'id';
  455. }
  456. $sql = 'UPDATE %%PLANETS%% SET
  457. der_metal = :metal,
  458. der_crystal = :crystal
  459. WHERE '.$debrisType.' = :planetId;';
  460. $db->update($sql, array(
  461. ':metal' => $planetDebris[901],
  462. ':crystal' => $planetDebris[902],
  463. ':planetId' => $this->_fleet['fleet_end_id']
  464. ));
  465. $sql = 'UPDATE %%PLANETS%% SET
  466. metal = metal - :metal,
  467. crystal = crystal - :crystal,
  468. deuterium = deuterium - :deuterium
  469. WHERE id = :planetId;';
  470. $db->update($sql, array(
  471. ':metal' => $stealResource[901],
  472. ':crystal' => $stealResource[902],
  473. ':deuterium' => $stealResource[903],
  474. ':planetId' => $this->_fleet['fleet_end_id']
  475. ));
  476. $sql = 'INSERT INTO %%TOPKB%% SET
  477. units = :units,
  478. rid = :reportId,
  479. time = :time,
  480. universe = :universe,
  481. result = :result;';
  482. $db->insert($sql, array(
  483. ':units' => $combatResult['unitLost']['attacker'] + $combatResult['unitLost']['defender'],
  484. ':reportId' => $reportID,
  485. ':time' => $this->_fleet['fleet_start_time'],
  486. ':universe' => $this->_fleet['fleet_universe'],
  487. ':result' => $combatResult['won']
  488. ));
  489. $sql = 'UPDATE %%USERS%% SET
  490. `'.$attackStatus.'` = `'.$attackStatus.'` + 1,
  491. kbmetal = kbmetal + :debrisMetal,
  492. kbcrystal = kbcrystal + :debrisCrystal,
  493. lostunits = lostunits + :lostUnits,
  494. desunits = desunits + :destroyedUnits
  495. WHERE id IN ('.implode(',', array_keys($userAttack)).');';
  496. $db->update($sql, array(
  497. ':debrisMetal' => $debris[901],
  498. ':debrisCrystal' => $debris[902],
  499. ':lostUnits' => $combatResult['unitLost']['attacker'],
  500. ':destroyedUnits' => $combatResult['unitLost']['defender']
  501. ));
  502. $sql = 'UPDATE %%USERS%% SET
  503. `'.$defendStatus.'` = `'.$defendStatus.'` + 1,
  504. kbmetal = kbmetal + :debrisMetal,
  505. kbcrystal = kbcrystal + :debrisCrystal,
  506. lostunits = lostunits + :lostUnits,
  507. desunits = desunits + :destroyedUnits
  508. WHERE id IN ('.implode(',', array_keys($userDefend)).');';
  509. $db->update($sql, array(
  510. ':debrisMetal' => $debris[901],
  511. ':debrisCrystal' => $debris[902],
  512. ':lostUnits' => $combatResult['unitLost']['defender'],
  513. ':destroyedUnits' => $combatResult['unitLost']['attacker']
  514. ));
  515. $this->setState(FLEET_RETURN);
  516. $this->SaveFleet();
  517. }
  518. function EndStayEvent()
  519. {
  520. return;
  521. }
  522. function ReturnEvent()
  523. {
  524. $LNG = $this->getLanguage(NULL, $this->_fleet['fleet_owner']);
  525. $sql = 'SELECT name FROM %%PLANETS%% WHERE id = :planetId;';
  526. $planetName = Database::get()->selectSingle($sql, array(
  527. ':planetId' => $this->_fleet['fleet_start_id'],
  528. ), 'name');
  529. $Message = sprintf(
  530. $LNG['sys_fleet_won'],
  531. $planetName,
  532. GetTargetAdressLink($this->_fleet, ''),
  533. pretty_number($this->_fleet['fleet_resource_metal']), $LNG['tech'][901],
  534. pretty_number($this->_fleet['fleet_resource_crystal']), $LNG['tech'][902],
  535. pretty_number($this->_fleet['fleet_resource_deuterium']), $LNG['tech'][903]
  536. );
  537. PlayerUtil::sendMessage($this->_fleet['fleet_owner'], 0, $LNG['sys_mess_tower'], 4, $LNG['sys_mess_fleetback'],
  538. $Message, $this->_fleet['fleet_end_time'], NULL, 1, $this->_fleet['fleet_universe']);
  539. $this->RestoreFleet();
  540. }
  541. }