$syllables = "er,in,tia,wol,fe,pre,vet,jo,nes,al,len,son,cha,ir,ler,bo,ok,tio,nar,sim,ple,bla,ten,toe,cho,co,lat,spe,ak,er,po,co,lor,pen,cil,li,ght,wh,at,the,he,ck,is,mam,bo,no,fi,ve,any,way,pol,iti,cs,ra,dio,sou,rce,sea,rch,pa,per,com,bo,sp,eak,st,fi,rst,gr,oup,boy,ea,gle,tr,ail,bi,ble,brb,pri,dee,kay,en,be,se"; $syllable_array = explode(",", $syllables); for ($count = 1; $count <= 4; $count++) { if (random_int(0, mt_getrandmax()) % 10 == 1) { $makepass .= sprintf("%0.0f", random_int(0, mt_getrandmax() % 50) + 1); } else { $makepass .= sprintf("%s", $syllable_array[random_int(0, mt_getrandmax() % 62)]); } } if ($xenlevel === null) { $xenlevel = 0; } $maxenergy = Tki\CalcLevels::energy($xenlevel, $tkireg); $maxarmor = Tki\CalcLevels::armor($xenlevel, $tkireg); $maxfighters = Tki\CalcLevels::fighters($xenlevel, $tkireg); $maxtorps = Tki\CalcLevels::torpedoes($xenlevel, $tkireg); $stamp = date("Y-m-d H:i:s"); // Add Xenobe record to ships table ... modify if the ships schema changes $thesql = "INSERT INTO {$db->prefix}ships ( `ship_id` , `ship_name` , `ship_destroyed` , `character_name` , `password` , `email` , `hull` , `engines` , `power` , `computer` , `sensors` , `beams` , `torp_launchers` , `torps` , `shields` , `armor` , `armor_pts` , `cloak` , `credits` , `sector` , `ship_ore` , `ship_organics` , `ship_goods` , `ship_energy` , `ship_colonists` , `ship_fighters` , `ship_damage` , `turns` , `on_planet` , `dev_warpedit` , `dev_genesis` , `dev_beacon` , `dev_emerwarp` , `dev_escapepod` , `dev_fuelscoop` , `dev_minedeflector` , `turns_used` , `last_login` , `rating` , `score` , `team` , `team_invite` , `interface` , `ip_address` , `planet_id` , `trade_colonists` , `trade_fighters` , `trade_torps` , `trade_energy` , `cleared_defenses` , `lang` , `dev_lssd` )\n VALUES (NULL,'{$shipname}','N','{$character}','{$makepass}','{$emailname}',{$xenlevel},{$xenlevel},{$xenlevel},{$xenlevel},{$xenlevel},{$xenlevel},{$xenlevel},{$maxtorps},{$xenlevel},{$xenlevel},{$maxarmor},{$xenlevel},{$start_credits},{$sector},0,0,0,{$maxenergy},0,{$maxfighters},0,{$start_turns},'N',0,0,0,0,'N','N',0,0, '{$stamp}',0,0,0,0,'N','127.0.0.1',0,'Y','N','N','Y',NULL,'{$default_lang}','Y')"; $result2 = $db->Execute($thesql); Tki\Db::LogDbErrors($pdo_db, $result2, __LINE__, __FILE__); if (!$result2) { echo $db->ErrorMsg() . "<br>"; } else { echo "Xenobe has been created.<br><br>"; echo "password has been set.<br><br>"; echo "Ship Records have been updated.<br><br>"; } $result3 = $db->Execute("INSERT INTO {$db->prefix}xenobe (xenobe_id, active, aggression, orders) values(?,?,?,?)", array($emailname, $_active, $aggression, $orders)); Tki\Db::LogDbErrors($pdo_db, $result3, __LINE__, __FILE__); if (!$result3) {
Tki\SectorDefense::messageDefenseOwner($pdo_db, $sector, $langvars['l_chm_hehitminesinsector']); // If the player has enough mine deflectors then subtract the ammount and continue if ($playerinfo['dev_minedeflector'] >= $roll) { $langvars['l_chm_youlostminedeflectors'] = str_replace("[chm_roll]", $roll, $langvars['l_chm_youlostminedeflectors']); echo $langvars['l_chm_youlostminedeflectors'] . "<br>"; $result2 = $db->Execute("UPDATE {$db->prefix}ships SET dev_minedeflector = dev_minedeflector - ? WHERE ship_id = ?", array($roll, $playerinfo['ship_id'])); Tki\Db::LogDbErrors($pdo_db, $result2, __LINE__, __FILE__); } else { if ($playerinfo['dev_minedeflector'] > 0) { echo $langvars['l_chm_youlostallminedeflectors'] . "<br>"; } else { echo $langvars['l_chm_youhadnominedeflectors'] . "<br>"; } // Shields up $mines_left = $roll - $playerinfo['dev_minedeflector']; $playershields = Tki\CalcLevels::shields($playerinfo['shields'], $tkireg); if ($playershields > $playerinfo['ship_energy']) { $playershields = $playerinfo['ship_energy']; } if ($playershields >= $mines_left) { $langvars['l_chm_yourshieldshitforminesdmg'] = str_replace("[chm_mines_left]", $mines_left, $langvars['l_chm_yourshieldshitforminesdmg']); echo $langvars['l_chm_yourshieldshitforminesdmg'] . "<br>"; $result2 = $db->Execute("UPDATE {$db->prefix}ships SET ship_energy = ship_energy - ?, dev_minedeflector = 0 WHERE ship_id = ?", array($mines_left, $playerinfo['ship_id'])); Tki\Db::LogDbErrors($pdo_db, $result2, __LINE__, __FILE__); if ($playershields == $mines_left) { echo $langvars['l_chm_yourshieldsaredown'] . "<br>"; } } else { // Direct hit echo $langvars['l_chm_youlostallyourshields'] . "<br>"; $mines_left = $mines_left - $playershields;
Tki\Text::gotomain($pdo_db, $lang); die; } } } $genesis_free = $tkireg->max_genesis - $playerinfo['dev_genesis']; $beacon_free = $tkireg->max_beacons - $playerinfo['dev_beacon']; $emerwarp_free = $tkireg->max_emerwarp - $playerinfo['dev_emerwarp']; $warpedit_free = $tkireg->max_warpedit - $playerinfo['dev_warpedit']; $fighter_max = Tki\CalcLevels::fighters($playerinfo['computer'], $tkireg); $fighter_free = $fighter_max - $playerinfo['ship_fighters']; $torpedo_max = Tki\CalcLevels::torpedoes($playerinfo['torp_launchers'], $tkireg); $torpedo_free = $torpedo_max - $playerinfo['torps']; $armor_max = Tki\CalcLevels::armor($playerinfo['armor'], $tkireg); $armor_free = $armor_max - $playerinfo['armor_pts']; $colonist_max = Tki\CalcLevels::holds($playerinfo['hull'], $tkireg) - $playerinfo['ship_ore'] - $playerinfo['ship_organics'] - $playerinfo['ship_goods']; if ($colonist_max < 0) { $colonist_max = 0; } $colonist_free = $colonist_max - $playerinfo['ship_colonists']; echo "\n<script>\n<!--\n"; echo "function make_max(name, val)\n"; echo "{\n"; echo " if (document.forms[0].elements[name].value != val)\n"; echo " {\n"; echo " if (val != 0)\n"; echo " {\n"; echo " document.forms[0].elements[name].value = val;\n"; echo " }\n"; echo " }\n"; echo "}\n";
$shiplevel = 0; } elseif ($shipavg < 12) { $shiplevel = 1; } elseif ($shipavg < 16) { $shiplevel = 2; } elseif ($shipavg < 20) { $shiplevel = 3; } else { $shiplevel = 4; } $holds_used = $playerinfo['ship_ore'] + $playerinfo['ship_organics'] + $playerinfo['ship_goods'] + $playerinfo['ship_colonists']; $holds_max = Tki\CalcLevels::holds($playerinfo['hull'], $tkireg); $armor_pts_max = Tki\CalcLevels::armor($playerinfo['armor'], $tkireg); $ship_fighters_max = Tki\CalcLevels::fighters($playerinfo['computer'], $tkireg); $torps_max = Tki\CalcLevels::torpedoes($playerinfo['torp_launchers'], $tkireg); $energy_max = Tki\CalcLevels::energy($playerinfo['power'], $tkireg); $escape_pod = $playerinfo['dev_escapepod'] == 'Y' ? $langvars['l_yes'] : $langvars['l_no']; $fuel_scoop = $playerinfo['dev_fuelscoop'] == 'Y' ? $langvars['l_yes'] : $langvars['l_no']; $lssd = $playerinfo['dev_lssd'] == 'Y' ? $langvars['l_yes'] : $langvars['l_no']; // Clear variables array before use, and set array with all used variables in page $variables = null; $variables['body_class'] = 'tki'; // No special CSS $variables['lang'] = $lang; $variables['color_header'] = $tkireg->color_header; $variables['color_line1'] = $tkireg->color_line1; $variables['color_line2'] = $tkireg->color_line2; $variables['playerinfo_character_name'] = $playerinfo['character_name']; $variables['playerinfo_ship_name'] = $playerinfo['ship_name']; $variables['playerinfo_credits'] = $playerinfo['credits']; $variables['playerinfo_hull'] = $playerinfo['hull'];
$rating = round($playerinfo['rating'] / 2); echo $langvars['l_att_loosepod'] . "<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', rating = ?, dev_lssd = 'N' " . "WHERE ship_id = ?", array($tkireg->start_energy, $rating, $playerinfo['ship_id'])); Tki\Db::LogDbErrors($pdo_db, $resx, __LINE__, __FILE__); Tki\Bounty::collect($pdo_db, $langvars, $targetinfo['ship_id'], $playerinfo['ship_id']); } else { echo "Didnt have pod?! {$playerinfo['dev_escapepod']}<br>"; Tki\Character::kill($pdo_db, $playerinfo['ship_id'], $langvars, $tkireg, false); Tki\Bounty::collect($pdo_db, $langvars, $targetinfo['ship_id'], $playerinfo['ship_id']); } if ($targetarmor > 0) { $salv_credits = 0; $free_ore = round($playerinfo['ship_ore'] / 2); $free_organics = round($playerinfo['ship_organics'] / 2); $free_goods = round($playerinfo['ship_goods'] / 2); $free_holds = Tki\CalcLevels::holds($targetinfo['hull'], $tkireg) - $targetinfo['ship_ore'] - $targetinfo['ship_organics'] - $targetinfo['ship_goods'] - $targetinfo['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;
Tki\Db::LogDbErrors($pdo_db, $result5, __LINE__, __FILE__); echo $langvars['l_planet_cname'] . " " . $new_name . "."; } elseif ($command == "land") { // Land menu echo $langvars['l_planet_landed'] . "<br><br>"; $update = $db->Execute("UPDATE {$db->prefix}ships SET on_planet='Y', planet_id = ? WHERE ship_id = ?;", array($planet_id, $playerinfo['ship_id'])); Tki\Db::LogDbErrors($pdo_db, $update, __LINE__, __FILE__); } elseif ($command == "leave") { // Leave menu echo $langvars['l_planet_left'] . "<br><br>"; $update = $db->Execute("UPDATE {$db->prefix}ships SET on_planet='N' WHERE ship_id = ?;", array($playerinfo['ship_id'])); Tki\Db::LogDbErrors($pdo_db, $update, __LINE__, __FILE__); } elseif ($command == "transfer") { // Transfer menu $free_holds = Tki\CalcLevels::holds($playerinfo['hull'], $tkireg) - $playerinfo['ship_ore'] - $playerinfo['ship_organics'] - $playerinfo['ship_goods'] - $playerinfo['ship_colonists']; $free_power = Tki\CalcLevels::energy($playerinfo['power'], $tkireg) - $playerinfo['ship_energy']; $langvars['l_planet_cinfo'] = str_replace("[cargo]", number_format($free_holds, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']), $langvars['l_planet_cinfo']); $langvars['l_planet_cinfo'] = str_replace("[energy]", number_format($free_power, 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']), $langvars['l_planet_cinfo']); echo $langvars['l_planet_cinfo'] . "<br><br>"; echo "<form accept-charset='utf-8' action=planet2.php?planet_id={$planet_id} method=post>"; echo "<table width=\"100%\" border=0 cellspacing=0 cellpadding=0>"; echo "<tr bgcolor=\"{$tkireg->color_header}\"><td><strong>" . $langvars['l_commodity'] . "</strong></td><td><strong>" . $langvars['l_planet'] . "</strong></td><td><strong>" . $langvars['l_ship'] . "</strong></td><td><strong>" . $langvars['l_planet_transfer_link'] . "</strong></td><td><strong>" . $langvars['l_planet_toplanet'] . "</strong></td><td><strong>" . $langvars['l_all'] . "?</strong></td></tr>"; echo "<tr bgcolor=\"{$tkireg->color_line1}\"><td>" . $langvars['l_ore'] . "</td><td>" . number_format($planetinfo['ore'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . "</td><td>" . number_format($playerinfo['ship_ore'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . "</td><td><input type=text name=transfer_ore size=10 maxlength=20></td><td><input type=checkbox name=tpore value=-1></td><td><input type=checkbox name=allore value=-1></td></tr>"; echo "<tr bgcolor=\"{$tkireg->color_line2}\"><td>" . $langvars['l_organics'] . "</td><td>" . number_format($planetinfo['organics'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . "</td><td>" . number_format($playerinfo['ship_organics'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . "</td><td><input type=text name=transfer_organics size=10 maxlength=20></td><td><input type=checkbox name=tporganics value=-1></td><td><input type=checkbox name=allorganics value=-1></td></tr>"; echo "<tr bgcolor=\"{$tkireg->color_line1}\"><td>" . $langvars['l_goods'] . "</td><td>" . number_format($planetinfo['goods'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . "</td><td>" . number_format($playerinfo['ship_goods'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . "</td><td><input type=text name=transfer_goods size=10 maxlength=20></td><td><input type=checkbox name=tpgoods value=-1></td><td><input type=checkbox name=allgoods value=-1></td></tr>"; echo "<tr bgcolor=\"{$tkireg->color_line2}\"><td>" . $langvars['l_energy'] . "</td><td>" . number_format($planetinfo['energy'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . "</td><td>" . number_format($playerinfo['ship_energy'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . "</td><td><input type=text name=transfer_energy size=10 maxlength=20></td><td><input type=checkbox name=tpenergy value=-1></td><td><input type=checkbox name=allenergy value=-1></td></tr>"; echo "<tr bgcolor=\"{$tkireg->color_line1}\"><td>" . $langvars['l_colonists'] . "</td><td>" . number_format($planetinfo['colonists'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . "</td><td>" . number_format($playerinfo['ship_colonists'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . "</td><td><input type=text name=transfer_colonists size=10 maxlength=20></td><td><input type=checkbox name=tpcolonists value=-1></td><td><input type=checkbox name=allcolonists value=-1></td></tr>"; echo "<tr bgcolor=\"{$tkireg->color_line2}\"><td>" . $langvars['l_fighters'] . "</td><td>" . number_format($planetinfo['fighters'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . "</td><td>" . number_format($playerinfo['ship_fighters'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . "</td><td><input type=text name=transfer_fighters size=10 maxlength=20></td><td><input type=checkbox name=tpfighters value=-1></td><td><input type=checkbox name=allfighters value=-1></td></tr>"; echo "<tr bgcolor=\"{$tkireg->color_line1}\"><td>" . $langvars['l_torps'] . "</td><td>" . number_format($planetinfo['torps'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . "</td><td>" . number_format($playerinfo['torps'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . "</td><td><input type=text name=transfer_torps size=10 maxlength=20></td><td><input type=checkbox name=tptorps value=-1></td><td><input type=checkbox name=alltorps value=-1></td></tr>"; echo "<tr bgcolor=\"{$tkireg->color_line2}\"><td>" . $langvars['l_credits'] . "</td><td>" . number_format($planetinfo['credits'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . "</td><td>" . number_format($playerinfo['credits'], 0, $langvars['local_number_dec_point'], $langvars['local_number_thousands_sep']) . "</td><td><input type=text name=transfer_credits size=10 maxlength=20></td><td><input type=checkbox name=tpcredits value=-1></td><td><input type=checkbox name=allcredits value=-1></td></tr>"; echo "</table><br>";
die; } // Check to see Ship and Planet are in the same sector if ($planetinfo['sector_id'] != $playerinfo['sector']) { echo $langvars['l_planet2_sector'] . "<br><br>"; Tki\Text::gotomain($pdo_db, $lang); die; } // Check if the player has enough turns if ($playerinfo['turns'] < 1) { echo $langvars['l_planet2_noturn'] . "<br><br>"; } else { $free_holds = Tki\CalcLevels::holds($playerinfo['hull'], $tkireg) - $playerinfo['ship_ore'] - $playerinfo['ship_organics'] - $playerinfo['ship_goods'] - $playerinfo['ship_colonists']; $free_power = Tki\CalcLevels::energy($playerinfo['power'], $tkireg) - $playerinfo['ship_energy']; $fighter_max = Tki\CalcLevels::fighters($playerinfo['computer'], $tkireg) - $playerinfo['ship_fighters']; $torpedo_max = Tki\CalcLevels::torpedoes($playerinfo['torp_launchers'], $tkireg) - $playerinfo['torps']; // First setup the tp flags if ($tpore != -1) { $tpore = 1; } if ($tporganics != -1) { $tporganics = 1; } if ($tpgoods != -1) { $tpgoods = 1; } if ($tpenergy != -1) { $tpenergy = 1; } if ($tpcolonists != -1) { $tpcolonists = 1;
// GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. // // File: sched_thegovernor.php echo "<strong>The Governor</strong><br><br>"; echo "Validating Ship Fighters, Torpedoes, Armor points and Credits...<br>\n"; $tdres = $db->Execute("SELECT * FROM {$db->prefix}ships"); Tki\Db::LogDbErrors($pdo_db, $tdres, __LINE__, __FILE__); $detected = (bool) false; while (!$tdres->EOF) { $playerinfo = $tdres->fields; $ship_fighters_max = Tki\CalcLevels::fighters($playerinfo['computer'], $tkireg); $torps_max = Tki\CalcLevels::torpedoes($playerinfo['torp_launchers'], $tkireg); $armor_pts_max = Tki\CalcLevels::armor($playerinfo['armor'], $tkireg); // Checking Fighters if ($playerinfo['ship_fighters'] > $ship_fighters_max) { echo "'-> <span style='color:#f00;'>Detected Fighters Overload on Ship: {$playerinfo['ship_id']}.</span> <span style='color:#0f0;'>*** FIXED ***</span><br>\n"; $resx = $db->Execute("UPDATE {$db->prefix}ships SET ship_fighters = ? WHERE ship_id = ? LIMIT 1;", array($ship_fighters_max, $playerinfo['ship_id'])); Tki\Db::LogDbErrors($pdo_db, $resx, __LINE__, __FILE__); if ($db->ErrorNo() > 0) { echo "error: " . $db->ErrorMsg() . "<br>\n"; } $detected = (bool) true; Tki\AdminLog::writeLog($pdo_db, 960, "1|{$playerinfo['ship_id']}|{$playerinfo['ship_fighters']}|{$ship_fighters_max}"); } elseif ($playerinfo['ship_fighters'] < 0) { echo "'-> <span style='color:#f00;'>Detected Fighters Flip on Ship: {$playerinfo['ship_id']}.</span> <span style='color:#0f0;'>*** FIXED ***</span><br>\n"; $resy = $db->Execute("UPDATE {$db->prefix}ships SET ship_fighters = ? WHERE ship_id = ? LIMIT 1;", array(0, $playerinfo['ship_id'])); Tki\Db::LogDbErrors($pdo_db, $resy, __LINE__, __FILE__); if ($db->ErrorNo() > 0) {
Tki\Db::LogDbErrors($pdo_db, $result4, __LINE__, __FILE__); if ($result4 !== false) { $ships_detected = 0; $ship_detected = null; while (!$result4->EOF) { $row = $result4->fields; $success = Tki\Scan::success($playerinfo['sensors'], $row['cloak']); if ($success < 5) { $success = 5; } if ($success > 95) { $success = 95; } $roll = random_int(1, 100); if ($roll < $success) { $shipavg = Tki\CalcLevels::avgTech($row, "ship"); if ($shipavg < 8) { $shiplevel = 0; } elseif ($shipavg < 12) { $shiplevel = 1; } elseif ($shipavg < 16) { $shiplevel = 2; } elseif ($shipavg < 20) { $shiplevel = 3; } else { $shiplevel = 4; } $row['shiplevel'] = $shiplevel; $ship_detected[] = $row; $ships_detected++; }
case 'retrieve': if ($defenseinfo['ship_id'] != $playerinfo['ship_id']) { echo $langvars['l_md_notyours'] . "<br><br>"; Tki\Text::gotomain($pdo_db, $lang); Tki\Footer::display($pdo_db, $lang, $tkireg, $template); die; } $quantity = preg_replace('/[^0-9]/', '', $quantity); if ($quantity < 0) { $quantity = 0; } if ($quantity > $defenseinfo['quantity']) { $quantity = $defenseinfo['quantity']; } $torpedo_max = Tki\CalcLevels::torpedoes($playerinfo['torp_launchers'], $tkireg) - $playerinfo['torps']; $fighter_max = Tki\CalcLevels::fighters($playerinfo['computer'], $tkireg) - $playerinfo['ship_fighters']; if ($defenseinfo['defense_type'] == 'F') { if ($quantity > $fighter_max) { $quantity = $fighter_max; } } if ($defenseinfo['defense_type'] == 'M') { if ($quantity > $torpedo_max) { $quantity = $torpedo_max; } } if ($quantity > 0) { $db->Execute("UPDATE {$db->prefix}sector_defense SET quantity=quantity - ? WHERE defense_id = ?", array($quantity, $defense_id)); if ($defenseinfo['defense_type'] == 'M') { $db->Execute("UPDATE {$db->prefix}ships SET torps=torps + ? WHERE ship_id = ?", array($quantity, $playerinfo['ship_id'])); } else {