/** * method acs_steal * param $attackFleets * param $defenderPlanet * param $ForSim * return the steal result */ private function acs_steal($attackFleets, $defenderPlanet, $ForSim = FALSE) { $SortFleets = array(); foreach ($attackFleets as $FleetID => $Attacker) { foreach ($Attacker['detail'] as $Element => $amount) { if ($Element != 210) { //fix probos capacity in attack by jstar $SortFleets[$FleetID] += $this->_pricelist[$Element]['capacity'] * $amount; } } $SortFleets[$FleetID] -= $Attacker['fleet']['fleet_resource_metal'] - $Attacker['fleet']['fleet_resource_crystal'] - $Attacker['fleet']['fleet_resource_deuterium']; } $Sumcapacity = array_sum($SortFleets); //FIX JTSAMPER $booty['deuterium'] = min($Sumcapacity / 3, $defenderPlanet['planet_deuterium'] / 2); $Sumcapacity -= $booty['deuterium']; $booty['crystal'] = min($Sumcapacity / 2, $defenderPlanet['planet_crystal'] / 2); $Sumcapacity -= $booty['crystal']; $booty['metal'] = min($Sumcapacity, $defenderPlanet['planet_metal'] / 2); $Sumcapacity -= $booty['metal']; $oldMetalBooty = $booty['crystal']; $booty['crystal'] += min($Sumcapacity / 2, max($defenderPlanet['planet_crystal'] / 2 - $booty['crystal'], 0)); $Sumcapacity += $oldMetalBooty - $booty['crystal']; $booty['metal'] += min($Sumcapacity, max($defenderPlanet['planet_metal'] / 2 - $booty['metal'], 0)); $booty['metal'] = max($booty['metal'], 0); $booty['crystal'] = max($booty['crystal'], 0); $booty['deuterium'] = max($booty['deuterium'], 0); //END FIX $steal = array_map('floor', $booty); if ($ForSim) { return $steal; } $AllCapacity = array_sum($SortFleets); $QryUpdateFleet = ''; if ($AllCapacity != 0) { foreach ($SortFleets as $FleetID => $Capacity) { parent::$db->query('UPDATE ' . FLEETS . ' SET `fleet_resource_metal` = `fleet_resource_metal` + ' . Format_Lib::float_to_string($steal['metal'] * ($Capacity / $AllCapacity)) . ', `fleet_resource_crystal` = `fleet_resource_crystal` +' . Format_Lib::float_to_string($steal['crystal'] * ($Capacity / $AllCapacity)) . ', `fleet_resource_deuterium` = `fleet_resource_deuterium` +' . Format_Lib::float_to_string($steal['deuterium'] * ($Capacity / $AllCapacity)) . ' WHERE fleet_id = ' . $FleetID . ' LIMIT 1;'); } } else { $steal = 0; } return $steal; }