fix: raid list counting down leaving units again

This commit is contained in:
Martin Ambrus
2017-11-24 19:11:02 +01:00
parent 56aa916f82
commit d6fc9ee371
+126 -84
View File
@@ -15,92 +15,134 @@
$t11 = 0;
$villageOwner = $database->getVillageField($wref,'owner');
$userAccess = $database->getUserField($villageOwner,'access',0);
if($userAccess != '0' && $userAccess != '8' && ($userAccess != '9' || (ADMIN_ALLOW_INCOMING_RAIDS && $userAccess == '9'))){
if($tribe == 1){ $uname = "u"; } elseif($tribe == 2){ $uname = "u1"; } elseif($tribe == 3){ $uname = "u2"; }elseif($tribe == 4){ $uname = "u3"; }else {$uname = "u4"; }
if($tribe == 1){ $uname1 = "u1"; } elseif($tribe == 2){ $uname1 = "u2"; } elseif($tribe == 3){ $uname1 = "u3"; }elseif($tribe == 4){ $uname1 = "u4"; }else {$uname1 = "u5"; }
if($tribe == 1){ $uname2 = ""; } elseif($tribe == 2){ $uname2 = "1"; } elseif($tribe == 3){ $uname2 = "2"; }elseif($tribe == 4){ $uname2 = "3"; }else {$uname2 = "4"; }
if($sql1[$uname.'1']>=$t1 && $sql1[$uname.'2']>=$t2 && $sql1[$uname.'3']>=$t3 && $sql1[$uname.'4']>=$t4 && $sql1[$uname.'5']>=$t5 && $sql1[$uname.'6']>=$t6 && $sql1[$uname.'7']>=$t7 && $sql1[$uname.'8']>=$t8 && $sql1[$uname.'9']>=$t9 && $sql1[$uname1.'0']>=$t10 && $sql1['hero']>=$t11){
if($_POST['slot'.$sid]=='on'){
$ckey = $generator->generateRandStr(6);
$id = $database->addA2b($ckey,time(),$wref,$t1,$t2,$t3,$t4,$t5,$t6,$t7,$t8,$t9,$t10,$t11,4);
$data = $database->getA2b($ckey, time());
$eigen = $database->getCoor($getFLData['wref']);
$from = array('x'=>$eigen['x'], 'y'=>$eigen['y']);
$ander = $database->getCoor($data['to_vid']);
$to = array('x'=>$ander['x'], 'y'=>$ander['y']);
$start = ($tribe-1)*10+1;
$end = ($tribe*10);
$speeds = array();
$scout = 1;
//find slowest unit.
for($i=1;$i<=10;$i++){
if ($data['u'.$i]){
if($data['u'.$i] != '' && $data['u'.$i] > 0){
if($unitarray) { reset($unitarray); }
$unitarray = $GLOBALS["u".(($tribe-1)*10+$i)];
$speeds[] = $unitarray['speed'];
if ( $userAccess != '0' && $userAccess != '8' && ( $userAccess != '9' || ( ADMIN_ALLOW_INCOMING_RAIDS && $userAccess == '9' ) ) ) {
if ( $tribe == 1 ) {
$uname = "u";
$uname1 = "u1";
$uname2 = "";
} elseif ( $tribe == 2 ) {
$uname = "u1";
$uname1 = "u2";
$uname2 = "1";
} elseif ( $tribe == 3 ) {
$uname = "u2";
$uname1 = "u3";
$uname2 = "2";
} elseif ( $tribe == 4 ) {
$uname = "u3";
$uname1 = "u4";
$uname2 = "3";
} else {
$uname = "u4";
$uname1 = "u5";
$uname2 = "4";
}
if (
$sql1[ $uname . '1' ] >= $t1 &&
$sql1[ $uname . '2' ] >= $t2 &&
$sql1[ $uname . '3' ] >= $t3 &&
$sql1[ $uname . '4' ] >= $t4 &&
$sql1[ $uname . '5' ] >= $t5 &&
$sql1[ $uname . '6' ] >= $t6 &&
$sql1[ $uname . '7' ] >= $t7 &&
$sql1[ $uname . '8' ] >= $t8 &&
$sql1[ $uname . '9' ] >= $t9 &&
$sql1[ $uname1 . '0' ] >= $t10 &&
$sql1['hero'] >= $t11
) {
if ( $_POST[ 'slot' . $sid ] == 'on' ) {
$ckey = $generator->generateRandStr( 6 );
$id = $database->addA2b( $ckey, time(), $wref, $t1, $t2, $t3, $t4, $t5, $t6, $t7, $t8, $t9, $t10, $t11, 4 );
$data = $database->getA2b( $ckey, time() );
$eigen = $database->getCoor( $getFLData['wref'] );
$from = array( 'x' => $eigen['x'], 'y' => $eigen['y'] );
$ander = $database->getCoor( $data['to_vid'] );
$to = array( 'x' => $ander['x'], 'y' => $ander['y'] );
$start = ( $tribe - 1 ) * 10 + 1;
$end = ( $tribe * 10 );
$speeds = array();
$scout = 1;
//find slowest unit.
for ( $i = 1; $i <= 10; $i ++ ) {
if ( $data[ 'u' . $i ] ) {
if ( $data[ 'u' . $i ] != '' && $data[ 'u' . $i ] > 0 ) {
if ( $unitarray ) {
reset( $unitarray );
}
$unitarray = $GLOBALS[ "u" . ( ( $tribe - 1 ) * 10 + $i ) ];
$speeds[] = $unitarray['speed'];
}
}
}
$artefact = count( $database->getOwnUniqueArtefactInfo2( $getFLData['owner'], 2, 3, 0 ) );
$artefact1 = count( $database->getOwnUniqueArtefactInfo2( $getFLData['wref'], 2, 1, 1 ) );
$artefact2 = count( $database->getOwnUniqueArtefactInfo2( $getFLData['owner'], 2, 2, 0 ) );
if ( $artefact > 0 ) {
$fastertroops = 3;
} else if ( $artefact1 > 0 ) {
$fastertroops = 2;
} else if ( $artefact2 > 0 ) {
$fastertroops = 1.5;
} else {
$fastertroops = 1;
}
$time = round( $generator->procDistanceTime( $from, $to, min( $speeds ), 1 ) / $fastertroops );
$foolartefact = $database->getFoolArtefactInfo( 2, $village->wid, $session->uid );
if ( count( $foolartefact ) > 0 ) {
foreach ( $foolartefact as $arte ) {
if ( $arte['bad_effect'] == 1 ) {
$time *= $arte['effect2'];
} else {
$time /= $arte['effect2'];
$time = round( $time );
}
}
}
if ( $data['u7'] > 0 ) {
$ctar1 = 99;
} else {
$ctar1 = 0;
}
$ctar2 = 0;
$abdata = $database->getABTech( $getFLData['wref'] );
$reference = $database->addAttack( ( $getFLData['wref'] ), $data['u1'], $data['u2'], $data['u3'], $data['u4'], $data['u5'], $data['u6'], $data['u7'], $data['u8'], $data['u9'], $data['u10'], $data['u11'], $data['type'], $ctar1, $ctar2, 0, $abdata['b1'], $abdata['b2'], $abdata['b3'], $abdata['b4'], $abdata['b5'], $abdata['b6'], $abdata['b7'], $abdata['b8'] );
$totalunits = $data['u1'] + $data['u2'] + $data['u3'] + $data['u4'] + $data['u5'] + $data['u6'] + $data['u7'] + $data['u8'] + $data['u9'] + $data['u10'] + $data['u11'];
$units = [];
$amounts = [];
$modes = [];
for ( $u = 1; $u <= 10; $u ++ ) {
$units[] = $uname2 . ($u < 10 ? $u : 0);
$amounts[] = $data[ 'u' . ($u < 10 ? $u : 0) ];
$modes[] = 0;
}
$units[] = 'hero';
$amounts[] = $data['u11'];
$modes[] = 0;
$database->modifyUnit( $getFLData['wref'], $units, $amounts, $modes );
$database->addMovement( 3, $getFLData['wref'], $data['to_vid'], $reference, time(), ( $time + time() ) );
// prevent re-use of the same attack via re-POSTing the same data
$database->remA2b( $id );
}
}
$artefact = count($database->getOwnUniqueArtefactInfo2($getFLData['owner'],2,3,0));
$artefact1 = count($database->getOwnUniqueArtefactInfo2($getFLData['wref'],2,1,1));
$artefact2 = count($database->getOwnUniqueArtefactInfo2($getFLData['owner'],2,2,0));
if($artefact > 0){
$fastertroops = 3;
}else if($artefact1 > 0){
$fastertroops = 2;
}else if($artefact2 > 0){
$fastertroops = 1.5;
}else{
$fastertroops = 1;
}
$time = round($generator->procDistanceTime($from,$to,min($speeds),1)/$fastertroops);
$foolartefact = $database->getFoolArtefactInfo(2,$village->wid,$session->uid);
if(count($foolartefact) > 0){
foreach($foolartefact as $arte){
if($arte['bad_effect'] == 1){
$time *= $arte['effect2'];
}else{
$time /= $arte['effect2'];
$time = round($time);
}
}
}
if($data['u7'] > 0){
$ctar1 = 99;
}else{
$ctar1 = 0;
}
$ctar2 = 0;
$abdata = $database->getABTech($getFLData['wref']);
$reference = $database->addAttack(($getFLData['wref']),$data['u1'],$data['u2'],$data['u3'],$data['u4'],$data['u5'],$data['u6'],$data['u7'],$data['u8'],$data['u9'],$data['u10'],$data['u11'],$data['type'],$ctar1,$ctar2,0,$abdata['b1'],$abdata['b2'],$abdata['b3'],$abdata['b4'],$abdata['b5'],$abdata['b6'],$abdata['b7'],$abdata['b8']);
$totalunits = $data['u1']+$data['u2']+$data['u3']+$data['u4']+$data['u5']+$data['u6']+$data['u7']+$data['u8']+$data['u9']+$data['u10']+$data['u11'];
$units = [];
$amounts = [];
$modes = [];
for ($u = 1; $u <= 10; $u++) {
$units[] = $uname2.$u;
$amounts[] = $data['u'.$u];
$modes[] = 0;
}
$units[] = 'hero';
$amounts[] = $data['u11'];
$modes[] = 0;
$database->modifyUnit($getFLData['wref'], $uname2, $amounts, $modes);
$database->addMovement(3,$getFLData['wref'],$data['to_vid'],$reference,time(),($time+time()));
// prevent re-use of the same attack via re-POSTing the same data
$database->remA2b($data['id']);
}
}
}
}