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
+24 -4
View File
@@ -3991,10 +3991,18 @@ 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;
@@ -4021,17 +4029,21 @@ class Automation {
$end = 50; $end = 50;
break; break;
} }
for ( $i = $start; $i <= $end; $i ++ ) { for ( $i = $start; $i <= $end; $i ++ ) {
$k = $i - $start + 1; $k = $i - $start + 1;
$unit = "u" . $i; $unit = "u" . $i;
$unit2 = "t" . $k; $unit2 = "t" . $k;
global $$unit; global $$unit;
$dataarray = $$unit; $dataarray = $$unit;
for ( $j = 19; $j <= 38; $j ++ ) { for ( $j = 19; $j <= 38; $j ++ ) {
if ( $buildarray[ 'f' . $j . 't' ] == 41 ) { if ( $buildarray[ 'f' . $j . 't' ] == 41 ) {
$horsedrinking = $j; $horsedrinking = $j;
} }
} }
if ( $prisoners == 0 ) { if ( $prisoners == 0 ) {
if ( isset( $horsedrinking ) ) { if ( isset( $horsedrinking ) ) {
if ( ( $i == 4 && $buildarray[ 'f' . $horsedrinking ] >= 10 ) if ( ( $i == 4 && $buildarray[ 'f' . $horsedrinking ] >= 10 )
@@ -4040,7 +4052,8 @@ class Automation {
$upkeep += ( $dataarray['pop'] - 1 ) * $array[ $unit ]; $upkeep += ( $dataarray['pop'] - 1 ) * $array[ $unit ];
} else { } else {
$upkeep += $dataarray['pop'] * $array[ $unit ]; $upkeep += $dataarray['pop'] * $array[ $unit ];
}}else{ }
} else {
$upkeep += $dataarray['pop'] * $array[ $unit ]; $upkeep += $dataarray['pop'] * $array[ $unit ];
} }
} else { } else {
@@ -4051,11 +4064,13 @@ class Automation {
$upkeep += ( $dataarray['pop'] - 1 ) * $array[ $unit2 ]; $upkeep += ( $dataarray['pop'] - 1 ) * $array[ $unit2 ];
} else { } else {
$upkeep += $dataarray['pop'] * $array[ $unit2 ]; $upkeep += $dataarray['pop'] * $array[ $unit2 ];
}}else{ }
} else {
$upkeep += $dataarray['pop'] * $array[ $unit2 ]; $upkeep += $dataarray['pop'] * $array[ $unit2 ];
} }
} }
} }
// $unit = "hero"; // $unit = "hero";
// global $$unit; // global $$unit;
// $dataarray = $$unit; // $dataarray = $$unit;
@@ -4070,10 +4085,12 @@ class Automation {
} }
$upkeep += $array['t11'] * 6; $upkeep += $array['t11'] * 6;
} }
$who = $database->getVillageField( $vid, "owner" ); $who = $database->getVillageField( $vid, "owner" );
$artefact = count( $database->getOwnUniqueArtefactInfo2( $who, 4, 3, 0 ) ); $artefact = count( $database->getOwnUniqueArtefactInfo2( $who, 4, 3, 0 ) );
$artefact1 = count( $database->getOwnUniqueArtefactInfo2( $vid, 4, 1, 1 ) ); $artefact1 = count( $database->getOwnUniqueArtefactInfo2( $vid, 4, 1, 1 ) );
$artefact2 = count( $database->getOwnUniqueArtefactInfo2( $who, 4, 2, 0 ) ); $artefact2 = count( $database->getOwnUniqueArtefactInfo2( $who, 4, 2, 0 ) );
if ( $artefact > 0 ) { if ( $artefact > 0 ) {
$upkeep /= 2; $upkeep /= 2;
$upkeep = round( $upkeep ); $upkeep = round( $upkeep );
@@ -4085,7 +4102,9 @@ class Automation {
$upkeep = round( $upkeep ); $upkeep = round( $upkeep );
$upkeep *= 3; $upkeep *= 3;
} }
$foolartefact = $database->getFoolArtefactInfo( 4, $vid, $who ); $foolartefact = $database->getFoolArtefactInfo( 4, $vid, $who );
if ( count( $foolartefact ) > 0 ) { if ( count( $foolartefact ) > 0 ) {
foreach ( $foolartefact as $arte ) { foreach ( $foolartefact as $arte ) {
if ( $arte['bad_effect'] == 1 ) { if ( $arte['bad_effect'] == 1 ) {
@@ -4096,6 +4115,7 @@ class Automation {
} }
} }
} }
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) {
+25 -7
View File
@@ -444,10 +444,15 @@ 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; }
if ( $vid == 0 ) {
$vid = $village->wid;
}
$buildarray = array(); $buildarray = array();
$buildarray = $database->getResourceLevel( $vid ); $buildarray = $database->getResourceLevel( $vid );
$upkeep = 0; $upkeep = 0;
switch ( $type ) { switch ( $type ) {
case 0: case 0:
$start = 1; $start = 1;
@@ -496,13 +501,16 @@ class Technology {
) { ) {
$upkeepDecrement = 0; $upkeepDecrement = 0;
switch ( $i ) { switch ( $i ) {
case 4: $upkeepDecrement = 2; case 4:
$upkeepDecrement = 2;
break; break;
case 5: $upkeepDecrement = 3; case 5:
$upkeepDecrement = 3;
break; break;
case 6: $upkeepDecrement = 4; case 6:
$upkeepDecrement = 4;
break; break;
} }
$upkeep += ( $dataarray['pop'] - $upkeepDecrement ) * $array[ $unit ]; $upkeep += ( $dataarray['pop'] - $upkeepDecrement ) * $array[ $unit ];
@@ -520,13 +528,16 @@ class Technology {
) { ) {
$upkeepDecrement = 0; $upkeepDecrement = 0;
switch ( $i ) { switch ( $i ) {
case 4: $upkeepDecrement = 2; case 4:
$upkeepDecrement = 2;
break; break;
case 5: $upkeepDecrement = 3; case 5:
$upkeepDecrement = 3;
break; break;
case 6: $upkeepDecrement = 4; case 6:
$upkeepDecrement = 4;
break; break;
} }
$upkeep += ( $dataarray['pop'] - $upkeepDecrement ) * $array[ $unit2 ]; $upkeep += ( $dataarray['pop'] - $upkeepDecrement ) * $array[ $unit2 ];
@@ -538,6 +549,7 @@ class Technology {
} }
} }
} }
// $unit = "hero"; // $unit = "hero";
// global $$unit; // global $$unit;
// $dataarray = $$unit; // $dataarray = $$unit;
@@ -552,9 +564,11 @@ class Technology {
} }
$upkeep += $array['t11'] * 6; $upkeep += $array['t11'] * 6;
} }
$artefact = count( $database->getOwnUniqueArtefactInfo2( $session->uid, 4, 3, 0 ) ); $artefact = count( $database->getOwnUniqueArtefactInfo2( $session->uid, 4, 3, 0 ) );
$artefact1 = count( $database->getOwnUniqueArtefactInfo2( $vid, 4, 1, 1 ) ); $artefact1 = count( $database->getOwnUniqueArtefactInfo2( $vid, 4, 1, 1 ) );
$artefact2 = count( $database->getOwnUniqueArtefactInfo2( $session->uid, 4, 2, 0 ) ); $artefact2 = count( $database->getOwnUniqueArtefactInfo2( $session->uid, 4, 2, 0 ) );
if ( $artefact > 0 ) { if ( $artefact > 0 ) {
$upkeep /= 2; $upkeep /= 2;
$upkeep = round( $upkeep ); $upkeep = round( $upkeep );
@@ -566,8 +580,11 @@ class Technology {
$upkeep = round( $upkeep ); $upkeep = round( $upkeep );
$upkeep *= 3; $upkeep *= 3;
} }
$foolartefact = $database->getFoolArtefactInfo( 4, $vid, $session->uid ); $foolartefact = $database->getFoolArtefactInfo( 4, $vid, $session->uid );
if ( count( $foolartefact ) > 0 ) { if ( count( $foolartefact ) > 0 ) {
var_dump($foolartefact);
foreach ( $foolartefact as $arte ) { foreach ( $foolartefact as $arte ) {
if ( $arte['bad_effect'] == 1 ) { if ( $arte['bad_effect'] == 1 ) {
$upkeep *= $arte['effect2']; $upkeep *= $arte['effect2'];
@@ -577,6 +594,7 @@ class Technology {
} }
} }
} }
return $upkeep; return $upkeep;
} }