diff --git a/GameEngine/Automation.php b/GameEngine/Automation.php index 371c753a..5904860a 100755 --- a/GameEngine/Automation.php +++ b/GameEngine/Automation.php @@ -1575,7 +1575,7 @@ class Automation { $def_tribe = $targettribe; $residence = 0; $attpop = 0; - $defpop = 100; + $defpop = 500; //type of attack if($dataarray[$data_num]['attack_type'] == 1){ diff --git a/GameEngine/Battle.php b/GameEngine/Battle.php index a96b6bee..0d3196db 100755 --- a/GameEngine/Battle.php +++ b/GameEngine/Battle.php @@ -133,8 +133,10 @@ class Battle { $attacker['u'.$i] = 0; } - if($index <=8) { + if($index <=8 && isset($post['f1_'.$index]) && !empty($post['f1_'.$index])) { ${'att_ab'.$index} = $post['f1_'.$index]; + }else{ + ${'att_ab'.$index} = 0; } } @@ -158,7 +160,7 @@ class Battle { $deftribe = $post['tribe']; $wall = 0; - if($post['kata'] == "") { + if(empty($post['kata'])) { $post['kata'] = 0; } @@ -247,15 +249,24 @@ class Battle { global $bid34,$bid35,$database; // Define the array, with the units - $calvary = array(4,5,6,15,16,23,24,25,26,45,46); - $catapult = array(8,18,28,48); - $rams = array(7,17,27,47); + $calvary = [4, 5, 6, 15, 16, 23, 24, 25, 26, 45, 46]; + $catapult = [8, 18, 28, 48]; + $rams = [7, 17, 27, 47]; $catp = $ram = 0; + // Array to return the result of the calculation back - $result = array(); + $result = []; $involve = 0; $winner = false; + // at 0 all partial results + + //cap = Cavalry attack points + //ap = Infantry attack points + //cdp = Cavalry attack points + //dp = Infantry defense points + //rap = Result attack points + //rdp = Result defense points $cap = $ap = $dp = $cdp = $rap = $rdp = 0; $att_artefact = count($database->getOwnUniqueArtefactInfo2($AttackerID,3,3,0)); @@ -378,7 +389,7 @@ class Battle { $j = $i-$start+1; if($Attacker['u'.$i]>0 && ($i == 4 || $i == 14 || $i == 23 || $i == 44)){ if(${'att_ab'.$abcount} > 0) { - $ap += (35 + (35 + 300 * ${'u'.$i}['pop'] / 7) * (pow(1.007, ${'att_ab'.$abcount}) - 1)) * $Attacker['u'.$i];// ^ ($Attacker['u'.$i]/100); + $ap += round(35 + (35 + 300 * ${'u'.$i}['pop'] / 7) * (pow(1.007, ${'att_ab'.$abcount}) - 1), 4) * $Attacker['u'.$i]; }else{ $ap += $Attacker['u'.$i]*35; } @@ -406,9 +417,9 @@ class Battle { $j = $i-$start+1; if($abcount <= 8 && ${'att_ab'.$abcount} > 0) { if(in_array($i,$calvary)) { - $cap += (float) (${'u'.$i}['atk'] + (${'u'.$i}['atk'] + 300 * ${'u'.$i}['pop'] / 7) * (pow(1.007, ${'att_ab'.$abcount}) - 1)) * (int) $Attacker['u'.$i]; + $cap += round(${'u'.$i}['atk'] + (${'u'.$i}['atk'] + 300 * ${'u'.$i}['pop'] / 7) * (pow(1.007, ${'att_ab'.$abcount}) - 1), 4) * (int) $Attacker['u'.$i]; }else{ - $ap += (float) (${'u'.$i}['atk'] + (${'u'.$i}['atk'] + 300 * ${'u'.$i}['pop'] / 7) * (pow(1.007, ${'att_ab'.$abcount}) - 1)) * (int) $Attacker['u'.$i]; + $ap += round(${'u'.$i}['atk'] + (${'u'.$i}['atk'] + 300 * ${'u'.$i}['pop'] / 7) * (pow(1.007, ${'att_ab'.$abcount}) - 1), 4) * (int) $Attacker['u'.$i]; } }else{ if(in_array($i,$calvary)) { @@ -456,51 +467,54 @@ class Battle { // Factor = 1020 Wall Teuton // Factor = 1025 Wall Goul $factor = ($def_tribe == 1)? 1.030 : (($def_tribe == 2)? 1.020 : 1.025); + $wallMultiplier = round(pow($factor,$def_wall), 3); // Defense infantry = Infantry * Wall (%) - // Defense calvary calvary = * Wall (%) - if ($dp>0 || $cdp >0) { + // Defense calvary calvary = * Wall (%) + if ($dp>0 || $cdp >0){ if($type==1) { - $dp *= pow($factor,$def_wall); - $dp1 = 10 * pow($factor,$def_wall) * $def_wall; - $dp +=$dp1; - }else{ - $dp *= pow($factor,$def_wall); - $cdp *= pow($factor,$def_wall); + $dp *= $wallMultiplier; + $dp += $dp1 + 10; + }else{ + $dp *= $wallMultiplier; + $cdp *= $wallMultiplier; // Calculation of the Basic defense bonus "Residence" - $dp += ((2*(pow($residence,2)))*(pow($factor,$def_wall))); - $cdp += ((2*(pow($residence,2)))*(pow($factor,$def_wall))); + $dp += (2*(pow($residence,2)) + 10) * $wallMultiplier; + $cdp += (2*(pow($residence,2)) + 10) * $wallMultiplier; } - } else { - $dp = 10 * pow($factor,$def_wall) * $def_wall; + }else{ + $dp = 10 * $wallMultiplier * $def_wall; // Defense calvary calvary = * Wall (%) - $cdp = 10 * pow($factor,$def_wall) * $def_wall; - if($type!=1) { + $cdp = 10 * $wallMultiplier * $def_wall; + if($type != 1){ // Calculation of the Basic defense bonus "Residence" - $dp += ((2*(pow($residence,2)))*(pow($factor,$def_wall))); - $cdp += ((2*(pow($residence,2)))*(pow($factor,$def_wall))); - }else $cdp=0; + $dp += (2*(pow($residence,2)) + 10)*$wallMultiplier; + $cdp += (2*(pow($residence,2)) + 10)*$wallMultiplier; + }else{ + $dp += 10; + $cdp = 0; + } } }elseif($type!=1) { // Calculation of the Basic defense bonus "Residence" - $dp += (2*(pow($residence,2))); - $cdp += (2*(pow($residence,2))); + $dp += (2*(pow($residence,2)) + 10); + $cdp += (2*(pow($residence,2)) + 10); } // Formula for calculating points attackers (Infantry & Cavalry) if($AttackerWref != 0){ - $rap = ($ap+$cap)+(($ap+$cap)/100*(isset($bid35[$this->getTypeLevel(35,$AttackerWref)]) ? $bid35[$this->getTypeLevel(35,$AttackerWref)]['attri'] : 0)); + $rap = round(($ap+$cap)+(($ap+$cap)/100*(isset($bid35[$this->getTypeLevel(35,$AttackerWref)]) ? $bid35[$this->getTypeLevel(35,$AttackerWref)]['attri'] : 0))); }else{ - $rap = $ap+$cap; + $rap = round($ap+$cap); } // Formula for calculating Defensive Points if ($rap==0) - $rdp = ($dp) + ($cdp) + 10; + $rdp = round(($dp) + ($cdp)); else - $rdp = ($dp * ($ap/$rap)) + ($cdp * ($cap/$rap)) + 10; + $rdp = round(round($cap/$rap, 4)*($cdp) + round($ap/$rap, 4)*($dp)); // The Winner is....: @@ -510,25 +524,17 @@ class Battle { // Formula for calculating the Moral if($attpop > $defpop) { - if ($rap < $rdp) { - $moralbonus = min(1.5, pow(($defpop > 0 ? $attpop / $defpop : 0), (0.2*($rap/$rdp)))); - }else{ - if($defpop==0){ - $moralbonus = min(1.5, pow($attpop, 0.2)); - }else{ - $moralbonus = min(1.5, pow(($defpop > 0 ? $attpop / $defpop : 0), 0.2)); - } - } + $moralbonus = 1 / round(max(0.667, pow($defpop / $attpop, 0.2 * min(1, $rap / $rdp))), 3); }else{ $moralbonus = 1.0; } if($involve >= 1000 && $type != 1) { - $Mfactor = round(2*(1.8592-pow($involve,0.015)),4); + $Mfactor = 2*round((1.8592-pow($involve,0.015)),4); }else{ $Mfactor = 1.5; } - if ($Mfactor < 1.25778){$Mfactor=1.25778;}elseif ($Mfactor > 1.5){$Mfactor=1.5;} + if ($Mfactor < 1.2578){$Mfactor=1.2578;}elseif ($Mfactor > 1.5){$Mfactor=1.5;} // Formula for calculating lost drives // $type = 1 scout, 2? // $type = 3 Normal, 4 Raid @@ -557,12 +563,12 @@ class Battle { }else if($type == 3){ // Attacker - $result[1] = ($winner)? round(pow((($rdp*$moralbonus)/$rap),$Mfactor),8) : 1; + $result[1] = ($winner)? pow((($rdp*$moralbonus)/$rap),$Mfactor) : 1; if ($result[1]>1) {$result[1]=1;$winner=false;$result['Winner'] = "defender";} // Defender - $result[2] = (!$winner)? round(pow(($rap/($rdp*$moralbonus)),$Mfactor),8) : 1; - if ($result[1]==1) {$result[2]=round(pow(($rap/($rdp*$moralbonus)),$Mfactor),8);} + $result[2] = (!$winner)? pow(($rap/($rdp*$moralbonus)),$Mfactor) : 1; + if ($result[1]==1) {$result[2]=pow(($rap/($rdp*$moralbonus)),$Mfactor);} if ($result[2]>1) {$result[2]=1;$result['Winner'] = "attacker";$winner=true;} // If attacked with "Hero" $ku = ($att_tribe-1)*10+9; @@ -672,7 +678,7 @@ class Battle { $total_att_units = count($units['Att_unit']); $start = intval(($att_tribe-1)*10+1); $end = intval(($att_tribe*10)); - + for($i=$start;$i <= $end;$i++){ $y = $i-(($att_tribe-1)*10); $result['casualties_attacker'][$y] = round($result[1]*$units['Att_unit'][$i]); @@ -775,7 +781,7 @@ class Battle { global ${'u'.$y}; if($defenders['u'.$y]>0 && $def_ab[$y] > 0) { - $dp += (20 + (20 + 300 * ${'u'.$y}['pop'] / 7) * (pow(1.007, $def_ab[$y]) - 1)) * $defenders['u'.$y] * $defender_artefact; + $dp += round(20 + (20 + 300 * ${'u'.$y}['pop'] / 7) * (pow(1.007, $def_ab[$y]) - 1), 4) * $defenders['u'.$y] * $defender_artefact; $def_foolartefact = $database->getFoolArtefactInfo(3,$AttackerWref,$AttackerID); if(count($def_foolartefact) > 0){ @@ -822,8 +828,8 @@ class Battle { $def_ab[$y] = 0; } if ($def_ab[$y]>0) { - $dp += (${'u'.$y}['di'] + (${'u'.$y}['di'] + 300 * ${'u'.$y}['pop'] / 7) * (pow(1.007, $def_ab[$y]) - 1)) * $defenders['u'.$y]; - $cdp += (${'u'.$y}['dc'] + (${'u'.$y}['dc'] + 300 * ${'u'.$y}['pop'] / 7) * (pow(1.007, $def_ab[$y]) - 1)) * $defenders['u'.$y]; + $dp += round(${'u'.$y}['di'] + (${'u'.$y}['di'] + 300 * ${'u'.$y}['pop'] / 7) * (pow(1.007, $def_ab[$y]) - 1), 4) * $defenders['u'.$y]; + $cdp += round(${'u'.$y}['dc'] + (${'u'.$y}['dc'] + 300 * ${'u'.$y}['pop'] / 7) * (pow(1.007, $def_ab[$y]) - 1), 4) * $defenders['u'.$y]; }else{ $dp += $defenders['u'.$y]*${'u'.$y}['di']; $cdp += $defenders['u'.$y]*${'u'.$y}['dc']; @@ -836,7 +842,6 @@ class Battle { $datadef['dp']=$dp; $datadef['cdp']=$cdp; $datadef['involve']=$invol; - return $datadef; } diff --git a/GameEngine/Lang/en.php b/GameEngine/Lang/en.php index d4f2486c..0cd25810 100755 --- a/GameEngine/Lang/en.php +++ b/GameEngine/Lang/en.php @@ -63,7 +63,7 @@ define("LOGIN_PASS_EMPTY","Enter password."); define("EMAIL_ERROR","Email does not match existing"); define("PASS_MISMATCH","Passwords do not match"); define("ALLI_OWNER","Please appoint an alliance owner before deleting"); -define("SIT_ERROR","Sitter already set"); +define("SIT_ERROR","Sitter already set or player inexistent"); define("USR_NT_FOUND","Name does not exist."); define("LOGIN_PW_ERROR","The password is wrong."); define("WEL_TOPIC","Useful tips & information "); @@ -79,6 +79,7 @@ define("ID_NO_EXIST","There is no user with the id "); define("SAME_NAME","You can't invite yourself"); define("ALREADY_INVITED"," already invited"); define("ALREADY_IN_ALLY"," already in this alliance"); +define("VAC_MODE_WRONG_DAYS","You've inserted a wrong number of days"); //COPYRIGHT define("TRAVIAN_COPYRIGHT","TravianZ 100% Open Source Travian Clone."); @@ -112,6 +113,7 @@ define("GO2MY_VILLAGE","Go to my village"); define("VILLAGE_CENTER","Village centre"); define("FINISH_GOLD","Finish all construction and research orders in this village immediately for 2 Gold?"); define("WAITING_LOOP","(waiting loop)"); +define("CROP_NEGATIVE","Your crop production is negative, you'll neaver reach the amount of requested resources."); define("HRS","(hrs.)"); define("DONE_AT","done at"); define("CANCEL","cancel"); diff --git a/GameEngine/Profile.php b/GameEngine/Profile.php index 3568d18f..7db90856 100755 --- a/GameEngine/Profile.php +++ b/GameEngine/Profile.php @@ -93,13 +93,13 @@ class Profile { global $database, $session; $birthday = $post['jahr'].'-'.$post['monat'].'-'.$post['tag']; $database->submitProfile($session->uid,$database->RemoveXSS($post['mw']),$database->RemoveXSS($post['ort']),$database->RemoveXSS($birthday),$database->RemoveXSS($post['be2']),$database->RemoveXSS($post['be1'])); - $varray = $database->getProfileVillages($post['uid']); + $varray = $database->getProfileVillages($session->uid); for($i=0;$i<=count($varray)-1;$i++) { $k = trim($post['dname'.$i]); $name = preg_replace("/[^a-zA-Z0-9_\-\s'\"]/", "", $k); $database->setVillageName($varray[$i]['wref'],$database->RemoveXSS($name)); } - header("Location: spieler.php?uid=".$post['uid']); + header("Location: spieler.php?uid=".$session->uid); exit; } @@ -116,27 +116,23 @@ class Profile { ********************************************************/ private function setvactionmode($post){ - global $database,$session,$form; - $set =false; - if($post['vac'] && $post['vac_days'] >=2 && $post['vac_days'] <=14) { - $database->setvacmode($post['uid'],$post['vac_days']); - $set =true; - } - else { - echo "Minimum days is 2";die();exit(); - } - if($set){ - unset($_SESSION['wid']); - $database->activeModify(addslashes($session->username),1); - $database->UpdateOnline("logout") or die(mysqli_error($database->dblink)); - $session->Logout(); - header("Location: login.php"); - exit; - }else{ - header("Location: spieler.php?s=5"); - exit; - } - } + global $database,$session,$form; + + if(isset($post['vac']) && $post['vac'] && isset($post['vac_days']) && $post['vac_days'] >=2 && $post['vac_days'] <=14){ + unset($_SESSION['wid']); + $database->setvacmode($session->uid,$post['vac_days']); + $database->activeModify(addslashes($session->username),1); + $database->UpdateOnline("logout") or die(mysqli_error($database->dblink)); + $session->Logout(); + header("Location: login.php"); + exit; + }else{ + header("Location: spieler.php?s=".$session->uid); + $form->add("vac", VAC_MODE_WRONG_DAYS); + exit(); + } + + } /******************************************************* Function to vacation mode - by advocaite and Shadow @@ -146,55 +142,51 @@ class Profile { private function updateAccount($post) { global $database,$session,$form; - if($post['pw2'] == $post['pw3']) { - if($database->login($session->username,$post['pw1'])) { - if ($_POST['uid'] != $session->uid){ - die("Hacking Attempr"); - } else { - $database->updateUserField($post['uid'],"password",password_hash($post['pw2'], PASSWORD_BCRYPT,['cost' => 12]),1); - } - } - else { - $form->addError("pw",LOGIN_PW_ERROR); - } - } - else { - $form->addError("pw",PASS_MISMATCH); + if(!empty($post['pw1']) && !empty($post['pw2']) && !empty($post['pw3'])){ + if($post['pw2'] == $post['pw3']) { + if($database->login($session->username,$post['pw1'])) { + $database->updateUserField($session->uid,"password",password_hash($post['pw2'], PASSWORD_BCRYPT,['cost' => 12]),1); + }else { + $form->addError("pw",LOGIN_PW_ERROR); + } + }else { + $form->addError("pw",PASS_MISMATCH); + } } + if(!empty($post['email_alt']) && !empty($post['email_neu'])){ + if($post['email_alt'] == $session->userinfo['email']) { + $database->updateUserField($session->uid,"email",$post['email_neu'],1); + }else { + $form->addError("email",EMAIL_ERROR); + } + } - if($post['email_alt'] == $session->userinfo['email']) { - $database->updateUserField($post['uid'],"email",$post['email_neu'],1); - } - else { - $form->addError("email",EMAIL_ERROR); + if(!empty($post['del_pw']) && $post['del']){ + if(password_verify($post['del_pw'], $session->userinfo['password'])) { + $database->setDeleting($session->uid,0); + }else { + $form->addError("del",PASS_MISMATCH); + } } - - if($post['del'] && password_verify($post['del_pw'], $session->userinfo['password'])) { - $database->setDeleting($post['uid'],0); - } - else { - $form->addError("del",PASS_MISMATCH); - } - - - if($post['v1'] != "") { + if(!empty($post['v1'])) { $sitid = $database->getUserField($post['v1'],"id",1); if($sitid == $session->userinfo['sit1'] || $sitid == $session->userinfo['sit2']) { $form->addError("sit",SIT_ERROR); - } - else if($sitid != $session->uid){ + }else if($sitid != $session->uid){ if($session->userinfo['sit1'] == 0) { - $database->updateUserField($post['uid'],"sit1",$sitid,1); - } - else if($session->userinfo['sit2'] == 0) { - $database->updateUserField($post['uid'],"sit2",$sitid,1); + $database->updateUserField($session->uid,"sit1",$sitid,1); + }else if($session->userinfo['sit2'] == 0) { + $database->updateUserField($session->uid,"sit2",$sitid,1); } } } - $_SESSION['errorarray'] = $form->getErrors(); + if($form->returnErrors() > 0){ + $_SESSION['errorarray'] = $form->getErrors(); + $_SESSION['valuearray'] = $_POST; + } header("Location: spieler.php?s=3"); exit; } @@ -216,7 +208,7 @@ class Profile { private function cancelDeleting($get) { global $database,$session; - $database->setDeleting($get['id'],1); + $database->setDeleting($session->uid,1); header("Location: spieler.php?s=".$get['s']); exit; } diff --git a/Templates/Build/12_upgrades.tpl b/Templates/Build/12_upgrades.tpl index 4b66292f..6b21c22d 100644 --- a/Templates/Build/12_upgrades.tpl +++ b/Templates/Build/12_upgrades.tpl @@ -84,6 +84,7 @@ foreach($ABups as $black) { $unit = ($session->tribe-1)*10 + substr($black['tech'],1,2); echo "\"".$technology-getUnitName($unit)."\" title=\"".$technology->getUnitName($unit)."\" />".$technology->getUnitName($unit); + echo " (".LEVEL." ".($timer+$ups).")"; if($timer > 1) echo " ".WAITING.""; echo ""; echo "".$generator->getTimeFormat($black['timestamp']-time()).""; diff --git a/Templates/Build/13_upgrades.tpl b/Templates/Build/13_upgrades.tpl index 9b92aeb7..b1bc14e3 100644 --- a/Templates/Build/13_upgrades.tpl +++ b/Templates/Build/13_upgrades.tpl @@ -84,6 +84,7 @@ foreach($ABups as $arms) { $unit = ($session->tribe-1)*10 + substr($arms['tech'],1,2); echo "\"".$technology-getUnitName($unit)."\" title=\"".$technology->getUnitName($unit)."\" />".$technology->getUnitName($unit); + echo " (".LEVEL." ".($timer+$ups).")"; if($timer > 1) echo " ".WAITING.""; echo ""; echo "".$generator->getTimeFormat($arms['timestamp']-time()).""; diff --git a/Templates/Profile/account.tpl b/Templates/Profile/account.tpl index e399ff00..771bdc62 100644 --- a/Templates/Profile/account.tpl +++ b/Templates/Profile/account.tpl @@ -3,7 +3,6 @@
- @@ -22,8 +21,8 @@
Change password
getError("pw") != "") { -echo "".$form->getError('pw').""; +if(!empty($passError = $form->getError("pw"))) { + echo "".$passError.""; } ?> @@ -42,8 +41,8 @@ echo "".$form->getError('pw')."";
getError("email") != "") { -echo "".$form->getError('email').""; +if(!empty($emailError = $form->getError("email"))) { +echo "".$emailError.""; } ?> @@ -96,8 +95,8 @@ echo "".$database->getUserField($sit[ ?>
getError("email") != "") { -echo "".$form->getError('email').""; +if(!empty($sitterError = $form->getError("sit"))) { + echo "".$sitterError.""; } ?> @@ -117,7 +116,7 @@ echo "uid."&a=1&e=4\"> "; $time=$generator->getTimeFormat(($timestamp-time())); echo "The account will be deleted in ".$time." ."; + id=\"timer2\">".$time." ."; } else { ?> @@ -136,8 +135,8 @@ else { ?> getError("del") != "") { -echo "".$form->getError("del").""; +if(!empty($deleteError = $form->getError("del"))) { + echo "".$deleteError.""; } ?>

diff --git a/Templates/Profile/notfound.tpl b/Templates/Profile/notfound.tpl index db9517c0..ee776f4f 100644 --- a/Templates/Profile/notfound.tpl +++ b/Templates/Profile/notfound.tpl @@ -1,3 +1,4 @@ \ No newline at end of file diff --git a/Templates/Profile/preference.tpl b/Templates/Profile/preference.tpl index 08b9d518..408a7836 100644 --- a/Templates/Profile/preference.tpl +++ b/Templates/Profile/preference.tpl @@ -96,7 +96,6 @@ while($data = mysqli_fetch_assoc($query)) { - diff --git a/Templates/Profile/profile.tpl b/Templates/Profile/profile.tpl index 940871ab..ef4a17b8 100644 --- a/Templates/Profile/profile.tpl +++ b/Templates/Profile/profile.tpl @@ -23,7 +23,6 @@ $varmedal = $database->getProfileMedal($session->uid); include("menu.tpl"); ?> - diff --git a/Templates/Profile/vacation.tpl b/Templates/Profile/vacation.tpl index 55171c74..b742bdf0 100644 --- a/Templates/Profile/vacation.tpl +++ b/Templates/Profile/vacation.tpl @@ -20,7 +20,6 @@ include("menu.tpl"); ?> -
diff --git a/Templates/Simulator/def_3.tpl b/Templates/Simulator/def_3.tpl index fe7585bf..5e5c7407 100644 --- a/Templates/Simulator/def_3.tpl +++ b/Templates/Simulator/def_3.tpl @@ -53,7 +53,7 @@
- +
Druidrider