PageRenderTime 59ms CodeModel.GetById 15ms RepoModel.GetById 1ms app.codeStats 2ms

/init.php

https://github.com/Kayomani/ship_display_tool
PHP | 6755 lines | 5190 code | 1119 blank | 446 comment | 2156 complexity | 9a81bb5a2505eb09d5c556de88456ad4 MD5 | raw file

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

  1. <?php
  2. $modInfo['ship_tool_kb']['name'] = "Ship Display Tool";
  3. $modInfo['ship_tool_kb']['abstract'] = "Displays Ship stats on the kill detials page";
  4. $modInfo['ship_tool_kb']['about'] = "by Spark's";
  5. //require_once('common/includes/class.kill.php');
  6. //require_once('common/includes/class.killsummarytable.php');
  7. //require_once('common/includes/class.pilot.php');
  8. //require_once('common/includes/class.corp.php');
  9. //require_once('common/includes/class.alliance.php');
  10. //$kll_id = intval($_GET['kll_id']);
  11. $operation = true;
  12. include("fitting.class.php");
  13. include('class.shipstats.php');
  14. include('class.shipEffects.php');
  15. event::register("killDetail_assembling", "fittingTools::addFitting");
  16. event::register("killDetail_context_assembling", "fittingTools::RemoveContextFinalBlowTopDamage");
  17. class fittingTools
  18. {
  19. public static $shipStats;
  20. public static $speedV = 1;
  21. public static $speedB = 1;
  22. public static $sigRadius = 1;
  23. public static $shieldHpRed = 1;
  24. public static $structure = 1;
  25. public static $emArmor = 1;
  26. public static $thArmor = 1;
  27. public static $kiArmor = 1;
  28. public static $exArmor = 1;
  29. public static $emShield = 1;
  30. public static $thShield = 1;
  31. public static $kiShield = 1;
  32. public static $exShield = 1;
  33. public static $emHull = 1;
  34. public static $thHull = 1;
  35. public static $kiHull = 1;
  36. public static $exHull = 1;
  37. public static $scanStrength = 1;
  38. public static $missileDam = 1;
  39. public static $hybridDam = 1;
  40. public static $projectileDam = 1;
  41. public static $lazerDam = 1;
  42. public static $missileRof = 1;
  43. public static $hybridRof = 1;
  44. public static $projectileRof = 1;
  45. public static $lazerRof = 1;
  46. public static $mwdSigature = "No MWD";
  47. public static $mwdActive = "No MWD";
  48. public static $abActive = "No AB";
  49. public static $moduleCount = 0;
  50. public static $boosterPos;
  51. public static $gunPos;
  52. public static $gunPosCap;
  53. public static $gunDamageCounter = 0;
  54. public static $sensorbooster;
  55. public static $scan = 1;
  56. public static $range = 1;
  57. public static $warpStab = 1;
  58. public static $warpStabScan = 1;
  59. public static $interstab = 1;
  60. public static $sheildHPPD = 1;
  61. public static $srBooster = Array();
  62. public static $armorKiArr;
  63. public static $shieldAmp = 1;
  64. public static $armorDur = Array();
  65. public static $shieldDur = Array();
  66. public static $armorAmp = 1;
  67. public static $shieldAmpCap = 1;
  68. public static $shieldResistPos = 0;
  69. public static $droneDam = 1;
  70. public static $droneMax = 5;
  71. public static $droneAdd = 0;
  72. public static $droneArr = Array();
  73. public static $armorRR = 1;
  74. public static $capMultiEff = 1;
  75. public static $simpleurl;
  76. public static $extid;
  77. public static $loadCPU = 0;
  78. public static $loadPower = 0;
  79. public static $loadCPUAdd = Array();
  80. public static $loadPowerAdd = Array();
  81. function addFitting($home)
  82. {
  83. $home->delete("fitting");
  84. $home->delete("victim");
  85. $home->delete("victimShip");
  86. $home->addBehind("start", "fittingTools::displayFitting");
  87. //$home->replace("top", "fittingTools::displayFitting");
  88. }
  89. function RemoveContextFinalBlowTopDamage($home)
  90. {
  91. $home->delete("damageBox");
  92. }
  93. function displayFitting($home)
  94. {
  95. global $smarty;
  96. //require_once("common/includes/class.dogma.php");
  97. $kll_id = $home->kll_id;
  98. //echo "here";
  99. //echo self::$oper;
  100. self::$shipStats = new shipstats();
  101. $urlsettings = edkURI::parseURI();
  102. self::$simpleurl = $urlsettings[0][2];
  103. //echo "-> ".self::$simpleurl;
  104. $fitter = new fitting($kll_id);
  105. $theFit = $fitter->displayFitting();
  106. if ($home->kll_id) {
  107. $km = Cacheable::factory('Kill', $home->kll_id);
  108. } else {
  109. $km = new Kill($home->kll_external_id, true);
  110. $km = $home->kill->getID();
  111. }
  112. if (!$km->exists()) {
  113. $html = "That kill doesn't exist.";
  114. $home->page->setContent($html);
  115. $home->page->generate($html);
  116. exit;
  117. }
  118. //echo "-->".$km->getExternalID()."<br />";
  119. if($km->getExternalID() != 0) {
  120. //echo "Yes<br />";
  121. self::$extid = $km->getExternalID();
  122. } else {
  123. //echo "No<br />";
  124. $qry = new DBQuery();
  125. $qry->execute("SELECT kll_external_id FROM kb3_kills WHERE kll_id = '".$home->kll_id."';");
  126. $row = $qry->getRow();
  127. if($row['kll_external_id'] != 0) {
  128. //echo "Yes ".$row['kll_external_id']."br />";
  129. self::$extid = $row['kll_external_id'];
  130. } else {
  131. //echo "No<br />";
  132. self::$extid = 0;
  133. }
  134. }
  135. fittingTools::source($kll_id,$km->getExternalID());
  136. $corp = "";
  137. $alli = "";
  138. $char = "";
  139. $ship = "";
  140. $weap = "";
  141. $topdamage = 0;
  142. $maxdamage = -1;
  143. foreach($km->getInvolved() as $inv) {
  144. /*echo "<pre>";
  145. print_r($inv);
  146. echo "</pre>";*/
  147. if($inv->getDamageDone() > $maxdamage) {
  148. if($km->getFBPilotID() == $inv->getPilotID()) {
  149. $maxdamage = $inv->getDamageDone();
  150. //$topdamage = $inv;
  151. $corp = $inv->getCorpID();
  152. $alli = $inv->getAllianceID();
  153. $char = $inv->getPilotID();
  154. $ship = $inv->getShipID();
  155. $weap = $inv->getWeaponID();
  156. $fcorp = $inv->getCorpID();
  157. $falli = $inv->getAllianceID();
  158. $fchar = $inv->getPilotID();
  159. $fship = $inv->getShipID();
  160. $fweap = $inv->getWeaponID();
  161. } else {
  162. $maxdamage = $inv->getDamageDone();
  163. //$topdamage = $inv;
  164. $corp = $inv->getCorpID();
  165. $alli = $inv->getAllianceID();
  166. $char = $inv->getPilotID();
  167. $ship = $inv->getShipID();
  168. $weap = $inv->getWeaponID();
  169. }
  170. } else {
  171. if($km->getFBPilotID() == $inv->getPilotID()) {
  172. $fcorp = $inv->getCorpID();
  173. $falli = $inv->getAllianceID();
  174. $fchar = $inv->getPilotID();
  175. $fship = $inv->getShipID();
  176. $fweap = $inv->getWeaponID();
  177. }
  178. }
  179. }
  180. $plt = new Pilot($char);
  181. $charIcon = $plt->getPortraitURL(64);
  182. $charName = $plt->getName();
  183. $charURL = edkURI::page('pilot_detail', $char, 'plt_id');
  184. $clt = new Corporation($corp, false);
  185. $corpIcon = $clt->getPortraitURL(32);
  186. $corpName = $clt->getName();
  187. $corpURL = edkURI::page('corp_detail', $corp, 'crp_id');
  188. $alt = new Alliance($alli, false);
  189. $alliIcon = $alt->getPortraitURL(32);
  190. $alliName = $alt->getName();
  191. $alliURL = edkURI::page('alliance_detail', $corp, 'all_id');
  192. $slt = new Ship($ship);
  193. $shipIcon = $slt->getImage(32);
  194. $shipName = $slt->getName();
  195. $shipURL = edkURI::page('invtype', $ship, 'id');
  196. $ilt = new Item($weap);
  197. $weapIcon = $ilt->getIcon(32);
  198. $weapURL = edkURI::page('invtype', $weap, 'id');
  199. $smarty->assign('topgetCorpID', $corp);
  200. $smarty->assign('topgetAllianceID', $alli);
  201. $smarty->assign('topgetPilotID', $char);
  202. $smarty->assign('topgetShipID', $ship);
  203. $smarty->assign('topgetWeaponID', $weap);
  204. $smarty->assign('topgetCorpIcon', $corpIcon);
  205. $smarty->assign('topgetAllianceIcon', $alliIcon);
  206. $smarty->assign('topgetPilotIcon', $charIcon);
  207. $smarty->assign('topgetShipIcon', $shipIcon);
  208. $smarty->assign('topgetWeaponIcon', $weapIcon);
  209. $smarty->assign('topgetCorpName', $corpName);
  210. $smarty->assign('topgetAllianceName', $alliName);
  211. $smarty->assign('topgetPilotName', $charName);
  212. $smarty->assign('topgetShipName', $shipName);
  213. $smarty->assign('topgetCorpURL', $corpURL);
  214. $smarty->assign('topgetAllianceURL', $alliURL);
  215. $smarty->assign('topgetPilotURL', $charURL);
  216. $smarty->assign('topgetShipURL', $shipURL);
  217. $smarty->assign('topgetWeaponURL', $weapURL);
  218. $fplt = new Pilot($fchar);
  219. $fcharIcon = $fplt->getPortraitURL(64);
  220. $fcharName = $fplt->getName();
  221. $fcharURL = edkURI::page('pilot_detail', $fchar, 'plt_id');
  222. $fclt = new Corporation($fcorp, false);
  223. $fcorpIcon = $fclt->getPortraitURL(32);
  224. $fcorpName = $fclt->getName();
  225. $fcorpURL = edkURI::page('corp_detail', $fcorp, 'crp_id');
  226. $falt = new Alliance($falli, false);
  227. $falliIcon = $falt->getPortraitURL(32);
  228. $falliName = $falt->getName();
  229. $falliURL = edkURI::page('alliance_detail', $fcorp, 'all_id');
  230. $fslt = new Ship($fship);
  231. $fshipIcon = $fslt->getImage(32);
  232. $fshipName = $fslt->getName();
  233. $fshipURL = edkURI::page('invtype', $fship, 'id');
  234. $filt = new Item($fweap);
  235. $fweapIcon = $filt->getIcon(32);
  236. $fweapURL = edkURI::page('invtype', $fweap, 'id');
  237. $smarty->assign('fingetCorpID', $fcorp);
  238. $smarty->assign('fingetAllianceID', $falli);
  239. $smarty->assign('fingetPilotID', $fchar);
  240. $smarty->assign('fingetShipID', $fship);
  241. $smarty->assign('fingetWeaponID', $fweap);
  242. $smarty->assign('fingetCorpIcon', $fcorpIcon);
  243. $smarty->assign('fingetAllianceIcon', $falliIcon);
  244. $smarty->assign('fingetPilotIcon', $fcharIcon);
  245. $smarty->assign('fingetShipIcon', $fshipIcon);
  246. $smarty->assign('fingetWeaponIcon', $fweapIcon);
  247. $smarty->assign('fingetCorpName', $fcorpName);
  248. $smarty->assign('fingetAllianceName', $falliName);
  249. $smarty->assign('fingetPilotName', $fcharName);
  250. $smarty->assign('fingetShipName', $fshipName);
  251. $smarty->assign('fingetCorpURL', $fcorpURL);
  252. $smarty->assign('fingetAllianceURL', $falliURL);
  253. $smarty->assign('fingetPilotURL', $fcharURL);
  254. $smarty->assign('fingetShipURL', $fshipURL);
  255. $smarty->assign('fingetWeaponURL', $fweapURL);
  256. //echo self::$extid."<br />";
  257. //echo "-> ".edkURI::page('pilot_detail', $km->getVictimID(), 'plt_id');
  258. $plt = new Pilot($km->getVictimID());
  259. $victimPortrait = $plt->getPortraitURL(64);
  260. $victimURL = edkURI::page('pilot_detail', $km->getVictimID(), 'plt_id');
  261. $victimExtID = $plt->getExternalID();
  262. $victimCorpURL = edkURI::page('corp_detail', $km->getVictimCorpID(), 'crp_id');
  263. $victimCorpName = $km->getVictimCorpName();
  264. $victimAllianceURL = edkURI::page('alliance_detail', $km->getVictimAllianceID(), 'all_id');
  265. $victimAllianceName = $km->getVictimAllianceName();
  266. $victimDamageTaken = $km->getDamageTaken();
  267. $getISKLoss = number_format($km->getISKLoss());
  268. $smarty->assign('victimDamageTaken', $victimDamageTaken);
  269. $corp = new Corporation($km->getVictimCorpID(), false);
  270. //echo $corp->getPortraitURL(32);
  271. $alliance = new Alliance($km->getVictimAllianceID(), false);
  272. //echo $alliance->getPortraitURL(32);
  273. if ($km->isClassified())
  274. {
  275. //Admin is able to see classified Systems
  276. if ($home->page->isAdmin())
  277. {
  278. $system = $km->getSystem()->getName() . ' (Classified)';
  279. $region = $km->getSystem()->getRegionName();
  280. $systemURL = edkURI::page('system_detail', $km->getSystem()->getID(), 'sys_id');
  281. $systemSecurity = $km->getSystem()->getSecurity(true);
  282. }
  283. else
  284. {
  285. $system = 'Classified';
  286. $region = $km->getSystem()->getRegionName();
  287. $systemURL = "";
  288. $systemSecurity = '0.0';
  289. }
  290. }
  291. else
  292. {
  293. $system = $km->getSystem()->getName();
  294. $region = $km->getSystem()->getRegionName();
  295. $systemURL = edkURI::page('system_detail', $km->getSystem()->getID(), 'sys_id');
  296. $systemSecurity = $km->getSystem()->getSecurity(true);
  297. }
  298. // Ship detail
  299. $ship=$km->getVictimShip();
  300. $shipclass=$ship->getClass();
  301. $shipname = $ship->getName();
  302. $victimShipClassName = $shipclass->getName();
  303. $timeStamp = $km->getTimeStamp();
  304. $victimShipID = edkURI::page('invtype', $ship->getExternalID(), 'id');
  305. if($home->page->isAdmin()) $smarty->assign('ship', $ship);
  306. self::$shipStats->setPilotName($km->getVictimName());
  307. self::$shipStats->setPilotCorp($victimCorpName);
  308. self::$shipStats->setPilotAlliance($victimAllianceName);
  309. self::$shipStats->setPilotShip($shipname);
  310. self::$shipStats->setPilotLoc($system);
  311. self::$shipStats->setPilotLocReg($region);
  312. self::$shipStats->setPilotLocSec($systemSecurity);
  313. self::$shipStats->setPilotDate($timeStamp);
  314. self::$shipStats->setPilotDam($victimDamageTaken);
  315. self::$shipStats->setPilotCos($getISKLoss);
  316. self::$shipStats->setPilotShipClass($victimShipClassName);
  317. self::$shipStats->setCorpPort($corp->getPortraitURL(32));
  318. self::$shipStats->setAlliPort($alliance->getPortraitURL(32));
  319. self::$shipStats->setPilotPort($victimPortrait);
  320. self::$shipStats->setPilotNameURL($victimURL);
  321. self::$shipStats->setPilotCorpURL($victimCorpURL);
  322. self::$shipStats->setPilotAllianceURL($victimAllianceURL);
  323. self::$shipStats->setPilotShipURL($victimShipID);
  324. self::$shipStats->setPilotLocURL($systemURL);
  325. fittingTools::getShipStats($shipname);
  326. fittingTools::moduleInfo($theFit);
  327. /*fittingTools::getModuleStats();*/
  328. fittingTools::returnShipSkills();
  329. fittingTools::shipEffects();
  330. fittingTools::setlevel5Skills();
  331. fittingTools::getExtraStats();
  332. fittingTools::getCPUandPowerValues();
  333. $html = fittingTools::displayShipStats($shipname, 100, 100);
  334. return $html;
  335. }
  336. public function source($p_kll_id, $p_ex_id) {
  337. global $smarty;
  338. if($p_ex_id != 0) {
  339. //echo "Yes<br />";
  340. self::$extid = $p_ex_id;
  341. } else {
  342. //echo "No<br />";
  343. $qry = new DBQuery();
  344. $qry->execute("SELECT kll_external_id FROM kb3_kills WHERE kll_id = '".$p_kll_id."';");
  345. $row = $qry->getRow();
  346. if($row['kll_external_id'] != 0) {
  347. //echo "Yes ".$row['kll_external_id']."br />";
  348. self::$extid = $row['kll_external_id'];
  349. } else {
  350. //echo "No<br />";
  351. self::$extid = 0;
  352. }
  353. }
  354. $qry = DBFactory::getDBQuery();
  355. $sql = "SELECT log_ip_address, log_timestamp FROM kb3_log WHERE"
  356. ." log_kll_id = ".$p_kll_id;
  357. $qry->execute($sql);
  358. if (!$row = $qry->getRow()) {
  359. return "";
  360. }
  361. $source = $row['log_ip_address'];
  362. $posteddate = $row['log_timestamp'];
  363. if (preg_match("/^\d+/", $source)
  364. || preg_match("/^IP/", $source)) {
  365. $type = "IP";
  366. $source = substr($source, 3);
  367. } else if (preg_match("/^API/", $source)) {
  368. $type = "API";
  369. $source = $p_ex_id;
  370. } else if (preg_match("/^http/", $source)) {
  371. $type = "URL";
  372. } else if (preg_match("/^ID:http/", $source)) {
  373. $type = "URL";
  374. $source = substr($source, 3);
  375. } else {
  376. $type = "unknown";
  377. }
  378. $smarty->assign("source", htmlentities($source));
  379. $smarty->assign("type", $type);
  380. $smarty->assign("postedDate", $posteddate);
  381. $smarty->assign('extid', self::$extid);
  382. }
  383. function getCPUandPowerValues() {
  384. $stack = 1;
  385. foreach(self::$loadPowerAdd as $value) {
  386. self::$shipStats->setPrgAmount(fittingTools::statOntoShip(self::$shipStats->getPrgAmount(), $value["power"], $value["type"], $value["mode"], 1));
  387. $stack++;
  388. }
  389. $stack = 1;
  390. foreach(self::$loadCPUAdd as $value) {
  391. //echo $value["cpu"]." here";
  392. /*if($value["stack"] == 1) {
  393. self::$shipStats->setCpuAmount(fittingTools::statOntoShip(self::$shipStats->getCpuAmount(), $value["cpu"], $value["type"], $value["mode"], $stack));
  394. $stack++;
  395. } else {*/
  396. self::$shipStats->setCpuAmount(fittingTools::statOntoShip(self::$shipStats->getCpuAmount(), $value["cpu"], $value["type"], $value["mode"], 1));
  397. //}
  398. }
  399. self::$shipStats->setCpuAmount(fittingTools::statOntoShip(self::$shipStats->getCpuAmount(), 25, "+", "%", 1));
  400. self::$shipStats->setPrgAmount(fittingTools::statOntoShip(self::$shipStats->getPrgAmount(), 25, "+", "%", 1));
  401. $arr_cpu = array_values(self::$shipStats->getCpuUsed());
  402. $arr_prg = array_values(self::$shipStats->getPrgUsed());
  403. for($i = 0; $i < count($arr_cpu); $i++) {
  404. //foreach($arr_cpu as $value) {
  405. foreach(self::$shipStats->getShipEffects() as $value2) {
  406. if($arr_cpu[$i]['effect'] == $value2["effect"]) {
  407. if($arr_cpu[$i]['effect'] == "covert_cloak") {
  408. $arr_cpu[$i]['cpu'] = fittingTools::statOntoShip($arr_cpu[$i]['cpu'], $value2["bonus"], $value2["type"], "%", 1);
  409. //self::$loadCPU += $arr_cpu[$i]['cpu'];
  410. } else if($arr_cpu[$i]['effect'] == "heavy_cpu") {
  411. $arr_cpu[$i]['cpu'] = fittingTools::statOntoShip($arr_cpu[$i]['cpu'], $value2["bonus"], $value2["type"], "%", 1);
  412. //self::$loadCPU += $arr_cpu[$i]['cpu'];
  413. } else if($arr_cpu[$i]['effect'] == "war_bonus") {
  414. $arr_cpu[$i]['cpu'] = fittingTools::statOntoShip($arr_cpu[$i]['cpu'], $value2["bonus"], $value2["type"], "%", 1);
  415. //self::$loadCPU += $arr_cpu[$i]['cpu'];
  416. } else if($arr_cpu[$i]['effect'] == "shield_transCPU") {
  417. $arr_cpu[$i]['cpu'] = fittingTools::statOntoShip($arr_cpu[$i]['cpu'], $value2["bonus"], $value2["type"], "%", 1);
  418. //self::$loadCPU += $arr_cpu[$i]['cpu'];
  419. } else if($arr_cpu[$i]['effect'] == "capital_cpu") {
  420. $arr_cpu[$i]['cpu'] = fittingTools::statOntoShip($arr_cpu[$i]['cpu'], $value2["bonus"], $value2["type"], "%", 1);
  421. }
  422. }
  423. }
  424. }
  425. for($i = 0; $i < count($arr_prg); $i++) {
  426. //foreach($arr_prg as $value) {
  427. foreach(self::$shipStats->getShipEffects() as $value2) {
  428. if($arr_prg[$i]['effect'] == $value2["effect"]) {
  429. if($arr_prg[$i]['effect'] == "seige_power") {
  430. $arr_prg[$i]['power'] = fittingTools::statOntoShip($arr_prg[$i]['power'], $value2["bonus"], $value2["type"], "%", 1);
  431. //self::$loadPower += $arr_prg[$i]['power'];
  432. } else if($arr_prg[$i]['effect'] == "heavy_power") {
  433. $arr_prg[$i]['power'] = fittingTools::statOntoShip($arr_prg[$i]['power'], $value2["bonus"], $value2["type"], "%", 1);
  434. //self::$loadPower += $arr_prg[$i]['power'];
  435. } else if($arr_prg[$i]['effect'] == "cap_transPower") {
  436. $arr_prg[$i]['power'] = fittingTools::statOntoShip($arr_prg[$i]['power'], $value2["bonus"], $value2["type"], "%", 1);
  437. //self::$loadPower += $arr_prg[$i]['power'];
  438. }
  439. }
  440. }
  441. }
  442. for($i = 0; $i < count($arr_cpu); $i++) {
  443. //foreach($arr_cpu as $value) {
  444. if($arr_cpu[$i]['effect'] == "weapon") {
  445. $arr_cpu[$i]['cpu'] = fittingTools::statOntoShip($arr_cpu[$i]['cpu'], 25, "-", "%", 1);
  446. self::$loadCPU += $arr_cpu[$i]['cpu'];
  447. } else if($arr_cpu[$i]['effect'] == "covert_cloak") {
  448. self::$loadCPU += $arr_cpu[$i]['cpu'];
  449. } else if($arr_cpu[$i]['effect'] == "heavy_cpu") {
  450. $arr_cpu[$i]['cpu'] = fittingTools::statOntoShip($arr_cpu[$i]['cpu'], 25, "-", "%", 1);
  451. self::$loadCPU += $arr_cpu[$i]['cpu'];
  452. } else if($arr_cpu[$i]['effect'] == "cpu_use") {
  453. $arr_cpu[$i]['cpu'] = fittingTools::statOntoShip($arr_cpu[$i]['cpu'], 25, "-", "%", 1);
  454. self::$loadCPU += $arr_cpu[$i]['cpu'];
  455. } else if($arr_cpu[$i]['effect'] == "war_bonus") {
  456. self::$loadCPU += $arr_cpu[$i]['cpu'];
  457. } else {
  458. self::$loadCPU += $arr_cpu[$i]['cpu'];
  459. }
  460. }
  461. for($i = 0; $i < count($arr_prg); $i++) {
  462. //foreach($arr_prg as $value) {
  463. if($arr_prg[$i]['effect'] == "weapon") {
  464. $arr_prg[$i]['power'] = fittingTools::statOntoShip($arr_prg[$i]['power'], 10, "-", "%", 1);
  465. self::$loadPower += $arr_prg[$i]['power'];
  466. } else if($arr_prg[$i]['effect'] == "shield") {
  467. $arr_prg[$i]['power'] = fittingTools::statOntoShip($arr_prg[$i]['power'], 25, "-", "%", 1);
  468. self::$loadPower += $arr_prg[$i]['power'];
  469. } else if($arr_prg[$i]['effect'] == "seige_power") {
  470. $arr_prg[$i]['power'] = fittingTools::statOntoShip($arr_prg[$i]['power'], 10, "-", "%", 1);
  471. self::$loadPower += $arr_prg[$i]['power'];
  472. } else if($arr_prg[$i]['effect'] == "heavy_power") {
  473. $arr_prg[$i]['power'] = fittingTools::statOntoShip($arr_prg[$i]['power'], 10, "-", "%", 1);
  474. self::$loadPower += $arr_prg[$i]['power'];
  475. } else if($arr_prg[$i]['effect'] == "power_use") {
  476. $arr_prg[$i]['power'] = fittingTools::statOntoShip($arr_prg[$i]['power'], 25, "-", "%", 1);
  477. self::$loadPower += $arr_prg[$i]['power'];
  478. } else {
  479. self::$loadPower += $arr_prg[$i]['power'];
  480. }
  481. }
  482. /*echo "<pre>";
  483. print_r($arr_prg);
  484. echo "</pre>";*/
  485. /*echo "<pre>";
  486. print_r($arr_cpu);
  487. echo "</pre>";*/
  488. /*echo "<pre>";
  489. print_r(self::$shipStats->getCpuUsed());
  490. echo "</pre>";*/
  491. /*echo "<pre>";
  492. print_r(self::$shipStats->getPrgUsed());
  493. echo "</pre>";*/
  494. /*echo "<pre>";
  495. print_r(self::$shipStats->getShipEffects());
  496. echo "</pre>";*/
  497. /*echo "<pre>";
  498. print_r(self::$loadPowerAdd);
  499. echo "</pre>";*/
  500. /*echo "<pre>";
  501. print_r(self::$loadCPUAdd);
  502. echo "</pre>";*/
  503. }
  504. function getShipStats($param_ship) {
  505. //global $shipStats;
  506. $qry = new DBQuery();
  507. $qry->execute("select kb3_invtypes.typeID, kb3_invtypes.description from kb3_invtypes WHERE kb3_invtypes.typeName = '".$qry->escape($param_ship)."'");
  508. $typeID = $qry->getRow();
  509. self::$shipStats->setShipIcon($typeID['typeID']);
  510. self::$shipStats->setShipDesc($typeID['description']);
  511. //$itemquery = mysql_query("select kb3_invtypes.typeID from kb3_invtypes WHERE kb3_invtypes.typeName = '".$param_ship."'") or die(mysql_error());
  512. //$typeID = mysql_fetch_array($itemquery);
  513. $qry2 = new DBQuery();
  514. $qry2->execute("select kb3_dgmtypeattributes.value, kb3_dgmattributetypes.attributeName, kb3_dgmattributetypes.displayName, kb3_dgmattributetypes.stackable, kb3_eveunits.displayName as unit
  515. from kb3_dgmtypeattributes
  516. inner join kb3_dgmattributetypes on kb3_dgmtypeattributes.attributeID = kb3_dgmattributetypes.attributeID
  517. left join kb3_eveunits on kb3_dgmattributetypes.unitID = kb3_eveunits.unitID
  518. where typeID = ".$typeID['typeID']);
  519. //$row = $qry2->getRow();
  520. while($row = $qry2->getRow()) {
  521. if(strtolower($row['attributeName']) == "shieldcapacity") {
  522. self::$shipStats->setShieldAmount($row['value']);
  523. }
  524. if(strtolower($row['attributeName']) == "armorhp") {
  525. self::$shipStats->setArmorAmount($row['value']);
  526. }
  527. if(strtolower($row['attributeName']) == "hp") {
  528. self::$shipStats->setHullAmount($row['value']);
  529. }
  530. if(strtolower($row['attributeName']) == "scanradarstrength" && $row['value'] > 0) {
  531. self::$shipStats->setSensorType(fittingTools::getSensorTypeImg('radar'));
  532. self::$shipStats->setSensorAmount($row['value']);
  533. }
  534. if(strtolower($row['attributeName']) == "scanladarstrength" && $row['value'] > 0) {
  535. self::$shipStats->setSensorType(fittingTools::getSensorTypeImg('ladar'));
  536. self::$shipStats->setSensorAmount($row['value']);
  537. }
  538. if(strtolower($row['attributeName']) == "scanmagnetometricstrength" && $row['value'] > 0) {
  539. self::$shipStats->setSensorType(fittingTools::getSensorTypeImg('magnetometric'));
  540. self::$shipStats->setSensorAmount($row['value']);
  541. }
  542. if(strtolower($row['attributeName']) == "scangravimetricstrength" && $row['value'] > 0) {
  543. self::$shipStats->setSensorType(fittingTools::getSensorTypeImg('gravimetric'));
  544. self::$shipStats->setSensorAmount($row['value']);
  545. }
  546. if(strtolower($row['attributeName']) == "shieldemdamageresonance") {
  547. self::$shipStats->setShieldEM((1-$row['value'])*100);
  548. }
  549. if(strtolower($row['attributeName']) == "shieldthermaldamageresonance") {
  550. self::$shipStats->setShieldTh((1-$row['value'])*100);
  551. }
  552. if(strtolower($row['attributeName']) == "shieldkineticdamageresonance") {
  553. self::$shipStats->setShieldKi((1-$row['value'])*100);
  554. }
  555. if(strtolower($row['attributeName']) == "shieldexplosivedamageresonance") {
  556. self::$shipStats->setShieldEx((1-$row['value'])*100);
  557. }
  558. if(strtolower($row['attributeName']) == "shieldrechargerate") {
  559. self::$shipStats->setShieldRecharge($row['value']/1000);
  560. }
  561. if(strtolower($row['attributeName']) == "armoremdamageresonance") {
  562. self::$shipStats->setArmorEM((1-$row['value'])*100);
  563. }
  564. if(strtolower($row['attributeName']) == "armorthermaldamageresonance") {
  565. self::$shipStats->setArmorTh((1-$row['value'])*100);
  566. }
  567. if(strtolower($row['attributeName']) == "armorkineticdamageresonance") {
  568. self::$shipStats->setArmorKi((1-$row['value'])*100);
  569. }
  570. if(strtolower($row['attributeName']) == "armorexplosivedamageresonance") {
  571. self::$shipStats->setArmorEx((1-$row['value'])*100);
  572. }
  573. if(strtolower($row['attributeName']) == "emdamageresonance") {
  574. self::$shipStats->setHullEM((1-$row['value'])*100);
  575. }
  576. if(strtolower($row['attributeName']) == "thermaldamageresonance") {
  577. self::$shipStats->setHullTh((1-$row['value'])*100);
  578. }
  579. if(strtolower($row['attributeName']) == "kineticdamageresonance") {
  580. self::$shipStats->setHullKi((1-$row['value'])*100);
  581. }
  582. if(strtolower($row['attributeName']) == "explosivedamageresonance") {
  583. self::$shipStats->setHullEx((1-$row['value'])*100);
  584. }
  585. if(strtolower($row['attributeName']) == "maxvelocity") {
  586. self::$shipStats->setShipSpeed($row['value']);
  587. }
  588. if(strtolower($row['attributeName']) == "signatureradius") {
  589. self::$shipStats->setSigRadius($row['value']);
  590. }
  591. if(strtolower($row['attributeName']) == "scanresolution") {
  592. self::$shipStats->setScan($row['value']);
  593. }
  594. if(strtolower($row['attributeName']) == "maxtargetrange") {
  595. self::$shipStats->setDistance($row['value']);
  596. }
  597. if(strtolower($row['attributeName']) == "maxlockedtargets") {
  598. self::$shipStats->setTarget($row['value']);
  599. }
  600. if(strtolower($row['attributeName']) == "capacitorcapacity") {
  601. self::$shipStats->setCapAmount($row['value']);
  602. }
  603. if(strtolower($row['attributeName']) == "rechargerate") {
  604. self::$shipStats->setCapRecharge($row['value']);
  605. }
  606. if(strtolower($row['attributeName']) == "rigsize") {
  607. self::$shipStats->setRSize(fittingTools::returnShipSize($row['value']));
  608. }
  609. if(strtolower($row['attributeName']) == "lowslots") {
  610. $arr = self::$shipStats->getShipSlots();
  611. $arr['lowslots'] = $row['value'];
  612. self::$shipStats->setShipSlots($arr);
  613. }
  614. if(strtolower($row['attributeName']) == "medslots") {
  615. $arr = self::$shipStats->getShipSlots();
  616. $arr['medslots'] = $row['value'];
  617. self::$shipStats->setShipSlots($arr);
  618. }
  619. if(strtolower($row['attributeName']) == "hislots") {
  620. $arr = self::$shipStats->getShipSlots();
  621. $arr['hislots'] = $row['value'];
  622. self::$shipStats->setShipSlots($arr);
  623. }
  624. if(strtolower($row['attributeName']) == "rigslots") {
  625. $arr = self::$shipStats->getShipSlots();
  626. $arr['rigslots'] = $row['value'];
  627. self::$shipStats->setShipSlots($arr);
  628. }
  629. if(strtolower($row['attributeName']) == "upgradecapacity") {
  630. self::$shipStats->setCalAmount($row['value']);
  631. }
  632. if(strtolower($row['attributeName']) == "cpuoutput") {
  633. self::$shipStats->setCpuAmount($row['value']);
  634. }
  635. if(strtolower($row['attributeName']) == "poweroutput") {
  636. self::$shipStats->setPrgAmount($row['value']);
  637. }
  638. if(strtolower($row['attributeName']) == "turretslotsleft") {
  639. self::$shipStats->setTurAmount($row['value']);
  640. self::$shipStats->setTurUsed($row['value']);
  641. }
  642. if(strtolower($row['attributeName']) == "launcherslotsleft") {
  643. self::$shipStats->setMisAmount($row['value']);
  644. self::$shipStats->setMisUsed($row['value']);
  645. }
  646. }
  647. $qry3 = new DBQuery();
  648. $qry3->execute("select mass from kb3_invtypes left join kb3_item_types on itt_id = groupID where typeID = ".$typeID['typeID']);
  649. $row3 = $qry3->getRow();
  650. self::$shipStats->setMass(fittingTools::calculateMass($row3['mass']));
  651. //echo self::$shipStats->getMass();
  652. }
  653. function returnShipSize($input) {
  654. switch($input) {
  655. case "1":
  656. return "Small";
  657. break;
  658. case "2":
  659. return "Medium";
  660. break;
  661. case "3":
  662. return "Large";
  663. break;
  664. default:
  665. return "X-Large";
  666. break;
  667. }
  668. }
  669. function calculateMass($param_mass) {
  670. //1.482e+07
  671. $break = explode("e+",$param_mass);
  672. $exp = 1;
  673. for($e=0; $e < $break[1]; $e++) {
  674. $exp = $exp*10;
  675. }
  676. //echo $break[0]." ".($break[1]*10)." ".$exp;
  677. return ($break[0]*$exp);
  678. }
  679. function setlevel5Skills() {
  680. //global $shipStats;
  681. //shield amount
  682. self::$shipStats->setShieldAmount(fittingTools::statOntoShip(self::$shipStats->getShieldAmount(), 25, "+", "%", 1));
  683. //shield recharge
  684. self::$shipStats->setShieldRecharge(fittingTools::statOntoShip(self::$shipStats->getShieldRecharge(), 25, "-", "%", 1));
  685. //armour amount
  686. self::$shipStats->setArmorAmount(fittingTools::statOntoShip(self::$shipStats->getArmorAmount(), 25, "+", "%", 1));
  687. //hull amount
  688. self::$shipStats->setHullAmount(fittingTools::statOntoShip(self::$shipStats->getHullAmount(), 25, "+", "%", 1));
  689. //cap amount
  690. self::$shipStats->setCapAmount(fittingTools::statOntoShip(self::$shipStats->getCapAmount(), 25, "+", "%", 1));
  691. //cap recharge
  692. self::$shipStats->setCapRecharge(fittingTools::statOntoShip(self::$shipStats->getCapRecharge(), 25, "-", "%", 1));
  693. //speed
  694. self::$shipStats->setShipSpeed(fittingTools::statOntoShip(self::$shipStats->getShipSpeed(), 25, "+", "%", 1));
  695. //target range
  696. self::$shipStats->setDistance(fittingTools::statOntoShip(self::$shipStats->getDistance(), 25, "+", "%", 1));
  697. //scan resolution
  698. self::$shipStats->setScan(fittingTools::statOntoShip(self::$shipStats->getScan(), 25, "+", "%", 1));
  699. //signature
  700. //shipInfo.setOSig(statOntoShip(Number(shipInfo.getOSig()), 25, "+", "%", 1));
  701. //ECCM
  702. self::$shipStats->setSensorAmount(fittingTools::statOntoShip(self::$shipStats->getSensorAmount($row['value']), 20, "+", "%", 1));
  703. }
  704. function getExtraStats() {
  705. //global $shipStats;
  706. //sort resists
  707. fittingTools::setAndOrderShipResists();
  708. //passive shield tank
  709. if(self::$shipStats->getTankType() == "shield") {
  710. $boost = fittingTools::returnTankResults("shield");
  711. self::$shipStats->setTankAmount(fittingTools::tankAbleDPS(fittingTools::peakShieldRecharge(self::$shipStats->getShieldAmount(),self::$shipStats->getShieldRecharge())+$boost, self::$shipStats->getShieldEM(),self::$shipStats->getShieldTh(),self::$shipStats->getShieldKi(),self::$shipStats->getShieldEx()));
  712. self::$shipStats->setTankType("act");
  713. } else if(self::$shipStats->getTankType() == "armor") {
  714. $boost = fittingTools::returnTankResults("armor");
  715. self::$shipStats->setTankAmount(fittingTools::tankAbleDPS($boost, self::$shipStats->getArmorEM(),self::$shipStats->getArmorTh(),self::$shipStats->getArmorKi(),self::$shipStats->getArmorEx()));
  716. self::$shipStats->setTankType("arm");
  717. } else if(self::$shipStats->getTankType() == "hull") {
  718. $boost = fittingTools::returnTankResults("hull");
  719. self::$shipStats->setTankAmount(fittingTools::tankAbleDPS($boost, self::$shipStats->getHullEM(),self::$shipStats->getHullTh(),self::$shipStats->getHullKi(),self::$shipStats->getHullEx()));
  720. self::$shipStats->setTankType("arm");
  721. } else {
  722. self::$shipStats->setTankAmount(fittingTools::tankAbleDPS(fittingTools::peakShieldRecharge(self::$shipStats->getShieldAmount(),self::$shipStats->getShieldRecharge()), self::$shipStats->getShieldEM(),self::$shipStats->getShieldTh(),self::$shipStats->getShieldKi(),self::$shipStats->getShieldEx()));
  723. self::$shipStats->setTankType("pass");
  724. }
  725. self::$shipStats->setEffectiveShield(fittingTools::effectHP(self::$shipStats->getShieldAmount(),self::$shipStats->getShieldEM(),self::$shipStats->getShieldTh(),self::$shipStats->getShieldKi(),self::$shipStats->getShieldEx()));
  726. self::$shipStats->setEffectiveArmor(fittingTools::effectHP(self::$shipStats->getArmorAmount(),self::$shipStats->getArmorEM(),self::$shipStats->getArmorTh(),self::$shipStats->getArmorKi(),self::$shipStats->getArmorEx()));
  727. self::$shipStats->setEffectiveHull(fittingTools::effectHP(self::$shipStats->getHullAmount(),self::$shipStats->getHullEM(),self::$shipStats->getHullTh(),self::$shipStats->getHullKi(),self::$shipStats->getHullEx()));
  728. self::$shipStats->setCapRechargeRate(fittingTools::peakShieldRecharge(self::$shipStats->getCapAmount(), self::$shipStats->getCapRecharge()/1000));
  729. //echo fittingTools::peakShieldRecharge(self::$shipStats->getCapAmount(), self::$shipStats->getCapRecharge()/1000);
  730. if(self::$shipStats->getIsMWD()) {
  731. self::$mwdActive = round(fittingTools::getShipSpeed(self::$shipStats->getShipSpeed(), self::$shipStats->getMwdBoost(), self::$shipStats->getMwdThrust(), self::$shipStats->getMass()+self::$shipStats->getMwdMass()));
  732. if(self::$shipStats->getMwdSigRed()) {
  733. self::$shipStats->setMwdSig((self::$shipStats->getMwdSig()-(self::$shipStats->getMwdSig()/100)*(self::$shipStats->getMwdSigRed()*5)));
  734. }
  735. self::$mwdSigature = round(((self::$shipStats->getMwdSig()/100)*self::$shipStats->getSigRadius())+self::$shipStats->getSigRadius());
  736. }
  737. if(self::$shipStats->getIsAB()) {
  738. self::$abActive = round(fittingTools::getShipSpeed(self::$shipStats->getShipSpeed(), self::$shipStats->getABBoost(), self::$shipStats->getABThrust(), self::$shipStats->getMass()+self::$shipStats->getABMass()));
  739. }
  740. //set the skill set
  741. // get drone count
  742. self::$droneMax = fittingTools::getShipDrone(self::$shipStats->getPilotShip())+self::$droneAdd;
  743. self::$shipStats->setDamageGun(fittingTools::turretMods());
  744. self::$shipStats->setDroneDamage(fittingTools::getDroneSkillDamage());
  745. fittingTools::getDPSAndVolley();
  746. self::$shipStats->setDamage(fittingTools::getDPS());
  747. self::$shipStats->setVolley(fittingTools::getVolley());
  748. /*echo "<pre>";
  749. print_r(self::$shipStats->getDamageGun());
  750. print_r(self::$shipStats->getDamageModules());
  751. //print_r(self::$shipStats->getDroneDamage());
  752. //print_r(self::$shipStats->getDroneDamageMod());
  753. echo "</pre>";*/
  754. //print_r(self::$shipStats->getCapGJ());
  755. self::$shipStats->setCapGJ(fittingTools::capacitorUsage());
  756. self::$shipStats->setCapInj(fittingTools::capacitorInjector());
  757. self::$shipStats->setTransCap(fittingTools::remoteRepStats());
  758. /*echo "<pre>";
  759. print_r(self::$shipStats->getCapGJ());
  760. print_r(self::$shipStats->getTransCap());
  761. print_r(self::$shipStats->getCapInj());
  762. echo "</pre>";*/
  763. $capUse = fittingTools::totalCapUse();
  764. $capPlus = fittingTools::totalCapInjected();
  765. if(fittingTools::isCapStable((self::$shipStats->getCapRechargeRate()+$capPlus), $capUse)) {
  766. //$shipStats->setCapStatus(round(capUsage($shipStats->getCapAmount(), 0, $shipStats->getCapRechargeRate())));
  767. $cap = self::$shipStats->getCapAmount();
  768. $recharge = (self::$shipStats->getCapRecharge()/1000);
  769. $k = 5;
  770. $tau = $recharge/$k;
  771. $squt = sqrt($cap);
  772. $regen = 0;
  773. if($capUse != 0) {
  774. for($i = 1; $i < 1000; $i++) {
  775. $cappersecondadd = $cap*(pow((1+((sqrt((0/$cap))-1)*exp(((0-$i)/$tau)))),2));
  776. $capThatCycle = $cappersecondadd/$i;
  777. $capPerSecond = ((-2*$cappersecondadd)/$tau)+(((2*$squt)*sqrt($cappersecondadd))/$tau);
  778. $percentage = ($cappersecondadd/$cap)*100;
  779. //echo $i." --- ".$regen." ------ ".$capUse." -- ".$cappersecondadd." -- ".$capThatCycle." -- ".$capPerSecond." -- ".$percentage."<br />";
  780. /*echo $cappersecondadd." --- ";
  781. echo $cap."<br />";*/
  782. if($regen < $capPerSecond) {
  783. $regen = $capPerSecond;
  784. } else {
  785. if($capUse > $capPerSecond) {
  786. break;
  787. }
  788. if($percentage > 100) {
  789. break;
  790. }
  791. if($cappersecondadd > $cap) {
  792. break;
  793. }
  794. }
  795. }
  796. } else {
  797. $percentage = 100;
  798. }
  799. self::$shipStats->setCapStatus($percentage);
  800. self::$shipStats->setCapStable(1);
  801. } else {
  802. $seconds = round(fittingTools::capUsage(self::$shipStats->getCapAmount(), $capUse, (self::$shipStats->getCapRechargeRate()+$capPlus), self::$shipStats->getCapRecharge()));
  803. self::$shipStats->setCapStatus(fittingTools::toMinutesAndHours($seconds));
  804. self::$shipStats->setCapStable(0);
  805. }
  806. fittingTools::sensorBoosterAdd();
  807. /*echo "<pre>";
  808. print_r(self::$shipStats->getSensorBooster());
  809. echo "</pre>";*/
  810. self::$shipStats->setEffectiveHp(self::$shipStats->getEffectiveShield()+self::$shipStats->getEffectiveArmor()+self::$shipStats->getEffectiveHull());
  811. if(!self::$shipStats->getSensorType()) {
  812. self::$shipStats->setSensorType("icon04_12");
  813. }
  814. /*echo "<pre>";
  815. print_r(self::$shipStats->getSigRadiusBoost());
  816. echo "</pre>";*/
  817. fittingTools::setSigBoostforWarpDis();
  818. /*echo "<pre>";
  819. print_r(self::$shipStats->getShipSlots());
  820. echo "</pre>";*/
  821. }
  822. function getShipDrone($shipname) {
  823. if(strstr(strtolower($shipname), "nyx")
  824. || strstr(strtolower($shipname), "aeon")
  825. || strstr(strtolower($shipname), "wyvern")
  826. || strstr(strtolower($shipname), "hel")) {
  827. return 20;
  828. } else if(strstr(strtolower($shipname), "archon")
  829. || strstr(strtolower($shipname), "chimera")
  830. || strstr(strtolower($shipname), "thanatos")
  831. || strstr(strtolower($shipname), "nidgoggur")
  832. || strstr(strtolower($shipname), "revelation")
  833. || strstr(strtolower($shipname), "phoenix")
  834. || strstr(strtolower($shipname), "moros")
  835. || strstr(strtolower($shipname), "naglfar")) {
  836. return 10;
  837. } else {
  838. return 5;
  839. }
  840. }
  841. function setAndOrderShipResists() {
  842. $orderSystem = Array(
  843. 4 => "subsystem",
  844. 1 => "Active",
  845. 2 => "Passive",
  846. 5 => "StrongPassive",
  847. 3 => "DamCom"
  848. );
  849. /*echo "<pre>";
  850. print_r(self::$shipStats->getShipResists());
  851. echo "</pre>";*/
  852. if(self::$shipStats->getShipResists()) {
  853. foreach($orderSystem as $i => $order) {
  854. foreach(self::$shipStats->getShipResists() as $j => $value) {
  855. if($i == $value['order']) {
  856. if($value['section'] == "armor") {
  857. if($value['order'] == 3) {
  858. if($value['resist'] == "em") {
  859. self::$shipStats->setArmorEm(fittingTools::getLevel5SkillsPlus(self::$shipStats->getArmorEm(), $value['amount'], $value['type'], 1));
  860. //self::$emArmor++;
  861. } else if($value['resist'] == "ex") {
  862. self::$shipStats->setArmorEx(fittingTools::getLevel5SkillsPlus(self::$shipStats->getArmorEx(), $value['amount'], $value['type'], 1));
  863. //self::$exArmor++;
  864. } else if($value['resist'] == "ki") {
  865. self::$shipStats->setArmorKi(fittingTools::getLevel5SkillsPlus(self::$shipStats->getArmorKi(), $value['amount'], $value['type'], 1));
  866. //self::$kiArmor++;
  867. } else if($value['resist'] == "th") {
  868. self::$shipStats->setArmorTh(fittingTools::getLevel5SkillsPlus(self::$shipStats->getArmorTh(), $value['amount'], $value['type'], 1));
  869. //self::$thArmor++;
  870. }
  871. } else if($value['order'] == 4) {
  872. if($value['resist'] == "em") {
  873. self::$shipStats->setArmorEm(fittingTools::getLevel5SkillsPlus(self::$shipStats->getArmorEm(), $value['amount'], $value['type'], 1));
  874. } else if($value['resist'] == "ex") {
  875. self::$shipStats->setArmorEx(fittingTools::getLevel5SkillsPlus(self::$shipStats->getArmorEx(), $value['amount'], $value['type'], 1));
  876. } else if($value['resist'] == "ki") {
  877. self::$shipStats->setArmorKi(fittingTools::getLevel5SkillsPlus(self::$shipStats->getArmorKi(), $value['amount'], $value['type'], 1));
  878. } else if($value['resist'] == "th") {
  879. self::$shipStats->setArmorTh(fittingTools::getLevel5SkillsPlus(self::$shipStats->getArmorTh(), $value['amount'], $value['type'], 1));
  880. }
  881. } else {
  882. if($value['resist'] == "em") {
  883. self::$shipStats->setArmorEm(fittingTools::getLevel5SkillsPlus(self::$shipStats->getArmorEm(), $value['amount'], $value['type'], self::$emArmor));
  884. self::$emArmor++;
  885. } else if($value['resist'] == "ex") {
  886. self::$shipStats->setArmorEx(fittingTools::getLevel5SkillsPlus(self::$shipStats->getArmorEx(), $value['amount'], $value['type'], self::$exArmor));
  887. self::$exArmor++;
  888. } else if($value['resist'] == "ki") {
  889. self::$shipStats->setArmorKi(fittingTools::getLevel5SkillsPlus(self::$shipStats->getArmorKi(), $value['amount'], $value['type'], self::$kiArmor));
  890. self::$kiArmor++;
  891. } else if($value['resist'] == "th") {
  892. self::$shipStats->setArmorTh(fittingTools::getLevel5SkillsPlus(self::$shipStats->getArmorTh(), $value['amount'], $value['type'], self::$thArmor));
  893. self::$thArmor++;
  894. }
  895. }
  896. } else if($value['section'] == "shield") {
  897. if($value['order'] == 3 || $value['order'] == 4) {
  898. if($value['resist'] == "em") {
  899. self::$shipStats->setShieldEm(fittingTools::getLevel5SkillsPlus(self::$shipStats->getShieldEm(), $value['amount'], $value['type'], 1));
  900. } else if($value['resist'] == "ex") {
  901. self::$shipStats->setShieldEx(fittingTools::getLevel5SkillsPlus(self::$shipStats->getShieldEx(), $value['amount'], $value['type'], 1));
  902. } else if($value['resist'] == "ki") {
  903. self::$shipStats->setShieldKi(fittingTools::getLevel5SkillsPlus(self::$shipStats->getShieldKi(), $value['amount'], $value['type'], 1));
  904. } else if($value['resist'] == "th") {
  905. self::$shipStats->setShieldTh(fittingTools::getLevel5SkillsPlus(self::$shipStats->getShieldTh(), $value['amount'], $value['type'], 1));
  906. }
  907. } else {
  908. if($value['resist'] == "em") {
  909. self::$shipStats->setShieldEm(fittingTools::getLevel5SkillsPlus(self::$shipStats->getShieldEm(), $value['amount'], $value['type'], self::$emShield));
  910. self::$emShield++;
  911. } else if($value['resist'] == "ex") {
  912. self::$shipStats->setShieldEx(fittingTools::getLevel5SkillsPlus(self::$shipStats->getShieldEx(), $value['amount'], $value['type'], self::$exShield));
  913. self::$exShield++;
  914. } else if($value['resist'] == "ki") {
  915. self::$shipStats->setShieldKi(fittingTools::getLevel5SkillsPlus(self::$shipStats->getShieldKi(), $value['amount'], $value['type'], self::$kiShield));
  916. self::$kiShield++;
  917. } else if($value['resist'] == "th") {
  918. self::$shipStats->setShieldTh(fittingTools::getLevel5SkillsPlus(self::$shipStats->getShieldTh(), $value['amount'], $value['type'], self::$thShield));
  919. self::$thShield++;
  920. }
  921. }
  922. } else if($value['section'] == "hull") {
  923. if($value['order'] == 3) {
  924. if($value['resist'] == "em") {
  925. self::$shipStats->setHullEm(fittingTools::getLevel5SkillsPlus(self::$shipStats->getHullEm(), $value['amount'], $value['type'], 1));
  926. self::$emHull++;
  927. } else if($value['resist'] == "ex") {
  928. self::$shipStats->setHullEx(fittingTools::getLevel5SkillsPlus(self::$shipStats->getHullEx(), $value['amount'], $value['type'], 1));
  929. self::$exHull++;
  930. } else if($value['resist'] == "ki") {
  931. self::$shipStats->setHullKi(fittingTools::getLevel5SkillsPlus(self::$shipStats->getHullKi(), $value['amount'], $value['type'], 1));
  932. self::$kiHull++;
  933. } else if($value['resist'] == "th") {
  934. self::$shipStats->setHullTh(fittingTools::getLevel5SkillsPlus(self::$shipStats->getHullTh(), $value['amount'], $value['type'], 1));
  935. self::$thHull++;
  936. }
  937. } else {
  938. if($value['resist'] == "em") {
  939. self::$shipStats->setHullEm(fittingTools::getLevel5SkillsPlus(self::$shipStats->getHullEm(), $value['amount'], $value['type'], self::$emHull));
  940. self::$emHull++;
  941. } else if($value['resist'] == "ex") {
  942. self::$shipStats->setHullEx(fittingTools::getLevel5SkillsPlus(self::$shipStats->getHullEx(), $value['amount'], $value['type'], self::$exHull));
  943. self::$exHull++;
  944. } else if($value['resist'] == "ki") {
  945. self::$shipStats->setHullKi(fittingTools::getLevel5SkillsPlus(self::$shipStats->getHullKi(), $value['amount'], $value['type'], self::$kiHull));
  946. self::$kiHull++;
  947. } else if($value['resist'] == "th") {
  948. self::$shipStats->setHullTh(fittingTools::getLevel5SkillsPlus(self::$shipStats->getHullTh(), $value['amount'], $value['type'], self::$thHull));
  949. self::$thHull++;
  950. }
  951. }
  952. }
  953. }
  954. }
  955. }
  956. }
  957. }
  958. function returnTankResults($tankType) {
  959. /*echo "<pre>";
  960. print_r(self::$shipStats->getTankBoost());
  961. echo "</pre>";*/
  962. $total = 0;
  963. $dur = 1;
  964. $boost = 0;
  965. if(self::$shipStats->getTankBoost()) {
  966. foreach(self::$shipStats->getTankBoost() as $i => $value) {
  967. if($value['type'] == $tankType) {
  968. $boost = $value['boost'];
  969. if($value['type'] == "shield") {
  970. $boost = fittingTools::shieldAmpBooster($boost,$value["icon"]);
  971. $dur = fittingTools::boostDuration($tankType);
  972. } else if($value['type'] == "armor") {
  973. $boost = fittingTools::armorAmpBooster($boost);
  974. $dur = fittingTools::boostDuration($tankType);
  975. } else if($value['type'] == "hull") {
  976. $dur = fittingTools::boostDuration($tankType);
  977. }
  978. $total += $boost;
  979. }
  980. }
  981. }
  982. //echo $total." ".$dur."<br />";
  983. return $total/$dur;
  984. }
  985. function boostDuration($type) {
  986. $j = 0;
  987. if(self::$shipStats->getTankBoost()) {
  988. foreach(self::$shipStats->getTankBoost() as $i => $value) {
  989. if($value['type'] == $type) {
  990. $dur = $value['dur'];
  991. if($type == "armor") {
  992. $dur = fittingTools::getSkillset("armor repair", "duration", $dur);
  993. $dur = fittingTools::armorAmpDur($dur);
  994. $total += $dur;
  995. $j++;
  996. } else if($type == "shield") {
  997. $dur = fittingTools::shieldAmpDur($dur);
  998. $dur = fittingTools::getSkillset("shield booster", "duration", $dur);
  999. if($value['icon'] == "105_4") {
  1000. $total += 60/($dur+$value['amount']);
  1001. } else {
  1002. $total += $dur;
  1003. }
  1004. $j++;
  1005. } else if($type == "hull") {
  1006. $dur = fittingTools::getSkillset("armor repair", "duration", $dur);
  1007. $total += $dur;
  1008. $j++;
  1009. }
  1010. }
  1011. }
  1012. }
  1013. return ($total/$j);
  1014. }
  1015. function armorAmpDur($dur) {
  1016. $total = $dur;
  1017. /*echo "<pre>";
  1018. print_r(self::$armorDur);
  1019. echo "</pre>";*/
  1020. if(self::$armorDur) {
  1021. foreach(self::$armorDur as $i => $value) {
  1022. $total = fittingTools::statOntoShip($total, $value['dur'], $value['type'], "%", $value['neg']);
  1023. }
  1024. }
  1025. return $total;
  1026. }
  1027. function shieldAmpDur($dur) {
  1028. $total = $dur;
  1029. /*echo "<pre>";
  1030. print_r(self::$shieldDur);
  1031. echo "</pre>";*/
  1032. if(self::$shieldDur) {
  1033. foreach(self::$shieldDur as $i => $value) {
  1034. $total = fittingTools::statOntoShip($total, $value['dur'], $value['type'], "%", $value['neg']);
  1035. }
  1036. }
  1037. return $total;
  1038. }
  1039. function shieldAmpBooster($boostAmount,$icon) {
  1040. $total = $boostAmount;
  1041. if($icon == "105_4") {
  1042. /*echo "<pre>";
  1043. print_r(self::$shipStats->getTankBoost());
  1044. echo "</pre>";*/
  1045. $total = fittingTools::statOntoShip($total, 25, "+", "%", 1);
  1046. }
  1047. if(self::$shipStats->getTankAmpShield()) {
  1048. foreach(self::$shipStats->getTankAmpShield() as $i => $value) {
  1049. $total = fittingTools::statOntoShip($total, $value['boost'], $value['type'], "%", $value['neg']);
  1050. }
  1051. }
  1052. /*echo "<pre>";
  1053. print_r(self::$shipStats->getShipEffects());
  1054. echo "</pre>";*/
  1055. if(self::$shipStats->getShipEffects()) {
  1056. foreach(self::$shipStats->getShipEffects() as $j => $effect) {
  1057. if($effect['effect'] == "shieldBoost") {
  1058. $total = fittingTools::statOntoShip($total, (5*$effect['bonus']),$effect['type'],"%", 1);
  1059. }
  1060. }
  1061. }
  1062. return $total;
  1063. }
  1064. function armorAmpBooster($boostAmount) {
  1065. $total = $boostAmount;
  1066. /*echo "<pre>";
  1067. print_r(self::$shipStats->getTankAmpArmor());
  1068. echo "</pre>";*/
  1069. if(self::$shipStats->getTankAmpArmor()) {
  1070. foreach(self::$shipStats->getTankAmpArmor() as $i => $value) {
  1071. $total = fittingTools::statOntoShip($total, $value['boost'], $value['type'], "%", $value['neg']);
  1072. }
  1073. }
  1074. /*echo "<pre>";
  1075. print_r(self::$shipStats->getShipEffects());
  1076. echo "</pre>";*/
  1077. if(self::$shipStats->getShipEffects()) {
  1078. foreach(self::$shipStats->getShipEffects() as $j => $effect) {
  1079. if($effect['effect'] == "armorBoost") {
  1080. $total = fittingTools::statOntoShip($total, (5*$effect['bonus']),$effect['type'],"%", 1);
  1081. }
  1082. }
  1083. }
  1084. return $total;
  1085. }
  1086. function setSigBoostforWarpDis() {
  1087. if(self::$shipStats->getSigRadiusBoost()) {
  1088. foreach(self::$shipStats->getSigRadiusBoost() as $i => $value) {
  1089. if($value != 0) {
  1090. self::$shipStats->setSigRadius(fittingTools::statOntoShip(self::$shipStats->getSigRadius(), $value['sigAdd'], "+", "%", 0));
  1091. }
  1092. }
  1093. }
  1094. }
  1095. function sensorBoosterAdd() {
  1096. self::$scan = 0;
  1097. self::$range = 0;
  1098. $arrRange = Array();
  1099. $arrScan = Array();
  1100. $modSlotOrderRange = Array(
  1101. 7 => "Sub",
  1102. 3 => "Low",
  1103. 4 => "Mid",
  1104. 2 => "Rig",
  1105. 1 => "high"
  1106. );
  1107. $k = 0;
  1108. if(self::$shipStats->getSensorBooster()) {
  1109. foreach($modSlotOrderRange as $i => $order) {
  1110. foreach(self::$shipStats->getSensorBooster() as $j => $value) {
  1111. //echo $i." ".$value['order']."<br />";
  1112. if($i == $value['order']) {
  1113. if($value['range'] != 0) {
  1114. $arrRange[$k]['range'] = $value['range'];
  1115. $arrRange[$k]['negra'] = $value['negra'];
  1116. $arrRange[$k]['order'] = $value['order'];
  1117. $arrRange[$k]['type'] = $value['type'];
  1118. }
  1119. $k++;
  1120. }
  1121. }
  1122. }
  1123. }
  1124. if($arrRange) {
  1125. foreach($arrRange as $i => $value) {
  1126. //$arr[self::$moduleCount]['order'] = $slotOrder;
  1127. if($value['range'] != 0) {
  1128. $arr[$i]['range'] = $value['range'];
  1129. $arr[$i]['type'] = $value['type'];
  1130. self::$range++;
  1131. $arr[$i]['negra'] = self::$range;
  1132. }
  1133. /*if($value['scan'] != 0) {
  1134. $arr[$i]['scan'] = $value['scan'];
  1135. self::$scan++;
  1136. $arr[$i]['negsc'] = self::$scan;
  1137. }*/
  1138. }
  1139. }
  1140. //self::$shipStats->setSensorBooster($arr);
  1141. $arrRange = $arr;
  1142. $modSlotOrderScan = Array(
  1143. 7 => "Sub",
  1144. 4 => "Mid",
  1145. 3 => "Low",
  1146. 1 => "high",
  1147. 2 => "Rig"
  1148. );
  1149. $k = 0;
  1150. if(self::$shipStats->getSensorBooster()) {
  1151. foreach($modSlotOrderScan as $i => $order) {
  1152. foreach(self::$shipStats->getSensorBooster() as $j => $value) {
  1153. if($i == $value['order']) {
  1154. //echo $i." ".$value['order']."<br />";
  1155. if($value['scan'] != 0) {
  1156. $arrScan[$k]['scan'] = $value['scan'];
  1157. $arrScan[$k]['negsc'] = $value['negsc'];
  1158. $arrScan[$k]['order'] = $value['order'];
  1159. $arrScan[$k]['type'] = $value['type'];
  1160. }
  1161. $k++;
  1162. }
  1163. }
  1164. }
  1165. }
  1166. if($arrScan) {
  1167. foreach($arrScan as $i => $value) {
  1168. if($value['scan'] != 0) {
  1169. $arrS[$i]['scan'] = $value['scan'];
  1170. $arrS[$i]['type'] = $value['type'];
  1171. self::$scan++;
  1172. $arrS[$i]['negsc'] = self::$scan;
  1173. }
  1174. }
  1175. }
  1176. //self::$shipStats->setSensorBooster($arr);
  1177. $arrScan = $arrS;
  1178. /*echo "<pre>";
  1179. //print_r($arrRange);
  1180. print_r($arrScan);
  1181. echo "</pre>";*/
  1182. if($arrRange) {
  1183. foreach($arrRange as $i => $value) {
  1184. if($value['range']) {
  1185. //echo self::$shipStats->getDistance()." - ";
  1186. self::$shipStats->setDistance(fittingTools::statOntoShip(self::$shipStats->getDistance(), $value['range'], $value['type'], "%", $value['negra']));
  1187. //echo self::$shipStats->getDistance()."<br />";
  1188. }
  1189. }
  1190. }
  1191. if($arrScan) {
  1192. foreach($arrScan as $i => $value) {
  1193. if($value['scan']) {
  1194. //echo self::$shipStats->getScan()." - ".$value['scan']." - ".$value['type']." - ".$value['negsc']." - ";
  1195. self::$shipStats->setScan(fittingTools::statOntoShip(self::$shipStats->getScan(), $value['scan'], $value['type'], "%", $value['negsc']));
  1196. //echo self::$shipStats->getScan()."<br />";
  1197. }
  1198. }
  1199. }
  1200. }
  1201. function getDroneSkillDamage() {
  1202. $k = 0;
  1203. if(self::$shipStats->getDroneDamage()) {
  1204. foreach(self::$shipStats->getDroneDamage() as $i => $value) {
  1205. if(strstr($value['name'], "Bouncer")
  1206. || strstr($value['name'], "Curator")
  1207. || strstr($value['na…

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