diff --git a/hwe/b_myPage.php b/hwe/b_myPage.php
index 374168a4..0b86b8c1 100644
--- a/hwe/b_myPage.php
+++ b/hwe/b_myPage.php
@@ -21,57 +21,48 @@ if($tnmt < 0 || $tnmt > 1){
//로그인 검사
$session = Session::requireGameLogin()->setReadOnly();
$userID = Session::getUserID();
+$generalID = $session->generalID;
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
increaseRefresh("내정보", 1);
-$me = $db->queryFirstRow('SELECT no,npc,mode,tnmt,myset,train,atmos from general WHERE owner = %i', $userID);
+$me = General::createGeneralObjFromDB($generalID);
-
-if ($me['myset'] > 0) {
+$myset = $me->getVar('myset');
+if ($myset > 0) {
$submit = 'submit';
} else {
$submit = 'hidden';
}
-if (($btn == "설정저장" || $detachNPC) && $me['myset'] > 0) {
- if ($me['myset'] > 1) {
+if (($btn == "설정저장" || $detachNPC) && $myset > 0) {
+ if ($myset > 1) {
$submit = 'submit';
} else {
$submit = 'hidden';
}
- if($mode == 0){
- $db->update('general', [
- 'myset'=>$db->sqleval('myset-1'),
- 'mode'=>$mode,
- 'train'=>max(0, $me['train'] - 3),
- 'atmos'=>max(0, $me['atmos'] - 3),
- ], 'owner=%i AND mode!=%i', $userID, $mode);
+ if($mode != $me->getVar('mode')){
+ if($mode == 0){
+ $me->increaseVar('myset', -1);
+ $me->setVar('mode', $mode);
+ $me->increaseVar('train', -3);
+ $me->increaseVar('atmos', -3);
+ }
+ else{
+ $me->increaseVar('myset', -1);
+ $me->setVar('mode', $mode);
+ }
+ $myset -= 1;
}
- else{
- $db->update('general', [
- 'myset'=>$db->sqleval('myset-1'),
- 'mode'=>$mode
- ], 'owner=%i AND mode!=%i', $userID, $mode);
+
+ if($me->getVar('tnmt') != $tnmt){
+ $me->setVar('tnmt', $tnmt);
}
- if($db->affectedRows()){
- $me['myset'] -= 1;
- }
-
- if($me['tnmt'] != $tnmt){
- $db->update('general', [
- 'tnmt'=>$tnmt
- ], 'owner=%i', $userID);
- }
-
- $me['mode'] = $mode;
- $me['tnmt'] = $tnmt;
-
- if($me['npc'] == 1 && $detachNPC){
+ if($me->getVar('npc') == 1 && $detachNPC){
$turnterm = $gameStor->turnterm;
if($turnterm < 10){
@@ -80,13 +71,10 @@ if (($btn == "설정저장" || $detachNPC) && $me['myset'] > 0) {
else{
$targetKillTurn = 60 / $turnterm;
}
- $db->update('general', [
- 'killturn'=>$targetKillTurn
- ], 'owner=%i AND npc=1', $userID);
-
- $me['killturn']=$targetKillTurn;
+ $me->setVar('killturn', $targetKillTurn);
}
}
+$me->applyDB($db);
?>
@@ -113,23 +101,23 @@ if (($btn == "설정저장" || $detachNPC) && $me['myset'] > 0) {
|
-
+
|
휴 가 신 청
@@ -145,10 +133,10 @@ if (($btn == "설정저장" || $detachNPC) && $me['myset'] > 0) {
|
|
- =getGenLogRecent($me['no'], 24)?>
+ =getGenLogRecent($generalID, 24)?>
|
- =getBatLogRecent($me['no'], 24)?>
+ =getBatLogRecent($generalID, 24)?>
|
@@ -157,10 +145,10 @@ if (($btn == "설정저장" || $detachNPC) && $me['myset'] > 0) {
|
- =getGeneralHistoryAll($me['no'])?>
+ =getGeneralHistoryAll($generalID)?>
|
- =getBatResRecent($me['no'], 24)?>
+ =getBatResRecent($generalID, 24)?>
|
diff --git a/hwe/func.php b/hwe/func.php
index 68195d8f..1c9ad8a4 100644
--- a/hwe/func.php
+++ b/hwe/func.php
@@ -744,7 +744,7 @@ function generalInfo($no) {
echo "
| |
- {$general['name']} 【 {$level} | {$call} | {$color}{$injury} 】 ".substr($general['turntime'], 11)." |
+ {$general['name']} 【 {$level} | {$call} | {$color}{$injury} 】 ".substr($general['turntime'], 11, 8)." |
| 통솔 |
diff --git a/hwe/func_command.old.php b/hwe/func_command.old.php
deleted file mode 100644
index 56f205a8..00000000
--- a/hwe/func_command.old.php
+++ /dev/null
@@ -1,605 +0,0 @@
- [$action, $arg]){
- $commandObj = buildGeneralCommandClass($action, $generalObj, [], $arg);
- $turnText = $commandObj->getBrief();
- $result[$turnIdx] = $turnText;
- }
- return $result;
-
- //TODO: 정리가 끝나면 삭제
- $turn = [];
- $turn[0] = $general["turn0"];
-
- if($type >= 1) {
- $turn[1] = $general["turn1"];
- $turn[2] = $general["turn2"];
- $turn[3] = $general["turn3"];
- $turn[4] = $general["turn4"];
- }
- if($type >= 2) {
- $turn[5] = $general["turn5"];
- $turn[6] = $general["turn6"];
- $turn[7] = $general["turn7"];
- $turn[8] = $general["turn8"];
- $turn[9] = $general["turn9"];
- $turn[10] = $general["turn10"];
- $turn[11] = $general["turn11"];
- $turn[12] = $general["turn12"];
- $turn[13] = $general["turn13"];
- $turn[14] = $general["turn14"];
- $turn[15] = $general["turn15"];
- $turn[16] = $general["turn16"];
- $turn[17] = $general["turn17"];
- $turn[18] = $general["turn18"];
- $turn[19] = $general["turn19"];
- $turn[20] = $general["turn20"];
- $turn[21] = $general["turn21"];
- $turn[22] = $general["turn22"];
- $turn[23] = $general["turn23"];
- }
-
- if($type == 0) { $count = 1; }
- elseif($type == 1) { $count = 5; }
- elseif($type == 2) { $count = 24; }
-
- for($i=0; $i < $count; $i++) {
- $command = DecodeCommand($turn[$i]);
-
- switch($command[0]) {
- case 0: $str[$i] = "휴식"; break; //휴식
- case 1: $str[$i] = "농지 개간"; break; //농업
- case 2: $str[$i] = "상업 투자"; break; //상업
- case 3: $str[$i] = "기술 연구"; break; //기술
- case 4: $str[$i] = "주민 선정"; break; //선정
- case 5: $str[$i] = "수비 강화"; break; //수비
- case 6: $str[$i] = "성벽 보수"; break; //성벽
- case 7: $str[$i] = "정착 장려"; break; //정착 장려
- case 8: $str[$i] = "치안 강화"; break; //치안
- case 9: $str[$i] = "물자 조달"; break; //조달
-
- case 11: //징병
- $third = GameUnitConst::byID($command[2])->name;
- $double = $command[1];
- $str[$i] = "【{$third}】 {$double}00명 징병";
- break;
- case 12: //모병
- $third = GameUnitConst::byID($command[2])->name;
- $double = $command[1];
- $str[$i] = "【{$third}】 {$double}00명 모병";
- break;
- case 13: //훈련
- $str[$i] = "훈련";
- break;
- case 14: //사기진작
- $str[$i] = "사기진작";
- break;
- case 15: //전투태세
- $str[$i] = "전투태세";
- break;
- case 16: //전쟁
- $double = $command[1];
- $city = getCity($double, "name");
- $josaRo = JosaUtil::pick($city['name'], '로');
- $str[$i] = "【{$city['name']}】{$josaRo} 출병";
- break;
- case 17: //소집해제
- $str[$i] = "소집 해제";
- break;
-
- case 21: //이동
- $double = $command[1];
- $city = getCity($double, "name");
- $josaRo = JosaUtil::pick($city['name'], '로');
- $str[$i] = "【{$city['name']}】{$josaRo} 이동";
- break;
- case 22: //등용
- $double = $command[1];
-
- $query = "select name from general where no='$double'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $general = MYDB_fetch_array($result);
-
- $josaUl = JosaUtil::pick($general['name'], '을');
- $str[$i] = "【{$general['name']}】{$josaUl} 등용";
- break;
- case 25: //임관
- $double = $command[1];
-
- $nation = getNationStaticInfo($double);
-
- if(!$nation['name']) { $nation['name'] = '????'; }
-
- $josaRo = JosaUtil::pick($nation['name'], '로');
- $str[$i] = "【{$nation['name']}】{$josaRo} 임관";
- break;
- case 26: //집합
- $str[$i] = "집합";
- break;
- case 28: //귀환
- $str[$i] = "담당 도시로 귀환";
- break;
- case 29: //인재탐색
- $str[$i] = "인재 탐색";
- break;
- case 30: //강행
- $double = $command[1];
- $city = getCity($double, "name");
- $josaRo = JosaUtil::pick($city['name'], '로');
- $str[$i] = "【{$city['name']}】{$josaRo} 강행";
- break;
-
- case 31: //첩보
- $double = $command[1];
- $city= getCity($double, "name");
- $str[$i] = "【{$city['name']}】에 첩보 실행";
- break;
- case 32: //화계
- $double = $command[1];
- $city= getCity($double, "name");
- $str[$i] = "【{$city['name']}】에 화계 실행";
- break;
- case 33: //탈취
- $double = $command[1];
- $city= getCity($double, "name");
- $str[$i] = "【{$city['name']}】에 탈취 실행";
- break;
- case 34: //파괴
- $double = $command[1];
- $city= getCity($double, "name");
- $str[$i] = "【{$city['name']}】에 파괴 실행";
- break;
- case 35: //선동
- $double = $command[1];
- $city= getCity($double, "name");
- $str[$i] = "【{$city['name']}】에 선동 실행";
- break;
-
- case 41: //단련
- $str[$i] = "숙련도를 단련";
- break;
- case 42: //견문
- $str[$i] = "견문";
- break;
- case 43: //증여
- $fourth = $command[3];
- $third = $command[2];
- $double = $command[1];
-
- $query = "select name from general where no='$third'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $general = MYDB_fetch_array($result);
-
- if($fourth == 1) { $str[$i] = "【{$general['name']}】에게 금 {$double}00을 증여"; }
- else { $str[$i] = "【{$general['name']}】에게 쌀 {$double}00을 증여"; }
- break;
- case 44: //헌납
- $third = $command[2];
- $double = $command[1];
-
- if($third == 1) { $str[$i] = "금 {$double}00을 헌납"; }
- else { $str[$i] = "쌀 {$double}00을 헌납"; }
- break;
- case 45: //하야
- $str[$i] = "하야";
- break;
- case 46: //건국
- $nationName = $db->queryFirstField('SELECT makenation FROM general WHERE `no`=%i', $general['no'])??'';
-
- $josaUl = JosaUtil::pick($nationName, '을');
- $str[$i] = "【{$nationName}】{$josaUl} 건국";
- break;
- case 47: //방랑
- $str[$i] = "방랑";
- break;
- case 48: //장비 구입
- $double = $command[1];
- if($double == 0) {
- $str[$i] = "무기를 판매";
- } elseif($double == 100) {
- $str[$i] = "서적을 판매";
- } elseif($double == 200) {
- $str[$i] = "명마를 판매";
- } elseif($double == 300) {
- $str[$i] = "도구를 판매";
- } elseif($double < 100) {
- $josaUl = JosaUtil::pick(getItemName($double), '을');
- $str[$i] = "【".getItemName($double)."】{$josaUl} 구입";
- } elseif($double < 200) {
- $josaUl = JosaUtil::pick(getItemName($double-100), '을');
- $str[$i] = "【".getItemName($double-100)."】{$josaUl} 구입";
- } elseif($double < 300) {
- $josaUl = JosaUtil::pick(getItemName($double-200), '을');
- $str[$i] = "【".getItemName($double-200)."】{$josaUl} 구입";
- } elseif($double < 400) {
- $josaUl = JosaUtil::pick(getItemName($double-300), '을');
- $str[$i] = "【".getItemName($double-300)."】{$josaUl} 구입";
- }
- break;
- case 49: //군량 매매
- $third = $command[2];
- $double = $command[1];
-
- if($third == 1) { $str[$i] = "군량 {$double}00을 판매"; }
- else { $str[$i] = "군량 {$double}00을 구입"; }
- break;
- case 50: //요양
- $str[$i] = "요양";
- break;
-
- case 54: //선양
- $double = $command[1];
-
- $query = "select name from general where no='$double'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $general = MYDB_fetch_array($result);
-
- $str[$i] = "【{$general['name']}】에게 선양";
- break;
- case 55: //거병
- $str[$i] = "방랑군 결성";
- break;
- case 56: //해산
- $str[$i] = "방랑군 해산";
- break;
- case 57: //모반 시도
- $str[$i] = "모반 시도";
- break;
-
- default:
- $str[$i] = "????";
- break;
- }
- }
-
- if($font == 1) {
- for($i=0; $i < count($str); $i++) {
- $str[$i] = getFont($str[$i]);
- }
- }
- return $str;
-}
-
-function getNationTurnBrief(General $generalObj, array $turnList) {
- $result = [];
-
- $tmpTurn = new LastTurn();
- foreach($turnList as $turnIdx => [$action, $arg]){
- $commandObj = buildNationCommandClass($action, $generalObj, [], $tmpTurn, $arg);
- $turnText = $commandObj->getBrief();
- $result[$turnIdx] = $turnText;
- }
- return $result;
-
- $turn[0] = $nation["l{$level}turn0"];
- $turn[1] = $nation["l{$level}turn1"];
- $turn[2] = $nation["l{$level}turn2"];
- $turn[3] = $nation["l{$level}turn3"];
- $turn[4] = $nation["l{$level}turn4"];
- $turn[5] = $nation["l{$level}turn5"];
- $turn[6] = $nation["l{$level}turn6"];
- $turn[7] = $nation["l{$level}turn7"];
- $turn[8] = $nation["l{$level}turn8"];
- $turn[9] = $nation["l{$level}turn9"];
- $turn[10] = $nation["l{$level}turn10"];
- $turn[11] = $nation["l{$level}turn11"];
-
- $count = 12;
- for($i=0; $i < $count; $i++) {
- $command = DecodeCommand($turn[$i]);
-
- switch($command[0]) {
- case 99: //휴식
- $str[$i] = "휴식";
- break;
- case 23: //포상
- $fourth = $command[3];
- $third = $command[2];
- $double = (int)$command[1];
-
- $query = "select name from general where no='$third'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $general = MYDB_fetch_array($result);
-
- if($fourth == 1) { $str[$i] = "【{$general['name']}】에게 금 {$double}00 포상"; }
- else { $str[$i] = "【{$general['name']}】에게 쌀 {$double}00 포상"; }
- break;
- case 24: //몰수
- $fourth = $command[3];
- $third = $command[2];
- $double = $command[1];
-
- $query = "select name from general where no='$third'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $general = MYDB_fetch_array($result);
-
- if($fourth == 1) { $str[$i] = "【{$general['name']}】의 금 {$double}00 몰수"; }
- else { $str[$i] = "【{$general['name']}】의 쌀 {$double}00 몰수"; }
- break;
- case 27: //발령
- $third = $command[2];
- $double = $command[1];
-
- $query = "select name from general where no='$third'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $general = MYDB_fetch_array($result);
- $city = getCity($double, "name");
- $josaRo = JosaUtil::pick($city['name'], '로');
- $str[$i] = "【{$general['name']}】【{$city['name']}】{$josaRo} 발령";
- break;
- case 51: //항복권고
- $double = (int)$command[1];
-
- $nation = getNationStaticInfo($double);
-
- $str[$i] = "【{$nation['name']}】에게 항복 권고";
- break;
- case 52: //원조
- $fourth = $command[3];
- $third = $command[2];
- $double = (int)$command[1];
-
- $nation = getNationStaticInfo($double);
-
- $fourth *= 1000;
- $third *= 1000;
- $str[$i] = "【{$nation['name']}】에게 국고 {$third} 병량 {$fourth} 원조";
- break;
- case 53: //통합제의
- $nationName = $db->queryFirstField('SELECT makenation FROM general WHERE `level`=%i AND `nation`=%i', $level, $nation['nation'])??'';
-
- $double = (int)$command[1];
-
- $nation = getNationStaticInfo($double);
- $josaRo = JosaUtil::pick($nationName, '로');
- $str[$i] = "【{$nation['name']}】에 【{$nationName}】{$josaRo} 통합 제의";
- break;
- case 61: //불가침제의
- $third = $command[2];
- $double = (int)$command[1];
-
- $nation = getNationStaticInfo($double);
-
- $str[$i] = "【{$nation['name']}】에 {$third}년 불가침 제의";
- break;
- case 62: //선전 포고
- $double = $command[1];
-
- $nation = getNationStaticInfo($double);
-
- $str[$i] = "【{$nation['name']}】에 선전 포고";
- break;
- case 63: //종전 제의
- $double = $command[1];
-
- $nation = getNationStaticInfo($double);
-
- $str[$i] = "【{$nation['name']}】에 종전 제의";
- break;
- case 64: //파기 제의
- $double = $command[1];
-
- $nation = getNationStaticInfo($double);
-
- $str[$i] = "【{$nation['name']}】에 파기 제의";
- break;
- case 65: //초토
- $double = $command[1];
- $city = getCity($double, "name");
- $josaUl = JosaUtil::pick($city['name'], '을');
- $str[$i] = "【{$city['name']}】{$josaUl} 초토화";
- break;
- case 66: //천도
- $double = $command[1];
- $city = getCity($double, "name");
- $josaRo = JosaUtil::pick($city['name'], '로');
- $str[$i] = "【{$city['name']}】{$josaRo} 천도";
- break;
- case 67: //증축
- $double = $command[1];
- $city = getCity($double, "name");
- $josaUl = JosaUtil::pick($city['name'], '을');
- $str[$i] = "【{$city['name']}】{$josaUl} 증축";
- break;
- case 68: //감축
- $double = $command[1];
- $city = getCity($double, "name");
- $josaUl = JosaUtil::pick($city['name'], '을');
- $str[$i] = "【{$city['name']}】{$josaUl} 감축";
- break;
- case 71: //필사즉생
- $str[$i] = "필사즉생";
- break;
- case 72: //백성동원
- $double = $command[1];
- $city = getCity($double, "name");
- $str[$i] = "【{$city['name']}】에 백성동원";
- break;
- case 73: //수몰
- $double = $command[1];
- $city = getCity($double, "name");
- $josaUl = JosaUtil::pick($city['name'], '을');
- $str[$i] = "【{$city['name']}】{$josaUl} 수몰";
- break;
- case 74: //허보
- $double = $command[1];
- $city = getCity($double, "name");
- $str[$i] = "【{$city['name']}】에 허보";
- break;
- case 75: //피장파장
- $double = $command[1];
-
- $nation = getNationStaticInfo($double);
-
- $str[$i] = "【{$nation['name']}】에 피장파장";
- break;
- case 76: //의병모집
- $str[$i] = "의병모집";
- break;
- case 77: //이호경식
- $double = (int)$command[1];
-
- $nation = getNationStaticInfo($double);
-
- $str[$i] = "【{$nation['name']}】에 이호경식";
- break;
- case 78: //급습
- $double = (int)$command[1];
-
- $nation = getNationStaticInfo($double);
-
- $str[$i] = "【{$nation['name']}】에 급습";
- break;
- case 81: //국기변경
- $double = $command[1];
- $colors = GetNationColors();
- $color = $colors[$double];
-
- $str[$i] = "【국기】를 변경";
- break;
- default:
- $str[$i] = "????";
- break;
- }
- }
-
- for($i=0; $i < count($str); $i++) {
- $str[$i] = getFont($str[$i]);
- }
-
- return $str;
-}
-
-function pushGeneralCommand(int $generalID, int $turnCnt=1){
- if($turnCnt == 0){
- return;
- }
- if($turnCnt < 0){
- pullGeneralCommand($generalID, -$turnCnt);
- }
- if($turnCnt >= GameConst::$maxTurn){
- return;
- }
-
- $db = DB::db();
-
- $db->update('general_turn', [
- 'turn_idx'=>$db->sqleval('turn_idx + %i', $turnCnt)
- ], 'general_id=%i', $generalID);
- $db->update('general_turn', [
- 'turn_idx'=>$db->sqleval('turn_idx - %i', GameConst::$maxTurn),
- 'action'=>'휴식',
- 'arg'=>'{}'
- ], 'general_id=%i AND turn_idx >= %i', $generalID, GameConst::$maxTurn);
-}
-
-function pullGeneralCommand(int $generalID, int $turnCnt=1){
- if($turnCnt == 0){
- return;
- }
- if($turnCnt < 0){
- pushGeneralCommand($generalID, -$turnCnt);
- }
- if($turnCnt >= GameConst::$maxTurn){
- return;
- }
-
- $db = DB::db();
-
- $db->update('general_turn', [
- 'turn_idx'=>$db->sqleval('turn_idx + %i', GameConst::$maxTurn),
- 'action'=>'휴식',
- 'arg'=>'{}'
- ], 'general_id=%i AND turn_idx < %i', $generalID, $turnCnt);
- $db->update('general_turn', [
- 'turn_idx'=>$db->sqleval('turn_idx - %i', $turnCnt)
- ], 'general_id=%i', $generalID);
-}
-
-function pushNationCommand(int $nationID, int $level, int $turnCnt=1){
- if($nationID == 0){
- return;
- }
- if($level < 5){
- return;
- }
- if($turnCnt == 0){
- return;
- }
- if($turnCnt < 0){
- pullNationCommand($nationID, $level, -$turnCnt);
- }
- if($turnCnt >= GameConst::$maxNationTurn){
- return;
- }
-
- $db = DB::db();
-
- $db->update('general_turn', [
- 'turn_idx'=>$db->sqleval('turn_idx + %i', $turnCnt)
- ], 'nation_id=%i AND level=%i', $nationID, $level);
- $db->update('general_turn', [
- 'turn_idx'=>$db->sqleval('turn_idx - %i', GameConst::$maxNationTurn),
- 'action'=>'휴식',
- 'arg'=>'{}'
- ], 'nation_id=%i AND level=%i AND turn_idx >= %i', $nationID, $level, GameConst::$maxNationTurn);
-}
-
-function pullNationCommand(int $nationID, int $level, int $turnCnt=1){
- if($nationID == 0){
- return;
- }
- if($level < 5){
- return;
- }
- if($turnCnt == 0){
- return;
- }
- if($turnCnt < 0){
- pushNationCommand($nationID, $level, -$turnCnt);
- }
- if($turnCnt >= GameConst::$maxNationTurn){
- return;
- }
-
- $db = DB::db();
-
- $db->update('general_turn', [
- 'turn_idx'=>$db->sqleval('turn_idx + %i', GameConst::$maxNationTurn),
- 'action'=>'휴식',
- 'arg'=>'{}'
- ], 'nation_id=%i AND level=%i AND turn_idx < %i', $nationID, $level, $turnCnt);
- $db->update('general_turn', [
- 'turn_idx'=>$db->sqleval('turn_idx - %i', $turnCnt)
- ], 'nation_id=%i AND level=%i', $nationID, $level);
-}
-
-function setGeneralCommand(int $generalID, array $turnList, string $command, ?array $arg = null) {
- if(!$turnList){
- return;
- }
-
- $db = DB::db();
-
- $db->update('general_turn', [
- 'action'=>$command,
- 'arg'=>Json::encode($arg, JSON::EMPTY_ARRAY_IS_DICT)
- ], 'general_id = %i AND turn_idx IN %li', $generalID, $turnList);
-}
-
-function setNationCommand(int $nationID, int $level, array $turnList, string $command, ?array $arg = null) {
- if(!$turnList){
- return;
- }
-
- $db = DB::db();
-
- $db->update('nation_turn', [
- 'action'=>$command,
- 'arg'=>Json::encode($arg, JSON::EMPTY_ARRAY_IS_DICT)
- ], 'nation_id = %i AND level = %i AND turn_idx IN %li', $generalID, $level, $turnList);
-}
diff --git a/hwe/func_process.old.php b/hwe/func_process.old.php
deleted file mode 100644
index 8d1def81..00000000
--- a/hwe/func_process.old.php
+++ /dev/null
@@ -1,2542 +0,0 @@
- 성공 확률, 'fail' => 실패 확률)
- */
-function CriticalRatioDomestic(&$general, $type) {
- $leadership = getGeneralLeadership($general, false, true, true, false);
- $power = getGeneralStrength($general, false, true, true, false);
- $intel = getGeneralIntel($general, false, true, true, false);
-
- $avg = ($leadership+$power+$intel) / 3;
- /*
- * 능력치가 높아질 수록 성공 확률 감소. 실패 확률도 감소
-
- * 무력 내정 기준(지력 내정 방식과 구조 동일)
- 756510(32%/30%), 707010(28%/25%), 657510(23%/20%)
- 106575(23%/20%), 107070(20%/17%), 107565(17%/15%)
- 506040(33%/30%), 505050(43%/40%), 504060(50%/50%)
-
- * 통솔 내정 기준
- 756510(25%/22%), 707010(31%/28%), 657510(38%,35%),
- 505050(50%,50%), 107070(50%,50%)
- */
- switch($type) {
- case 'leadership':
- case 0: $ratio = $avg / $leadership; break;
- case 'power':
- case 1: $ratio = $avg / $power; break;
- case 'intel':
- case 2: $ratio = $avg / $intel; break;
- default:
- throw new MustNotBeReachedException();
- }
- $ratio = min($ratio, 1.2);
-
- $fail = pow($ratio / 1.2, 1.4) - 0.3;
- $success = pow($ratio / 1.2, 1.5) - 0.25;
-
- $fail = min(max($fail, 0), 0.5);
- $success = min(max($success, 0), 0.5);
-
-
- return array(
- 'success'=>$success,
- 'fail'=>$fail
- );
-}
-
-/**
- * 수뇌직 통솔 보너스 계산
- *
- * @param array &$general 장수 정보. 'lbonus' 값에 통솔 보너스가 입력 됨
- * @param int $nationLevel 국가 등급
- *
- * @return int 계산된 $general['lbonus'] 값
- */
-function setLeadershipBonus(&$general, $nationLevel){
- if($general['level'] == 12) {
- $lbonus = $nationLevel * 2;
- } elseif($general['level'] >= 5) {
- $lbonus = $nationLevel;
- } else {
- $lbonus = 0;
- }
- $general['lbonus'] = $lbonus;
- return $lbonus;
-}
-
-function CriticalScore($score, $type) {
- switch($type) {
- case 0:
- $ratio = Util::randF()*0.8 + 2.2; // 2.2~3.0
- break;
- case 1:
- $ratio = Util::randF()*0.2 + 0.2; // 0.2~0.4
- break;
- }
- return Util::round($score * $ratio);
-}
-
-function process_domestic(array $rawGeneral, int $type){
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
-
- $env = $gameStor->getValues(['startyear', 'year', 'month', 'develcost']);
- $general = new General($rawGeneral, null, $env['year'], $env['month']);
-
- //TODO: 최종적으로는 클래스 명 그대로 가야함
- $commandMap = [
- 1=>'Command\che_농지개간',
- 2=>'Command\che_상업투자',
- 3=>'Command\che_기술연구',
- 4=>'Command\che_주민선정',
- 5=>'Command\che_수비강화',
- 6=>'Command\che_성벽보수',
- 7=>'Command\che_정착장려',
- 8=>'Command\che_치안강화',
- 9=>'Command\che_물자조달',
- ];
- $cmdClass = $commandMap[$type]??null;
- if(!$cmdClass){
- throw new \InvalidArgumentException('잘못된 내정 코드');
- }
- $cmdObj = new $cmdClass($general, $env);
-
- if(!$cmdObj->isRunnable()){
- return;
- }
- $cmdObj->run();
-}
-
-function process_1_old(&$general, $type) {
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
- $connect=$db->get();
-
- $log = [];
- $alllog = [];
- $history = [];
- $date = substr($general['turntime'],11,5);
-
- $admin = $gameStor->getValues(['startyear', 'year', 'month', 'develcost']);
-
- if($type == 1) { $dtype = "농지 개간"; $atype = "을"; $btype = "은"; $stype = "agri"; }
- elseif($type == 2) { $dtype = "상업 투자"; $atype = "를"; $btype = "는"; $stype = "comm"; }
-
- $query = "select * from city where city='{$general['city']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $city = MYDB_fetch_array($result);
-
- $nation = getNationStaticInfo($general['nation']);
-
- $lbonus = setLeadershipBonus($general, $nation['level']);
-
- if($general['level'] == 0) {
- $log[] = "●>{$admin['month']}월:재야입니다. $dtype 실패. <1>$date>";
- } elseif($admin['year'] < $admin['startyear']+3 && $nation['level'] == 0) {
- $log[] = "●>{$admin['month']}월:초반제한중 방랑군은 불가능합니다. $dtype 실패. <1>$date>";
- } elseif($city['nation'] != $general['nation'] && $nation['level'] != 0) {
- $log[] = "●>{$admin['month']}월:아국이 아닙니다. $dtype 실패. <1>$date>";
- } elseif($city['supply'] == 0) {
- $log[] = "●>{$admin['month']}월:고립된 도시입니다. $dtype 실패. <1>$date>";
- } elseif($general['gold'] < $admin['develcost']) {
- $log[] = "●>{$admin['month']}월:자금이 모자랍니다. $dtype 실패. <1>$date>";
- } elseif($city["$stype"] >= $city["$stype"."2"]) {
- $log[] = "●>{$admin['month']}월:{$dtype}{$btype} 충분합니다. $dtype 실패. <1>$date>";
- } else {
- // 민심 50 이하이면 50과 같게
- if($city['trust'] < GameConst::$develrate) { $city['trust'] = GameConst::$develrate; }
- $trust = $city['trust'] / 100;
-
- $score = getGeneralIntel($general, true, true, true, false) * $trust;
- $score = $score * (100 + $general['explevel']/5)/100;
- $score = $score * (80 + rand() % 41)/100; // 80 ~ 120%
-
- // 국가보정
- if($nation['type'] == 2 || $nation['type'] == 12) { $score *= 1.1; $admin['develcost'] *= 0.8; }
- if($nation['type'] == 8 || $nation['type'] == 11) { $score *= 0.9; $admin['develcost'] *= 1.2; }
-
- // 군주, 참모, 모사 보정
- if($general['level'] == 12 || $general['level'] == 11 || $general['level'] == 9 || $general['level'] == 7 || $general['level'] == 5) { $score *= 1.05; }
- // 군사 보정
- if($general['level'] == 3 && $general['no'] == $city['gen2']) { $score *= 1.05; }
-
- $rd = Util::randF();
- $r = CriticalRatioDomestic($general, 2);
-
- // 특기보정 : 경작, 상재
- if($type == 1 && $general['special'] == 1) { $r['success'] += 0.1; $score *= 1.1; $admin['develcost'] *= 0.8; }
- if($type == 2 && $general['special'] == 2) { $r['success'] += 0.1; $score *= 1.1; $admin['develcost'] *= 0.8; }
- //민심 반영
- if($city['trust'] < 80) { $r['success'] *= $city['trust'] / 80; }
- //버그방지
- if($score < 1) $score = 1;
-
- if($r['fail'] > $rd) {
- $score = CriticalScore($score, 1);
- $log[] = "●>{$admin['month']}월:{$dtype}{$atype} 실패하여 $score> 상승했습니다. <1>$date>";
- } elseif($r['success'] + $r['fail'] > $rd) {
- $score = CriticalScore($score, 0);
- $log[] = "●>{$admin['month']}월:{$dtype}{$atype} 성공>하여 $score> 상승했습니다. <1>$date>";
- } else {
- $score = Util::round($score);
- $log[] = "●>{$admin['month']}월:{$dtype}{$atype} 하여 $score> 상승했습니다. <1>$date>";
- }
-
- $exp = $score * 0.7;
- $ded = $score * 1.0;
-
- // 성격 보정
- $exp = CharExperience($exp, $general['personal']);
- $ded = CharDedication($ded, $general['personal']);
-
- $score += $city["$stype"];
- if($score > $city["{$stype}2"]) { $score = $city["{$stype}2"]; }
- // 내정 상승
- $query = "update city set {$stype}='$score' where city='{$general['city']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- // 자금 하락, 경험치 상승
- $general['gold'] -= $admin['develcost'];
- $general['intel2']++;
- $query = "update general set resturn='SUCCESS',gold='{$general['gold']}',intel2='{$general['intel2']}',dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-
- $log = checkAbility($general, $log);
- $log = uniqueItem($general, $log);
- }
-
- pushGenLog($general, $log);
-}
-
-function process_3(&$general) {
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
- $connect=$db->get();
-
- $log = [];
- $alllog = [];
- $history = [];
- $date = substr($general['turntime'],11,5);
-
- $admin = $gameStor->getValues(['startyear', 'year', 'month', 'develcost']);
-
- $dtype = "기술 연구";
-
- $query = "select * from city where city='{$general['city']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $city = MYDB_fetch_array($result);
-
- $query = "select level,type,tech from nation where nation='{$general['nation']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $nation = MYDB_fetch_array($result);
-
- $lbonus = setLeadershipBonus($general, $nation['level']);
-
- if($general['level'] == 0) {
- $log[] = "●>{$admin['month']}월:재야입니다. $dtype 실패. <1>$date>";
- } elseif($admin['year'] < $admin['startyear']+3 && $nation['level'] == 0) {
- $log[] = "●>{$admin['month']}월:초반제한중 방랑군은 불가능합니다. $dtype 실패. <1>$date>";
- } elseif($city['nation'] != $general['nation'] && $nation['level'] != 0) {
- $log[] = "●>{$admin['month']}월:아국이 아닙니다. $dtype 실패. <1>$date>";
- } elseif($city['supply'] == 0) {
- $log[] = "●>{$admin['month']}월:고립된 도시입니다. $dtype 실패. <1>$date>";
- } elseif($general['gold'] < $admin['develcost']) {
- $log[] = "●>{$admin['month']}월:자금이 모자랍니다. $dtype 실패. <1>$date>";
- } else {
- $score = getGeneralIntel($general, true, true, true, false);
- $score = $score * (100 + $general['explevel']/5)/100;
- $score = $score * (80 + rand() % 41)/100; // 80 ~ 120%
-
- // 국가보정
- if($nation['type'] == 3 || $nation['type'] == 13) { $score *= 1.1; $admin['develcost'] *= 0.8; }
- if($nation['type'] == 5 || $nation['type'] == 6 || $nation['type'] == 7 || $nation['type'] == 8 || $nation['type'] == 12) { $score *= 0.9; $admin['develcost'] *= 1.2; }
-
- // 군주, 참모, 모사 보정
- if($general['level'] == 12 || $general['level'] == 11 || $general['level'] == 9 || $general['level'] == 7 || $general['level'] == 5) { $score *= 1.05; }
-
- $rd = Util::randF();
- $r = CriticalRatioDomestic($general, 2);
- // 특기보정 : 발명
- if($general['special'] == 3) { $r['success'] += 0.1; $score *= 1.1; $admin['develcost'] *= 0.8; }
- //민심 반영
- if($city['trust'] < 80) { $r['success'] *= $city['trust'] / 80; }
-
- //버그방지
- if($score < 1) $score = 1;
-
- if($r['fail'] > $rd) {
- $score = CriticalScore($score, 1);
- $log[] = "●>{$admin['month']}월:{$dtype}를 실패하여 $score> 상승했습니다. <1>$date>";
- } elseif($r['success'] + $r['fail'] > $rd) {
- $score = CriticalScore($score, 0);
- $log[] = "●>{$admin['month']}월:{$dtype}를 성공>하여 $score> 상승했습니다. <1>$date>";
- } else {
- $score = Util::round($score);
- $log[] = "●>{$admin['month']}월:{$dtype}를 하여 $score> 상승했습니다. <1>$date>";
- }
-
- $exp = $score * 0.7;
- $ded = $score * 1.0;
-
- // 성격 보정
- $exp = CharExperience($exp, $general['personal']);
- $ded = CharDedication($ded, $general['personal']);
-
- // 부드러운 기술 제한
- if(TechLimit($admin['startyear'], $admin['year'], $nation['tech'])) { $score = intdiv($score, 4); }
-
- //장수수 구함
- $query = "select no from general where nation='{$general['nation']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $gencount = MYDB_num_rows($result);
- if($gencount < GameConst::$initialNationGenLimit) $gencount = GameConst::$initialNationGenLimit;
- // 내정 상승
- $query = "update nation set totaltech=totaltech+'$score',tech=totaltech/'$gencount' where nation='{$general['nation']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- // 자금 하락, 경험치 상승 // 공헌도, 명성 상승 = $score * 10
- $general['gold'] -= $admin['develcost'];
-
- $general['intel2']++;
- $query = "update general set resturn='SUCCESS',gold='{$general['gold']}',intel2='{$general['intel2']}',dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-
- $log = checkAbility($general, $log);
- $log = uniqueItem($general, $log);
- }
-
- pushGenLog($general, $log);
-}
-
-function process_4(&$general) {
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
- $connect=$db->get();
-
- $log = [];
- $alllog = [];
- $history = [];
- $date = substr($general['turntime'],11,5);
-
- $admin = $gameStor->getValues(['startyear', 'year', 'month', 'develcost']);
-
- $query = "select * from city where city='{$general['city']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $city = MYDB_fetch_array($result);
-
- $nation = getNationStaticInfo($general['nation']);
-
- $lbonus = setLeadershipBonus($general, $nation['level']);
-
- if($general['level'] == 0) {
- $log[] = "●>{$admin['month']}월:재야입니다. 주민 선정 실패. <1>$date>";
- } elseif($admin['year'] < $admin['startyear']+3 && $nation['level'] == 0) {
- $log[] = "●>{$admin['month']}월:초반제한중 방랑군은 불가능합니다. 주민 선정 실패. <1>$date>";
- } elseif($city['nation'] != $general['nation'] && $nation['level'] != 0) {
- $log[] = "●>{$admin['month']}월:아국이 아닙니다. 주민 선정 실패. <1>$date>";
- } elseif($city['supply'] == 0) {
- $log[] = "●>{$admin['month']}월:고립된 도시입니다. 주민 선정 실패. <1>$date>";
- } elseif($general['rice'] < $admin['develcost']*2) {
- $log[] = "●>{$admin['month']}월:군량이 모자랍니다. 주민 선정 실패. <1>$date>";
- } elseif($city['trust'] >= 100) {
- $log[] = "●>{$admin['month']}월:민심은 충분합니다. 주민 선정 실패. <1>$date>";
- } else {
- $score = getGeneralLeadership($general, true, true, true) / 10;
- $score *= (100 + $general['explevel']/5)/100;
- $score *= (80 + rand() % 41)/100; // 80 ~ 120%
-
- // 국가보정
- if($nation['type'] == 2 || $nation['type'] == 4 || $nation['type'] == 7 || $nation['type'] == 10) { $score *= 1.1; $admin['develcost'] *= 0.8; }
- if($nation['type'] == 1 || $nation['type'] == 3 || $nation['type'] == 9) { $score *= 0.9; $admin['develcost'] *= 1.2; }
-
- // 군주, 참모 보정
- if($general['level'] == 12 || $general['level'] == 11) { $score *= 1.05; }
- // 종사 보정
- if($general['level'] == 2 && $general['no'] == $city['gen3']) { $score *= 1.05; }
-
- $rd = Util::randF();
- $r = CriticalRatioDomestic($general, 0);
- // 특기보정 : 인덕
- if($general['special'] == 20) { $r['success'] += 0.1; $score *= 1.1; $admin['develcost'] *= 0.8; }
-
- //버그방지
- if($score < 1) $score = 1;
-
- if($r['fail'] > $rd) {
- $score = CriticalScore($score, 1);
- $log[] = "●>{$admin['month']}월:선정을 실패하여 민심이 ".round($score, 1)."> 상승했습니다. <1>$date>";
- } elseif($r['success'] + $r['fail'] > $rd) {
- $score = CriticalScore($score, 0);
- $log[] = "●>{$admin['month']}월:선정을 성공>하여 민심이 ".round($score, 1)."> 상승했습니다. <1>$date>";
- } else {
- $log[] = "●>{$admin['month']}월:민심이 ".round($score, 1)."> 상승했습니다. <1>$date>";
- }
-
- $exp = $score * 7;
- $ded = $score * 10;
-
- // 성격 보정
- $exp = CharExperience($exp, $general['personal']);
- $ded = CharDedication($ded, $general['personal']);
-
- $score += $city['trust'];
- if($score > 100) { $score = 100; }
- // 민심 상승
- $query = "update city set trust='$score' where city='{$general['city']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- // 군량 하락 내정보다 2배 지력경험 경험, 공헌 상승
- $general['rice'] -= $admin['develcost'] * 2;
- $general['leadership2']++;
- $query = "update general set resturn='SUCCESS',rice='{$general['rice']}',leadership2='{$general['leadership2']}',dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-
- $log = checkAbility($general, $log);
- $log = uniqueItem($general, $log);
- }
-
- pushGenLog($general, $log);
-}
-
-function process_5(&$general, $type) {
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
- $connect=$db->get();
-
- $log = [];
- $alllog = [];
- $history = [];
- $date = substr($general['turntime'],11,5);
-
- $admin = $gameStor->getValues(['startyear', 'year', 'month', 'develcost']);
-
- if($type == 1) { $dtype = "수비 강화"; $stype = "def"; }
- elseif($type == 2) { $dtype = "성벽 보수"; $stype = "wall"; }
-
- $query = "select * from city where city='{$general['city']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $city = MYDB_fetch_array($result);
-
- $nation = getNationStaticInfo($general['nation']);
-
- $lbonus = setLeadershipBonus($general, $nation['level']);
-
- if($general['level'] == 0) {
- $log[] = "●>{$admin['month']}월:재야입니다. $dtype 실패. <1>$date>";
- } elseif($admin['year'] < $admin['startyear']+3 && $nation['level'] == 0) {
- $log[] = "●>{$admin['month']}월:초반제한중 방랑군은 불가능합니다. $dtype 실패. <1>$date>";
- } elseif($city['nation'] != $general['nation'] && $nation['level'] != 0) {
- $log[] = "●>{$admin['month']}월:아국이 아닙니다. $dtype 실패. <1>$date>";
- } elseif($city['supply'] == 0) {
- $log[] = "●>{$admin['month']}월:고립된 도시입니다. $dtype 실패. <1>$date>";
- } elseif($general['gold'] < $admin['develcost']) {
- $log[] = "●>{$admin['month']}월:자금이 모자랍니다. $dtype 실패. <1>$date>";
- } elseif($city["$stype"] >= $city["$stype"."2"]) {
- $log[] = "●>{$admin['month']}월:{$dtype}는 충분합니다. $dtype 실패. <1>$date>";
- } else {
- // 민심 50 이하이면 50과 같게
- if($city['trust'] < GameConst::$develrate) { $city['trust'] = GameConst::$develrate; }
- $trust = $city['trust'] / 100;
-
- $score = getGeneralStrength($general, true, true, true, false) * $trust;
- $score = $score * (100 + $general['explevel']/5)/100;
- $score = $score * (80 + rand() % 41)/100; // 80 ~ 120%
-
- // 국가보정
- if($nation['type'] == 3 || $nation['type'] == 5 || $nation['type'] == 10 || $nation['type'] == 11) { $score *= 1.1; $admin['develcost'] *= 0.8; }
- if($nation['type'] == 4 || $nation['type'] == 7 || $nation['type'] == 8 || $nation['type'] == 13) { $score *= 0.9; $admin['develcost'] *= 1.2; }
-
- // 군주, 참모, 장군 보정
- if($general['level'] == 12 || $general['level'] == 11 || $general['level'] == 10 || $general['level'] == 8 || $general['level'] == 6) { $score *= 1.05; }
- // 태수 보정
- if($general['level'] == 4 && $general['no'] == $city['gen1']) { $score *= 1.05; }
-
- $rd = Util::randF();
- $r = CriticalRatioDomestic($general, 1);
- // 특기보정 : 수비, 축성
- if($type == 1 && $general['special'] == 11) { $r['success'] += 0.1; $score *= 1.1; $admin['develcost'] *= 0.8; }
- if($type == 2 && $general['special'] == 10) { $r['success'] += 0.1; $score *= 1.1; $admin['develcost'] *= 0.8; }
- //민심 반영
- if($city['trust'] < 80) { $r['success'] *= $city['trust'] / 80; }
-
- //버그방지
- if($score < 1) $score = 1;
-
- if($r['fail'] > $rd) {
- $score = CriticalScore($score, 1);
- $log[] = "●>{$admin['month']}월:{$dtype}를 실패하여 $score> 상승했습니다. <1>$date>";
- } elseif($r['success'] + $r['fail'] > $rd) {
- $score = CriticalScore($score, 0);
- $log[] = "●>{$admin['month']}월:{$dtype}를 성공>하여 $score> 상승했습니다. <1>$date>";
- } else {
- $score = Util::round($score);
- $log[] = "●>{$admin['month']}월:{$dtype}를 하여 $score> 상승했습니다. <1>$date>";
- }
-
- $exp = $score * 0.7;
- $ded = $score * 1.0;
-
- // 성격 보정
- $exp = CharExperience($exp, $general['personal']);
- $ded = CharDedication($ded, $general['personal']);
-
- $score += $city["$stype"];
- if($score > $city["{$stype}2"]) { $score = $city["{$stype}2"]; }
- // 내정 상승
- $query = "update city set {$stype}='$score' where city='{$general['city']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- // 자금 하락, 무력 경험 경험, 공헌 상승
- $general['gold'] -= $admin['develcost'];
- $general['strength2']++;
- $query = "update general set resturn='SUCCESS',gold='{$general['gold']}',strength2='{$general['strength2']}',dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-
- $log = checkAbility($general, $log);
- $log = uniqueItem($general, $log);
- }
-
- pushGenLog($general, $log);
-}
-
-function process_7(&$general) {
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
- $connect=$db->get();
-
- $log = [];
- $alllog = [];
- $history = [];
- $date = substr($general['turntime'],11,5);
-
- $admin = $gameStor->getValues(['startyear', 'year', 'month', 'develcost']);
-
- $query = "select * from city where city='{$general['city']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $city = MYDB_fetch_array($result);
-
- $nation = getNationStaticInfo($general['nation']);
-
- $lbonus = setLeadershipBonus($general, $nation['level']);
-
- if($general['level'] == 0) {
- $log[] = "●>{$admin['month']}월:재야입니다. 정착 장려 실패. <1>$date>";
- } elseif($admin['year'] < $admin['startyear']+3 && $nation['level'] == 0) {
- $log[] = "●>{$admin['month']}월:초반제한중 방랑군은 불가능합니다. 정착 장려 실패. <1>$date>";
- } elseif($city['nation'] != $general['nation'] && $nation['level'] != 0) {
- $log[] = "●>{$admin['month']}월:아국이 아닙니다. 정착 장려 실패. <1>$date>";
- } elseif($city['supply'] == 0) {
- $log[] = "●>{$admin['month']}월:고립된 도시입니다. 정착 장려 실패. <1>$date>";
- } elseif($general['rice'] < $admin['develcost'] * 2) {
- $log[] = "●>{$admin['month']}월:군량이 모자랍니다. 정착 장려 실패. <1>$date>";
- } elseif($city['pop'] >= $city['pop2']) {
- $log[] = "●>{$admin['month']}월:이미 포화상태입니다. 정착 장려 실패. <1>$date>";
- } else {
- $score = getGeneralLeadership($general, true, true, true);
- $score = $score * (100 + $general['explevel']/5)/100;
- $score = $score * (80 + rand() % 41)/100; // 80 ~ 120%
-
- // 국가보정
- if($nation['type'] == 2 || $nation['type'] == 4 || $nation['type'] == 7 || $nation['type'] == 10) { $score *= 1.1; $admin['develcost'] *= 0.8; }
- if($nation['type'] == 1 || $nation['type'] == 3 || $nation['type'] == 9) { $score *= 0.9; $admin['develcost'] *= 1.2; }
-
- // 군주, 참모 보정
- if($general['level'] == 12 || $general['level'] == 11) { $score *= 1.05; }
- // 종사 보정
- if($general['level'] == 2 && $general['no'] == $city['gen3']) { $score *= 1.05; }
-
- $rd = Util::randF();
- $r = CriticalRatioDomestic($general, 0);
- // 특기보정 : 인덕
- if($general['special'] == 20) { $r['success'] += 0.1; $score *= 1.1; $admin['develcost'] *= 0.8; }
-
- //버그방지
- if($score < 1) $score = 1;
-
- if($r['fail'] > $rd) {
- $score = CriticalScore($score, 1);
- $log[] = "●>{$admin['month']}월:장려를 실패하여 주민이 {$score}0>명 증가했습니다. <1>$date>";
- } elseif($r['success'] + $r['fail'] > $rd) {
- $score = CriticalScore($score, 0);
- $log[] = "●>{$admin['month']}월:장려를 성공>하여 주민이 {$score}0>명 증가했습니다. <1>$date>";
- } else {
- $score = Util::round($score);
- $log[] = "●>{$admin['month']}월:주민이 {$score}0>명 증가했습니다. <1>$date>";
- }
-
- $exp = $score * 0.7;
- $ded = $score * 1.0;
-
- // 성격 보정
- $exp = CharExperience($exp, $general['personal']);
- $ded = CharDedication($ded, $general['personal']);
-
- $score = $city['pop'] + ($score * 10);
- if($score > $city['pop2']) { $score = $city['pop2']; }
- // 민심 상승
- $query = "update city set pop='$score' where city='{$general['city']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- // 군량 하락 내정보다 2배 지력경험 경험, 공헌 상승
- $general['rice'] -= $admin['develcost'] * 2;
- $general['leadership2']++;
- $query = "update general set resturn='SUCCESS',rice='{$general['rice']}',leadership2='{$general['leadership2']}',dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-
- $log = checkAbility($general, $log);
- $log = uniqueItem($general, $log);
- }
-
- pushGenLog($general, $log);
-}
-
-function process_8(&$general) {
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
- $connect=$db->get();
-
- $log = [];
- $alllog = [];
- $history = [];
- $date = substr($general['turntime'],11,5);
-
- $admin = $gameStor->getValues(['startyear', 'year', 'month', 'develcost']);
-
- $dtype = "치안"; $stype = "secu";
-
- $query = "select * from city where city='{$general['city']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $city = MYDB_fetch_array($result);
-
- $nation = getNationStaticInfo($general['nation']);
-
- $lbonus = setLeadershipBonus($general, $nation['level']);
-
- if($general['level'] == 0) {
- $log[] = "●>{$admin['month']}월:재야입니다. $dtype 강화 실패. <1>$date>";
- } elseif($admin['year'] < $admin['startyear']+3 && $nation['level'] == 0) {
- $log[] = "●>{$admin['month']}월:초반제한중 방랑군은 불가능합니다. $dtype 강화 실패. <1>$date>";
- } elseif($city['nation'] != $general['nation'] && $nation['level'] != 0) {
- $log[] = "●>{$admin['month']}월:아국이 아닙니다. $dtype 강화 실패. <1>$date>";
- } elseif($city['supply'] == 0) {
- $log[] = "●>{$admin['month']}월:고립된 도시입니다. $dtype 강화 실패. <1>$date>";
- } elseif($general['gold'] < $admin['develcost']) {
- $log[] = "●>{$admin['month']}월:자금이 모자랍니다. $dtype 강화 실패. <1>$date>";
- } elseif($city['secu'] >= $city['secu2']) {
- $log[] = "●>{$admin['month']}월:치안은 충분합니다. $dtype 강화 실패. <1>$date>";
- } else {
- // 민심 50 이하이면 50과 같게
- if($city['trust'] < GameConst::$develrate) { $city['trust'] = GameConst::$develrate; }
- $trust = $city['trust'] / 100;
-
- $score = getGeneralStrength($general, true, true, true, false) * $trust;
- $score = $score * (100 + $general['explevel']/5)/100;
- $score = $score * (80 + rand() % 41)/100; // 80 ~ 120%
-
- // 국가보정
- if($nation['type'] == 1 || $nation['type'] == 4) { $score *= 1.1; $admin['develcost'] *= 0.8; }
- if($nation['type'] == 6 || $nation['type'] == 9) { $score *= 0.9; $admin['develcost'] *= 1.2; }
-
- // 군주, 참모, 장군 보정
- if($general['level'] == 12 || $general['level'] == 11 || $general['level'] == 10 || $general['level'] == 8 || $general['level'] == 6) { $score *= 1.05; }
- // 태수 보정
- if($general['level'] == 4 && $general['no'] == $city['gen1']) { $score *= 1.05; }
-
- $rd = Util::randF();
- $r = CriticalRatioDomestic($general, 1);
- // 특기보정 : 통찰
- if($general['special'] == 12) { $r['success'] += 0.1; $score *= 1.1; $admin['develcost'] *= 0.8; }
- //민심 반영
- if($city['trust'] < 80) { $r['success'] *= $city['trust'] / 80; }
-
- //버그방지
- if($score < 1) $score = 1;
-
- if($r['fail'] > $rd) {
- $score = CriticalScore($score, 1);
- $log[] = "●>{$admin['month']}월:{$dtype}을 실패하여 $score> 강화했습니다. <1>$date>";
- } elseif($r['success'] + $r['fail'] > $rd) {
- $score = CriticalScore($score, 0);
- $log[] = "●>{$admin['month']}월:{$dtype}을 성공>하여 $score> 강화했습니다. <1>$date>";
- } else {
- $score = Util::round($score);
- $log[] = "●>{$admin['month']}월:{$dtype}을 $score> 강화했습니다. <1>$date>";
- }
-
- $exp = $score * 0.7;
- $ded = $score * 1.0;
-
- // 성격 보정
- $exp = CharExperience($exp, $general['personal']);
- $ded = CharDedication($ded, $general['personal']);
-
- $score += $city["$stype"];
- if($score > $city["{$stype}2"]) { $score = $city["{$stype}2"]; }
- // 내정 상승
- $query = "update city set {$stype}='$score' where city='{$general['city']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- // 자금 하락, 무력 경험 경험, 공헌 상승
- $general['gold'] -= $admin['develcost'];
- $general['strength2']++;
- $query = "update general set resturn='SUCCESS',gold='{$general['gold']}',strength2='{$general['strength2']}',dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-
- $log = checkAbility($general, $log);
- $log = uniqueItem($general, $log);
- }
-
- pushGenLog($general, $log);
-}
-
-function process_9(&$general) {
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
- $connect=$db->get();
-
- $log = [];
- $alllog = [];
- $history = [];
- $date = substr($general['turntime'],11,5);
-
- $admin = $gameStor->getValues(['year', 'month', 'develcost']);
-
- $query = "select nation,supply from city where city='{$general['city']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $city = MYDB_fetch_array($result);
-
- $nation = getNationStaticInfo($general['nation']);
-
- $lbonus = setLeadershipBonus($general, $nation['level']);
-
- if($general['level'] == 0) {
- $log[] = "●>{$admin['month']}월:재야입니다. 물자 조달 실패. <1>$date>";
- } elseif($nation['level'] > 0 && $city['nation'] != $general['nation']) {
- $log[] = "●>{$admin['month']}월:아국이 아닙니다. 물자 조달 실패. <1>$date>";
- } elseif($city['supply'] == 0 && $city['nation'] == $general['nation']) {
- $log[] = "●>{$admin['month']}월:고립된 도시입니다. 물자 조달 실패. <1>$date>";
- } else {
- if(rand() % 2 == 0) { $dtype = 0; $stype = "금"; }
- else { $dtype = 1; $stype = "쌀"; }
-
- $score = getGeneralLeadership($general, true, true, true)
- + getGeneralStrength($general, true, true, true)
- + getGeneralIntel($general, true, true, true);
- $score = $score * (100 + $general['explevel']/5)/100;
- $score = $score * (80 + rand() % 41)/100; // 80 ~ 120%
-
- $rd = rand() % 100; // 현재 20%
-
- //버그방지
- if($score < 1) $score = 1;
-
- if(30 > $rd) {
- $score = CriticalScore($score, 1);
- $log[] = "●>{$admin['month']}월:조달을 실패하여 {$stype}을 $score> 조달했습니다. <1>$date>";
- } elseif(40 > $rd) {
- $score = CriticalScore($score, 0);
- $log[] = "●>{$admin['month']}월:조달을 성공>하여 {$stype}을 $score> 조달했습니다. <1>$date>";
- } else {
- $score = Util::round($score);
- $log[] = "●>{$admin['month']}월:{$stype}을 $score> 조달했습니다. <1>$date>";
- }
-
- $exp = $score * 0.7 / 3;
- $ded = $score * 1.0 / 3;
-
- // 성격 보정
- $exp = CharExperience($exp, $general['personal']);
- $ded = CharDedication($ded, $general['personal']);
-
- // 물자 상승
- if($dtype == 0) {
- $query = "update nation set gold=gold+'$score' where nation='{$general['nation']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- } else {
- $query = "update nation set rice=rice+'$score' where nation='{$general['nation']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- }
-
- switch(Util::choiceRandomUsingWeight([$general['leadership'], $general['power'], $general['intel']])) {
- case 0:
- $general['leadership2']++;
- $query = "update general set resturn='SUCCESS',leadership2='{$general['leadership2']}',dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'";
- break;
- case 1:
- $general['strength2']++;
- $query = "update general set resturn='SUCCESS',strength2='{$general['strength2']}',dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'";
- break;
- case 2:
- $general['intel2']++;
- $query = "update general set resturn='SUCCESS',intel2='{$general['intel2']}',dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'";
- break;
- }
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-
- $log = checkAbility($general, $log);
- }
- pushGenLog($general, $log);
-}
-
-function process_11(&$general, $type) {
- if($type == 1){
- $type = '징병';
- }
- else{
- $type = '모병';
- }
-
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
- $date = substr($general['turntime'],11,5);
-
- if($type === '징병') {
- $defaultatmos = GameConst::$defaultAtmosLow;
- $defaulttrain = GameConst::$defaultTrainLow;
- }
- else {
- $defaultatmos = GameConst::$defaultAtmosHigh;
- $defaulttrain = GameConst::$defaultTrainHigh;
- }
-
- [$startyear, $year, $month] = $gameStor->getValuesAsArray(['startyear', 'year', 'month']);
-
- $actLog = new ActionLogger($general['no'], $general['nation'], $year, $month);
-
- $command = DecodeCommand($general['turn0']);
- $crewType = $command[2];
- $rawCrew = $command[1];
-
-
- if($crewType != $general['crewtype']) {
- $general['crew'] = 0;
- $general['train'] = $defaulttrain;
- $general['atmos'] = $defaultatmos;
- }
-
- if($general['crew'] != 0) {
- $dtype = "추가".$type;
- }
- else {
- $dtype = $type;
- }
-
- if(!$general['nation']){
- $actLog->pushGeneralActionLog("재야입니다. $dtype 실패. <1>$date>");
- return;
- }
-
- $city = $db->queryFirstRow('SELECT * FROM city WHERE city = %i', $general['city']);
-
- if($city['nation'] != $general['nation']){
- $actLog->pushGeneralActionLog("아국이 아닙니다. $dtype 실패. <1>$date>");
- return;
- }
-
- $crewTypeObj = GameUnitConst::byID($crewType);
- if($crewTypeObj === null){
- $actLog->pushGeneralActionLog("병종 코드 에러. $type 실패. <1>$date>");
- return;
- }
-
- [$nationLevel, $tech] = $db->queryFirstList('SELECT `level`,tech FROM nation WHERE nation=%i', $general['nation']);
-
- $lbonus = setLeadershipBonus($general, $nationLevel);
-
- //NOTE: 입력 변수는 100명 단위임
- $crew = $rawCrew * 100;
- if($crew + $general['crew'] > getGeneralLeadership($general, true, true, true)*100) {
- $crew = max(0, getGeneralLeadership($general, true, true, true) * 100 - $general['crew']);
- }
-
- if($crew <= 0) {
- $actLog->pushGeneralActionLog("더이상 $dtype 할 수 없습니다. $dtype 실패. <1>$date>");
- return;
- }
-
- $cost = $crewTypeObj->costWithTech($tech, $crew);
- if($type === '모병') {
- $cost *= 2;
- }
- //성격 보정
- $cost = Util::round(CharCost($cost, $general['personal']));
-
- //특기 보정 : 징병, 보병, 궁병, 기병, 귀병, 공성
- if($general['special2'] == 72) { $cost *= 0.5; }
- else if($general['special2'] == 50 && $crewTypeObj->armType == GameUnitConstBase::T_FOOTMAN) { $cost *= 0.9; }
- else if($general['special2'] == 51 && $crewTypeObj->armType == GameUnitConstBase::T_ARCHER) { $cost *= 0.9; }
- else if($general['special2'] == 52 && $crewTypeObj->armType == GameUnitConstBase::T_CAVALRY) { $cost *= 0.9; }
- else if($general['special2'] == 40 && $crewTypeObj->armType == GameUnitConstBase::T_WIZARD) { $cost *= 0.9; }
- else if($general['special2'] == 53 && $crewTypeObj->armType == GameUnitConstBase::T_SIEGE) { $cost *= 0.9; }
-
- if($general['gold'] < $cost){
- $actLog->pushGeneralActionLog("자금이 모자랍니다. $dtype 실패. <1>$date>");
- return;
- }
-
- if($general['rice'] < $crew / 100) {
- $actLog->pushGeneralActionLog("군량이 모자랍니다. $dtype 실패. <1>$date>");
- return;
- }
-
- $ownCities = [];
- $ownRegions = [];
- foreach($db->queryFirstColumn('SELECT city FROM city WHERE nation = %i', $general['nation']) as $ownCity){
- $ownCities[$ownCity] = 1;
- $ownRegions[CityConst::byId($ownCity)->region] = 1;
- }
- $valid = $crewTypeObj->isValid($ownCities, $ownRegions, $year - $startyear, $tech);
-
- if(!$valid) {
- $actLog->pushGeneralActionLog("현재 $dtype 할 수 없는 병종입니다. $dtype 실패. <1>$date>");
- return;
- }
-
- if($city['pop']-30000 < $crew) { // 주민 30000명 이상만 가능
- $actLog->pushGeneralActionLog("주민이 모자랍니다. $dtype 실패. <1>$date>");
- return;
- }
- if($city['trust'] < 20) {
- $actLog->pushGeneralActionLog("민심이 낮아 주민들이 도망갑니다. $dtype 실패. <1>$date>");
- return;
- }
-
- $josaUl = JosaUtil::pick($crewTypeObj->name, '을');
- $actLog->pushGeneralActionLog($crewTypeObj->name."{$josaUl} {$crew}>명 {$dtype}했습니다. <1>$date>");
- $exp = Util::round($crew / 100);
- $ded = Util::round($crew / 100);
- // 숙련도 증가
- addGenDex($general['no'], GameConst::$maxAtmosByCommand, GameConst::$maxTrainByCommand, $crewType, $crew/100);
-
- // 성격 보정
- $exp = CharExperience($exp, $general['personal']);
- $ded = CharDedication($ded, $general['personal']);
-
- $atmos = Util::round(($general['atmos'] * $general['crew'] + $defaultatmos * $crew) / ($general['crew'] + $crew));
- $train = Util::round(($general['train'] * $general['crew'] + $defaulttrain * $crew) / ($general['crew'] + $crew));
- $general['crew'] += $crew;
- $general['gold'] -= $cost;
- // 주민수 감소 // 민심 감소
- if($type === '징병') {
- $city['trust'] -= ($crew / $city['pop'])*100;
- }
- else {
- $city['trust'] -= ($crew / 2 / $city['pop'])*100;
- }
- if($city['trust'] < 0) { $city['trust'] = 0; }
-
- $db->update('city', [
- 'pop'=>$db->sqleval('pop-%i', $crew),
- 'trust'=>$city['trust']
- ], 'city = %i', $general['city']);
-
- // 통솔경험, 병종 변경, 병사수 변경, 훈련치 변경, 사기치 변경, 자금 군량 하락, 공헌도, 명성 상승
- $general['leadership2']++;
- $db->update('general', [
- 'resturn'=>'SUCCESS',
- 'leadership2'=>$general['leadership2'],
- 'crewtype'=>$crewTypeObj->id,
- 'crew'=>$general['crew'],
- 'train'=>$train,
- 'atmos'=>$atmos,
- 'gold'=>$general['gold'],
- 'rice'=>$db->sqleval('rice - %i', Util::round($crew/100)),
- 'dedication'=>$db->sqleval('dedication + %i', $ded),
- 'experience'=>$db->sqleval('experience + %i', $exp)
- ], 'no=%i', $general['no']);
-
- checkAbilityEx($general['no'], $actLog);
- uniqueItemEx($general['no'], $actLog);
- $actLog->pushGeneralActionLog($log, ActionLogger::RAWTEXT);
-}
-
-function process_13(&$general) {
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
- $connect=$db->get();
-
- $log = [];
- $alllog = [];
- $history = [];
- $date = substr($general['turntime'],11,5);
-
- $admin = $gameStor->getValues(['year', 'month']);
-
- $nation = getNationStaticInfo($general['nation']);
-
- $lbonus = setLeadershipBonus($general, $nation['level']);
-
- $query = "select nation,supply from city where city='{$general['city']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $city = MYDB_fetch_array($result);
-
- if($general['level'] == 0) {
- $log[] = "●>{$admin['month']}월:재야입니다. 훈련 실패. <1>$date>";
- } elseif($city['nation'] != $general['nation']) {
- $log[] = "●>{$admin['month']}월:아국이 아닙니다. 훈련 실패. <1>$date>";
- } elseif($general['crew'] == 0) {
- $log[] = "●>{$admin['month']}월:병사가 없습니다. 훈련 실패. <1>$date>";
- } elseif($general['train'] >= GameConst::$maxTrainByCommand) {
- $log[] = "●>{$admin['month']}월:병사들은 이미 정예병사들입니다. <1>$date>";
- } else {
- // 훈련시
- $score = Util::round(getGeneralLeadership($general, true, true, true) * 100 / $general['crew'] * GameConst::$trainDelta);
-
- $log[] = "●>{$admin['month']}월:훈련치가 $score> 상승했습니다. <1>$date>";
- $exp = 100;
- $ded = 70;
- // 숙련도 증가
- addGenDex($general['no'], GameConst::$maxAtmosByCommand, GameConst::$maxTrainByCommand, $general['crewtype'], Util::round($general['crew']/100));
- // 성격 보정
- $exp = CharExperience($exp, $general['personal']);
- $ded = CharDedication($ded, $general['personal']);
-
- // 훈련치 변경
- $score += $general['train'];
- if($score > GameConst::$maxTrainByCommand) { $score = GameConst::$maxTrainByCommand; }
- $query = "update general set train='$score' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- // 사기 약간 감소
- $score = intval($general['atmos'] * GameConst::$atmosSideEffectByTraining);
- if($score < 0 ) { $score = 0; }
- $query = "update general set atmos='$score' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-
- // 경험치 상승 // 공헌도, 명성 상승
- $general['leadership2']++;
- $query = "update general set resturn='SUCCESS',leadership2='{$general['leadership2']}',dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-
- $log = checkAbility($general, $log);
- $log = uniqueItem($general, $log);
- }
-
- pushGenLog($general, $log);
-}
-
-function process_14(&$general) {
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
- $connect=$db->get();
-
- $log = [];
- $alllog = [];
- $history = [];
- $date = substr($general['turntime'],11,5);
-
- $admin = $gameStor->getValues(['year', 'month']);
-
- $nation = getNationStaticInfo($general['nation']);
-
- $lbonus = setLeadershipBonus($general, $nation['level']);
-
- $query = "select nation,supply from city where city='{$general['city']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $city = MYDB_fetch_array($result);
-
- if($general['level'] == 0) {
- $log[] = "●>{$admin['month']}월:재야입니다. 사기진작 실패. <1>$date>";
- } elseif($city['nation'] != $general['nation']) {
- $log[] = "●>{$admin['month']}월:아국이 아닙니다. 사기진작 실패. <1>$date>";
- } elseif($general['crew'] == 0) {
- $log[] = "●>{$admin['month']}월:병사가 없습니다. 사기진작 실패. <1>$date>";
- } elseif($general['gold'] < $general['crew']/100) {
- $log[] = "●>{$admin['month']}월:자금이 모자랍니다. 사기진작 실패. <1>$date>";
- } elseif($general['atmos'] >= GameConst::$maxAtmosByCommand) {
- $log[] = "●>{$admin['month']}월:이미 사기는 하늘을 찌를듯 합니다. <1>$date>";
- } else {
- $score = Util::round(getGeneralLeadership($general, true, true, true)*100 / $general['crew'] * GameConst::$atmosDelta);
- $gold = $general['gold'] - Util::round($general['crew']/100);
-
- $log[] = "●>{$admin['month']}월:사기치가 $score> 상승했습니다. <1>$date>";
- $exp = 100;
- $ded = 70;
- // 숙련도 증가
- addGenDex($general['no'], GameConst::$maxAtmosByCommand, GameConst::$maxTrainByCommand, $general['crewtype'], Util::round($general['crew']/100));
- // 성격 보정
- $exp = CharExperience($exp, $general['personal']);
- $ded = CharDedication($ded, $general['personal']);
-
- // 사기치 변경 // 자금 감소 // 경험치 상승 // 공헌도, 명성 상승
- $score += $general['atmos'];
- if($score > GameConst::$maxAtmosByCommand) { $score = GameConst::$maxAtmosByCommand; }
- $general['leadership2']++;
- $query = "update general set resturn='SUCCESS',atmos='$score',gold='$gold',leadership2='{$general['leadership2']}',dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-
- $log = checkAbility($general, $log);
- $log = uniqueItem($general, $log);
- }
-
- pushGenLog($general, $log);
-}
-
-function process_15(&$general) {
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
- $connect=$db->get();
-
- $log = [];
- $alllog = [];
- $history = [];
- $date = substr($general['turntime'],11,5);
-
- $admin = $gameStor->getValues(['year', 'month']);
-
- $query = "select nation,tech from nation where nation='{$general['nation']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $nation = MYDB_fetch_array($result);
-
- $query = "select nation,supply from city where city='{$general['city']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $city = MYDB_fetch_array($result);
-
- if($general['term']%100 == 15) {
- $term = intdiv($general['term'], 100) + 1;
- $code = $term * 100 + 15;
- } else {
- $term = 1;
- $code = 100 + 15;
- }
-
- $cost = Util::round($general['crew']/100 * 3 * getTechCost($nation['tech']));
-
- if($general['level'] == 0) {
- $log[] = "●>{$admin['month']}월:재야입니다. 전투태세 실패. <1>$date>";
- } elseif($city['nation'] != $general['nation']) {
- $log[] = "●>{$admin['month']}월:아국이 아닙니다. 전투태세 실패. <1>$date>";
-// } elseif($city['supply'] == 0) {
-// $log[] = "●>{$admin['month']}월:고립된 도시입니다. 전투태세 실패. <1>$date>";
- } elseif($general['crew'] == 0) {
- $log[] = "●>{$admin['month']}월:병사가 없습니다. 전투태세 실패. <1>$date>";
- } elseif($general['atmos'] >= 90 && $general['train'] >= 90) {
- $log[] = "●>{$admin['month']}월:이미 병사들은 날쌔고 용맹합니다. <1>$date>";
- } elseif($general['gold'] < $cost) {
- $log[] = "●>{$admin['month']}월:자금이 모자랍니다. 전투태세 실패. <1>$date>";
- } elseif($term < 3) {
- $log[] = "●>{$admin['month']}월:병사들을 열심히 훈련중... ({$term}/3) <1>$date>";
-
- $query = "update general set resturn='ONGOING',term={$code} where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- } else {
- //기술로 가격
- $gold = $general['gold'] - $cost;
-
- $log[] = "●>{$admin['month']}월:전투태세 완료! <1>$date>";
- $exp = 100 * 3;
- $ded = 70 * 3;
- // 숙련도 증가
- addGenDex($general['no'], GameConst::$maxAtmosByCommand, GameConst::$maxTrainByCommand, $general['crewtype'], Util::round($general['crew']/100 * 3));
- // 성격 보정
- $exp = CharExperience($exp, $general['personal']);
- $ded = CharDedication($ded, $general['personal']);
-
- // 훈련,사기치 변경 // 자금 감소 // 경험치 상승 // 공헌도, 명성 상승
- $general['leadership2']+=3;
- $query = "update general set resturn='SUCCESS',term='0',atmos='95',train='95',gold='$gold',leadership2='{$general['leadership2']}',dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-
- $log = checkAbility($general, $log);
- $log = uniqueItem($general, $log);
- }
-
- pushGenLog($general, $log);
-}
-
-function process_16(&$general) {
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
- $connect=$db->get();
-
- $log = [];
- $alllog = [];
- $history = [];
- $date = substr($general['turntime'],11,5);
-
- $admin = $gameStor->getValues(['startyear', 'year', 'month']);
-
- $query = "select nation,war,strategic_cmd_limit,tech from nation where nation='{$general['nation']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $nation = MYDB_fetch_array($result);
-
- $query = "select nation,supply from city where city='{$general['city']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $city = MYDB_fetch_array($result);
-
- $command = DecodeCommand($general['turn0']);
- $destination = $command[1];
-
- $query = "select * from city where city='$destination'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $destcity = MYDB_fetch_array($result);
-
- $query = "select nation,strategic_cmd_limit,tech from nation where nation='{$destcity['nation']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $dnation = MYDB_fetch_array($result);
-
- $query = "select state from diplomacy where me='{$general['nation']}' and you='{$destcity['nation']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $dip = MYDB_fetch_array($result);
-
- if(key_exists($destination, CityConst::byID($general['city'])->path)){
- $nearCity = true;
- }
- else{
- $nearCity = false;
- }
-
- $josaRo = JosaUtil::pick($destcity['name'], '로');
- if($admin['year'] < $admin['startyear']+3) {
- $log[] = "●>{$admin['month']}월:현재 초반 제한중입니다. {$destcity['name']}>{$josaRo} 출병 실패. <1>$date>";
-// } elseif($city['supply'] == 0) {
-// $log[] = "●>{$admin['month']}월:고립된 도시입니다. {$destcity['name']}>{$josaRo} 출병 실패. <1>$date>";
- } elseif(!$nearCity) {
- $log[] = "●>{$admin['month']}월:인접도시가 아닙니다. {$destcity['name']}>{$josaRo} 출병 실패. <1>$date>";
- } elseif($general['level'] == 0) {
- $log[] = "●>{$admin['month']}월:재야입니다. {$destcity['name']}>{$josaRo} 출병 실패. <1>$date>";
- } elseif($general['crew'] <= 0) {
- $log[] = "●>{$admin['month']}월:병사가 없습니다. {$destcity['name']}>{$josaRo} 출병 실패. <1>$date>";
- } elseif($general['rice'] <= Util::round($general['crew']/100)) {
- $log[] = "●>{$admin['month']}월:군량이 모자랍니다. {$destcity['name']}>{$josaRo} 출병 실패. <1>$date>";
- } elseif($dip['state'] != 0) {
- $log[] = "●>{$admin['month']}월:교전중인 국가가 아닙니다. {$destcity['name']}>{$josaRo} 출병 실패. <1>$date>";
- } elseif($general['nation'] != $city['nation']) {
- $log[] = "●>{$admin['month']}월:본국에서만 출병가능합니다. {$destcity['name']}>{$josaRo} 출병 실패. <1>$date>";
- } elseif($nation['war'] == 1) {
- $log[] = "●>{$admin['month']}월:현재 전쟁 금지입니다. {$destcity['name']}>{$josaRo} 출병 실패. <1>$date>";
- } elseif($general['nation'] == $destcity['nation']) {
- $log[] = "●>{$admin['month']}월:본국입니다. {$destcity['name']}>{$josaRo} 출병 실패. <1>$date>";
- pushGenLog($general, $log);
- process_21($general);
- return;
- } else {
- // 전쟁 표시
- $query = "update city set state=43,term=3 where city='{$destcity['city']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- // 숙련도 증가
- addGenDex($general['no'], GameConst::$maxAtmosByCommand, GameConst::$maxTrainByCommand, $general['crewtype'], Util::round($general['crew']/100));
- // 전투 처리
- processWar($general, $destcity);
- $log = uniqueItem($general, $log);
- }
-
- pushGenLog($general, $log);
-}
-
-function process_17(&$general) {
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
- $connect=$db->get();
-
- $log = [];
- $alllog = [];
- $history = [];
- $date = substr($general['turntime'],11,5);
-
- $admin = $gameStor->getValues(['year', 'month']);
-
- if($general['crew'] == 0) {
- $log[] = "●>{$admin['month']}월:병사가 없습니다. 소집해제 실패. <1>$date>";
- } else {
- // 주민으로 돌아감
- $query = "update city set pop=pop+'{$general['crew']}' where city='{$general['city']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-
- $query = "update general set crew='0' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-
- $log[0] = "●>{$admin['month']}월:병사들을 소집해제>하였습니다. <1>$date>";
-
- // 경험, 공헌 상승
- $exp = 70;
- $ded = 100;
-
- // 성격 보정
- $exp = CharExperience($exp, $general['personal']);
- $ded = CharDedication($ded, $general['personal']);
-
- $query = "update general set resturn='SUCCESS',dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-
- $log = checkAbility($general, $log);
- }
- pushGenLog($general, $log);
-}
-
-function process_21(&$general) {
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
- $connect=$db->get();
-
- $log = [];
- $alllog = [];
- $history = [];
- $date = substr($general['turntime'],11,5);
-
-
- $db = DB::db();
- $admin = $gameStor->getValues(['year', 'month', 'develcost']);
- $city = CityConst::byID($general['city']);
- $command = DecodeCommand($general['turn0']);
- $destination = $command[1];
- $destCity = CityConst::byID($destination);
-
-
- $josaRo = JosaUtil::pick($destCity->name, '로');
- if(!key_exists($destCity->id, $city->path)) {
- $log[] = "●>{$admin['month']}월:인접도시가 아닙니다. {$destCity->name}>{$josaRo} 이동 실패. <1>$date>";
- } elseif($general['gold'] < $admin['develcost']) {
- $log[] = "●>{$admin['month']}월:자금이 부족합니다. {$destCity->name}>{$josaRo} 이동 실패. <1>$date>";
- } else {
- $log[] = "●>{$admin['month']}월:{$destCity->name}>{$josaRo} 이동했습니다. <1>$date>";
- $exp = 50;
-
- // 성격 보정
- $exp = CharExperience($exp, $general['personal']);
-
- // 이동, 경험치 상승, 명성 상승, 사기 감소
- $general['leadership2']++;
- $db->update('general',[
- 'resturn'=>'SUCCESS',
- 'gold'=>$db->sqleval('gold - %i',$admin['develcost']),
- 'city'=>$destCity->id,
- 'atmos'=>$db->sqleval('atmos*0.95'),
- 'leadership2'=>$general['leadership2'],
- 'experience'=>$db->sqleval('experience + %i',$exp)
- ], 'no = %i', $general['no']);
-
- if($general['level'] == 12) {
- $nation = getNationStaticInfo($general['nation']);
-
- if($nation['level'] == 0) {
-
- $db->update('general', [
- 'city'=>$destCity->id
- ], 'nation = %i', $general['nation']);
-
- $genlog = ["●>방랑군 세력이 {$destCity->name}>{$josaRo} 이동했습니다."];
- foreach($db->query('SELECT `no` FROM general WHERE nation=%i and `level`<12', $general['nation']) as $follower){
- pushGenLog($follower, $genlog);
- }
- }
- }
-
- $log = checkAbility($general, $log);
- }
- pushGenLog($general, $log);
-}
-
-function process_26(&$general) {
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
- $connect=$db->get();
-
- $log = [];
- $alllog = [];
- $history = [];
- $date = substr($general['turntime'],11,5);
-
- $troop = getTroop($general['troop']);
-
- $admin = $gameStor->getValues(['year', 'month']);
-
- $query = "select nation,name,supply from city where city='{$general['city']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $city = MYDB_fetch_array($result);
-
- $query = "select no,name,nation,city from general where troop='{$general['troop']}' and no!='{$general['no']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $gencount = MYDB_num_rows($result);
-
- if($general['nation'] != $city['nation']) {
- $log[] = "●>{$admin['month']}월:아국이 아닙니다. 집합 실패. <1>$date>";
- } elseif($city['supply'] == 0) {
- $log[] = "●>{$admin['month']}월:고립된 도시입니다. 집합 실패. <1>$date>";
- } elseif($general['no'] != $troop['no']) {
- $log[] = "●>{$admin['month']}월:부대장이 아닙니다. 집합 실패. <1>$date>";
- } elseif($gencount == 0) {
- $log[] = "●>{$admin['month']}월:집합 가능한 부대원이 없습니다. 집합 실패. <1>$date>";
- } else {
- $log[] = "●>{$admin['month']}월:{$city['name']}>에서 집합을 실시했습니다. <1>$date>";
- $exp = 70;
- $ded = 100;
-
- // 성격 보정
- $exp = CharExperience($exp, $general['personal']);
- $ded = CharDedication($ded, $general['personal']);
-
- //부대원에게 로그 전달
- $josaRo = JosaUtil::pick($city['name'], '로');
- $genlog = ["●>{$troop['name']}>의 부대원들은 {$city['name']}>{$josaRo} 집합되었습니다."];
-
- for($i=0; $i < $gencount; $i++) {
- $troopgen = MYDB_fetch_array($result);
- if($general['city'] != $troopgen['city']) {
- pushGenLog($troopgen, $genlog);
- }
- }
-
- // 같은 부대원 모두 집합
- $query = "update general set city='{$general['city']}' where troop='{$general['troop']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- // 경험치 명성 공헌 상승
- $general['leadership2']++;
- $query = "update general set resturn='SUCCESS',leadership2='{$general['leadership2']}',dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-
- $log = checkAbility($general, $log);
- $log = uniqueItem($general, $log);
- }
-
- pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']);
- pushGenLog($general, $log);
-}
-
-function process_28(&$general) {
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
- $connect=$db->get();
-
- $log = [];
- $alllog = [];
- $history = [];
- $youlog = [];
-
- $date = substr($general['turntime'],11,5);
-
- $admin = $gameStor->getValues(['year', 'month']);
-
- $nation = getNationStaticInfo($general['nation']);
-
- if($nation['level'] == 0) {
- $log[] = "●>{$admin['month']}월:방랑군입니다. 귀환 실패. <1>$date>";
- } elseif($general['level'] == 0) {
- $log[] = "●>{$admin['month']}월:재야입니다. 귀환 실패. <1>$date>";
- } elseif(($general['level'] == 1 || $general['level'] >= 5) && $general['city'] == $nation['capital']) {
- $log[] = "●>{$admin['month']}월:이미 수도입니다. 귀환 실패. <1>$date>";
- } else {
- if($general['level'] == 2) {
- $query = "select city,name from city where gen3='{$general['no']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $city = MYDB_fetch_array($result);
- } elseif($general['level'] == 3) {
- $query = "select city,name from city where gen2='{$general['no']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $city = MYDB_fetch_array($result);
- } elseif($general['level'] == 4) {
- $query = "select city,name from city where gen1='{$general['no']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $city = MYDB_fetch_array($result);
- } else {
- $query = "select city,name from city where city='{$nation['capital']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $city = MYDB_fetch_array($result);
- }
-
- $josaRo = JosaUtil::pick($city['name'], '로');
- $log[] = "●>{$admin['month']}월:{$city['name']}>{$josaRo} 귀환했습니다. <1>$date>";
- $exp = 70;
- $ded = 100;
-
- // 성격 보정
- $exp = CharExperience($exp, $general['personal']);
- $ded = CharDedication($ded, $general['personal']);
-
- // 귀환
- $query = "update general set city='{$city['city']}' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-
- // 경험치 상승 // 명성,공헌 상승
- $general['leadership2']++;
- $query = "update general set resturn='SUCCESS',leadership2='{$general['leadership2']}',experience=experience+'$exp',dedication=dedication+'$ded' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-
- $log = checkAbility($general, $log);
- }
-
- pushGenLog($general, $log);
- //pushGenLog($you, $youlog);
-}
-
-function process_30(&$general) {
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
- $connect=$db->get();
-
- $log = [];
- $alllog = [];
- $history = [];
- $date = substr($general['turntime'],11,5);
-
- $admin = $gameStor->getValues(['year', 'month', 'develcost']);
-
- $query = "select path from city where city='{$general['city']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $city = MYDB_fetch_array($result);
-
- $dist = searchDistance($general['city'], 3, false);
- $command = DecodeCommand($general['turn0']);
- $destination = $command[1];
-
- $query = "select name from city where city='$destination'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $destcity = MYDB_fetch_array($result);
-
- $cost = $admin['develcost'] * 5;
-
- $josaRo = JosaUtil::pick($destcity['name'], '로');
- if($destination == $general['city']){
- $log[] = "●>{$admin['month']}월:같은 도시입니다. {$destcity['name']}>{$josaRo} 강행 실패. <1>$date>";
- } elseif(!key_exists($destination, $dist)) {
- $log[] = "●>{$admin['month']}월:거리가 멉니다. {$destcity['name']}>{$josaRo} 강행 실패. <1>$date>";
- } elseif($general['gold'] < $cost) {
- $log[] = "●>{$admin['month']}월:자금이 부족합니다. {$destcity['name']}>{$josaRo} 강행 실패. <1>$date>";
- } else {
- $log[] = "●>{$admin['month']}월:{$destcity['name']}>{$josaRo} 강행했습니다. <1>$date>";
- $exp = 100;
-
- // 성격 보정
- $exp = CharExperience($exp, $general['personal']);
-
- // 이동, 경험치 상승, 명성 상승, 병력/사기/훈련 감소
- $general['leadership2']++;
- $query = "update general set resturn='SUCCESS',gold=gold-'$cost',city='$destination',crew=crew*0.95,atmos=atmos*0.9,train=train*0.95,leadership2='{$general['leadership2']}',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-
- if($general['level'] == 12) {
- $nation = getNationStaticInfo($general['nation']);
-
- if($nation['level'] == 0) {
- $query = "update general set city='$destination' where nation='{$general['nation']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-
- $query = "select no,name from general where nation='{$general['nation']}' and level<'12'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $gencount = MYDB_num_rows($result);
- $genlog = ["●>방랑군 세력이 {$destcity['name']}>{$josaRo} 강행했습니다."];
- for($j=0; $j < $gencount; $j++) {
- $gen = MYDB_fetch_array($result);
- pushGenLog($gen, $genlog);
- }
- }
- }
-
- $log = checkAbility($general, $log);
- }
- pushGenLog($general, $log);
-}
-
-function process_31(&$general) {
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
- $connect=$db->get();
-
- $log = [];
- $alllog = [];
- $history = [];
- $date = substr($general['turntime'],11,5);
- $msg = [];
-
- $admin = $gameStor->getValues(['year', 'month', 'develcost']);
-
- $dist = searchDistance($general['city'], 2, false);
- $command = DecodeCommand($general['turn0']);
- $destination = $command[1];
-
- $query = "select * from city where city='$destination'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $city = MYDB_fetch_array($result);
-
- if(!$city) {
- $log[] = "●>{$admin['month']}월:없는 도시입니다. 첩보 실패. <1>$date>";
- } elseif($general['gold'] < $admin['develcost']*3) {
- $log[] = "●>{$admin['month']}월:자금이 모자랍니다. {$city['name']}>에 첩보 실패. <1>$date>";
- } elseif($general['rice'] < $admin['develcost']*3) {
- $log[] = "●>{$admin['month']}월:군량이 모자랍니다. {$city['name']}>에 첩보 실패. <1>$date>";
- } elseif($general['nation'] == $city['nation']) {
- $log[] = "●>{$admin['month']}월:아국입니다. {$city['name']}>에 첩보 실패. <1>$date>";
-// } elseif(!key_exists($destination, $dist)) {
-// $log[] = "●>{$admin['month']}월:너무 멉니다. {$city['name']}>에 첩보 실패. <1>$date>";
- } else {
- $query = "select crew,crewtype from general where city='$destination' and nation='{$city['nation']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $gencount = MYDB_num_rows($result);
- $crew = 0;
- $typecount = [];
- for($i=0; $i < $gencount; $i++) {
- $gen = MYDB_fetch_array($result);
- if($gen['crew'] != 0) {
- if(!key_exists($gen['crewtype'], $typecount)){
- $typecount[$gen['crewtype']] = 1;
- }
- else{
- $typecount[$gen['crewtype']]+=1;
- }
-
- $crew += $gen['crew'];
- }
- }
- if(!key_exists($destination, $dist)) {
- $josaUl = JosaUtil::pick($city['name'], '을');
- $alllog[] = "●>{$admin['month']}월:누군가가 {$city['name']}>{$josaUl} 살피는 것 같습니다.";
- $log[] = "●>{$admin['month']}월:{$city['name']}>의 소문만 들을 수 있었습니다. <1>$date>";
- $log[] = "【{$city['name']}>】주민:{$city['pop']}, 민심:".round($city['trust'], 1).", 장수:$gencount, 병력:$crew";
- } elseif($dist[$destination] == 2) {
- $josaUl = JosaUtil::pick($city['name'], '을');
- $alllog[] = "●>{$admin['month']}월:누군가가 {$city['name']}>{$josaUl} 살피는 것 같습니다.";
- $log[] = "●>{$admin['month']}월:{$city['name']}>의 어느정도 정보를 얻었습니다. <1>$date>";
- $log[] = "【첩보>】농업:{$city['agri']}, 상업:{$city['comm']}, 치안:{$city['secu']}, 수비:{$city['def']}, 성벽:{$city['wall']}";
- $log[] = "【{$city['name']}>】주민:{$city['pop']}, 민심:".round($city['trust'], 1).", 장수:$gencount, 병력:$crew";
- } else {
- $josaUl = JosaUtil::pick($city['name'], '을');
- $alllog[] = "●>{$admin['month']}월:누군가가 {$city['name']}>{$josaUl} 살피는 것 같습니다.";
- $log[] = "●>{$admin['month']}월:{$city['name']}>의 많은 정보를 얻었습니다. <1>$date>";
- $msg[] = "【병종>】";
-
- foreach($typecount as $crewtype=>$cnt){
- $crewtypeText = mb_substr(GameUnitConst::byID($crewtype)->name, 0, 2);
- $msg[] = "{$crewtypeText}:{$cnt}";
- }
-
- $log[] = join(' ', $msg);
- $msg = [];
-
- $log[] = "【첩보>】농업:{$city['agri']}, 상업:{$city['comm']}, 치안:{$city['secu']}, 수비:{$city['def']}, 성벽:{$city['wall']}";
- $log[] = "【{$city['name']}>】주민:{$city['pop']}, 민심:".round($city['trust'], 1).", 장수:$gencount, 병력:$crew";
-
- if($general['nation'] != 0 && $city['nation'] != 0) {
- $query = "select name,tech from nation where nation='{$city['nation']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $yourTech = MYDB_fetch_array($result);
-
- $query = "select tech from nation where nation='{$general['nation']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $myTech = MYDB_fetch_array($result);
-
- $diff = $yourTech['tech'] - $myTech['tech']; // 차이
- if($diff >= 1000) { $log[] = "【{$yourTech['name']}】아국대비기술:↑>압도"; }
- elseif($diff >= 250) { $log[] = "【{$yourTech['name']}】아국대비기술:▲>우위"; }
- elseif($diff >= -250) { $log[] = "【{$yourTech['name']}】아국대비기술:↕>대등"; }
- elseif($diff >= -1000) { $log[] = "【{$yourTech['name']}】아국대비기술:▼>열위"; }
- else { $log[] = "【{$yourTech['name']}】아국대비기술:↓>미미"; }
- }
- }
-
- // 자금 하락 // 경험치 상승 // 공헌도, 명성 상승
- $exp = rand() % 100 + 1;
- $ded = rand() % 70 + 1;
-
- // 성격 보정
- $exp = CharExperience($exp, $general['personal']);
- $ded = CharDedication($ded, $general['personal']);
-
- $general['leadership2']++;
- $general['gold'] -= $admin['develcost']*3;
- $general['rice'] -= $admin['develcost']*3;
- $query = "update general set resturn='SUCCESS',gold='{$general['gold']}',rice='{$general['rice']}',leadership2='{$general['leadership2']}',dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-
-
-
- $rawSpy = $db->queryFirstField('SELECT spy FROM nation WHERE nation = %i', $general['nation']);
-
- if($rawSpy == ''){
- $spyInfo = [];
- }
- else if(strpos($rawSpy, '|') !== false || is_numeric($rawSpy)){
- //TODO: 0.8 버전 이후에는 삭제할 것. 이후 버전은 json으로 변경됨.
- $spyInfo = [];
- foreach(explode('|', $rawSpy) as $value){
- $value = intval($value);
- $cityNo = intdiv($value, 10);
- $remainMonth = $value % 10;
- $spyInfo[$cityNo] = $remainMonth;
- }
- }
- else{
- $spyInfo = Json::decode($rawSpy);
- }
-
- $spyInfo[$destination] = 3;
-
- $db->update('nation', [
- 'spy'=>Json::encode($spyInfo, Json::EMPTY_ARRAY_IS_DICT)
- ], 'nation=%i', $general['nation']);
-
- $log = checkAbility($general, $log);
- }
- pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']);
- pushGenLog($general, $log);
-}
-
-function process_41(&$general) {
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
- $connect=$db->get();
-
- $log = [];
- $alllog = [];
- $history = [];
- $date = substr($general['turntime'],11,5);
-
- $admin = $gameStor->getValues(['year', 'month', 'develcost']);
-
- $ratio = rand() % 100;
- $exp = $general['crew'] / 400;
- $crewexp = $general['crew'] * $general['train'] * $general['atmos'] / 20 / 10000;
- // 랜덤치
- $exp = Util::round($exp * (80 + rand() % 41)/100); // 80 ~ 120%
- $crewexp = Util::round($crewexp * (80 + rand() % 41)/100); // 80 ~ 120%
-
- // 성격 보정
- $exp = CharExperience($exp, $general['personal']);
- $ratio = CharCritical($ratio, $general['personal']);
-
- if($general['nation'] == 0) {
- $log[] = "●>{$admin['month']}월:재야입니다. 단련 실패. <1>$date>";
- } elseif($general['gold'] < $admin['develcost']) {
- $log[] = "●>{$admin['month']}월:자금이 모자랍니다. 단련 실패. <1>$date>";
- } elseif($general['rice'] < $admin['develcost']) {
- $log[] = "●>{$admin['month']}월:군량이 모자랍니다. 단련 실패. <1>$date>";
- } elseif($general['train'] < 40) {
- $log[] = "●>{$admin['month']}월:훈련이 너무 낮습니다. 단련 실패. <1>$date>";
- } elseif($general['atmos'] < 40) {
- $log[] = "●>{$admin['month']}월:사기가 너무 낮습니다. 단련 실패. <1>$date>";
- } elseif($crewexp == 0) {
- $log[] = "●>{$admin['month']}월:병사가 모자랍니다. 단련 실패. <1>$date>";
- } else {
- $crewstr = GameUnitConst::allType()[GameUnitConst::byID($general['crewtype'])->armType];
-
- if($ratio < 33) {
- // 숙련도 증가
- addGenDex($general['no'], GameConst::$maxAtmosByCommand, GameConst::$maxTrainByCommand, $general['crewtype'], $crewexp);
- $log[] = "●>{$admin['month']}월:$crewstr 숙련도 향상이 지지부진했습니다. <1>$date>";
- } elseif($ratio < 66) {
- $exp = $exp * 2;
- // 숙련도 증가
- addGenDex($general['no'], GameConst::$maxAtmosByCommand, GameConst::$maxTrainByCommand, $general['crewtype'], $crewexp * 2);
- $log[] = "●>{$admin['month']}월:$crewstr 숙련도가 향상되었습니다. <1>$date>";
- } else {
- $exp = $exp * 3;
- // 숙련도 증가
- addGenDex($general['no'], GameConst::$maxAtmosByCommand, GameConst::$maxTrainByCommand, $general['crewtype'], $crewexp * 3);
- $log[] = "●>{$admin['month']}월:$crewstr 숙련도가 일취월장>했습니다. <1>$date>";
- }
-
- // 경험치 상승 // 명성 상승
- $query = "update general set resturn='SUCCESS',gold=gold-'{$admin['develcost']}',rice=rice-'{$admin['develcost']}',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- }
- pushGenLog($general, $log);
-}
-
-function process_42(&$general) {
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
- $connect=$db->get();
-
- $log = [];
- $alllog = [];
- $history = [];
- $date = substr($general['turntime'],11,5);
-
- $admin = $gameStor->getValues(['year', 'month']);
-
- $type = rand() % 27 + 1;
- $exp = 30;
- $ded = 0;
-
- // 성격 보정
- $exp = CharExperience($exp, $general['personal']);
- $ded = CharDedication($ded, $general['personal']);
-
- $exp2 = $exp * 2;
-
- switch($type) {
- case 1:
- $log[] = "●>{$admin['month']}월:지나가는 행인에게서 금을 300> 받았습니다. <1>$date>";
- // 자금 상승 // 명성 상승
- $query = "update general set resturn='SUCCESS',gold=gold+300,experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 2:
- $log[] = "●>{$admin['month']}월:지나가는 행인에게서 쌀을 300> 받았습니다. <1>$date>";
- // 군량 상승 // 명성 상승
- $query = "update general set resturn='SUCCESS',rice=rice+300,experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 3:
- $log[] = "●>{$admin['month']}월:어느 명사와 설전을 벌여 멋지게 이겼습니다. <1>$date>";
- // 경험치 상승 // 명성 상승
- $general['intel2'] += 2;
- $query = "update general set resturn='SUCCESS',intel2='{$general['intel2']}',experience=experience+'$exp2' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 4:
- $log[] = "●>{$admin['month']}월:명사와 설전을 벌였으나 망신만 당했습니다. <1>$date>";
- // 명성 상승
- $query = "update general set resturn='SUCCESS',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 5:
- $log[] = "●>{$admin['month']}월:동네 장사와 힘겨루기를 하여 멋지게 이겼습니다. <1>$date>";
- // 경험치 상승 // 명성 상승
- $general['strength2'] += 2;
- $query = "update general set resturn='SUCCESS',strength2='{$general['strength2']}',experience=experience+'$exp2' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 6:
- $log[] = "●>{$admin['month']}월:동네 장사와 힘겨루기를 했지만 망신만 당했습니다. <1>$date>";
- // 명성 상승
- $query = "update general set resturn='SUCCESS',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 7:
- $log[] = "●>{$admin['month']}월:산적과 싸워 금 300>을 빼앗았습니다. <1>$date>";
- // 자금 상승 // 경험치 상승 // 명성 상승
- $general['strength2'] += 2;
- $query = "update general set resturn='SUCCESS',gold=gold+300,strength2='{$general['strength2']}',experience=experience+'$exp2' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 8:
- $log[] = "●>{$admin['month']}월:산적을 만나 금 200>을 빼앗겼습니다. <1>$date>";
- $general['gold'] -= 200;
- if($general['gold'] <= 0) { $general['gold'] = 0; }
- // 자금 하락 // 경험 상승
- $query = "update general set resturn='SUCCESS',gold='{$general['gold']}',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 9:
- $log[] = "●>{$admin['month']}월:호랑이를 잡아 고기 300>을 얻었습니다. <1>$date>";
- // 군량 상승 // 경험치 상승
- $general['strength2'] += 2;
- $query = "update general set resturn='SUCCESS',rice=rice+300,strength2='{$general['strength2']}',experience=experience+'$exp2' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 10:
- $log[] = "●>{$admin['month']}월:호랑이에게 물려 다쳤습니다. <1>$date>";
- // 경험치 하락 // 명성 상승
- $injury = rand() % 10 + 10;
- $general['strength2']--;
- $query = "update general set resturn='SUCCESS',injury=injury+'$injury',strength2='{$general['strength2']}',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 11:
- $log[] = "●>{$admin['month']}월:곰을 잡아 고기 300>을 얻었습니다. <1>$date>";
- // 군량 상승 // 경험치 상승 // 명성 상승
- $general['strength2'] += 2;
- $query = "update general set resturn='SUCCESS',rice=rice+300,strength2='{$general['strength2']}',experience=experience+'$exp2' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 12:
- $log[] = "●>{$admin['month']}월:곰에게 할퀴어 다쳤습니다. <1>$date>";
- // 경험치 하락 // 명성 상승
- $injury = rand() % 10 + 10;
- $general['strength2']--;
- $query = "update general set resturn='SUCCESS',injury=injury+'$injury',strength2='{$general['strength2']}',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 13:
- $log[] = "●>{$admin['month']}월:주점에서 사람들과 어울려 술을 마셨습니다. <1>$date>";
- // 명성 상승
- $query = "update general set resturn='SUCCESS',experience=experience+'$exp2' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 14:
- $log[] = "●>{$admin['month']}월:위기에 빠진 사람을 구해주었습니다. <1>$date>";
- // 명성 상승
- $query = "update general set resturn='SUCCESS',experience=experience+'$exp2' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 15:
- $log[] = "●>{$admin['month']}월:위기에 빠진 사람을 구해주다가 다쳤습니다. <1>$date>";
- // 경험치 하락 // 명성 상승
- $injury = rand() % 10 + 10;
- $general['strength2']--;
- $query = "update general set resturn='SUCCESS',injury=injury+'$injury',strength2='{$general['strength2']}',experience=experience+'$exp2' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 16:
- $log[] = "●>{$admin['month']}월:돈을 빌려주었다가 이자 300>을 받았습니다. <1>$date>";
- // 경험치 상승 // 명성 상승
- $general['intel2']++;
- $query = "update general set resturn='SUCCESS',gold=gold+300,intel2='{$general['intel2']}',experience=experience+'$exp2' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 17:
- $log[] = "●>{$admin['month']}월:돈을 200> 빌려주었다가 떼어먹혔습니다. <1>$date>";
- $general['gold'] -= 200;
- if($general['gold'] <= 0) { $general['gold'] = 0; }
- // 명성 상승
- $query = "update general set resturn='SUCCESS',gold='{$general['gold']}',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 18:
- $log[] = "●>{$admin['month']}월:쌀을 빌려주었다가 이자 300>을 받았습니다. <1>$date>";
- // 경험치 상승 // 명성 상승
- $general['intel2']++;
- $query = "update general set resturn='SUCCESS',rice=rice+300,intel2='{$general['intel2']}',experience=experience+'$exp2' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 19:
- $log[] = "●>{$admin['month']}월:쌀을 200> 빌려주었다가 떼어먹혔습니다. <1>$date>";
- $general['rice'] -= 200;
- if($general['rice'] <= 0) { $general['rice'] = 0; }
- // 명성 상승
- $query = "update general set resturn='SUCCESS',rice='{$general['rice']}',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 20:
- $log[] = "●>{$admin['month']}월:거리에서 글 모르는 아이들을 모아 글을 가르쳤습니다. <1>$date>";
- // 경험치 상승 // 명성 상승
- $general['intel2'] += 2;
- $query = "update general set resturn='SUCCESS',intel2='{$general['intel2']}',experience=experience+'$exp2' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 21:
- $log[] = "●>{$admin['month']}월:백성들에게 현인의 가르침을 설파했습니다. <1>$date>";
- // 경험치 상승 // 명성 상승
- $general['leadership2'] += 2;
- $query = "update general set resturn='SUCCESS',leadership2='{$general['leadership2']}',experience=experience+'$exp2' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 22:
- $log[] = "●>{$admin['month']}월:어느 집의 무너진 울타리를 고쳐주었습니다. <1>$date>";
- // 경험치 상승 // 명성 상승
- $general['strength2'] += 2;
- $query = "update general set resturn='SUCCESS',strength2='{$general['strength2']}',experience=experience+'$exp2' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 23:
- $log[] = "●>{$admin['month']}월:어느 집의 도망친 가축을 되찾아 주었습니다. <1>$date>";
- // 경험치 상승 // 명성 상승
- $general['leadership2'] += 2;
- $query = "update general set resturn='SUCCESS',leadership2='{$general['leadership2']}',experience=experience+'$exp2' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 24:
- $log[] = "●>{$admin['month']}월:호랑이에게 물려 크게 다쳤습니다. <1>$date>";
- // 경험치 하락 // 명성 상승
- $injury = rand() % 30 + 20;
- $general['strength2']--;
- $query = "update general set resturn='SUCCESS',injury=injury+'$injury',strength2='{$general['strength2']}',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 25:
- $log[] = "●>{$admin['month']}월:곰에게 할퀴어 크게 다쳤습니다. <1>$date>";
- // 경험치 하락 // 명성 상승
- $injury = rand() % 30 + 20;
- $general['strength2']--;
- $query = "update general set resturn='SUCCESS',injury=injury+'$injury',strength2='{$general['strength2']}',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- case 26:
- $log[] = "●>{$admin['month']}월:위기에 빠진 사람을 구하다가 죽을뻔 했습니다. <1>$date>";
- // 경험치 하락 // 명성 상승
- $injury = rand() % 50 + 30;
- $general['strength2']--;
- $query = "update general set resturn='SUCCESS',injury=injury+'$injury',strength2='{$general['strength2']}',experience=experience+'$exp2' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- default:
- $log[] = "●>{$admin['month']}월:아무일도 일어나지 않았습니다. <1>$date>";
- // 명성 상승
- $query = "update general set resturn='SUCCESS',experience=experience+'$exp' where no='{$general['no']}'";
- MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- break;
- }
-
- $log = checkAbility($general, $log);
- pushGenLog($general, $log);
-}
-
-function process_43(&$general) {
- $db = DB::db();
- $gameStor = KVStorage::getStorage($db, 'game_env');
- $connect=$db->get();
-
- $genlog = [];
- $log = [];
- $alllog = [];
- $history = [];
- $date = substr($general['turntime'],11,5);
-
- $admin = $gameStor->getValues(['year', 'month']);
-
- $command = DecodeCommand($general['turn0']);
- $what = $command[3];
- $who = $command[2];
- $amount = $command[1];
- $amount *= 100; // 100~10000까지
-
- if($amount > 10000) { $amount = 10000; }
- if($amount < 100) { $amount = 100; }
- if($what == 1) { $dtype = "금"; }
- elseif($what == 2) { $dtype = "쌀"; }
- else { $what = 2; $dtype = "쌀"; }
-
- $query = "select nation,supply from city where city='{$general['city']}'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $city = MYDB_fetch_array($result);
-
- $query = "select no,name,nation,gold,rice from general where no='$who'";
- $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
- $gen = MYDB_fetch_array($result);
-
- if($what == 1 && $general['gold'] < $amount) { $amount = $general['gold']; }
- if($what == 2 && $general['rice'] < $amount) { $amount = $general['rice']; }
-
- if(!$gen) {
- $log[] = "●>{$admin['month']}월:없는 장수입니다. 증여 실패. <1>$date>";
- } elseif($what == 1 && $general['gold'] <= 0) {
- $log[] = "●>{$admin['month']}월:자금이 없습니다. 증여 실패. <1>$date>";
- } elseif($what == 2 && $general['rice'] <= 0) {
- $log[] = "●>{$admin['month']}월:군량이 없습니다. 증여 실패. <1>$date>";
- } elseif($general['level'] == 0) {
- $log[] = "●>{$admin['month']}월:재야는 불가능합니다. 증여 실패. <1>$date>";
- } elseif($general['nation'] != $city['nation']) {
- $log[] = "●>{$admin['month']}월:아국이 아닙니다. 증여 실패. <1>$date>";
- } elseif($general['nation'] != $gen['nation']) {
- $log[] = "●>{$admin['month']}월:아국 장수가 아닙니다. 증여 실패. <1>$date>";
- } elseif($city['supply'] == 0) {
- $log[] = "●>{$admin['month']}월:고립된 도시입니다. 증여 실패. <1>$date>";
- } else {
- $genlog[] = "●>{$admin['month']}월: