Example #1
0
function db_kill_player($ship_id, $remove_planets = false)
{
    global $default_prod_ore;
    global $default_prod_organics;
    global $default_prod_goods;
    global $default_prod_energy;
    global $default_prod_fighters;
    global $default_prod_torp;
    global $db, $l;
    $resa = $db->Execute("UPDATE {$db->prefix}ships SET ship_destroyed='Y', on_planet='N', sector=0, cleared_defences=' ' WHERE ship_id=?", array($ship_id));
    db_op_result($db, $resa, __LINE__, __FILE__);
    $resb = $db->Execute("DELETE FROM {$db->prefix}bounty WHERE placed_by = ?", array($ship_id));
    db_op_result($db, $resb, __LINE__, __FILE__);
    $res = $db->Execute("SELECT DISTINCT sector_id FROM {$db->prefix}planets WHERE owner=? AND base='Y'", array($ship_id));
    db_op_result($db, $res, __LINE__, __FILE__);
    $i = 0;
    while (!$res->EOF && $res) {
        $sectors[$i] = $res->fields['sector_id'];
        $i++;
        $res->MoveNext();
    }
    if ($remove_planets == true && $ship_id > 0) {
        $resc = $db->Execute("DELETE FROM {$db->prefix}planets WHERE owner = ?", array($ship_id));
        db_op_result($db, $resc, __LINE__, __FILE__);
    } else {
        $resd = $db->Execute("UPDATE {$db->prefix}planets SET owner=0, corp=0, fighters=0, base='N' WHERE owner=?", array($ship_id));
        db_op_result($db, $resd, __LINE__, __FILE__);
    }
    if (!empty($sectors)) {
        foreach ($sectors as $sector) {
            calc_ownership($sector);
        }
    }
    $rese = $db->Execute("DELETE FROM {$db->prefix}sector_defence WHERE ship_id=?", array($ship_id));
    db_op_result($db, $rese, __LINE__, __FILE__);
    $res = $db->Execute("SELECT zone_id FROM {$db->prefix}zones WHERE corp_zone='N' AND owner=?", array($ship_id));
    db_op_result($db, $res, __LINE__, __FILE__);
    $zone = $res->fields;
    $resf = $db->Execute("UPDATE {$db->prefix}universe SET zone_id=1 WHERE zone_id=?", array($zone['zone_id']));
    db_op_result($db, $resf, __LINE__, __FILE__);
    $query = $db->Execute("SELECT character_name FROM {$db->prefix}ships WHERE ship_id=?", array($ship_id));
    db_op_result($db, $query, __LINE__, __FILE__);
    $name = $query->fields;
    $headline = $name['character_name'] . $l->get('l_killheadline');
    $newstext = str_replace("[name]", $name['character_name'], $l->get('l_news_killed'));
    $news = $db->Execute("INSERT INTO {$db->prefix}news (headline, newstext, user_id, date, news_type) VALUES (?,?,?,NOW(), 'killed')", array($headline, $newstext, $ship_id));
    db_op_result($db, $news, __LINE__, __FILE__);
}
function xenobetoplanet($planet_id)
{
    // Xenobe planet attack code
    global $playerinfo, $planetinfo, $torp_dmg_rate, $level_factor;
    global $rating_combat_factor, $upgrade_cost, $upgrade_factor, $sector_max, $xenobeisdead, $db;
    $resh = $db->Execute("LOCK TABLES {$db->prefix}ships WRITE, {$db->prefix}universe WRITE, {$db->prefix}planets WRITE, {$db->prefix}news WRITE, {$db->prefix}logs WRITE");
    db_op_result($db, $resh, __LINE__, __FILE__);
    $resultp = $db->Execute("SELECT * FROM {$db->prefix}planets WHERE planet_id=?", array($planet_id));
    // Get target planet information
    db_op_result($db, $resultp, __LINE__, __FILE__);
    $planetinfo = $resultp->fields;
    $resulto = $db->Execute("SELECT * FROM {$db->prefix}ships WHERE ship_id=?", array($planetinfo['owner']));
    // Get target player information
    db_op_result($db, $resulto, __LINE__, __FILE__);
    $ownerinfo = $resulto->fields;
    $base_factor = $planetinfo['base'] == 'Y' ? $basedefense : 0;
    // Planet beams
    $targetbeams = NUM_BEAMS($ownerinfo['beams'] + $base_factor);
    if ($targetbeams > $planetinfo['energy']) {
        $targetbeams = $planetinfo['energy'];
    }
    $planetinfo['energy'] -= $targetbeams;
    // Planet shields
    $targetshields = NUM_SHIELDS($ownerinfo['shields'] + $base_factor);
    if ($targetshields > $planetinfo['energy']) {
        $targetshields = $planetinfo['energy'];
    }
    $planetinfo['energy'] -= $targetshields;
    // Planet torps
    $torp_launchers = round(pow($level_factor, $ownerinfo['torp_launchers'] + $base_factor)) * 10;
    $torps = $planetinfo['torps'];
    $targettorps = $torp_launchers;
    if ($torp_launchers > $torps) {
        $targettorps = $torps;
    }
    $planetinfo['torps'] -= $targettorps;
    $targettorpdmg = $torp_dmg_rate * $targettorps;
    // Planet fighters
    $targetfighters = $planetinfo['fighters'];
    // Attacker beams
    $attackerbeams = NUM_BEAMS($playerinfo['beams']);
    if ($attackerbeams > $playerinfo['ship_energy']) {
        $attackerbeams = $playerinfo['ship_energy'];
    }
    $playerinfo['ship_energy'] -= $attackerbeams;
    // Attacker shields
    $attackershields = NUM_SHIELDS($playerinfo['shields']);
    if ($attackershields > $playerinfo['ship_energy']) {
        $attackershields = $playerinfo['ship_energy'];
    }
    $playerinfo['ship_energy'] -= $attackershields;
    // Attacker torps
    $attackertorps = round(pow($level_factor, $playerinfo['torp_launchers'])) * 2;
    if ($attackertorps > $playerinfo['torps']) {
        $attackertorps = $playerinfo['torps'];
    }
    $playerinfo['torps'] -= $attackertorps;
    $attackertorpdamage = $torp_dmg_rate * $attackertorps;
    // Attacker fighters
    $attackerfighters = $playerinfo['ship_fighters'];
    // Attacker armor
    $attackerarmor = $playerinfo['armor_pts'];
    // Begin combat
    if ($attackerbeams > 0 && $targetfighters > 0) {
        if ($attackerbeams > $targetfighters) {
            $lost = $targetfighters;
            $targetfighters = 0;
            // Target loses all fighters
            $attackerbeams = $attackerbeams - $lost;
            // Attacker loses beams equal to Target fighters
        } else {
            $targetfighters = $targetfighters - $attackerbeams;
            // Target loses fighters equal to attacker beams
            $attackerbeams = 0;
            // Attacker loses all beams
        }
    }
    if ($attackerfighters > 0 && $targetbeams > 0) {
        if ($targetbeams > round($attackerfighters / 2)) {
            $lost = $attackerfighters - round($attackerfighters / 2);
            // Attacker loses half of all fighters
            $attackerfighters = $attackerfighters - $lost;
            $targetbeams = $targetbeams - $lost;
            // Target loses beams equal to half of attackers fighters
        } else {
            // Target beams are less than half of attackers fighters
            $attackerfighters = $attackerfighters - $targetbeams;
            // Attacker loses fighters equal to target beams
            $targetbeams = 0;
            // Target loses all beams
        }
    }
    if ($attackerbeams > 0) {
        if ($attackerbeams > $targetshields) {
            $attackerbeams = $attackerbeams - $targetshields;
            // Attacker loses beams equal to target shields
            $targetshields = 0;
            // Target loses all shields
        } else {
            $targetshields = $targetshields - $attackerbeams;
            // Target loses shields equal to attacker beams
            $attackerbeams = 0;
            // Attacker loses all beams
        }
    }
    if ($targetbeams > 0) {
        if ($targetbeams > $attackershields) {
            $targetbeams = $targetbeams - $attackershields;
            // Target loses beams equal to attacker shields
            $attackershields = 0;
            // Attacker loses all shields
        } else {
            $attackershields = $attackershields - $targetbeams;
            // Attacker loses sheilds equal to target beams
            $targetbeams = 0;
            // Target loses all beams
        }
    }
    if ($targetbeams > 0) {
        if ($targetbeams > $attackerarmor) {
            $targetbeams = $targetbeams - $attackerarmor;
            // Target loses beams equal to attacker armor
            $attackerarmor = 0;
            // Attacker loses all armor (attacker destroyed)
        } else {
            $attackerarmor = $attackerarmor - $targetbeams;
            // Attacker loses armor equal to target beams
            $targetbeams = 0;
            // Target loses all beams
        }
    }
    if ($targetfighters > 0 && $attackertorpdamage > 0) {
        if ($attackertorpdamage > $targetfighters) {
            $lost = $targetfighters;
            $targetfighters = 0;
            // Target loses all fighters
            $attackertorpdamage = $attackertorpdamage - $lost;
            // Attacker loses fired torpedoes equal to target fighters
        } else {
            $targetfighters = $targetfighters - $attackertorpdamage;
            // Target loses fighters equal to attacker torpedoes fired
            $attackertorpdamage = 0;
            // Attacker loses all torpedoes fired
        }
    }
    if ($attackerfighters > 0 && $targettorpdmg > 0) {
        if ($targettorpdmg > round($attackerfighters / 2)) {
            $lost = $attackerfighters - round($attackerfighters / 2);
            $attackerfighters = $attackerfighters - $lost;
            // Attacker loses half of all fighters
            $targettorpdmg = $targettorpdmg - $lost;
            // Target loses fired torpedoes equal to half of attacker fighters
        } else {
            // Target fired torpedoes less than or equal to half of attacker fighters
            $attackerfighters = $attackerfighters - $targettorpdmg;
            // Attacker loses fighters equal to target torpedoes fired
            $targettorpdmg = 0;
            // Tartget loses all torpedoes fired
        }
    }
    if ($targettorpdmg > 0) {
        if ($targettorpdmg > $attackerarmor) {
            $targettorpdmg = $targettorpdmg - $attackerarmor;
            // Target loses fired torpedoes equal to attacker armor
            $attackerarmor = 0;
            // Attacker loses all armor (Attacker destroyed)
        } else {
            // Target fired torpedoes less than or equal to half attacker armor
            $attackerarmor = $attackerarmor - $targettorpdmg;
            // Attacker loses armor equal to the target torpedoes fired
            $targettorpdmg = 0;
            // Target loses all torpedoes fired
        }
    }
    if ($attackerfighters > 0 && $targetfighters > 0) {
        if ($attackerfighters > $targetfighters) {
            $temptargfighters = 0;
            // Target will lose all fighters
        } else {
            // Attackers fighters less than or equal to target fighters
            $temptargfighters = $targetfighters - $attackerfighters;
            // Target will loose fighters equal to attacker fighters
        }
        if ($targetfighters > $attackerfighters) {
            // Target fighters greater than attackers fighters
            $tempplayfighters = 0;
            // Attackerwill loose ALL fighters
        } else {
            // Target fighters less than or equal to attackers fighters
            $tempplayfighters = $attackerfighters - $targetfighters;
            // Attacker will loose fighters equal to target fighters
        }
        $attackerfighters = $tempplayfighters;
        $targetfighters = $temptargfighters;
    }
    if ($targetfighters > 0) {
        if ($targetfighters > $attackerarmor) {
            // Target fighters greater than attackers armor
            $attackerarmor = 0;
            // attacker loses all armor (attacker destroyed)
        } else {
            // Target fighters less than or equal to attackers armor
            $attackerarmor = $attackerarmor - $targetfighters;
            // attacker loses armor equal to target fighters
        }
    }
    // Fix negative values
    if ($attackerfighters < 0) {
        $attackerfighters = 0;
    }
    if ($attackertorps < 0) {
        $attackertorps = 0;
    }
    if ($attackershields < 0) {
        $attackershields = 0;
    }
    if ($attackerbeams < 0) {
        $attackerbeams = 0;
    }
    if ($attackerarmor < 0) {
        $attackerarmor = 0;
    }
    if ($targetfighters < 0) {
        $targetfighters = 0;
    }
    if ($targettorps < 0) {
        $targettorps = 0;
    }
    if ($targetshields < 0) {
        $targetshields = 0;
    }
    if ($targetbeams < 0) {
        $targetbeams = 0;
    }
    if (!$attackerarmor > 0) {
        playerlog($db, $playerinfo['ship_id'], LOG_RAW, "Ship destroyed by planetary defenses on planet {$planetinfo['name']}");
        db_kill_player($playerinfo['ship_id']);
        $xenobeisdead = 1;
        $free_ore = round($playerinfo['ship_ore'] / 2);
        $free_organics = round($playerinfo['ship_organics'] / 2);
        $free_goods = round($playerinfo['ship_goods'] / 2);
        $ship_value = $upgrade_cost * (round(pow($upgrade_factor, $playerinfo['hull'])) + round(pow($upgrade_factor, $playerinfo['engines'])) + round(pow($upgrade_factor, $playerinfo['power'])) + round(pow($upgrade_factor, $playerinfo['computer'])) + round(pow($upgrade_factor, $playerinfo['sensors'])) + round(pow($upgrade_factor, $playerinfo['beams'])) + round(pow($upgrade_factor, $playerinfo['torp_launchers'])) + round(pow($upgrade_factor, $playerinfo['shields'])) + round(pow($upgrade_factor, $playerinfo['armor'])) + round(pow($upgrade_factor, $playerinfo['cloak'])));
        $ship_salvage_rate = mt_rand(10, 20);
        $ship_salvage = $ship_value * $ship_salvage_rate / 100;
        $fighters_lost = $planetinfo['fighters'] - $targetfighters;
        // Log attack to planet owner
        playerlog($db, $planetinfo['owner'], LOG_PLANET_NOT_DEFEATED, "{$planetinfo['name']}|{$playerinfo['sector']}|Xenobe {$playerinfo['character_name']}|{$free_ore}|{$free_organics}|{$free_goods}|{$ship_salvage_rate}|{$ship_salvage}");
        // Update planet
        $resi = $db->Execute("UPDATE {$db->prefix}planets SET energy=?, fighters=fighters-?, torps=torps-?, ore=ore+?, goods=goods+?, organics=organics+?, credits=credits+? WHERE planet_id=?", array($planetinfo['energy'], $fighters_lost, $targettorps, $free_ore, $free_goods, $free_organics, $ship_salvage, $planetinfo['planet_id']));
        db_op_result($db, $resi, __LINE__, __FILE__);
    } else {
        $armor_lost = $playerinfo['armor_pts'] - $attackerarmor;
        $fighters_lost = $playerinfo['ship_fighters'] - $attackerfighters;
        $target_fighters_lost = $planetinfo['ship_fighters'] - $targetfighters;
        playerlog($db, $playerinfo['ship_id'], LOG_RAW, "Made it past defenses on planet {$planetinfo['name']}");
        // Update attackers
        $resj = $db->Execute("UPDATE {$db->prefix}ships SET ship_energy=?, ship_fighters=ship_fighters-?, torps=torps-?, armor_pts=armor_pts-? WHERE ship_id=?", array($playerinfo['ship_energy'], $fighters_lost, $attackertorps, $armor_lost, $playerinfo['ship_id']));
        db_op_result($db, $resj, __LINE__, __FILE__);
        $playerinfo['ship_fighters'] = $attackerfighters;
        $playerinfo['torps'] = $attackertorps;
        $playerinfo['armor_pts'] = $attackerarmor;
        // Update planet
        $resk = $db->Execute("UPDATE {$db->prefix}planets SET energy=?, fighters=?, torps=torps-? WHERE planet_id=?", array($planetinfo['energy'], $targetfighters, $targettorps, $planetinfo['planet_id']));
        db_op_result($db, $resk, __LINE__, __FILE__);
        $planetinfo['fighters'] = $targetfighters;
        $planetinfo['torps'] = $targettorps;
        // Now we must attack all ships on the planet one by one
        $resultps = $db->Execute("SELECT ship_id,ship_name FROM {$db->prefix}ships WHERE planet_id=? AND on_planet='Y'", array($planetinfo['planet_id']));
        db_op_result($db, $resultps, __LINE__, __FILE__);
        $shipsonplanet = $resultps->RecordCount();
        if ($shipsonplanet > 0) {
            while (!$resultps->EOF && $xenobeisdead < 1) {
                $onplanet = $resultps->fields;
                xenobetoship($onplanet['ship_id']);
                $resultps->MoveNext();
            }
        }
        $resultps = $db->Execute("SELECT ship_id,ship_name FROM {$db->prefix}ships WHERE planet_id=? AND on_planet='Y'", array($planetinfo['planet_id']));
        db_op_result($db, $resultps, __LINE__, __FILE__);
        $shipsonplanet = $resultps->RecordCount();
        if ($shipsonplanet == 0 && $xenobeisdead < 1) {
            // Must have killed all ships on the planet
            playerlog($db, $playerinfo['ship_id'], LOG_RAW, "Defeated all ships on planet {$planetinfo['name']}");
            // Log attack to planet owner
            playerlog($db, $planetinfo['owner'], LOG_PLANET_DEFEATED, "{$planetinfo['name']}|{$playerinfo['sector']}|{$playerinfo['character_name']}");
            // Update planet
            $resl = $db->Execute("UPDATE {$db->prefix}planets SET fighters=0, torps=0, base='N', owner=0, corp=0 WHERE planet_id=?", array($planetinfo['planet_id']));
            db_op_result($db, $resl, __LINE__, __FILE__);
            calc_ownership($planetinfo['sector_id']);
        } else {
            // Must have died trying
            playerlog($db, $playerinfo['ship_id'], LOG_RAW, "We were KILLED by ships defending planet {$planetinfo['name']}");
            // Log attack to planet owner
            playerlog($db, $planetinfo['owner'], LOG_PLANET_NOT_DEFEATED, "{$planetinfo['name']}|{$playerinfo['sector']}|Xenobe {$playerinfo['character_name']}|0|0|0|0|0");
            // No salvage for planet because it went to the ship that won
        }
    }
    $resx = $db->Execute("UNLOCK TABLES");
    db_op_result($db, $resx, __LINE__, __FILE__);
}
Example #3
0
<?php 
    bigtitle();
    if ($action == "planetcorp") {
        echo $l_corpm_tocorp . "<br>";
        $result = $db->Execute("UPDATE {$db->prefix}planets SET corp='{$playerinfo['team']}', owner={$playerinfo['ship_id']} WHERE planet_id={$planet_id}");
        db_op_result($db, $result, __LINE__, __FILE__, $db_logging);
        $ownership = calc_ownership($playerinfo['sector']);
        if (!empty($ownership)) {
            echo "<p>{$ownership}<p>";
        }
    }
    if ($action == "planetpersonal") {
        echo $l_corpm_topersonal . "<br>";
        $result = $db->Execute("UPDATE {$db->prefix}planets SET corp='0', owner={$playerinfo['ship_id']} WHERE planet_id={$planet_id}");
        db_op_result($db, $result, __LINE__, __FILE__, $db_logging);
        $ownership = calc_ownership($playerinfo['sector']);
        // Kick other players off the planet
        $result = $db->Execute("UPDATE {$db->prefix}ships SET on_planet='N' WHERE on_planet='Y' AND planet_id = {$planet_id} AND ship_id <> {$playerinfo['ship_id']}");
        db_op_result($db, $result, __LINE__, __FILE__, $db_logging);
        if (!empty($ownership)) {
            echo "<p>" . $ownership . "<p>";
        }
    }
    TEXT_GOTOMAIN();
    ?>
