diff --git a/hwe/d_merge.php b/hwe/d_merge.php index 8991d36b..0d6ed37d 100644 --- a/hwe/d_merge.php +++ b/hwe/d_merge.php @@ -85,7 +85,7 @@ if($ok == "수락") { $mylog[] = "●양국 국력이 너무 높습니다. 통합 실패."; } elseif($mynation['gennum']+$younation['gennum'] > $avgnation['gennum']+$stdnation['gennum']) { $mylog[] = "●양국 장수가 많습니다. 통합 실패."; - } elseif(!isClose($connect, $younation['nation'], $mynation['nation'])) { + } elseif(!isClose($younation['nation'], $mynation['nation'])) { $mylog[] = "●인접한 국가가 아니므로 불가능합니다. 통합 실패."; } elseif($dip['state'] == 0) { $mylog[] = "●아국과 교전중입니다. 통합 실패."; diff --git a/hwe/d_surrender.php b/hwe/d_surrender.php index cbf9f17d..3730b349 100644 --- a/hwe/d_surrender.php +++ b/hwe/d_surrender.php @@ -75,7 +75,7 @@ if($ok == "수락") { $mylog[] = "●상대가 방랑군이므로 불가능합니다. 투항 실패."; } elseif($younation['power'] / $mynation['power'] <= 3) { $mylog[] = "●아국과 상대국의 국력차이가 크지 않습니다. 투항 실패."; - } elseif($losecitynum != 0 && !isClose($connect, $younation['nation'], $mynation['nation'])) { + } elseif($losecitynum != 0 && !isClose($younation['nation'], $mynation['nation'])) { $mylog[] = "●인접한 국가가 아니므로 불가능합니다. 투항 실패."; } elseif($dip['state'] == 0) { $mylog[] = "●아국과 교전중입니다. 투항 실패."; diff --git a/hwe/func.php b/hwe/func.php index 435f5af0..d3c5aae9 100644 --- a/hwe/func.php +++ b/hwe/func.php @@ -2574,40 +2574,23 @@ function searchDistance(int $from, int $maxDist=99, bool $distForm = false) { } } -function isClose($connect, $nation1, $nation2) { - $isClose = 0; - // $nation1의 모든 도시 - $query = "select path from city where nation='$nation1'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $citycount = MYDB_num_rows($result); +function isClose($nation1, $nation2) { + $db = DB::db(); - // 국가의 모든 도시 검색 - for($i=0; $i < $citycount; $i++) { - $city = MYDB_fetch_array($result); + $nation1Cities = []; + foreach($db->queryFirstColumn('SELECT city FROM city WHERE nation = %i', $nation1) as $city){ + $nation1Cities[$city] = $city; + } - // 각 도시당 모든 인접 도시 플래그 세팅 - $path = explode("|", $city['path']); - for($j=0; $j < count($path); $j++) { - $barrier[$path[$j]] = 1; + foreach($db->queryFirstColumn('SELECT city FROM city WHERE nation = %i', $nation2) as $city){ + foreach(array_keys(CityConst::byID($city)->$path) as $adjCity){ + if(key_exists($adjCity, $nation1Cities)){ + return true; + } } } - // $nation2의 모든 도시 선택 - $query = "select city from city where nation='$nation2'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $citycount = MYDB_num_rows($result); - - for($i=0; $i < $citycount; $i++) { - $city = MYDB_fetch_array($result); - if(!key_exists($city['city'], $barrier)){ - continue; - } - if($barrier[$city['city']] == 1) { - $isClose = 1; - } - } - - return $isClose; + return false; } function CharExperience($exp, $personal) { diff --git a/hwe/func_npc.php b/hwe/func_npc.php index 7ab54fba..bda430f7 100644 --- a/hwe/func_npc.php +++ b/hwe/func_npc.php @@ -604,7 +604,7 @@ function processAI($connect, $no) { for($i=0; $i < $nationCount; $i++) { $youNation = MYDB_fetch_array($result); - if(isClose($connect, $general['nation'], $youNation['nation'])) { + if(isClose($general['nation'], $youNation['nation'])) { $command = EncodeCommand(0, 0, $youNation['nation'], 62); $query = "update nation set l12turn0='$command' where nation='{$general['nation']}'"; MYDB_query($query, $connect) or Error("processAI09 ".MYDB_error($connect),""); diff --git a/hwe/func_process_chief.php b/hwe/func_process_chief.php index 476b048e..d445c5c1 100644 --- a/hwe/func_process_chief.php +++ b/hwe/func_process_chief.php @@ -655,7 +655,7 @@ function process_62($connect, &$general) { $log[] = "●{$admin['month']}월:아국과 불가침중입니다. 선포 실패. <1>$date"; } elseif($dipcount != 0) { $log[] = "●{$admin['month']}월:상대국이 외교 진행중입니다. 선포 실패. <1>$date"; - } elseif(!isClose($connect, $nation['nation'], $younation['nation'])) { + } elseif(!isClose($nation['nation'], $younation['nation'])) { $log[] = "●{$admin['month']}월:인접하지 않았습니다. 선포 실패. <1>$date"; } elseif($admin['year'] <= $admin['startyear']) { $log[] = "●{$admin['month']}월:초반제한 해제 2년전부터 가능합니다. 선포 실패. <1>$date"; diff --git a/hwe/processing.php b/hwe/processing.php index 78375e88..be502707 100644 --- a/hwe/processing.php +++ b/hwe/processing.php @@ -1712,7 +1712,7 @@ function command_51($connect, $turn, $command) { for($i=1; $i <= $count; $i++) { $nation = MYDB_fetch_array($result); - if($myNation['power'] / $nation['power'] <= 3 || !isClose($connect, $me['nation'], $nation['nation'])) { + if($myNation['power'] / $nation['power'] <= 3 || !isClose($me['nation'], $nation['nation'])) { echo ""; } else { echo ""; @@ -1848,7 +1848,7 @@ function command_53($connect, $turn, $command) { for($i=1; $i <= $count; $i++) { $nation = MYDB_fetch_array($result); - if($myNation['power']+$nation['power'] > $cond1 || $myNation['gennum']+$nation['gennum'] > $cond2 || !isClose($connect, $me['nation'], $nation['nation'])) { + if($myNation['power']+$nation['power'] > $cond1 || $myNation['gennum']+$nation['gennum'] > $cond2 || !isClose($me['nation'], $nation['nation'])) { echo ""; } else { echo "";