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
+16 -13
View File
@@ -2124,19 +2124,22 @@ class Automation {
$totwood = $villageData['wood'];
$totcrop = $villageData['crop'];
}else{
$cranny_eff = 0;
// work out available resources.
$this->updateORes($data['to']);
$this->pruneOResource();
$cranny_eff = 0;
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');
$totclay = intval($villageData['clay']/10);
$totiron = intval($villageData['iron']/10);
$totwood = intval($villageData['wood']/10);
$totcrop = intval($villageData['crop']/10);
}else{
// work out available resources.
$this->updateORes($data['to']);
$this->pruneOResource();
$oasisData = $database->getOasisFields($data['to'],'clay, iron, wood, crop');
$totclay = $oasisData['clay'];
$totiron = $oasisData['iron'];
@@ -2250,14 +2253,9 @@ class Automation {
//catapults look :D
$info_cat = $info_chief = $info_ram = $info_hero = ",";
//check to see if can destroy village
$hasArtefact = false;
if (count($varray) != 1 && $to['capital'] != 1 && !$database->villageHasArtefact($DefenderWref)) {
$can_destroy=1;
} else {
if ($database->villageHasArtefact($DefenderWref)) {
$hasArtefact = true;
}
$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.";
// note: at this point, we can use cache, since we've cleared it above
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)) {
$rand = 0;
}
@@ -2540,7 +2538,7 @@ class Automation {
}
}
}else{
for ($i=0; $i<($data['t9']-$dead9); $i++){
for ($i=0; $i<($data['t9']-$dead9-$traped9); $i++){
$rand+=rand(5,15);
}
}
@@ -3014,7 +3012,12 @@ class Automation {
if ($isoasis == 0){
$database->modifyResource($DefenderWref,$steal[0],$steal[1],$steal[2],$steal[3],0);
}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']);
$totalstolengain=$steal[0]+$steal[1]+$steal[2]+$steal[3];
+50 -253
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)) {
$this->canProcess($get['master'],$get['id']);
$m=$get['master'];
$master = $_GET;
$session->changeChecker();
if($session->access==BANNED){
header("Location: banned.php");
@@ -643,238 +641,58 @@ class Building {
private function meetRequirement($id) {
global $village,$session,$database;
switch ( $id ) {
$isBuilt = $this->getTypeField($id);
switch ($id) {
case 1:
case 2:
case 3:
case 4:
case 11:
case 15:
case 16:
case 18:
case 23:
case 31:
case 32:
case 33:
return true;
break;
case 4: return true;
case 5: return $this->getTypeLevel(1) >= 10 && $this->getTypeLevel(15) >= 5 && !$isBuilt;
case 6: return $this->getTypeLevel(2) >= 10 && $this->getTypeLevel(15) >= 5 && !$isBuilt;
case 7: return $this->getTypeLevel(3) >= 10 && $this->getTypeLevel(15) >= 5 && !$isBuilt;
case 8: return $this->getTypeLevel(4) >= 5 && !$isBuilt;
case 9: return $this->getTypeLevel(15) >= 5 && $this->getTypeLevel(4) >= 10 && $this->getTypeLevel(8) >= 5 && !$isBuilt;
case 10:
case 20:
return ( $this->getTypeLevel( 15 ) >= 1 ) ? true : false;
break;
case 5:
if ( $this->getTypeLevel( 1 ) >= 10 && $this->getTypeLevel( 15 ) >= 5 ) {
return true;
} else {
return false;
}
break;
case 6:
if ( $this->getTypeLevel( 2 ) >= 10 && $this->getTypeLevel( 15 ) >= 5 ) {
return true;
} else {
return false;
}
break;
case 7:
if ( $this->getTypeLevel( 3 ) >= 10 && $this->getTypeLevel( 15 ) >= 5 ) {
return true;
} else {
return false;
}
break;
case 8:
if ( $this->getTypeLevel( 4 ) >= 5 ) {
return true;
} else {
return false;
}
break;
case 9:
if ( $this->getTypeLevel( 15 ) >= 5 && $this->getTypeLevel( 4 ) >= 10 && $this->getTypeLevel( 8 ) >= 5 ) {
return true;
} else {
return false;
}
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;
case 11: return $this->getTypeLevel(15) >= 1 && (!$isBuilt || $this->getTypeLevel($id) == 20);
case 12: return $this->getTypeLevel(22) >= 3 && $this->getTypeLevel(15) >= 3 && !$isBuilt;
case 13: return $this->getTypeLevel(15) >= 3 && $this->getTypeLevel(22) >= 1 && !$isBuilt;
case 14: return $this->getTypeLevel(16) >= 15 && !$isBuilt;
case 15:
case 16: return !$isBuilt;
case 17: return $this->getTypeLevel(15) >= 3 && $this->getTypeLevel(10) >= 1 && $this->getTypeLevel(11) >= 1 && !$isBuilt;
case 18: return $this->getTypeLevel(15) >= 1 && !$isBuilt;
case 19: return $this->getTypeLevel(15) >= 3 && $this->getTypeLevel(16) >= 1 && !$isBuilt;
case 20: return $this->getTypeLevel(12) >= 3 && $this->getTypeLevel(22) >= 5 && !$isBuilt;
case 21: return $this->getTypeLevel(22) >= 10 && $this->getTypeLevel(15) >= 5 && !$isBuilt;
case 22: return $this->getTypeLevel(15) >= 3 && $this->getTypeLevel(19) >= 3 && !$isBuilt;
case 23: return !$isBuilt || $this->getTypeLevel($id) == 10;
case 24: return $this->getTypeLevel(22) >= 10 && $this->getTypeLevel(15) >= 10 && !$isBuilt;
case 25: return $this->getTypeLevel(15) >= 5 && $this->getTypeLevel(26) == 0 && !$isBuilt;
case 26: return $this->getTypeLevel(18) >= 1 && $this->getTypeLevel(15) >= 5 && $this->getTypeLevel(25) == 0 && !$isBuilt;
case 27: return $this->getTypeLevel(15) >= 10 && !$isBuilt;
case 28: return $this->getTypeLevel(17) == 20 && $this->getTypeLevel(20) >= 10 && !$isBuilt;
case 29: return $this->getTypeLevel(19) == 20 && $village->capital == 0 && !$isBuilt;
case 30: return $this->getTypeLevel(20) == 20 && $village->capital == 0 && !$isBuilt;
case 31: return $session->tribe == 1;
case 32: return $session->tribe == 2;
case 33: return $session->tribe == 3;
case 34: return $this->getTypeLevel(26) >= 3 && $this->getTypeLevel(15) >= 5 && $this->getTypeLevel(25) == 0 && $village->capital != 0 && !$isBuilt;
case 35: return $this->getTypeLevel(16) >= 10 && $this->getTypeLevel(11) == 20 && $session->tribe == 2 && $village->capital != 0 && !$isBuilt;
case 36: return $this->getTypeLevel(16) >= 1 && $session->tribe == 3 && (!$isBuilt || $this->getTypeLevel($id) == 20);
case 37: return $this->getTypeLevel(15) >= 3 && $this->getTypeLevel(16) >= 1 && !$isBuilt;
// great warehouse can only be built with artefact or only in Natar village
case 38:
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 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)));
// great grannary can only be built with artefact or only in Natar village
case 39:
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 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)));
case 40:
$wwlevel = $village->resarray['f99'];
@@ -907,29 +725,12 @@ class Building {
}
}
}
return $village->natar == 1 && $wwbuildingplan > $needed_plan;
if ( $village->natar == 1 && $wwbuildingplan > $needed_plan ) {
return true;
} else {
return false;
}
break;
case 41:
if ( $this->getTypeLevel( 16 ) >= 10 && $this->getTypeLevel( 20 ) == 20 && $session->tribe == 1 ) {
return true;
} else {
return false;
}
break;
case 42:
if ( GREAT_WKS && $this->getTypeLevel( 21 ) == 20 && $village->capital == 0 ) {
return true;
} else {
return false;
}
break;
case 41: return $this->getTypeLevel(16) >= 10 && $this->getTypeLevel(20) == 20 && $session->tribe == 1 && !$isBuilt;
case 42: return GREAT_WKS && $this->getTypeLevel(21) == 20 && $village->capital == 0 && !$isBuilt;
default: return false;
}
}
@@ -978,11 +779,7 @@ class Building {
// special case for Multihunter login which mathematically (because of the resarray length)
// allows for building resource fields above level 20
if ($session->tribe == 0) {
if ($village->resarray['f'.$field] == 20) {
return true;
} else {
return false;
}
return $village->resarray['f'.$field] == 20;
}
if($id <= 4) {
+1 -1
View File
@@ -290,7 +290,7 @@ class Market
array_push($holderarray,$value);
}
}
$this->onsale = $multisort->sorte($holderarray, "'duration'", true, 2);
$this->onsale = $multisort->sorte($holderarray, "duration", true, 2);
}
private function filterNeed($get)
+24 -22
View File
@@ -25,32 +25,34 @@ class multiSort {
if($i + 2 < func_num_args())
$type = func_get_arg($i + 2);
switch($type)
{
case 1: // Case insensitive natural.
$t = 'strcasenatcmp($a[' . $key . '], $b[' . $key . '])';
break;
case 2: // Numeric.
$t = '$a[' . $key . '] - $b[' . $key . ']';
break;
case 3: // Case sensitive string.
$t = 'strcmp($a[' . $key . '], $b[' . $key . '])';
break;
case 4: // Case insensitive string.
$t = 'strcasecmp($a[' . $key . '], $b[' . $key . '])';
break;
default: // Case sensitive natural.
$t = 'strnatcmp($a[' . $key . '], $b[' . $key . '])';
break;
}
$t = function($a, $b) use ($key, $type, $order)
{
switch($type)
{
case 1: // Case insensitive natural.
$result = strcasenatcmp($a[$key], $b[$key]);
break;
case 2: // Numeric.
$result = $a[$key] - $b[$key];
break;
case 3: // Case sensitive string.
$result = strcmp($a[$key], $b[$key]);
break;
case 4: // Case insensitive string.
$result = strcasecmp($a[$key], $b[$key]);
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) {
return ($order ? '' : '-') . ($t);
});
usort($array, $t);
}
return $array;
}
};
$multisort = new multiSort;
?>
?>
+5 -5
View File
@@ -467,7 +467,7 @@
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");
foreach($holder as $key) {
array_push($newholder, $key);
@@ -506,7 +506,7 @@
array_push($holder, $value);
}
$holder = $multisort->sorte($holder, "'totalpop'", false, 2);
$holder = $multisort->sorte($holder, "totalpop", false, 2);
$newholder = array("pad");
foreach($holder as $key) {
array_push($newholder, $key);
@@ -526,7 +526,7 @@
array_push($holder, $value);
}
$holder = $multisort->sorte($holder, "'experience'", false, 2);
$holder = $multisort->sorte($holder, "experience", false, 2);
$newholder = array("pad");
foreach($holder as $key) {
array_push($newholder, $key);
@@ -554,7 +554,7 @@
array_push($holder, $value);
}
$holder = $multisort->sorte($holder, "'Aap'", false, 2);
$holder = $multisort->sorte($holder, "Aap", false, 2);
$newholder = array("pad");
foreach($holder as $key) {
array_push($newholder, $key);
@@ -582,7 +582,7 @@
array_push($holder, $value);
}
$holder = $multisort->sorte($holder, "'Adp'", false, 2);
$holder = $multisort->sorte($holder, "Adp", false, 2);
$newholder = array("pad");
foreach($holder as $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>';
}
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>';
+1 -1
View File
@@ -3,7 +3,7 @@
Copyright: Travianx Project */
$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){
$database->removeOases($_GET['del']);
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) {
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");
}
//fix hero