Example #1
0
 $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) {
Example #2
0
 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;
Example #3
0
             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";
Example #4
0
    $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'];
Example #5
0
     $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;
Example #6
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>";
Example #7
0
    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;
Example #8
0
//  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) {
Example #9
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++;
         }
Example #10
0
 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 {