private function move_xenobe($id, $aggression, $turns)
 {
     global $db_prefix, $sector_max;
     $sql_manager = new manage_table();
     $player_manager = new manage_player();
     $manage_log = new manage_log();
     /*get xenobe current sector*/
     $xenobe_data = $sql_manager->playerinfo($id, "");
     /*check current warp links, are there any? pick one at random to warp to*/
     //$link_query = ;
     $sector_links = $sql_manager->process_query("SELECT * FROM " . $db_prefix . "links WHERE link_start='" . $xenobe_data['sector'] . "'");
     $available_links = array();
     if ($sector_links) {
         #Sector Links Detected#
         foreach ($sector_links as $row) {
             /*List all the links, and pick one at random*/
             array_push($available_links, $row['link_dest']);
         }
         $selected = array_rand($available_links, 1);
         $target_sector = $available_links[$selected];
     } else {
         #No Sector Links Detected - PICKING RANDOM FROM THE UNIVERSE#
         $target_sector = mt_rand(1, $sector_max);
         /*We want the xenobes to have a presence everywhere, for intimidation reasons*/
     }
     /*Right target sector has been selected, now we just need to move there. check for fighters and mines*/
     /*
     To override for testing purposes, you can force a single target sector using  $target_sector = 400; for example here
     */
     $total_sector_mines = $sql_manager->sector_defence_quantities($target_sector, 'M', $id, "investigate");
     $total_sector_fighters = $sql_manager->sector_defence_quantities($target_sector, 'F', $id, "investigate");
     $total_sector_fighters = (int) $total_sector_fighters;
     $total_sector_mines = (int) $total_sector_mines;
     if ($total_sector_fighters > 0 || $total_sector_mines > 0 || $total_sector_fighters > 0 && $total_sector_mines > 0) {
         if ($aggression > 0) {
             /*Attacks sector defence*/
             if ($sql_manager->move_ship($id, $target_sector, $turns)) {
                 $sector_manager = new manage_sector();
                 if ($sector_manager->sector_defence_challange($target_sector, $id)) {
                     echo "<br/>ship moved to sector<br/>";
                     /*Ship in sector, got through defences - do nothing*/
                     ##New Log ##
                     $player_manager->last_activity_stamp($id);
                     $manage_log->player_log($id, 17, $target_sector, '', '', '', "<font color='#6190a5'>Low Priority</font>", "<b>Information</b>");
                 } else {
                     echo "<br/>Ship was destroyed<br/>";
                     /*ship was destroyed trying to enter sector*/
                     if ($xenobe_data['dev_emerwarp'] == "Y") {
                         ##New Log ##
                         $manage_log->player_log($id, 19, $target_sector, '', '', '', "<font color='#FF0000'><b>Extreme Priority</b></font>", '<b><font color="#FF0000">Warning</font></b>');
                         $sql_manager->reset_ship($id);
                     } else {
                         ##New Log ##
                         $manage_log->player_log($id, 18, $target_sector, '', '', '', "<font color='#FF0000'><b>Extreme Priority</b></font>", '<b><font color="#FF0000">Warning</font></b>');
                         $sql_manager->reset_ship($id);
                         $sql_manager->kill_ship($id);
                     }
                     /*Need function to remove bounty? or ignore this? only remove bounty in ship to ship or ship to planet combat situations?*/
                 }
             } else {
                 ##not enough turns##
                 /*move failed, stay in sector*/
             }
         } else {
             /*Avoids sector*/
         }
     } else {
         if ($target_sector > 0) {
             if ($sql_manager->move_ship($id, $target_sector, $turns)) {
                 $player_manager->last_activity_stamp($id);
                 /*no defences sucessful move*/
             } else {
                 /*move failed, stay in sector*/
             }
         } else {
             /*Avoids sector*/
         }
     }
 }
 public function sector_defence_challange($sector, $id)
 {
     global $db_prefix;
     global $torp_dmg_rate;
     global $level_factor;
     $sql_manager = new manage_table();
     $player_manager = new manage_player();
     $ship_manager = new manage_ship();
     $manage_log = new manage_log();
     /*load player information*/
     $player_data = $sql_manager->playerinfo($id, "");
     /*Load sector information - Team defences are removed from the quantities, so if there are any left, it must be hostile, take the apropriate action*/
     $total_sector_mines = $sql_manager->sector_defence_quantities($sector, 'M', $id, "investigate");
     $total_sector_fighters = $sql_manager->sector_defence_quantities($sector, 'F', $id, "investigate");
     $total_sector_fighters = (int) $total_sector_fighters;
     $total_sector_mines = (int) $total_sector_mines;
     if ($total_sector_fighters > 0 || $total_sector_mines > 0 || $total_sector_fighters > 0 && $total_sector_mines > 0) {
         ##Hostile defences detected!##
         /*Mark player as in combat*/
         if ($sql_manager->ship_in_sector_defence_combat($sector, $id)) {
             ##Log this##
             /*Log player engaging sector defences*/
         } else {
             ##log this##
             /*Failed to update ship and set to in combat*/
         }
         ##YOU HAVE ENGAGED THE SECTOR DEFENCES##
         $sector_defence_fighters = $total_sector_fighters;
         $playerbeams = $ship_manager->number_beams($player_data['beams']);
         if ($playerbeams > $player_data['ship_energy']) {
             /*Player Beams Armed*/
             $playerbeams = $player_data['ship_energy'];
         }
         $player_data['ship_energy'] = $player_data['ship_energy'] - $playerbeams;
         $playershields = $ship_manager->number_shields($player_data['shields']);
         if ($playershields > $player_data['ship_energy']) {
             /*Player Shields Raised*/
             $playershields = $player_data['ship_energy'];
         }
         $playertorpnum = round(pow($level_factor, $player_data['torp_launchers'])) * 2;
         if ($playertorpnum > $player_data['torps']) {
             /*Torpedos places in firing tubes*/
             $playertorpnum = $player_data['torps'];
         }
         /*Torpedo warheads armed*/
         $playertorpdmg = $torp_dmg_rate * $playertorpnum;
         /*polerize the armour plating*/
         $playerarmor = $player_data['armor_pts'];
         /*pilots to fighter bays*/
         $playerfighters = $player_data['ship_fighters'];
         /*fetch amount of sector mines in minefield*/
         $sector_defence_minefield = $total_sector_mines;
         if ($sector_defence_minefield > 1) {
             /*change of getting through minefield*/
             $roll = mt_rand(1, $sector_defence_minefield);
         } else {
             $roll = 1;
         }
         /*total mines which are attracted to the hull of the players ship*/
         $sector_defence_minefield = $sector_defence_minefield - $roll;
         /*prepare mine deflectors for launch*/
         $playerminedeflect = $player_data['dev_minedeflector'];
         /*Where are the fighters? inside or outside the fighter formation?*/
         $fighter_or_mines_first = mt_rand(1, 100);
         if ($fighter_or_mines_first > 50) {
             /*Engages the fighters first*/
             $fighter_results = $this->sector_fighter_engaged($playerbeams, $sector_defence_fighters, $playertorpdmg, $playerarmor, $playerfighters, $playershields, $id);
             $playerbeams = $fighter_results[0];
             $sector_defence_fighters = $fighter_results[1];
             $playertorpdmg = $fighter_results[2];
             $playerarmor = $fighter_results[3];
             $playerfighters = $fighter_results[4];
             $playershields = $fighter_results[5];
             if ($playerarmor > 0) {
                 if ($playerminedeflect >= $roll) {
                     /*do nothing... players fought off the fighters, and found a hole in minefield*/
                     /*ship is in sector \o/*/
                     if ($sql_manager->ship_in_sector_defence_combat("", $id)) {
                         ###
                         ##
                         ## Update Sector Information
                         ##
                         ###
                         $sql_manager->manage_sector_defences($sector, $sector_defence_fighters, $sector_defence_minefield, $id);
                         ###
                         ##
                         ## Update Player Stats
                         ##
                         ###
                         /*Leftover torpedoes?*/
                         $y = $playertorpdmg / $torp_dmg_rate;
                         $torpedoes_left = $y;
                         /*Leftover energy?*/
                         $t = $playershields + $playerbeams;
                         $energy_left = $player_data['ship_energy'] - $t;
                         if ($energy_left < 0) {
                             $energy_left = 0;
                         }
                         $updated_stats = array('cleared_defences' => ' ', 'ship_energy' => $energy_left, 'dev_minedeflector' => $playerminedeflect, 'armor_pts' => $playerarmor, 'ship_fighters' => $playerfighters, 'torps' => $torpedoes_left);
                         if ($sql_manager->updatePlayer($id, "ships", $updated_stats)) {
                             ##Log this##
                             /*Log player got passed sector defences*/
                             return true;
                         } else {
                             ##Log this##
                             /*Log player failed to update their stats*/
                             return false;
                         }
                     } else {
                         ##log this##
                         /*Failed to update ship setting got into sector - fail entire move*/
                         return false;
                     }
                 } else {
                     $minefield_results = $this->sector_minefield_engaged($playerminedeflect, $playershields, $playerarmor, $sector_defence_minefield, $id);
                     $playerminedeflect = $minefield_results[0];
                     $playershields = $minefield_results[1];
                     $playerarmor = $minefield_results[2];
                     $sector_defence_minefield = $minefield_results[3];
                     if ($playerarmor > 0) {
                         /*ship is in sector \o/*/
                         if ($sql_manager->ship_in_sector_defence_combat("", $id)) {
                             ###
                             ##
                             ## Update Sector Information
                             ##
                             ###
                             $sql_manager->manage_sector_defences($sector, $sector_defence_fighters, $sector_defence_minefield, $id);
                             ###
                             ##
                             ## Update Player Stats
                             ##
                             ###
                             /*Leftover torpedoes?*/
                             $y = $playertorpdmg / $torp_dmg_rate;
                             $torpedoes_left = $y;
                             /*Leftover energy?*/
                             $t = $playershields + $playerbeams;
                             $energy_left = $player_data['ship_energy'] - $t;
                             if ($energy_left < 0) {
                                 $energy_left = 0;
                             }
                             $updated_stats = array('cleared_defences' => ' ', 'ship_energy' => $energy_left, 'dev_minedeflector' => $playerminedeflect, 'armor_pts' => $playerarmor, 'ship_fighters' => $playerfighters, 'torps' => $torpedoes_left);
                             if ($sql_manager->updatePlayer($id, "ships", $updated_stats)) {
                                 ##Log this##
                                 /*Log player got passed sector defences*/
                                 return true;
                             } else {
                                 ##Log this##
                                 /*Log player failed to update their stats*/
                                 return false;
                             }
                         } else {
                             ##log this##
                             /*Failed to update ship setting got into sector - fail entire move*/
                             return false;
                         }
                     } else {
                         ###
                         ##
                         ## Update Sector Information
                         ##
                         ###
                         $sql_manager->manage_sector_defences($sector, $sector_defence_fighters, $sector_defence_minefield, $id);
                         //ship destroyed!
                         return false;
                     }
                 }
             } else {
                 echo "player died";
                 ###
                 ##
                 ## Update Sector Information
                 ##
                 ###
                 $sql_manager->manage_sector_defences($sector, $sector_defence_fighters, $sector_defence_minefield, $id);
                 echo "passed function";
                 //ship destroyed!
                 return false;
             }
         } else {
             /*Engages the minefield first*/
             if ($playerminedeflect >= $roll) {
                 /*do nothing... hole in minefield sucessfully found. Now lets go and get those fighters...*/
             } else {
                 $minefield_results = $this->sector_minefield_engaged($playerminedeflect, $playershields, $playerarmor, $sector_defence_minefield, $id);
                 $playerminedeflect = $minefield_results[0];
                 $playershields = $minefield_results[1];
                 $playerarmor = $minefield_results[2];
                 $sector_defence_minefield = $minefield_results[3];
             }
             if ($playerarmor > 0) {
                 $fighter_results = $this->sector_fighter_engaged($playerbeams, $sector_defence_fighters, $playertorpdmg, $playerarmor, $playerfighters, $playershields, $id);
                 $playerbeams = $fighter_results[0];
                 $sector_defence_fighters = $fighter_results[1];
                 $playertorpdmg = $fighter_results[2];
                 $playerarmor = $fighter_results[3];
                 $playerfighters = $fighter_results[4];
                 $playershields = $fighter_results[5];
                 if ($playerarmor > 0) {
                     /*ship is in sector \o/*/
                     if ($sql_manager->ship_in_sector_defence_combat("", $id)) {
                         ###
                         ##
                         ## Update Sector Information
                         ##
                         ###
                         $sql_manager->manage_sector_defences($sector, $sector_defence_fighters, $sector_defence_minefield, $id);
                         ###
                         ##
                         ## Update Player Stats
                         ##
                         ###
                         /*Leftover torpedoes?*/
                         $y = $playertorpdmg / $torp_dmg_rate;
                         $torpedoes_left = $y;
                         /*Leftover energy?*/
                         $t = $playershields + $playerbeams;
                         $energy_left = $player_data['ship_energy'] - $t;
                         if ($energy_left < 0) {
                             $energy_left = 0;
                         }
                         $updated_stats = array('cleared_defences' => ' ', 'ship_energy' => $energy_left, 'dev_minedeflector' => $playerminedeflect, 'armor_pts' => $playerarmor, 'ship_fighters' => $playerfighters, 'torps' => $torpedoes_left);
                         if ($sql_manager->updatePlayer($id, "ships", $updated_stats)) {
                             ##Log this##
                             /*Log player got passed sector defences*/
                             return true;
                         } else {
                             ##Log this##
                             /*Log player failed to update their stats*/
                             return false;
                         }
                     } else {
                         ##log this##
                         /*Failed to update ship setting got into sector - fail entire move*/
                         return false;
                     }
                 } else {
                     ###
                     ##
                     ## Update Sector Information
                     ##
                     ###
                     $sql_manager->manage_sector_defences($sector, $sector_defence_fighters, $sector_defence_minefield, $id);
                     //ship destroyed!
                     return false;
                 }
             } else {
                 ###
                 ##
                 ## Update Sector Information
                 ##
                 ###
                 $sql_manager->manage_sector_defences($sector, $sector_defence_fighters, $sector_defence_minefield, $id);
                 //ship destroyed!
                 return false;
             }
         }
     } else {
         /*NO sector defences, or sector defences belong to self or friend. Player in sector.*/
         return true;
     }
 }