public static function showInfo(\PDO $pdo_db, \ADODB_mysqli $db, array $langvars, $whichteam, $isowner, array $playerinfo, $invite_info, $team, Reg $tkireg) { // Heading echo "<div align=center><h3><font color=white><strong>{$team['team_name']}</strong>"; echo "<br><font size=2>\"<i>{$team['description']}</i>\"</font></h3>"; if ($playerinfo['team'] == $team['id']) { echo "<font color=white>"; if ($playerinfo['ship_id'] == $team['creator']) { echo $langvars['l_team_coord'] . " "; } else { echo $langvars['l_team_member'] . " "; } echo $langvars['l_options'] . " <br><font size=2>"; if (is_team_owner($team, $playerinfo) === true) { echo "[<a href=teams.php?teamwhat=9&whichteam={$playerinfo['team']}>" . $langvars['l_edit'] . "</a>] - "; } echo "[<a href=teams.php?teamwhat=7&whichteam={$playerinfo['team']}>" . $langvars['l_team_inv'] . "</a>] - [<a href=teams.php?teamwhat=2&whichteam={$playerinfo['team']}>" . $langvars['l_team_leave'] . "</a>]</font></font>"; } self::displayInviteInfo($langvars, $playerinfo, $invite_info); echo "</div>"; // Main table echo "<table border=2 cellspacing=2 cellpadding=2 bgcolor=\"#400040\" width=\"75%\" align=center><tr>"; echo "<td><font color=white>" . $langvars['l_team_members'] . "</font></td></tr><tr bgcolor={$tkireg->color_line2}>"; $result = $db->Execute("SELECT * FROM {$db->prefix}ships WHERE team = ?;", array($whichteam)); \Tki\Db::LogDbErrors($pdo_db, $result, __LINE__, __FILE__); while (!$result->EOF) { $member = $result->fields; echo "<td> - " . $member['character_name'] . " (" . $langvars['l_score'] . " " . $member['score'] . ")"; if ($isowner && $member['ship_id'] != $playerinfo['ship_id']) { echo " - <font size=2>[<a href=\"teams.php?teamwhat=5&who={$member['ship_id']}\">" . $langvars['l_team_eject'] . "</a>]</font></td>"; } else { if ($member['ship_id'] == $team['creator']) { echo " - " . $langvars['l_team_coord'] . " </td>"; } } echo "</tr><tr bgcolor={$tkireg->color_line2}>"; $result->MoveNext(); } // Displays for members name $res = $db->Execute("SELECT ship_id, character_name FROM {$db->prefix}ships WHERE team_invite = ?;", array($whichteam)); \Tki\Db::LogDbErrors($pdo_db, $res, __LINE__, __FILE__); echo "<td bgcolor={$tkireg->color_line2}><font color=white>" . $langvars['l_team_pending'] . " <strong>" . $team['team_name'] . "</strong></font></td>"; echo "</tr><tr>"; if ($res->RecordCount() > 0) { echo "</tr><tr bgcolor={$tkireg->color_line2}>"; while (!$res->EOF) { $who = $res->fields; echo "<td> - {$who['character_name']}</td>"; echo "</tr><tr bgcolor={$tkireg->color_line2}>"; $res->MoveNext(); } } else { echo "<td>" . $langvars['l_team_noinvites'] . " <strong>" . $team['team_name'] . "</strong>.</td></tr><tr>"; } echo "</tr></table>"; }
public static function xenobeHunter(\PDO $pdo_db, \ADODB_mysqli $db, array $playerinfo, $xenobeisdead, array $langvars, Reg $tkireg) { $targetinfo = array(); $rescount = $db->Execute("SELECT COUNT(*) AS num_players FROM {$db->prefix}ships WHERE ship_destroyed='N' AND email NOT LIKE '%@xenobe' AND ship_id > 1"); \Tki\Db::LogDbErrors($pdo_db, $rescount, __LINE__, __FILE__); $rowcount = $rescount->fields; $topnum = min(10, $rowcount['num_players']); // If we have killed all the players in the game then stop here. if ($topnum < 1) { return; } $res = $db->SelectLimit("SELECT * FROM {$db->prefix}ships WHERE ship_destroyed='N' AND email NOT LIKE '%@xenobe' AND ship_id > 1 ORDER BY score DESC", $topnum); \Tki\Db::LogDbErrors($pdo_db, $res, __LINE__, __FILE__); // Choose a target from the top player list $i = 1; $targetnum = random_int(1, $topnum); while (!$res->EOF) { if ($i == $targetnum) { $targetinfo = $res->fields; } $i++; $res->MoveNext(); } // Make sure we have a target if (!$targetinfo) { \Tki\PlayerLog::WriteLog($pdo_db, $playerinfo['ship_id'], LOG_RAW, "Hunt Failed: No Target "); return; } // Jump to target sector $sectres = $db->Execute("SELECT sector_id, zone_id FROM {$db->prefix}universe WHERE sector_id = ?;", array($targetinfo['sector'])); \Tki\Db::LogDbErrors($pdo_db, $sectres, __LINE__, __FILE__); $sectrow = $sectres->fields; $zoneres = $db->Execute("SELECT zone_id,allow_attack FROM {$db->prefix}zones WHERE zone_id = ?;", array($sectrow['zone_id'])); \Tki\Db::LogDbErrors($pdo_db, $zoneres, __LINE__, __FILE__); $zonerow = $zoneres->fields; // Only travel there if we can attack in the target sector if ($zonerow['allow_attack'] == "Y") { $stamp = date("Y-m-d H:i:s"); $move_result = $db->Execute("UPDATE {$db->prefix}ships SET last_login = ?, turns_used = turns_used + 1, sector = ? WHERE ship_id = ?", array($stamp, $targetinfo['sector'], $playerinfo['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $move_result, __LINE__, __FILE__); \Tki\PlayerLog::WriteLog($pdo_db, $playerinfo['ship_id'], LOG_RAW, "Xenobe used a wormhole to warp to sector {$targetinfo['sector']} where he is hunting player {$targetinfo['character_name']}."); if (!$move_result) { $error = $db->ErrorMsg(); \Tki\PlayerLog::WriteLog($pdo_db, $playerinfo['ship_id'], LOG_RAW, "Move failed with error: {$error} "); return; } // Check for sector defenses $i = 0; $all_sector_fighters = 0; $defenses = array(); $sql = "SELECT * FROM ::prefix::sector_defense WHERE sector_id = :sector_id AND defense_type = 'F' ORDER BY quantity DESC"; $stmt = $pdo_db->prepare($sql); $stmt->bindParam(':sector_id', $targetinfo['sector']); $stmt->execute(); $defenses_present = $stmt->fetchAll(\PDO::FETCH_ASSOC); if ($defenses_present !== null) { foreach ($defenses_present as $tmp_defense) { $defenses[$i] = $tmp_defense; $all_sector_fighters += $defenses[$i]['quantity']; $i++; } } $i = 0; $total_sector_mines = 0; $sql = "SELECT * FROM ::prefix::sector_defense WHERE sector_id = :sector_id AND defense_type = 'M'"; $stmt = $pdo_db->prepare($sql); $stmt->bindParam(':sector_id', $targetinfo['sector']); $stmt->execute(); $defenses_present = $stmt->fetchAll(\PDO::FETCH_ASSOC); if ($defenses_present !== null) { foreach ($defenses_present as $tmp_defense) { $defenses[$i] = $tmp_defense; $total_sector_mines += $defenses[$i]['quantity']; $i++; } } if ($all_sector_fighters > 0 || $total_sector_mines > 0 || $all_sector_fighters > 0 && $total_sector_mines > 0) { // Attack sector defenses $targetlink = $targetinfo['sector']; self::xenobeToSecDef($pdo_db, $db, $langvars, $playerinfo, $targetlink, $tkireg); } if ($xenobeisdead > 0) { return; // Sector defenses killed the Xenobe } \Tki\PlayerLog::WriteLog($pdo_db, $playerinfo['ship_id'], LOG_RAW, "Xenobe launching an attack on {$targetinfo['character_name']}."); // Attack the target if ($targetinfo['planet_id'] > 0) { self::xenobeToPlanet($pdo_db, $db, $targetinfo['planet_id'], $tkireg, $playerinfo, $langvars); // Yes, so move to that planet } else { self::xenobeToShip($pdo_db, $db, $targetinfo['ship_id'], $tkireg, $playerinfo, $langvars); // Not on a planet, so move to the ship } } else { \Tki\PlayerLog::WriteLog($pdo_db, $playerinfo['ship_id'], LOG_RAW, "Xenobe hunt failed, target {$targetinfo['character_name']} was in a no attack zone (sector {$targetinfo['sector']})."); } }
public static function takeCredits(\PDO $pdo_db, \ADODB_mysqli $db, array $langvars, int $planet_id) { // Get basic Database information (ship and planet) $res = $db->Execute("SELECT * FROM {$db->prefix}ships WHERE email = ?;", array($_SESSION['username'])); \Tki\Db::LogDbErrors($pdo_db, $res, __LINE__, __FILE__); $playerinfo = $res->fields; $res = $db->Execute("SELECT * FROM {$db->prefix}planets WHERE planet_id = ?;", array($planet_id)); \Tki\Db::LogDbErrors($pdo_db, $res, __LINE__, __FILE__); $planetinfo = $res->fields; // Set the name for unamed planets to be "unnamed" if (empty($planetinfo['name'])) { $planetinfo['name'] = $langvars['l_unnamed']; } // Verify player is still in same sector as the planet if ($playerinfo['sector'] == $planetinfo['sector_id']) { if ($playerinfo['turns'] >= 1) { // Verify player owns the planet to take credits from if ($planetinfo['owner'] == $playerinfo['ship_id']) { // Get number of credits from the planet and current number player has on ship $CreditsTaken = $planetinfo['credits']; $CreditsOnShip = $playerinfo['credits']; $NewShipCredits = $CreditsTaken + $CreditsOnShip; // Update the planet record for credits $res = $db->Execute("UPDATE {$db->prefix}planets SET credits = 0 WHERE planet_id = ?;", array($planetinfo['planet_id'])); \Tki\Db::LogDbErrors($pdo_db, $res, __LINE__, __FILE__); // update the player info with updated credits $res = $db->Execute("UPDATE {$db->prefix}ships SET credits = ? WHERE email = ?;", array($NewShipCredits, $_SESSION['username'])); \Tki\Db::LogDbErrors($pdo_db, $res, __LINE__, __FILE__); // update the player info with updated turns $res = $db->Execute("UPDATE {$db->prefix}ships SET turns = turns - 1 WHERE email = ?;", array($_SESSION['username'])); \Tki\Db::LogDbErrors($pdo_db, $res, __LINE__, __FILE__); $tempa1 = str_replace("[credits_taken]", number_format($CreditsTaken, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']), $langvars['l_pr_took_credits']); $tempa2 = str_replace("[planet_name]", $planetinfo['name'], $tempa1); echo $tempa2 . "<br>"; $tempb1 = str_replace("[ship_name]", $playerinfo['ship_name'], $langvars['l_pr_have_credits_onboard']); $tempb2 = str_replace("[new_ship_credits]", number_format($NewShipCredits, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']), $tempb1); echo $tempb2 . "<br>"; $retval = "GO"; } else { echo "<br><br>" . str_replace("[planet_name]", $planetinfo['name'], $langvars['l_pr_not_your_planet']) . "<br><br>"; $retval = "BREAK-INVALID"; } } else { $tempc1 = str_replace("[planet_name]", $planetinfo['name'], $langvars['l_pr_not_enough_turns']); $tempc2 = str_replace("[sector_id]", $planetinfo['sector_id'], $tempc1); echo "<br><br>" . $tempc2 . "<br><br>"; $retval = "BREAK-TURNS"; } } else { echo "<br><br>" . $langvars['l_pr_must_same_sector'] . "<br><br>"; $retval = "BREAK-SECTORS"; } return $retval; }
public static function traderouteCheckCompatible(\ADODB_mysqli $db, \PDO $pdo_db, string $lang, $type1, $type2, $move, $circuit, $src, $dest, array $playerinfo, Reg $tkireg, Smarty $template) { $langvars = \Tki\Translate::load($pdo_db, $lang, array('traderoutes', 'common', 'global_includes', 'global_funcs', 'footer', 'regional')); // Check circuit compatibility (we only use types 1 and 2 so block anything else) if ($circuit != "1" && $circuit != "2") { \Tki\AdminLog::writeLog($pdo_db, LOG_RAW, "{$playerinfo['ship_id']}|Tried to use an invalid circuit_type of '{$circuit}', This is normally a result from using an external page and should be banned."); self::traderouteDie($pdo_db, $lang, $tkireg, "Invalid Circuit type!<br>*** Possible Exploit has been reported to the admin. ***", $template); } // Check warp links compatibility if ($move == 'warp') { $query = $db->Execute("SELECT link_id FROM {$db->prefix}links WHERE link_start = ? AND link_dest = ?;", array($src['sector_id'], $dest['sector_id'])); \Tki\Db::LogDbErrors($pdo_db, $query, __LINE__, __FILE__); if ($query->EOF) { $langvars['l_tdr_nowlink1'] = str_replace("[tdr_src_sector_id]", $src['sector_id'], $langvars['l_tdr_nowlink1']); $langvars['l_tdr_nowlink1'] = str_replace("[tdr_dest_sector_id]", $dest['sector_id'], $langvars['l_tdr_nowlink1']); self::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_nowlink1'], $template); } if ($circuit == '2') { $query = $db->Execute("SELECT link_id FROM {$db->prefix}links WHERE link_start = ? AND link_dest = ?;", array($dest['sector_id'], $src['sector_id'])); \Tki\Db::LogDbErrors($pdo_db, $query, __LINE__, __FILE__); if ($query->EOF) { $langvars['l_tdr_nowlink2'] = str_replace("[tdr_src_sector_id]", $src['sector_id'], $langvars['l_tdr_nowlink2']); $langvars['l_tdr_nowlink2'] = str_replace("[tdr_dest_sector_id]", $dest['sector_id'], $langvars['l_tdr_nowlink2']); self::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_nowlink2'], $template); } } } // Check ports compatibility if ($type1 == 'port') { if ($src['port_type'] == 'special') { if ($type2 != 'planet' && $type2 != 'team_planet') { self::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_sportissrc'], $template); } if ($dest['owner'] != $playerinfo['ship_id'] && ($dest['team'] == 0 || $dest['team'] != $playerinfo['team'])) { self::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_notownplanet'], $template); } } else { if ($type2 == 'planet') { self::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_planetisdest'], $template); } if ($src['port_type'] == $dest['port_type']) { self::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_samecom'], $template); } } } else { if (array_key_exists('port_type', $dest) === true && $dest['port_type'] == 'special') { self::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_sportcom'], $template); } } }
public static function productionChange(\PDO $pdo_db, \ADODB_mysqli $db, array $langvars, array $prodpercentarray, Reg $tkireg) { // Declare default production values from the config.php file // // We need to track what the player_id is and what team they belong to if they belong to a team, // these two values are not passed in as arrays // ship_id = the owner of the planet ($ship_id = $prodpercentarray['ship_id']) // team_id = the team creators ship_id ($team_id = $prodpercentarray['team_id']) // // First we generate a list of values based on the commodity // (ore, organics, goods, energy, fighters, torps, team, sells) // // Second we generate a second list of values based on the planet_id // Because team and ship_id are not arrays we do not pass them through the second list command. // When we write the ore production percent we also clear the selling and team values out of the db // When we pass through the team array we set the value to $team we grabbed out of the array. // in the sells and team the prodpercent = the planet_id. // // We run through the database checking to see if any planet production is greater than 100, or possibly negative // if so we set the planet to the default values and report it to the player. // // There has got to be a better way, but at this time I am not sure how to do it. // Off the top of my head if we could sort the data passed in, in order of planets we could check before we do the writes // This would save us from having to run through the database a second time checking our work. // This should patch the game from being hacked with planet Hack. $request = Request::createFromGlobals(); $result = $db->Execute("SELECT ship_id, team FROM {$db->prefix}ships WHERE email = ?;", array($_SESSION['username'])); \Tki\Db::LogDbErrors($pdo_db, $result, __LINE__, __FILE__); $ship_id = $result->fields['ship_id']; $planet_hack = false; $hack_id = 0x0; $hack_count = array(0, 0, 0); echo str_replace("[here]", "<a href='planet_report.php?preptype=2'>" . $langvars['l_here'] . "</a>", $langvars['l_pr_click_return_prod']); echo "<br><br>"; while (list($commod_type, $valarray) = each($prodpercentarray)) { if ($commod_type != "team_id" && $commod_type != "ship_id") { while (list($planet_id, $prodpercent) = each($valarray)) { if ($commod_type == "prod_ore" || $commod_type == "prod_organics" || $commod_type == "prod_goods" || $commod_type == "prod_energy" || $commod_type == "prod_fighters" || $commod_type == "prod_torp") { $res = $db->Execute("SELECT COUNT(*) AS owned_planet FROM {$db->prefix}planets WHERE planet_id = ? AND owner = ?;", array($planet_id, $ship_id)); \Tki\Db::LogDbErrors($pdo_db, $res, __LINE__, __FILE__); if ($res->fields['owned_planet'] == 0) { $ip = $request->query->get('REMOTE_ADDR'); $planet_hack = true; $hack_id = 0x18582; $hack_count[0]++; \Tki\AdminLog::writeLog($pdo_db, LOG_ADMIN_PLANETCHEAT, "{$hack_id}|{$ip}|{$planet_id}|{$ship_id}|commod_type={$commod_type}"); } $resx = $db->Execute("UPDATE {$db->prefix}planets SET {$commod_type} = ? WHERE planet_id = ? AND owner = ?;", array($prodpercent, $planet_id, $ship_id)); \Tki\Db::LogDbErrors($pdo_db, $resx, __LINE__, __FILE__); $resy = $db->Execute("UPDATE {$db->prefix}planets SET sells='N' WHERE planet_id = ? AND owner = ?;", array($planet_id, $ship_id)); \Tki\Db::LogDbErrors($pdo_db, $resy, __LINE__, __FILE__); $resz = $db->Execute("UPDATE {$db->prefix}planets SET team=0 WHERE planet_id = ? AND owner = ?;", array($planet_id, $ship_id)); \Tki\Db::LogDbErrors($pdo_db, $resz, __LINE__, __FILE__); } elseif ($commod_type == "sells") { $resx = $db->Execute("UPDATE {$db->prefix}planets SET sells='Y' WHERE planet_id = ? AND owner = ?;", array($prodpercent, $ship_id)); \Tki\Db::LogDbErrors($pdo_db, $resx, __LINE__, __FILE__); } elseif ($commod_type == "team") { // Compare entered team_id and one in the db, if different then use one from db $res = $db->Execute("SELECT {$db->prefix}ships.team as owner FROM {$db->prefix}ships, {$db->prefix}planets WHERE ( {$db->prefix}ships.ship_id = {$db->prefix}planets.owner ) AND ( {$db->prefix}planets.planet_id = ?);", array($prodpercent)); \Tki\Db::LogDbErrors($pdo_db, $res, __LINE__, __FILE__); if ($res) { $team_id = $res->fields['owner']; } else { $team_id = 0; } $resx = $db->Execute("UPDATE {$db->prefix}planets SET team = ? WHERE planet_id = ? AND owner = ?;", array($team_id, $prodpercent, $ship_id)); \Tki\Db::LogDbErrors($pdo_db, $resx, __LINE__, __FILE__); if (array_key_exists("team_id", $prodpercentarray) === true && $prodpercentarray['team_id'] != $team_id) { // They are different so send admin a log $ip = $request->query->get('REMOTE_ADDR'); $planet_hack = true; $hack_id = 0x18531; $hack_count[1]++; \Tki\AdminLog::writeLog($pdo_db, LOG_ADMIN_PLANETCHEAT, "{$hack_id}|{$ip}|{$prodpercent}|{$ship_id}|{$prodpercentarray['team_id']} not {$team_id}"); } } else { $ip = $request->query->get('REMOTE_ADDR'); $planet_hack = true; $hack_id = 0x18598; $hack_count[2]++; \Tki\AdminLog::writeLog($pdo_db, LOG_ADMIN_PLANETCHEAT, "{$hack_id}|{$ip}|{$planet_id}|{$ship_id}|commod_type={$commod_type}"); } } } } if ($planet_hack) { $serial_data = serialize($prodpercentarray); \Tki\AdminLog::writeLog($pdo_db, LOG_ADMIN_PLANETCHEAT + 1000, "{$ship_id}|{$serial_data}"); printf("<font color=\"red\"><strong>Your Cheat has been logged to the admin (%08x) [%02X:%02X:%02X].</strong></font><br>\n", (int) $hack_id, (int) $hack_count[0], (int) $hack_count[1], (int) $hack_count[2]); } echo "<br>"; echo $langvars['l_pr_prod_updated'] . "<br><br>"; echo $langvars['l_pr_checking_values'] . "<br><br>"; $res = $db->Execute("SELECT * FROM {$db->prefix}planets WHERE owner = ? ORDER BY sector_id;", array($ship_id)); \Tki\Db::LogDbErrors($pdo_db, $res, __LINE__, __FILE__); $i = 0; $planet = array(); $planets = array(); if ($res) { while (!$res->EOF) { $planets[$i] = $res->fields; $i++; $res->MoveNext(); } foreach ($planets as $planet) { if (empty($planet['name'])) { $planet['name'] = $langvars['l_unnamed']; } if ($planet['prod_ore'] < 0) { $planet['prod_ore'] = 110; } if ($planet['prod_organics'] < 0) { $planet['prod_organics'] = 110; } if ($planet['prod_goods'] < 0) { $planet['prod_goods'] = 110; } if ($planet['prod_energy'] < 0) { $planet['prod_energy'] = 110; } if ($planet['prod_fighters'] < 0) { $planet['prod_fighters'] = 110; } if ($planet['prod_torp'] < 0) { $planet['prod_torp'] = 110; } if ($planet['prod_ore'] + $planet['prod_organics'] + $planet['prod_goods'] + $planet['prod_energy'] + $planet['prod_fighters'] + $planet['prod_torp'] > 100) { $temp1 = str_replace("[planet_name]", $planet['name'], $langvars['l_pr_value_reset']); $temp2 = str_replace("[sector_id]", $planet['sector_id'], $temp1); echo $temp2 . "<br>"; $resa = $db->Execute("UPDATE {$db->prefix}planets SET prod_ore = ? WHERE planet_id = ?;", array($tkireg->default_prod_ore, $planet['planet_id'])); \Tki\Db::LogDbErrors($pdo_db, $resa, __LINE__, __FILE__); $resb = $db->Execute("UPDATE {$db->prefix}planets SET prod_organics = ? WHERE planet_id = ?;", array($tkireg->default_prod_organics, $planet['planet_id'])); \Tki\Db::LogDbErrors($pdo_db, $resb, __LINE__, __FILE__); $resc = $db->Execute("UPDATE {$db->prefix}planets SET prod_goods = ? WHERE planet_id = ?;", array($tkireg->default_prod_goods, $planet['planet_id'])); \Tki\Db::LogDbErrors($pdo_db, $resc, __LINE__, __FILE__); $resd = $db->Execute("UPDATE {$db->prefix}planets SET prod_energy = ? WHERE planet_id = ?;", array($tkireg->default_prod_energy, $planet['planet_id'])); \Tki\Db::LogDbErrors($pdo_db, $resd, __LINE__, __FILE__); $rese = $db->Execute("UPDATE {$db->prefix}planets SET prod_fighters = ? WHERE planet_id = ?;", array($tkireg->default_prod_fighters, $planet['planet_id'])); \Tki\Db::LogDbErrors($pdo_db, $rese, __LINE__, __FILE__); $resf = $db->Execute("UPDATE {$db->prefix}planets SET prod_torp = ? WHERE planet_id = ?;", array($tkireg->default_prod_torp, $planet['planet_id'])); \Tki\Db::LogDbErrors($pdo_db, $resf, __LINE__, __FILE__); } } } }
public static function planetCombat(\PDO $pdo_db, \ADODB_mysqli $db, string $lang, array $langvars, Reg $tkireg, Smarty $template, array $playerinfo, $ownerinfo, $planetinfo) { if ($playerinfo['turns'] < 1) { echo $langvars['l_cmb_atleastoneturn'] . "<br><br>"; \Tki\Text::gotomain($pdo_db, $lang); \Tki\Footer::display($pdo_db, $lang, $tkireg, $template); die; } // Planetary defense system calculation $planetbeams = \Tki\CalcLevels::planetBeams($pdo_db, $ownerinfo, $tkireg->base_defense, $planetinfo); $planetfighters = $planetinfo['fighters']; $planetshields = \Tki\CalcLevels::planetShields($pdo_db, $ownerinfo, $tkireg->base_defense, $planetinfo); $planettorps = \Tki\CalcLevels::planetTorps($pdo_db, $ownerinfo, $planetinfo, $tkireg); // Attacking ship calculations $attackerbeams = \Tki\CalcLevels::beams($playerinfo['beams'], $tkireg); $attackerfighters = $playerinfo['ship_fighters']; $attackershields = \Tki\CalcLevels::shields($playerinfo['shields'], $tkireg); $attackertorps = round(pow($tkireg->level_factor, $playerinfo['torp_launchers'])) * 2; $attackerarmor = $playerinfo['armor_pts']; // Now modify player beams, shields and torpedos on available materiel $tkireg->start_energy = $playerinfo['ship_energy']; // Beams if ($attackerbeams > $playerinfo['ship_energy']) { $attackerbeams = $playerinfo['ship_energy']; } $playerinfo['ship_energy'] = $playerinfo['ship_energy'] - $attackerbeams; // Shields if ($attackershields > $playerinfo['ship_energy']) { $attackershields = $playerinfo['ship_energy']; } $playerinfo['ship_energy'] = $playerinfo['ship_energy'] - $attackershields; // Torpedos if ($attackertorps > $playerinfo['torps']) { $attackertorps = $playerinfo['torps']; } $playerinfo['torps'] = $playerinfo['torps'] - $attackertorps; // Setup torp damage rate for both Planet and Ship $planettorpdamage = $tkireg->torp_dmg_rate * $planettorps; $attackertorpdamage = $tkireg->torp_dmg_rate * $attackertorps; echo "\n <center>\n <hr>\n <table width='75%' border='0'>\n <tr align='center'>\n <td width='9%' height='27'></td>\n <td width='12%' height='27'><font color='white'>" . $langvars['l_cmb_beams'] . "</font></td>\n <td width='17%' height='27'><font color='white'>" . $langvars['l_cmb_fighters'] . "</font></td>\n <td width='18%' height='27'><font color='white'>" . $langvars['l_cmb_shields'] . "</font></td>\n <td width='11%' height='27'><font color='white'>" . $langvars['l_cmb_torps'] . "</font></td>\n <td width='22%' height='27'><font color='white'>" . $langvars['l_cmb_torpdamage'] . "</font></td>\n <td width='11%' height='27'><font color='white'>" . $langvars['l_cmb_armor'] . "</font></td>\n </tr>\n <tr align='center'>\n <td width='9%'> <font color='red'>" . $langvars['l_cmb_you'] . "</td>\n <td width='12%'><font color='red'><strong>" . $attackerbeams . "</strong></font></td>\n <td width='17%'><font color='red'><strong>" . $attackerfighters . "</strong></font></td>\n <td width='18%'><font color='red'><strong>" . $attackershields . "</strong></font></td>\n <td width='11%'><font color='red'><strong>" . $attackertorps . "</strong></font></td>\n <td width='22%'><font color='red'><strong>" . $attackertorpdamage . "</strong></font></td>\n <td width='11%'><font color='red'><strong>" . $attackerarmor . "</strong></font></td>\n </tr>\n <tr align='center'>\n <td width='9%'> <font color='#6098F8'>" . $langvars['l_cmb_planet'] . "</font></td>\n <td width='12%'><font color='#6098F8'><strong>" . $planetbeams . "</strong></font></td>\n <td width='17%'><font color='#6098F8'><strong>" . $planetfighters . "</strong></font></td>\n <td width='18%'><font color='#6098F8'><strong>" . $planetshields . "</strong></font></td>\n <td width='11%'><font color='#6098F8'><strong>" . $planettorps . "</strong></font></td>\n <td width='22%'><font color='#6098F8'><strong>" . $planettorpdamage . "</strong></font></td>\n <td width='11%'><font color='#6098F8'><strong>N/A</strong></font></td>\n </tr>\n </table>\n <hr>\n </center>\n "; // Begin actual combat calculations echo "<br><center><strong><font size='+2'>" . $langvars['l_cmb_combatflow'] . "</font></strong><br><br>\n"; echo "<table width='75%' border='0'><tr align='center'><td><font color='red'>" . $langvars['l_cmb_you'] . "</font></td><td><font color='#6098F8'>" . $langvars['l_cmb_defender'] . "</font></td>\n"; echo "<tr align='center'><td><font color='red'><strong>" . $langvars['l_cmb_attackingplanet'] . " " . $playerinfo['sector'] . "</strong></font></td><td></td>"; echo "<tr align='center'><td><font color='red'><strong>" . $langvars['l_cmb_youfireyourbeams'] . "</strong></font></td><td></td>\n"; if ($planetfighters > 0 && $attackerbeams > 0) { if ($attackerbeams > $planetfighters) { $langvars['l_cmb_defenselost'] = str_replace("[cmb_planetfighters]", $planetfighters, $langvars['l_cmb_defenselost']); echo "<tr align='center'><td></td><td><font color='#6098F8'><strong>" . $langvars['l_cmb_defenselost'] . "</strong></font>"; $attackerbeams = $attackerbeams - $planetfighters; $planetfighters = 0; } else { $langvars['l_cmb_defenselost2'] = str_replace("[cmb_attackerbeams]", $attackerbeams, $langvars['l_cmb_defenselost2']); $planetfighters = $planetfighters - $attackerbeams; echo "<tr align='center'><td></td><td><font color='#6098F8'><strong>" . $langvars['l_cmb_defenselost2'] . "</strong></font>"; $attackerbeams = 0; } } if ($attackerfighters > 0 && $planetbeams > 0) { // If there are more beams on the planet than attacker has fighters if ($planetbeams > round($attackerfighters / 2)) { // Half the attacker fighters $temp = round($attackerfighters / 2); // Attacker loses half his fighters $lost = $attackerfighters - $temp; // Set attacker fighters to 1/2 it's original value $attackerfighters = $temp; // Subtract half the attacker fighters from available planetary beams $planetbeams = $planetbeams - $lost; $langvars['l_cmb_planetarybeams'] = str_replace("[cmb_temp]", $temp, $langvars['l_cmb_planetarybeams']); echo "<tr align='center'><td><font color='red'><strong>" . $langvars['l_cmb_planetarybeams'] . "</strong></font><td></td>"; } else { $langvars['l_cmb_planetarybeams2'] = str_replace("[cmb_planetbeams]", $planetbeams, $langvars['l_cmb_planetarybeams2']); $attackerfighters = $attackerfighters - $planetbeams; echo "<tr align='center'><td><font color='red'><strong>" . $langvars['l_cmb_planetarybeams2'] . "</strong></font><td></td>"; $planetbeams = 0; } } if ($attackerbeams > 0) { if ($attackerbeams > $planetshields) { $attackerbeams = $attackerbeams - $planetshields; $planetshields = 0; echo "<tr align='center'><td><font color='red'><strong>" . $langvars['l_cmb_youdestroyedplanetshields'] . "</font></strong><td></td>"; } else { $langvars['l_cmb_beamsexhausted'] = str_replace("[cmb_attackerbeams]", $attackerbeams, $langvars['l_cmb_beamsexhausted']); echo "<tr align='center'><td><font color='red'><strong>" . $langvars['l_cmb_beamsexhausted'] . "</font></strong><td></td>"; $planetshields = $planetshields - $attackerbeams; $attackerbeams = 0; } } if ($planetbeams > 0) { if ($planetbeams > $attackershields) { $planetbeams = $planetbeams - $attackershields; $attackershields = 0; echo "<tr align='center'><td></td><td><font color='#6098F8'><strong>" . $langvars['l_cmb_breachedyourshields'] . "</font></strong></td>"; } else { $attackershields = $attackershields - $planetbeams; $langvars['l_cmb_destroyedyourshields'] = str_replace("[cmb_planetbeams]", $planetbeams, $langvars['l_cmb_destroyedyourshields']); echo "<tr align='center'><td></td><font color='#6098F8'><strong>" . $langvars['l_cmb_destroyedyourshields'] . "</font></strong></td>"; $planetbeams = 0; } } if ($planetbeams > 0) { if ($planetbeams > $attackerarmor) { $attackerarmor = 0; echo "<tr align='center'><td></td><td><font color='#6098F8'><strong>" . $langvars['l_cmb_breachedyourarmor'] . "</strong></font></td>"; } else { $attackerarmor = $attackerarmor - $planetbeams; $langvars['l_cmb_destroyedyourarmor'] = str_replace("[cmb_planetbeams]", $planetbeams, $langvars['l_cmb_destroyedyourarmor']); echo "<tr align='center'><td></td><td><font color='#6098F8'><strong>" . $langvars['l_cmb_destroyedyourarmor'] . "</font></strong></td>"; } } echo "<tr align='center'><td><font color='YELLOW'><strong>" . $langvars['l_cmb_torpedoexchangephase'] . "</strong></font></td><td><strong><font color='YELLOW'>" . $langvars['l_cmb_torpedoexchangephase'] . "</strong></font></td><br>"; if ($planetfighters > 0 && $attackertorpdamage > 0) { if ($attackertorpdamage > $planetfighters) { $langvars['l_cmb_nofightersleft'] = str_replace("[cmb_planetfighters]", $planetfighters, $langvars['l_cmb_nofightersleft']); echo "<tr align='center'><td><font color='red'><strong>" . $langvars['l_cmb_nofightersleft'] . "</font></strong></td><td></td>"; $attackertorpdamage = $attackertorpdamage - $planetfighters; $planetfighters = 0; } else { $planetfighters = $planetfighters - $attackertorpdamage; $langvars['l_cmb_youdestroyfighters'] = str_replace("[cmb_attackertorpdamage]", $attackertorpdamage, $langvars['l_cmb_youdestroyfighters']); echo "<tr align='center'><td><font color='red'><strong>" . $langvars['l_cmb_youdestroyfighters'] . "</font></strong></td><td></td>"; $attackertorpdamage = 0; } } if ($attackerfighters > 0 && $planettorpdamage > 0) { if ($planettorpdamage > round($attackerfighters / 2)) { $temp = round($attackerfighters / 2); $lost = $attackerfighters - $temp; $attackerfighters = $temp; $planettorpdamage = $planettorpdamage - $lost; $langvars['l_cmb_planettorpsdestroy'] = str_replace("[cmb_temp]", $temp, $langvars['l_cmb_planettorpsdestroy']); echo "<tr align='center'><td></td><td><font color='red'><strong>" . $langvars['l_cmb_planettorpsdestroy'] . "</strong></font></td>"; } else { $attackerfighters = $attackerfighters - $planettorpdamage; $langvars['l_cmb_planettorpsdestroy2'] = str_replace("[cmb_planettorpdamage]", $planettorpdamage, $langvars['l_cmb_planettorpsdestroy2']); echo "<tr align='center'><td></td><td><font color='red'><strong>" . $langvars['l_cmb_planettorpsdestroy2'] . "</strong></font></td>"; $planettorpdamage = 0; } } if ($planettorpdamage > 0) { if ($planettorpdamage > $attackerarmor) { $attackerarmor = 0; echo "<tr align='center'><td><font color='red'><strong>" . $langvars['l_cmb_torpsbreachedyourarmor'] . "</strong></font></td><td></td>"; } else { $attackerarmor = $attackerarmor - $planettorpdamage; $langvars['l_cmb_planettorpsdestroy3'] = str_replace("[cmb_planettorpdamage]", $planettorpdamage, $langvars['l_cmb_planettorpsdestroy3']); echo "<tr align='center'><td><font color='red'><strong>" . $langvars['l_cmb_planettorpsdestroy3'] . "</strong></font></td><td></td>"; } } if ($attackertorpdamage > 0 && $planetfighters > 0) { $planetfighters = $planetfighters - $attackertorpdamage; if ($planetfighters < 0) { $planetfighters = 0; echo "<tr align='center'><td><font color='red'><strong>" . $langvars['l_cmb_youdestroyedallfighters'] . "</strong></font></td><td></td>"; } else { $langvars['l_cmb_youdestroyplanetfighters'] = str_replace("[cmb_attackertorpdamage]", $attackertorpdamage, $langvars['l_cmb_youdestroyplanetfighters']); echo "<tr align='center'><td><font color='red'><strong>" . $langvars['l_cmb_youdestroyplanetfighters'] . "</strong></font></td><td></td>"; } } echo "<tr align='center'><td><font color='YELLOW'><strong>" . $langvars['l_cmb_fightercombatphase'] . "</strong></font></td><td><strong><font color='YELLOW'>" . $langvars['l_cmb_fightercombatphase'] . "</strong></font></td><br>"; if ($attackerfighters > 0 && $planetfighters > 0) { if ($attackerfighters > $planetfighters) { echo "<tr align='center'><td><font color='red'><strong>" . $langvars['l_cmb_youdestroyedallfighters2'] . "</strong></font></td><td></td>"; $tempplanetfighters = 0; } else { $langvars['l_cmb_youdestroyplanetfighters2'] = str_replace("[cmb_attackerfighters]", $attackerfighters, $langvars['l_cmb_youdestroyplanetfighters2']); echo "<tr align='center'><td><font color='red'><strong>" . $langvars['l_cmb_youdestroyplanetfighters2'] . "</strong></font></td><td></td>"; $tempplanetfighters = $planetfighters - $attackerfighters; } if ($planetfighters > $attackerfighters) { echo "<tr align='center'><td><font color='red'><strong>" . $langvars['l_cmb_allyourfightersdestroyed'] . "</strong></font></td><td></td>"; $tempplayfighters = 0; } else { $tempplayfighters = $attackerfighters - $planetfighters; $langvars['l_cmb_fightertofighterlost'] = str_replace("[cmb_planetfighters]", $planetfighters, $langvars['l_cmb_fightertofighterlost']); echo "<tr align='center'><td><font color='red'><strong>" . $langvars['l_cmb_fightertofighterlost'] . "</strong></font></td><td></td>"; } $attackerfighters = $tempplayfighters; $planetfighters = $tempplanetfighters; } if ($attackerfighters > 0 && $planetshields > 0) { if ($attackerfighters > $planetshields) { $attackerfighters = $attackerfighters - round($planetshields / 2); echo "<tr align='center'><td><font color='red'><strong>" . $langvars['l_cmb_youbreachedplanetshields'] . "</strong></font></td><td></td>"; $planetshields = 0; } else { $langvars['l_cmb_shieldsremainup'] = str_replace("[cmb_attackerfighters]", $attackerfighters, $langvars['l_cmb_shieldsremainup']); echo "<tr align='center'><td></td><font color='#6098F8'><strong>" . $langvars['l_cmb_shieldsremainup'] . "</strong></font></td>"; $planetshields = $planetshields - $attackerfighters; } } if ($planetfighters > 0) { if ($planetfighters > $attackerarmor) { $attackerarmor = 0; echo "<tr align='center'><td><font color='red'><strong>" . $langvars['l_cmb_fighterswarm'] . "</strong></font></td><td></td>"; } else { $attackerarmor = $attackerarmor - $planetfighters; echo "<tr align='center'><td><font color='red'><strong>" . $langvars['l_cmb_swarmandrepel'] . "</strong></font></td><td></td>"; } } echo "</table></center>\n"; // Send each docked ship in sequence to attack agressor $result4 = $db->Execute("SELECT * FROM {$db->prefix}ships WHERE planet_id = ? AND on_planet = 'Y'", array($planetinfo['planet_id'])); \Tki\Db::LogDbErrors($pdo_db, $result4, __LINE__, __FILE__); $shipsonplanet = $result4->RecordCount(); if ($shipsonplanet > 0) { $langvars['l_cmb_shipdock'] = str_replace("[cmb_shipsonplanet]", $shipsonplanet, $langvars['l_cmb_shipdock']); echo "<br><br><center>" . $langvars['l_cmb_shipdock'] . "<br>" . $langvars['l_cmb_engshiptoshipcombat'] . "</center><br><br>\n"; while (!$result4->EOF) { $onplanet = $result4->fields; if ($attackerfighters < 0) { $attackerfighters = 0; } if ($attackertorps < 0) { $attackertorps = 0; } if ($attackershields < 0) { $attackershields = 0; } if ($attackerbeams < 0) { $attackerbeams = 0; } if ($attackerarmor < 1) { break; } echo "<br>-" . $onplanet['ship_name'] . " " . $langvars['l_cmb_approachattackvector'] . "-<br>"; \Tki\Combat::shipToShip($pdo_db, $db, $langvars, $onplanet['ship_id'], $tkireg, $playerinfo, $attackerbeams, $attackerfighters, $attackershields, $attackertorps, $attackerarmor, $attackertorpdamage); $result4->MoveNext(); } } else { echo "<br><br><center>" . $langvars['l_cmb_noshipsdocked'] . "</center><br><br>\n"; } if ($attackerarmor < 1) { $free_ore = round($playerinfo['ship_ore'] / 2); $free_organics = round($playerinfo['ship_organics'] / 2); $free_goods = round($playerinfo['ship_goods'] / 2); $ship_value = $tkireg->upgrade_cost * (round(pow($tkireg->upgrade_factor, $playerinfo['hull'])) + round(pow($tkireg->upgrade_factor, $playerinfo['engines'])) + round(pow($tkireg->upgrade_factor, $playerinfo['power'])) + round(pow($tkireg->upgrade_factor, $playerinfo['computer'])) + round(pow($tkireg->upgrade_factor, $playerinfo['sensors'])) + round(pow($tkireg->upgrade_factor, $playerinfo['beams'])) + round(pow($tkireg->upgrade_factor, $playerinfo['torp_launchers'])) + round(pow($tkireg->upgrade_factor, $playerinfo['shields'])) + round(pow($tkireg->upgrade_factor, $playerinfo['armor'])) + round(pow($tkireg->upgrade_factor, $playerinfo['cloak']))); $ship_salvage_rate = random_int(0, 10); $ship_salvage = $ship_value * $ship_salvage_rate / 100; echo "<br><center><font size='+2' COLOR='red'><strong>" . $langvars['l_cmb_yourshipdestroyed'] . "</font></strong></center><br>"; if ($playerinfo['dev_escapepod'] == "Y") { echo "<center><font color='white'>" . $langvars['l_cmb_escapepod'] . "</font></center><br><br>"; $resx = $db->Execute("UPDATE {$db->prefix}ships SET hull=0,engines=0,power=0,sensors=0,computer=0,beams=0,torp_launchers=0,torps=0,armor=0,armor_pts=100,cloak=0,shields=0,sector=0,ship_organics=0,ship_ore=0,ship_goods=0,ship_energy = ?,ship_colonists=0,ship_fighters=100,dev_warpedit=0,dev_genesis=0,dev_beacon=0,dev_emerwarp=0,dev_escapepod='N',dev_fuelscoop='N',dev_minedeflector=0,on_planet='N',dev_lssd='N' WHERE ship_id = ?;", array($tkireg->start_energy, $playerinfo['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $resx, __LINE__, __FILE__); \Tki\Bounty::collect($pdo_db, $langvars, $planetinfo['owner'], $playerinfo['ship_id']); } else { \Tki\Character::kill($pdo_db, $playerinfo['ship_id'], $langvars, $tkireg, false); \Tki\Bounty::collect($pdo_db, $langvars, $planetinfo['owner'], $playerinfo['ship_id']); } } else { $free_ore = 0; $free_goods = 0; $free_organics = 0; $ship_salvage_rate = 0; $ship_salvage = 0; $planetrating = $ownerinfo['hull'] + $ownerinfo['engines'] + $ownerinfo['computer'] + $ownerinfo['beams'] + $ownerinfo['torp_launchers'] + $ownerinfo['shields'] + $ownerinfo['armor']; if ($ownerinfo['rating'] != 0) { $rating_change = $ownerinfo['rating'] / abs($ownerinfo['rating']) * $planetrating * 10; } else { $rating_change = -100; } echo "<center><br><strong><font size='+2'>" . $langvars['l_cmb_finalcombatstats'] . "</font></strong><br><br>"; $fighters_lost = $playerinfo['ship_fighters'] - $attackerfighters; $langvars['l_cmb_youlostfighters'] = str_replace("[cmb_fighters_lost]", $fighters_lost, $langvars['l_cmb_youlostfighters']); $langvars['l_cmb_youlostfighters'] = str_replace("[cmb_playerinfo_ship_fighters]", $playerinfo['ship_fighters'], $langvars['l_cmb_youlostfighters']); echo $langvars['l_cmb_youlostfighters'] . "<br>"; $armor_lost = $playerinfo['armor_pts'] - $attackerarmor; $langvars['l_cmb_youlostarmorpoints'] = str_replace("[cmb_armor_lost]", $armor_lost, $langvars['l_cmb_youlostarmorpoints']); $langvars['l_cmb_youlostarmorpoints'] = str_replace("[cmb_playerinfo_armor_pts]", $playerinfo['armor_pts'], $langvars['l_cmb_youlostarmorpoints']); $langvars['l_cmb_youlostarmorpoints'] = str_replace("[cmb_attackerarmor]", $attackerarmor, $langvars['l_cmb_youlostarmorpoints']); echo $langvars['l_cmb_youlostarmorpoints'] . "<br>"; $energy = $playerinfo['ship_energy']; $energy_lost = $tkireg->start_energy - $playerinfo['ship_energy']; $langvars['l_cmb_energyused'] = str_replace("[cmb_energy_lost]", $energy_lost, $langvars['l_cmb_energyused']); $langvars['l_cmb_energyused'] = str_replace("[cmb_playerinfo_ship_energy]", $tkireg->start_energy, $langvars['l_cmb_energyused']); echo $langvars['l_cmb_energyused'] . "<br></center>"; $resx = $db->Execute("UPDATE {$db->prefix}ships SET ship_energy = ?, ship_fighters = ship_fighters - ?, torps = torps - ?, armor_pts = armor_pts - ?, rating = rating - ? WHERE ship_id = ?;", array($energy, $fighters_lost, $attackertorps, $armor_lost, $rating_change, $playerinfo['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $resx, __LINE__, __FILE__); } $result4 = $db->Execute("SELECT * FROM {$db->prefix}ships WHERE planet_id = ? AND on_planet = 'Y';", array($planetinfo['planet_id'])); \Tki\Db::LogDbErrors($pdo_db, $result4, __LINE__, __FILE__); $shipsonplanet = $result4->RecordCount(); if ($planetshields < 1 && $planetfighters < 1 && $attackerarmor > 0 && $shipsonplanet == 0) { echo "<br><br><center><font color='GREEN'><strong>" . $langvars['l_cmb_planetdefeated'] . "</strong></font></center><br><br>"; // Patch to stop players dumping credits for other players. $self_tech = \Tki\CalcLevels::avgTech($playerinfo); $target_tech = round(\Tki\CalcLevels::avgTech($ownerinfo)); $roll = random_int(0, (int) $target_tech); if ($roll > $self_tech) { // Reset Planet Assets. $sql = "UPDATE {$db->prefix}planets "; $sql .= "SET organics = '0', ore = '0', goods = '0', energy = '0', colonists = '2', credits = '0', fighters = '0', torps = '0', team = '0', base = 'N', sells = 'N', prod_organics = '20', prod_ore = '20', prod_goods = '20', prod_energy = '20', prod_fighters = '10', prod_torp = '10' "; $sql .= "WHERE planet_id = ? LIMIT 1;"; $resx = $db->Execute($sql, array($planetinfo['planet_id'])); \Tki\Db::LogDbErrors($pdo_db, $resx, __LINE__, __FILE__); echo "<div style='text-align:center; font-size:18px; color:#f00;'>The planet become unstable due to not being looked after, and all life and assets have been destroyed.</div>\n"; } if ($tkireg->min_value_capture != 0) { $playerscore = \Tki\Score::updateScore($pdo_db, $playerinfo['ship_id'], $tkireg, $playerinfo); $playerscore *= $playerscore; $planetscore = $planetinfo['organics'] * $tkireg->organics_price + $planetinfo['ore'] * $tkireg->ore_price + $planetinfo['goods'] * $tkireg->goods_price + $planetinfo['energy'] * $tkireg->energy_price + $planetinfo['fighters'] * $tkireg->fighter_price + $planetinfo['torps'] * $tkireg->torpedo_price + $planetinfo['colonists'] * $tkireg->colonist_price + $planetinfo['credits']; $planetscore = $planetscore * $tkireg->min_value_capture / 100; if ($playerscore < $planetscore) { echo "<center>" . $langvars['l_cmb_citizenswanttodie'] . "</center><br><br>"; $resx = $db->Execute("DELETE FROM {$db->prefix}planets WHERE planet_id = ?;", array($planetinfo['planet_id'])); \Tki\Db::LogDbErrors($pdo_db, $resx, __LINE__, __FILE__); \Tki\PlayerLog::WriteLog($pdo_db, $ownerinfo['ship_id'], LOG_PLANET_DEFEATED_D, "{$planetinfo['name']}|{$playerinfo['sector']}|{$playerinfo['character_name']}"); \Tki\AdminLog::writeLog($pdo_db, LOG_ADMIN_PLANETDEL, "{$playerinfo['character_name']}|{$ownerinfo['character_name']}|{$playerinfo['sector']}"); \Tki\Score::updateScore($pdo_db, $ownerinfo['ship_id'], $tkireg, $playerinfo); } else { $langvars['l_cmb_youmaycapture'] = str_replace("[capture]", "<a href='planet.php?planet_id=" . $planetinfo['planet_id'] . "&command=capture'>" . $langvars['l_planet_capture1'] . "</a>", $langvars['l_cmb_youmaycapture']); echo "<center><font color=red>" . $langvars['l_cmb_youmaycapture'] . "</font></center><br><br>"; \Tki\PlayerLog::WriteLog($pdo_db, $ownerinfo['ship_id'], LOG_PLANET_DEFEATED, "{$planetinfo['name']}|{$playerinfo['sector']}|{$playerinfo['character_name']}"); \Tki\Score::updateScore($pdo_db, $ownerinfo['ship_id'], $tkireg, $playerinfo); $update7a = $db->Execute("UPDATE {$db->prefix}planets SET owner=0, fighters=0, torps=torps-?, base='N', defeated='Y' WHERE planet_id = ?;", array($planettorps, $planetinfo['planet_id'])); \Tki\Db::LogDbErrors($pdo_db, $update7a, __LINE__, __FILE__); } } else { $langvars['l_cmb_youmaycapture'] = str_replace("[capture]", "<a href='planet.php?planet_id=" . $planetinfo['planet_id'] . "&command=capture'>" . $langvars['l_planet_capture1'] . "</a>", $langvars['l_cmb_youmaycapture']); echo "<center>" . $langvars['l_cmb_youmaycapture'] . "</center><br><br>"; \Tki\PlayerLog::WriteLog($pdo_db, $ownerinfo['ship_id'], LOG_PLANET_DEFEATED, "{$planetinfo['name']}|{$playerinfo['sector']}|{$playerinfo['character_name']}"); \Tki\Score::updateScore($pdo_db, $ownerinfo['ship_id'], $tkireg, $playerinfo); $update7a = $db->Execute("UPDATE {$db->prefix}planets SET owner=0,fighters=0, torps=torps-?, base='N', defeated='Y' WHERE planet_id = ?;", array($planettorps, $planetinfo['planet_id'])); \Tki\Db::LogDbErrors($pdo_db, $update7a, __LINE__, __FILE__); } \Tki\Ownership::calc($pdo_db, $planetinfo['sector_id'], $tkireg->min_bases_to_own, $langvars); } else { echo "<br><br><center><font color='#6098F8'><strong>" . $langvars['l_cmb_planetnotdefeated'] . "</strong></font></center><br><br>"; $fighters_lost = $planetinfo['fighters'] - $planetfighters; $langvars['l_cmb_fighterloststat'] = str_replace("[cmb_fighters_lost]", $fighters_lost, $langvars['l_cmb_fighterloststat']); $langvars['l_cmb_fighterloststat'] = str_replace("[cmb_planetinfo_fighters]", $planetinfo['fighters'], $langvars['l_cmb_fighterloststat']); $langvars['l_cmb_fighterloststat'] = str_replace("[cmb_planetfighters]", $planetfighters, $langvars['l_cmb_fighterloststat']); $energy = $planetinfo['energy']; \Tki\PlayerLog::WriteLog($pdo_db, $ownerinfo['ship_id'], LOG_PLANET_NOT_DEFEATED, "{$planetinfo['name']}|{$playerinfo['sector']}|{$playerinfo['character_name']}|{$free_ore}|{$free_organics}|{$free_goods}|{$ship_salvage_rate}|{$ship_salvage}"); \Tki\Score::updateScore($pdo_db, $ownerinfo['ship_id'], $tkireg, $playerinfo); $update7b = $db->Execute("UPDATE {$db->prefix}planets SET energy = ?, fighters = fighters - ?, torps = torps - ?, ore = ore + ?, goods = goods + ?, organics = organics + ?, credits = credits + ? WHERE planet_id = ?;", array($energy, $fighters_lost, $planettorps, $free_ore, $free_goods, $free_organics, $ship_salvage, $planetinfo['planet_id'])); \Tki\Db::LogDbErrors($pdo_db, $update7b, __LINE__, __FILE__); } $update = $db->Execute("UPDATE {$db->prefix}ships SET turns = turns - 1, turns_used = turns_used + 1 WHERE ship_id = ?", array($playerinfo['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $update, __LINE__, __FILE__); }
public static function shipToShip(\PDO $pdo_db, \ADODB_mysqli $db, array $langvars, int $ship_id, Reg $tkireg, array $playerinfo, $attackerbeams, $attackerfighters, $attackershields, $attackertorps, $attackerarmor, $attackertorpdamage) { $sql = "SELECT * FROM ::prefix::ships WHERE ship_id=:ship_id"; $stmt = $pdo_db->prepare($sql); $stmt->bindParam(':ship_id', $ship_id); $stmt->execute(); $targetinfo = $stmt->fetchAll(PDO::FETCH_ASSOC); echo "<br><br>-=-=-=-=-=-=-=--<br>\n " . $langvars['l_cmb_startingstats'] . ":<br>\n <br>\n " . $langvars['l_cmb_statattackerbeams'] . ": {$attackerbeams}<br>\n " . $langvars['l_cmb_statattackerfighters'] . ": {$attackerfighters}<br>\n " . $langvars['l_cmb_statattackershields'] . ": {$attackershields}<br>\n " . $langvars['l_cmb_statattackertorps'] . ": {$attackertorps}<br>\n " . $langvars['l_cmb_statattackerarmor'] . ": {$attackerarmor}<br>\n " . $langvars['l_cmb_statattackertorpdamage'] . ": {$attackertorpdamage}<br>"; $targetbeams = \Tki\CalcLevels::beams($targetinfo['beams'], $tkireg); if ($targetbeams > $targetinfo['ship_energy']) { $targetbeams = $targetinfo['ship_energy']; } $targetinfo['ship_energy'] = $targetinfo['ship_energy'] - $targetbeams; $targetshields = \Tki\CalcLevels::shields($targetinfo['shields'], $tkireg); if ($targetshields > $targetinfo['ship_energy']) { $targetshields = $targetinfo['ship_energy']; } $targetinfo['ship_energy'] = $targetinfo['ship_energy'] - $targetshields; $targettorpnum = round(pow($tkireg->level_factor, $targetinfo['torp_launchers'])) * 2; if ($targettorpnum > $targetinfo['torps']) { $targettorpnum = $targetinfo['torps']; } $targettorpdmg = $tkireg->torp_dmg_rate * $targettorpnum; $targetarmor = $targetinfo['armor_pts']; $targetfighters = $targetinfo['ship_fighters']; echo "-->{$targetinfo['ship_name']} " . $langvars['l_cmb_isattackingyou'] . "<br><br>"; echo $langvars['l_cmb_beamexchange'] . "<br>"; if ($targetfighters > 0 && $attackerbeams > 0) { if ($attackerbeams > round($targetfighters / 2)) { $temp = round($targetfighters / 2); $lost = $targetfighters - $temp; $targetfighters = $temp; $attackerbeams = $attackerbeams - $lost; $langvars['l_cmb_beamsdestroy'] = str_replace("[cmb_lost]", $lost, $langvars['l_cmb_beamsdestroy']); echo "<-- " . $langvars['l_cmb_beamsdestroy'] . "<br>"; } else { $targetfighters = $targetfighters - $attackerbeams; $langvars['l_cmb_beamsdestroy2'] = str_replace("[cmb_attackerbeams]", $attackerbeams, $langvars['l_cmb_beamsdestroy2']); echo "--> " . $langvars['l_cmb_beamsdestroy2'] . "<br>"; $attackerbeams = 0; } } elseif ($targetfighters > 0 && $attackerbeams < 1) { echo $langvars['l_cmb_nobeamsareleft'] . "<br>"; } else { echo $langvars['l_cmb_beamshavenotarget'] . "<br>"; } if ($attackerfighters > 0 && $targetbeams > 0) { if ($targetbeams > round($attackerfighters / 2)) { $temp = round($attackerfighters / 2); $lost = $attackerfighters - $temp; $attackerfighters = $temp; $targetbeams = $targetbeams - $lost; $langvars['l_cmb_fighterdestroyedbybeams'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_fighterdestroyedbybeams']); $langvars['l_cmb_fighterdestroyedbybeams'] = str_replace("[cmb_lost]", $lost, $langvars['l_cmb_fighterdestroyedbybeams']); echo "--> " . $langvars['l_cmb_fighterdestroyedbybeams'] . "<br>"; } else { $attackerfighters = $attackerfighters - $targetbeams; $langvars['l_cmb_beamsdestroystillhave'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_beamsdestroystillhave']); $langvars['l_cmb_beamsdestroystillhave'] = str_replace("[cmb_targetbeams]", $targetbeams, $langvars['l_cmb_beamsdestroystillhave']); $langvars['l_cmb_beamsdestroystillhave'] = str_replace("[cmb_attackerfighters]", $attackerfighters, $langvars['l_cmb_beamsdestroystillhave']); echo "<-- " . $langvars['l_cmb_beamsdestroystillhave'] . "<br>"; $targetbeams = 0; } } elseif ($attackerfighters > 0 && $targetbeams < 1) { echo $langvars['l_cmb_fighterunhindered'] . "<br>"; } else { echo $langvars['l_cmb_youhavenofightersleft'] . "<br>"; } if ($attackerbeams > 0) { if ($attackerbeams > $targetshields) { $attackerbeams = $attackerbeams - $targetshields; $langvars['l_cmb_breachedsomeshields'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_breachedsomeshields']); echo "<-- " . $langvars['l_cmb_breachedsomeshields'] . "<br>"; } else { $langvars['l_cmb_shieldsarehitbybeams'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_shieldsarehitbybeams']); $langvars['l_cmb_shieldsarehitbybeams'] = str_replace("[cmb_attackerbeams]", $attackerbeams, $langvars['l_cmb_shieldsarehitbybeams']); echo $langvars['l_cmb_shieldsarehitbybeams'] . "<br>"; $attackerbeams = 0; } } else { $langvars['l_cmb_nobeamslefttoattack'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_nobeamslefttoattack']); echo $langvars['l_cmb_nobeamslefttoattack'] . "<br>"; } if ($targetbeams > 0) { if ($targetbeams > $attackershields) { $targetbeams = $targetbeams - $attackershields; $attackershields = 0; $langvars['l_cmb_yourshieldsbreachedby'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_yourshieldsbreachedby']); echo "--> " . $langvars['l_cmb_yourshieldsbreachedby'] . "<br>"; } else { $langvars['l_cmb_yourshieldsarehit'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_yourshieldsarehit']); $langvars['l_cmb_yourshieldsarehit'] = str_replace("[cmb_targetbeams]", $targetbeams, $langvars['l_cmb_yourshieldsarehit']); echo "<-- " . $langvars['l_cmb_yourshieldsarehit'] . "<br>"; $attackershields = $attackershields - $targetbeams; $targetbeams = 0; } } else { $langvars['l_cmb_hehasnobeamslefttoattack'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_hehasnobeamslefttoattack']); echo $langvars['l_cmb_hehasnobeamslefttoattack'] . "<br>"; } if ($attackerbeams > 0) { if ($attackerbeams > $targetarmor) { $targetarmor = 0; $langvars['l_cmb_yourbeamsbreachedhim'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_yourbeamsbreachedhim']); echo "--> " . $langvars['l_cmb_yourbeamsbreachedhim'] . "<br>"; } else { $targetarmor = $targetarmor - $attackerbeams; $langvars['l_cmb_yourbeamshavedonedamage'] = str_replace("[cmb_attackerbeams]", $attackerbeams, $langvars['l_cmb_yourbeamshavedonedamage']); $langvars['l_cmb_yourbeamshavedonedamage'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_yourbeamshavedonedamage']); echo $langvars['l_cmb_yourbeamshavedonedamage'] . "<br>"; } } else { $langvars['l_cmb_nobeamstoattackarmor'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_nobeamstoattackarmor']); echo $langvars['l_cmb_nobeamstoattackarmor'] . "<br>"; } if ($targetbeams > 0) { if ($targetbeams > $attackerarmor) { $attackerarmor = 0; $langvars['l_cmb_yourarmorbreachedbybeams'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_yourarmorbreachedbybeams']); echo "--> " . $langvars['l_cmb_yourarmorbreachedbybeams'] . "<br>"; } else { $attackerarmor = $attackerarmor - $targetbeams; $langvars['l_cmb_yourarmorhitdamaged'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_yourarmorhitdamaged']); $langvars['l_cmb_yourarmorhitdamaged'] = str_replace("[cmb_targetbeams]", $targetbeams, $langvars['l_cmb_yourarmorhitdamaged']); echo "<-- " . $langvars['l_cmb_yourarmorhitdamaged'] . "<br>"; } } else { $langvars['l_cmb_hehasnobeamslefttoattackyou'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_hehasnobeamslefttoattackyou']); echo $langvars['l_cmb_hehasnobeamslefttoattackyou'] . "<br>"; } echo "<br>" . $langvars['l_cmb_torpedoexchange'] . "<br>"; if ($targetfighters > 0 && $attackertorpdamage > 0) { if ($attackertorpdamage > round($targetfighters / 2)) { $temp = round($targetfighters / 2); $lost = $targetfighters - $temp; $targetfighters = $temp; $attackertorpdamage = $attackertorpdamage - $lost; $langvars['l_cmb_yourtorpsdestroy'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_yourtorpsdestroy']); $langvars['l_cmb_yourtorpsdestroy'] = str_replace("[cmb_lost]", $lost, $langvars['l_cmb_yourtorpsdestroy']); echo "--> " . $langvars['l_cmb_yourtorpsdestroy'] . "<br>"; } else { $targetfighters = $targetfighters - $attackertorpdamage; $langvars['l_cmb_yourtorpsdestroy2'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_yourtorpsdestroy2']); $langvars['l_cmb_yourtorpsdestroy2'] = str_replace("[cmb_attackertorpdamage]", $attackertorpdamage, $langvars['l_cmb_yourtorpsdestroy2']); echo "<-- " . $langvars['l_cmb_yourtorpsdestroy2'] . "<br>"; $attackertorpdamage = 0; } } elseif ($targetfighters > 0 && $attackertorpdamage < 1) { $langvars['l_cmb_youhavenotorpsleft'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_youhavenotorpsleft']); echo $langvars['l_cmb_youhavenotorpsleft'] . "<br>"; } else { $langvars['l_cmb_hehasnofighterleft'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_hehasnofighterleft']); echo $langvars['l_cmb_hehasnofighterleft'] . "<br>"; } if ($attackerfighters > 0 && $targettorpdmg > 0) { if ($targettorpdmg > round($attackerfighters / 2)) { $temp = round($attackerfighters / 2); $lost = $attackerfighters - $temp; $attackerfighters = $temp; $targettorpdmg = $targettorpdmg - $lost; $langvars['l_cmb_torpsdestroyyou'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_torpsdestroyyou']); $langvars['l_cmb_torpsdestroyyou'] = str_replace("[cmb_lost]", $lost, $langvars['l_cmb_torpsdestroyyou']); echo "--> " . $langvars['l_cmb_torpsdestroyyou'] . "<br>"; } else { $attackerfighters = $attackerfighters - $targettorpdmg; $langvars['l_cmb_someonedestroyedfighters'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_someonedestroyedfighters']); $langvars['l_cmb_someonedestroyedfighters'] = str_replace("[cmb_targettorpdmg]", $targettorpdmg, $langvars['l_cmb_someonedestroyedfighters']); echo "<-- " . $langvars['l_cmb_someonedestroyedfighters'] . "<br>"; $targettorpdmg = 0; } } elseif ($attackerfighters > 0 && $targettorpdmg < 1) { $langvars['l_cmb_hehasnotorpsleftforyou'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_hehasnotorpsleftforyou']); echo $langvars['l_cmb_hehasnotorpsleftforyou'] . "<br>"; } else { $langvars['l_cmb_youhavenofightersanymore'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_youhavenofightersanymore']); echo $langvars['l_cmb_youhavenofightersanymore'] . "<br>"; } if ($attackertorpdamage > 0) { if ($attackertorpdamage > $targetarmor) { $targetarmor = 0; $langvars['l_cmb_youbreachedwithtorps'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_youbreachedwithtorps']); echo "--> " . $langvars['l_cmb_youbreachedwithtorps'] . "<br>"; } else { $targetarmor = $targetarmor - $attackertorpdamage; $langvars['l_cmb_hisarmorishitbytorps'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_hisarmorishitbytorps']); $langvars['l_cmb_hisarmorishitbytorps'] = str_replace("[cmb_attackertorpdamage]", $attackertorpdamage, $langvars['l_cmb_hisarmorishitbytorps']); echo "<-- " . $langvars['l_cmb_hisarmorishitbytorps'] . "<br>"; } } else { $langvars['l_cmb_notorpslefttoattackarmor'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_notorpslefttoattackarmor']); echo $langvars['l_cmb_notorpslefttoattackarmor'] . "<br>"; } if ($targettorpdmg > 0) { if ($targettorpdmg > $attackerarmor) { $attackerarmor = 0; $langvars['l_cmb_yourarmorbreachedbytorps'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_yourarmorbreachedbytorps']); echo "<-- " . $langvars['l_cmb_yourarmorbreachedbytorps'] . "<br>"; } else { $attackerarmor = $attackerarmor - $targettorpdmg; $langvars['l_cmb_yourarmorhitdmgtorps'] = str_replace("[cmb_targettorpdmg]", $targettorpdmg, $langvars['l_cmb_yourarmorhitdmgtorps']); $langvars['l_cmb_yourarmorhitdmgtorps'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_yourarmorhitdmgtorps']); echo "<-- " . $langvars['l_cmb_yourarmorhitdmgtorps'] . "<br>"; } } else { $langvars['l_cmb_hehasnotorpsforyourarmor'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_hehasnotorpsforyourarmor']); echo $langvars['l_cmb_hehasnotorpsforyourarmor'] . "<br>"; } echo "<br>" . $langvars['l_cmb_fightersattackexchange'] . "<br>"; if ($attackerfighters > 0 && $targetfighters > 0) { if ($attackerfighters > $targetfighters) { $langvars['l_cmb_enemylostallfighters'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_enemylostallfighters']); echo "--> " . $langvars['l_cmb_enemylostallfighters'] . "<br>"; $temptargfighters = 0; } else { $langvars['l_cmb_helostsomefighters'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_helostsomefighters']); $langvars['l_cmb_helostsomefighters'] = str_replace("[cmb_attackerfighters]", $attackerfighters, $langvars['l_cmb_helostsomefighters']); echo $langvars['l_cmb_helostsomefighters'] . "<br>"; $temptargfighters = $targetfighters - $attackerfighters; } if ($targetfighters > $attackerfighters) { echo "<-- " . $langvars['l_cmb_youlostallfighters'] . "<br>"; $tempplayfighters = 0; } else { $langvars['l_cmb_youalsolostsomefighters'] = str_replace("[cmb_targetfighters]", $targetfighters, $langvars['l_cmb_youalsolostsomefighters']); echo "<-- " . $langvars['l_cmb_youalsolostsomefighters'] . "<br>"; $tempplayfighters = $attackerfighters - $targetfighters; } $attackerfighters = $tempplayfighters; $targetfighters = $temptargfighters; } elseif ($attackerfighters > 0 && $targetfighters < 1) { $langvars['l_cmb_hehasnofightersleftattack'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_hehasnofightersleftattack']); echo $langvars['l_cmb_hehasnofightersleftattack'] . "<br>"; } else { $langvars['l_cmb_younofightersattackleft'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_younofightersattackleft']); echo $langvars['l_cmb_younofightersattackleft'] . "<br>"; } if ($attackerfighters > 0) { if ($attackerfighters > $targetarmor) { $targetarmor = 0; $langvars['l_cmb_youbreachedarmorwithfighters'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_youbreachedarmorwithfighters']); echo "--> " . $langvars['l_cmb_youbreachedarmorwithfighters'] . "<br>"; } else { $targetarmor = $targetarmor - $attackerfighters; $langvars['l_cmb_youhitarmordmgfighters'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_youhitarmordmgfighters']); $langvars['l_cmb_youhitarmordmgfighters'] = str_replace("[cmb_attackerfighters]", $attackerfighters, $langvars['l_cmb_youhitarmordmgfighters']); echo "<-- " . $langvars['l_cmb_youhitarmordmgfighters'] . "<br>"; } } else { $langvars['l_cmb_youhavenofighterstoarmor'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_youhavenofighterstoarmor']); echo $langvars['l_cmb_youhavenofighterstoarmor'] . "<br>"; } if ($targetfighters > 0) { if ($targetfighters > $attackerarmor) { $attackerarmor = 0; $langvars['l_cmb_hasbreachedarmorfighters'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_hasbreachedarmorfighters']); echo "<-- " . $langvars['l_cmb_hasbreachedarmorfighters'] . "<br>"; } else { $attackerarmor = $attackerarmor - $targetfighters; $langvars['l_cmb_yourarmorishitfordmgby'] = str_replace("[cmb_targetfighters]", $targetfighters, $langvars['l_cmb_yourarmorishitfordmgby']); $langvars['l_cmb_yourarmorishitfordmgby'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_yourarmorishitfordmgby']); echo "--> " . $langvars['l_cmb_yourarmorishitfordmgby'] . "<br>"; } } else { $langvars['l_cmb_nofightersleftheforyourarmor'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_nofightersleftheforyourarmor']); echo $langvars['l_cmb_nofightersleftheforyourarmor'] . "<br>"; } if ($targetarmor < 1) { $langvars['l_cmb_hehasbeendestroyed'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_hehasbeendestroyed']); echo "<br>" . $langvars['l_cmb_hehasbeendestroyed'] . "<br>"; if ($attackerarmor > 0) { $rating_change = round($targetinfo['rating'] * $tkireg->rating_combat_factor); $free_ore = round($targetinfo['ship_ore'] / 2); $free_organics = round($targetinfo['ship_organics'] / 2); $free_goods = round($targetinfo['ship_goods'] / 2); $free_holds = \Tki\CalcLevels::holds($playerinfo['hull'], $tkireg) - $playerinfo['ship_ore'] - $playerinfo['ship_organics'] - $playerinfo['ship_goods'] - $playerinfo['ship_colonists']; if ($free_holds > $free_goods) { $salv_goods = $free_goods; $free_holds = $free_holds - $free_goods; } elseif ($free_holds > 0) { $salv_goods = $free_holds; $free_holds = 0; } else { $salv_goods = 0; } if ($free_holds > $free_ore) { $salv_ore = $free_ore; $free_holds = $free_holds - $free_ore; } elseif ($free_holds > 0) { $salv_ore = $free_holds; $free_holds = 0; } else { $salv_ore = 0; } if ($free_holds > $free_organics) { $salv_organics = $free_organics; } elseif ($free_holds > 0) { $salv_organics = $free_holds; } else { $salv_organics = 0; } $ship_value = $tkireg->upgrade_cost * (round(pow($tkireg->upgrade_factor, $targetinfo['hull'])) + round(pow($tkireg->upgrade_factor, $targetinfo['engines'])) + round(pow($tkireg->upgrade_factor, $targetinfo['power'])) + round(pow($tkireg->upgrade_factor, $targetinfo['computer'])) + round(pow($tkireg->upgrade_factor, $targetinfo['sensors'])) + round(pow($tkireg->upgrade_factor, $targetinfo['beams'])) + round(pow($tkireg->upgrade_factor, $targetinfo['torp_launchers'])) + round(pow($tkireg->upgrade_factor, $targetinfo['shields'])) + round(pow($tkireg->upgrade_factor, $targetinfo['armor'])) + round(pow($tkireg->upgrade_factor, $targetinfo['cloak']))); $ship_salvage_rate = random_int(10, 20); $ship_salvage = $ship_value * $ship_salvage_rate / 100; $langvars['l_cmb_yousalvaged'] = str_replace("[cmb_salv_ore]", $salv_ore, $langvars['l_cmb_yousalvaged']); $langvars['l_cmb_yousalvaged'] = str_replace("[cmb_salv_organics]", $salv_organics, $langvars['l_cmb_yousalvaged']); $langvars['l_cmb_yousalvaged'] = str_replace("[cmb_salv_goods]", $salv_goods, $langvars['l_cmb_yousalvaged']); $langvars['l_cmb_yousalvaged'] = str_replace("[cmb_salvage_rate]", $ship_salvage_rate, $langvars['l_cmb_yousalvaged']); $langvars['l_cmb_yousalvaged'] = str_replace("[cmb_salvage]", $ship_salvage, $langvars['l_cmb_yousalvaged']); $langvars['l_cmb_yousalvaged2'] = str_replace("[cmb_number_rating_change]", number_format(abs($rating_change), 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']), $langvars['l_cmb_yousalvaged2']); echo $langvars['l_cmb_yousalvaged'] . "<br>" . $langvars['l_cmb_yousalvaged2']; $sql = "UPDATE ::prefix::ships SET ship_ore=ship_ore+:salv_ore, ship_organics=ship_organics+:salv_organics, ship_goods=ship_goods+:salv_goods, credits=credits+:ship_salvage WHERE ship_id = :ship_id"; $stmt = $pdo_db->prepare($sql); $stmt->bindParam(':salv_ore', $salv_ore); $stmt->bindParam(':salv_organics', $salv_organics); $stmt->bindParam(':salv_goods', $salv_goods); $stmt->bindParam(':salv_salvage', $salv_salvage); $stmt->bindParam(':ship_id', $playerinfo['ship_id']); $update = $stmt->execute(); } if ($targetinfo['dev_escapepod'] == "Y") { $rating = round($targetinfo['rating'] / 2); echo $langvars['l_cmb_escapepodlaunched'] . "<br><br>"; echo "<br><br>ship_id = {$targetinfo['ship_id']}<br><br>"; $test = $db->Execute("UPDATE {$db->prefix}ships SET hull=0,engines=0,power=0,sensors=0,computer=0,beams=0,torp_launchers=0,torps=0,armor=0,armor_pts=100,cloak=0,shields=0,sector=0,ship_organics=0,ship_ore=0,ship_goods=0,ship_energy = ?,ship_colonists=0,ship_fighters=100,dev_warpedit=0,dev_genesis=0,dev_beacon=0,dev_emerwarp=0,dev_escapepod='N',dev_fuelscoop='N',dev_minedeflector=0,on_planet='N',rating = ?, dev_lssd='N' WHERE ship_id = ?;", array($tkireg->start_energy, $rating, $targetinfo['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $test, __LINE__, __FILE__); \Tki\PlayerLog::WriteLog($pdo_db, $targetinfo['ship_id'], LOG_ATTACK_LOSE, "{$playerinfo['character_name']}|Y"); \Tki\Bounty::collect($pdo_db, $langvars, $playerinfo['ship_id'], $targetinfo['ship_id']); } else { \Tki\PlayerLog::WriteLog($pdo_db, $targetinfo['ship_id'], LOG_ATTACK_LOSE, "{$playerinfo['character_name']}|N"); \Tki\Character::kill($pdo_db, $targetinfo['ship_id'], $langvars, $tkireg, false); \Tki\Bounty::collect($pdo_db, $langvars, $playerinfo['ship_id'], $targetinfo['ship_id']); } } else { $langvars['l_cmb_youdidntdestroyhim'] = str_replace("[cmb_targetinfo_ship_name]", $targetinfo['ship_name'], $langvars['l_cmb_youdidntdestroyhim']); echo $langvars['l_cmb_youdidntdestroyhim'] . "<br>"; $target_armor_lost = $targetinfo['armor_pts'] - $targetarmor; $target_fighters_lost = $targetinfo['ship_fighters'] - $targetfighters; $target_energy = $targetinfo['ship_energy']; \Tki\PlayerLog::WriteLog($pdo_db, $targetinfo['ship_id'], LOG_ATTACKED_WIN, "{$playerinfo['character_name']}|{$target_armor_lost}|{$target_fighters_lost}"); $update4 = $db->Execute("UPDATE {$db->prefix}ships SET ship_energy = ?, ship_fighters = ship_fighters - ?, armor_pts = armor_pts - ?, torps = torps - ? WHERE ship_id = ?;", array($target_energy, $target_fighters_lost, $target_armor_lost, $targettorpnum, $targetinfo['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $update4, __LINE__, __FILE__); } echo "<br>_+_+_+_+_+_+_<br>"; echo $langvars['l_cmb_shiptoshipcombatstats'] . "<br>"; echo $langvars['l_cmb_statattackerbeams'] . ": {$attackerbeams}<br>"; echo $langvars['l_cmb_statattackerfighters'] . ": {$attackerfighters}<br>"; echo $langvars['l_cmb_statattackershields'] . ": {$attackershields}<br>"; echo $langvars['l_cmb_statattackertorps'] . ": {$attackertorps}<br>"; echo $langvars['l_cmb_statattackerarmor'] . ": {$attackerarmor}<br>"; echo $langvars['l_cmb_statattackertorpdamage'] . ": {$attackertorpdamage}<br>"; echo "_+_+_+_+_+_+<br>"; }
public static function traderouteSetsettings(\ADODB_mysqli $db, \PDO $pdo_db, string $lang, Reg $tkireg, Smarty $template, array $playerinfo, $colonists, $fighters, $torps, $energy) { $langvars = \Tki\Translate::load($pdo_db, $lang, array('traderoutes', 'common', 'global_includes', 'global_funcs', 'footer', 'regional')); empty($colonists) ? $colonists = 'N' : ($colonists = 'Y'); empty($fighters) ? $fighters = 'N' : ($fighters = 'Y'); empty($torps) ? $torps = 'N' : ($torps = 'Y'); $resa = $db->Execute("UPDATE {$db->prefix}ships SET trade_colonists = ?, trade_fighters = ?, trade_torps = ?, trade_energy = ? WHERE ship_id = ?;", array($colonists, $fighters, $torps, $energy, $playerinfo['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $resa, __LINE__, __FILE__); $langvars['l_tdr_returnmenu'] = str_replace("[here]", "<a href='traderoute.php'>" . $langvars['l_here'] . "</a>", $langvars['l_tdr_returnmenu']); echo $langvars['l_tdr_globalsetsaved'] . " " . $langvars['l_tdr_returnmenu']; \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, null, $template); }
public static function ibankTransfer3(\ADODB_mysqli $db, \PDO $pdo_db, string $lang, array $langvars, array $playerinfo, string $account, int $ship_id, int $splanet_id, int $dplanet_id, $amount, Reg $tkireg, Smarty $template) { $amount = preg_replace("/[^0-9]/", '', $amount); if ($amount < 0) { $amount = 0; } if ($ship_id !== null) { if ($playerinfo['ship_id'] == $ship_id) { \TkiIbank::ibankError($pdo_db, $langvars, $langvars['l_ibank_errsendyourself'], "ibank.php?command=transfer", $lang, $tkireg, $template); } // Need to check again to prevent cheating by manual posts $stmt = $pdo_db->prepare("SELECT * FROM ::prefix::ships WHERE ship_id=:ship_id AND ship_destroyed = 'N' AND turns_used > :turns_used"); $stmt->bindParam(':ship_id', $ship_id); $stmt->bindParam(':turns_used', $tkireg->ibank_min_turns); $target = $stmt->fetch(\PDO::FETCH_ASSOC); if ($target === null) { \TkiIbank::ibankError($pdo_db, $langvars, $langvars['l_ibank_unknowntargetship'], "ibank.php?command=transfer", $lang, $tkireg, $template); } if ($target['turns_used'] < $tkireg->ibank_min_turns) { $langvars['l_ibank_min_turns3'] = str_replace("[ibank_min_turns]", $tkireg->ibank_min_turns, $langvars['l_ibank_min_turns3']); $langvars['l_ibank_min_turns3'] = str_replace("[ibank_target_char_name]", $target['character_name'], $langvars['l_ibank_min_turns3']); \TkiIbank::ibankError($pdo_db, $langvars, $langvars['l_ibank_min_turns3'], "ibank.php?command=transfer", $lang, $tkireg, $template); } if ($playerinfo['turns_used'] < $tkireg->ibank_min_turns) { $langvars['l_ibank_min_turns4'] = str_replace("[ibank_min_turns]", $tkireg->ibank_min_turns, $langvars['l_ibank_min_turns4']); \TkiIbank::ibankError($pdo_db, $langvars, $langvars['l_ibank_min_turns4'], "ibank.php?command=transfer", $lang, $tkireg, $template); } if ($tkireg->ibank_trate > 0) { $curtime = time(); $curtime -= $tkireg->ibank_trate * 60; $sql = "SELECT UNIX_TIMESTAMP(time) as time FROM ::prefix::ibank_transfers WHERE " . "UNIX_TIMESTAMP(time) > :curtime AND source_id = :source_id AND dest_id = :dest_id"; $stmt = $pdo_db->prepare($sql); $stmt->bindParam(':curtime', $curtime); $stmt->bindParam(':source_id', $playerinfo['ship_id']); $stmt->bindParam(':dest_id', $target['ship_id']); $time = $stmt->fetch(\PDO::FETCH_ASSOC); if ($time !== null) { $difftime = ($time['time'] - $curtime) / 60; $langvars['l_ibank_mustwait2'] = str_replace("[ibank_target_char_name]", $target['character_name'], $langvars['l_ibank_mustwait2']); $langvars['l_ibank_mustwait2'] = str_replace("[ibank_trate]", number_format($tkireg->ibank_trate, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']), $langvars['l_ibank_mustwait2']); $langvars['l_ibank_mustwait2'] = str_replace("[ibank_difftime]", number_format($difftime, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']), $langvars['l_ibank_mustwait2']); \TkiIbank::ibankError($pdo_db, $langvars, $langvars['l_ibank_mustwait2'], "ibank.php?command=transfer", $lang, $tkireg, $template); } } if ($amount * 1 != $amount) { \TkiIbank::ibankError($pdo_db, $langvars, $langvars['l_ibank_invalidtransferinput'], "ibank.php?command=transfer", $lang, $tkireg, $template); } if ($amount == 0) { \TkiIbank::ibankError($pdo_db, $langvars, $langvars['l_ibank_nozeroamount'], "ibank.php?command=transfer", $lang, $tkireg, $template); } if ($amount > $account['balance']) { \TkiIbank::ibankError($pdo_db, $langvars, $langvars['l_ibank_notenoughcredits'], "ibank.php?command=transfer", $lang, $tkireg, $template); } if ($tkireg->ibank_svalue != 0) { $score = \Tki\Score::updateScore($pdo_db, $playerinfo['ship_id'], $tkireg, $playerinfo); $maxtrans = $score * $score * $tkireg->ibank_svalue; if ($amount > $maxtrans) { \TkiIbank::ibankError($pdo_db, $langvars, $langvars['l_ibank_amounttoogreat'], "ibank.php?command=transfer", $lang, $tkireg, $template); } } $account['balance'] -= $amount; $amount2 = $amount * $tkireg->ibank_paymentfee; $transfer = $amount - $amount2; echo "<tr><td colspan=2 align=center valign=top>" . $langvars['l_ibank_transfersuccessful'] . "<br>---------------------------------</td></tr>" . "<tr valign=top><td colspan=2 align=center>" . number_format($transfer, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_ibank_creditsto'] . " " . $target['character_name'] . " .</tr>" . "<tr valign=top>" . "<td>" . $langvars['l_ibank_transferamount'] . " :</td><td align=right>" . number_format($amount, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " C<br>" . "<tr valign=top>" . "<td>" . $langvars['l_ibank_transferfee'] . " :</td><td align=right>" . number_format($amount2, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " C<br>" . "<tr valign=top>" . "<td>" . $langvars['l_ibank_amounttransferred'] . " :</td><td align=right>" . number_format($transfer, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " C<br>" . "<tr valign=top>" . "<td>" . $langvars['l_ibank_ibankaccount'] . " :</td><td align=right>" . number_format($account['balance'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " C<br>" . "<tr valign=bottom>" . "<td><a href='ibank.php?command=login'>" . $langvars['l_ibank_back'] . "</a></td><td align=right> <br><a href=\"main.php\">" . $langvars['l_ibank_logout'] . "</a></td>" . "</tr>"; $sql = "UPDATE {$db->prefix}ibank_accounts SET balance = balance - ? WHERE ship_id = ?"; $db->Execute($sql, array($amount, $playerinfo['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $sql, __LINE__, __FILE__); $sql = "UPDATE {$db->prefix}ibank_accounts SET balance = balance + ? WHERE ship_id = ?"; $db->Execute($sql, array($transfer, $target['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $sql, __LINE__, __FILE__); $sql = "INSERT INTO {$db->prefix}ibank_transfers VALUES (NULL, ?, ?, NOW(), ?)"; $db->Execute($sql, array($playerinfo['ship_id'], $target['ship_id'], $transfer)); \Tki\Db::LogDbErrors($pdo_db, $sql, __LINE__, __FILE__); } else { if ($splanet_id == $dplanet_id) { \TkiIbank::ibankError($pdo_db, $langvars, $langvars['l_ibank_errplanetsrcanddest'], "ibank.php?command=transfer", $lang, $tkireg, $template); } $sql = "SELECT name, credits, owner, sector_id FROM {$db->prefix}planets WHERE planet_id = ?"; $res = $db->Execute($sql, array($splanet_id)); \Tki\Db::LogDbErrors($pdo_db, $sql, __LINE__, __FILE__); if (!$res || $res->EOF) { \TkiIbank::ibankError($pdo_db, $langvars, $langvars['l_ibank_errunknownplanet'], "ibank.php?command=transfer", $lang, $tkireg, $template); } $source = $res->fields; if (empty($source['name'])) { $source['name'] = $langvars['l_ibank_unnamed']; } $sql = "SELECT name, credits, owner, sector_id FROM {$db->prefix}planets WHERE planet_id = ?"; $res = $db->Execute($sql, array($dplanet_id)); \Tki\Db::LogDbErrors($pdo_db, $sql, __LINE__, __FILE__); if (!$res || $res->EOF) { \TkiIbank::ibankError($pdo_db, $langvars, $langvars['l_ibank_errunknownplanet'], "ibank.php?command=transfer", $lang, $tkireg, $template); } $dest = $res->fields; if (empty($dest['name'])) { $dest['name'] = $langvars['l_ibank_unnamed']; } if ($source['owner'] != $playerinfo['ship_id'] || $dest['owner'] != $playerinfo['ship_id']) { \TkiIbank::ibankError($pdo_db, $langvars, $langvars['l_ibank_errnotyourplanet'], "ibank.php?command=transfer", $lang, $tkireg, $template); } if ($amount > $source['credits']) { \TkiIbank::ibankError($pdo_db, $langvars, $langvars['l_ibank_notenoughcredits2'], "ibank.php?command=transfer", $lang, $tkireg, $template); } $source['credits'] -= $amount; $amount2 = $amount * $tkireg->ibank_paymentfee; $transfer = $amount - $amount2; $dest['credits'] += $transfer; echo "<tr><td colspan=2 align=center valign=top>" . $langvars['l_ibank_transfersuccessful'] . "<br>---------------------------------</td></tr>" . "<tr valign=top><td colspan=2 align=center>" . number_format($transfer, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_ibank_ctransferredfrom'] . " " . $source['name'] . " " . $langvars['l_ibank_to'] . " " . $dest['name'] . ".</tr>" . "<tr valign=top>" . "<td>" . $langvars['l_ibank_transferamount'] . " :</td><td align=right>" . number_format($amount, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " C<br>" . "<tr valign=top>" . "<td>" . $langvars['l_ibank_transferfee'] . " :</td><td align=right>" . number_format($amount2, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " C<br>" . "<tr valign=top>" . "<td>" . $langvars['l_ibank_amounttransferred'] . " :</td><td align=right>" . number_format($transfer, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " C<br>" . "<tr valign=top>" . "<td>" . $langvars['l_ibank_srcplanet'] . " " . $source['name'] . " " . $langvars['l_ibank_in'] . " " . $source['sector_id'] . " :</td><td align=right>" . number_format($source['credits'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " C<br>" . "<tr valign=top>" . "<td>" . $langvars['l_ibank_destplanet'] . " " . $dest['name'] . " " . $langvars['l_ibank_in'] . " " . $dest['sector_id'] . " :</td><td align=right>" . number_format($dest['credits'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " C<br>" . "<tr valign=bottom>" . "<td><a href='ibank.php?command=login'>" . $langvars['l_ibank_back'] . "</a></td><td align=right> <br><a href=\"main.php\">" . $langvars['l_ibank_logout'] . "</a></td>" . "</tr>"; $sql = "UPDATE {$db->prefix}planets SET credits=credits - ? WHERE planet_id = ?"; $db->Execute($sql, array($amount, $splanet_id)); \Tki\Db::LogDbErrors($pdo_db, $sql, __LINE__, __FILE__); $sql = "UPDATE {$db->prefix}planets SET credits=credits + ? WHERE planet_id = ?"; $db->Execute($sql, array($transfer, $dplanet_id)); \Tki\Db::LogDbErrors($pdo_db, $sql, __LINE__, __FILE__); } }
public static function traderouteEngage(\ADODB_mysqli $db, \PDO $pdo_db, string $lang, int $j, array $langvars, Reg $tkireg, array $playerinfo, int $engage, array $dist, array $traderoutes, int $portfull, Smarty $template) { $traderoute = array(); $source = array(); $dest = array(); // Added below initializations, for traderoute bug $ore_buy = 0; $goods_buy = 0; $organics_buy = 0; $energy_buy = 0; $colonists_buy = null; $fighters_buy = null; $torps_buy = null; foreach ($traderoutes as $testroute) { if ($testroute['traderoute_id'] == $engage) { $traderoute = $testroute; } } if (!isset($traderoute)) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_engagenonexist'], $template); } if ($traderoute['owner'] != $playerinfo['ship_id']) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_notowntdr'], $template); } // Source check if ($traderoute['source_type'] == 'P') { // Retrieve port info here, we'll need it later anyway $result = $db->Execute("SELECT * FROM {$db->prefix}universe WHERE sector_id = ?;", array($traderoute['source_id'])); \Tki\Db::LogDbErrors($pdo_db, $result, __LINE__, __FILE__); if (!$result || $result->EOF) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_invalidspoint'], $template); } $source = $result->fields; if ($traderoute['source_id'] != $playerinfo['sector']) { $langvars['l_tdr_inittdr'] = str_replace("[tdr_source_id]", $traderoute['source_id'], $langvars['l_tdr_inittdr']); \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_inittdr'], $template); } } elseif ($traderoute['source_type'] == 'L' || $traderoute['source_type'] == 'C') { $result = $db->Execute("SELECT * FROM {$db->prefix}planets WHERE planet_id = ? AND (owner = ? OR (team <> 0 AND team = ?));", array($traderoute['source_id'], $playerinfo['ship_id'], $playerinfo['team'])); \Tki\Db::LogDbErrors($pdo_db, $result, __LINE__, __FILE__); if (!$result || $result->EOF) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_invalidsrc'], $template); } $source = $result->fields; if ($source['sector_id'] != $playerinfo['sector']) { // Check for valid owned source planet // $langvars['l_tdr_inittdrsector'] = str_replace("[tdr_source_sector_id]", $source['sector_id'], $langvars['l_tdr_inittdrsector']); // \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_inittdrsector'], $template); \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, 'You must be in starting sector before you initiate a trade route!', $template); } if ($traderoute['source_type'] == 'L') { if ($source['owner'] != $playerinfo['ship_id']) { // $langvars['l_tdr_notyourplanet'] = str_replace("[tdr_source_name]", $source[name], $langvars['l_tdr_notyourplanet']); // $langvars['l_tdr_notyourplanet'] = str_replace("[tdr_source_sector_id]", $source[sector_id], $langvars['l_tdr_notyourplanet']); // \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_notyourplanet'], $template); \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_invalidsrc'], $template); } } elseif ($traderoute['source_type'] == 'C') { if ($source['team'] != $playerinfo['team']) { // $langvars['l_tdr_notyourplanet'] = str_replace("[tdr_source_name]", $source[name], $langvars['l_tdr_notyourplanet']); // $langvars['l_tdr_notyourplanet'] = str_replace("[tdr_source_sector_id]", $source[sector_id], $langvars['l_tdr_notyourplanet']); // $not_team_planet = "$source[name] in $source[sector_id] not a Copporate Planet"; // \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $not_team_planet, $template); \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_invalidsrc'], $template); } } // Store starting port info, we'll need it later $result = $db->Execute("SELECT * FROM {$db->prefix}universe WHERE sector_id = ?;", array($source['sector_id'])); \Tki\Db::LogDbErrors($pdo_db, $result, __LINE__, __FILE__); if (!$result || $result->EOF) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_invalidssector'], $template); } $sourceport = $result->fields; } // Destination Check if ($traderoute['dest_type'] == 'P') { $result = $db->Execute("SELECT * FROM {$db->prefix}universe WHERE sector_id = ?;", array($traderoute['dest_id'])); \Tki\Db::LogDbErrors($pdo_db, $result, __LINE__, __FILE__); if (!$result || $result->EOF) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_invaliddport'], $template); } $dest = $result->fields; } elseif ($traderoute['dest_type'] == 'L' || $traderoute['dest_type'] == 'C') { // Check for valid owned source planet // This now only returns planets that the player owns or planets that belong to the team and set as team planets.. $result = $db->Execute("SELECT * FROM {$db->prefix}planets WHERE planet_id = ? AND (owner = ? OR (team <> 0 AND team = ?));", array($traderoute['dest_id'], $playerinfo['ship_id'], $playerinfo['team'])); \Tki\Db::LogDbErrors($pdo_db, $result, __LINE__, __FILE__); if (!$result || $result->EOF) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_invaliddplanet'], $template); } $dest = $result->fields; if ($traderoute['dest_type'] == 'L') { if ($dest['owner'] != $playerinfo['ship_id']) { $langvars['l_tdr_notyourplanet'] = str_replace("[tdr_source_name]", $dest['name'], $langvars['l_tdr_notyourplanet']); $langvars['l_tdr_notyourplanet'] = str_replace("[tdr_source_sector_id]", $dest['sector_id'], $langvars['l_tdr_notyourplanet']); \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_notyourplanet'], $template); } } elseif ($traderoute['dest_type'] == 'C') { if ($dest['team'] != $playerinfo['team']) { $langvars['l_tdr_notyourplanet'] = str_replace("[tdr_source_name]", $dest['name'], $langvars['l_tdr_notyourplanet']); $langvars['l_tdr_notyourplanet'] = str_replace("[tdr_source_sector_id]", $dest['sector_id'], $langvars['l_tdr_notyourplanet']); \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_notyourplanet'], $template); } } $result = $db->Execute("SELECT * FROM {$db->prefix}universe WHERE sector_id = ?;", array($dest['sector_id'])); \Tki\Db::LogDbErrors($pdo_db, $result, __LINE__, __FILE__); if (!$result || $result->EOF) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_invaliddsector'], $template); } $destport = $result->fields; } if (!isset($sourceport)) { $sourceport = $source; } if (!isset($destport)) { $destport = $dest; } // Warp or real space and generate distance if ($traderoute['move_type'] == 'W') { $query = $db->Execute("SELECT link_id FROM {$db->prefix}links WHERE link_start = ? AND link_dest = ?;", array($source['sector_id'], $dest['sector_id'])); \Tki\Db::LogDbErrors($pdo_db, $query, __LINE__, __FILE__); if ($query->EOF) { $langvars['l_tdr_nowlink1'] = str_replace("[tdr_src_sector_id]", $source['sector_id'], $langvars['l_tdr_nowlink1']); $langvars['l_tdr_nowlink1'] = str_replace("[tdr_dest_sector_id]", $dest['sector_id'], $langvars['l_tdr_nowlink1']); \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_nowlink1'], $template); } if ($traderoute['circuit'] == '2') { $query = $db->Execute("SELECT link_id FROM {$db->prefix}links WHERE link_start = ? AND link_dest = ?;", array($dest['sector_id'], $source['sector_id'])); \Tki\Db::LogDbErrors($pdo_db, $query, __LINE__, __FILE__); if ($query->EOF) { $langvars['l_tdr_nowlink2'] = str_replace("[tdr_src_sector_id]", $source['sector_id'], $langvars['l_tdr_nowlink2']); $langvars['l_tdr_nowlink2'] = str_replace("[tdr_dest_sector_id]", $dest['sector_id'], $langvars['l_tdr_nowlink2']); \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_nowlink2'], $template); } $dist['triptime'] = 4; } else { $dist['triptime'] = 2; } $dist['scooped'] = 0; $dist['scooped1'] = 0; $dist['scooped2'] = 0; } else { $dist = \Tki\Traderoute3::traderouteDistance($pdo_db, 'P', 'P', $sourceport, $destport, $traderoute['circuit'], $playerinfo, $tkireg); } // Check if player has enough turns if ($playerinfo['turns'] < $dist['triptime']) { $langvars['l_tdr_moreturnsneeded'] = str_replace("[tdr_dist_triptime]", $dist['triptime'], $langvars['l_tdr_moreturnsneeded']); $langvars['l_tdr_moreturnsneeded'] = str_replace("[tdr_playerinfo_turns]", $playerinfo['turns'], $langvars['l_tdr_moreturnsneeded']); \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_moreturnsneeded'], $template); } // Sector defense check $hostile = 0; $result99 = $db->Execute("SELECT * FROM {$db->prefix}sector_defense WHERE sector_id = ? AND ship_id <> ?", array($source['sector_id'], $playerinfo['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $result99, __LINE__, __FILE__); if (!$result99->EOF) { $fighters_owner = $result99->fields; $sql = "SELECT * FROM ::prefix::ships WHERE ship_id=:ship_id LIMIT 1"; $stmt = $pdo_db->prepare($sql); $stmt->bindParam(':ship_id', $fighters_owner['ship_id']); $stmt->execute(); $nsfighters = $stmt->fetch(\PDO::FETCH_ASSOC); if ($nsfighters['team'] != $playerinfo['team'] || $playerinfo['team'] == 0) { $hostile = 1; } } $result98 = $db->Execute("SELECT * FROM {$db->prefix}sector_defense WHERE sector_id = ? AND ship_id <> ?", array($dest['sector_id'], $playerinfo['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $result98, __LINE__, __FILE__); if (!$result98->EOF) { $fighters_owner = $result98->fields; $sql = "SELECT * FROM ::prefix::ships WHERE ship_id=:ship_id LIMIT 1"; $stmt = $pdo_db->prepare($sql); $stmt->bindParam(':ship_id', $fighters_owner['ship_id']); $stmt->execute(); $nsfighters = $stmt->fetch(\PDO::FETCH_ASSOC); if ($nsfighters['team'] != $playerinfo['team'] || $playerinfo['team'] == 0) { $hostile = 1; } } if ($hostile > 0 && $playerinfo['hull'] > $tkireg->mine_hullsize) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_hostdef'], $template); } // Special port nothing to do if ($traderoute['source_type'] == 'P' && $source['port_type'] == 'special' && $playerinfo['trade_colonists'] == 'N' && $playerinfo['trade_fighters'] == 'N' && $playerinfo['trade_torps'] == 'N') { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_globalsetbuynothing'], $template); } // Check if zone allows trading SRC if ($traderoute['source_type'] == 'P') { $sql = "SELECT * FROM ::prefix::zones,::prefix::universe WHERE ::prefix::universe.sector_id=:sector_id AND ::prefix::zones.zone_id=::prefix::universe.zone_id"; $stmt = $pdo_db->prepare($sql); $stmt->bindParam(':sector_id', $traderoute['source_id']); $stmt->execute(); $zoneinfo = $stmt->fetch(\PDO::FETCH_ASSOC); if ($zoneinfo['allow_trade'] == 'N') { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_nosrcporttrade'], $template); } elseif ($zoneinfo['allow_trade'] == 'L') { if ($zoneinfo['team_zone'] == 'N') { $sql = "SELECT team FROM ::prefix::ships WHERE ship_id=:ship_id"; $stmt = $pdo_db->prepare($sql); $stmt->bindParam(':ship_id', $zoneinfo['owner']); $stmt->execute(); $ownerinfo = $stmt->fetch(\PDO::FETCH_ASSOC); if ($playerinfo['ship_id'] != $zoneinfo['owner'] && $playerinfo['team'] == 0 || $playerinfo['team'] != $ownerinfo['team']) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_tradesrcportoutsider'], $template); } } else { if ($playerinfo['team'] != $zoneinfo['owner']) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_tradesrcportoutsider'], $template); } } } } // Check if zone allows trading DEST if ($traderoute['dest_type'] == 'P') { $sql = "SELECT * FROM ::prefix::zones,::prefix::universe WHERE ::prefix::universe.sector_id=:sector_id AND ::prefix::zones.zone_id=::prefix::universe.zone_id"; $stmt = $pdo_db->prepare($sql); $stmt->bindParam(':zone_id', $traderoute['dest_id']); $stmt->execute(); $zoneinfo = $stmt->fetch(\PDO::FETCH_ASSOC); if ($zoneinfo['allow_trade'] == 'N') { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_nodestporttrade'], $template); } elseif ($zoneinfo['allow_trade'] == 'L') { if ($zoneinfo['team_zone'] == 'N') { $sql = "SELECT team FROM ::prefix::ships WHERE ship_id=:ship_id"; $stmt = $pdo_db->prepare($sql); $stmt->bindParam(':ship_id', $zoneinfo['owner']); $stmt->execute(); $ownerinfo = $stmt->fetch(\PDO::FETCH_ASSOC); if ($playerinfo['ship_id'] != $zoneinfo['owner'] && $playerinfo['team'] == 0 || $playerinfo['team'] != $ownerinfo['team']) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_tradedestportoutsider'], $template); } } else { if ($playerinfo['team'] != $zoneinfo['owner']) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_tradedestportoutsider'], $template); } } } } \Tki\Traderoute3::traderouteResultsTableTop($pdo_db, $lang, $tkireg); // Determine if source is a planet or a port if ($traderoute['source_type'] == 'P') { echo $langvars['l_tdr_portin'] . " " . $source['sector_id']; } elseif ($traderoute['source_type'] == 'L' || $traderoute['source_type'] == 'C') { echo $langvars['l_tdr_planet'] . " " . $source['name'] . " in " . $sourceport['sector_id']; } \Tki\Traderoute3::traderouteResultsSource(); // Determine if destination is a planet or a port if ($traderoute['dest_type'] == 'P') { echo $langvars['l_tdr_portin'] . " " . $dest['sector_id']; } elseif ($traderoute['dest_type'] == 'L' || $traderoute['dest_type'] == 'C') { echo $langvars['l_tdr_planet'] . " " . $dest['name'] . " in " . $destport['sector_id']; } \Tki\Traderoute3::traderouteResultsDestination($tkireg); $sourcecost = 0; // Source is port if ($traderoute['source_type'] == 'P') { // Special port section (begin) if ($source['port_type'] == 'special') { $total_credits = $playerinfo['credits']; if ($playerinfo['trade_colonists'] == 'Y') { $free_holds = \Tki\CalcLevels::holds($playerinfo['hull'], $tkireg) - $playerinfo['ship_ore'] - $playerinfo['ship_organics'] - $playerinfo['ship_goods'] - $playerinfo['ship_colonists']; $colonists_buy = $free_holds; if ($playerinfo['credits'] < $tkireg->colonist_price * $colonists_buy) { $colonists_buy = $playerinfo['credits'] / $tkireg->colonist_price; } if ($colonists_buy != 0) { echo $langvars['l_tdr_bought'] . " " . number_format($colonists_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_colonists'] . "<br>"; } $sourcecost -= $colonists_buy * $tkireg->colonist_price; $total_credits -= $colonists_buy * $tkireg->colonist_price; } else { $colonists_buy = 0; } if ($playerinfo['trade_fighters'] == 'Y') { $free_fighters = \Tki\CalcLevels::fighters($playerinfo['computer'], $tkireg) - $playerinfo['ship_fighters']; $fighters_buy = $free_fighters; if ($total_credits < $fighters_buy * $tkireg->fighter_price) { $fighters_buy = $total_credits / $tkireg->fighter_price; } if ($fighters_buy != 0) { echo $langvars['l_tdr_bought'] . " " . number_format($fighters_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_fighters'] . "<br>"; } $sourcecost -= $fighters_buy * $tkireg->fighter_price; $total_credits -= $fighters_buy * $tkireg->fighter_price; } else { $fighters_buy = 0; } if ($playerinfo['trade_torps'] == 'Y') { $free_torps = \Tki\CalcLevels::fighters($playerinfo['torp_launchers'], $tkireg) - $playerinfo['torps']; $torps_buy = $free_torps; if ($total_credits < $torps_buy * $tkireg->torpedo_price) { $torps_buy = $total_credits / $tkireg->torpedo_price; } if ($torps_buy != 0) { echo $langvars['l_tdr_bought'] . " " . number_format($torps_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_torps'] . "<br>"; } $sourcecost -= $torps_buy * $tkireg->torpedo_price; } else { $torps_buy = 0; } if ($torps_buy == 0 && $colonists_buy == 0 && $fighters_buy == 0) { echo $langvars['l_tdr_nothingtotrade'] . "<br>"; } if ($traderoute['circuit'] == '1') { $resb = $db->Execute("UPDATE {$db->prefix}ships SET ship_colonists = ship_colonists + ?, ship_fighters = ship_fighters + ?, torps = torps + ?, ship_energy = ship_energy + ? WHERE ship_id = ?;", array($colonists_buy, $fighters_buy, $torps_buy, $dist['scooped1'], $playerinfo['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $resb, __LINE__, __FILE__); } } else { // Sells commodities if ($source['port_type'] != 'ore') { $tkireg->ore_price = $tkireg->ore_price + ${$tkireg}->ore_delta * $source['port_ore'] / $tkireg->ore_limit * $tkireg->inventory_factor; if ($source['port_ore'] - $playerinfo['ship_ore'] < 0) { $ore_buy = $source['port_ore']; $portfull = 1; } else { $ore_buy = $playerinfo['ship_ore']; } $sourcecost += $ore_buy * $tkireg->ore_price; if ($ore_buy != 0) { if ($portfull == 1) { echo $langvars['l_tdr_sold'] . " " . number_format($ore_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_ore'] . " (" . $langvars['l_tdr_portisfull'] . ")<br>"; } else { echo $langvars['l_tdr_sold'] . " " . number_format($ore_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_ore'] . "<br>"; } } $playerinfo['ship_ore'] -= $ore_buy; } $portfull = 0; if ($source['port_type'] != 'goods') { $tkireg->goods_price = $tkireg->goods_price + $tkireg->goods_delta * $source['port_goods'] / $tkireg->goods_limit * $tkireg->inventory_factor; if ($source['port_goods'] - $playerinfo['ship_goods'] < 0) { $goods_buy = $source['port_goods']; $portfull = 1; } else { $goods_buy = $playerinfo['ship_goods']; } $sourcecost += $goods_buy * $tkireg->goods_price; if ($goods_buy != 0) { if ($portfull == 1) { echo $langvars['l_tdr_sold'] . " " . number_format($goods_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_goods'] . " (" . $langvars['l_tdr_portisfull'] . ")<br>"; } else { echo $langvars['l_tdr_sold'] . " " . number_format($goods_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_goods'] . "<br>"; } } $playerinfo['ship_goods'] -= $goods_buy; } $portfull = 0; if ($source['port_type'] != 'organics') { $tkireg->organics_price = $tkireg->organics_price + $tkireg->organics_delta * $source['port_organics'] / $tkireg->organics_limit * $tkireg->inventory_factor; if ($source['port_organics'] - $playerinfo['ship_organics'] < 0) { $organics_buy = $source['port_organics']; $portfull = 1; } else { $organics_buy = $playerinfo['ship_organics']; } $sourcecost += $organics_buy * $tkireg->organics_price; if ($organics_buy != 0) { if ($portfull == 1) { echo $langvars['l_tdr_sold'] . " " . number_format($organics_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_organics'] . " (" . $langvars['l_tdr_portisfull'] . ")<br>"; } else { echo $langvars['l_tdr_sold'] . " " . number_format($organics_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_organics'] . "<br>"; } } $playerinfo['ship_organics'] -= $organics_buy; } $portfull = 0; if ($source['port_type'] != 'energy' && $playerinfo['trade_energy'] == 'Y') { $tkireg->energy_price = $tkireg->energy_price + $tkireg->energy_delta * $source['port_energy'] / $tkireg->energy_limit * $tkireg->inventory_factor; if ($source['port_energy'] - $playerinfo['ship_energy'] < 0) { $energy_buy = $source['port_energy']; $portfull = 1; } else { $energy_buy = $playerinfo['ship_energy']; } $sourcecost += $energy_buy * $tkireg->energy_price; if ($energy_buy != 0) { if ($portfull == 1) { echo $langvars['l_tdr_sold'] . " " . number_format($energy_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_energy'] . " (" . $langvars['l_tdr_portisfull'] . ")<br>"; } else { echo $langvars['l_tdr_sold'] . " " . number_format($energy_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_energy'] . "<br>"; } } $playerinfo['ship_energy'] -= $energy_buy; } $free_holds = \Tki\CalcLevels::holds($playerinfo['hull'], $tkireg) - $playerinfo['ship_ore'] - $playerinfo['ship_organics'] - $playerinfo['ship_goods'] - $playerinfo['ship_colonists']; // Time to buy if ($source['port_type'] == 'ore') { $tkireg->ore_price = $tkireg->ore_price - ${$tkireg}->ore_delta * $source['port_ore'] / $tkireg->ore_limit * $tkireg->inventory_factor; $ore_buy = $free_holds; if ($playerinfo['credits'] + $sourcecost < $ore_buy * $tkireg->ore_price) { $ore_buy = ($playerinfo['credits'] + $sourcecost) / $tkireg->ore_price; } if ($source['port_ore'] < $ore_buy) { $ore_buy = $source['port_ore']; if ($source['port_ore'] == 0) { echo $langvars['l_tdr_bought'] . " " . number_format($ore_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_ore'] . "(" . $langvars['l_tdr_portisempty'] . ")<br>"; } } if ($ore_buy != 0) { echo $langvars['l_tdr_bought'] . " " . number_format($ore_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_ore'] . "<br>"; } $playerinfo['ship_ore'] += $ore_buy; $sourcecost -= $ore_buy * $tkireg->ore_price; $resc = $db->Execute("UPDATE {$db->prefix}universe SET port_ore=port_ore-?, port_energy=port_energy-?, port_goods=port_goods-?, port_organics=port_organics-? WHERE sector_id = ?;", array($ore_buy, $energy_buy, $goods_buy, $organics_buy, $source['sector_id'])); \Tki\Db::LogDbErrors($pdo_db, $resc, __LINE__, __FILE__); } if ($source['port_type'] == 'goods') { $tkireg->goods_price = $tkireg->goods_price - $tkireg->goods_delta * $source['port_goods'] / $tkireg->goods_limit * $tkireg->inventory_factor; $goods_buy = $free_holds; if ($playerinfo['credits'] + $sourcecost < $goods_buy * $tkireg->goods_price) { $goods_buy = ($playerinfo['credits'] + $sourcecost) / $tkireg->goods_price; } if ($source['port_goods'] < $goods_buy) { $goods_buy = $source['port_goods']; if ($source['port_goods'] == 0) { echo $langvars['l_tdr_bought'] . " " . number_format($goods_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_goods'] . " (" . $langvars['l_tdr_portisempty'] . ")<br>"; } } if ($goods_buy != 0) { echo $langvars['l_tdr_bought'] . " " . number_format($goods_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_goods'] . "<br>"; } $playerinfo['ship_goods'] += $goods_buy; $sourcecost -= $goods_buy * $tkireg->goods_price; $resd = $db->Execute("UPDATE {$db->prefix}universe SET port_ore=port_ore-?, port_energy=port_energy-?, port_goods=port_goods-?, port_organics=port_organics-? WHERE sector_id = ?;", array($ore_buy, $energy_buy, $goods_buy, $organics_buy, $source['sector_id'])); \Tki\Db::LogDbErrors($pdo_db, $resd, __LINE__, __FILE__); } if ($source['port_type'] == 'organics') { $tkireg->organics_price = $tkireg->organics_price - $tkireg->organics_delta * $source['port_organics'] / $tkireg->organics_limit * $tkireg->inventory_factor; $organics_buy = $free_holds; if ($playerinfo['credits'] + $sourcecost < $organics_buy * $tkireg->organics_price) { $organics_buy = ($playerinfo['credits'] + $sourcecost) / $tkireg->organics_price; } if ($source['port_organics'] < $organics_buy) { $organics_buy = $source['port_organics']; if ($source['port_organics'] == 0) { echo $langvars['l_tdr_bought'] . " " . number_format($organics_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_organics'] . " (" . $langvars['l_tdr_portisempty'] . ")<br>"; } } if ($organics_buy != 0) { echo $langvars['l_tdr_bought'] . " " . number_format($organics_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_organics'] . "<br>"; } $playerinfo['ship_organics'] += $organics_buy; $sourcecost -= $organics_buy * $tkireg->organics_price; $rese = $db->Execute("UPDATE {$db->prefix}universe SET port_ore=port_ore-?, port_energy=port_energy-?, port_goods=port_goods-?, port_organics=port_organics-? WHERE sector_id = ?;", array($ore_buy, $energy_buy, $goods_buy, $organics_buy, $source['sector_id'])); \Tki\Db::LogDbErrors($pdo_db, $rese, __LINE__, __FILE__); } if ($source['port_type'] == 'energy') { $tkireg->energy_price = $tkireg->energy_price - $tkireg->energy_delta * $source['port_energy'] / $tkireg->energy_limit * $tkireg->inventory_factor; $energy_buy = \Tki\CalcLevels::energy($playerinfo['power'], $tkireg) - $playerinfo['ship_energy'] - $dist['scooped1']; if ($playerinfo['credits'] + $sourcecost < $energy_buy * $tkireg->energy_price) { $energy_buy = ($playerinfo['credits'] + $sourcecost) / $tkireg->energy_price; } if ($source['port_energy'] < $energy_buy) { $energy_buy = $source['port_energy']; if ($source['port_energy'] == 0) { echo $langvars['l_tdr_bought'] . " " . number_format($energy_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_energy'] . " (" . $langvars['l_tdr_portisempty'] . ")<br>"; } } if ($energy_buy != 0) { echo $langvars['l_tdr_bought'] . " " . number_format($energy_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_energy'] . "<br>"; } $playerinfo['ship_energy'] += $energy_buy; $sourcecost -= $energy_buy * $tkireg->energy_price; $resf = $db->Execute("UPDATE {$db->prefix}universe SET port_ore=port_ore-?, port_energy=port_energy-?, port_goods=port_goods-?, port_organics=port_organics-? WHERE sector_id = ?;", array($ore_buy, $energy_buy, $goods_buy, $organics_buy, $source['sector_id'])); \Tki\Db::LogDbErrors($pdo_db, $resf, __LINE__, __FILE__); } if ($dist['scooped1'] > 0) { $playerinfo['ship_energy'] += $dist['scooped1']; if ($playerinfo['ship_energy'] > \Tki\CalcLevels::energy($playerinfo['power'], $tkireg)) { $playerinfo['ship_energy'] = \Tki\CalcLevels::energy($playerinfo['power'], $tkireg); } } if ($ore_buy == 0 && $goods_buy == 0 && $energy_buy == 0 && $organics_buy == 0) { echo $langvars['l_tdr_nothingtotrade'] . "<br>"; } if ($traderoute['circuit'] == '1') { $resf = $db->Execute("UPDATE {$db->prefix}ships SET ship_ore = ?, ship_goods = ?, ship_organics = ?, ship_energy = ? WHERE ship_id = ?;", array($playerinfo['ship_ore'], $playerinfo['ship_goods'], $playerinfo['ship_organics'], $playerinfo['ship_energy'], $playerinfo['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $resf, __LINE__, __FILE__); } } } elseif ($traderoute['source_type'] == 'L' || $traderoute['source_type'] == 'C') { $free_holds = \Tki\CalcLevels::holds($playerinfo['hull'], $tkireg) - $playerinfo['ship_ore'] - $playerinfo['ship_organics'] - $playerinfo['ship_goods'] - $playerinfo['ship_colonists']; if ($traderoute['dest_type'] == 'P') { // Pick stuff up to sell at port if ($playerinfo['ship_id'] == $source['owner'] || $playerinfo['team'] == $source['team']) { if ($source['goods'] > 0 && $free_holds > 0 && $dest['port_type'] != 'goods') { if ($source['goods'] > $free_holds) { $goods_buy = $free_holds; } else { $goods_buy = $source['goods']; } $free_holds -= $goods_buy; $playerinfo['ship_goods'] += $goods_buy; echo $langvars['l_tdr_loaded'] . " " . number_format($goods_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_goods'] . "<br>"; } else { $goods_buy = 0; } if ($source['ore'] > 0 && $free_holds > 0 && $dest['port_type'] != 'ore') { if ($source['ore'] > $free_holds) { $ore_buy = $free_holds; } else { $ore_buy = $source['ore']; } $free_holds -= $ore_buy; $playerinfo['ship_ore'] += $ore_buy; echo $langvars['l_tdr_loaded'] . " " . number_format($ore_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_ore'] . "<br>"; } else { $ore_buy = 0; } if ($source['organics'] > 0 && $free_holds > 0 && $dest['port_type'] != 'organics') { if ($source['organics'] > $free_holds) { $organics_buy = $free_holds; } else { $organics_buy = $source['organics']; } $free_holds -= $organics_buy; $playerinfo['ship_organics'] += $organics_buy; echo $langvars['l_tdr_loaded'] . " " . number_format($organics_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_organics'] . "<br>"; } else { $organics_buy = 0; } if ($ore_buy == 0 && $goods_buy == 0 && $organics_buy == 0) { echo $langvars['l_tdr_nothingtoload'] . "<br>"; } if ($traderoute['circuit'] == '1') { $resg = $db->Execute("UPDATE {$db->prefix}ships SET ship_ore = ?, ship_goods = ?, ship_organics = ? WHERE ship_id = ?;", array($playerinfo['ship_ore'], $playerinfo['ship_goods'], $playerinfo['ship_organics'], $playerinfo['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $resg, __LINE__, __FILE__); } } $resh = $db->Execute("UPDATE {$db->prefix}planets SET ore = ore - ?, goods = goods - ?, organics = organics - ? WHERE planet_id = ?;", array($ore_buy, $goods_buy, $organics_buy, $source['planet_id'])); \Tki\Db::LogDbErrors($pdo_db, $resh, __LINE__, __FILE__); } elseif ($traderoute['dest_type'] == 'L' || $traderoute['dest_type'] == 'C') { if ($source['colonists'] > 0 && $free_holds > 0 && $playerinfo['trade_colonists'] == 'Y') { if ($source['colonists'] > $free_holds) { $colonists_buy = $free_holds; } else { $colonists_buy = $source['colonists']; } $free_holds -= $colonists_buy; $playerinfo['ship_colonists'] += $colonists_buy; echo $langvars['l_tdr_loaded'] . " " . number_format($colonists_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_colonists'] . "<br>"; } else { $colonists_buy = 0; } $free_torps = \Tki\CalcLevels::torpedoes($playerinfo['torp_launchers'], $tkireg) - $playerinfo['torps']; if ($source['torps'] > 0 && $free_torps > 0 && $playerinfo['trade_torps'] == 'Y') { if ($source['torps'] > $free_torps) { $torps_buy = $free_torps; } else { $torps_buy = $source['torps']; } $free_torps -= $torps_buy; $playerinfo['torps'] += $torps_buy; echo $langvars['l_tdr_loaded'] . " " . number_format($torps_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_torps'] . "<br>"; } else { $torps_buy = 0; } $free_fighters = \Tki\CalcLevels::fighters($playerinfo['computer'], $tkireg) - $playerinfo['ship_fighters']; if ($source['fighters'] > 0 && $free_fighters > 0 && $playerinfo['trade_fighters'] == 'Y') { if ($source['fighters'] > $free_fighters) { $fighters_buy = $free_fighters; } else { $fighters_buy = $source['fighters']; } $free_fighters -= $fighters_buy; $playerinfo['ship_fighters'] += $fighters_buy; echo $langvars['l_tdr_loaded'] . " " . number_format($fighters_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_fighters'] . "<br>"; } else { $fighters_buy = 0; } if ($fighters_buy == 0 && $torps_buy == 0 && $colonists_buy == 0) { echo $langvars['l_tdr_nothingtoload'] . "<br>"; } if ($traderoute['circuit'] == '1') { $resi = $db->Execute("UPDATE {$db->prefix}ships SET torps = ?, ship_fighters = ?, ship_colonists = ? WHERE ship_id = ?;", array($playerinfo['torps'], $playerinfo['ship_fighters'], $playerinfo['ship_colonists'], $playerinfo['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $resi, __LINE__, __FILE__); } $resj = $db->Execute("UPDATE {$db->prefix}planets SET colonists = colonists - ?, torps = torps - ?, fighters = fighters - ? WHERE planet_id = ?;", array($colonists_buy, $torps_buy, $fighters_buy, $source['planet_id'])); \Tki\Db::LogDbErrors($pdo_db, $resj, __LINE__, __FILE__); } } if ($dist['scooped1'] != 0) { echo $langvars['l_tdr_scooped'] . " " . number_format($dist['scooped1'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_energy'] . "<br>"; } \Tki\Traderoute3::traderouteResultsCloseCell(); if ($traderoute['circuit'] == '2') { $playerinfo['credits'] += $sourcecost; $destcost = 0; if ($traderoute['dest_type'] == 'P') { // Added the below for traderoute bug $ore_buy = 0; $goods_buy = 0; $organics_buy = 0; $energy_buy = 0; // Sells commodities $portfull = 0; if ($dest['port_type'] != 'ore') { $tkireg->ore_price = $tkireg->ore_price + ${$tkireg}->ore_delta * $dest['port_ore'] / $tkireg->ore_limit * $tkireg->inventory_factor; if ($dest['port_ore'] - $playerinfo['ship_ore'] < 0) { $ore_buy = $dest['port_ore']; $portfull = 1; } else { $ore_buy = $playerinfo['ship_ore']; } $destcost += $ore_buy * $tkireg->ore_price; if ($ore_buy != 0) { if ($portfull == 1) { echo $langvars['l_tdr_sold'] . " " . number_format($ore_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_ore'] . " (" . $langvars['l_tdr_portisfull'] . ")<br>"; } else { echo $langvars['l_tdr_sold'] . " " . number_format($ore_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_ore'] . "<br>"; } } $playerinfo['ship_ore'] -= $ore_buy; } $portfull = 0; if ($dest['port_type'] != 'goods') { $tkireg->goods_price = $tkireg->goods_price + $tkireg->goods_delta * $dest['port_goods'] / $tkireg->goods_limit * $tkireg->inventory_factor; if ($dest['port_goods'] - $playerinfo['ship_goods'] < 0) { $goods_buy = $dest['port_goods']; $portfull = 1; } else { $goods_buy = $playerinfo['ship_goods']; } $destcost += $goods_buy * $tkireg->goods_price; if ($goods_buy != 0) { if ($portfull == 1) { echo $langvars['l_tdr_sold'] . " " . number_format($goods_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_goods'] . " (" . $langvars['l_tdr_portisfull'] . ")<br>"; } else { echo $langvars['l_tdr_sold'] . " " . number_format($goods_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_goods'] . "<br>"; } } $playerinfo['ship_goods'] -= $goods_buy; } $portfull = 0; if ($dest['port_type'] != 'organics') { $tkireg->organics_price = $tkireg->organics_price + $tkireg->organics_delta * $dest['port_organics'] / $tkireg->organics_limit * $tkireg->inventory_factor; if ($dest['port_organics'] - $playerinfo['ship_organics'] < 0) { $organics_buy = $dest['port_organics']; $portfull = 1; } else { $organics_buy = $playerinfo['ship_organics']; } $destcost += $organics_buy * $tkireg->organics_price; if ($organics_buy != 0) { if ($portfull == 1) { echo $langvars['l_tdr_sold'] . " " . number_format($organics_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_organics'] . " (" . $langvars['l_tdr_portisfull'] . ")<br>"; } else { echo $langvars['l_tdr_sold'] . " " . number_format($organics_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_organics'] . "<br>"; } } $playerinfo['ship_organics'] -= $organics_buy; } $portfull = 0; if ($dest['port_type'] != 'energy' && $playerinfo['trade_energy'] == 'Y') { $tkireg->energy_price = $tkireg->energy_price + $tkireg->energy_delta * $dest['port_energy'] / $tkireg->energy_limit * $tkireg->inventory_factor; if ($dest['port_energy'] - $playerinfo['ship_energy'] < 0) { $energy_buy = $dest['port_energy']; $portfull = 1; } else { $energy_buy = $playerinfo['ship_energy']; } $destcost += $energy_buy * $tkireg->energy_price; if ($energy_buy != 0) { if ($portfull == 1) { echo $langvars['l_tdr_sold'] . " " . number_format($energy_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_energy'] . " (" . $langvars['l_tdr_portisfull'] . ")<br>"; } else { echo $langvars['l_tdr_sold'] . " " . number_format($energy_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_energy'] . "<br>"; } } $playerinfo['ship_energy'] -= $energy_buy; } else { $energy_buy = 0; } $free_holds = \Tki\CalcLevels::holds($playerinfo['hull'], $tkireg) - $playerinfo['ship_ore'] - $playerinfo['ship_organics'] - $playerinfo['ship_goods'] - $playerinfo['ship_colonists']; // Time to buy if ($dest['port_type'] == 'ore') { $tkireg->ore_price = $tkireg->ore_price - ${$tkireg}->ore_delta * $dest['port_ore'] / $tkireg->ore_limit * $tkireg->inventory_factor; if ($traderoute['source_type'] == 'L') { $ore_buy = 0; } else { $ore_buy = $free_holds; if ($playerinfo['credits'] + $destcost < $ore_buy * $tkireg->ore_price) { $ore_buy = ($playerinfo['credits'] + $destcost) / $tkireg->ore_price; } if ($dest['port_ore'] < $ore_buy) { $ore_buy = $dest['port_ore']; if ($dest['port_ore'] == 0) { echo $langvars['l_tdr_bought'] . " " . number_format($ore_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_ore'] . " (" . $langvars['l_tdr_portisempty'] . ")<br>"; } } if ($ore_buy != 0) { echo $langvars['l_tdr_bought'] . " " . number_format($ore_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_ore'] . "<br>"; } $playerinfo['ship_ore'] += $ore_buy; $destcost -= $ore_buy * $tkireg->ore_price; } $resk = $db->Execute("UPDATE {$db->prefix}universe SET port_ore = port_ore - ?, port_energy = port_energy - ?, port_goods = port_goods - ?, port_organics = port_organics - ? WHERE sector_id = ?;", array($ore_buy, $energy_buy, $goods_buy, $organics_buy, $dest['sector_id'])); \Tki\Db::LogDbErrors($pdo_db, $resk, __LINE__, __FILE__); } if ($dest['port_type'] == 'goods') { $tkireg->goods_price = $tkireg->goods_price - $tkireg->goods_delta * $dest['port_goods'] / $tkireg->goods_limit * $tkireg->inventory_factor; if ($traderoute['source_type'] == 'L') { $goods_buy = 0; } else { $goods_buy = $free_holds; if ($playerinfo['credits'] + $destcost < $goods_buy * $tkireg->goods_price) { $goods_buy = ($playerinfo['credits'] + $destcost) / $tkireg->goods_price; } if ($dest['port_goods'] < $goods_buy) { $goods_buy = $dest['port_goods']; if ($dest['port_goods'] == 0) { echo $langvars['l_tdr_bought'] . " " . number_format($goods_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_goods'] . " (" . $langvars['l_tdr_portisempty'] . ")<br>"; } } if ($goods_buy != 0) { echo $langvars['l_tdr_bought'] . " " . number_format($goods_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_goods'] . "<br>"; } $playerinfo['ship_goods'] += $goods_buy; $destcost -= $goods_buy * $tkireg->goods_price; } $resl = $db->Execute("UPDATE {$db->prefix}universe SET port_ore = port_ore - ?, port_energy = port_energy - ?, port_goods = port_goods - ?, port_organics = port_organics - ? WHERE sector_id = ?;", array($ore_buy, $energy_buy, $goods_buy, $organics_buy, $dest['sector_id'])); \Tki\Db::LogDbErrors($pdo_db, $resl, __LINE__, __FILE__); } if ($dest['port_type'] == 'organics') { $tkireg->organics_price = $tkireg->organics_price - $tkireg->organics_delta * $dest['port_organics'] / $tkireg->organics_limit * $tkireg->inventory_factor; if ($traderoute['source_type'] == 'L') { $organics_buy = 0; } else { $organics_buy = $free_holds; if ($playerinfo['credits'] + $destcost < $organics_buy * $tkireg->organics_price) { $organics_buy = ($playerinfo['credits'] + $destcost) / $tkireg->organics_price; } if ($dest['port_organics'] < $organics_buy) { $organics_buy = $dest['port_organics']; if ($dest['port_organics'] == 0) { echo $langvars['l_tdr_bought'] . " " . number_format($organics_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_organics'] . " (" . $langvars['l_tdr_portisempty'] . ")<br>"; } } if ($organics_buy != 0) { echo $langvars['l_tdr_bought'] . " " . number_format($organics_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_organics'] . "<br>"; } $playerinfo['ship_organics'] += $organics_buy; $destcost -= $organics_buy * $tkireg->organics_price; } $resm = $db->Execute("UPDATE {$db->prefix}universe SET port_ore = port_ore - ?, port_energy = port_energy - ?, port_goods = port_goods - ?, port_organics = port_organics - ? WHERE sector_id = ?;", array($ore_buy, $energy_buy, $goods_buy, $organics_buy, $dest['sector_id'])); \Tki\Db::LogDbErrors($pdo_db, $resm, __LINE__, __FILE__); } if ($dest['port_type'] == 'energy') { $tkireg->energy_price = $tkireg->energy_price - $tkireg->energy_delta * $dest['port_energy'] / $tkireg->energy_limit * $tkireg->inventory_factor; if ($traderoute['source_type'] == 'L') { $energy_buy = 0; } else { $energy_buy = \Tki\CalcLevels::energy($playerinfo['power'], $tkireg) - $playerinfo['ship_energy'] - $dist['scooped1']; if ($playerinfo['credits'] + $destcost < $energy_buy * $tkireg->energy_price) { $energy_buy = ($playerinfo['credits'] + $destcost) / $tkireg->energy_price; } if ($dest['port_energy'] < $energy_buy) { $energy_buy = $dest['port_energy']; if ($dest['port_energy'] == 0) { echo $langvars['l_tdr_bought'] . " " . number_format($energy_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_energy'] . " (" . $langvars['l_tdr_portisempty'] . ")<br>"; } } if ($energy_buy != 0) { echo $langvars['l_tdr_bought'] . " " . number_format($energy_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_energy'] . "<br>"; } $playerinfo['ship_energy'] += $energy_buy; $destcost -= $energy_buy * $tkireg->energy_price; } if ($ore_buy == 0 && $goods_buy == 0 && $energy_buy == 0 && $organics_buy == 0) { echo $langvars['l_tdr_nothingtotrade'] . "<br>"; } $resn = $db->Execute("UPDATE {$db->prefix}universe SET port_ore = port_ore - ?, port_energy = port_energy - ?, port_goods = port_goods - ?, port_organics = port_organics - ? WHERE sector_id = ?;", array($ore_buy, $energy_buy, $goods_buy, $organics_buy, $dest['sector_id'])); \Tki\Db::LogDbErrors($pdo_db, $resn, __LINE__, __FILE__); } if ($dist['scooped2'] > 0) { $playerinfo['ship_energy'] += $dist['scooped2']; if ($playerinfo['ship_energy'] > \Tki\CalcLevels::energy($playerinfo['power'], $tkireg)) { $playerinfo['ship_energy'] = \Tki\CalcLevels::energy($playerinfo['power'], $tkireg); } } $reso = $db->Execute("UPDATE {$db->prefix}ships SET ship_ore = ?, ship_goods = ?, ship_organics = ?, ship_energy = ? WHERE ship_id = ?;", array($playerinfo['ship_ore'], $playerinfo['ship_goods'], $playerinfo['ship_organics'], $playerinfo['ship_energy'], $playerinfo['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $reso, __LINE__, __FILE__); } else { if ($traderoute['source_type'] == 'L' || $traderoute['source_type'] == 'C') { $colonists_buy = 0; $fighters_buy = 0; $torps_buy = 0; } $setcol = 0; if ($playerinfo['trade_colonists'] == 'Y') { $colonists_buy += $playerinfo['ship_colonists']; $col_dump = $playerinfo['ship_colonists']; if ($dest['colonists'] + $colonists_buy >= $tkireg->colonist_limit) { $exceeding = $dest['colonists'] + $colonists_buy - $tkireg->colonist_limit; $col_dump = $exceeding; $setcol = 1; $colonists_buy -= $exceeding; if ($colonists_buy < 0) { $colonists_buy = 0; } } } else { $col_dump = 0; } if ($colonists_buy != 0) { if ($setcol == 1) { echo $langvars['l_tdr_dumped'] . " " . number_format($colonists_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_colonists'] . " (" . $langvars['l_tdr_planetisovercrowded'] . ")<br>"; } else { echo $langvars['l_tdr_dumped'] . " " . number_format($colonists_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_colonists'] . "<br>"; } } if ($playerinfo['trade_fighters'] == 'Y') { $fighters_buy += $playerinfo['ship_fighters']; $fight_dump = $playerinfo['ship_fighters']; } else { $fight_dump = 0; } if ($fighters_buy != 0) { echo $langvars['l_tdr_dumped'] . " " . number_format($fighters_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_fighters'] . "<br>"; } if ($playerinfo['trade_torps'] == 'Y') { $torps_buy += $playerinfo['torps']; $torps_dump = $playerinfo['torps']; } else { $torps_dump = 0; } if ($torps_buy != 0) { echo $langvars['l_tdr_dumped'] . " " . number_format($torps_buy, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_torps'] . "<br>"; } if ($torps_buy == 0 && $fighters_buy == 0 && $colonists_buy == 0) { echo $langvars['l_tdr_nothingtodump'] . "<br>"; } if ($traderoute['source_type'] == 'L' || $traderoute['source_type'] == 'C') { if ($playerinfo['trade_colonists'] == 'Y') { if ($setcol != 1) { $col_dump = 0; } } else { $col_dump = $playerinfo['ship_colonists']; } if ($playerinfo['trade_fighters'] == 'Y') { $fight_dump = 0; } else { $fight_dump = $playerinfo['ship_fighters']; } if ($playerinfo['trade_torps'] == 'Y') { $torps_dump = 0; } else { $torps_dump = $playerinfo['torps']; } } $resp = $db->Execute("UPDATE {$db->prefix}planets SET colonists = colonists + ?, fighters = fighters + ?, torps = torps + ? WHERE planet_id = ?;", array($colonists_buy, $fighters_buy, $torps_buy, $traderoute['dest_id'])); \Tki\Db::LogDbErrors($pdo_db, $resp, __LINE__, __FILE__); if ($traderoute['source_type'] == 'L' || $traderoute['source_type'] == 'C') { $resq = $db->Execute("UPDATE {$db->prefix}ships SET ship_colonists = ?, ship_fighters = ?, torps = ?, ship_energy = ship_energy + ? WHERE ship_id = ?;", array($col_dump, $fight_dump, $torps_dump, $dist['scooped'], $playerinfo['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $resq, __LINE__, __FILE__); } else { if ($setcol == 1) { $resr = $db->Execute("UPDATE {$db->prefix}ships SET ship_colonists = ?, ship_fighters = ship_fighters - ?, torps = torps - ?, ship_energy = ship_energy + ? WHERE ship_id = ?;", array($col_dump, $fight_dump, $torps_dump, $dist['scooped'], $playerinfo['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $resr, __LINE__, __FILE__); } else { $ress = $db->Execute("UPDATE {$db->prefix}ships SET ship_colonists = ship_colonists - ?, ship_fighters = ship_fighters - ?, torps = torps - ?, ship_energy = ship_energy + ? WHERE ship_id = ?;", array($col_dump, $fight_dump, $torps_dump, $dist['scooped'], $playerinfo['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $ress, __LINE__, __FILE__); } } } if ($dist['scooped2'] != 0) { echo $langvars['l_tdr_scooped'] . " " . number_format($dist['scooped1'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . " " . $langvars['l_tdr_energy'] . "<br>"; } } else { echo $langvars['l_tdr_onlyonewaytdr']; $destcost = 0; } \Tki\Traderoute3::traderouteResultsShowCost($tkireg); if ($sourcecost > 0) { echo $langvars['l_tdr_profit'] . " : " . number_format(abs($sourcecost), 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']); } else { echo $langvars['l_tdr_cost'] . " : " . number_format(abs($sourcecost), 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']); } \Tki\Traderoute3::traderouteResultsCloseCost(); if ($destcost > 0) { echo $langvars['l_tdr_profit'] . " : " . number_format(abs($destcost), 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']); } else { echo $langvars['l_tdr_cost'] . " : " . number_format(abs($destcost), 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']); } \Tki\Traderoute3::traderouteResultsCloseTable(); $total_profit = $sourcecost + $destcost; \Tki\Traderoute3::traderouteResultsDisplayTotals($pdo_db, $lang, $total_profit); if ($traderoute['circuit'] == '1') { $newsec = $destport['sector_id']; } else { $newsec = $sourceport['sector_id']; } $rest = $db->Execute("UPDATE {$db->prefix}ships SET turns = turns - ?, credits = credits + ?, turns_used = turns_used + ?, sector = ? WHERE ship_id = ?;", array($dist['triptime'], $total_profit, $dist['triptime'], $newsec, $playerinfo['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $rest, __LINE__, __FILE__); $playerinfo['credits'] += $total_profit - $sourcecost; $playerinfo['turns'] -= $dist['triptime']; $tdr_display_creds = number_format($playerinfo['credits'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']); \Tki\Traderoute3::traderouteResultsDisplaySummary($pdo_db, $lang, $tdr_display_creds, $dist, $playerinfo); // echo $j . " -- "; if ($traderoute['circuit'] == 2) { $langvars['l_tdr_engageagain'] = str_replace("[here]", "<a href=\"traderoute.php?engage=[tdr_engage]\">" . $langvars['l_here'] . "</a>", $langvars['l_tdr_engageagain']); $langvars['l_tdr_engageagain'] = str_replace("[five]", "<a href=\"traderoute.php?engage=[tdr_engage]&tr_repeat=5\">" . $langvars['l_tdr_five'] . "</a>", $langvars['l_tdr_engageagain']); $langvars['l_tdr_engageagain'] = str_replace("[ten]", "<a href=\"traderoute.php?engage=[tdr_engage]&tr_repeat=10\">" . $langvars['l_tdr_ten'] . "</a>", $langvars['l_tdr_engageagain']); $langvars['l_tdr_engageagain'] = str_replace("[fifty]", "<a href=\"traderoute.php?engage=[tdr_engage]&tr_repeat=50\">" . $langvars['l_tdr_fifty'] . "</a>", $langvars['l_tdr_engageagain']); $langvars['l_tdr_engageagain'] = str_replace("[tdr_engage]", $engage, $langvars['l_tdr_engageagain']); if ($j == 1) { echo $langvars['l_tdr_engageagain'] . "\n"; \Tki\Traderoute3::traderouteResultsShowRepeat($engage); } } if ($j == 1) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, null, $template); } }