fix: fool's artefact caching returns non-fool artefact data

#313
This commit is contained in:
Martin Ambrus
2017-11-25 20:50:12 +01:00
parent 8d8c96014b
commit 5dfbd89130
3 changed files with 233 additions and 184 deletions
+78 -58
View File
@@ -3989,113 +3989,133 @@ class Automation {
} }
public function getUpkeep($array,$type,$vid=0,$prisoners=0) { public function getUpkeep($array,$type,$vid=0,$prisoners=0) {
global $database,$session,$village; global $database, $session, $village;
if ( $vid == 0 ) {
$vid = $village->wid;
}
if($vid==0) { $vid=$village->wid; }
$buildarray = array(); $buildarray = array();
if($vid!=0){ $buildarray = $database->getResourceLevel($vid); }
if ( $vid != 0 ) {
$buildarray = $database->getResourceLevel( $vid );
}
$upkeep = 0; $upkeep = 0;
switch($type) {
switch ( $type ) {
case 0: case 0:
$start = 1; $start = 1;
$end = 50; $end = 50;
break; break;
case 1: case 1:
$start = 1; $start = 1;
$end = 10; $end = 10;
break; break;
case 2: case 2:
$start = 11; $start = 11;
$end = 20; $end = 20;
break; break;
case 3: case 3:
$start = 21; $start = 21;
$end = 30; $end = 30;
break; break;
case 4: case 4:
$start = 31; $start = 31;
$end = 40; $end = 40;
break; break;
case 5: case 5:
$start = 41; $start = 41;
$end = 50; $end = 50;
break; break;
} }
for($i=$start;$i<=$end;$i++) {
$k = $i-$start+1; for ( $i = $start; $i <= $end; $i ++ ) {
$unit = "u".$i; $k = $i - $start + 1;
$unit2 = "t".$k; $unit = "u" . $i;
$unit2 = "t" . $k;
global $$unit; global $$unit;
$dataarray = $$unit; $dataarray = $$unit;
for($j=19;$j<=38;$j++) {
if($buildarray['f'.$j.'t'] == 41) { for ( $j = 19; $j <= 38; $j ++ ) {
if ( $buildarray[ 'f' . $j . 't' ] == 41 ) {
$horsedrinking = $j; $horsedrinking = $j;
} }
} }
if($prisoners == 0){
if(isset($horsedrinking)){ if ( $prisoners == 0 ) {
if(($i==4 && $buildarray['f'.$horsedrinking] >= 10) if ( isset( $horsedrinking ) ) {
|| ($i==5 && $buildarray['f'.$horsedrinking] >= 15) if ( ( $i == 4 && $buildarray[ 'f' . $horsedrinking ] >= 10 )
|| ($i==6 && $buildarray['f'.$horsedrinking] == 20)) { || ( $i == 5 && $buildarray[ 'f' . $horsedrinking ] >= 15 )
$upkeep += ($dataarray['pop']-1) * $array[$unit]; || ( $i == 6 && $buildarray[ 'f' . $horsedrinking ] == 20 ) ) {
} else { $upkeep += ( $dataarray['pop'] - 1 ) * $array[ $unit ];
$upkeep += $dataarray['pop'] * $array[$unit]; } else {
}}else{ $upkeep += $dataarray['pop'] * $array[ $unit ];
$upkeep += $dataarray['pop'] * $array[$unit]; }
} } else {
}else{ $upkeep += $dataarray['pop'] * $array[ $unit ];
if(isset($horsedrinking)){ }
if(($i==4 && $buildarray['f'.$horsedrinking] >= 10) } else {
|| ($i==5 && $buildarray['f'.$horsedrinking] >= 15) if ( isset( $horsedrinking ) ) {
|| ($i==6 && $buildarray['f'.$horsedrinking] == 20)) { if ( ( $i == 4 && $buildarray[ 'f' . $horsedrinking ] >= 10 )
$upkeep += ($dataarray['pop']-1) * $array[$unit2]; || ( $i == 5 && $buildarray[ 'f' . $horsedrinking ] >= 15 )
} else { || ( $i == 6 && $buildarray[ 'f' . $horsedrinking ] == 20 ) ) {
$upkeep += $dataarray['pop'] * $array[$unit2]; $upkeep += ( $dataarray['pop'] - 1 ) * $array[ $unit2 ];
}}else{ } else {
$upkeep += $dataarray['pop'] * $array[$unit2]; $upkeep += $dataarray['pop'] * $array[ $unit2 ];
} }
} else {
$upkeep += $dataarray['pop'] * $array[ $unit2 ];
}
} }
} }
// $unit = "hero"; // $unit = "hero";
// global $$unit; // global $$unit;
// $dataarray = $$unit; // $dataarray = $$unit;
if($prisoners == 0){ if ( $prisoners == 0 ) {
if (!isset($array['hero'])) { if ( ! isset( $array['hero'] ) ) {
$array['hero'] = 0; $array['hero'] = 0;
} }
$upkeep += $array['hero'] * 6; $upkeep += $array['hero'] * 6;
}else{ } else {
if (!isset($array['t11'])) { if ( ! isset( $array['t11'] ) ) {
$array['t11'] = 0; $array['t11'] = 0;
} }
$upkeep += $array['t11'] * 6; $upkeep += $array['t11'] * 6;
} }
$who=$database->getVillageField($vid,"owner");
$artefact = count($database->getOwnUniqueArtefactInfo2($who,4,3,0)); $who = $database->getVillageField( $vid, "owner" );
$artefact1 = count($database->getOwnUniqueArtefactInfo2($vid,4,1,1)); $artefact = count( $database->getOwnUniqueArtefactInfo2( $who, 4, 3, 0 ) );
$artefact2 = count($database->getOwnUniqueArtefactInfo2($who,4,2,0)); $artefact1 = count( $database->getOwnUniqueArtefactInfo2( $vid, 4, 1, 1 ) );
if($artefact > 0){ $artefact2 = count( $database->getOwnUniqueArtefactInfo2( $who, 4, 2, 0 ) );
if ( $artefact > 0 ) {
$upkeep /= 2; $upkeep /= 2;
$upkeep = round($upkeep); $upkeep = round( $upkeep );
}else if($artefact1 > 0){ } else if ( $artefact1 > 0 ) {
$upkeep /= 2; $upkeep /= 2;
$upkeep = round($upkeep); $upkeep = round( $upkeep );
}else if($artefact2 > 0){ } else if ( $artefact2 > 0 ) {
$upkeep /= 4; $upkeep /= 4;
$upkeep = round($upkeep); $upkeep = round( $upkeep );
$upkeep *= 3; $upkeep *= 3;
} }
$foolartefact = $database->getFoolArtefactInfo(4,$vid,$who);
if(count($foolartefact) > 0){ $foolartefact = $database->getFoolArtefactInfo( 4, $vid, $who );
foreach($foolartefact as $arte){
if($arte['bad_effect'] == 1){ if ( count( $foolartefact ) > 0 ) {
foreach ( $foolartefact as $arte ) {
if ( $arte['bad_effect'] == 1 ) {
$upkeep *= $arte['effect2']; $upkeep *= $arte['effect2'];
}else{ } else {
$upkeep /= $arte['effect2']; $upkeep /= $arte['effect2'];
$upkeep = round($upkeep); $upkeep = round( $upkeep );
} }
} }
} }
return $upkeep; return $upkeep;
} }
+12 -1
View File
@@ -7085,7 +7085,18 @@ References: User ID/Message ID, Mode
self::$foolArtefactCache[$vid] = []; self::$foolArtefactCache[$vid] = [];
} }
return (isset(self::$foolArtefactCache[$vid][$type.$uid]) ? self::$foolArtefactCache[$vid][$type.$uid] : []); if (
isset(self::$foolArtefactCache[$vid][$type.$uid]) &&
self::$foolArtefactCache[$vid][$type.$uid]['type'] == 8 &&
self::$foolArtefactCache[$vid][$type.$uid]['kind'] == $type &&
self::$foolArtefactCache[$vid][$type.$uid]['owner'] == $uid &&
self::$foolArtefactCache[$vid][$type.$uid]['size'] > 1 &&
self::$foolArtefactCache[$vid][$type.$uid]['active'] > 1
) {
return self::$foolArtefactCache[$vid][$type.$uid];
} else {
return [];
}
} }
function claimArtefact($vref, $ovref, $id) { function claimArtefact($vref, $ovref, $id) {
+143 -125
View File
@@ -443,141 +443,159 @@ class Technology {
} }
public function getUpkeep($array,$type,$vid=0,$prisoners=0) { public function getUpkeep($array,$type,$vid=0,$prisoners=0) {
global $database,$session,$village; global $database, $session, $village;
if($vid==0) { $vid=$village->wid; }
$buildarray = array();
$buildarray = $database->getResourceLevel($vid);
$upkeep = 0;
switch($type) {
case 0:
$start = 1;
$end = 50;
break;
case 1:
$start = 1;
$end = 10;
break;
case 2:
$start = 11;
$end = 20;
break;
case 3:
$start = 21;
$end = 30;
break;
case 4:
$start = 31;
$end = 40;
break;
case 5:
$start = 41;
$end = 50;
break;
}
for($j=19;$j<=38;$j++) { if ( $vid == 0 ) {
if($buildarray['f'.$j.'t'] == 41) { $vid = $village->wid;
$horsedrinking = $j; }
break;
}
}
for($i=$start;$i<=$end;$i++) { $buildarray = array();
$k = $i-$start+1; $buildarray = $database->getResourceLevel( $vid );
$unit = "u".$i; $upkeep = 0;
$unit2 = "t".$k;
global $$unit;
$dataarray = $$unit;
if($prisoners == 0){
if(isset($horsedrinking)){
if(($i==4 && $buildarray['f'.$horsedrinking] >= 10)
|| ($i==5 && $buildarray['f'.$horsedrinking] >= 15)
|| ($i==6 && $buildarray['f'.$horsedrinking] == 20)
) {
$upkeepDecrement = 0;
switch ($i) {
case 4: $upkeepDecrement = 2;
break;
case 5: $upkeepDecrement = 3; switch ( $type ) {
break; case 0:
$start = 1;
$end = 50;
break;
case 1:
$start = 1;
$end = 10;
break;
case 2:
$start = 11;
$end = 20;
break;
case 3:
$start = 21;
$end = 30;
break;
case 4:
$start = 31;
$end = 40;
break;
case 5:
$start = 41;
$end = 50;
break;
}
case 6: $upkeepDecrement = 4; for ( $j = 19; $j <= 38; $j ++ ) {
break; if ( $buildarray[ 'f' . $j . 't' ] == 41 ) {
} $horsedrinking = $j;
$upkeep += ($dataarray['pop'] - $upkeepDecrement) * $array[$unit]; break;
} else { }
$upkeep += $dataarray['pop'] * $array[$unit]; }
}
} else {
$upkeep += $dataarray['pop'] * $array[$unit];
}
} else {
if(isset($horsedrinking)){
if(($i==4 && $buildarray['f'.$horsedrinking] >= 10)
|| ($i==5 && $buildarray['f'.$horsedrinking] >= 15)
|| ($i==6 && $buildarray['f'.$horsedrinking] == 20)
) {
$upkeepDecrement = 0;
switch ($i) {
case 4: $upkeepDecrement = 2;
break;
case 5: $upkeepDecrement = 3; for ( $i = $start; $i <= $end; $i ++ ) {
break; $k = $i - $start + 1;
$unit = "u" . $i;
$unit2 = "t" . $k;
global $$unit;
$dataarray = $$unit;
if ( $prisoners == 0 ) {
if ( isset( $horsedrinking ) ) {
if ( ( $i == 4 && $buildarray[ 'f' . $horsedrinking ] >= 10 )
|| ( $i == 5 && $buildarray[ 'f' . $horsedrinking ] >= 15 )
|| ( $i == 6 && $buildarray[ 'f' . $horsedrinking ] == 20 )
) {
$upkeepDecrement = 0;
switch ( $i ) {
case 4:
$upkeepDecrement = 2;
break;
case 6: $upkeepDecrement = 4; case 5:
break; $upkeepDecrement = 3;
} break;
$upkeep += ($dataarray['pop'] - $upkeepDecrement) * $array[$unit2];
} else { case 6:
$upkeep += $dataarray['pop'] * $array[$unit2]; $upkeepDecrement = 4;
} break;
} else { }
$upkeep += $dataarray['pop'] * $array[$unit2]; $upkeep += ( $dataarray['pop'] - $upkeepDecrement ) * $array[ $unit ];
} } else {
} $upkeep += $dataarray['pop'] * $array[ $unit ];
} }
// $unit = "hero"; } else {
// global $$unit; $upkeep += $dataarray['pop'] * $array[ $unit ];
// $dataarray = $$unit; }
if($prisoners == 0){ } else {
if (!isset($array['hero'])) { if ( isset( $horsedrinking ) ) {
if ( ( $i == 4 && $buildarray[ 'f' . $horsedrinking ] >= 10 )
|| ( $i == 5 && $buildarray[ 'f' . $horsedrinking ] >= 15 )
|| ( $i == 6 && $buildarray[ 'f' . $horsedrinking ] == 20 )
) {
$upkeepDecrement = 0;
switch ( $i ) {
case 4:
$upkeepDecrement = 2;
break;
case 5:
$upkeepDecrement = 3;
break;
case 6:
$upkeepDecrement = 4;
break;
}
$upkeep += ( $dataarray['pop'] - $upkeepDecrement ) * $array[ $unit2 ];
} else {
$upkeep += $dataarray['pop'] * $array[ $unit2 ];
}
} else {
$upkeep += $dataarray['pop'] * $array[ $unit2 ];
}
}
}
// $unit = "hero";
// global $$unit;
// $dataarray = $$unit;
if ( $prisoners == 0 ) {
if ( ! isset( $array['hero'] ) ) {
$array['hero'] = 0; $array['hero'] = 0;
} }
$upkeep += $array['hero'] * 6; $upkeep += $array['hero'] * 6;
}else{ } else {
if (!isset($array['t11'])) { if ( ! isset( $array['t11'] ) ) {
$array['t11'] = 0; $array['t11'] = 0;
} }
$upkeep += $array['t11'] * 6; $upkeep += $array['t11'] * 6;
} }
$artefact = count($database->getOwnUniqueArtefactInfo2($session->uid,4,3,0));
$artefact1 = count($database->getOwnUniqueArtefactInfo2($vid,4,1,1)); $artefact = count( $database->getOwnUniqueArtefactInfo2( $session->uid, 4, 3, 0 ) );
$artefact2 = count($database->getOwnUniqueArtefactInfo2($session->uid,4,2,0)); $artefact1 = count( $database->getOwnUniqueArtefactInfo2( $vid, 4, 1, 1 ) );
if($artefact > 0){ $artefact2 = count( $database->getOwnUniqueArtefactInfo2( $session->uid, 4, 2, 0 ) );
$upkeep /= 2;
$upkeep = round($upkeep); if ( $artefact > 0 ) {
}else if($artefact1 > 0){ $upkeep /= 2;
$upkeep /= 2; $upkeep = round( $upkeep );
$upkeep = round($upkeep); } else if ( $artefact1 > 0 ) {
}else if($artefact2 > 0){ $upkeep /= 2;
$upkeep /= 4; $upkeep = round( $upkeep );
$upkeep = round($upkeep); } else if ( $artefact2 > 0 ) {
$upkeep *= 3; $upkeep /= 4;
} $upkeep = round( $upkeep );
$foolartefact = $database->getFoolArtefactInfo(4,$vid,$session->uid); $upkeep *= 3;
if(count($foolartefact) > 0){ }
foreach($foolartefact as $arte){
if($arte['bad_effect'] == 1){ $foolartefact = $database->getFoolArtefactInfo( 4, $vid, $session->uid );
$upkeep *= $arte['effect2'];
}else{ if ( count( $foolartefact ) > 0 ) {
$upkeep /= $arte['effect2']; var_dump($foolartefact);
$upkeep = round($upkeep); foreach ( $foolartefact as $arte ) {
} if ( $arte['bad_effect'] == 1 ) {
} $upkeep *= $arte['effect2'];
} } else {
return $upkeep; $upkeep /= $arte['effect2'];
$upkeep = round( $upkeep );
}
}
}
return $upkeep;
} }
private function trainUnit($unit,$amt,$great=false) { private function trainUnit($unit,$amt,$great=false) {