city의 officer를 general로 이동

This commit is contained in:
2020-04-18 03:57:58 +09:00
parent 5d23032500
commit eab8a3b94e
98 changed files with 680 additions and 889 deletions
+22 -31
View File
@@ -275,7 +275,7 @@ function preUpdateMonthly() {
], 'supply = 0');
//미보급도시 장수 병 훈 사 5%감소
//NOTE: update inner join도 가능하지만, meekrodb 기준으로 깔끔하게.
$unsuppliedCities = $db->query('SELECT city, nation, trust, name, officer4, officer3, officer2 FROM city WHERE supply = 0');
$unsuppliedCities = $db->query('SELECT city, nation, trust, name FROM city WHERE supply = 0');
foreach(Util::arrayGroupBy($unsuppliedCities, 'nation') as $nationID => $cityList){
$cityIDList = Util::squeezeFromArray($cityList, 'city');
$db->update('general', [
@@ -286,37 +286,28 @@ function preUpdateMonthly() {
}
//민심30이하 공백지 처리
$lostCityGenerals = [];
$lostCities = [];
foreach($unsuppliedCities as $unsuppliedCity){
if($unsuppliedCity['trust'] >= 30){
continue;
}
$lostCities[$unsuppliedCity['city']] = $unsuppliedCity;
$lostCityGenerals[$unsuppliedCity['officer4']] = true;
$lostCityGenerals[$unsuppliedCity['officer3']] = true;
$lostCityGenerals[$unsuppliedCity['officer2']] = true;
}
if(key_exists(0, $lostCityGenerals)){
unset($lostCityGenerals[0]);
}
if($lostCityGenerals){
$db->update('general', [
'level'=>1
], 'no IN %li', array_keys($lostCityGenerals));
}
if($lostCities){
$history = [];
foreach($lostCities as $lostCity){
$josaYi = JosaUtil::pick($lostCity['name'], '이');
$logger->pushGlobalHistoryLog("<R><b>【고립】</b></><G><b>{$lostCity['name']}</b></>{$josaYi} 보급이 끊겨 <R>미지배</> 도시가 되었습니다.");
}
$db->update('general', [
'officer_level'=>1,
'officer_city'=>0
], 'officer_city IN %li', array_keys($lostCities));
$db->update('city', [
'nation'=>0,
'officer4'=>0,
'officer3'=>0,
'officer2'=>0,
'officer4set'=>0,
'officer3set'=>0,
'officer2set'=>0,
'conflict'=>'{}',
'term'=>0,
'front'=>0
@@ -562,7 +553,7 @@ function checkWander() {
$admin = $gameStor->getValues(['year', 'month']);
$wanderers = $db->queryFirstColumn('SELECT general.`no` FROM general LEFT JOIN nation ON general.nation = nation.nation WHERE nation.`level` = 0 AND general.`level` = 12');
$wanderers = $db->queryFirstColumn('SELECT general.`no` FROM general LEFT JOIN nation ON general.nation = nation.nation WHERE nation.`level` = 0 AND general.`officer_level` = 12');
foreach(General::createGeneralObjListFromDB($wanderers) as $wanderer){
$wanderCmd = buildGeneralCommandClass('che_해산', $wanderer, $admin);
@@ -597,11 +588,11 @@ function checkMerge() {
$dip = MYDB_fetch_array($dipresult);
// 아국군주
$query = "select no,name,nation from general where nation='{$dip['me']}' and level='12'";
$query = "select no,name,nation from general where nation='{$dip['me']}' and officer_level='12'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
// 상대군주
$query = "select no,name,nation,makenation from general where nation='{$dip['you']}' and level='12'";
$query = "select no,name,nation,makenation from general where nation='{$dip['you']}' and officer_level='12'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$you = MYDB_fetch_array($result);
// 모국
@@ -686,10 +677,10 @@ function checkMerge() {
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$db->delete('nation_turn', 'nation_id=%i', $me['nation']);
// 아국 모든 도시들 상대국 소속으로
$query = "update city set nation='{$you['nation']}',officer4='0',officer3='0',officer2='0',conflict='{}' where nation='{$me['nation']}'";
$query = "update city set nation='{$you['nation']}',conflict='{}' where nation='{$me['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
// 아국 모든 장수들 일반으로 하고 상대국 소속으로, 수도로 이동
$query = "update general set belong=1,level=1,nation='{$you['nation']}' where nation='{$me['nation']}'";
$query = "update general set belong=1,officer_level=1,officer_city=0,nation='{$you['nation']}' where nation='{$me['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
// 공헌도0.9, 명성0.9
//TODO:experience General 객체로 이동
@@ -753,11 +744,11 @@ function checkSurrender() {
$dip = MYDB_fetch_array($dipresult);
// 아국군주
$query = "select no,name,nation from general where nation='{$dip['me']}' and level='12'";
$query = "select no,name,nation from general where nation='{$dip['me']}' and officer_level='12'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$me = MYDB_fetch_array($result);
// 상대군주
$query = "select no,name,nation,makenation from general where nation='{$dip['you']}' and level='12'";
$query = "select no,name,nation,makenation from general where nation='{$dip['you']}' and officer_level='12'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$you = MYDB_fetch_array($result);
// 모국
@@ -845,18 +836,18 @@ function checkSurrender() {
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$db->delete('nation_turn', 'nation_id=%i', $me['nation']);
// 군주가 있는 위치 구함
$query = "select city from general where nation='{$you['nation']}' and level='12'";
$query = "select city from general where nation='{$you['nation']}' and officer_level='12'";
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$king = MYDB_fetch_array($result);
// 아국 모든 도시들 상대국 소속으로
$query = "update city set nation='{$you['nation']}',officer4='0',officer3='0',officer2='0',conflict='{}' where nation='{$me['nation']}'";
$query = "update city set nation='{$you['nation']}',conflict='{}' where nation='{$me['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
// 제의국 모든 장수들 공헌도0.95, 명성0.95
//TODO: experience를 General로
$query = "update general set dedication=dedication*0.95,experience=experience*0.95 where nation='{$you['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
// 아국 모든 장수들 일반으로 하고 상대국 소속으로, 수도로 이동, 공헌도1.1, 명성0.9
$query = "update general set belong=1,level=1,nation='{$you['nation']}',city='{$king['city']}',dedication=dedication*1.1,experience=experience*0.9 where nation='{$me['nation']}'";
$query = "update general set belong=1,officer_level=1,officer_city=0,nation='{$you['nation']}',city='{$king['city']}',dedication=dedication*1.1,experience=experience*0.9 where nation='{$me['nation']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
// 부대도 모두 국가 소속 변경
$query = "update troop set nation='{$you['nation']}' where nation='{$me['nation']}'";
@@ -958,7 +949,7 @@ function updateNationState() {
foreach(Util::range(GameConst::$maxChiefTurn) as $turnIdx){
$turnRows[] = [
'nation_id'=>$nation['nation'],
'level'=>$chiefLevel,
'officer_level'=>$chiefLevel,
'turn_idx'=>$turnIdx,
'action'=>'휴식',
'arg'=>null,
@@ -1285,10 +1276,10 @@ function checkEmperior() {
$chiefs = Util::convertArrayToDict(
$db->query(
'SELECT name,picture,belong,level FROM general WHERE nation=%i AND level >= 5',
'SELECT name,picture,belong,officer_level FROM general WHERE nation=%i AND officer_level >= 5',
$nation['nation']
),
'level'
'officer_level'
);
$oldNation = $db->queryFirstRow('SELECT * FROM nation WHERE nation=%i', $nation['nation']);