game, misc: 작위 상승 메시지 변경

This commit is contained in:
2022-09-01 02:49:20 +09:00
parent 006ca76922
commit 88c78ec892
+54 -33
View File
@@ -554,32 +554,39 @@ function updateNationState()
$startYear = $admin['startyear']; $startYear = $admin['startyear'];
$assemblerCnts = []; $assemblerCnts = [];
$nationCityCounts = [];
foreach($db->queryAllLists('SELECT nation, count(*) FROM city WHERE LEVEL>=4 GROUP BY nation') as [$nationID, $cityCnt]){
$nationCityCounts[$nationID] = $cityCnt;
}
foreach ($db->queryAllLists('SELECT nation,count(no) FROM general WHERE npc = 5 GROUP BY nation') as [$nationID, $assemblerCnt]) { foreach ($db->queryAllLists('SELECT nation,count(no) FROM general WHERE npc = 5 GROUP BY nation') as [$nationID, $assemblerCnt]) {
$assemblerCnts[$nationID] = $assemblerCnt; $assemblerCnts[$nationID] = $assemblerCnt;
}; };
$nationLevelByCityCnt = [
0, //방랑군
1, //호족
2, //군벌
5, //주자사
8, //주목
11, //공
16, //왕
21, //황제
];
foreach ($db->query('SELECT nation,name,level,tech,aux FROM nation') as $nation) { foreach ($db->query('SELECT nation,name,level,tech,aux FROM nation') as $nation) {
//TODO: level이 진관수이소중대특 체계를 벗어날 수 있음 //TODO: level이 진관수이소중대특 체계를 벗어날 수 있음
$nationID = $nation['nation']; $nationID = $nation['nation'];
$citycount = $db->queryFirstField('SELECT count(*) FROM city WHERE nation=%i AND level>=4', $nationID); $cityCnt = $nationCityCounts[$nationID] ?? 0;
/** @var int */
if ($citycount == 0) { $nationlevel = 0;
$nationlevel = 0; // 방랑군 foreach($nationLevelByCityCnt as $cmpNationLevel => $cmpCityCnt){
} elseif ($citycount == 1) { if($cityCnt < $cmpCityCnt){
$nationlevel = 1; // 호족 break;
} elseif ($citycount <= 4) { }
$nationlevel = 2; // 군벌 $nationlevel = $cmpNationLevel;
} elseif ($citycount <= 7) {
$nationlevel = 3; // 주자사
} elseif ($citycount <= 10) {
$nationlevel = 4; // 주목
} elseif ($citycount <= 15) {
$nationlevel = 5; // 공
} elseif ($citycount <= 20) {
$nationlevel = 6; // 왕
} else {
$nationlevel = 7; // 황제
} }
if ($nationlevel > $nation['level']) { if ($nationlevel > $nation['level']) {
@@ -593,33 +600,47 @@ function updateNationState()
'rice' => $db->sqleval('rice + %i', $nationlevel * 1000), 'rice' => $db->sqleval('rice + %i', $nationlevel * 1000),
]; ];
$nationName = $nation['name'];
$lordName = $db->queryFirstField('SELECT name FROM general WHERE nation = %i AND officer_level = 12', $nationID);
$oldNationLevelText = getNationLevel($oldLevel);
$nationLevelText = getNationLevel($nationlevel);
$logger = new ActionLogger(0, $nationID, $year, $month, false);
$josaYi = JosaUtil::pick($lordName, '이');
switch ($nationlevel) { switch ($nationlevel) {
case 7: case 7: //황제
$josaUl = JosaUtil::pick(getNationLevel($nationlevel), ''); $josaRo = JosaUtil::pick($nationLevelText, '');
$history[] = "<C>●</>{$year}{$month}월:<Y><b>【작위】</b></><D><b>{$nation['name']}</b></>의 군주가 <Y>" . getNationLevel($nationlevel) . "</>{$josaUl} 자칭하였습니다."; $logger->pushGlobalHistoryLog("<Y><b>【작위】</b></><D><b>{$nationName}</b></> {$oldNationLevelText} <Y>{$lordName}</>{$josaYi} <C>{$nationLevelText}</>{$josaRo} 옹립되었습니다.");
pushNationHistoryLog($nation['nation'], ["<C>●</>{$year}{$month}월:<D><b>{$nation['name']}</b></>의 군주가 <Y>" . getNationLevel($nationlevel) . "</>{$josaUl} 자칭"]); $logger->pushNationalHistoryLog("<D><b>{$nationName}</b></> {$oldNationLevelText} <Y>{$lordName}</>{$josaYi} <C>{$nationLevelText}</>{$josaRo} 옹립");
$auxVal = Json::decode($nation['aux']); $auxVal = Json::decode($nation['aux']);
$auxVal['can_국기변경'] = 1; $auxVal['can_국기변경'] = 1;
$auxVal['can_국호변경'] = 1; $auxVal['can_국호변경'] = 1;
$updateVals['aux'] = Json::encode($auxVal); $updateVals['aux'] = Json::encode($auxVal);
break; break;
case 6: case 6: //왕
$history[] = "<C>●</>{$year}{$month}월:<Y><b>【작위】</b></><D><b>{$nation['name']}</b></>의 군주가 <Y>" . getNationLevel($nationlevel) . "</>에 등극하였습니다."; $josaRo = JosaUtil::pick($nationLevelText, '로');
pushNationHistoryLog($nation['nation'], ["<C>●</>{$year}{$month}월:<D><b>{$nation['name']}</b></>의 군주가 <Y>" . getNationLevel($nationlevel) . "</>에 등극"]); $logger->pushGlobalHistoryLog("<Y><b>【작위】</b></><D><b>{$nationName}</b></>의 <Y>{$lordName}</>{$josaYi} <C>$nationLevelText</>{$josaRo} 책봉되었습니다.");
$logger->pushNationalHistoryLog("<D><b>{$nationName}</b></>의 <Y>{$lordName}</>{$josaYi} <C>$nationLevelText</>{$josaRo} 책봉");
break; break;
case 5: case 5: //공
case 4: case 4: //주목
case 3: case 3: //주자사
$history[] = "<C>●</>{$year}{$month}월:<Y><b>【작위】</b></><D><b>{$nation['name']}</b></>의 군주가 <Y>" . getNationLevel($nationlevel) . "</>에 임명되었습니다."; $josaRo = JosaUtil::pick($nationLevelText, '로');
pushNationHistoryLog($nation['nation'], ["<C>●</>{$year}{$month}월:<D><b>{$nation['name']}</b></>의 군주가 <Y>" . getNationLevel($nationlevel) . "</>에 임명됨"]); $logger->pushGlobalHistoryLog("<Y><b>【작위】</b></><D><b>{$nationName}</b></>의 <Y>{$lordName}</>{$josaYi} <C>$nationLevelText</>{$josaRo} 임명되었습니다.");
$logger->pushNationalHistoryLog("<D><b>{$nationName}</b></>의 <Y>{$lordName}</>{$josaYi} <C>$nationLevelText</>{$josaRo} 임명됨");
break; break;
case 2: case 2: //군벌
$history[] = "<C>●</>{$year}{$month}월:<Y><b>【작위】</b></><D><b>{$nation['name']}</b></>의 군주가 독립하여 <Y>" . getNationLevel($nationlevel) . "</>로 나섰습니다."; $josaRa = JosaUtil::pick($nationName, '라');
pushNationHistoryLog($nation['nation'], ["<C>●</>{$year}{$month}월:<D><b>{$nation['name']}</b></>의 군주가 <Y>" . getNationLevel($nationlevel) . "</>로 나서다"]); $josaRo = JosaUtil::pick($nationLevelText, '로');
$logger->pushGlobalHistoryLog("<Y><b>【작위】</b></><Y>{$lordName}</>{$josaYi} 독립하여 <D><b>{$nationName}</b></>{$josaRa}는 <C>$nationLevelText</>{$josaRo} 나섰습니다.");
$logger->pushNationalHistoryLog("<Y>{$lordName}</>{$josaYi} 독립하여 <D><b>{$nationName}</b></>{$josaRa}는 <C>$nationLevelText</>{$josaRo} 나서다");
break; break;
} }
$db->update('nation', $updateVals, 'nation=%i', $nation['nation']); $db->update('nation', $updateVals, 'nation=%i', $nation['nation']);
$logger->flush();
$turnRows = []; $turnRows = [];
foreach (Util::range(getNationChiefLevel($nation['level']), 12) as $chiefLevel) { foreach (Util::range(getNationChiefLevel($nation['level']), 12) as $chiefLevel) {