fix: 이민족 도시 이동 규칙 재작성
- 무한루프일 수 있으므로 그냥 SQL에 NOT IN을 넣자..
This commit is contained in:
@@ -67,15 +67,13 @@ class RaiseInvader extends \sammo\Event\Action
|
|||||||
|
|
||||||
foreach ($db->queryAllLists('SELECT capital, nation from nation WHERE capital in %li', $cities) as $row) {
|
foreach ($db->queryAllLists('SELECT capital, nation from nation WHERE capital in %li', $cities) as $row) {
|
||||||
[$oldCapital, $nation] = $row;
|
[$oldCapital, $nation] = $row;
|
||||||
$capitalCandidates = $db->queryFirstColumn('SELECT city from city WHERE nation = %i AND city != %i', $nation, $oldCapital);
|
$capitalCandidates = $db->queryFirstColumn('SELECT city from city WHERE nation = %i AND city != %i NOT IN %li', $nation, $oldCapital, $cities);
|
||||||
if (!$capitalCandidates) {
|
if (!$capitalCandidates) {
|
||||||
$disabledInvaderCity->add($oldCapital);
|
$disabledInvaderCity->add($oldCapital);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
do {
|
$newCapital = $rng->choice($capitalCandidates);
|
||||||
$newCapital = $rng->choice($capitalCandidates);
|
|
||||||
} while(in_array($newCapital, $cities));
|
|
||||||
|
|
||||||
$db->update('nation', ['capital' => $newCapital], 'nation=%i', $nation);
|
$db->update('nation', ['capital' => $newCapital], 'nation=%i', $nation);
|
||||||
$db->update('general', ['city' => $newCapital], 'nation=%i and city=%i', $nation, $oldCapital);
|
$db->update('general', ['city' => $newCapital], 'nation=%i and city=%i', $nation, $oldCapital);
|
||||||
|
|||||||
Reference in New Issue
Block a user