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; } }