Merge pull request #501 from iopietro/master

Fixed some bugs. Fixed issues #500, #493, #486, #438.
This commit is contained in:
Vladyslav
2018-04-02 19:14:10 +03:00
committed by GitHub
8 changed files with 99 additions and 297 deletions
+15 -12
View File
@@ -2126,17 +2126,20 @@ class Automation {
}else{ }else{
$cranny_eff = 0; $cranny_eff = 0;
// work out available resources.
$this->updateORes($data['to']);
$this->pruneOResource();
if ($conqureby >0) { //10% from owner proc village owner - fix by ronix if ($conqureby >0) { //10% from owner proc village owner - fix by ronix
$this->updateRes($conqureby,$to['owner']);
$this->pruneResource();
$villageData = $database->getVillageFields($conqureby,'clay, iron, wood, crop'); $villageData = $database->getVillageFields($conqureby,'clay, iron, wood, crop');
$totclay = intval($villageData['clay']/10); $totclay = intval($villageData['clay']/10);
$totiron = intval($villageData['iron']/10); $totiron = intval($villageData['iron']/10);
$totwood = intval($villageData['wood']/10); $totwood = intval($villageData['wood']/10);
$totcrop = intval($villageData['crop']/10); $totcrop = intval($villageData['crop']/10);
}else{ }else{
// work out available resources.
$this->updateORes($data['to']);
$this->pruneOResource();
$oasisData = $database->getOasisFields($data['to'],'clay, iron, wood, crop'); $oasisData = $database->getOasisFields($data['to'],'clay, iron, wood, crop');
$totclay = $oasisData['clay']; $totclay = $oasisData['clay'];
$totiron = $oasisData['iron']; $totiron = $oasisData['iron'];
@@ -2250,14 +2253,9 @@ class Automation {
//catapults look :D //catapults look :D
$info_cat = $info_chief = $info_ram = $info_hero = ","; $info_cat = $info_chief = $info_ram = $info_hero = ",";
//check to see if can destroy village //check to see if can destroy village
$hasArtefact = false;
if (count($varray) != 1 && $to['capital'] != 1 && !$database->villageHasArtefact($DefenderWref)) { if (count($varray) != 1 && $to['capital'] != 1 && !$database->villageHasArtefact($DefenderWref)) {
$can_destroy=1; $can_destroy=1;
} else { } else {
if ($database->villageHasArtefact($DefenderWref)) {
$hasArtefact = true;
}
$can_destroy=0; $can_destroy=0;
} }
if ($isoasis == 1) $can_destroy=0; if ($isoasis == 1) $can_destroy=0;
@@ -2528,7 +2526,7 @@ class Automation {
//$info_chief = "".$chief_pic.",You don't have enought CP to chief a village."; //$info_chief = "".$chief_pic.",You don't have enought CP to chief a village.";
// note: at this point, we can use cache, since we've cleared it above // note: at this point, we can use cache, since we've cleared it above
if($this->getTypeLevel(35,$data['from']) == 0){ if($this->getTypeLevel(35,$data['from']) == 0){
for ($i=0; $i<($data['t9']-$dead9); $i++){ for ($i=0; $i<($data['t9']-$dead9-$traped9); $i++){
if (!isset($rand)) { if (!isset($rand)) {
$rand = 0; $rand = 0;
} }
@@ -2540,7 +2538,7 @@ class Automation {
} }
} }
}else{ }else{
for ($i=0; $i<($data['t9']-$dead9); $i++){ for ($i=0; $i<($data['t9']-$dead9-$traped9); $i++){
$rand+=rand(5,15); $rand+=rand(5,15);
} }
} }
@@ -3014,7 +3012,12 @@ class Automation {
if ($isoasis == 0){ if ($isoasis == 0){
$database->modifyResource($DefenderWref,$steal[0],$steal[1],$steal[2],$steal[3],0); $database->modifyResource($DefenderWref,$steal[0],$steal[1],$steal[2],$steal[3],0);
}else{ }else{
$database->modifyOasisResource($DefenderWref,$steal[0],$steal[1],$steal[2],$steal[3],0); if($conqureby > 0) //if it's an oasis but it's conquered by someone, resources must be modified in the owner village
{
$database->modifyResource($conqureby,$steal[0],$steal[1],$steal[2],$steal[3],0);
}else{
$database->modifyOasisResource($DefenderWref,$steal[0],$steal[1],$steal[2],$steal[3],0);
}
} }
$database->addMovement(6,$DefenderWref,$AttackerWref,$reference,$AttackArrivalTime,$endtime,1,0,0,0,0,$data['ref']); $database->addMovement(6,$DefenderWref,$AttackerWref,$reference,$AttackArrivalTime,$endtime,1,0,0,0,0,$data['ref']);
$totalstolengain=$steal[0]+$steal[1]+$steal[2]+$steal[3]; $totalstolengain=$steal[0]+$steal[1]+$steal[2]+$steal[3];
+44 -247
View File
@@ -225,8 +225,6 @@ class Building {
if(isset($get['master']) && isset($get['id']) && isset($get['time']) && $session->gold >= 1 && $session->goldclub && $village->master == 0 && (isset($get['c']) && $get['c']== $session->checker)) { if(isset($get['master']) && isset($get['id']) && isset($get['time']) && $session->gold >= 1 && $session->goldclub && $village->master == 0 && (isset($get['c']) && $get['c']== $session->checker)) {
$this->canProcess($get['master'],$get['id']); $this->canProcess($get['master'],$get['id']);
$m=$get['master'];
$master = $_GET;
$session->changeChecker(); $session->changeChecker();
if($session->access==BANNED){ if($session->access==BANNED){
header("Location: banned.php"); header("Location: banned.php");
@@ -644,237 +642,57 @@ class Building {
private function meetRequirement($id) { private function meetRequirement($id) {
global $village,$session,$database; global $village,$session,$database;
switch ( $id ) { $isBuilt = $this->getTypeField($id);
switch ($id) {
case 1: case 1:
case 2: case 2:
case 3: case 3:
case 4: case 4: return true;
case 11:
case 15: case 5: return $this->getTypeLevel(1) >= 10 && $this->getTypeLevel(15) >= 5 && !$isBuilt;
case 16: case 6: return $this->getTypeLevel(2) >= 10 && $this->getTypeLevel(15) >= 5 && !$isBuilt;
case 18: case 7: return $this->getTypeLevel(3) >= 10 && $this->getTypeLevel(15) >= 5 && !$isBuilt;
case 23: case 8: return $this->getTypeLevel(4) >= 5 && !$isBuilt;
case 31: case 9: return $this->getTypeLevel(15) >= 5 && $this->getTypeLevel(4) >= 10 && $this->getTypeLevel(8) >= 5 && !$isBuilt;
case 32:
case 33:
return true;
break;
case 10: case 10:
case 20: case 11: return $this->getTypeLevel(15) >= 1 && (!$isBuilt || $this->getTypeLevel($id) == 20);
return ( $this->getTypeLevel( 15 ) >= 1 ) ? true : false;
break;
case 5: case 12: return $this->getTypeLevel(22) >= 3 && $this->getTypeLevel(15) >= 3 && !$isBuilt;
if ( $this->getTypeLevel( 1 ) >= 10 && $this->getTypeLevel( 15 ) >= 5 ) { case 13: return $this->getTypeLevel(15) >= 3 && $this->getTypeLevel(22) >= 1 && !$isBuilt;
return true; case 14: return $this->getTypeLevel(16) >= 15 && !$isBuilt;
} else {
return false;
}
break;
case 6: case 15:
if ( $this->getTypeLevel( 2 ) >= 10 && $this->getTypeLevel( 15 ) >= 5 ) { case 16: return !$isBuilt;
return true;
} else {
return false;
}
break;
case 7: case 17: return $this->getTypeLevel(15) >= 3 && $this->getTypeLevel(10) >= 1 && $this->getTypeLevel(11) >= 1 && !$isBuilt;
if ( $this->getTypeLevel( 3 ) >= 10 && $this->getTypeLevel( 15 ) >= 5 ) { case 18: return $this->getTypeLevel(15) >= 1 && !$isBuilt;
return true; case 19: return $this->getTypeLevel(15) >= 3 && $this->getTypeLevel(16) >= 1 && !$isBuilt;
} else { case 20: return $this->getTypeLevel(12) >= 3 && $this->getTypeLevel(22) >= 5 && !$isBuilt;
return false; case 21: return $this->getTypeLevel(22) >= 10 && $this->getTypeLevel(15) >= 5 && !$isBuilt;
} case 22: return $this->getTypeLevel(15) >= 3 && $this->getTypeLevel(19) >= 3 && !$isBuilt;
break; case 23: return !$isBuilt || $this->getTypeLevel($id) == 10;
case 24: return $this->getTypeLevel(22) >= 10 && $this->getTypeLevel(15) >= 10 && !$isBuilt;
case 8: case 25: return $this->getTypeLevel(15) >= 5 && $this->getTypeLevel(26) == 0 && !$isBuilt;
if ( $this->getTypeLevel( 4 ) >= 5 ) { case 26: return $this->getTypeLevel(18) >= 1 && $this->getTypeLevel(15) >= 5 && $this->getTypeLevel(25) == 0 && !$isBuilt;
return true; case 27: return $this->getTypeLevel(15) >= 10 && !$isBuilt;
} else { case 28: return $this->getTypeLevel(17) == 20 && $this->getTypeLevel(20) >= 10 && !$isBuilt;
return false; case 29: return $this->getTypeLevel(19) == 20 && $village->capital == 0 && !$isBuilt;
} case 30: return $this->getTypeLevel(20) == 20 && $village->capital == 0 && !$isBuilt;
break; case 31: return $session->tribe == 1;
case 32: return $session->tribe == 2;
case 9: case 33: return $session->tribe == 3;
if ( $this->getTypeLevel( 15 ) >= 5 && $this->getTypeLevel( 4 ) >= 10 && $this->getTypeLevel( 8 ) >= 5 ) { case 34: return $this->getTypeLevel(26) >= 3 && $this->getTypeLevel(15) >= 5 && $this->getTypeLevel(25) == 0 && $village->capital != 0 && !$isBuilt;
return true; case 35: return $this->getTypeLevel(16) >= 10 && $this->getTypeLevel(11) == 20 && $session->tribe == 2 && $village->capital != 0 && !$isBuilt;
} else { case 36: return $this->getTypeLevel(16) >= 1 && $session->tribe == 3 && (!$isBuilt || $this->getTypeLevel($id) == 20);
return false; case 37: return $this->getTypeLevel(15) >= 3 && $this->getTypeLevel(16) >= 1 && !$isBuilt;
}
break;
case 12:
if ( $this->getTypeLevel( 22 ) >= 3 && $this->getTypeLevel( 15 ) >= 3 ) {
return true;
} else {
return false;
}
break;
case 13:
if ( $this->getTypeLevel( 15 ) >= 3 && $this->getTypeLevel( 22 ) >= 1 ) {
return true;
} else {
return false;
}
break;
case 14:
if ( $this->getTypeLevel( 16 ) >= 15 ) {
return true;
} else {
return false;
}
break;
case 17:
if ( $this->getTypeLevel( 15 ) >= 3 && $this->getTypeLevel( 10 ) >= 1 && $this->getTypeLevel( 11 ) >= 1 ) {
return true;
} else {
return false;
}
break;
case 19:
if ( $this->getTypeLevel( 15 ) >= 3 && $this->getTypeLevel( 16 ) >= 1 ) {
return true;
} else {
return false;
}
break;
case 20:
if ( $this->getTypeLevel( 12 ) >= 3 && $this->getTypeLevel( 22 ) >= 5 ) {
return true;
} else {
return false;
}
break;
case 21:
if ( $this->getTypeLevel( 22 ) >= 10 && $this->getTypeLevel( 15 ) >= 5 ) {
return true;
} else {
return false;
}
break;
case 22:
if ( $this->getTypeLevel( 15 ) >= 3 && $this->getTypeLevel( 16 ) >= 1 ) {
return true;
} else {
return false;
}
break;
case 24:
if ( $this->getTypeLevel( 22 ) >= 10 && $this->getTypeLevel( 15 ) >= 10 ) {
return true;
} else {
return false;
}
break;
case 25:
if ( $this->getTypeLevel( 15 ) >= 5 && $this->getTypeLevel( 26 ) == 0 ) {
return true;
} else {
return false;
}
break;
case 26:
if ( $this->getTypeLevel( 18 ) >= 1 && $this->getTypeLevel( 15 ) >= 5 && $this->getTypeLevel( 25 ) == 0 ) {
return true;
} else {
return false;
}
break;
case 27:
if ( $this->getTypeLevel( 15 ) >= 10 ) {
return true;
} else {
return false;
}
break;
case 28:
if ( $this->getTypeLevel( 17 ) == 20 && $this->getTypeLevel( 20 ) >= 10 ) {
return true;
} else {
return false;
}
break;
case 29:
if ( $this->getTypeLevel( 19 ) == 20 && $village->capital == 0 ) {
return true;
} else {
return false;
}
break;
case 30:
if ( $this->getTypeLevel( 20 ) == 20 && $village->capital == 0 ) {
return true;
} else {
return false;
}
break;
case 34:
if ( $this->getTypeLevel( 26 ) >= 3 && $this->getTypeLevel( 15 ) >= 5 && $this->getTypeLevel( 25 ) == 0 && $village->capital != 0 ) {
return true;
} else {
return false;
}
break;
case 35:
if ( $this->getTypeLevel( 16 ) >= 10 && $this->getTypeLevel( 11 ) == 20 && $session->tribe == 2 && $village->capital != 0 ) {
return true;
} else {
return false;
}
break;
case 36:
if ( $this->getTypeLevel( 16 ) >= 1 && $session->tribe == 3 ) {
return true;
} else {
return false;
}
break;
case 37:
if ( $this->getTypeLevel( 15 ) >= 3 && $this->getTypeLevel( 16 ) >= 1 ) {
return true;
} else {
return false;
}
break;
// great warehouse can only be built with artefact or only in Natar village // great warehouse can only be built with artefact or only in Natar village
case 38: case 38: return $this->getTypeLevel(15) >= 10 && (!$isBuilt || $this->getTypeLevel($id) == 20) && ($village->natar == 1 || count($database->getOwnUniqueArtefactInfo2($session->uid, 6, 1, 0)) || count($database->getOwnUniqueArtefactInfo2($session->uid, 6, 2, 0)));
if ( $this->getTypeLevel( 15 ) >= 10 && ($village->natar == 1 || count($database->getOwnUniqueArtefactInfo2($session->uid, 6, 1, 0)) || count($database->getOwnUniqueArtefactInfo2($session->uid, 6, 2, 0)) ) ) {
return true;
} else {
return false;
}
break;
// great grannary can only be built with artefact or only in Natar village // great grannary can only be built with artefact or only in Natar village
case 39: case 39: return $this->getTypeLevel(15) >= 10 && (!$isBuilt || $this->getTypeLevel($id) == 20) && ($village->natar == 1 || count($database->getOwnUniqueArtefactInfo2($session->uid, 6, 1, 0)) || count($database->getOwnUniqueArtefactInfo2($session->uid, 6, 2, 0)));
if ( $this->getTypeLevel( 15 ) >= 10 && ($village->natar == 1 || count($database->getOwnUniqueArtefactInfo2($session->uid, 6, 1, 0)) || count($database->getOwnUniqueArtefactInfo2($session->uid, 6, 2, 0)) ) ) {
return true;
} else {
return false;
}
break;
case 40: case 40:
$wwlevel = $village->resarray['f99']; $wwlevel = $village->resarray['f99'];
@@ -908,28 +726,11 @@ class Building {
} }
} }
if ( $village->natar == 1 && $wwbuildingplan > $needed_plan ) { return $village->natar == 1 && $wwbuildingplan > $needed_plan;
return true;
} else {
return false;
}
break;
case 41: case 41: return $this->getTypeLevel(16) >= 10 && $this->getTypeLevel(20) == 20 && $session->tribe == 1 && !$isBuilt;
if ( $this->getTypeLevel( 16 ) >= 10 && $this->getTypeLevel( 20 ) == 20 && $session->tribe == 1 ) { case 42: return GREAT_WKS && $this->getTypeLevel(21) == 20 && $village->capital == 0 && !$isBuilt;
return true; default: return false;
} else {
return false;
}
break;
case 42:
if ( GREAT_WKS && $this->getTypeLevel( 21 ) == 20 && $village->capital == 0 ) {
return true;
} else {
return false;
}
break;
} }
} }
@@ -978,11 +779,7 @@ class Building {
// special case for Multihunter login which mathematically (because of the resarray length) // special case for Multihunter login which mathematically (because of the resarray length)
// allows for building resource fields above level 20 // allows for building resource fields above level 20
if ($session->tribe == 0) { if ($session->tribe == 0) {
if ($village->resarray['f'.$field] == 20) { return $village->resarray['f'.$field] == 20;
return true;
} else {
return false;
}
} }
if($id <= 4) { if($id <= 4) {
+1 -1
View File
@@ -290,7 +290,7 @@ class Market
array_push($holderarray,$value); array_push($holderarray,$value);
} }
} }
$this->onsale = $multisort->sorte($holderarray, "'duration'", true, 2); $this->onsale = $multisort->sorte($holderarray, "duration", true, 2);
} }
private function filterNeed($get) private function filterNeed($get)
+22 -20
View File
@@ -25,28 +25,30 @@ class multiSort {
if($i + 2 < func_num_args()) if($i + 2 < func_num_args())
$type = func_get_arg($i + 2); $type = func_get_arg($i + 2);
switch($type) $t = function($a, $b) use ($key, $type, $order)
{ {
case 1: // Case insensitive natural. switch($type)
$t = 'strcasenatcmp($a[' . $key . '], $b[' . $key . '])'; {
break; case 1: // Case insensitive natural.
case 2: // Numeric. $result = strcasenatcmp($a[$key], $b[$key]);
$t = '$a[' . $key . '] - $b[' . $key . ']'; break;
break; case 2: // Numeric.
case 3: // Case sensitive string. $result = $a[$key] - $b[$key];
$t = 'strcmp($a[' . $key . '], $b[' . $key . '])'; break;
break; case 3: // Case sensitive string.
case 4: // Case insensitive string. $result = strcmp($a[$key], $b[$key]);
$t = 'strcasecmp($a[' . $key . '], $b[' . $key . '])'; break;
break; case 4: // Case insensitive string.
default: // Case sensitive natural. $result = strcasecmp($a[$key], $b[$key]);
$t = 'strnatcmp($a[' . $key . '], $b[' . $key . '])'; break;
break; default: // Case sensitive natural.
} $result = strnatcmp($a[$key], $b[ $key]);
break;
}
return $result*($order ? 1 : -1);
};
usort($array, function($a, $b) use ($order, $t) { usort($array, $t);
return ($order ? '' : '-') . ($t);
});
} }
return $array; return $array;
} }
+5 -5
View File
@@ -467,7 +467,7 @@
array_push($holder, $value); array_push($holder, $value);
} }
$holder = $multisort->sorte($holder, "'x'", true, 2, "'y'", true, 2, "'pop'", false, 2); $holder = $multisort->sorte($holder, "x", true, 2, "y", true, 2, "pop", false, 2);
$newholder = array("pad"); $newholder = array("pad");
foreach($holder as $key) { foreach($holder as $key) {
array_push($newholder, $key); array_push($newholder, $key);
@@ -506,7 +506,7 @@
array_push($holder, $value); array_push($holder, $value);
} }
$holder = $multisort->sorte($holder, "'totalpop'", false, 2); $holder = $multisort->sorte($holder, "totalpop", false, 2);
$newholder = array("pad"); $newholder = array("pad");
foreach($holder as $key) { foreach($holder as $key) {
array_push($newholder, $key); array_push($newholder, $key);
@@ -526,7 +526,7 @@
array_push($holder, $value); array_push($holder, $value);
} }
$holder = $multisort->sorte($holder, "'experience'", false, 2); $holder = $multisort->sorte($holder, "experience", false, 2);
$newholder = array("pad"); $newholder = array("pad");
foreach($holder as $key) { foreach($holder as $key) {
array_push($newholder, $key); array_push($newholder, $key);
@@ -554,7 +554,7 @@
array_push($holder, $value); array_push($holder, $value);
} }
$holder = $multisort->sorte($holder, "'Aap'", false, 2); $holder = $multisort->sorte($holder, "Aap", false, 2);
$newholder = array("pad"); $newholder = array("pad");
foreach($holder as $key) { foreach($holder as $key) {
array_push($newholder, $key); array_push($newholder, $key);
@@ -582,7 +582,7 @@
array_push($holder, $value); array_push($holder, $value);
} }
$holder = $multisort->sorte($holder, "'Adp'", false, 2); $holder = $multisort->sorte($holder, "Adp", false, 2);
$newholder = array("pad"); $newholder = array("pad");
foreach($holder as $key) { foreach($holder as $key) {
array_push($newholder, $key); array_push($newholder, $key);
+1 -1
View File
@@ -167,7 +167,7 @@ echo '<div class="clear dotted"></div><div class="text">'.$bbcode_post.'</div></
echo '<a href="allianz.php?s=2&fid2='.$arr['cat'].'&pid='.$arr['alliance'].'&tid='.$arr['id'].'&ac=newpost"><img id="fbtn_reply" class="dynamic_img"src="img/x.gif" alt="Replies" /></a>'; echo '<a href="allianz.php?s=2&fid2='.$arr['cat'].'&pid='.$arr['alliance'].'&tid='.$arr['id'].'&ac=newpost"><img id="fbtn_reply" class="dynamic_img"src="img/x.gif" alt="Replies" /></a>';
} }
if($opt['opt5'] == 1){ if($opt['opt5'] == 1){
echo '<a href="allianz.php?s=2&pid='.$aid.'&tid='.$arr['id'].'&admin=switch_admin" title="Toggle Admin mode"><img class="switch_admin dynamic_img" src="img/x.gif" alt="Toggle Admin mode" /></a>'; echo '<a href="allianz.php?s=2&fid2='.$arr['cat'].'&pid='.$aid.'&tid='.$arr['id'].'&admin=switch_admin" title="Toggle Admin mode"><img class="switch_admin dynamic_img" src="img/x.gif" alt="Toggle Admin mode" /></a>';
} }
echo '</div>'; echo '</div>';
+1 -1
View File
@@ -3,7 +3,7 @@
Copyright: Travianx Project */ Copyright: Travianx Project */
$oasisarray = $database->getOasis($village->wid); $oasisarray = $database->getOasis($village->wid);
if(isset($_GET['gid']) && $_GET['gid']==37 && isset($_GET['del'])){ if(isset($_GET['gid']) && $_GET['gid']==37 && isset($_GET['del']) && $database->getOasisField($_GET['del'], 'owner') == $session->uid){
if($session->access != BANNED){ if($session->access != BANNED){
$database->removeOases($_GET['del']); $database->removeOases($_GET['del']);
header("Location: build.php?id=".$id."&land"); header("Location: build.php?id=".$id."&land");
+1 -1
View File
@@ -146,7 +146,7 @@ include("avaliable/trapper.tpl");
if($rallypoint == 0 && $rallypoint1 == 0 && $id != 40) { if($rallypoint == 0 && $rallypoint1 == 0 && $id != 40) {
include("avaliable/rallypoint.tpl"); include("avaliable/rallypoint.tpl");
} }
if($embassy == 0 && $embassy1 == 0 && $id != 39 && $id != 40) { if($embassy == 0 && $embassy1 == 0 && $id != 39 && $id != 40 && $mainbuilding >= 1) {
include("avaliable/embassy.tpl"); include("avaliable/embassy.tpl");
} }
//fix hero //fix hero