Kiedyś znalazłem w sieci takie cudo, może Ci się przyda:
function bitwa($a_spy, $a_archer, $a_sword, $a_knight, $a_spear, $a_snob, $d_spy, $d_archer, $d_sword, $d_knight, $d_spear, $d_snob, $luck, $a_a_tech, $a_s_tech, $a_k_tech, $a_sp_tech, $d_a_tech, $d_s_tech, $d_k_tech, $d_sp_tech, $pal) {
$luck+=100;
$luck/=100;
$atak_zwiad=$a_spy;
$atak_zwiad*=$luck;
$bon=$pal*5+100;
$bon/=100;
$atak=$a_archer*(5+$a_a_tech*5)+$a_sword*(15+$a_s_tech*5)+$a_knight*(105+$a_k_tech*5)+$a_spear*(100+$a_sp_tech*5)+$a_snob*150;
$atak*=$luck;
$a_suma=$a_spy+$a_archer+$a_sword+$a_knight+$a_spear+$a_snob;
if($atak_zwiad==null){$atak_zwiad=1;}
if($atak==null){$atak=1;}
$obrona_zwiad=$d_spy;
$obrona_vszwarcie=$d_archer*(90+$d_a_tech*5)+$d_sword*(60+$d_s_tech*5)+$d_knight*(20+$d_k_tech*5)+$d_spear*(20+$d_sp_tech*5)+$d_snob*50+$pal*100;
$obrona_vszwarcie*=$bon;
$obrona_vsdystans=$d_archer*(30+$d_a_tech*5)+$d_sword*(95+$d_s_tech*5)+$d_knight*(20+$d_k_tech*5)+$d_spear*(25+$d_sp_tech*5)+$d_snob*40+$pal*100;
$obrona_vsdystans*=$bon;
if($obrona_vszwarcie<0){$obrona_vszwarcie=0;}
if($obrona_vsdystans<0){$obrona_vsdystans=0;}
$d_suma=$d_zwiad+$d_archer+$d_sword+$d_knight+$d_spear+$d_snob;
if($obrona_vszwarcie==null){$obrona_vszwarcie=1;}
if($obrona_vsdystans==null){$obrona_vsdystans=1;}
if($obrona_zwiad<$atak_zwiad){
$k=$obrona_zwiad/$atak_zwiad;
$diff_k=1-($atak_zwiad-$obrona_zwiad)/$atak_zwiad;
$a_spys=($a_spy*$k)*$diff_k;}
else{$a_spys=$a_spy;}
$diff_z=$atak/$obrona_vszwarcie;
$diff_d=$atak/$obrona_vsdystans;
$t=0;
if($diff_d>=1){$a_archers=$a_archer*($obrona_vsdystans/$atak); $t+=$a_archers;} else {$a_archers=$a_archer;}
if($diff_z>=1){$a_swords=$a_sword*($obrona_vszwarcie/$atak); $t+=$a_swords;} else {$a_swords=$a_sword;}
if($diff_z>=1){$a_knights=$a_knight*($obrona_vszwarcie/$atak); $t+=$a_knights;} else {$a_knights=$a_knight;}
if($diff_d>=1){$a_spears=$a_spear*($obrona_vsdystans/$atak); $t+=$a_spears;} else {$a_spears=$a_spear;}
if($diff_z>=1){$a_snobs=$a_snob*($obrona_vszwarcie/$atak); $t+=$a_snobs;} else {$a_snobs=$a_snob;}
if($t>=$a_suma){$t=true;}
if($atak>1){if($diff_d>=1||$t==true){$d_spys=$d_spy;} else {$d_spys=$d_spy*$diff_z;}}
if($diff_z>=1||$t==true){$d_archers=$d_archer;} else {$d_archers=$d_archer*$diff_z;}
if($diff_d>=1||$t==true){$d_swords=$d_sword;} else {$d_swords=$d_sword*$diff_d;}
if($diff_d>=1||$t==true){$d_knights=$d_knight;} else {$d_knights=$d_knight*$diff_d;}
if($diff_z>=1||$t==true){$d_spears=$d_spear;} else {$d_spears=$d_spear*$diff_z;}
if($diff_d>=1||$t==true){$d_snobs=$d_snob;} else {$d_snobs=$d_snob*$diff_d;}
$d_archers=round($d_archers); $d_swords=round($d_swords); $d_knights=round($d_knights); $d_spears=round($d_spears); $d_snobs=round($d_snobs); $a_archers=round($a_archers); $a_swords=round($a_swords); $a_knights=round($a_knights); $a_spears=round($a_spears); $a_snobs=round($a_snobs); if($a_spys>$a_spy){$a_spys=$a_spy;}
if($a_archers>$a_archer){$a_archers=$a_archer;}
if($a_swords>$a_sword){$a_swords=$a_sword;}
if($a_knights>$a_knight){$a_knights=$a_knight;}
if($a_spears>$a_spear){$a_spears=$a_spear;}
if($d_spys>$d_spy){$d_spys=$d_spy;}
if($d_archers>$d_archer){$d_archers=$d_archer;}
if($d_swords>$d_sword){$d_swords=$d_sword;}
if($d_knights>$d_knight){$d_knights=$d_knight;}
if($d_spears>$d_spear){$d_spears=$d_spear;}
$straty="$a_spys, $a_archers, $a_swords, $a_knights, $a_spears, $a_snobs, $d_spys, $d_archers, $d_swords, $d_knights, $d_spears, $d_snobs";
return $straty;
}
$straty=bitwa($rozk[5], $rozk[6], $rozk[7], $rozk[8], $rozk[9], $rozk[11], $village2[8], $village2[9], $village2[10], $village2[11], $village2[12], $village2[13], $luck, $tech[0], $tech[1], $tech[2], $tech[3], $village2[14], $village2[15], $village2[16], $village2[17], $village2[19]);