부대장 숫자를 '능동적'으로 재 계산

This commit is contained in:
2019-04-21 15:32:36 +09:00
parent 88e3a9852b
commit 45a4ca5298
+40 -30
View File
@@ -997,11 +997,15 @@ function checkSurrender() {
function updateNationState() { function updateNationState() {
$db = DB::db(); $db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env'); $gameStor = KVStorage::getStorage($db, 'game_env');
$connect=$db->get();
$history = array(); $history = array();
$admin = $gameStor->getValues(['year', 'month', 'fiction', 'startyear', 'show_img_level', 'turnterm']); $admin = $gameStor->getValues(['year', 'month', 'fiction', 'startyear', 'show_img_level', 'turnterm']);
$assemblerCnts = [];
foreach($db->queryAllLists('SELECT nation,count(no) FROM general WHERE npc = 5 GROUP BY nation') as [$nationID, $assemblerCnt]){
$assemblerCnts[$nationID] = $assemblerCnt;
};
foreach($db->query('SELECT nation,name,level,tech FROM nation') as $nation) { foreach($db->query('SELECT nation,name,level,tech FROM nation') as $nation) {
//TODO: level이 진관수이소중대특 체계를 벗어날 수 있음 //TODO: level이 진관수이소중대특 체계를 벗어날 수 있음
$citycount = $db->queryFirstField('SELECT count(*) FROM city WHERE nation=%i AND level>=4', $nation['nation']); $citycount = $db->queryFirstField('SELECT count(*) FROM city WHERE nation=%i AND level>=4', $nation['nation']);
@@ -1050,17 +1054,42 @@ function updateNationState() {
break; break;
} }
$db->update('nation', [
'level'=>$nation['level']
], 'nation=%i', $nation['nation']);
$turnRows = [];
foreach(range(getNationChiefLevel($oldLevel) - 1, getNationChiefLevel($nation['level']), -1) as $chiefLevel){
foreach(range(0, GameConst::$maxChiefTurn - 1) as $turnIdx){
$turnRows[] = [
'nation_id'=>$nation['nation'],
'level'=>$chiefLevel,
'turn_idx'=>$turnIdx,
'action'=>'휴식',
'arg'=>null,
];
}
}
$db->insertIgnore('nation_turn', $turnRows);
refreshNationStaticInfo();
}
$assemblerCnt = $assemblerCnt[$nation['nation']]??0;
$maxAssemblerCnt = [
1=>0,
2=>1,
3=>3,
4=>4,
5=>6,
6=>7,
7=>9
][$nationlevel]??0;
if($assemblerCnt < $maxAssemblerCnt){
$lastAssemblerID = $gameStor->assembler_id??0; $lastAssemblerID = $gameStor->assembler_id??0;
for($levelGen = max(1, $oldLevel) + 1; $levelGen <= $nationlevel; $levelGen+=1){
if(in_array($levelGen, [3, 5, 7])){
$genStep = 2;
}
else{
$genStep = 1;
}
while($genStep > 0){ while($assemblerCnt < $maxAssemblerCnt){
$lastAssemblerID += 1; $lastAssemblerID += 1;
$npcObj = new Scenario\NPC( $npcObj = new Scenario\NPC(
999, '부대장'.$lastAssemblerID, null, $nation['nation'], null, 999, '부대장'.$lastAssemblerID, null, $nation['nation'], null,
@@ -1078,31 +1107,12 @@ function updateNationState() {
$troopID = $db->insertId(); $troopID = $db->insertId();
//TODO: 5턴간 집합턴 입력 //TODO: 5턴간 집합턴 입력
$genStep -= 1; $assemblerCnt += 1;
}
}
$gameStor->assembler_id = $lastAssemblerID; $gameStor->assembler_id = $lastAssemblerID;
$turnRows = [];
foreach(range(getNationChiefLevel($oldLevel) - 1, getNationChiefLevel($nation['level']), -1) as $chiefLevel){
foreach(range(0, GameConst::$maxChiefTurn - 1) as $turnIdx){
$turnRows[] = [
'nation_id'=>$nation['nation'],
'level'=>$chiefLevel,
'turn_idx'=>$turnIdx,
'action'=>'휴식',
'arg'=>null,
];
} }
}
$db->insertIgnore('nation_turn', $turnRows);
$db->update('nation', [
'level'=>$nation['level']
], 'nation=%i', $nation['nation']);
refreshNationStaticInfo(); refreshNationStaticInfo();
} }
} }
pushWorldHistory($history, $admin['year'], $admin['month']); pushWorldHistory($history, $admin['year'], $admin['month']);
} }