</div></div>
<?php 
} else {
    echo "<br>" . $l_corpm_exploit . "<br>";
    TEXT_GOTOMAIN();
    ?>
function db_kill_player($player_id,$ship_id,$killer_id)
{ 
  global $default_prod_ore;
  global $default_prod_organics;
  global $default_prod_goods;
  global $default_prod_energy;
  global $default_prod_fighters;
  global $default_prod_torp;
  global $gameroot;
  global $db,$dbtables;
  global $l_killheadline,$l_news_killed;
  global $ibank_interest, $ibank_loaninterest;
  global $ore_price;
  global $organics_price;
  global $goods_price;
  global $energy_price;
  global $upgrade_cost;
  global $upgrade_factor;
  global $dev_genesis_price;
  global $dev_beacon_price;
  global $dev_emerwarp_price;
  global $dev_warpedit_price;
  global $dev_minedeflector_price;
  global $dev_escapepod_price;
  global $dev_fuelscoop_price;
  global $dev_lssd_price;
  global $fighter_price;
  global $torpedo_price;
  global $armour_price;
  global $colonist_price;
  global $base_credits;
  global $base_ore;
  global $base_goods;
  global $base_organics;
  global $sector_max;
    
  $db->Execute("UPDATE $dbtables[players] SET sector=0, on_planet='N' WHERE player_id=$player_id");
  $res = $db->Execute("SELECT * FROM $dbtables[ships] WHERE ship_id=$ship_id");
  $shipinfo = $res->fields;
  if ($shipinfo[tow] > 0) {
  	if ($killer_id==-2) {
		$sector = rand(1,$sector_max);
		$db->Execute("UPDATE $dbtables[ships] SET player_id=0,on_planet='N',sector=$sector WHERE ship_id=$shipinfo[tow]");
	} else {
		$db->Execute("UPDATE $dbtables[ships] SET player_id=0,on_planet='N',sector=$shipinfo[sector] WHERE ship_id=$shipinfo[tow]");
	}
  }
  $db->Execute("UPDATE $dbtables[ships] SET type=1, hull=0, engines=0, power=0, computer=0,sensors=0, beams=0, torp_launchers=0, torps=0, armour=0, armour_pts='$start_armour', cloak=0, shields=0, sector=0, ship_ore=0, ship_organics=0, ship_energy='$start_energy', ship_colonists=0, ship_goods=0, ship_fighters='$start_fighters', tow=0, on_planet='N', dev_warpedit=0, dev_genesis=0, dev_beacon=0, dev_emerwarp=0, dev_escapepod='N', dev_fuelscoop='N', dev_minedeflector=0, ship_destroyed='Y',dev_lssd='N',cleared_defences=' ',fur_tech='N' where ship_id=$ship_id AND player_id=$player_id");

  $db->Execute("DELETE from $dbtables[bounty] WHERE placed_by = $player_id");
  // Now the IGB gets to recover their loan if there is one
  if ($killer_id != -1) {
	$db->Execute("UPDATE $dbtables[ibank_accounts] SET loantime=0 WHERE player_id=$player_id");
	if ($killer_id != -2) {
		$playerDeath = true;
	} else {
		// Suicide
		$db->Execute("UPDATE $dbtables[players] SET turns=turns-1500, turns_used=turns_used+1500 WHERE player_id=$player_id");
	}
	include("sched_IGB.php");
	$playerDeath=false;
  }
  $res = $db->Execute("SELECT DISTINCT sector_id FROM $dbtables[planets] WHERE owner='$player_id' AND base='Y'");
  $i=0;

  while(!$res->EOF && $res)
  {
    $sectors[$i] = $res->fields[sector_id];
    $i++;
    $res->MoveNext();
  }

  $db->Execute("UPDATE $dbtables[planets] SET owner=0,fighters=0, base='N' WHERE owner=$player_id");

  if(!empty($sectors))
  {
    foreach($sectors as $sector)
    {
      calc_ownership($sector);
    }
  }
  $db->Execute("DELETE FROM $dbtables[sector_defence] where player_id=$player_id");

  $res = $db->Execute("SELECT zone_id FROM $dbtables[zones] WHERE corp_zone='N' AND owner=$player_id");
  $zone = $res->fields;

$db->Execute("UPDATE $dbtables[universe] SET zone_id=1 WHERE zone_id=$zone[zone_id]");



$query = $db->Execute("select character_name,email from $dbtables[players] where player_id='$player_id'");
$name = $query->fields;
// Update the killers stats
// Do we have an entry for this player already?
$res=$db->Execute("SELECT * FROM $dbtables[kills] WHERE player_id=$killer_id");
if ($res->EOF) {
	$res=$db->Execute("INSERT INTO $dbtables[kills] SET player_id=$killer_id");
}
$res=$db->Execute("SELECT * FROM $dbtables[kills] WHERE player_id=$playerinf[player_id]");
if ($res->EOF) {
	$res=$db->Execute("INSERT INTO $dbtables[kills] SET player_id=$playerinf[player_id]");
}
// Find out if furangee
if (strstr($name[email],"furangee")) {
	$db->Execute("UPDATE $dbtables[kills] SET fks=fks+1 WHERE player_id=$killer_id");
} else {
	// Player killed
	$db->Execute("UPDATE $dbtables[kills] SET pks=pks+1 WHERE player_id=$killer_id");
}
// Update killed stats
$db->Execute("UPDATE $dbtables[kills] SET deaths=deaths+1 WHERE player_id=$player_id");

$headline = $name[character_name] . $l_killheadline;


$newstext=str_replace("[name]",$name[character_name],$l_news_killed);

$news = $db->Execute("INSERT INTO $dbtables[news] (headline, newstext, user_id, date, news_type) VALUES ('$headline','$newstext','$player_id',NOW(), 'killed')");

// Clear bank BUG!!!
$db->Execute("UPDATE $dbtables[ibank_accounts] SET balance='0' WHERE player_id=$player_id") ;
// Final clean up
$db->Execute("UPDATE $dbtables[players] SET credits=0 WHERE player_id=$player_id");
}
Example #5
0
         db_op_result($db, $resy, __LINE__, __FILE__, $db_logging);
         $resz = $db->Execute("UPDATE {$db->prefix}teams SET number_of_members = number_of_members - 1, creator=? WHERE id=?;", array($newcreator, $whichteam));
         db_op_result($db, $resz, __LINE__, __FILE__, $db_logging);
         $res = $db->Execute("SELECT DISTINCT sector_id FROM {$db->prefix}planets WHERE owner=? AND base='Y' AND corp!=0;", array($playerinfo['ship_id']));
         db_op_result($db, $res, __LINE__, __FILE__, $db_logging);
         $i = 0;
         while (!$res->EOF) {
             $sectors[$i] = $res->fields['sector_id'];
             $i++;
             $res->MoveNext();
         }
         $resx = $db->Execute("UPDATE {$db->prefix}planets SET corp=0 WHERE owner=?;", array($playerinfo['ship_id']));
         db_op_result($db, $resx, __LINE__, __FILE__, $db_logging);
         if (!empty($sectors)) {
             foreach ($sectors as $sector) {
                 calc_ownership($sector);
             }
         }
         playerlog($db, $playerinfo['ship_id'], LOG_TEAM_NEWLEAD, $team['team_name'] . "|" . $newcreatorname['character_name']);
         playerlog($db, $newcreator, LOG_TEAM_LEAD, $team['team_name']);
     }
     LINK_BACK();
     break;
 case 3:
     if ($playerinfo['team'] != 0) {
         echo $l_team_leavefirst . "<br>";
     } else {
         if ($playerinfo['team_invite'] == $whichteam) {
             $resx = $db->Execute("UPDATE {$db->prefix}ships SET team=?, team_invite=0 WHERE ship_id=?;", array($whichteam, $playerinfo['ship_id']));
             db_op_result($db, $resx, __LINE__, __FILE__, $db_logging);
             $resy = $db->Execute("UPDATE {$db->prefix}teams SET number_of_members=number_of_members+1 WHERE id=?;", array($whichteam));
Example #6
0
function planetcombat()
{
	global $upgrade_cost, $upgrade_factor;
    global $playerinfo;
	global $shipinfo;
    global $ownerinfo;
	global $ownershipinfo;
    global $sectorinfo;
    global $planetinfo;
    global $torpedo_price;
    global $colonist_price;
    global $ore_price;
    global $organics_price;
    global $goods_price;
    global $energy_price;
	global $ibank_paymentfee;
    global $planetbeams;
    global $planetfighters;
    global $planetshields;
    global $planettorps;
    global $attackerbeams;
    global $attackerfighters;
    global $attackershields;
    global $attackertorps;
    global $attackerarmor;
    global $torp_dmg_rate;
    global $level_factor;
    global $attackertorpdamage;
    global $start_energy;
    global $min_value_capture;
    global $l_cmb_atleastoneturn;
    global $l_cmb_atleastoneturn, $l_cmb_shipenergybb, $l_cmb_shipenergyab, $l_cmb_shipenergyas, $l_cmb_shiptorpsbtl, $l_cmb_shiptorpsatl;
    global $l_cmb_planettorpdamage, $l_cmb_attackertorpdamage, $l_cmb_beams, $l_cmb_fighters, $l_cmb_shields, $l_cmb_torps;
    global $l_cmb_torpdamage, $l_cmb_armor, $l_cmb_you, $l_cmb_planet, $l_cmb_combatflow, $l_cmb_defender, $l_cmb_attackingplanet;
    global $l_cmb_youfireyourbeams, $l_cmb_defenselost, $l_cmb_defenselost2, $l_cmb_planetarybeams, $l_cmb_planetarybeams;
    global $l_cmb_youdestroyedplanetshields, $l_cmb_beamsexhausted, $l_cmb_breachedyourshields, $l_cmb_destroyedyourshields;
    global $l_cmb_breachedyourarmor, $l_cmb_destroyedyourarmor, $l_cmb_torpedoexchangephase, $l_cmb_nofightersleft;
    global $l_cmb_youdestroyfighters, $l_cmb_planettorpsdestroy, $l_cmb_planettorpsdestroy2, $l_cmb_torpsbreachedyourarmor;
    global $l_cmb_planettorpsdestroy3, $l_cmb_youdestroyedallfighters, $l_cmb_youdestroyplanetfighters, $l_cmb_fightercombatphase;
    global $l_cmb_youdestroyedallfighters2, $l_cmb_youdestroyplanetfighters2, $l_cmb_allyourfightersdestroyed, $l_cmb_fightertofighterlost;
    global $l_cmb_youbreachedplanetshields, $l_cmb_shieldsremainup, $l_cmb_fighterswarm, $l_cmb_swarmandrepel, $l_cmb_engshiptoshipcombat;
    global $l_cmb_shipdock, $l_cmb_approachattackvector, $l_cmb_noshipsdocked, $l_cmb_yourshipdestroyed, $l_cmb_escapepod;
    global $l_cmb_finalcombatstats, $l_cmb_youlostfighters, $l_cmb_youlostarmorpoints, $l_cmb_energyused, $l_cmb_planetdefeated;
    global $l_cmb_citizenswanttodie, $l_cmb_youmaycapture, $l_cmb_youmaycapture2, $l_cmb_planetnotdefeated, $l_cmb_planetstatistics;
    global $l_cmb_fighterloststat, $l_cmb_energyleft;
    global $db, $dbtables;
    //$debug = true;




    if($playerinfo[turns] < 1)
    {
        echo "$l_cmb_atleastoneturn<BR><BR>";
        TEXT_GOTOMAIN();
        include("footer.php");
        die();
    }

    // Planetary defense system calculation

    $planetbeams 		= calcplanetbeams();
    $planetfighters		= calcplanetfighters();
    $planetshields		= calcplanetshields();
    $planettorps		= calcplanettorps();

    // Attacking ship calculations

    $attackerbeams		= NUM_BEAMS($shipinfo[beams]);
    $attackerfighters	= $shipinfo[ship_fighters];
    $attackershields	= NUM_SHIELDS($shipinfo[shields]);
    $attackertorps		= round(mypw($level_factor, $shipinfo[torp_launchers])) * 2;
    $attackerarmor		= $shipinfo[armour_pts];

    // Now modify player beams, shields and torpedos on available materiel
    $starting_energy = $shipinfo[ship_energy];

    // Beams
    if ($debug)
        echo "$l_cmb_shipenergybb: $shipinfo[ship_energy]<BR>\n";
    if ($attackerbeams > $shipinfo[ship_energy])
        $attackerbeams   = $shipinfo[ship_energy];
    $shipinfo[ship_energy] = $shipinfo[ship_energy] - $attackerbeams;
    if ($debug)
        echo "$l_cmb_shipenergyab (before shields): $shipinfo[ship_energy]<BR>\n";

    // Shields
    if ($attackershields > $shipinfo[ship_energy])
        $attackershields = $shipinfo[ship_energy];
    $shipinfo[ship_energy] = $shipinfo[ship_energy] - $attackershields;
    if ($debug)
        echo "$l_cmb_shipenergyas: $shipinfo[ship_energy]<BR>\n";

    // Torpedos
    if ($debug)
        echo "$l_cmb_shiptorpsbtl: $attackertorps ($shipinfo[torps] / $shipinfo[torp_launchers])<BR>\n";
    if ($attackertorps > $shipinfo[torps])
        $attackertorps = $shipinfo[torps];
    $shipinfo[torps] = $shipinfo[torps] - $attackertorps;
    if ($debug)
        echo "$l_cmb_shiptorpsatl: $attackertorps ($shipinfo[torps] / $shipinfo[torp_launchers])<BR>\n";

    // Setup torp damage rate for both Planet and Ship
    $planettorpdamage	= $torp_dmg_rate * $planettorps;
    $attackertorpdamage	= $torp_dmg_rate * $attackertorps;
    if ($debug)
        echo "$l_cmb_planettorpdamage: $planettorpdamage<BR>\n";
    if ($debug)
        echo "$l_cmb_attackertorpdamage: $attackertorpdamage<BR>\n";


    echo "
    <CENTER>
    <HR>
    <table width='75%' border='0'>
    <tr ALIGN='CENTER'>
    <td width='9%' height='27'></td>
    <td width='12%' height='27'><FONT COLOR='WHITE'>$l_cmb_beams</FONT></td>
    <td width='17%' height='27'><FONT COLOR='WHITE'>$l_cmb_fighters</FONT></td>
    <td width='18%' height='27'><FONT COLOR='WHITE'>$l_cmb_shields</FONT></td>
    <td width='11%' height='27'><FONT COLOR='WHITE'>$l_cmb_torps</FONT></td>
    <td width='22%' height='27'><FONT COLOR='WHITE'>$l_cmb_torpdamage</FONT></td>
    <td width='11%' height='27'><FONT COLOR='WHITE'>$l_cmb_armor</FONT></td>
    </tr>
    <tr ALIGN='CENTER'>
    <td width='9%'> <FONT COLOR='RED'>$l_cmb_you</td>
    <td width='12%'><FONT COLOR='RED'><B>$attackerbeams</B></FONT></td>
    <td width='17%'><FONT COLOR='RED'><B>$attackerfighters</B></FONT></td>
    <td width='18%'><FONT COLOR='RED'><B>$attackershields</B></FONT></td>
    <td width='11%'><FONT COLOR='RED'><B>$attackertorps</B></FONT></td>
    <td width='22%'><FONT COLOR='RED'><B>$attackertorpdamage</B></FONT></td>
    <td width='11%'><FONT COLOR='RED'><B>$attackerarmor</B></FONT></td>
    </tr>
    <tr ALIGN='CENTER'>
    <td width='9%'> <FONT COLOR='#6098F8'>$l_cmb_planet</FONT></td>
    <td width='12%'><FONT COLOR='#6098F8'><B>$planetbeams</B></FONT></td>
    <td width='17%'><FONT COLOR='#6098F8'><B>$planetfighters</B></FONT></td>
    <td width='18%'><FONT COLOR='#6098F8'><B>$planetshields</B></FONT></td>
    <td width='11%'><FONT COLOR='#6098F8'><B>$planettorps</B></FONT></td>
    <td width='22%'><FONT COLOR='#6098F8'><B>$planettorpdamage</B></FONT></td>
    <td width='11%'><FONT COLOR='#6098F8'><B>N/A</B></FONT></td>
    </tr>
    </table>
    <HR>
    </CENTER>
    ";
    // Begin actual combat calculations

    $planetdestroyed   = 0;
    $attackerdestroyed = 0;

    echo "<BR><CENTER><B><FONT SIZE='+2'>$l_cmb_combatflow</FONT></B><BR><BR>\n";
    echo "<table width='75%' border='0'><tr align='center'><td><FONT COLOR='RED'>$l_cmb_you</FONT></td><td><FONT COLOR='#6098F8'>$l_cmb_defender</FONT></td>\n";
    echo "<tr align='center'><td><FONT COLOR='RED'><B>$l_cmb_attackingplanet $playerinfo[sector]</b></FONT></td><td></td>";
    echo "<tr align='center'><td><FONT COLOR='RED'><B>$l_cmb_youfireyourbeams</b></FONT></td><td></td>\n";
    if($planetfighters > 0 && $attackerbeams > 0)
    {
        if($attackerbeams > $planetfighters)
        {
            $l_cmb_defenselost = str_replace("[cmb_planetfighters]", $planetfighters, $l_cmb_defenselost);
            echo "<tr align='center'><td></td><td><FONT COLOR='#6098F8'><B>$l_cmb_defenselost</B></FONT>";
            $planetfighters = 0;
            $attackerbeams = $attackerbeams - $planetfighters;
        }
        else
        {
            $l_cmb_defenselost2 = str_replace("[cmb_attackerbeams]", $attackerbeams, $l_cmb_defenselost2);
            $planetfighters = $planetfighters - $attackerbeams;
            echo "<tr align='center'><td></td><td><FONT COLOR='#6098F8'><B>$l_cmb_defenselost2</B></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;
            $l_cmb_planetarybeams = str_replace("[cmb_temp]", $temp, $l_cmb_planetarybeams);
            echo "<tr align='center'><td><FONT COLOR='RED'><B>$l_cmb_planetarybeams</B></FONT><TD></TD>";
        }
        else
        {
            $l_cmb_planetarybeams2 = str_replace("[cmb_planetbeams]", $planetbeams, $l_cmb_planetarybeams2);
            $attackerfighters = $attackerfighters - $planetbeams;
            echo "<tr align='center'><td><FONT COLOR='RED'><B>$l_cmb_planetarybeams2</B></FONT><TD></TD>";
            $planetbeams = 0;
        }
    }
    if($attackerbeams > 0)
    {
        if($attackerbeams > $planetshields)
        {
            $attackerbeams = $attackerbeams - $planetshields;
            $planetshields = 0;
            echo "<tr align='center'><td><FONT COLOR='RED'><B>$l_cmb_youdestroyedplanetshields</FONT></B><td></td>";
        }
        else
        {
            $l_cmb_beamsexhausted = str_replace("[cmb_attackerbeams]", $attackerbeams, $l_cmb_beamsexhausted);
            echo "<tr align='center'><td><FONT COLOR='RED'><B>$l_cmb_beamsexhausted</FONT></B><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'><B>$l_cmb_breachedyourshields</FONT></B></td>";
        }
        else
        {
            $attackershields = $attackershields - $planetbeams;
            $l_cmb_destroyedyourshields = str_replace("[cmb_planetbeams]", $planetbeams, $l_cmb_destroyedyourshields);
            echo "<tr align='center'><td></td><FONT COLOR='#6098F8'><B>$l_cmb_destroyedyourshields</FONT></B></td>";
            $planetbeams = 0;
        }
    }
    if($planetbeams > 0)
    {
        if($planetbeams > $attackerarmor)
        {
            $attackerarmor = 0;
            echo "<tr align='center'><td></td><td><FONT COLOR='#6098F8'><B>$l_cmb_breachedyourarmor</B></FONT></td>";
        }
        else
        {
            $attackerarmor = $attackerarmor - $planetbeams;
            $l_cmb_destroyedyourarmor = str_replace("[cmb_planetbeams]", $planetbeams, $l_cmb_destroyedyourarmor);
            echo "<tr align='center'><td></td><td><FONT COLOR='#6098F8'><B>$l_destroyedyourarmor</FONT></B></td>";
        }
    }
    echo "<tr align='center'><td><FONT COLOR='YELLOW'><B>$l_cmb_torpedoexchangephase</b></FONT></td><td><b><FONT COLOr='YELLOW'>$l_cmb_torpedoexchangephase</b></FONT></td><BR>";
    if($planetfighters > 0 && $attackertorpdamage > 0)
    {
        if($attackertorpdamage > $planetfighters)
        {
            $l_cmb_nofightersleft = str_replace("[cmb_planetfighters]", $planetfighters, $l_cmb_nofightersleft);
            echo "<tr align='center'><td><FONT COLOR='RED'><B>$l_cmb_nofightersleft</FONT></B></td><td></td>";
            $planetfighters = 0;
            $attackertorpdamage = $attackertorpdamage - $planetfighters;
        }
        else
        {
            $planetfighters = $planetfighters - $attackertorpdamage;
            $l_cmb_youdestroyfighters = str_replace("[cmb_attackertorpdamage]", $attackertorpdamage, $l_cmb_youdestroyfighters);
            echo "<tr align='center'><td><FONT COLOR='RED'><B>$l_cmb_youdestroyfighters</FONT></B></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;
            $l_cmb_planettorpsdestroy = str_replace("[cmb_temp]", $temp, $l_cmb_planettorpsdestroy);
            echo "<tr align='center'><td></td><td><FONT COLOR='RED'><B>$l_cmb_planettorpsdestroy</B></FONT></td>";
        }
        else
        {
            $attackerfighters = $attackerfighters - $planettorpdamage;
            $l_cmb_planettorpsdestroy2 = str_replace("[cmb_planettorpdamage]", $planettorpdamage, $l_cmb_planettorpsdestroy2);
            echo "<tr align='center'><td></td><td><FONT COLOR='RED'><B>$l_cmb_planettorpsdestroy2</B></FONT></td>";
            $planettorpdamage = 0;
        }
    }
    if($planettorpdamage > 0)
    {
        if($planettorpdamage > $attackerarmor)
        {
            $attackerarmor = 0;
            echo "<tr align='center'><td><FONT COLOR='RED'><B>$l_cmb_torpsbreachedyourarmor</B></FONT></td><td></td>";
        }
        else
        {
            $attackerarmor = $attackerarmor - $planettorpdamage;
            $l_cmb_planettorpsdestroy3 = str_replace("[cmb_planettorpdamage]", $planettorpdamage, $l_cmb_planettorpsdestroy3);
            echo "<tr align='center'><td><FONT COLOR='RED'><B>$l_cmb_planettorpsdestroy3</B></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'><B>$l_cmb_youdestroyedallfighters</B></FONT></td><td></td>";
        }
        else
        {
            $l_cmb_youdestroyplanetfighters = str_replace("[cmb_attackertorpdamage]", $attackertorpdamage, $l_cmb_youdestroyplanetfighters);
            echo "<tr align='center'><td><FONT COLOR='RED'><B>$l_cmb_youdestroyplanetfighters</B></FONT></td><td></td>";
        }
    }
    echo "<tr align='center'><td><FONT COLOR='YELLOW'><B>$l_cmb_fightercombatphase</b></FONT></td><td><b><FONT COLOr='YELLOW'>$l_cmb_fightercombatphase</b></FONT></td><BR>";
    if($attackerfighters > 0 && $planetfighters > 0)
    {
        if($attackerfighters > $planetfighters)
        {
            echo "<tr align='center'><td><FONT COLOR='RED'><B>$l_cmb_youdestroyedallfighters2</B></FONT></td><td></td>";
            $tempplanetfighters = 0;
        }
        else
        {
            $l_cmb_youdestroyplanetfighters2 = str_replace("[cmb_attackerfighters]", $attackerfighters, $l_cmb_youdestroyplanetfighters2);
            echo "<tr align='center'><td><FONT COLOR='RED'><B>$l_cmb_youdestroyplanetfighters2</B></FONT></td><td></td>";
            $tempplanetfighters = $planetfighters - $attackerfighters;
        }
        if($planetfighters > $attackerfighters)
        {
            echo "<tr align='center'><td><FONT COLOR='RED'><B>$l_cmb_allyourfightersdestroyed</B></FONT></td><td></td>";
            $tempplayfighters = 0;
        }
        else
        {
            $tempplayfighters = $attackerfighters - $planetfighters;
            $l_cmb_fightertofighterlost = str_replace("[cmb_planetfighters]", $planetfighters, $l_cmb_fightertofighterlost);
            echo "<tr align='center'><td><FONT COLOR='RED'><B>$l_cmb_fightertofighterlost</B></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'><B>$l_cmb_youbreachedplanetshields</B></FONT></td><td></td>";
            $planetshields = 0;
        }
        else
        {
            $l_cmb_shieldsremainup = str_replace("[cmb_attackerfighters]", $attackerfighters, $l_cmb_shieldsremainup);
            echo "<tr align='center'><td></td><FONT COLOR='#6098F8'><B>$l_cmb_shieldsremainup</B></FONT></td>";
            $planetshields = $planetshields - $attackerfighters;
        }
    }
    if($planetfighters > 0)
    {
        if($planetfighters > $attackerarmor)
        {
            $attackerarmor = 0;
            echo "<tr align='center'><td><FONT COLOR='RED'><B>$l_cmb_fighterswarm</B></FONT></td><td></td>";
        }
        else
        {
            $attackerarmor = $attackerarmor - $planetfighters;
            echo "<tr align='center'><td><FONT COLOR='RED'><B>$l_cmb_swarmandrepel</B></FONT></td><td></td>";
        }
    }

    echo "</TABLE></CENTER>\n";
    // Send each docked ship in sequence to attack agressor
    $result4 = $db->Execute("SELECT * FROM $dbtables[players] WHERE planet_id=$planetinfo[planet_id] AND on_planet='Y'");
    $playersonplanet = $result4->RecordCount();

    if ($playersonplanet > 0)
    {
        $l_cmb_shipdock = str_replace("[cmb_shipsonplanet]", $shipsonplanet, $l_cmb_shipdock);
        echo "<BR><BR><CENTER>$l_cmb_shipdock<BR>$l_cmb_engshiptoshipcombat</CENTER><BR><BR>\n";
        while (!$result4->EOF)
        {
            $onplanet = $result4->fields;
            //$shipinfo[ship_fighters] 	= $attackerfighters;
            //$shipinfo[armour_pts] 	= $attackerarmor;
            //$shipinfo[torps]			= $shipinfo[torps] - $attackertorps;

            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[character_name] $l_cmb_approachattackvector-<BR>";
            shiptoship($onplanet[currentship]);
            $result4->MoveNext();
        }
    }
    else
        echo "<BR><BR><CENTER>$l_cmb_noshipsdocked</CENTER><BR><BR>\n";

    if($attackerarmor < 1)
    {
		// Planet attacked and attacked blew up
        $free_ore = round($shipinfo[ship_ore]/2);
        $free_organics = round($shipinfo[ship_organics]/2);
        $free_goods = round($shipinfo[ship_goods]/2);
        $ship_value=$upgrade_cost*(round(mypw($upgrade_factor, $shipinfo[hull]))+round(mypw($upgrade_factor, $shipinfo[engines]))+round(mypw($upgrade_factor, $shipinfo[power]))+round(mypw($upgrade_factor, $shipinfo[computer]))+round(mypw($upgrade_factor, $shipinfo[sensors]))+round(mypw($upgrade_factor, $shipinfo[beams]))+round(mypw($upgrade_factor, $shipinfo[torp_launchers]))+round(mypw($upgrade_factor, $shipinfo[shields]))+round(mypw($upgrade_factor, $shipinfo[armor]))+round(mypw($upgrade_factor, $shipinfo[cloak])));
        $ship_salvage_rate=rand(0,10);
        $ship_salvage=$ship_value*$ship_salvage_rate/100;
		// Triple salvage if this is an outlaw
		$result3 = $db->Execute ("SELECT amount FROM $dbtables[bounty] WHERE placed_by=0 AND bounty_on=$playerinfo[player_id]");
		$fugitive="";
		if (!$result3->EOF) {
			echo "Triple hull salvage goes to $ownerinfo[character_name] because you were a fugitive!<br>";
			$ship_salvage *=3;
			$fugitive = "Fugitive from justice ";
		}

        echo "<BR><CENTER><FONT SIZE='+2' COLOR='RED'><B>$l_cmb_yourshipdestroyed</FONT></B></CENTER><BR>";
		// news
		$headline="Planet Attacked!";
		$newstext=$fugitive.$playerinfo[character_name]." in the ship ".$shipinfo[ship_name]." led an attack today against ".$ownerinfo[character_name]."'s planet ".$planetinfo[name]." but was brought down by heavy planetary defenses. ";
		if ($playerinfo[score] < $ownerinfo[score]) {
			$newstext = $newstext . $playerinfo[character_name]." knew it would be an uphill battle and it was. Too bad.";
		} else {
			$newstext = $newstext . $playerinfo[character_name]." thought it would be an easy battle but underestimated the planet defenses. Next time look before you leap.";
		}
		if ($fugitive != "") {
			$newstext .= " $ownerinfo[character_name] collected triple salvage from the outlaw's ship wreckage!";
		}
		$newstext = addslashes($newstext);
		$player_id = $playerinfo[player_id];
		$news = $db->Execute("INSERT INTO $dbtables[news] (headline, newstext, user_id, date, news_type) VALUES ('$headline','$newstext','$player_id',NOW(), 'attack')");

        if($shipinfo[dev_escapepod] == "Y")
        {
            echo "<CENTER><FONT COLOR='WHITE'>$l_cmb_escapepod</FONT></CENTER><BR><BR>";
            $db->Execute("UPDATE $dbtables[players] SET on_planet='N',sector=0 WHERE player_id=$playerinfo[player_id]");
			// Immediately release any ships being towed 
    		if ($shipinfo[tow] > 0) {
				$db->Execute("UPDATE $dbtables[ships] SET player_id=0,on_planet='N',sector=$shipinfo[sector] WHERE ship_id=$shipinfo[tow]");
  			}
		$db->Execute("UPDATE $dbtables[ships] SET ship_destroyed ='Y', sector=0, tow=0 WHERE player_id=$playerinfo[player_id] AND ship_id=$playerinfo[currentship]");
            collect_bounty($planetinfo[owner],$playerinfo[player_id]);
        }
        else
        {
            db_kill_player($playerinfo[player_id],$playerinfo[currentship],$planetinfo[owner]);
            collect_bounty($planetinfo[owner],$playerinfo[player_id]);
        }
    }
    else
    {
		// ********************* Attacker survived ****************************
        $free_ore=0;
        $free_goods=0;
        $free_organics=0;
        $ship_salvage_rate=0;
        $ship_salvage=0;
        $planetrating = $ownershipinfo[hull] + $ownershipinfo[engines] + $ownershipinfo[computer] + $ownershipinfo[beams] + $ownershipinfo[torp_launchers] + $ownershipinfo[shields] + $ownershipinfo[armor];
        if($ownerinfo[rating]!=0)
        {
            $rating_change=($ownerinfo[rating]/abs($ownerinfo[rating]))*$planetrating*10;
        }
        else
        {
            $rating_change=-100;
        }
        echo "<CENTER><BR><B><FONT SIZE='+2'>$l_cmb_finalcombatstats</FONT></B><BR><BR>";
        $fighters_lost = $shipinfo[ship_fighters] - $attackerfighters;
        $l_cmb_youlostfighters = str_replace("[cmb_fighters_lost]", $fighters_lost, $l_cmb_youlostfighters);
        $l_cmb_youlostfighters = str_replace("[cmb_playerinfo_ship_fighters]", $shipinfo[ship_fighters], $l_cmb_youlostfighters);
        echo "$l_cmb_youlostfighters<BR>";
        $armor_lost = $shipinfo[armour_pts] - $attackerarmor;
        $l_cmb_youlostarmorpoints = str_replace("[cmb_armor_lost]", $armor_lost, $l_cmb_youlostarmorpoints);
        $l_cmb_youlostarmorpoints = str_replace("[cmb_playerinfo_armour_pts]", $shipinfo[armour_pts], $l_cmb_youlostarmorpoints);
        $l_cmb_youlostarmorpoints = str_replace("[cmb_attackerarmor]", $attackerarmor, $l_cmb_youlostarmorpoints);
        echo "$l_cmb_youlostarmorpoints<BR>";
        $energy=$shipinfo[ship_energy];
        $energy_lost = $starting_energy - $shipinfo[ship_energy];
        $l_cmb_energyused = str_replace("[cmb_energy_lost]", $energy_lost, $l_cmb_energyused);
        $l_cmb_energyused = str_replace("[cmb_playerinfo_ship_energy]", $starting_energy, $l_cmb_energyused);
        echo "$l_cmb_energyused<BR></CENTER>";
        $db->Execute("UPDATE $dbtables[players] SET rating=rating-$rating_change WHERE player_id=$playerinfo[player_id]");
		$db->Execute("UPDATE $dbtables[ships] SET ship_energy=$energy,ship_fighters=ship_fighters-$fighters_lost, torps=torps-$attackertorps,armour_pts=armour_pts-$armor_lost WHERE player_id=$playerinfo[player_id] AND ship_id=$playerinfo[currentship]");
    }

    $result4 = $db->Execute("SELECT * FROM $dbtables[players] WHERE planet_id=$planetinfo[planet_id] AND on_planet='Y'");
    $shipsonplanet = $result4->RecordCount();

    if($planetshields < 1 && $planetfighters < 1 && $attackerarmor > 0 && $shipsonplanet == 0)
    {
		// ************************  Planet defeated ***********************************
        echo "<BR><BR><CENTER><FONT COLOR='GREEN'><B>$l_cmb_planetdefeated</b></FONT></CENTER><BR><BR>";
		// news
		$headline="Planetary Defeat!";
		$newstext=$playerinfo[character_name]." in the ship ".$shipinfo[ship_name]." defeated ".$ownerinfo[character_name]."s planet ".$planetinfo[name].". ";
		if ($playerinfo[score] < $ownerinfo[score]) {
			$newstext = $newstext . $playerinfo[character_name]." knew it would be a difficult battle but succeeded!";
		} else {
			$newstext = $newstext . $playerinfo[character_name]." crushed the weak.";
		}
		$player_id = $playerinfo[player_id];
		$news = $db->Execute("INSERT INTO $dbtables[news] (headline, newstext, user_id, date, news_type) VALUES ('$headline','$newstext','$player_id',NOW(), 'attack')");
	
        if($min_value_capture != 0)
        {
            $playerscore = gen_score($playerinfo[player_id]);
            $playerscore *= $playerscore;

            $planetscore = $planetinfo[organics] * $organics_price + $planetinfo[ore] * $ore_price + $planetinfo[goods] * $goods_price + $planetinfo[energy] * $energy_price + $planetinfo[fighters] * $fighter_price + $planetinfo[torps] * $torpedo_price + $planetinfo[colonists] * $colonist_price + $planetinfo[credits];
            $planetscore = $planetscore * $min_value_capture / 100;

            //            echo "playerscore $playerscore, planetscore $planetscore";
            if($playerscore < $planetscore)
            {
                echo "<CENTER>$l_cmb_citizenswanttodie</CENTER><BR><BR>";
                $db->Execute("DELETE FROM $dbtables[planets] WHERE planet_id=$planetinfo[planet_id]");
                playerlog($ownerinfo[player_id], LOG_PLANET_DEFEATED_D, "$planetinfo[name]|$playerinfo[sector]|$playerinfo[character_name]");
                adminlog(LOG_ADMIN_PLANETDEL, "$playerinfo[character_name]|$ownerinfo[character_name]|$playerinfo[sector]");
                gen_score($ownerinfo[player_id]);
            }
            else
            {
                $l_cmb_youmaycapture = str_replace("[cmb_planetinfo_planet_id]", $planetinfo[planet_id], $l_cmb_youmaycapture);
                echo "<CENTER><font color=red>$l_cmb_youmaycapture</font></CENTER><BR><BR>";
                playerlog($ownerinfo[player_id], LOG_PLANET_DEFEATED, "$planetinfo[name]|$playerinfo[sector]|$playerinfo[character_name]");
                gen_score($ownerinfo[player_id]);
				// Make sure that credits are reduced on the planet
                $update7a = $db->Execute("UPDATE $dbtables[planets] SET owner=0, fighters=0, torps=torps-$planettorps, base='N', defeated='Y',credits=(credits*(1-$ibank_paymentfee*5)) WHERE planet_id=$planetinfo[planet_id]");
            }
        }
        else
        {
            $l_cmb_youmaycapture2 = str_replace("[cmb_planetinfo_planet_id]", $planetinfo[planet_id], $l_cmb_youmaycapture2);
            echo "<CENTER>$l_cmb_youmaycapture2</CENTER><BR><BR>";
            playerlog($ownerinfo[player_id], LOG_PLANET_DEFEATED, "$planetinfo[name]|$playerinfo[sector]|$playerinfo[character_name]");
            gen_score($ownerinfo[player_id]);
            $update7a = $db->Execute("UPDATE $dbtables[planets] SET owner=0,fighters=0, torps=torps-$planettorps, base='N', defeated='Y', credits=(credits*(1-$ibank_paymentfee*5)) WHERE planet_id=$planetinfo[planet_id]");
        }
        calc_ownership($planetinfo[sector_id]);
    }
    else if($attackerarmor < 1)
    {
		// *****************************   Planet not defeated and attacker blew up ************************
        echo "<BR><BR><CENTER><FONT COLOR='#6098F8'><B>$l_cmb_planetnotdefeated</B></FONT></CENTER><BR><BR>";
        if ($debug)
            echo "<BR><BR>$l_cmb_planetstatistics<BR><BR>";
        $fighters_lost = $planetinfo[fighters] - $planetfighters;
        $l_cmb_fighterloststat = str_replace("[cmb_fighters_lost]", $fighters_lost, $l_cmb_fighterloststat);
        $l_cmb_fighterloststat = str_replace("[cmb_planetinfo_fighters]", $planetinfo[fighters], $l_cmb_fighterloststat);
        $l_cmb_fighterloststat = str_replace("[cmb_planetfighters]", $planetfighters, $l_cmb_fighterloststat);
        if ($debug)
            echo "$l_cmb_fighterloststat<BR>";
        $energy=$planetinfo[energy];
        if ($debug)
            echo "$l_cmb_energyleft: $planetinfo[energy]<BR>";
        playerlog($ownerinfo[player_id], LOG_PLANET_NOT_DEFEATED, "$planetinfo[name]|$playerinfo[sector]|$playerinfo[character_name]|".NUMBER($free_ore)."|".NUMBER($free_organics)."|".NUMBER($free_goods)."|$ship_salvage_rate|".NUMBER($ship_salvage));
        gen_score($ownerinfo[player_id]);
        $update7b = $db->Execute("UPDATE $dbtables[planets] SET energy=$energy,fighters=fighters-$fighters_lost, torps=torps-$planettorps, ore=ore+$free_ore, goods=goods+$free_goods, organics=organics+$free_organics, credits=credits+$ship_salvage WHERE planet_id=$planetinfo[planet_id]");
        if ($debug)
            echo "<BR>Set: energy=$energy, fighters lost=$fighters_lost, torps=$planetinfo[torps], sectorid=$sectorinfo[sector_id]<BR>";
    } else {
		// *****************************   Planet not defeated and attacker survived ************************
        echo "<BR><BR><CENTER><FONT COLOR='#6098F8'><B>$l_cmb_planetnotdefeated</B></FONT></CENTER><BR><BR>";
        $fighters_lost = $planetinfo[fighters] - $planetfighters;
        $l_cmb_fighterloststat = str_replace("[cmb_fighters_lost]", $fighters_lost, $l_cmb_fighterloststat);
        $l_cmb_fighterloststat = str_replace("[cmb_planetinfo_fighters]", $planetinfo[fighters], $l_cmb_fighterloststat);
        $l_cmb_fighterloststat = str_replace("[cmb_planetfighters]", $planetfighters, $l_cmb_fighterloststat);
        $energy=$planetinfo[energy];
        playerlog($ownerinfo[player_id], LOG_PLANET_SURVIVED, "$planetinfo[name]|$playerinfo[sector]|$playerinfo[character_name]");
        gen_score($ownerinfo[player_id]);
        $update7b = $db->Execute("UPDATE $dbtables[planets] SET energy=$energy,fighters=fighters-$fighters_lost, torps=torps-$planettorps WHERE planet_id=$planetinfo[planet_id]");
		// news
		$headline="Planet Attack Fails!";
		$newstext=$playerinfo[character_name]." in the ship ".$shipinfo[ship_name]." attacked ".$ownerinfo[character_name]."'s planet ".$planetinfo[name]." but the planet's citizens put up an unexpected defense and forced $playerinfo[character_name] to retreat! SUN will continue to report this story as the news breaks!";
		$newstext = addslashes($newstext);
		$player_id = $playerinfo[player_id];
		$news = $db->Execute("INSERT INTO $dbtables[news] (headline, newstext, user_id, date, news_type) VALUES ('$headline','$newstext','$player_id',NOW(), 'attack')");
 	}
    $update = $db->Execute("UPDATE $dbtables[players] SET turns=turns-1, turns_used=turns_used+1 WHERE player_id=$playerinfo[player_id]");
}
Example #7
0
function planetcombat()
{
    global $playerinfo, $ownerinfo, $sectorinfo, $planetinfo, $torpedo_price, $colonist_price, $ore_price, $organics_price, $goods_price, $energy_price;
    global $planetbeams, $planetfighters, $planetshields, $planettorps, $attackerbeams, $attackerfighters, $attackershields, $upgrade_factor, $upgrade_cost;
    global $attackertorps, $attackerarmor, $torp_dmg_rate, $level_factor, $attackertorpdamage, $start_energy, $min_value_capture, $l_cmb_atleastoneturn;
    global $l_cmb_atleastoneturn, $l_cmb_shipenergybb, $l_cmb_shipenergyab, $l_cmb_shipenergyas, $l_cmb_shiptorpsbtl, $l_cmb_shiptorpsatl;
    global $l_cmb_planettorpdamage, $l_cmb_beams, $l_cmb_fighters, $l_cmb_shields, $l_cmb_torps;
    global $l_cmb_torpdamage, $l_cmb_armor, $l_cmb_you, $l_cmb_planet, $l_cmb_combatflow, $l_cmb_defender, $l_cmb_attackingplanet;
    global $l_cmb_youfireyourbeams, $l_cmb_defenselost, $l_cmb_defenselost2, $l_cmb_planetarybeams, $l_cmb_planetarybeams2;
    global $l_cmb_youdestroyedplanetshields, $l_cmb_beamsexhausted, $l_cmb_breachedyourshields, $l_cmb_destroyedyourshields;
    global $l_cmb_breachedyourarmor, $l_cmb_destroyedyourarmor, $l_cmb_torpedoexchangephase, $l_cmb_nofightersleft;
    global $l_cmb_youdestroyfighters, $l_cmb_planettorpsdestroy, $l_cmb_planettorpsdestroy2, $l_cmb_torpsbreachedyourarmor;
    global $l_cmb_planettorpsdestroy3, $l_cmb_youdestroyedallfighters, $l_cmb_youdestroyplanetfighters, $l_cmb_fightercombatphase;
    global $l_cmb_youdestroyedallfighters2, $l_cmb_youdestroyplanetfighters2, $l_cmb_allyourfightersdestroyed, $l_cmb_fightertofighterlost;
    global $l_cmb_youbreachedplanetshields, $l_cmb_shieldsremainup, $l_cmb_fighterswarm, $l_cmb_swarmandrepel, $l_cmb_engshiptoshipcombat;
    global $l_cmb_shipdock, $l_cmb_approachattackvector, $l_cmb_noshipsdocked, $l_cmb_yourshipdestroyed, $l_cmb_escapepod;
    global $l_cmb_finalcombatstats, $l_cmb_youlostfighters, $l_cmb_youlostarmorpoints, $l_cmb_energyused, $l_cmb_planetdefeated;
    global $l_cmb_citizenswanttodie, $l_cmb_youmaycapture, $l_cmb_planetnotdefeated, $l_cmb_planetstatistics;
    global $l_cmb_fighterloststat, $l_cmb_energyleft;
    global $db, $db_logging;
    if ($playerinfo['turns'] < 1) {
        echo $l_cmb_atleastoneturn . "<br><br>";
        TEXT_GOTOMAIN();
        ?>
</div></div>
<?php 
        include "footer.php";
        die;
    }
    // Planetary defense system calculation
    $planetbeams = calcplanetbeams();
    $planetfighters = $planetinfo['fighters'];
    $planetshields = calcplanetshields();
    $planettorps = calcplanettorps();
    // Attacking ship calculations
    $attackerbeams = NUM_BEAMS($playerinfo['beams']);
    $attackerfighters = $playerinfo['ship_fighters'];
    $attackershields = NUM_SHIELDS($playerinfo['shields']);
    $attackertorps = round(pow($level_factor, $playerinfo['torp_launchers'])) * 2;
    $attackerarmor = $playerinfo['armor_pts'];
    // Now modify player beams, shields and torpedos on available materiel
    $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 = $torp_dmg_rate * $planettorps;
    $attackertorpdamage = $torp_dmg_rate * $attackertorps;
    /*
    Build table
    */
    ?>
	<div class="general-table-container">
	<?php 
    echo "<table><tbody>";
    echo "<tr>\n\t<td>STATS</td>\n    <td>Beams</td>\n    <td>Fighters</td>\n    <td>Shields</td>\n    <td>Torpedoes Warhead Strength</td>\n    <td>Armour</td>\n    </tr><tr>\n    <td><span class=\"table_word_blue\">Your Ship</span></td>\n    <td>{$attackerbeams}</td>\n    <td>{$attackerfighters}</td>\n    <td>{$attackershields}</td>\n    <td>{$attackertorpdamage}</td>\n    <td>{$attackerarmor}</td>\n    </tr><tr>\n    <td><span class=\"table_word_orange\">The Planet</span></td>\n    <td>{$planetbeams}</td>\n    <td>{$planetfighters}</td>\n    <td>{$planetshields}</td>\n    <td>{$planettorpdamage}</td>\n    <td>N/A</td>\n    </tr>";
    echo "</tbody></table></div>";
    // Begin actual combat calculations
    $planetdestroyed = 0;
    $attackerdestroyed = 0;
    echo "<br/>You are now engaging the planet in sector " . $playerinfo[sector] . "!<br/><br/>";
    /*
    Build table
    */
    ?>
	<div class="general-table-container">
	<?php 
    echo "<table><tbody>";
    echo "<tr>";
    echo "<td width=\"50%\">You</td>";
    echo "<td width=\"50%\">Planet</td>";
    echo "</tr>";
    echo "<tr><td colspan=\"2\"><span class=\"table_word_yellow\">Firing Your Beams</span></td></tr>";
    if ($planetfighters > 0 && $attackerbeams > 0) {
        if ($attackerbeams > $planetfighters) {
            echo "<tr><td></td><td><span class=\"table_word_orange\">Planetary defense lost " . $planetfighters . " fighters to your beams</span></td></tr>";
            $attackerbeams = $attackerbeams - $planetfighters;
            $planetfighters = 0;
        } else {
            $planetfighters = $planetfighters - $attackerbeams;
            echo "<tr><td></td><td><span class=\"table_word_orange\">Planetary defense lost " . $planetfighters . " fighters, but there are more coming!</span></td></tr>";
            $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;
            echo "<tr><td></td><td><span class=\"table_word_orange\">Planetary beams destroy " . $temp . " of your fighters</span></td></tr>";
        } else {
            $attackerfighters = $attackerfighters - $planetbeams;
            echo "<tr><td></td><td><span class=\"table_word_orange\">Planetary beams destroy " . $planetbeams . " of your fighters</span></td></tr>";
            $planetbeams = 0;
        }
    }
    if ($attackerbeams > 0) {
        if ($attackerbeams > $planetshields) {
            $attackerbeams = $attackerbeams - $planetshields;
            $planetshields = 0;
            echo "<tr><td><span class=\"table_word_green\">Your beams have destroyed the planetary shields</span></td><td></td></tr>";
        } else {
            echo "<tr><td><span class=\"table_word_orange\">You destroy " . $attackerbeams . " planetary shields before your beams are exhausted</span></td><td></td></tr>";
            $planetshields = $planetshields - $attackerbeams;
            $attackerbeams = 0;
        }
    }
    if ($planetbeams > 0) {
        if ($planetbeams > $attackershields) {
            $planetbeams = $planetbeams - $attackershields;
            $attackershields = 0;
            echo "<tr><td></td><td><span class=\"table_word_red\">Planetary beams have breached your shields</span></td></tr>";
        } else {
            $attackershields = $attackershields - $planetbeams;
            echo "<tr><td></td><td><span class=\"table_word_red\">Planetary beams have destroyed " . $planetbeams . " of your shields</span></td></tr>";
            $planetbeams = 0;
        }
    }
    if ($planetbeams > 0) {
        if ($planetbeams > $attackerarmor) {
            $attackerarmor = 0;
            echo "<tr><td></td><td><span class=\"table_word_red\">Planetary beams have breached your armor</span></td></tr>";
        } else {
            $attackerarmor = $attackerarmor - $planetbeams;
            echo "<tr><td></td><td><span class=\"table_word_orange\">Planetary beams have destroyed " . $planetbeams . " points of armor</span></td></tr>";
        }
    }
    if ($planetshields > 0) {
    } else {
        echo "<tr><td></td><td><span class=\"table_word_green\">Planets shields have been breached!</span></td></tr>";
    }
    echo "</tbody></table></div>";
    /*
    Build table
    */
    ?>
	<div class="general-table-container">
	<?php 
    echo "<table><tbody>";
    echo "<tr>\n\t<td>UPDATE</td>\n    <td>Beams</td>\n    <td>Fighters</td>\n    <td>Shields</td>\n    <td>Torpedoes Warhead Strength</td>\n    <td>Armour</td>\n    </tr><tr>\n    <td><span class=\"table_word_blue\">Your Ship</span></td>\n    <td>{$attackerbeams}</td>\n    <td>{$attackerfighters}</td>\n    <td>{$attackershields}</td>\n    <td>{$attackertorpdamage}</td>\n    <td>{$attackerarmor}</td>\n    </tr><tr>\n    <td><span class=\"table_word_orange\">The Planet</span></td>\n    <td>{$planetbeams}</td>\n    <td>{$planetfighters}</td>\n    <td>{$planetshields}</td>\n    <td>{$planettorpdamage}</td>\n    <td>N/A</td>\n    </tr>";
    echo "</tbody></table></div>";
    ?>
	<div class="general-table-container">
	<?php 
    echo "<table><tbody>";
    echo "<tr>";
    echo "<td width=\"50%\">You</td>";
    echo "<td width=\"50%\">Planet</td>";
    echo "</tr>";
    echo "<tr><td colspan=\"2\"><span class=\"table_word_yellow\">Torpedo Exchange Phase</span></td></tr>";
    if ($planetfighters > 0 && $attackertorpdamage > 0) {
        if ($attackertorpdamage > $planetfighters) {
            echo "<tr><td>Your torpedos destroy " . $planetfighters . " planetary fighters, no fighters are left</td><td></td></tr>";
            $attackertorpdamage = $attackertorpdamage - $planetfighters;
            $planetfighters = 0;
        } else {
            $planetfighters = $planetfighters - $attackertorpdamage;
            echo "<tr><td><span class=\"table_word_orange\">Your torpedos destroy " . $attackertorpdamage . " planetary fighters</span></td><td></td></tr>";
            $attackertorpdamage = 0;
        }
    }
    if ($attackerfighters > 0 && $planettorpdamage > 0) {
        if ($planettorpdamage > round($attackerfighters / 2)) {
            $temp = round($attackerfighters / 2);
            $lost = $attackerfighters - $temp;
            $attackerfighters = $temp;
            $planettorpdamage = $planettorpdamage - $lost;
            echo "<tr><td></td><td><span class=\"table_word_orange\">Planetary torpedos destroy " . $temp . " of your fighters</span></td></tr>";
        } else {
            $attackerfighters = $attackerfighters - $planettorpdamage;
            echo "<tr><td></td><td><span class=\"table_word_orange\">Planetary torpedos destroy " . $planettorpdamage . " of your fighters</span></td></tr>";
            $planettorpdamage = 0;
        }
    }
    if ($planettorpdamage > 0) {
        if ($planettorpdamage > $attackerarmor) {
            $attackerarmor = 0;
            echo "<tr><td><span class=\"table_word_red\">Planetary torpedos have breached your armor</span></td><td></td></tr>";
        } else {
            $attackerarmor = $attackerarmor - $planettorpdamage;
            echo "<tr><td><span class=\"table_word_orange\">Planetary torpedos have destroyed " . $planettorpdamage . " points of armor</span></td><td></td></tr>";
        }
    }
    if ($attackertorpdamage > 0 && $planetfighters > 0) {
        $planetfighters = $planetfighters - $attackertorpdamage;
        if ($planetfighters < 0) {
            $planetfighters = 0;
            echo "<tr><td><span class=\"table_word_green\">Your torpedos have destroyed all the planetary fighters</span></td><td></td></tr>";
        } else {
            echo "<tr><td><span class=\"table_word_orange\">Your torpedos destroy " . $attackertorpdamage . " planetary fighters</span></td><td></td></tr>";
        }
    } else {
        echo "<tr><td></td><td><span class=\"table_word_green\">Planet has no torpedoes</span></td></tr>";
    }
    echo "</tbody></table></div>";
    /*
    Build table
    */
    ?>
	<div class="general-table-container">
	<?php 
    echo "<table><tbody>";
    echo "<tr>\n\t<td>UPDATE</td>\n    <td>Beams</td>\n    <td>Fighters</td>\n    <td>Shields</td>\n    <td>Torpedoes Warhead Strength</td>\n    <td>Armour</td>\n    </tr><tr>\n    <td><span class=\"table_word_blue\">Your Ship</span></td>\n    <td>{$attackerbeams}</td>\n    <td>{$attackerfighters}</td>\n    <td>{$attackershields}</td>\n    <td>{$attackertorpdamage}</td>\n    <td>{$attackerarmor}</td>\n    </tr><tr>\n    <td><span class=\"table_word_orange\">The Planet</span></td>\n    <td>{$planetbeams}</td>\n    <td>{$planetfighters}</td>\n    <td>{$planetshields}</td>\n    <td>{$planettorpdamage}</td>\n    <td>N/A</td>\n    </tr>";
    echo "</tbody></table></div>";
    ?>
	<div class="general-table-container">
	<?php 
    echo "<table><tbody>";
    echo "<tr>";
    echo "<td width=\"50%\">You</td>";
    echo "<td width=\"50%\">Planet</td>";
    echo "</tr>";
    echo "<tr><td colspan=\"2\"><span class=\"table_word_yellow\">Fighter Combat Phase</span></td></tr>";
    if ($attackerfighters > 0 && $planetfighters > 0) {
        if ($attackerfighters > $planetfighters) {
            echo "<tr><td><span class=\"table_word_green\">Your fighters have destroyed all the planetary fighters</span></td><td></td></tr>";
            $tempplanetfighters = 0;
        } else {
            echo "<tr><td><span class=\"table_word_orange\">Your fighters have destroyed " . $attackerfighters . " planetary fighters</span></td><td></td></tr>";
            $tempplanetfighters = $planetfighters - $attackerfighters;
        }
        if ($planetfighters > $attackerfighters) {
            echo "<tr><td><span class=\"table_word_red\">All your fighters were destroyed</span></td><td></td></tr>";
            $tempplayfighters = 0;
        } else {
            $tempplayfighters = $attackerfighters - $planetfighters;
            echo "<tr><td><span class=\"table_word_orange\">You lost " . $planetfighters . " fighters in fighter to fighter combat</span></td><td></td></tr>";
        }
        $attackerfighters = $tempplayfighters;
        $planetfighters = $tempplanetfighters;
    }
    if ($attackerfighters > 0 && $planetshields > 0) {
        if ($attackerfighters > $planetshields) {
            $attackerfighters = $attackerfighters - round($planetshields / 2);
            echo "<tr><td><span class=\"table_word_green\">Your fighters have breached the planetary shields</span></td><td></td></tr>";
            $planetshields = 0;
        } else {
            echo "<tr><td></td><td><span class=\"table_word_orange\">Your fighters destroyed " . $attackerfighters . " planetary shields, but they remain up</span></td></tr>";
            $planetshields = $planetshields - $attackerfighters;
        }
    }
    if ($planetfighters > 0) {
        if ($planetfighters > $attackerarmor) {
            $attackerarmor = 0;
            echo "<tr><td><span class=\"table_word_red\">Planetary fighters swarm your ship, your armor has been breached</span></td><td></td></tr>";
        } else {
            $attackerarmor = $attackerarmor - $planetfighters;
            echo "<tr><td><span class=\"table_word_orange\">Planetary fighters swarm your ship, but your armor repels them</span></td><td></td></tr>";
        }
    } else {
        echo "<tr><td></td><td><span class=\"table_word_green\">Planet has no fighters</span></td></tr>";
    }
    echo "</tbody></table></div>";
    /*
    Build table
    */
    ?>
	<div class="general-table-container">
	<?php 
    echo "<table><tbody>";
    echo "<tr>\n\t<td>UPDATE</td>\n    <td>Beams</td>\n    <td>Fighters</td>\n    <td>Shields</td>\n    <td>Torpedoes Warhead Strength</td>\n    <td>Armour</td>\n    </tr><tr>\n    <td><span class=\"table_word_blue\">Your Ship</span></td>\n    <td>{$attackerbeams}</td>\n    <td>{$attackerfighters}</td>\n    <td>{$attackershields}</td>\n    <td>{$attackertorpdamage}</td>\n    <td>{$attackerarmor}</td>\n    </tr><tr>\n    <td><span class=\"table_word_orange\">The Planet</span></td>\n    <td>{$planetbeams}</td>\n    <td>{$planetfighters}</td>\n    <td>{$planetshields}</td>\n    <td>{$planettorpdamage}</td>\n    <td>N/A</td>\n    </tr>";
    echo "</tbody></table></div>";
    // Send each docked ship in sequence to attack agressor
    $result4 = $db->Execute("SELECT * FROM {$db->prefix}ships WHERE planet_id={$planetinfo['planet_id']} AND on_planet='Y'");
    db_op_result($db, $result4, __LINE__, __FILE__, $db_logging);
    $shipsonplanet = $result4->RecordCount();
    if ($shipsonplanet > 0) {
        echo "<br/>There are " . $shipsonplanet . " ships docked at Spacedock!<br>Engaging in Ship to Ship combat.<br/><br/>";
        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] . " is approaching on an attack vector<br/>";
            /*ENGAGE EACH SHIP ONE BY ONE!!!*/
            shiptoship($onplanet['ship_id']);
            $result4->MoveNext();
        }
    } else {
        /*no SHIPS on the planet, noting to worry about*/
    }
    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 = $upgrade_cost * (round(pow($upgrade_factor, $playerinfo['hull'])) + round(pow($upgrade_factor, $playerinfo['engines'])) + round(pow($upgrade_factor, $playerinfo['power'])) + round(pow($upgrade_factor, $playerinfo['computer'])) + round(pow($upgrade_factor, $playerinfo['sensors'])) + round(pow($upgrade_factor, $playerinfo['beams'])) + round(pow($upgrade_factor, $playerinfo['torp_launchers'])) + round(pow($upgrade_factor, $playerinfo['shields'])) + round(pow($upgrade_factor, $playerinfo['armor'])) + round(pow($upgrade_factor, $playerinfo['cloak'])));
        $ship_salvage_rate = mt_rand(0, 10);
        $ship_salvage = $ship_value * $ship_salvage_rate / 100;
        echo "<br><center><font size='+2' COLOR='red'>{$l_cmb_yourshipdestroyed}</font></center><br>";
        if ($playerinfo['dev_escapepod'] == "Y") {
            echo "<center><font color='white'>{$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={$start_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={$playerinfo['ship_id']}");
            db_op_result($db, $resx, __LINE__, __FILE__, $db_logging);
            collect_bounty($planetinfo['owner'], $playerinfo['ship_id']);
        } else {
            db_kill_player($playerinfo['ship_id']);
            collect_bounty($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 "<br/>Final Combat Stats<br/><br/>";
        $fighters_lost = $playerinfo['ship_fighters'] - $attackerfighters;
        echo "You lost " . $fighters_lost . " out of " . $playerinfo['ship_fighters'] . " total fighters.<br/>";
        $armor_lost = $playerinfo['armor_pts'] - $attackerarmor;
        echo "You lost " . $armor_lost . " out of " . $playerinfo['armor_pts'] . " total armor points, you have " . $attackerarmor . " points remaining.<br/>";
        $energy = $playerinfo['ship_energy'];
        $energy_lost = $start_energy - $playerinfo['ship_energy'];
        echo "You used " . $energy_lost . " energy, from a total of " . $start_energy . " energy.<br/>";
        $resx = $db->Execute("UPDATE {$db->prefix}ships SET ship_energy={$energy},ship_fighters=ship_fighters-{$fighters_lost}, torps=torps-{$attackertorps},armor_pts=armor_pts-{$armor_lost}, rating=rating-{$rating_change} WHERE ship_id={$playerinfo['ship_id']}");
        db_op_result($db, $resx, __LINE__, __FILE__, $db_logging);
    }
    $result4 = $db->Execute("SELECT * FROM {$db->prefix}ships WHERE planet_id={$planetinfo['planet_id']} AND on_planet='Y'");
    db_op_result($db, $result4, __LINE__, __FILE__, $db_logging);
    $shipsonplanet = $result4->RecordCount();
    #################
    ### LOG AND UPDATE THE STATS
    ##################
    if ($planetshields < 1 && $planetfighters < 1 && $attackerarmor > 0 && $shipsonplanet == 0) {
        echo "<br/><br/><span class=\"table_word_green\">Planet defeated</span><br/><br/>";
        // Patch to stop players dumping credits for other players.
        $self_tech = get_avg_tech($playerinfo);
        $target_tech = round(get_avg_tech($ownerinfo));
        $roll = mt_rand(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', corp = '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 `dev_planets`.`planet_id` ={$planetinfo['planet_id']} LIMIT 1;";
            $resx = $db->Execute($sql);
            db_op_result($db, $resx, __LINE__, __FILE__, $db_logging);
            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 ($min_value_capture != 0) {
            $playerscore = gen_score($playerinfo['ship_id']);
            $playerscore *= $playerscore;
            $planetscore = $planetinfo['organics'] * $organics_price + $planetinfo['ore'] * $ore_price + $planetinfo['goods'] * $goods_price + $planetinfo['energy'] * $energy_price + $planetinfo['fighters'] * $fighter_price + $planetinfo['torps'] * $torpedo_price + $planetinfo['colonists'] * $colonist_price + $planetinfo['credits'];
            $planetscore = $planetscore * $min_value_capture / 100;
            if ($playerscore < $planetscore) {
                echo "The citizens of this planet have decided they'd rather die than serve a pathetic ruler like you. They use a laser drill to dig a hole to the planet's core. You barely have time to escape into orbit before the whole planet is reduced to a ball of molten lava.<br/><br/>";
                $resx = $db->Execute("DELETE FROM {$db->prefix}planets WHERE planet_id={$planetinfo['planet_id']}");
                db_op_result($db, $resx, __LINE__, __FILE__, $db_logging);
                playerlog($db, $ownerinfo['ship_id'], LOG_PLANET_DEFEATED_D, "{$planetinfo['name']}|{$playerinfo['sector']}|{$playerinfo['character_name']}");
                adminlog($db, LOG_ADMIN_PLANETDEL, "{$playerinfo['character_name']}|{$ownerinfo['character_name']}|{$playerinfo['sector']}");
                gen_score($ownerinfo['ship_id']);
            } else {
                echo "You may <a href='planet.php?planet_id=", $planetinfo['planet_id'] . "&amp;command=capture'>capture</a> the planet or just leave it undefended.<br><br>";
                playerlog($db, $ownerinfo['ship_id'], LOG_PLANET_DEFEATED, "{$planetinfo['name']}|{$playerinfo['sector']}|{$playerinfo['character_name']}");
                gen_score($ownerinfo['ship_id']);
                $update7a = $db->Execute("UPDATE {$db->prefix}planets SET owner=0, fighters=0, torps=torps-{$planettorps}, base='N', defeated='Y' WHERE planet_id={$planetinfo['planet_id']}");
                db_op_result($db, $update7a, __LINE__, __FILE__, $db_logging);
            }
        } else {
            echo "You may <a href='planet.php?planet_id=", $planetinfo['planet_id'] . "&amp;command=capture'>capture</a> the planet or just leave it undefended.<br><br>";
            playerlog($db, $ownerinfo['ship_id'], LOG_PLANET_DEFEATED, "{$planetinfo['name']}|{$playerinfo['sector']}|{$playerinfo['character_name']}");
            gen_score($ownerinfo['ship_id']);
            $update7a = $db->Execute("UPDATE {$db->prefix}planets SET owner=0,fighters=0, torps=torps-{$planettorps}, base='N', defeated='Y' WHERE planet_id={$planetinfo['planet_id']}");
            db_op_result($db, $update7a, __LINE__, __FILE__, $db_logging);
        }
        calc_ownership($planetinfo['sector_id']);
    } else {
        echo "<br><br><span class=\"table_word_red\">Planet Not Defeated</span><br><br>";
        $fighters_lost = $planetinfo['fighters'] - $planetfighters;
        $l_cmb_fighterloststat = str_replace("[cmb_fighters_lost]", $fighters_lost, $l_cmb_fighterloststat);
        $l_cmb_fighterloststat = str_replace("[cmb_planetinfo_fighters]", $planetinfo['fighters'], $l_cmb_fighterloststat);
        $l_cmb_fighterloststat = str_replace("[cmb_planetfighters]", $planetfighters, $l_cmb_fighterloststat);
        $energy = $planetinfo['energy'];
        playerlog($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}");
        gen_score($ownerinfo['ship_id']);
        $update7b = $db->Execute("UPDATE {$db->prefix}planets SET energy={$energy},fighters=fighters-{$fighters_lost}, torps=torps-{$planettorps}, ore=ore+{$free_ore}, goods=goods+{$free_goods}, organics=organics+{$free_organics}, credits=credits+{$ship_salvage} WHERE planet_id={$planetinfo['planet_id']}");
        db_op_result($db, $update7b, __LINE__, __FILE__, $db_logging);
    }
    $update = $db->Execute("UPDATE {$db->prefix}ships SET turns=turns-1, turns_used=turns_used+1 WHERE ship_id={$playerinfo['ship_id']}");
    db_op_result($db, $update, __LINE__, __FILE__, $db_logging);
}
Example #8
0
	{
		echo ("$l_corpm_tocorp<BR>");
		$result = $db->Execute("UPDATE $dbtables[planets] SET corp='$playerinfo[team]', owner=$playerinfo[player_id] WHERE planet_id=$planet_id");
    $ownership = calc_ownership($playerinfo[sector]);

      if(!empty($ownership))

        echo "<p>$ownership<p>";


	}
	if ($action == "planetpersonal")
	{
		echo ("$l_corpm_topersonal<BR>");
		$result = $db->Execute("UPDATE $dbtables[planets] SET corp='0', owner=$playerinfo[player_id] WHERE planet_id=$planet_id");
    $ownership = calc_ownership($playerinfo[sector]);
                // Kick other players off the planet
                $result = $db->Execute("UPDATE $dbtables[players] SET on_planet='N' WHERE on_planet='Y' AND planet_id = $planet_id AND player_id <> $playerinfo[player_id]");
      if(!empty($ownership))

        echo "<p>$ownership<p>";

	}
TEXT_GOTOMAIN();
}
else
{
echo ("<BR>$l_corpm_exploit<BR>");
TEXT_GOTOMAIN();
}
function go_build_base($planet_id, $sector_id)
{
  global $db;
  global $dbtables;
  global $base_ore, $base_organics, $base_goods, $base_credits;
  global $l_planet_bbuild;
  global $username;

  echo "<BR>Click <A HREF=planet-report.php?PRepType=1>here</A> to return to the Planet Status Report<BR><BR>";

  $result = $db->Execute("SELECT * FROM $dbtables[players] WHERE email='$username'");
  $playerinfo=$result->fields;

  $result2 = $db->Execute("SELECT * FROM $dbtables[universe] WHERE sector_id=$playerinfo[sector]");
  $sectorinfo=$result2->fields;

  $result3 = $db->Execute("SELECT * FROM $dbtables[planets] WHERE planet_id=$planet_id");
  if($result3)
    $planetinfo=$result3->fields;


  $result4 = Real_Space_Move($sector_id);
  if ($result4 != "ON_PLANET" && $result4 != "HOSTILE") {
	  // build a base
	  if($planetinfo[ore] >= $base_ore && $planetinfo[organics] >= $base_organics && $planetinfo[goods] >= $base_goods && $planetinfo[credits] >= $base_credits)
	  {
		// ** Create The Base
		$update1 = $db->Execute("UPDATE $dbtables[planets] SET base='Y', ore=$planetinfo[ore]-$base_ore, organics=$planetinfo[organics]-$base_organics, goods=$planetinfo[goods]-$base_goods, credits=$planetinfo[credits]-$base_credits WHERE planet_id=$planet_id");
		// ** Update User Turns
		$update1b = $db->Execute("UPDATE $dbtables[players] SET turns=turns-1, turns_used=turns_used+1 where player_id=$playerinfo[player_id]");
		// ** Refresh Plant Info
		$result3 = $db->Execute("SELECT * FROM $dbtables[planets] WHERE planet_id=$planet_id");
		$planetinfo=$result3->fields;
		// ** Notify User Of Base Results
		echo "$l_planet_bbuild<BR><BR>";
		// ** Calc Ownership and Notify User Of Results
		$ownership = calc_ownership($planetinfo[sector_id]);
		if(!empty($ownership))
		{
		  echo "$ownership<p>";
		}
  		echo "<BR>Click <A HREF=planet.php?planet_id=$planet_id>here</A> to go to the Planet Menu<BR><BR>";
	  }
  }
}
function furangeetoplanet($planet_id)
{
  // ***********************************
  // *** Furangee Planet Attack Code ***
  // ***********************************

  // *********************************
  // *** SETUP GENERAL VARIABLES  ****
  // *********************************
  global $playerinfo;
  global $shipinfo;
  global $planetinfo;

  global $torp_dmg_rate;
  global $level_factor;
  global $rating_combat_factor;
  global $upgrade_cost;
  global $upgrade_factor;
  global $sector_max;
  global $furangeeisdead;
  global $db, $dbtables;

  // *** LOCKING TABLES ****
  //$db->Execute("LOCK TABLES $dbtables[players] WRITE, $dbtables[ships] WRITE, $dbtables[universe] WRITE, $dbtables[planets] WRITE, $dbtables[news] WRITE, $dbtables[logs] WRITE");

  // ********************************
  // *** LOOKUP PLANET DETAILS   ****
  // ********************************
  //$resultp = $db->Execute ("SELECT * FROM $dbtables[planets] WHERE planet_id='$planet_id'");
  echo "The planet ID (ship id) = $planet_id<br>";
  $resultp = $db->Execute ("SELECT * FROM $dbtables[planets] WHERE owner='$planet_id'");
  if ($resultp->EOF) {
  	echo "Asked to get info on $planet_id and failed<br>";
	return;
  }
  $planetinfo=$resultp->fields;

  // ********************************
  // *** LOOKUP OWNER DETAILS    ****
  // ********************************
  $resulto = $db->Execute ("SELECT * FROM $dbtables[players] WHERE player_id='$planet_id'");
  $ownerinfo=$resulto->fields;

  // **********************************
  // *** SETUP PLANETARY VARIABLES ****
  // **********************************
  $base_factor = ($planetinfo[base] == 'Y') ? $basedefense : 0;

  // *** PLANET BEAMS ***
  $targetbeams = NUM_BEAMS($ownerinfo[beams] + $base_factor);
  if ($targetbeams > $planetinfo[energy]) $targetbeams = $planetinfo[energy];
  $planetinfo[energy] -= $targetbeams;
    
  // *** PLANET SHIELDS ***
  $targetshields = NUM_SHIELDS($ownerinfo[shields] + $base_factor);
  if ($targetshields > $planetinfo[energy]) $targetshields = $planetinfo[energy];
  $planetinfo[energy] -= $targetshields;
    
  // *** PLANET TORPS ***
  $torp_launchers = round(mypw($level_factor, ($ownerinfo[torp_launchers])+ $base_factor)) * 10;
  $torps = $planetinfo[torps];
  $targettorps = $torp_launchers;
  if ($torp_launchers > $torps) $targettorps = $torps;
  $planetinfo[torps] -= $targettorps;
  $targettorpdmg = $torp_dmg_rate * $targettorps;

  // *** PLANET FIGHTERS ***
  $targetfighters = $planetinfo[fighters];

  // *********************************
  // *** SETUP ATTACKER VARIABLES ****
  // *********************************

  // *** ATTACKER BEAMS ***
  $attackerbeams = NUM_BEAMS($shipinfo[beams]);
  if ($attackerbeams > $shipinfo[ship_energy]) $attackerbeams = $shipinfo[ship_energy];
  $shipinfo[ship_energy] -= $attackerbeams;

  // *** ATTACKER SHIELDS ***
  $attackershields = NUM_SHIELDS($shipinfo[shields]);
  if ($attackershields > $shipinfo[ship_energy]) $attackershields = $shipinfo[ship_energy];
  $shipinfo[ship_energy] -= $attackershields;

  // *** ATTACKER TORPS ***
  $attackertorps = round(mypw($level_factor, $shipinfo[torp_launchers])) * 2;
  if ($attackertorps > $shipinfo[torps]) $attackertorps = $shipinfo[torps]; 
  $shipinfo[torps] -= $attackertorps;
  $attackertorpdamage = $torp_dmg_rate * $attackertorps;

  // *** ATTACKER FIGHTERS ***
  $attackerfighters = $shipinfo[ship_fighters];

  // *** ATTACKER ARMOUR ***
  $attackerarmor = $shipinfo[armour_pts];

  // *********************************
  // **** BEGIN COMBAT PROCEDURES ****
  // *********************************
  if($attackerbeams > 0 && $targetfighters > 0)
  {                         //******** ATTACKER HAS BEAMS - TARGET HAS FIGHTERS - BEAMS VS FIGHTERS ********
    if($attackerbeams > $targetfighters)
    {                                  //****** ATTACKER BEAMS GT TARGET FIGHTERS ******
      $lost = $targetfighters;
      $targetfighters = 0;                                     //**** T LOOSES ALL FIGHTERS ****
      $attackerbeams = $attackerbeams-$lost;                   //**** A LOOSES BEAMS EQ TO T FIGHTERS ****
    } else
    {                                  //****** ATTACKER BEAMS LE TARGET FIGHTERS ******
      $targetfighters = $targetfighters-$attackerbeams;        //**** T LOOSES FIGHTERS EQ TO A BEAMS ****
      $attackerbeams = 0;                                      //**** A LOOSES ALL BEAMS ****
    }   
  }
  if($attackerfighters > 0 && $targetbeams > 0)
  {                         //******** TARGET HAS BEAMS - ATTACKER HAS FIGHTERS - BEAMS VS FIGHTERS ********
    if($targetbeams > round($attackerfighters / 2))
    {                                  //****** TARGET BEAMS GT HALF ATTACKER FIGHTERS ******
      $lost=$attackerfighters-(round($attackerfighters/2));
      $attackerfighters=$attackerfighters-$lost;               //**** A LOOSES HALF ALL FIGHTERS ****
      $targetbeams=$targetbeams-$lost;                         //**** T LOOSES BEAMS EQ TO HALF A FIGHTERS ****
    } else
    {                                  //****** TARGET BEAMS LE HALF ATTACKER FIGHTERS ******
      $attackerfighters=$attackerfighters-$targetbeams;        //**** A LOOSES FIGHTERS EQ TO T BEAMS **** 
      $targetbeams=0;                                          //**** T LOOSES ALL BEAMS ****
    }
  }
  if($attackerbeams > 0)
  {                         //******** ATTACKER HAS BEAMS LEFT - CONTINUE COMBAT - BEAMS VS SHIELDS ********
    if($attackerbeams > $targetshields)
    {                                  //****** ATTACKER BEAMS GT TARGET SHIELDS ******
      $attackerbeams=$attackerbeams-$targetshields;            //**** A LOOSES BEAMS EQ TO T SHIELDS ****
      $targetshields=0;                                        //**** T LOOSES ALL SHIELDS ****
    } else
    {                                  //****** ATTACKER BEAMS LE TARGET SHIELDS ******
      $targetshields=$targetshields-$attackerbeams;            //**** T LOOSES SHIELDS EQ TO A BEAMS ****
      $attackerbeams=0;                                        //**** A LOOSES ALL BEAMS ****
    }
  }
  if($targetbeams > 0)
  {                         //******** TARGET HAS BEAMS LEFT - CONTINUE COMBAT - BEAMS VS SHIELDS ********
    if($targetbeams > $attackershields)
    {                                  //****** TARGET BEAMS GT ATTACKER SHIELDS ******
      $targetbeams=$targetbeams-$attackershields;              //**** T LOOSES BEAMS EQ TO A SHIELDS ****
      $attackershields=0;                                      //**** A LOOSES ALL SHIELDS ****
    } else
    {                                  //****** TARGET BEAMS LE ATTACKER SHIELDS ****** 
      $attackershields=$attackershields-$targetbeams;          //**** A LOOSES SHIELDS EQ TO T BEAMS ****
      $targetbeams=0;                                          //**** T LOOSES ALL BEAMS ****
    }
  }
  if($targetbeams > 0)
  {                        //******** TARGET HAS BEAMS LEFT - CONTINUE COMBAT - BEAMS VS ARMOR ******** 
    if($targetbeams > $attackerarmor)
    {                                 //****** TARGET BEAMS GT ATTACKER ARMOR ******
      $targetbeams=$targetbeams-$attackerarmor;                //**** T LOOSES BEAMS EQ TO A ARMOR ****
      $attackerarmor=0;                                        //**** A LOOSES ALL ARMOR (A DESTROYED) ****
    } else
    {                                 //****** TARGET BEAMS LE ATTACKER ARMOR ******
      $attackerarmor=$attackerarmor-$targetbeams;              //**** A LOOSES ARMOR EQ TO T BEAMS ****
      $targetbeams=0;                                          //**** T LOOSES ALL BEAMS ****
    } 
  }
  if($targetfighters > 0 && $attackertorpdamage > 0)
  {                        //******** ATTACKER FIRES TORPS - TARGET HAS FIGHTERS - TORPS VS FIGHTERS ********
    if($attackertorpdamage > $targetfighters)
    {                                 //****** ATTACKER FIRED TORPS GT TARGET FIGHTERS ******
      $lost=$targetfighters;
      $targetfighters=0;                                       //**** T LOOSES ALL FIGHTERS ****
      $attackertorpdamage=$attackertorpdamage-$lost;           //**** A LOOSES FIRED TORPS EQ TO T FIGHTERS ****
    } else
    {                                 //****** ATTACKER FIRED TORPS LE HALF TARGET FIGHTERS ******
      $targetfighters=$targetfighters-$attackertorpdamage;     //**** T LOOSES FIGHTERS EQ TO A TORPS FIRED ****
      $attackertorpdamage=0;                                   //**** A LOOSES ALL TORPS FIRED ****
    }
  }
  if($attackerfighters > 0 && $targettorpdmg > 0)
  {                        //******** TARGET FIRES TORPS - ATTACKER HAS FIGHTERS - TORPS VS FIGHTERS ********
    if($targettorpdmg > round($attackerfighters / 2))
    {                                 //****** TARGET FIRED TORPS GT HALF ATTACKER FIGHTERS ******
      $lost=$attackerfighters-(round($attackerfighters/2));
      $attackerfighters=$attackerfighters-$lost;               //**** A LOOSES HALF ALL FIGHTERS ****
      $targettorpdmg=$targettorpdmg-$lost;                     //**** T LOOSES FIRED TORPS EQ TO HALF A FIGHTERS ****
    } else
    {                                 //****** TARGET FIRED TORPS LE HALF ATTACKER FIGHTERS ******
      $attackerfighters=$attackerfighters-$targettorpdmg;      //**** A LOOSES FIGHTERS EQ TO T TORPS FIRED ****
      $targettorpdmg=0;                                        //**** T LOOSES ALL TORPS FIRED ****
    }
  }
  if($targettorpdmg > 0)
  {                        //******** TARGET FIRES TORPS - CONTINUE COMBAT - TORPS VS ARMOR ********
    if($targettorpdmg > $attackerarmor)
    {                                 //****** TARGET FIRED TORPS GT HALF ATTACKER ARMOR ******
      $targettorpdmg=$targettorpdmg-$attackerarmor;            //**** T LOOSES FIRED TORPS EQ TO A ARMOR ****
      $attackerarmor=0;                                        //**** A LOOSES ALL ARMOR (A DESTROYED) ****
    } else
    {                                 //****** TARGET FIRED TORPS LE HALF ATTACKER ARMOR ******
      $attackerarmor=$attackerarmor-$targettorpdmg;            //**** A LOOSES ARMOR EQ TO T TORPS FIRED ****
      $targettorpdmg=0;                                        //**** T LOOSES ALL TORPS FIRED ****
    } 
  }
  if($attackerfighters > 0 && $targetfighters > 0)
  {                        //******** ATTACKER HAS FIGHTERS - TARGET HAS FIGHTERS - FIGHTERS VS FIGHTERS ********
    if($attackerfighters > $targetfighters)
    {                                 //****** ATTACKER FIGHTERS GT TARGET FIGHTERS ******
      $temptargfighters=0;                                     //**** T WILL LOOSE ALL FIGHTERS ****
    } else
    {                                 //****** ATTACKER FIGHTERS LE TARGET FIGHTERS ******
      $temptargfighters=$targetfighters-$attackerfighters;     //**** T WILL LOOSE FIGHTERS EQ TO A FIGHTERS ****
    }
    if($targetfighters > $attackerfighters)
    {                                 //****** TARGET FIGHTERS GT ATTACKER FIGHTERS ******
      $tempplayfighters=0;                                     //**** A WILL LOOSE ALL FIGHTERS ****
    } else
    {                                 //****** TARGET FIGHTERS LE ATTACKER FIGHTERS ******
      $tempplayfighters=$attackerfighters-$targetfighters;     //**** A WILL LOOSE FIGHTERS EQ TO T FIGHTERS ****
    }     
    $attackerfighters=$tempplayfighters;
    $targetfighters=$temptargfighters;
  }
  if($targetfighters > 0)
  {                        //******** TARGET HAS FIGHTERS - CONTINUE COMBAT - FIGHTERS VS ARMOR ********
    if($targetfighters > $attackerarmor)
    {                                 //****** TARGET FIGHTERS GT ATTACKER ARMOR ******
      $attackerarmor=0;                                        //**** A LOOSES ALL ARMOR (A DESTROYED) ****
    } else
    {                                 //****** TARGET FIGHTERS LE ATTACKER ARMOR ******
      $attackerarmor=$attackerarmor-$targetfighters;           //**** A LOOSES ARMOR EQ TO T FIGHTERS ****
    }
  }

  // *********************************
  // **** FIX NEGATIVE VALUE VARS ****
  // *********************************
  if ($attackerfighters < 0) $attackerfighters = 0;
  if ($attackertorps    < 0) $attackertorps = 0;
  if ($attackershields  < 0) $attackershields = 0;
  if ($attackerbeams    < 0) $attackerbeams = 0;
  if ($attackerarmor    < 0) $attackerarmor = 0;
  if ($targetfighters   < 0) $targetfighters = 0;
  if ($targettorps      < 0) $targettorps = 0;
  if ($targetshields    < 0) $targetshields = 0;
  if ($targetbeams      < 0) $targetbeams = 0;

  // ******************************************
  // *** CHECK IF ATTACKER SHIP DESTROYED   ***
  // ******************************************
  if(!$attackerarmor>0)
  {
    playerlog($playerinfo[player_id], LOG_RAW, "Ship destroyed by planetary defenses on planet $planetinfo[name]");
    $furangeeisdead = 1;
// news
	$headline="Furangee Attacks ".$planetinfo[name]."!";
	$newstext="Furangee ".$playerinfo[character_name]." in the ship ".$shipinfo[ship_name]." led an attack today against ".$ownerinfo[character_name]."s planet ".$planetinfo[name]." but was brought down by heavy planetary defenses. ";
	if ($playerinfo[score] < $ownerinfo[score]) {
		$newstext = $newstext . $playerinfo[character_name]." was blinded by the huge riches stored on the planet.";
	} else {
		$newstext = $newstext . $playerinfo[character_name]." thought it would be easy money but underestimated the planet defenses.";
	}
	$player_id = $playerinfo[player_id];
	$news = $db->Execute("INSERT INTO $dbtables[news] (headline, newstext, user_id, date, news_type) VALUES ('$headline','$newstext','$player_id',NOW(), 'attack')");

    $free_ore = round($shipinfo[ship_ore]/2);
    $free_organics = round($shipinfo[ship_organics]/2);
    $free_goods = round($shipinfo[ship_goods]/2);
    $ship_value=$upgrade_cost*(round(mypw($upgrade_factor, $shipinfo[hull]))+round(mypw($upgrade_factor, $shipinfo[engines]))+round(mypw($upgrade_factor, $shipinfo[power]))+round(mypw($upgrade_factor, $shipinfo[computer]))+round(mypw($upgrade_factor, $shipinfo[sensors]))+round(mypw($upgrade_factor, $shipinfo[beams]))+round(mypw($upgrade_factor, $shipinfo[torp_launchers]))+round(mypw($upgrade_factor, $shipinfo[shields]))+round(mypw($upgrade_factor, $shipinfo[armor]))+round(mypw($upgrade_factor, $shipinfo[cloak])));
    $ship_salvage_rate=rand(10,20);
    $ship_salvage=$ship_value*$ship_salvage_rate/100;
    $fighters_lost = $planetinfo[fighters] - $targetfighters;

    db_kill_player($playerinfo[player_id],$playerinfo[currentship],$planetinfo[owner]);

    // *** LOG ATTACK TO PLANET OWNER ***
    playerlog($planetinfo[owner], LOG_PLANET_NOT_DEFEATED, "$planetinfo[name]|$planetinfo[sector_id]|Furangee $playerinfo[character_name]|".NUMBER($free_ore)."|".NUMBER($free_organics)."|".NUMBER($free_goods)."|".NUMBER($ship_salvage_rate)."|".NUMBER($ship_salvage));

    // *** UPDATE PLANET ***
    $db->Execute("UPDATE $dbtables[planets] SET energy=$planetinfo[energy],fighters=fighters-$fighters_lost, torps=torps-$targettorps, ore=ore+$free_ore, goods=goods+$free_goods, organics=organics+$free_organics, credits=credits+$ship_salvage WHERE planet_id=$planetinfo[planet_id]");
  
  }
  // **********************************************
  // *** MUST HAVE MADE IT PAST PLANET DEFENSES ***
  // **********************************************
  else
  {
    $armor_lost = $shipinfo[armour_pts] - $attackerarmor;
    $fighters_lost = $shipinfo[ship_fighters] - $attackerfighters;
    $target_fighters_lost = $planetinfo[fighters] - $targetfighters;
    playerlog($playerinfo[player_id], LOG_RAW, "Made it past defenses on planet $planetinfo[name]");

    // *** UPDATE ATTACKER ***
    $db->Execute ("UPDATE $dbtables[ships] SET energy=$shipinfo[ship_energy],fighters=fighters-$fighters_lost, torps=torps-$attackertorps, armour_pts=armour_pts-$armor_lost WHERE player_id=$playerinfo[player_id] AND ship_id=$playerinfo[currentship]");
    $shipinfo[ship_fighters] = $attackerfighters;
    $shipinfo[torps] = $attackertorps;
    $shipinfo[armour_pts] = $attackerarmor;


    // *** UPDATE PLANET ***
    $db->Execute ("UPDATE $dbtables[planets] SET energy=$planetinfo[energy], fighters=$targetfighters, torps=torps-$targettorps WHERE planet_id=$planetinfo[planet_id]");
    $planetinfo[fighters] = $targetfighters;
    $planetinfo[torps] = $targettorps;

    // *** NOW WE MUST ATTACK ALL SHIPS ON THE PLANET ONE BY ONE ***
	echo "Planet Info Bug tracker<br>";
	echo "Planet info planet ID = $planetinfo[planet_id]<br>";
    $resultps = $db->Execute("SELECT * FROM $dbtables[players] WHERE planet_id=$planetinfo[planet_id] AND on_planet='Y'");
    $shipsonplanet = $resultps->RecordCount();
    if ($shipsonplanet > 0)
    {
      while (!$resultps->EOF && $furangeeisdead < 1)
      {
        $onplanet = $resultps->fields;
        furangeetoship($onplanet[player_id]);
        $resultps->MoveNext();
      }
    }
    $resultps = $db->Execute("SELECT * FROM $dbtables[players] WHERE planet_id=$planetinfo[planet_id] AND on_planet='Y'");
    $shipsonplanet = $resultps->RecordCount();
    if ($shipsonplanet == 0 && $furangeeisdead < 1)
    {
      // *** MUST HAVE KILLED ALL SHIPS ON PLANET ***
      playerlog($playerinfo[player_id], LOG_RAW, "Defeated all ships on planet $planetinfo[name]");
      // *** LOG ATTACK TO PLANET OWNER ***
      playerlog($planetinfo[owner], LOG_PLANET_DEFEATED, "$planetinfo[name]|$planetinfo[sector_id]|Furangee $playerinfo[character_name]");
	  // news
	  $headline="Furangee Defeat Planet ".$planetinfo[name]."!";
	  $newstext="Furangee ".$playerinfo[character_name]." in the ship ".$shipinfo[ship_name]." defeated ".$ownerinfo[character_name]."s planet ".$planetinfo[name].". ";
		if ($playerinfo[score] < $ownerinfo[score]) {
			$newstext = $newstext . $playerinfo[character_name]." mentioned that the bigger they are, the easier the fall.";
		} else {
			$newstext = $newstext . $playerinfo[character_name]." took the weak out and stamped on them.";
		}
		$player_id = $playerinfo[player_id];
		$news = $db->Execute("INSERT INTO $dbtables[news] (headline, newstext, user_id, date, news_type) VALUES ('$headline','$newstext','$player_id',NOW(), 'attack')");

      // *** UPDATE PLANET ***
      $db->Execute("UPDATE $dbtables[planets] SET fighters=0, torps=0, base='N', owner=0, corp=0 WHERE planet_id=$planetinfo[planet_id]"); 
      calc_ownership($planetinfo[sector_id]);

    } else {
      // *** MUST HAVE DIED TRYING ***
      playerlog($playerinfo[player_id], LOG_RAW, "We were KILLED by ships defending planet $planetinfo[name]");
		// news
		$headline="Furangee burns up in attack!";
		$newstext="Furangee ".$playerinfo[character_name]." got intimate with deep space today when he tried to attack ".$ownerinfo[character_name]."s planet ".$planetinfo[name].". ";
		if ($playerinfo[score] < $ownerinfo[score]) {
			$newstext = $newstext . $playerinfo[character_name]." felt like his time had come and in a note left on the Intergalactic Bulletin Board he said that he wanted to go out in at least a modicum of style.";
		} else {
			$newstext = $newstext . $playerinfo[character_name]." was blinded by his own feelings of superiority.";
		}
		$player_id = $playerinfo[player_id];
		$news = $db->Execute("INSERT INTO $dbtables[news] (headline, newstext, user_id, date, news_type) VALUES ('$headline','$newstext','$player_id',NOW(), 'attack')");
      // *** LOG ATTACK TO PLANET OWNER ***
      playerlog($planetinfo[owner], LOG_PLANET_NOT_DEFEATED, "$planetinfo[name]|$planetinfo[sector_id]|Furangee $playerinfo[character_name]|0|0|0|0|0");

      // *** NO SALVAGE FOR PLANET BECAUSE WENT TO SHIP WHO WON **
    }

  }


  // *** END OF FURANGEE PLANET ATTACK CODE ***
  //$db->Execute("UNLOCK TABLES");

}
function go_build_base($planet_id, $sector_id)
{
    global $db;
    global $db_logging;
    global $base_ore, $base_organics, $base_goods, $base_credits;
    global $l_planet_bbuild;
    global $username;
    echo "<br>Click <a href=planet_report.php?PRepType=1>here</A> to return to the Planet Status Report<br><br>";
    $result = $db->Execute("SELECT * FROM {$db->prefix}ships WHERE ship_id='{$user_ship_id}'");
    db_op_result($db, $result, __LINE__, __FILE__, $db_logging);
    $playerinfo = $result->fields;
    $result2 = $db->Execute("SELECT * FROM {$db->prefix}universe WHERE sector_id={$playerinfo['sector']}");
    db_op_result($db, $result2, __LINE__, __FILE__, $db_logging);
    $sectorinfo = $result2->fields;
    $result3 = $db->Execute("SELECT * FROM {$db->prefix}planets WHERE planet_id={$planet_id}");
    db_op_result($db, $result3, __LINE__, __FILE__, $db_logging);
    $planetinfo = $result3->fields;
    // Error out and return if the Player isn't the owner of the Planet
    // verify player owns the planet which is to have the base created on.
    if ($planetinfo['owner'] != $playerinfo['ship_id']) {
        echo "<div style='color:#f00; font-size:16px;'>Base Construction Failed!</div>\n";
        echo "<div style='color:#f00; font-size:16px;'>Invalid Planet or Sector Information Supplied.</div>\n";
        return (bool) false;
    }
    if (!is_numeric($planet_id) || !is_numeric($sector_id)) {
        $ip = $_SERVER['REMOTE_ADDR'];
        $hack_id = 0x1337;
        adminlog($db, LOG_ADMIN_PLANETCHEAT, "{$hack_id}|{$ip}|{$planet_id}|{$sector_id}|{$playerinfo['ship_id']}");
        echo "<div style='color:#f00; font-size:16px;'>Base Construction Failed!</div>\n";
        return (bool) false;
    }
    // build a base
    Real_Space_Move($sector_id);
    echo "<br>Click <a href=planet.php?planet_id={$planet_id}>here</A> to go to the Planet Menu<br><br>";
    if ($planetinfo['ore'] >= $base_ore && $planetinfo['organics'] >= $base_organics && $planetinfo['goods'] >= $base_goods && $planetinfo['credits'] >= $base_credits) {
        // Create The Base
        $update1 = $db->Execute("UPDATE {$db->prefix}planets SET base='Y', ore={$planetinfo['ore']}-{$base_ore}, organics={$planetinfo['organics']}-{$base_organics}, goods={$planetinfo['goods']}-{$base_goods}, credits={$planetinfo['credits']}-{$base_credits} WHERE planet_id={$planet_id}");
        db_op_result($db, $update1, __LINE__, __FILE__, $db_logging);
        // Update User Turns
        $update1b = $db->Execute("UPDATE {$db->prefix}ships SET turns=turns-1, turns_used=turns_used+1 WHERE ship_id={$playerinfo['ship_id']}");
        db_op_result($db, $update1b, __LINE__, __FILE__, $db_logging);
        // Refresh Plant Info
        $result3 = $db->Execute("SELECT * FROM {$db->prefix}planets WHERE planet_id={$planet_id}");
        db_op_result($db, $result3, __LINE__, __FILE__, $db_logging);
        $planetinfo = $result3->fields;
        // Notify User Of Base Results
        echo "{$l_planet_bbuild}<br><br>";
        // Calc Ownership and Notify User Of Results
        $ownership = calc_ownership($playerinfo['sector']);
        if (!empty($ownership)) {
            echo "{$ownership}<p>";
        }
    }
}