* All rights reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * --> NOTICE <-- * This file is part of the core development branch, changing its contents will * make you unable to use the automatic updates manager. Please refer to the * documentation for further information about customizing XNova. * */ function walka ($CurrentSet, $TargetSet, $CurrentTechno, $TargetTechno) { global $pricelist, $CombatCaps, $gameConfig; $runda = array(); $atakujacy_n = array(); $wrog_n = array(); // Calcul des points de Structure de l'attaquant if (!is_null($CurrentSet)) { $atakujacy_zlom_poczatek['metal'] = 0; $atakujacy_zlom_poczatek['crystal'] = 0; foreach($CurrentSet as $a => $b) { $atakujacy_zlom_poczatek['metal'] = $atakujacy_zlom_poczatek['metal'] + $CurrentSet[$a]['count'] * $pricelist[$a]['metal']; $atakujacy_zlom_poczatek['crystal'] = $atakujacy_zlom_poczatek['crystal'] + $CurrentSet[$a]['count'] * $pricelist[$a]['crystal']; } } // Calcul des points de Structure du défenseur $wrog_zlom_poczatek['metal'] = 0; $wrog_zlom_poczatek['crystal'] = 0; $wrog_poczatek = $TargetSet; if (!is_null($TargetSet)) { foreach($TargetSet as $a => $b) { if ($a < 300) { $wrog_zlom_poczatek['metal'] = $wrog_zlom_poczatek['metal'] + $TargetSet[$a]['count'] * $pricelist[$a]['metal']; $wrog_zlom_poczatek['crystal'] = $wrog_zlom_poczatek['crystal'] + $TargetSet[$a]['count'] * $pricelist[$a]['crystal']; } else { $wrog_zlom_poczatek_obrona['metal'] = $wrog_zlom_poczatek_obrona['metal'] + $TargetSet[$a]['count'] * $pricelist[$a]['metal']; $wrog_zlom_poczatek_obrona['crystal'] = $wrog_zlom_poczatek_obrona['crystal'] + $TargetSet[$a]['count'] * $pricelist[$a]['crystal']; } } } for ($i = 1; $i <= 7; $i++) { $atakujacy_atak = 0; $wrog_atak = 0; $atakujacy_obrona = 0; $wrog_obrona = 0; $atakujacy_ilosc = 0; $wrog_ilosc = 0; $wrog_tarcza = 0; $atakujacy_tarcza = 0; if (!is_null($CurrentSet)) { foreach($CurrentSet as $a => $b) { $CurrentSet[$a]["obrona"] = $CurrentSet[$a]['count'] * ($pricelist[$a]['metal'] + $pricelist[$a]['crystal']) / 10 * (1 + (0.1 * ($CurrentTechno["defence_tech"]) + (0.05 * $user['rpg_amiral']))); $rand = rand(80, 120) / 100; $CurrentSet[$a]["tarcza"] = $CurrentSet[$a]['count'] * $CombatCaps[$a]['shield'] * (1 + (0.1 * $CurrentTechno["shield_tech"]) + (0.05 * $user['rpg_amiral'])) * $rand; $atak_statku = $CombatCaps[$a]['attack']; $technologie = (1 + (0.1 * $CurrentTechno["military_tech"]+(0.05 * $user['rpg_amiral']))); $rand = rand(80, 120) / 100; $ilosc = $CurrentSet[$a]['count']; $CurrentSet[$a]["atak"] = $ilosc * $atak_statku * $technologie * $rand; $atakujacy_atak = $atakujacy_atak + $CurrentSet[$a]["atak"]; $atakujacy_obrona = $atakujacy_obrona + $CurrentSet[$a]["obrona"]; $atakujacy_ilosc = $atakujacy_ilosc + $CurrentSet[$a]['count']; } } else { $atakujacy_ilosc = 0; break; } if (!is_null($TargetSet)) { foreach($TargetSet as $a => $b) { $TargetSet[$a]["obrona"] = $TargetSet[$a]['count'] * ($pricelist[$a]['metal'] + $pricelist[$a]['crystal']) / 10 * (1 + (0.1 * ($TargetTechno["defence_tech"]) + (0.05 * $user['rpg_amiral']))); $rand = rand(80, 120) / 100; $TargetSet[$a]["tarcza"] = $TargetSet[$a]['count'] * $CombatCaps[$a]['shield'] * (1 + (0.1 * $TargetTechno["shield_tech"])+ (0.05 * $user['rpg_amiral'])) * $rand; $atak_statku = $CombatCaps[$a]['attack']; $technologie = (1 + (0.1 * $TargetTechno["military_tech"]) + (0.05 * $user['rpg_amiral'])); $rand = rand(80, 120) / 100; $ilosc = $TargetSet[$a]['count']; $TargetSet[$a]["atak"] = $ilosc * $atak_statku * $technologie * $rand; $wrog_atak = $wrog_atak + $TargetSet[$a]["atak"]; $wrog_obrona = $wrog_obrona + $TargetSet[$a]["obrona"]; $wrog_ilosc = $wrog_ilosc + $TargetSet[$a]['count']; } } else { $wrog_ilosc = 0; $runda[$i]["atakujacy"] = $CurrentSet; $runda[$i]["wrog"] = $TargetSet; $runda[$i]["atakujacy"]["atak"] = $atakujacy_atak; $runda[$i]["wrog"]["atak"] = $wrog_atak; $runda[$i]["atakujacy"]['count'] = $atakujacy_ilosc; $runda[$i]["wrog"]['count'] = $wrog_ilosc; break; } $runda[$i]["atakujacy"] = $CurrentSet; $runda[$i]["wrog"] = $TargetSet; $runda[$i]["atakujacy"]["atak"] = $atakujacy_atak; $runda[$i]["wrog"]["atak"] = $wrog_atak; $runda[$i]["atakujacy"]['count'] = $atakujacy_ilosc; $runda[$i]["wrog"]['count'] = $wrog_ilosc; if (($atakujacy_ilosc == 0) or ($wrog_ilosc == 0)) { break; } foreach($CurrentSet as $a => $b) { if ($atakujacy_ilosc > 0) { $wrog_moc = $CurrentSet[$a]['count'] * $wrog_atak / $atakujacy_ilosc; if ($CurrentSet[$a]["tarcza"] < $wrog_moc) { $max_zdjac = floor($CurrentSet[$a]['count'] * $wrog_ilosc / $atakujacy_ilosc); $wrog_moc = $wrog_moc - $CurrentSet[$a]["tarcza"]; $atakujacy_tarcza = $atakujacy_tarcza + $CurrentSet[$a]["tarcza"]; $ile_zdjac = floor(($wrog_moc / (($pricelist[$a]['metal'] + $pricelist[$a]['crystal']) / 10))); if ($ile_zdjac > $max_zdjac) { $ile_zdjac = $max_zdjac; } $atakujacy_n[$a]['count'] = ceil($CurrentSet[$a]['count'] - $ile_zdjac); if ($atakujacy_n[$a]['count'] <= 0) { $atakujacy_n[$a]['count'] = 0; } } else { $atakujacy_n[$a]['count'] = $CurrentSet[$a]['count']; $atakujacy_tarcza = $atakujacy_tarcza + $wrog_moc; } } else { $atakujacy_n[$a]['count'] = $CurrentSet[$a]['count']; $atakujacy_tarcza = $atakujacy_tarcza + $wrog_moc; } } foreach($TargetSet as $a => $b) { if ($wrog_ilosc > 0) { $atakujacy_moc = $TargetSet[$a]['count'] * $atakujacy_atak / $wrog_ilosc; if ($TargetSet[$a]["tarcza"] < $atakujacy_moc) { $max_zdjac = floor($TargetSet[$a]['count'] * $atakujacy_ilosc / $wrog_ilosc); $atakujacy_moc = $atakujacy_moc - $TargetSet[$a]["tarcza"]; $wrog_tarcza = $wrog_tarcza + $TargetSet[$a]["tarcza"]; $ile_zdjac = floor(($atakujacy_moc / (($pricelist[$a]['metal'] + $pricelist[$a]['crystal']) / 10))); if ($ile_zdjac > $max_zdjac) { $ile_zdjac = $max_zdjac; } $wrog_n[$a]['count'] = ceil($TargetSet[$a]['count'] - $ile_zdjac); if ($wrog_n[$a]['count'] <= 0) { $wrog_n[$a]['count'] = 0; } } else { $wrog_n[$a]['count'] = $TargetSet[$a]['count']; $wrog_tarcza = $wrog_tarcza + $atakujacy_moc; } } else { $wrog_n[$a]['count'] = $TargetSet[$a]['count']; $wrog_tarcza = $wrog_tarcza + $atakujacy_moc; } } foreach($CurrentSet as $a => $b) { foreach ($CombatCaps[$a]['sd'] as $c => $d) { if (isset($TargetSet[$c])) { $wrog_n[$c]['count'] = $wrog_n[$c]['count'] - floor($d * rand(50, 100) / 100); if ($wrog_n[$c]['count'] <= 0) { $wrog_n[$c]['count'] = 0; } } } } foreach($TargetSet as $a => $b) { foreach ($CombatCaps[$a]['sd'] as $c => $d) { if (isset($CurrentSet[$c])) { $atakujacy_n[$c]['count'] = $atakujacy_n[$c]['count'] - floor($d * rand(50, 100) / 100); if ($atakujacy_n[$c]['count'] <= 0) { $atakujacy_n[$c]['count'] = 0; } } } } $runda[$i]["atakujacy"]["tarcza"] = $atakujacy_tarcza; $runda[$i]["wrog"]["tarcza"] = $wrog_tarcza; // print_r($runda[$i]); $TargetSet = $wrog_n; $CurrentSet = $atakujacy_n; } if (($atakujacy_ilosc == 0) or ($wrog_ilosc == 0)) { if (($atakujacy_ilosc == 0) and ($wrog_ilosc == 0)) { $wygrana = "r"; } else { if ($atakujacy_ilosc == 0) { $wygrana = "w"; } else { $wygrana = "a"; } } } else { $i = sizeof($runda); $runda[$i]["atakujacy"] = $CurrentSet; $runda[$i]["wrog"] = $TargetSet; $runda[$i]["atakujacy"]["atak"] = $atakujacy_atak; $runda[$i]["wrog"]["atak"] = $wrog_atak; $runda[$i]["atakujacy"]['count'] = $atakujacy_ilosc; $runda[$i]["wrog"]['count'] = $wrog_ilosc; $wygrana = "r"; } $atakujacy_zlom_koniec['metal'] = 0; $atakujacy_zlom_koniec['crystal'] = 0; if (!is_null($CurrentSet)) { foreach($CurrentSet as $a => $b) { $atakujacy_zlom_koniec['metal'] = $atakujacy_zlom_koniec['metal'] + $CurrentSet[$a]['count'] * $pricelist[$a]['metal']; $atakujacy_zlom_koniec['crystal'] = $atakujacy_zlom_koniec['crystal'] + $CurrentSet[$a]['count'] * $pricelist[$a]['crystal']; } } $wrog_zlom_koniec['metal'] = 0; $wrog_zlom_koniec['crystal'] = 0; if (!is_null($TargetSet)) { foreach($TargetSet as $a => $b) { if ($a < 300) { $wrog_zlom_koniec['metal'] = $wrog_zlom_koniec['metal'] + $TargetSet[$a]['count'] * $pricelist[$a]['metal']; $wrog_zlom_koniec['crystal'] = $wrog_zlom_koniec['crystal'] + $TargetSet[$a]['count'] * $pricelist[$a]['crystal']; } else { $wrog_zlom_koniec_obrona['metal'] = $wrog_zlom_koniec_obrona['metal'] + $TargetSet[$a]['count'] * $pricelist[$a]['metal']; $wrog_zlom_koniec_obrona['crystal'] = $wrog_zlom_koniec_obrona['crystal'] + $TargetSet[$a]['count'] * $pricelist[$a]['crystal']; } } } $ilosc_wrog = 0; $straty_obrona_wrog = 0; if (!is_null($TargetSet)) { foreach($TargetSet as $a => $b) { if ($a > 300) { $straty_obrona_wrog = $straty_obrona_wrog + (($wrog_poczatek[$a]['count'] - $TargetSet[$a]['count']) * ($pricelist[$a]['metal'] + $pricelist[$a]['crystal'])); $TargetSet[$a]['count'] = $TargetSet[$a]['count'] + (($wrog_poczatek[$a]['count'] - $TargetSet[$a]['count']) * rand(60, 80) / 100); $ilosc_wrog = $ilosc_wrog + $TargetSet[$a]['count']; } } } if (($ilosc_wrog > 0) and ($atakujacy_ilosc == 0)) { $wygrana = "w"; } $zlom['metal'] = ((($atakujacy_zlom_poczatek['metal'] - $atakujacy_zlom_koniec['metal']) + ($wrog_zlom_poczatek['metal'] - $wrog_zlom_koniec['metal'])) * ($gameConfig['Fleet_Cdr'] / 100)); $zlom['crystal'] = ((($atakujacy_zlom_poczatek['crystal'] - $atakujacy_zlom_koniec['crystal']) + ($wrog_zlom_poczatek['crystal'] - $wrog_zlom_koniec['crystal'])) * ($gameConfig['Fleet_Cdr'] / 100)); $zlom['metal'] += ((($atakujacy_zlom_poczatek['metal'] - $atakujacy_zlom_koniec['metal']) + ($wrog_zlom_poczatek['metal'] - $wrog_zlom_koniec['metal'])) * ($gameConfig['Defs_Cdr'] / 100)); $zlom['crystal'] += ((($atakujacy_zlom_poczatek['crystal'] - $atakujacy_zlom_koniec['crystal']) + ($wrog_zlom_poczatek['crystal'] - $wrog_zlom_koniec['crystal'])) * ($gameConfig['Defs_Cdr'] / 100)); $zlom["atakujacy"] = (($atakujacy_zlom_poczatek['metal'] - $atakujacy_zlom_koniec['metal']) + ($atakujacy_zlom_poczatek['crystal'] - $atakujacy_zlom_koniec['crystal'])); $zlom["wrog"] = (($wrog_zlom_poczatek['metal'] - $wrog_zlom_koniec['metal']) + ($wrog_zlom_poczatek['crystal'] - $wrog_zlom_koniec['crystal']) + $straty_obrona_wrog); return array("atakujacy" => $CurrentSet, "wrog" => $TargetSet, "wygrana" => $wygrana, "dane_do_rw" => $runda, "zlom" => $zlom); } ?>