/solar27/include/game/classes/invasion.php
PHP | 1520 lines | 1100 code | 308 blank | 112 comment | 334 complexity | ad486ae421201409a0f6a4f0996fa1ae MD5 | raw file
Possible License(s): LGPL-2.1, AGPL-3.0, BSD-3-Clause, LGPL-2.0, MIT, GPL-2.0
Large files files are truncated, but you can click here to view the full file
- <?php
- // Solar Imperium is licensed under GPL2, Check LICENSE.TXT for mode details //
- define("INVASION_DEBUG",false);
- class Invasion {
- var $DB;
- var $convoy;
- var $target;
- var $total_strength;
- var $total_casualties;
- var $time_start;
- var $time_end;
- var $game_id;
- ///////////////////////////////////////////////////////////////////////
- //
- ///////////////////////////////////////////////////////////////////////
- function Invasion($DB, $convoy) {
- $this->DB = $DB;
- $time_now = time(NULL);
- $this->game_id = round($_SESSION["game"]);
- $this->convoy = $convoy;
- $query = "SELECT * FROM game".$this->game_id."_tb_army WHERE empire='" . $this->convoy["empire_to"]."'";
- $rs = $this->DB->Execute($query);
- if (!$rs)
- trigger_error($this->DB->ErrorMsg());
- $this->target = $rs->fields;
-
- if ($rs->EOF) {
-
- $time_start = $convoy["time_start"];
- $time_end = $convoy["time_end"];
- $time_elapsed = $time_now - $time_start;
- $time_start = $time_now;
- $time_end = $time_now + $time_elapsed;
- $query = "UPDATE game".$this->game_id."_tb_armyconvoy SET " .
- "convoy_type='" .CONF_CONVOY_INVASION_RETREAT . "'," .
- "time_start='$time_start',time_end='$time_end' WHERE id=" . $convoy["id"];
-
- if (!$DB->Execute($query)) trigger_error($DB->ErrorMsg());
- $convoy = NULL;
- }
-
- srand(time(NULL));
- }
- ///////////////////////////////////////////////////////////////////////
- //
- ///////////////////////////////////////////////////////////////////////
- function Attack() {
-
- global $units_info;
- if ($this->target == NULL) return;
- if ($this->convoy == NULL) return;
-
- $time_now = time(NULL);
-
- /////////////////////////////////////////////////////////////
- // Step 1: Build invasion force
- /////////////////////////////////////////////////////////////
- $army_attack = array ();
- $this->convoy["casualties_soldiers"] = 0;
- $this->convoy["casualties_fighters"] = 0;
- $this->convoy["casualties_lightcruisers"] = 0;
- $this->convoy["casualties_heavycruisers"] = 0;
- $this->convoy["casualties_carriers"] = 0;
- $rs2 = $this->DB->Execute("SELECT effectiveness FROM game".$this->game_id."_tb_army WHERE empire='" . $this->convoy["empire_from"]."'");
- if (!$rs2) trigger_error($this->DB->ErrorMsg());
- $rs3 = $this->DB->Execute("SELECT id,emperor,name,player_id FROM game".$this->game_id."_tb_empire WHERE id='" . $this->convoy["empire_from"]."'");
- if (!$rs3) trigger_error($this->DB->ErrorMsg());
- $this->convoy["empire"] = $rs3->fields["id"];
- $this->convoy["emperor"] = $rs3->fields["emperor"];
- $this->convoy["player_id"] = $rs3->fields["player_id"];
- $this->convoy["name"] = $rs3->fields["name"];
- $this->convoy["effectiveness"] = $rs2->fields["effectiveness"];
- if ($this->convoy["effectiveness"]< 10) $this->convoy["effectiveness"] = 10;
- if ($this->convoy["effectiveness"] > 150) $this->convoy["effectiveness"] = 150;
- $army_attack[] = $this->convoy;
- $rs = $this->DB->Execute("SELECT * FROM game".$this->game_id."_tb_armyconvoy WHERE " .
- "convoy_type='" . CONF_CONVOY_INVASION . "' AND " .
- "empire_to='" . $this->convoy["empire_to"] . "' AND " .
- "NOT empire_from='" . $this->convoy["empire_from"] . "' AND " .
- "time_end <= ".($time_now-60));
- if (!$rs)
- trigger_error($this->DB->ErrorMsg());
- while (!$rs->EOF) {
- $convoy_data = $rs->fields;
- $rs2 = $this->DB->Execute("SELECT effectiveness FROM game".$this->game_id."_tb_army WHERE empire='" . $rs->fields["empire_from"]."'");
- if (!$rs2)
- trigger_error($this->DB->ErrorMsg());
- $rs3 = $this->DB->Execute("SELECT id,emperor,name,player_id FROM game".$this->game_id."_tb_empire WHERE id='" . $rs->fields["empire_from"]."'");
- if (!$rs3)
- trigger_error($this->DB->ErrorMsg());
- $convoy_data["id"] = $rs3->fields["id"];
- $convoy_data["emperor"] = $rs3->fields["emperor"];
- $convoy_data["player_id"] = $rs3->fields["player_id"];
- $convoy_data["name"] = $rs3->fields["name"];
- $convoy_data["effectiveness"] = $rs2->fields["effectiveness"];
- if ($convoy_data["effectiveness"]< 10) $convoy_data["effectiveness"] = 10;
- if ($convoy_data["effectiveness"] > 150) $convoy_data["effectiveness"] = 150;
- $convoy_data["casualties_soldiers"] = 0;
- $convoy_data["casualties_fighters"] = 0;
- $convoy_data["casualties_lightcruisers"] = 0;
- $convoy_data["casualties_heavycruisers"] = 0;
- $convoy_data["casualties_carriers"] = 0;
- $army_attack[] = $convoy_data;
- $rs->MoveNext();
- }
- /////////////////////////////////////////////////////////////
- // Step 2: Build defense force
- /////////////////////////////////////////////////////////////
- $army_defense = array ();
- if (!isset($this->target["soldiers"])) $this->target["soldiers"] = 0;
- if (!isset($this->target["fighters"])) $this->target["fighters"] = 0;
- if (!isset($this->target["lightcruisers"])) $this->target["lightcruisers"] = 0;
- if (!isset($this->target["heavycruisers"])) $this->target["heavycruisers"] = 0;
- if (!isset($this->target["stations"])) $this->target["stations"] = 0;
- $this->target["casualties_soldiers"] = 0;
- $this->target["casualties_fighters"] = 0;
- $this->target["casualties_stations"] = 0;
- $this->target["casualties_lightcruisers"] = 0;
- $this->target["casualties_heavycruisers"] = 0;
- $army_defense[] = $this->target;
- $rs = $this->DB->Execute("SELECT * FROM game".$this->game_id."_tb_armyconvoy WHERE " .
- "convoy_type='" . CONF_CONVOY_DEFENSE . "' AND " .
- "empire_to='" . $this->convoy["empire_to"] . "' AND " .
- "time_end >= ".($time_now-(60*3)));
- if (!$rs)
- trigger_error($this->DB->ErrorMsg());
-
- while (!$rs->EOF) {
- $convoy_data = $rs->fields;
- $rs2 = $this->DB->Execute("SELECT effectiveness FROM game".$this->game_id."_tb_army WHERE empire='" . $rs->fields["empire_from"]."'");
- $rs3 = $this->DB->Execute("SELECT id,emperor,name FROM game".$this->game_id."_tb_empire WHERE id='" . $rs->fields["empire_from"]."'");
- if (!$rs2)
- trigger_error($this->DB->ErrorMsg());
- $convoy_data["empire"] = $rs3->fields["id"];
- $convoy_data["emperor"] = $rs3->fields["emperor"];
- $convoy_data["name"] = $rs3->fields["name"];
- $convoy_data["effectiveness"] = $rs2->fields["effectiveness"];
- if ($convoy_data["effectiveness"]< 10) $convoy_data["effectiveness"] = 10;
- if ($convoy_data["effectiveness"] > 150) $convoy_data["effectiveness"] = 150;
- $convoy_data["soldiers"] = $rs->fields["convoy_soldiers"];
- $convoy_data["fighters"] = $rs->fields["convoy_fighters"];
- $convoy_data["lightcruisers"] = $rs->fields["convoy_lightcruisers"];
- $convoy_data["heavycruisers"] = $rs->fields["convoy_heavycruisers"];
- $convoy_data["soldiers_level"] = $rs->fields["convoy_soldiers_level"];
- $convoy_data["fighters_level"] = $rs->fields["convoy_fighters_level"];
- $convoy_data["lightcruisers_level"] = $rs->fields["convoy_lightcruisers_level"];
- $convoy_data["heavycruisers_level"] = $rs->fields["convoy_heavycruisers_level"];
- $convoy_data["casualties_soldiers"] = 0;
- $convoy_data["casualties_fighters"] = 0;
- $convoy_data["casualties_stations"] = 0;
- $convoy_data["casualties_lightcruisers"] = 0;
- $convoy_data["casualties_heavycruisers"] = 0;
- $army_defense[] = $convoy_data;
- $rs->MoveNext();
- }
- $this->total_strength = array (
- "SPACE" => array (),
- "ORBITAL" => array (),
- "GROUND" => array ()
- );
- $this->total_casualties = array (
- "SPACE" => array (),
- "ORBITAL" => array (),
- "GROUND" => array ()
- );
- /////////////////////////////////////////////////////////////
- // Step 3: Do attacks
- /////////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////////////////////////////////////////////////////////
- // Space Attack!
- ///////////////////////////////////////////////////////////////////////////////////////////////////////
- $space_won_attack = 0;
- $space_won_defense = 0;
- for ($round = 0; $round < 5; $round++) {
- // print "ROUND ".($round+1)."<br/>";
- $attack_strength = 1;
- $total_attack_strength = array ();
- $total_attack_strength["soldiers"] = 0;
- $total_attack_strength["fighters"] = 0;
- $total_attack_strength["lightcruisers"] = 0;
- $total_attack_strength["heavycruisers"] = 0;
- for ($i = 0; $i < count($army_attack); $i++) {
- $soldiers_strength = (($army_attack[$i]["convoy_soldiers"] - $army_attack[$i]["casualties_soldiers"]) * $units_info["soldiers_" . $army_attack[$i]["convoy_soldiers_level"]]["invasion_space"]);
- $soldiers_strength = floor(($soldiers_strength / 100) * $army_attack[$i]["effectiveness"]);
- $attack_strength += $soldiers_strength;
- $fighters_strength = (($army_attack[$i]["convoy_fighters"] - $army_attack[$i]["casualties_fighters"]) * $units_info["fighters_" . $army_attack[$i]["convoy_fighters_level"]]["invasion_space"]);
- $fighters_strength = floor(($fighters_strength / 100) * $army_attack[$i]["effectiveness"]);
- $attack_strength += $fighters_strength;
- $lightcruisers_strength = (($army_attack[$i]["convoy_lightcruisers"] - $army_attack[$i]["casualties_lightcruisers"]) * $units_info["lightcruisers_" . $army_attack[$i]["convoy_lightcruisers_level"]]["invasion_space"]);
- $lightcruisers_strength = floor(($lightcruisers_strength / 100) * $army_attack[$i]["effectiveness"]);
- $attack_strength += $lightcruisers_strength;
- $heavycruisers_strength = (($army_attack[$i]["convoy_heavycruisers"] - $army_attack[$i]["casualties_heavycruisers"]) * $units_info["heavycruisers_" . $army_attack[$i]["convoy_heavycruisers_level"]]["invasion_space"]);
- $heavycruisers_strength = floor(($heavycruisers_strength / 100) * $army_attack[$i]["effectiveness"]);
- $attack_strength += $heavycruisers_strength;
- $total_attack_strength["soldiers"] += $soldiers_strength;
- $total_attack_strength["fighters"] += $fighters_strength;
- $total_attack_strength["lightcruisers"] += $lightcruisers_strength;
- $total_attack_strength["heavycruisers"] += $heavycruisers_strength;
- }
- $defense_strength = 1;
- $total_defense_strength = array ();
- $total_defense_strength["soldiers"] = 0;
- $total_defense_strength["stations"] = 0;
- $total_defense_strength["fighters"] = 0;
- $total_defense_strength["lightcruisers"] = 0;
- $total_defense_strength["heavycruisers"] = 0;
- for ($i = 0; $i < count($army_defense); $i++) {
- $soldiers_strength = (($army_defense[$i]["soldiers"] - $army_defense[$i]["casualties_soldiers"]) * $units_info["soldiers_" . $army_defense[$i]["soldiers_level"]]["invasion_space"]);
- $soldiers_strength = floor(($soldiers_strength / 100) * $army_defense[$i]["effectiveness"]);
- $defense_strength += $soldiers_strength;
- $fighters_strength = (($army_defense[$i]["fighters"] - $army_defense[$i]["casualties_fighters"]) * $units_info["fighters_" . $army_defense[$i]["fighters_level"]]["invasion_space"]);
- $fighters_strength = floor(($fighters_strength / 100) * $army_defense[$i]["effectiveness"]);
- //$defense_strength += $fighters_strength;
- if (isset ($army_defense[$i]["stations"])) {
- $stations_strength = (($army_defense[$i]["stations"] - $army_defense[$i]["casualties_stations"]) * $units_info["fighters_" . $army_defense[$i]["stations_level"]]["invasion_space"]);
- $stations_strength = floor(($stations_strength / 100) * $army_defense[$i]["effectiveness"]);
- $defense_strength += $stations_strength;
- }
- $lightcruisers_strength = (($army_defense[$i]["lightcruisers"] - $army_defense[$i]["casualties_lightcruisers"]) * $units_info["lightcruisers_" . $army_defense[$i]["lightcruisers_level"]]["invasion_space"]);
- $lightcruisers_strength = floor(($lightcruisers_strength / 100) * $army_defense[$i]["effectiveness"]);
- $defense_strength += $lightcruisers_strength;
- $heavycruisers_strength = (($army_defense[$i]["heavycruisers"] - $army_defense[$i]["casualties_heavycruisers"]) * $units_info["heavycruisers_" . $army_defense[$i]["heavycruisers_level"]]["invasion_space"]);
- $heavycruisers_strength = floor(($heavycruisers_strength / 100) * $army_defense[$i]["effectiveness"]);
- $defense_strength += $heavycruisers_strength;
- $total_defense_strength["soldiers"] += $soldiers_strength;
- $total_defense_strength["fighters"] += $fighters_strength;
- $total_defense_strength["stations"] += $stations_strength;
- $total_defense_strength["lightcruisers"] += $lightcruisers_strength;
- $total_defense_strength["heavycruisers"] += $heavycruisers_strength;
- }
- $defense_strength *= CONF_INVASION_DEFENSE_BONUS;
- $this->total_strength["SPACE"][$round] = array (
- "attack" => $total_attack_strength,
- "defense" => $total_defense_strength
- );
- // add randomness
- $attack_strength += floor(rand(0, CONF_INVASION_RANDOMNESS) * ($attack_strength / 100));
- $defense_strength += floor(rand(0, CONF_INVASION_RANDOMNESS) * ($defense_strength / 100));
- if ($attack_strength == 0)
- $attack_strength = 1;
- if ($defense_strength == 0)
- $defense_strength = 1;
- // print "ATTACK STRENGTH: ".$attack_strength."<br/>";
- // print "DEFENSE STRENGTH: ".$defense_strength."<br/>";
- $casualties = $attack_strength - $defense_strength;
- if ($casualties == 0)
- $casualties = 1;
- // print "RAW DAMAGE: ".$casualties."<br/>";
- $casualties_attack = 0;
- $casualties_defense = 0;
- if ($casualties <= 1) {
- // print "ATTACKERS LOOSE<br/>";
- $casualties_attack = (($defense_strength / $attack_strength) * 100);
- $casualties_defense = (($attack_strength / $defense_strength) * 100);
- $casualties_attack = ($casualties_attack) / CONF_INVASION_CASUALTIES_WON;
- $casualties_defense = ($casualties_defense) / CONF_INVASION_CASUALTIES_LOOSE;
- $space_won_defense++;
- } else {
- // print "DEFENDERS LOOSE<br/>";
- $casualties_attack = (($defense_strength / $attack_strength) * 100);
- $casualties_defense = (($attack_strength / $defense_strength) * 100);
- $casualties_attack = ($casualties_attack) / CONF_INVASION_CASUALTIES_LOOSE;
- $casualties_defense = ($casualties_defense) / CONF_INVASION_CASUALTIES_WON;
- $space_won_attack++;
- }
- if ($casualties_attack > 100)
- $casualties_attack = 100;
- if ($casualties_defense > 100)
- $casualties_defense = 100;
- $this->total_casualties["SPACE"][$round] = array (
- "attack" => $casualties_attack,
- "defense" => $casualties_defense
- );
- // calculating casualties
- for ($i = 0; $i < count($army_attack); $i++) {
- // print "ATTACK CONVOY: $i<br/>";
- if ($total_attack_strength["soldiers"] != 0) {
- $percent = (((($army_attack[$i]["convoy_soldiers"] - $army_attack[$i]["casualties_soldiers"]) / $total_attack_strength["soldiers"]) * 100) / 100) * $casualties_attack;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_attack[$i]["convoy_soldiers"] - $army_attack[$i]["casualties_soldiers"]) / 100) * $percent);
- $army_attack[$i]["casualties_soldiers"] += $casualties;
- // print "SOLDIERS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
- if ($total_attack_strength["fighters"] != 0) {
- $percent = (((($army_attack[$i]["convoy_fighters"] - $army_attack[$i]["casualties_fighters"]) / $total_attack_strength["fighters"]) * 100) / 100) * $casualties_attack;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_attack[$i]["convoy_fighters"] - $army_attack[$i]["casualties_fighters"]) / 100) * $percent);
- $army_attack[$i]["casualties_fighters"] += $casualties;
- // print "FIGHTERS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
- if ($round >= CONF_INVASION_LIGHTCRUISER_PROTECTION_ROUNDS)
- if ($total_attack_strength["lightcruisers"] != 0) {
- $percent = (((($army_attack[$i]["convoy_lightcruisers"] - $army_attack[$i]["casualties_lightcruisers"]) / $total_attack_strength["lightcruisers"]) * 100) / 100) * $casualties_attack;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_attack[$i]["convoy_lightcruisers"] - $army_attack[$i]["casualties_lightcruisers"]) / 100) * $percent);
- $army_attack[$i]["casualties_lightcruisers"] += $casualties;
- // print "LIGHTCRUISERS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
- if ($total_attack_strength["heavycruisers"] != 0) {
- $percent = (((($army_attack[$i]["convoy_heavycruisers"] - $army_attack[$i]["casualties_heavycruisers"]) / $total_attack_strength["heavycruisers"]) * 100) / 100) * $casualties_attack;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_attack[$i]["convoy_heavycruisers"] - $army_attack[$i]["casualties_heavycruisers"]) / 100) * $percent);
- $army_attack[$i]["casualties_heavycruisers"] += $casualties;
- // print "HEAVYCRUISERS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
- // Calculate carriers lost
- $percent = (($casualties_attack / 100) * CONF_INVASION_CARRIERS_DAMAGE) * $units_info["carriers_" . $army_attack[$i]["carriers_level"]]["toughness"];
- $casualties = floor((($army_attack[$i]["carriers"] - $army_attack[$i]["casualties_carriers"]) / 100) * $percent);
- // we need to calculate the casualties related to the carriers itself (soldiers, fighters)
- $army_attack[$i]["casualties_soldiers"] += ($casualties * (1 / CONF_CARRIER_SOLDIER));
- if ($army_attack[$i]["casualties_soldiers"] > $army_attack[$i]["convoy_soldiers"])
- $army_attack[$i]["casualties_soldiers"] = $army_attack[$i]["convoy_soldiers"];
- $army_attack[$i]["casualties_fighters"] += ($casualties * (1 / CONF_CARRIER_FIGHTER));
- if ($army_attack[$i]["casualties_fighters"] > $army_attack[$i]["convoy_fighters"])
- $army_attack[$i]["casualties_fighters"] = $army_attack[$i]["convoy_fighters"];
- $army_attack[$i]["casualties_carriers"] += $casualties;
- // print "CARRIERS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
- for ($i = 0; $i < count($army_defense); $i++) {
- // print "DEFENSE CONVOY: $i<br/>";
- if ($total_defense_strength["soldiers"] != 0) {
- $percent = (((($army_defense[$i]["soldiers"] - $army_defense[$i]["casualties_soldiers"]) / $total_defense_strength["soldiers"]) * 100) / 100) * $casualties_defense;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_defense[$i]["soldiers"] - $army_defense[$i]["casualties_soldiers"]) / 100) * $percent);
- $army_defense[$i]["casualties_soldiers"] += $casualties;
- // print "SOLDIERS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
- if ($total_defense_strength["fighters"] != 0) {
- $percent = (((($army_defense[$i]["fighters"] - $army_defense[$i]["casualties_fighters"]) / $total_defense_strength["fighters"]) * 100) / 100) * $casualties_defense;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_defense[$i]["fighters"] - $army_defense[$i]["casualties_fighters"]) / 100) * $percent);
- $army_defense[$i]["casualties_fighters"] += $casualties;
- // print "FIGHTERS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
- if (isset ($army_defense[$i]["stations"]))
- if ($total_defense_strength["stations"] != 0) {
- $percent = (((($army_defense[$i]["stations"] - $army_defense[$i]["casualties_stations"]) / $total_defense_strength["stations"]) * 100) / 100) * $casualties_defense;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_defense[$i]["stations"] - $army_defense[$i]["casualties_stations"]) / 100) * $percent);
- $army_defense[$i]["casualties_stations"] += $casualties;
- // print "STATIONS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
- if ($round >= CONF_INVASION_LIGHTCRUISER_PROTECTION_ROUNDS)
- if ($total_defense_strength["lightcruisers"] != 0) {
- $percent = (((($army_defense[$i]["lightcruisers"] - $army_defense[$i]["casualties_lightcruisers"]) / $total_defense_strength["lightcruisers"]) * 100) / 100) * $casualties_defense;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_defense[$i]["lightcruisers"] - $army_defense[$i]["casualties_lightcruisers"]) / 100) * $percent);
- $army_defense[$i]["casualties_lightcruisers"] += $casualties;
- // print "LIGHTCRUISERS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
- if ($total_defense_strength["heavycruisers"] != 0) {
- $percent = (((($army_defense[$i]["heavycruisers"] - $army_defense[$i]["casualties_heavycruisers"]) / $total_defense_strength["heavycruisers"]) * 100) / 100) * $casualties_defense;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_defense[$i]["heavycruisers"] - $army_defense[$i]["casualties_heavycruisers"]) / 100) * $percent);
- $army_defense[$i]["casualties_heavycruisers"] += $casualties;
- // print "HEAVYCRUISERS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
- }
- // print "<HR>";
- }
- // print "Space attack result: (ATTACK: ".$space_won_attack." / DEFENSE: ".$space_won_defense.")<br/>";
- if ($space_won_attack < 3)
- return $this->Finish(false, false, false, $army_attack, $army_defense);
- ///////////////////////////////////////////////////////////////////////////////////////////////////////
- // Orbital attack!
- ///////////////////////////////////////////////////////////////////////////////////////////////////////
- // print "<B>ORBITAL</B><br/>";
- $orbital_won_attack = 0;
- $orbital_won_defense = 0;
- for ($round = 0; $round < 5; $round++) {
- // print "ROUND ".($round+1)."<br/>";
- $attack_strength = 1;
- $total_attack_strength = array ();
- $total_attack_strength["soldiers"] = 0;
- $total_attack_strength["fighters"] = 0;
- $total_attack_strength["lightcruisers"] = 0;
- $total_attack_strength["heavycruisers"] = 0;
- for ($i = 0; $i < count($army_attack); $i++) {
- $soldiers_strength = (($army_attack[$i]["convoy_soldiers"] - $army_attack[$i]["casualties_soldiers"]) * $units_info["soldiers_" . $army_attack[$i]["convoy_soldiers_level"]]["invasion_orbital"]);
- $soldiers_strength = floor(($soldiers_strength / 100) * $army_attack[$i]["effectiveness"]);
- $attack_strength += $soldiers_strength;
- $fighters_strength = (($army_attack[$i]["convoy_fighters"] - $army_attack[$i]["casualties_fighters"]) * $units_info["fighters_" . $army_attack[$i]["convoy_fighters_level"]]["invasion_orbital"]);
- $fighters_strength = floor(($fighters_strength / 100) * $army_attack[$i]["effectiveness"]);
- $attack_strength += $fighters_strength;
- $lightcruisers_strength = (($army_attack[$i]["convoy_lightcruisers"] - $army_attack[$i]["casualties_lightcruisers"]) * $units_info["lightcruisers_" . $army_attack[$i]["convoy_lightcruisers_level"]]["invasion_orbital"]);
- $lightcruisers_strength = floor(($lightcruisers_strength / 100) * $army_attack[$i]["effectiveness"]);
- $attack_strength += $lightcruisers_strength;
- $heavycruisers_strength = (($army_attack[$i]["convoy_heavycruisers"] - $army_attack[$i]["casualties_heavycruisers"]) * $units_info["heavycruisers_" . $army_attack[$i]["convoy_heavycruisers_level"]]["invasion_orbital"]);
- $heavycruisers_strength = floor(($heavycruisers_strength / 100) * $army_attack[$i]["effectiveness"]);
- $attack_strength += $heavycruisers_strength;
- $total_attack_strength["soldiers"] += $soldiers_strength;
- $total_attack_strength["fighters"] += $fighters_strength;
- $total_attack_strength["lightcruisers"] += $lightcruisers_strength;
- $total_attack_strength["heavycruisers"] += $heavycruisers_strength;
- }
- $defense_strength = 1;
- $total_defense_strength = array ();
- $total_defense_strength["soldiers"] = 0;
- $total_defense_strength["stations"] = 0;
- $total_defense_strength["fighters"] = 0;
- $total_defense_strength["lightcruisers"] = 0;
- $total_defense_strength["heavycruisers"] = 0;
- for ($i = 0; $i < count($army_defense); $i++) {
- $soldiers_strength = (($army_defense[$i]["soldiers"] - $army_defense[$i]["casualties_soldiers"]) * $units_info["soldiers_" . $army_defense[$i]["soldiers_level"]]["invasion_orbital"]);
- $soldiers_strength = floor(($soldiers_strength / 100) * $army_defense[$i]["effectiveness"]);
- $defense_strength += $soldiers_strength;
-
- $fighters_strength = (($army_defense[$i]["fighters"]-$army_defense[$i]["casualties_fighters"]) * $units_info["fighters_".$army_defense[$i]["fighters_level"]]["invasion_orbital"]);
- $fighters_strength = floor(($fighters_strength/100)*$army_defense[$i]["effectiveness"]);
-
- if (isset($army_defense[$i]["stations"])) {
- $stations_strength = (($army_defense[$i]["stations"] - $army_defense[$i]["casualties_stations"]) * $units_info["fighters_" . $army_defense[$i]["stations_level"]]["invasion_orbital"]);
- $stations_strength = floor(($stations_strength / 100) * $army_defense[$i]["effectiveness"]);
- $defense_strength += $stations_strength;
- }
-
- $lightcruisers_strength = (($army_defense[$i]["lightcruisers"] - $army_defense[$i]["casualties_lightcruisers"]) * $units_info["lightcruisers_" . $army_defense[$i]["lightcruisers_level"]]["invasion_orbital"]);
- $soldiers_strength = floor(($soldiers_strength / 100) * $army_defense[$i]["effectiveness"]);
- $defense_strength += $lightcruisers_strength;
- $heavycruisers_strength = (($army_defense[$i]["heavycruisers"] - $army_defense[$i]["casualties_heavycruisers"]) * $units_info["heavycruisers_" . $army_defense[$i]["heavycruisers_level"]]["invasion_orbital"]);
- $heavycruisers_strength = floor(($heavycruisers_strength / 100) * $army_defense[$i]["effectiveness"]);
- $defense_strength += $heavycruisers_strength;
- $total_defense_strength["soldiers"] += $soldiers_strength;
- $total_defense_strength["fighters"] += $fighters_strength;
- $total_defense_strength["stations"] += $stations_strength;
- $total_defense_strength["lightcruisers"] += $lightcruisers_strength;
- $total_defense_strength["heavycruisers"] += $heavycruisers_strength;
- }
- $defense_strength *= CONF_INVASION_DEFENSE_BONUS;
- $this->total_strength["ORBITAL"][$round] = array (
- "attack" => $total_attack_strength,
- "defense" => $total_defense_strength
- );
- // $attack_strength = 8000;
- // $defense_strength = 5000;
- // $attack_strength = 4000;
- // $defense_strength = 5000;
- // add randomness
- $attack_strength += floor(rand(0, CONF_INVASION_RANDOMNESS) * ($attack_strength / 100));
- $defense_strength += floor(rand(0, CONF_INVASION_RANDOMNESS) * ($defense_strength / 100));
- if ($attack_strength == 0)
- $attack_strength = 1;
- if ($defense_strength == 0)
- $defense_strength = 1;
- // print "ATTACK STRENGTH: ".$attack_strength."<br/>";
- // print "DEFENSE STRENGTH: ".$defense_strength."<br/>";
- $casualties = $attack_strength - $defense_strength;
- if ($casualties == 0)
- $casualties = 1;
- // print "RAW DAMAGE: ".$casualties."<br/>";
- $casualties_attack = 0;
- $casualties_defense = 0;
- if ($casualties <= 1) {
- // print "ATTACKERS LOOSE<br/>";
- $casualties_attack = (($defense_strength / $attack_strength) * 100);
- $casualties_defense = (($attack_strength / $defense_strength) * 100);
- $casualties_attack = ($casualties_attack) / CONF_INVASION_CASUALTIES_WON;
- $casualties_defense = ($casualties_defense) / CONF_INVASION_CASUALTIES_LOOSE;
- $orbital_won_defense++;
- } else {
- // print "DEFENDERS LOOSE<br/>";
- $casualties_attack = (($defense_strength / $attack_strength) * 100);
- $casualties_defense = (($attack_strength / $defense_strength) * 100);
- $casualties_attack = ($casualties_attack) / CONF_INVASION_CASUALTIES_LOOSE;
- $casualties_defense = ($casualties_defense) / CONF_INVASION_CASUALTIES_WON;
- $orbital_won_attack++;
- }
- if ($casualties_attack > 100)
- $casualties_attack = 100;
- if ($casualties_defense > 100)
- $casualties_defense = 100;
- $this->total_casualties["ORBITAL"][$round] = array (
- "attack" => $casualties_attack,
- "defense" => $casualties_defense
- );
- // print "CASUALTIES ATTACK: $casualties_attack<br/>";
- // print "CASUALTIES DEFENSE: $casualties_defense<br/>";
- // print "<br/>";
- // calculating casualties
- for ($i = 0; $i < count($army_attack); $i++) {
- // print "ATTACK CONVOY: $i<br/>";
- if ($total_attack_strength["soldiers"] != 0) {
- $percent = (((($army_attack[$i]["convoy_soldiers"] - $army_attack[$i]["casualties_soldiers"]) / $total_attack_strength["soldiers"]) * 100) / 100) * $casualties_attack;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_attack[$i]["convoy_soldiers"] - $army_attack[$i]["casualties_soldiers"]) / 100) * $percent);
- $army_attack[$i]["casualties_soldiers"] += $casualties;
- // print "SOLDIERS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
- if ($total_attack_strength["fighters"] != 0) {
- $percent = (((($army_attack[$i]["convoy_fighters"] - $army_attack[$i]["casualties_fighters"]) / $total_attack_strength["fighters"]) * 100) / 100) * $casualties_attack;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_attack[$i]["convoy_fighters"] - $army_attack[$i]["casualties_fighters"]) / 100) * $percent);
- $army_attack[$i]["casualties_fighters"] += $casualties;
- // print "FIGHTERS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
- if ($round >= CONF_INVASION_LIGHTCRUISER_PROTECTION_ROUNDS)
- if ($total_attack_strength["lightcruisers"] != 0) {
- $percent = (((($army_attack[$i]["convoy_lightcruisers"] - $army_attack[$i]["casualties_lightcruisers"]) / $total_attack_strength["lightcruisers"]) * 100) / 100) * $casualties_attack;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_attack[$i]["convoy_lightcruisers"] - $army_attack[$i]["casualties_lightcruisers"]) / 100) * $percent);
- $army_attack[$i]["casualties_lightcruisers"] += $casualties;
- // print "LIGHTCRUISERS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
- if ($total_attack_strength["heavycruisers"] != 0) {
- $percent = (((($army_attack[$i]["convoy_heavycruisers"] - $army_attack[$i]["casualties_heavycruisers"]) / $total_attack_strength["heavycruisers"]) * 100) / 100) * $casualties_attack;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_attack[$i]["convoy_heavycruisers"] - $army_attack[$i]["casualties_heavycruisers"]) / 100) * $percent);
- $army_attack[$i]["casualties_heavycruisers"] += $casualties;
- // print "HEAVYCRUISERS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
- }
- for ($i = 0; $i < count($army_defense); $i++) {
- // print "DEFENSE CONVOY: $i<br/>";
- if ($total_defense_strength["soldiers"] != 0) {
- $percent = (((($army_defense[$i]["soldiers"] - $army_defense[$i]["casualties_soldiers"]) / $total_defense_strength["soldiers"]) * 100) / 100) * $casualties_defense;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_defense[$i]["soldiers"] - $army_defense[$i]["casualties_soldiers"]) / 100) * $percent);
- $army_defense[$i]["casualties_soldiers"] += $casualties;
- // print "SOLDIERS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
- if ($total_defense_strength["fighters"] != 0) {
- $percent = (((($army_defense[$i]["fighters"] - $army_defense[$i]["casualties_fighters"]) / $total_defense_strength["fighters"]) * 100) / 100) * $casualties_defense;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_defense[$i]["fighters"] - $army_defense[$i]["casualties_fighters"]) / 100) * $percent);
- $army_defense[$i]["casualties_fighters"] += $casualties;
- // print "FIGHTERS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
- if (isset ($army_defense[$i]["stations"]))
- if ($total_defense_strength["stations"] != 0) {
- $percent = (((($army_defense[$i]["stations"] - $army_defense[$i]["casualties_stations"]) / $total_defense_strength["stations"]) * 100) / 100) * $casualties_defense;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_defense[$i]["stations"] - $army_defense[$i]["casualties_stations"]) / 100) * $percent);
- $army_defense[$i]["casualties_stations"] += $casualties;
- // print "STATIONS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
- if ($round >= CONF_INVASION_LIGHTCRUISER_PROTECTION_ROUNDS)
- if ($total_defense_strength["lightcruisers"] != 0) {
- $percent = (((($army_defense[$i]["lightcruisers"] - $army_defense[$i]["casualties_lightcruisers"]) / $total_defense_strength["lightcruisers"]) * 100) / 100) * $casualties_defense;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_defense[$i]["lightcruisers"] - $army_defense[$i]["casualties_lightcruisers"]) / 100) * $percent);
- $army_defense[$i]["casualties_lightcruisers"] += $casualties;
- // print "LIGHTCRUISERS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
- if ($total_defense_strength["heavycruisers"] != 0) {
- $percent = (((($army_defense[$i]["heavycruisers"] - $army_defense[$i]["casualties_heavycruisers"]) / $total_defense_strength["heavycruisers"]) * 100) / 100) * $casualties_defense;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_defense[$i]["heavycruisers"] - $army_defense[$i]["casualties_heavycruisers"]) / 100) * $percent);
- $army_defense[$i]["casualties_heavycruisers"] += $casualties;
- // print "HEAVYCRUISERS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
- }
- // print "<HR>";
- }
- // print "Space attack result: (ATTACK: ".$orbital_won_attack." / DEFENSE: ".$orbital_won_defense.")<br/>";
- if ($orbital_won_attack < 3)
- return $this->Finish(true, false, false, $army_attack, $army_defense);
- ///////////////////////////////////////////////////////////////////////////////////////////////////////
- // Ground attack!
- ///////////////////////////////////////////////////////////////////////////////////////////////////////
- // print "<B>GROUND</B><br/>";
- $ground_won_attack = 0;
- $ground_won_defense = 0;
- for ($round = 0; $round < 5; $round++) {
- // print "ROUND ".($round+1)."<br/>";
- $attack_strength = 1;
- $total_attack_strength = array ();
- $total_attack_strength["soldiers"] = 0;
- $total_attack_strength["fighters"] = 0;
- $total_attack_strength["lightcruisers"] = 0;
- $total_attack_strength["heavycruisers"] = 0;
- for ($i = 0; $i < count($army_attack); $i++) {
- $soldiers_strength = (($army_attack[$i]["convoy_soldiers"] - $army_attack[$i]["casualties_soldiers"]) * $units_info["soldiers_" . $army_attack[$i]["convoy_soldiers_level"]]["invasion_ground"]);
- $soldiers_strength = floor(($soldiers_strength / 100) * $army_attack[$i]["effectiveness"]);
- $attack_strength += $soldiers_strength;
- $fighters_strength = (($army_attack[$i]["convoy_fighters"] - $army_attack[$i]["casualties_fighters"]) * $units_info["fighters_" . $army_attack[$i]["convoy_fighters_level"]]["invasion_ground"]);
- $fighters_strength = floor(($fighters_strength / 100) * $army_attack[$i]["effectiveness"]);
- $attack_strength += $fighters_strength;
- $lightcruisers_strength = (($army_attack[$i]["convoy_lightcruisers"] - $army_attack[$i]["casualties_lightcruisers"]) * $units_info["lightcruisers_" . $army_attack[$i]["convoy_lightcruisers_level"]]["invasion_ground"]);
- $lightcruisers_strength = floor(($lightcruisers_strength / 100) * $army_attack[$i]["effectiveness"]);
- $attack_strength += $lightcruisers_strength;
- $heavycruisers_strength = (($army_attack[$i]["convoy_heavycruisers"] - $army_attack[$i]["casualties_heavycruisers"]) * $units_info["heavycruisers_" . $army_attack[$i]["convoy_heavycruisers_level"]]["invasion_ground"]);
- $heavycruisers_strength = floor(($heavycruisers_strength / 100) * $army_attack[$i]["effectiveness"]);
- $attack_strength += $heavycruisers_strength;
- $total_attack_strength["soldiers"] += $soldiers_strength;
- $total_attack_strength["fighters"] += $fighters_strength;
- $total_attack_strength["lightcruisers"] += $lightcruisers_strength;
- $total_attack_strength["heavycruisers"] += $heavycruisers_strength;
- }
- // print "<HR>";
- // print_r($total_attack_strength);
- // print "<BR/>";
- $defense_strength = 1;
- $total_defense_strength = array ();
- $total_defense_strength["soldiers"] = 0;
- $total_defense_strength["stations"] = 0;
- $total_defense_strength["fighters"] = 0;
- $total_defense_strength["lightcruisers"] = 0;
- $total_defense_strength["heavycruisers"] = 0;
- for ($i = 0; $i < count($army_defense); $i++) {
- $soldiers_strength = (($army_defense[$i]["soldiers"] - $army_defense[$i]["casualties_soldiers"]) * $units_info["soldiers_" . $army_defense[$i]["soldiers_level"]]["invasion_ground"]);
- $soldiers_strength = floor(($soldiers_strength / 100) * $army_defense[$i]["effectiveness"]);
- $defense_strength += $soldiers_strength;
- $fighters_strength = (($army_defense[$i]["fighters"] - $army_defense[$i]["casualties_fighters"]) * $units_info["fighters_" . $army_defense[$i]["fighters_level"]]["invasion_ground"]);
- $fighters_strength = floor(($fighters_strength / 100) * $army_defense[$i]["effectiveness"]);
- // $defense_strength += $fighters_strength;
- if (isset($army_defense[$i]["stations"])) {
- $stations_strength = (($army_defense[$i]["stations"] - $army_defense[$i]["casualties_stations"]) * $units_info["fighters_" . $army_defense[$i]["stations_level"]]["invasion_ground"]);
- $stations_strength = floor(($stations_strength / 100) * $army_defense[$i]["effectiveness"]);
- $defense_strength += $stations_strength;
- }
-
- $lightcruisers_strength = (($army_defense[$i]["lightcruisers"] - $army_defense[$i]["casualties_lightcruisers"]) * $units_info["lightcruisers_" . $army_defense[$i]["lightcruisers_level"]]["invasion_ground"]);
- $lightcruisers_strength = floor(($lightcruisers_strength / 100) * $army_defense[$i]["effectiveness"]);
- $defense_strength += $lightcruisers_strength;
- $heavycruisers_strength = (($army_defense[$i]["heavycruisers"] - $army_defense[$i]["casualties_heavycruisers"]) * $units_info["heavycruisers_" . $army_defense[$i]["heavycruisers_level"]]["invasion_ground"]);
- $heavycruisers_strength = floor(($heavycruisers_strength / 100) * $army_defense[$i]["effectiveness"]);
- $defense_strength += $heavycruisers_strength;
- $total_defense_strength["soldiers"] += $soldiers_strength;
- $total_defense_strength["fighters"] += $fighters_strength;
- $total_defense_strength["stations"] += $stations_strength;
- $total_defense_strength["lightcruisers"] += $lightcruisers_strength;
- $total_defense_strength["heavycruisers"] += $heavycruisers_strength;
- }
- // print_r($total_defense_strength);
- $defense_strength *= CONF_INVASION_DEFENSE_BONUS;
- $this->total_strength["GROUND"][$round] = array (
- "attack" => $total_attack_strength,
- "defense" => $total_defense_strength
- );
- // add randomness
- $attack_strength += floor(rand(0, CONF_INVASION_RANDOMNESS) * ($attack_strength / 100));
- $defense_strength += floor(rand(0, CONF_INVASION_RANDOMNESS) * ($defense_strength / 100));
- // print "<HR>";
- // print "ATTACK STRENGTH: ".$attack_strength."<br/>";
- // print "DEFENSE STRENGTH: ".$defense_strength."<br/>";
- $casualties = $attack_strength - $defense_strength;
- if ($casualties == 0)
- $casualties = 1;
- // print "RAW DAMAGE: ".$casualties."<br/>";
- $casualties_attack = 0;
- $casualties_defense = 0;
- if ($attack_strength == 0)
- $attack_strength = 1;
- if ($defense_strength == 0)
- $defense_strength = 1;
- if ($casualties <= 1) {
- // print "ATTACKERS LOOSE<br/>";
- $casualties_attack = (($defense_strength / $attack_strength) * 100);
- $casualties_defense = (($attack_strength / $defense_strength) * 100);
- $casualties_attack = ($casualties_attack) / CONF_INVASION_CASUALTIES_WON;
- $casualties_defense = ($casualties_defense) / CONF_INVASION_CASUALTIES_LOOSE;
- $ground_won_defense++;
- } else {
- // print "DEFENDERS LOOSE<br/>";
- $casualties_attack = (($defense_strength / $attack_strength) * 100);
- $casualties_defense = (($attack_strength / $defense_strength) * 100);
- $casualties_attack = ($casualties_attack) / CONF_INVASION_CASUALTIES_LOOSE;
- $casualties_defense = ($casualties_defense) / CONF_INVASION_CASUALTIES_WON;
- $ground_won_attack++;
- }
- if ($casualties_attack > 100)
- $casualties_attack = 100;
- if ($casualties_defense > 100)
- $casualties_defense = 100;
- if ($casualties_attack < 0)
- $casualties_attack = 0;
- if ($casualties_defense < 0)
- $casualties_defense = 0;
- $this->total_casualties["GROUND"][$round] = array (
- "attack" => $casualties_attack,
- "defense" => $casualties_defense
- );
- // calculating casualties
- for ($i = 0; $i < count($army_attack); $i++) {
- // print "ATTACK CONVOY: $i<br/>";
- if ($total_attack_strength["soldiers"] != 0) {
- $percent = (((($army_attack[$i]["convoy_soldiers"] - $army_attack[$i]["casualties_soldiers"]) / $total_attack_strength["soldiers"]) * 100) / 100) * $casualties_attack;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_attack[$i]["convoy_soldiers"] - $army_attack[$i]["casualties_soldiers"]) / 100) * $percent);
- $army_attack[$i]["casualties_soldiers"] += $casualties;
- }
- if ($total_attack_strength["fighters"] != 0) {
- $percent = (((($army_attack[$i]["convoy_fighters"] - $army_attack[$i]["casualties_fighters"]) / $total_attack_strength["fighters"]) * 100) / 100) * $casualties_attack;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_attack[$i]["convoy_fighters"] - $army_attack[$i]["casualties_fighters"]) / 100) * $percent);
- $army_attack[$i]["casualties_fighters"] += $casualties;
- }
- if ($round >= CONF_INVASION_LIGHTCRUISER_PROTECTION_ROUNDS)
- if ($total_attack_strength["lightcruisers"] != 0) {
- $percent = (((($army_attack[$i]["convoy_lightcruisers"] - $army_attack[$i]["casualties_lightcruisers"]) / $total_attack_strength["lightcruisers"]) * 100) / 100) * $casualties_attack;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_attack[$i]["convoy_lightcruisers"] - $army_attack[$i]["casualties_lightcruisers"]) / 100) * $percent);
- $army_attack[$i]["casualties_lightcruisers"] += $casualties;
- }
- if ($total_attack_strength["heavycruisers"] != 0) {
- $percent = (((($army_attack[$i]["convoy_heavycruisers"] - $army_attack[$i]["casualties_heavycruisers"]) / $total_attack_strength["heavycruisers"]) * 100) / 100) * $casualties_attack;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_attack[$i]["convoy_heavycruisers"] - $army_attack[$i]["casualties_heavycruisers"]) / 100) * $percent);
- $army_attack[$i]["casualties_heavycruisers"] += $casualties;
- }
- }
- for ($i = 0; $i < count($army_defense); $i++) {
- if ($total_defense_strength["soldiers"] != 0) {
- $percent = (((($army_defense[$i]["soldiers"] - $army_defense[$i]["casualties_soldiers"]) / $total_defense_strength["soldiers"]) * 100) / 100) * $casualties_defense;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_defense[$i]["soldiers"] - $army_defense[$i]["casualties_soldiers"]) / 100) * $percent);
- $army_defense[$i]["casualties_soldiers"] += $casualties;
- // print "SOLDIERS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
- if ($total_defense_strength["fighters"] != 0) {
- $percent = (((($army_defense[$i]["fighters"] - $army_defense[$i]["casualties_fighters"]) / $total_defense_strength["fighters"]) * 100) / 100) * $casualties_defense;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_defense[$i]["fighters"] - $army_defense[$i]["casualties_fighters"]) / 100) * $percent);
- $army_defense[$i]["casualties_fighters"] += $casualties;
- // print "FIGHTERS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
- if ($total_defense_strength["stations"] != 0) {
-
- if (isset($army_defense[$i]["stations"])) {
- $percent = (((($army_defense[$i]["stations"] - $army_defense[$i]["casualties_stations"]) / $total_defense_strength["stations"]) * 100) / 100) * $casualties_defense;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_defense[$i]["stations"] - $army_defense[$i]["casualties_stations"]) / 100) * $percent);
- $army_defense[$i]["casualties_stations"] += $casualties;
- // print "STATIONS CASUALTIES: " .$percent." % (".$casualties.")<br/>";
- }
-
- }
- if ($round >= CONF_INVASION_LIGHTCRUISER_PROTECTION_ROUNDS)
- if ($total_defense_strength["lightcruisers"] != 0) {
- $percent = (((($army_defense[$i]["lightcruisers"] - $army_defense[$i]["casualties_lightcruisers"]) / $total_defense_strength["lightcruisers"]) * 100) / 100) * $casualties_defense;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_defense[$i]["lightcruisers"] - $army_defense[$i]["casualties_lightcruisers"]) / 100) * $percent);
- $army_defense[$i]["casualties_lightcruisers"] += $casualties;
- }
- if ($total_defense_strength["heavycruisers"] != 0) {
- $percent = (((($army_defense[$i]["heavycruisers"] - $army_defense[$i]["casualties_heavycruisers"]) / $total_defense_strength["heavycruisers"]) * 100) / 100) * $casualties_defense;
- if ($percent > 100)
- $percent = 100;
- $casualties = floor((($army_defense[$i]["heavycruisers"] - $army_defense[$i]["casualties_heavycruisers"]) / 100) * $percent);
- $army_defense[$i]["casualties_heavycruisers"] += $casualties;
- }
- }
- }
- if ($ground_won_attack < 3)
- return $this->Finish(true, false, false, $army_attack, $army_defense);
- $this->Finish(true, true, true, $army_attack, $army_defense);
- }
- //////////////////////////////////////////////////////////////////////////////////////
- //
- //////////////////////////////////////////////////////////////////////////////////////
- function Finish($space, $orbital, $ground, $army_attack, $army_defense) {
- global $GAME;
- if (INVASION_DEBUG) print "<PRE>";
- if (INVASION_DEBUG) print_r($_SESSION);
- //if ($this->game_id == 4) die("This is our game!");
- $strength = $this->total_strength["SPACE"][0];
- $time_now = time(NULL);
-
- if ($ground == true) {
- // invasion worked
- for ($i=0;$i<count($army_attack);$i++) {
- $rs = $this->DB->Execute("SELECT score FROM system_tb_players WHERE id='".$army_attack[$i]["player_id"]."'");
- if (!$rs) trigger_error($this->DB->ErrorMsg());
- if (!INVASION_DEBUG) if (!$this->DB->Execute("UPDATE system_tb_players SET score='".($rs->fields["score"]+5)."' WHERE id='".$army_attack[$i]["player_id"]."'")) trigger_error($this->DB->ErrorMsg());
-
- if (isset($_SESSION["player"])) {
- if ($_SESSION["player"] == $army_attack[$i]["player_id"]) {
- $_SESSION["player"]["score"] = $rs->fields["score"]+5;
- }
- }
- }
- $target_empire = new Empire($this->DB, $GAME["template"], $GAME["gameplay_costs"]);
- $target_empire->Load($army_defense[0]["empire"]);
- if (INVASION_DEBUG) print "Defender empire: ".$army_defense[0]["empire"]."\r\n";
- // Calculating losts for the target
- $percent = 0;
- for ($i = 0; $i < count($this->total_casualties["GROUND"]); $i++) {
- $percent = ($percent + $this->total_casualties["GROUND"][$i]["defense"]) / 2;
- }
- $percent += CONF_INVASION_PLANETS_MINIMUM;
- if ($percent > CONF_INVASION_PLANETS_MAXIMUM)
- $percent = CONF_INVASION_PLANETS_MAXIMUM;
- $percent = floor($percent);
- if (INVASION_DEBUG) print "Defender casualties percent: " .$percent."%\r\n";
- $lost_population = floor(($target_empire->data["population"] / 100) * $percent);
- if (INVASION_DEBUG) print "Defender population lost: " .$lost_population."\r\n";
- $target_empire->data["population"] -= $lost_population;
- $lost_credits = floor(($target_empire->data["credits"] / 100) * $percent);
- if (INVASION_DEBUG) print "Defender credits lost: " .$lost_credits."\r\n";
- $target_empire->data["credits"] -= $lost_credits;
- $lost_food_planets = floor(($target_empire->planets->data["food_planets"] / 100) * $percent);
- if (INVASION_DEBUG) print "Defender food planets lost: " . $lost_food_planets."\r\n";
- $lost_ore_planets = floor(($target_empire->planets->data["ore_planets"] / 100) * $percent);
- if (INVASION_DEBUG) print "Defender ore planets lost: " . $lost_ore_planets."\r\n";
- $lost_tourism_planets = floor(($target_empire->planets->data["tourism_planets"] / 100) * $percent);
- if (INVASION_DEBUG) print "Defender tourism planets lost: " . $lost_tourism_planets."\r\n";
- $lost_supply_planets = floor(($target_empire->planets->data["supply_planets"] / 100) * $percent);
- if (INVASION_DEBUG) print "Defender supply planets lost: " . $lost_supply_planets."\r\n";
- $lost_gov_planets = floor(($target_empire->planets->data["gov_planets"] / 100) * $percent);
- if (INVASION_DEBUG) print "Defender governement planets lost: " . $lost_gov_planets."\r\n";
- $lost_edu_planets = floor(($target_empire->planets->data["edu_planets"] / 100) * $percent);
- if (INVASION_DEBUG) print "Defender education planets lost: " . $lost_edu_planets."\r\n";
- $lost_research_planets = floor(($target_empire->planets->data["research_planets"] / 100) * $percent);
- if (INVASION_DEBUG) print "Defender research planets lost: " . $lost_research_planets."\r\n";
- $lost_urban_planets = floor(($target_empire->planets->data["urban_planets"] / 100) * $percent);
- if (INVASION_DEBUG) print "Defender urban planets lost: " . $lost_urban_planets."\r\n";
- $lost_petro_planets = floor(($target_empire->planets->data["petro_planets"] / 100) * $percent);
- if (INVASION_DEBUG) print "Defender petroleum planets lost: " . $lost_petro_planets."\r\n";
- $lost_antipollu_planets = floor(($t…
Large files files are truncated, but you can click here to view the full file