function Exp_ResourcesFound($queue, $fleet_obj, $fleet, $origin, $target) { $small = array(loca("EXP_RESFOUND_SMALL_1"), loca("EXP_RESFOUND_SMALL_2"), loca("EXP_RESFOUND_SMALL_3"), loca("EXP_RESFOUND_SMALL_4")); $medium = array(loca("EXP_RESFOUND_MED_1"), loca("EXP_RESFOUND_MED_2"), loca("EXP_RESFOUND_MED_3")); $large = array(loca("EXP_RESFOUND_LARGE_1"), loca("EXP_RESFOUND_LARGE_2")); $footer = array(loca("EXP_RESFOUND_LOGBOOK_1"), loca("EXP_RESFOUND_LOGBOOK_2"), loca("EXP_RESFOUND_LOGBOOK_3"), loca("EXP_RESFOUND_LOGBOOK_4")); $resname = array(loca("METAL"), loca("CRYSTAL"), loca("DEUTERIUM")); // Рассчитать тип найденного ресурса $type = mt_rand(0, 2); // Рассчитать тип месторождения $chance = mt_rand(0, 99); if ($chance >= 99) { // крупное $roll = mt_rand(51, 100) * 2; $n = mt_rand(0, count($large) - 1); $msg = $large[$n]; } else { if ($chance >= 90) { // среднее $roll = mt_rand(26, 50) * 2; $n = mt_rand(0, count($medium) - 1); $msg = $medium[$n]; } else { // маленькое $roll = mt_rand(5, 25) * 2; $n = mt_rand(0, count($small) - 1); $msg = $small[$n]; } } if ($type == 1) { $roll /= 2; } else { if ($type == 2) { $roll /= 3; } } // Рассчитать количество найденного ресурса $points = min(max(200, ExpPoints($fleet)), ExpUpperLimit()); $cargo = max(0, FleetCargoSummary($fleet) - ($fleet_obj['m'] + $fleet_obj['k'] + $fleet_obj['d'])); $amount = $roll * $points; // Количество найденных ресурсов уменьшается до общей грузоподъемности флота if ($cargo < $amount) { $amount = $cargo; $no_cargo = true; } else { $no_cargo = false; } $msg .= va(loca("EXP_FOUND"), nicenum($amount), $resname[$type]); if ($no_cargo) { $n = mt_rand(0, count($footer) - 1); $msg .= "<br><br>" . $footer[$n]; } $m = $k = $d = 0; if ($type == 0) { $m = $amount; } else { if ($type == 1) { $k = $amount; } else { if ($type == 2) { $d = $amount; } } } // Вернуть флот. // В качестве времени полёта используется время удержания. DispatchFleet($fleet, $origin, $target, 115, $fleet_obj['deploy_time'], $fleet_obj['m'] + $m, $fleet_obj['k'] + $k, $fleet_obj['d'] + $d, 0, $queue['end']); return $msg; }
function RecycleArrive($queue, $fleet_obj, $fleet, $origin, $target) { if ($fleet[209] == 0) { Error("Попытка сбора ПО без переработчиков"); } if ($target['type'] != 10000) { Error("Перерабатывать можно только поля обломков!"); } $sum_cargo = FleetCargoSummary($fleet) - ($fleet_obj['m'] + $fleet_obj['k'] + $fleet_obj['d']); $recycler_cargo = FleetCargo(209) * $fleet[209]; $cargo = min($recycler_cargo, $sum_cargo); $harvest = HarvestDebris($target['planet_id'], $cargo, $queue['end']); $dm = $harvest['m']; $dk = $harvest['k']; $subj = "\n<span class=\"espionagereport\">Разведданные</span>\n"; $report = "Переработчики в количестве " . nicenum($fleet[209]) . " штук обладают общей грузоподъёмностью в " . nicenum($cargo) . ". " . "Поле обломков содержит " . nicenum($target['m']) . " металла и " . nicenum($target['k']) . " кристалла. " . "Добыто " . nicenum($dm) . " металла и " . nicenum($dk) . " кристалла."; // Вернуть флот. DispatchFleet($fleet, $origin, $target, 108, $fleet_obj['flight_time'], $fleet_obj['m'] + $dm, $fleet_obj['k'] + $dk, $fleet_obj['d'], $fleet_obj['fuel'] / 2, $queue['end']); SendMessage($fleet_obj['owner_id'], "Флот ", $subj, $report, 5, $queue['end']); }
function WritebackBattleResults($a, $d, $res, $repaired, $cm, $ck, $cd, $sum_cargo) { $fleetmap = array(202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215); $defmap = array(401, 402, 403, 404, 405, 406, 407, 408); global $db_prefix; // Бой с раундами. $rounds = count($res['rounds']); if ($rounds > 0) { $last = $res['rounds'][$rounds - 1]; foreach ($last['attackers'] as $i => $attacker) { $fleet_obj = LoadFleet($attacker['id']); $queue = GetFleetQueue($fleet_obj['fleet_id']); $origin = GetPlanet($fleet_obj['start_planet']); $target = GetPlanet($fleet_obj['target_planet']); $ships = 0; foreach ($fleetmap as $ii => $gid) { $ships += $attacker[$gid]; } if ($sum_cargo == 0) { $cargo = 0; } else { $cargo = (FleetCargoSummary($attacker) - ($fleet_obj['m'] + $fleet_obj['k'] + $fleet_obj['d']) - $fleet_obj['fuel']) / $sum_cargo; } if ($ships > 0) { if ($fleet_obj['mission'] == 9 && $res['result'] === "awon") { $result = GravitonAttack($fleet_obj, $attacker, $queue['end']); } else { $result = 0; } if ($result < 2) { DispatchFleet($attacker, $origin, $target, $fleet_obj['mission'] + 100, $fleet_obj['flight_time'], $fleet_obj['m'] + $cm * $cargo, $fleet_obj['k'] + $ck * $cargo, $fleet_obj['d'] + $cd * $cargo, $fleet_obj['fuel'] / 2, $queue['end']); } } } foreach ($last['defenders'] as $i => $defender) { if ($i == 0) { AdjustResources($cm, $ck, $cd, $defender['id'], '-'); $objects = array(); foreach ($fleetmap as $ii => $gid) { $objects["f{$gid}"] = $defender[$gid] ? $defender[$gid] : 0; } foreach ($defmap as $ii => $gid) { $objects["d{$gid}"] = $repaired[$gid] ? $repaired[$gid] : 0; $objects["d{$gid}"] += $defender[$gid]; } SetPlanetFleetDefense($defender['id'], $objects); } else { $ships = 0; foreach ($fleetmap as $ii => $gid) { $ships += $defender[$gid]; } if ($ships > 0) { SetFleet($defender['id'], $defender); } else { $queue = GetFleetQueue($defender['id']); DeleteFleet($defender['id']); // удалить флот RemoveQueue($queue['task_id']); // удалить задание } } } } else { foreach ($a as $i => $attacker) { $fleet_obj = LoadFleet($attacker['id']); $queue = GetFleetQueue($fleet_obj['fleet_id']); $origin = GetPlanet($fleet_obj['start_planet']); $target = GetPlanet($fleet_obj['target_planet']); $ships = 0; foreach ($fleetmap as $ii => $gid) { $ships += $attacker['fleet'][$gid]; } if ($sum_cargo == 0) { $cargo = 0; } else { $cargo = (FleetCargoSummary($attacker['fleet']) - ($fleet_obj['m'] + $fleet_obj['k'] + $fleet_obj['d']) - $fleet_obj['fuel']) / $sum_cargo; } if ($ships > 0) { if ($fleet_obj['mission'] == 9 && $res['result'] === "awon") { $result = GravitonAttack($fleet_obj, $attacker['fleet'], $queue['end']); } else { $result = 0; } if ($result < 2) { DispatchFleet($attacker['fleet'], $origin, $target, $fleet_obj['mission'] + 100, $fleet_obj['flight_time'], $fleet_obj['m'] + $cm * $cargo, $fleet_obj['k'] + $ck * $cargo, $fleet_obj['d'] + $cd * $cargo, $fleet_obj['fuel'] / 2, $queue['end']); } } } foreach ($d as $i => $defender) { if ($i == 0) { AdjustResources($cm, $ck, $cd, $defender['id'], '-'); $objects = array(); foreach ($fleetmap as $ii => $gid) { $objects["f{$gid}"] = $defender[$gid] ? $defender[$gid] : 0; } foreach ($defmap as $ii => $gid) { $objects["d{$gid}"] = $repaired[$gid] ? $repaired[$gid] : 0; $objects["d{$gid}"] += $defender[$gid]; } SetPlanetFleetDefense($defender['id'], $objects); } else { $ships = 0; foreach ($fleetmap as $ii => $gid) { $ships += $defender[$gid]; } if ($ships > 0) { SetFleet($defender['id'], $defender); } else { $queue = GetFleetQueue($defender['id']); DeleteFleet($defender['id']); // удалить флот RemoveQueue($queue['task_id']); // удалить задание } } } } }