PageRenderTime 56ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/includes/classes/missions/MissionCaseSpy.php

https://bitbucket.org/VolCh/2moons
PHP | 197 lines | 134 code | 37 blank | 26 comment | 16 complexity | 19c8bbd834a609eee16a651e051ece59 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.1 (2013-01-18)
  24. * @info $Id$
  25. * @link http://2moons.cc/
  26. */
  27. class MissionCaseSpy extends MissionFunctions
  28. {
  29. function __construct($Fleet)
  30. {
  31. $this->_fleet = $Fleet;
  32. }
  33. function TargetEvent()
  34. {
  35. global $pricelist, $reslist, $resource;
  36. $senderUser = $GLOBALS['DATABASE']->getFirstRow("SELECT * FROM ".USERS." WHERE id = ".$this->_fleet['fleet_owner'].";");
  37. $senderPlanet = $GLOBALS['DATABASE']->getFirstRow("SELECT galaxy, system, planet, name FROM ".PLANETS." WHERE id = ".$this->_fleet['fleet_start_id'].";");
  38. $senderUser['factor'] = getFactors($senderUser, 'basic', $this->_fleet['fleet_start_time']);
  39. $ownSpyLvl = max($senderUser['spy_tech'], 1);
  40. $LNG = $this->getLanguage($senderUser['lang']);
  41. $targetUser = $GLOBALS['DATABASE']->getFirstRow("SELECT * FROM ".USERS." WHERE id = ".$this->_fleet['fleet_target_owner'].";");
  42. $targetPlanet = $GLOBALS['DATABASE']->getFirstRow("SELECT * FROM ".PLANETS." WHERE id = ".$this->_fleet['fleet_end_id'].";");
  43. $targetSpyLvl = max($targetUser['spy_tech'], 1);
  44. $targetUser['factor'] = getFactors($targetUser, 'basic', $this->_fleet['fleet_start_time']);
  45. $PlanetRess = new ResourceUpdate();
  46. list($targetUser, $targetPlanet) = $PlanetRess->CalcResource($targetUser, $targetPlanet, true, $this->_fleet['fleet_start_time']);
  47. $targetStayFleets = $GLOBALS['DATABASE']->query("SELECT * FROM ".FLEETS." WHERE fleet_end_id = ".$this->_fleet['fleet_end_id']." AND fleet_mission = 5 AND fleet_end_stay > ".$this->_fleet['fleet_start_time'].";");
  48. while($fleetRow = $GLOBALS['DATABASE']->fetch_array($targetStayFleets))
  49. {
  50. $temp = explode(';', $fleetRow['fleet_array']);
  51. foreach ($temp as $temp2)
  52. {
  53. $temp2 = explode(',', $temp2);
  54. if (!isset($targetPlanet[$resource[$temp2[0]]]))
  55. {
  56. $targetPlanet[$resource[$temp2[0]]] = 0;
  57. }
  58. $targetPlanet[$resource[$temp2[0]]] += $temp2[1];
  59. }
  60. }
  61. $GLOBALS['DATABASE']->free_result($targetStayFleets);
  62. $fleetAmount = $this->_fleet['fleet_amount'] * (1 + $senderUser['factor']['SpyPower']);
  63. $Diffence = abs($ownSpyLvl - $targetSpyLvl);
  64. $MinAmount = ($ownSpyLvl > $targetSpyLvl ? -1 : 1) * pow($Diffence * SPY_DIFFENCE_FACTOR, 2);
  65. $SpyFleet = $fleetAmount >= $MinAmount;
  66. $SpyDef = $fleetAmount >= $MinAmount + 1 * SPY_VIEW_FACTOR;
  67. $SpyBuild = $fleetAmount >= $MinAmount + 3 * SPY_VIEW_FACTOR;
  68. $SpyTechno = $fleetAmount >= $MinAmount + 5 * SPY_VIEW_FACTOR;
  69. $classIDs[900] = array_merge($reslist['resstype'][1], $reslist['resstype'][2]);
  70. if($SpyFleet)
  71. {
  72. $classIDs[200] = $reslist['fleet'];
  73. }
  74. if($SpyDef)
  75. {
  76. $classIDs[400] = $reslist['defense'];
  77. }
  78. if($SpyBuild)
  79. {
  80. $classIDs[0] = $reslist['build'];
  81. }
  82. if($SpyTechno)
  83. {
  84. $classIDs[100] = $reslist['tech'];
  85. }
  86. $targetChance = mt_rand(0, min(($fleetAmount/4) * ($targetSpyLvl / $ownSpyLvl), 100));
  87. $spyChance = mt_rand(0, 100);
  88. foreach($classIDs as $classID => $elementIDs)
  89. {
  90. foreach($elementIDs as $elementID)
  91. {
  92. if($classID == 100)
  93. {
  94. $spyData[$classID][$elementID] = $targetUser[$resource[$elementID]];
  95. }
  96. else
  97. {
  98. $spyData[$classID][$elementID] = $targetPlanet[$resource[$elementID]];
  99. }
  100. }
  101. if($senderUser['spyMessagesMode'] == 1)
  102. {
  103. $spyData[$classID] = array_filter($spyData[$classID]);
  104. }
  105. }
  106. // I'm use template class here, because i want to exclude HTML in PHP.
  107. require_once(ROOT_PATH.'includes/classes/class.template.php');
  108. $template = new template;
  109. $template->caching = true;
  110. $template->compile_id = $senderUser['lang'];
  111. $template->loadFilter('output', 'trimwhitespace');
  112. list($tplDir) = $template->getTemplateDir();
  113. $template->setTemplateDir($tplDir.'game/');
  114. $template->assign_vars(array(
  115. 'spyData' => $spyData,
  116. 'targetPlanet' => $targetPlanet,
  117. 'targetChance' => $targetChance,
  118. 'spyChance' => $spyChance,
  119. 'isBattleSim' => ENABLE_SIMULATOR_LINK == true && isModulAvalible(MODULE_SIMULATOR),
  120. 'title' => sprintf($LNG['sys_mess_head'], $targetPlanet['name'], $targetPlanet['galaxy'], $targetPlanet['system'], $targetPlanet['planet'], _date($LNG['php_tdformat'], $this->_fleet['fleet_end_time'], $targetUser['timezone'], $LNG)),
  121. ));
  122. $template->assign_vars(array(
  123. 'LNG' => $LNG
  124. ), false);
  125. $spyRaport = $template->fetch('shared.mission.spyraport.tpl');
  126. SendSimpleMessage($this->_fleet['fleet_owner'], 0, $this->_fleet['fleet_start_time'], 0, $LNG['sys_mess_qg'], $LNG['sys_mess_spy_report'], $spyRaport);
  127. $LNG = $this->getLanguage($targetUser['lang']);
  128. $targetMessage = $LNG['sys_mess_spy_ennemyfleet'] ." ". $senderPlanet['name'];
  129. if($this->_fleet['fleet_start_type'] == 3)
  130. $targetMessage .= $LNG['sys_mess_spy_report_moon'].' ';
  131. $targetMessage .= '<a href="game.php?page=galaxy&amp;galaxy='.$senderPlanet["galaxy"].'&amp;system='.$senderPlanet["system"].'">'.
  132. '['.$senderPlanet['galaxy'].':'.$senderPlanet['system'].':'.$senderPlanet['planet'].']</a> '.
  133. $LNG['sys_mess_spy_seen_at'].' '.$targetPlanet['name'].
  134. ' ['. $targetPlanet['galaxy'].':'.$targetPlanet['system'].':'.$targetPlanet['planet'].'] '.$LNG['sys_mess_spy_seen_at2'].'.';
  135. SendSimpleMessage($this->_fleet['fleet_target_owner'], 0, $this->_fleet['fleet_start_time'], 0, $LNG['sys_mess_spy_control'], $LNG['sys_mess_spy_activity'], $targetMessage);
  136. if ($targetChance >= $spyChance)
  137. {
  138. $CONF = Config::getAll(NULL, $this->_fleet['fleet_universe']);
  139. $WhereCol = $this->_fleet['fleet_end_type'] == 3 ? "id_luna" : "id";
  140. $GLOBALS['DATABASE']->query("UPDATE ".PLANETS." SET
  141. der_metal = der_metal + ".($fleetAmount * $pricelist[210]['cost'][901] * (Config::get('Fleet_Cdr') / 100)).",
  142. der_crystal = der_crystal + ".($fleetAmount * $pricelist[210]['cost'][902] * (Config::get('Fleet_Cdr') / 100))."
  143. WHERE ".$WhereCol." = ".$this->_fleet['fleet_end_id'].";");
  144. $this->KillFleet();
  145. }
  146. else
  147. {
  148. $this->setState(FLEET_RETURN);
  149. $this->SaveFleet();
  150. }
  151. }
  152. function EndStayEvent()
  153. {
  154. return;
  155. }
  156. function ReturnEvent()
  157. {
  158. $this->RestoreFleet();
  159. }
  160. }