From b8749af55b74ce6830f91c5493b3c5a6f6e34db6 Mon Sep 17 00:00:00 2001 From: AL-Kateb Date: Mon, 22 Jan 2018 13:47:00 +0000 Subject: [PATCH] Fixed issue #462 wrong troops training --- GameEngine/Database.php | 1 - GameEngine/Technology.php | 839 -------------------------------------- build.php | 1 - 3 files changed, 841 deletions(-) diff --git a/GameEngine/Database.php b/GameEngine/Database.php index 549d7045..34f8b4f5 100755 --- a/GameEngine/Database.php +++ b/GameEngine/Database.php @@ -3317,7 +3317,6 @@ class MYSQLi_DB implements IDbConnection { crop = IF(crop $sign $crop < 0, 0, IF(crop $sign $crop > maxcrop, maxcrop, crop $sign $crop)) WHERE wref = " . $vid ; - return mysqli_query( $this->dblink, $q); } diff --git a/GameEngine/Technology.php b/GameEngine/Technology.php index 223cc101..e69de29b 100755 --- a/GameEngine/Technology.php +++ b/GameEngine/Technology.php @@ -1,839 +0,0 @@ -U1,U2,U3,U4,U5,U6,U7,U8,U9,U10,U11,U12,U13,U14,U15,U16,U17,U18,U19,U20,U21,U22,U23,U24,U25,U26,U27,U28,U29,U30,U31,U32,U33,U34,U35,U36,U37,U38,U39,U40,U41,U42,U43,U44,U45,U46,U47,U48,U49,U50,U99,U0); - - public function grabAcademyRes() { - global $village; - $holder = array(); - foreach($village->researching as $research) { - if(substr($research['tech'],0,1) == "t"){ - array_push($holder,$research); - } - } - return $holder; - } - - public function getABUpgrades($type='a') { - global $village; - $holder = array(); - foreach($village->researching as $research) { - if(substr($research['tech'],0,1) == $type){ - array_push($holder,$research); - } - } - return $holder; - } - - public function isResearch($tech,$type) { - global $village; - if(count($village->researching) == 0) { - return false; - } - else { - switch($type) { - case 1: $string = "t"; break; - case 2: $string = "a"; break; - case 3: $string = "b"; break; - } - foreach($village->researching as $research) { - if($research['tech'] == $string.$tech) { - return true; - } - } - return false; - } - } - - public function procTech($post) { - if(isset($post['ft'])) { - switch($post['ft']) { - case "t1": - $this->procTrain($post); - break; - case "t3": - $this->procTrain($post,true); - break; - } - } - } - - public function procTechno($get) { - global $village; - if(isset($get['a'])) { - switch($village->resarray['f'.$get['id'].'t']) { - case 22: - $this->researchTech($get); - break; - case 13: - $this->upgradeArmour($get); - break; - case 12: - $this->upgradeSword($get); - break; - } - } - } - - public function getTrainingList($type) { - global $database,$village; - $trainingarray = $database->getTraining($village->wid); - $listarray = array(); - $barracks = array(1,2,3,11,12,13,14,21,22,31,32,33,34,35,36,37,38,39,40,41,42,43,44); - // fix by brainiac - THANK YOU - $greatbarracks = array(61,62,63,71,72,73,74,81,82,91,92,93,94,95,96,97,98,99,100,101,102,103,104); - $stables = array(4,5,6,15,16,23,24,25,26,45,46); - $greatstables = array(64,65,66,75,76,83,84,85,86,105,106); - $workshop = array(7,8,17,18,27,28,47,48); - $greatworkshop = array(67,68,77,78,87,88,107,108); - $residence = array(9,10,19,20,29,30,49,50); - $trapper = array(99); - if(count($trainingarray) > 0) { - foreach($trainingarray as $train) { - if($type == 1 && in_array($train['unit'],$barracks)) { - $train['name'] = $this->unarray[$train['unit']]; - array_push($listarray,$train); - } - if($type == 2 && in_array($train['unit'],$stables)) { - $train['name'] = $this->unarray[$train['unit']]; - array_push($listarray,$train); - } - if($type == 3 && in_array($train['unit'],$workshop)) { - $train['name'] = $this->unarray[$train['unit']]; - array_push($listarray,$train); - } - if($type == 4 && in_array($train['unit'],$residence)) { - $train['name'] = $this->unarray[$train['unit']]; - array_push($listarray,$train); - } - if($type == 5 && in_array($train['unit'],$greatbarracks)) { - $train['name'] = $this->unarray[$train['unit']-60]; - $train['unit'] -= 60; - array_push($listarray,$train); - } - if($type == 6 && in_array($train['unit'],$greatstables)) { - $train['name'] = $this->unarray[$train['unit']-60]; - $train['unit'] -= 60; - array_push($listarray,$train); - } - if($type == 7 && in_array($train['unit'],$greatworkshop)) { - $train['name'] = $this->unarray[$train['unit']-60]; - $train['unit'] -= 60; - array_push($listarray,$train); - } - if($type == 8 && in_array($train['unit'],$trapper)) { - $train['name'] = $this->unarray[$train['unit']]; - array_push($listarray,$train); - } - } - } - return $listarray; - } - - public function getUnitList() { - global $database,$village; - $unitarray = func_num_args() == 1? $database->getUnit(func_get_arg(0)) : $village->unitall; - $listArray = array(); - for($i=1;$iunarray);$i++) { - $holder = array(); - if(!empty($unitarray['u'.$i]) && $unitarray['u'.$i] != 0 && $unitarray['u'.$i] != "") { - $holder['id'] = $i; - $holder['name'] = $this->unarray[$i]; - $holder['amt'] = $unitarray['u'.$i]; - array_push($listArray,$holder); - } - } - - if($unitarray['hero'] != 0 && $unitarray['hero'] != "") { - $holder['id'] = "hero"; - $holder['name'] = $this->unarray[$i]; - $holder['amt'] = $unitarray['hero']; - array_push($listArray,$holder); - } - return $listArray; - } - - public function maxUnit($unit,$great=false) { - $unit = "u".$unit; - - global $village,$$unit,$database; - $unitarray = $$unit; - $res = $database->getVillage($village->wid); - if ($res['wood'] > $res['maxstore']){$res['wood'] = $res['maxstore'];} - if ($res['clay'] > $res['maxstore']){$res['clay'] = $res['maxstore'];} - if ($res['iron'] > $res['maxstore']){$res['iron'] = $res['maxstore'];} - if ($res['crop'] > $res['maxcrop']){$res['crop'] = $res['maxcrop'];} - $woodcalc = floor($res['wood'] / ($unitarray['wood'] * ($great?3:1))); - $claycalc = floor($res['clay'] / ($unitarray['clay'] * ($great?3:1))); - $ironcalc = floor($res['iron'] / ($unitarray['iron'] * ($great?3:1))); - if($res['crop']>0){ - $cropcalc = floor($res['crop'] / ($unitarray['crop'] * ($great?3:1))); - }else{ - $cropcalc = 0; - } - if($unit != "u99"){ - $popcalc = floor($village->getProd("crop")/$unitarray['pop']); - }else{ - $popcalc = $village->getProd("crop"); - } - return min($woodcalc,$claycalc,$ironcalc,$cropcalc); - } - - public function maxUnitPlus($unit,$great=false) { - $unit = "u".$unit; - - global $village,$$unit,$database; - $unitarray = $$unit; - $res = $database->getVillage($village->wid); - $totalres = $res['wood']+$res['clay']+$res['iron']+$res['crop']; - $totalresunit = ($unitarray['wood'] * ($great?3:1))+($unitarray['clay'] * ($great?3:1))+($unitarray['iron'] * ($great?3:1))+($unitarray['crop'] * ($great?3:1)); - $max =round($totalres/$totalresunit); - return $max; - } - - public function getUnits() { - global $database,$village; - if(func_num_args() == 1) { - $base = func_get_arg(0); - } - $ownunit = func_num_args() == 2? func_get_arg(0) : $database->getUnit($base); - $enforcementarray = func_num_args() == 2? func_get_arg(1) : $database->getEnforceVillage($base,0); - if(count($enforcementarray) > 0) { - foreach($enforcementarray as $enforce) { - for($i=1;$i<=50;$i++) { - $ownunit['u'.$i] += $enforce['u'.$i]; - } - } - } - return $ownunit; - } - - function getAllUnits($base,$InVillageOnly=False,$mode=0) { - global $database; - $ownunit = $database->getUnit($base); - $ownunit['u99'] -= $ownunit['u99']; - $ownunit['u99o'] -= $ownunit['u99o']; - $enforcementarray = $database->getEnforceVillage($base,0); - if(count($enforcementarray) > 0) { - foreach($enforcementarray as $enforce) { - for($i=1;$i<=50;$i++) { - $ownunit['u'.$i] += $enforce['u'.$i]; - } - $ownunit['hero'] += $enforce['hero']; - } - } - if ($mode==0) { - $enforceoasis=$database->getOasisEnforce($base,0); - if(count($enforceoasis) > 0) { - foreach($enforceoasis as $enforce) { - for($i=1;$i<=50;$i++) { - $ownunit['u'.$i] += $enforce['u'.$i]; - } - $ownunit['hero'] += $enforce['hero']; - } - } - $enforceoasis1=$database->getOasisEnforce($base,1); - if(count($enforceoasis1) > 0) { - foreach($enforceoasis1 as $enforce) { - for($i=1;$i<=50;$i++) { - $ownunit['u'.$i] += $enforce['u'.$i]; - } - $ownunit['hero'] += $enforce['hero']; - } - } - - $prisoners = $database->getPrisoners($base,1); - if(!empty($prisoners)) { - foreach($prisoners as $prisoner){ - $owner = $database->getVillageField($base,"owner"); - $ownertribe = $database->getUserField($owner,"tribe",0); - $start = ($ownertribe-1)*10+1; - $end = ($ownertribe*10); - for($i=$start;$i<=$end;$i++) { - $j = $i-$start+1; - $ownunit['u'.$i] += $prisoner['t'.$j]; - } - $ownunit['hero'] += $prisoner['t11']; - } - } - } - if(!$InVillageOnly) { - $movement = $database->getVillageMovement($base); - if(!empty($movement)) { - for($i=1;$i<=50;$i++) { - if (!isset($ownunit['u'.$i])) { - $ownunit['u'.$i] = 0; - } - $ownunit['u'.$i] += (isset($movement['u'.$i]) ? $movement['u'.$i] : 0); - } - - if (!isset($ownunit['hero'])) { - $ownunit['hero'] = 0; - } - $ownunit['hero'] += (isset($movement['hero']) ? $movement['hero'] : 0); - } - } - return $ownunit; - } - - public function meetTRequirement($unit) { - global $session; - switch($unit) { - case 1: - if($session->tribe == 1) { return true; } else { return false; } - break; - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - if($this->getTech($unit) && $session->tribe == 1) { return true; } else { return false; } - break; - case 10: - if($session->tribe == 1) { return true; } else { return false; } - break; - case 11: - if($session->tribe == 2) { return true; } else { return false; } - break; - case 12: - case 13: - case 14: - case 15: - case 16: - case 17: - case 18: - if($session->tribe == 2 && $this->getTech($unit)) { return true; } else { return false; } - break; - case 20: - if($session->tribe == 2) { return true; } else { return false; } - break; - case 21: - if($session->tribe == 3) { return true; } else { return false; } - break; - case 22: - case 23: - case 24: - case 25: - case 26: - case 27: - case 28: - if($session->tribe == 3 && $this->getTech($unit)) { return true; } else { return false; } - break; - case 30: - if($session->tribe == 3) { return true; } else { return false; } - break; - case 31: - if($session->tribe == 4) { return true; } else { return false; } - break; - case 32: - case 33: - case 34: - case 35: - case 36: - case 37: - case 38: - if($session->tribe == 4 && $this->getTech($unit)) { return true; } else { return false; } - break; - case 40: - if($session->tribe == 4) { return true; } else { return false; } - break; - case 41: - if($session->tribe == 5) { return true; } else { return false; } - break; - case 42: - case 43: - case 44: - case 45: - case 46: - case 47: - case 48: - if($session->tribe == 5 && $this->getTech($unit)) { return true; } else { return false; } - break; - case 50: - if($session->tribe == 5) { return true; } else { return false; } - break; - } - } - - public function getTech($tech) { - global $village; - return (isset($village->techarray['t'.$tech]) && $village->techarray['t'.$tech] == 1); - } - - private function procTrain($post,$great=false) { - global $session; - if($session->access != BANNED){ - // first of all, check if we're not trying to train chieftain - // and settlers together - which we cannot, since that can result - // in 1 chieftain and 3 settlers, then conquering a village, then - // founding a new one, all with only 1 available slot - if ( - !( - (!empty($post['t9']) && !empty($post['t10'])) || - (!empty($post['t19']) && !empty($post['t20'])) || - (!empty($post['t29']) && !empty($post['t30'])) || - (!empty($post['t39']) && !empty($post['t40'])) || - (!empty($post['t49']) && !empty($post['t50'])) - ) - ) { - $start = ( $session->tribe - 1 ) * 10 + 1; - $end = ( $session->tribe * 10 ); - for ( $i = $start; $i <= ( $end ); $i ++ ) { - if ( isset( $post[ 't' . $i ] ) && $post[ 't' . $i ] != 0 ) { - $amt = $post[ 't' . $i ]; - $amt = intval( $amt ); - if ( $amt < 0 ) { - $amt = 1; - } - $this->trainUnit( $i, $amt, $great ); - } - } - if ( $session->tribe == 3 ) { - if ( isset( $post['t99'] ) && $post['t99'] != 0 ) { - $amt = $post['t99']; - $amt = intval( $amt ); - if ( $amt < 0 ) { - $amt = 1; - } - $this->trainUnit( 99, $amt, $great ); - } - } - header( "Location: build.php?id=" . $post['id'] ); - exit; - } - }else{ - header("Location: banned.php"); - exit; - } - } - - public function getUpkeep($array,$type,$vid=0,$prisoners=0) { - 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 ( $buildarray[ 'f' . $j . 't' ] == 41 ) { - $horsedrinking = $j; - break; - } - } - - for ( $i = $start; $i <= $end; $i ++ ) { - $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 ) - ) { - $upkeep += (( $dataarray['pop'] - 1 ) * $array[ $unit ]); - } 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 ) - ) { - $upkeep += (( $dataarray['pop'] - 1 ) * $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; - } - $upkeep += $array['hero'] * 6; - } else { - if ( ! isset( $array['t11'] ) ) { - $array['t11'] = 0; - } - $upkeep += $array['t11'] * 6; - } - - $artefact = count( $database->getOwnUniqueArtefactInfo2( $session->uid, 4, 3, 0 ) ); - $artefact1 = count( $database->getOwnUniqueArtefactInfo2( $vid, 4, 1, 1 ) ); - $artefact2 = count( $database->getOwnUniqueArtefactInfo2( $session->uid, 4, 2, 0 ) ); - - if ( $artefact > 0 ) { - $upkeep /= 2; - $upkeep = round( $upkeep ); - } else if ( $artefact1 > 0 ) { - $upkeep /= 2; - $upkeep = round( $upkeep ); - } else if ( $artefact2 > 0 ) { - $upkeep /= 4; - $upkeep = round( $upkeep ); - $upkeep *= 3; - } - - $foolartefact = $database->getFoolArtefactInfo( 4, $vid, $session->uid ); - - if ( count( $foolartefact ) > 0 ) { - var_dump($foolartefact); - foreach ( $foolartefact as $arte ) { - if ( $arte['bad_effect'] == 1 ) { - $upkeep *= $arte['effect2']; - } else { - $upkeep /= $arte['effect2']; - $upkeep = round( $upkeep ); - } - } - } - - return $upkeep; - } - -private function trainUnit($unit,$amt,$great=false) { - global $session,$database,${'u'.$unit},$building,$village,$bid19,$bid20,$bid21,$bid25,$bid26,$bid29,$bid30,$bid36,$bid41,$bid42; - - if($this->getTech($unit) || $unit%10 <= 1 || $unit == 99) { - $footies = array(1,2,3,11,12,13,14,21,22,31,32,33,34,41,42,43,44); - $calvary = array(4,5,6,15,16,23,24,25,26,35,36,45,46); - $workshop = array(7,8,17,18,27,28,37,38,47,48); - $special = array(9,10,19,20,29,30,39,40,49,50); - $trapper = array(99); - if(in_array($unit,$footies)) { - if($great) { - $each = round(($bid29[$building->getTypeLevel(29)]['attri'] / 100) * ${'u'.$unit}['time'] / SPEED); - } else { - $each = round(($bid19[$building->getTypeLevel(19)]['attri'] / 100) * ${'u'.$unit}['time'] / SPEED); - } - } - if(in_array($unit,$calvary)) { - if($great) { - $each = round(($bid30[$building->getTypeLevel(30)]['attri'] * ($building->getTypeLevel(41)>=1?(1/$bid41[$building->getTypeLevel(41)]['attri']):1) / 100) * ${'u'.$unit}['time'] / SPEED); - } else { - $each = round(($bid20[$building->getTypeLevel(20)]['attri'] * ($building->getTypeLevel(41)>=1?(1/$bid41[$building->getTypeLevel(41)]['attri']):1) / 100) * ${'u'.$unit}['time'] / SPEED); - } - } - if(in_array($unit,$workshop)) { - if($great) { - $each = round(($bid42[$building->getTypeLevel(42)]['attri'] / 100) * ${'u'.$unit}['time'] / SPEED); - } else { - $each = round(($bid21[$building->getTypeLevel(21)]['attri'] / 100) * ${'u'.$unit}['time'] / SPEED); - } - } - if(in_array($unit,$special)) { - if($building->getTypeLevel(25) > 0){ - $each = round(($bid25[$building->getTypeLevel(25)]['attri'] / 100) * ${'u'.$unit}['time'] / SPEED); - } else { - $each = round(($bid26[$building->getTypeLevel(26)]['attri'] / 100) * ${'u'.$unit}['time'] / SPEED); - } - } - if(in_array($unit,$trapper)) { - $each = round(($bid19[$building->getTypeLevel(36)]['attri'] / 100) * ${'u'.$unit}['time'] / SPEED); - } - if($unit%10 == 0 || $unit%10 == 9 && $unit != 99) { - $slots = $database->getAvailableExpansionTraining(); - if($unit%10 == 0 && $slots['settlers'] <= $amt) { $amt = $slots['settlers']; } - if($unit%10 == 9 && $slots['chiefs'] <= $amt) { $amt = $slots['chiefs']; } - } else { - if($unit != 99){ - if($this->maxUnit($unit,$great) < $amt) { - $amt = 0; - } - }else{ - $trainlist = $this->getTrainingList(8); - foreach($trainlist as $train) { - $train_amt += $train['amt']; - } - $max = 0; - for($i=19;$i<41;$i++){ - if($village->resarray['f'.$i.'t'] == 36){ - $max += $bid36[$village->resarray['f'.$i]]['attri']*TRAPPER_CAPACITY; - } - } - $max1 = $max - ($village->unitarray['u99'] + $train_amt); - if($max1 < $amt) { - $amt = 0; - } - } - } - $wood = ${'u'.$unit}['wood'] * $amt * ($great?3:1); - $clay = ${'u'.$unit}['clay'] * $amt * ($great?3:1); - $iron = ${'u'.$unit}['iron'] * $amt * ($great?3:1); - $crop = ${'u'.$unit}['crop'] * $amt * ($great?3:1); - $each = ($each == 0) ? 1 : $each; - $time = $each*$amt; - if($database->modifyResource($village->wid,$wood,$clay,$iron,$crop,0) && $amt > 0) { - $database->trainUnit($village->wid,$unit+($great?60:0),$amt,${'u'.$unit}['pop'],$each,time()+$time,0); - } - } - } - - public function meetRRequirement($tech) { - global $session,$building; - switch($tech) { - case 2: - if($building->getTypeLevel(22) >= 1 && $building->getTypeLevel(13) >= 1) { return true; } else { return false; } - break; - case 3: - if($building->getTypeLevel(22) >= 5 && $building->getTypeLevel(12) >= 1) { return true; } else { return false; } - break; - case 4: - case 23: - if($building->getTypeLevel(22) >= 5 && $building->getTypeLevel(20) >= 1) { return true; } else { return false; } - break; - case 5: - case 25: - if($building->getTypeLevel(22) >= 5 && $building->getTypeLevel(20) >= 5) { return true; } else { return false; } - break; - case 6: - if($building->getTypeLevel(22) >= 15 && $building->getTypeLevel(20) >= 10) { return true; } else { return false; } - break; - case 9: - case 29: - if($building->getTypeLevel(22) >= 20 && $building->getTypeLevel(16) >= 10) { return true; } else { return false; } - break; - case 12: - case 32: - case 42: - if($building->getTypeLevel(22) >= 1 && $building->getTypeLevel(19) >= 3) { return true; } else { return false; } - break; - case 13: - case 33: - case 43: - if($building->getTypeLevel(22) >= 3 && $building->getTypeLevel(12) >= 1) { return true; } else { return false; } - break; - case 14: - case 34: - case 44: - if($building->getTypeLevel(22) >= 1 && $building->getTypeLevel(15) >= 5) { return true; } else { return false; } - break; - case 15: - case 35: - case 45: - if($building->getTypeLevel(22) >= 1 && $building->getTypeLevel(20) >= 3) { return true; } else { return false; } - break; - case 16: - case 26: - case 36: - case 46: - if($building->getTypeLevel(22) >= 15 && $building->getTypeLevel(20) >= 10) { return true; } else { return false; } - break; - case 7: - case 17: - case 27: - case 37: - case 47: - if($building->getTypeLevel(22) >= 10 && $building->getTypeLevel(21) >= 1) { return true; } else { return false; } - break; - case 8: - case 18: - case 28: - case 38: - case 48: - if($building->getTypeLevel(22) >= 15 && $building->getTypeLevel(21) >= 10) { return true; } else { return false; } - break; - case 19: - case 39: - case 49: - if($building->getTypeLevel(22) >= 20 && $building->getTypeLevel(16) >= 5) { return true; } else { return false; } - break; - case 22: - if($building->getTypeLevel(22) >= 3 && $building->getTypeLevel(12) >= 1) { return true; } else { return false; } - break; - case 24: - if($building->getTypeLevel(22) >= 5 && $building->getTypeLevel(20) >= 3) { return true; } else { return false; } - break; - } - } - - private function researchTech($get) { - //global $database,$session,${'r'.$get['a']},$village,$logging; - global $database,$session,${'r'.$get['a']},$bid22,$building,$village,$logging; - if($this->meetRRequirement($get['a']) && $get['c'] == $session->mchecker) { - $data = ${'r'.$get['a']}; - $time = time() + round(($data['time'] * ($bid22[$building->getTypeLevel(22)]['attri'] / 100))/SPEED); - //$time = time() + round($data['time']/SPEED); - $database->modifyResource($village->wid,$data['wood'],$data['clay'],$data['iron'],$data['crop'],0); - $database->addResearch($village->wid,"t".$get['a'],$time); - $logging->addTechLog($village->wid,"t".$get['a'],1); - } - $session->changeChecker(); - header("Location: build.php?id=".$get['id']); - exit; - } - - private function upgradeSword($get) { - global $database,$session,$bid12,$building,$village,$logging; - $ABTech = $database->getABTech($village->wid); - $CurrentTech = $ABTech["b".$get['a']]; - $unit = ($session->tribe-1)*10+intval($get['a']); - if(($this->getTech($unit) || ($unit % 10) == 1) && ($CurrentTech < $building->getTypeLevel(12)) && $get['c'] == $session->mchecker) { - global ${'ab'.strval($unit)}; - $data = ${'ab'.strval($unit)}; - $time = time() + round(($data[$CurrentTech+1]['time'] * ($bid12[$building->getTypeLevel(12)]['attri'] / 100))/SPEED); - if ($database->modifyResource($village->wid,$data[$CurrentTech+1]['wood'],$data[$CurrentTech+1]['clay'],$data[$CurrentTech+1]['iron'],$data[$CurrentTech+1]['crop'],0)) { - $database->addResearch($village->wid,"b".$get['a'],$time); - $logging->addTechLog($village->wid,"b".$get['a'],$CurrentTech+1); - } - } - $session->changeChecker(); - header("Location: build.php?id=".$get['id']); - exit; - } - - private function upgradeArmour($get) { - global $database,$session,$bid13,$building,$village,$logging; - $ABTech = $database->getABTech($village->wid); - $CurrentTech = $ABTech["a".$get['a']]; - $unit = ($session->tribe-1)*10+intval($get['a']); - if(($this->getTech($unit) || ($unit % 10) == 1) && ($CurrentTech < $building->getTypeLevel(13)) && $get['c'] == $session->mchecker) { - global ${'ab'.strval($unit)}; - $data = ${'ab'.strval($unit)}; - $time = time() + round(($data[$CurrentTech+1]['time'] * ($bid13[$building->getTypeLevel(13)]['attri'] / 100))/SPEED); - if ($database->modifyResource($village->wid,$data[$CurrentTech+1]['wood'],$data[$CurrentTech+1]['clay'],$data[$CurrentTech+1]['iron'],$data[$CurrentTech+1]['crop'],0)) { - $database->addResearch($village->wid,"a".$get['a'],$time); - $logging->addTechLog($village->wid,"a".$get['a'],$CurrentTech+1); - } - } - $session->changeChecker(); - header("Location: build.php?id=".$get['id']); - exit; - } - - public function getUnitName($i) { - return $this->unarray[$i]; - } - - public function finishTech() { - global $database,$village; - $q = "UPDATE ".TB_PREFIX."research SET timestamp=".(time()-1)." WHERE vref = ".(int) $village->wid; - $result = $database->query($q); - return mysqli_affected_rows($database->dblink); - } - - public function calculateAvaliable($id,$resarray=array()) { - global $village,$generator,${'r'.$id}; - if(count($resarray)==0) { - $resarray['wood'] = ${'r'.$id}['wood']; - $resarray['clay'] = ${'r'.$id}['clay']; - $resarray['iron'] = ${'r'.$id}['iron']; - $resarray['crop'] = ${'r'.$id}['crop']; - } - $rwtime = ($resarray['wood']-$village->awood) / $village->getProd("wood") * 3600; - $rcltime = ($resarray['clay']-$village->aclay) / $village->getProd("clay") * 3600; - $ritime = ($resarray['iron']-$village->airon) / $village->getProd("iron") * 3600; - $rctime = ($resarray['crop']-$village->acrop) / $village->getProd("crop") * 3600; - if($village->getProd("crop") >= 0) { - $reqtime = max($rwtime,$rcltime,$ritime,$rctime) + time(); - } else { - $reqtime = max($rwtime,$rcltime,$ritime); - if($reqtime > $rctime) { - $reqtime = 0; - } else { - $reqtime += time(); - } - } - return $generator->procMtime($reqtime); - } - - public function checkReinf($id, $use_cache = true) { - global $database; - $enforce=$database->getEnforceArray($id, 0, $use_cache); - $fail=0; - - for ($i=1; $i<50; $i++) { - if($enforce['u'.$i.'']>0){ - $fail=1; - } - } - - if ($enforce['hero']>0) $fail=1; - if($fail==0){ - $database->deleteReinf($id); - } - - } - -} -$technology = new Technology; -?> diff --git a/build.php b/build.php index 101b1a72..7e6495a0 100644 --- a/build.php +++ b/build.php @@ -46,7 +46,6 @@ if ( isset( $_GET['id'] ) ) { if ( ! ctype_digit( preg_replace( "/[^a-zA-Z0-9_-]/", "", $_GET['id'] ) ) ) { $_GET['id'] = "1"; } - $checkBuildings = array( 0, 16, 17, 25, 26, 27 ); if ( $_GET['id'] < 19 || ( isset( $_GET['gid'] ) && ! in_array( $_GET['gid'], $checkBuildings ) ) ) {