fix: 이민족 발동 시 수도가 이성이라 수도를 옮겼는데 다시 이성이 되는 경우 해결 (#250)

Reviewed-on: https://storage.hided.net/gitea/devsam/core/pulls/250
This commit was merged in pull request #250.
This commit is contained in:
2024-02-29 10:17:52 +09:00
+6 -2
View File
@@ -67,12 +67,16 @@ class RaiseInvader extends \sammo\Event\Action
foreach ($db->queryAllLists('SELECT capital, nation from nation WHERE capital in %li', $cities) as $row) {
[$oldCapital, $nation] = $row;
$capitalCandidates = $db->queryFirstColumn('SELECT from city WHERE nation = %i AND city != %i', $nation, $oldCapital);
$capitalCandidates = $db->queryFirstColumn('SELECT city from city WHERE nation = %i AND city != %i', $nation, $oldCapital);
if (!$capitalCandidates) {
$disabledInvaderCity->add($oldCapital);
continue;
}
$newCapital = $rng->choice($capitalCandidates);
do {
$newCapital = $rng->choice($capitalCandidates);
} while(in_array($newCapital, $cities);
$db->update('nation', ['capital' => $newCapital], 'nation=%i', $nation);
$db->update('general', ['city' => $newCapital], 'nation=%i and city=%i', $nation, $oldCapital);
}