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) { @@ -157,10 +145,10 @@ if (($btn == "설정저장" || $detachNPC) && $me['myset'] > 0) {
- +
토너먼트 【 - >수동참여 - >자동참여 + getVar('tnmt')==0?"checked":""; ?>>수동참여 + getVar('tnmt')==1?"checked":""; ?>>자동참여 】
개막직전 남는자리가 있을경우 랜덤하게 참여합니다.

수비 【 - >◎(훈사80) - >○(훈사60) - >× + getVar('mode')==2?"checked":""; ?>>◎(훈사80) + getVar('mode')==1?"checked":""; ?>>○(훈사60) + getVar('mode')==0?"checked":""; ?>>× 】

name=btn style=background-color:;color:white;width:160px;height:30px;font-size:13px; value=설정저장>
- ∞설정저장은 이달중 회 남았습니다.

+ ∞설정저장은 이달중 회 남았습니다.

휴 가 신 청


@@ -145,10 +133,10 @@ if (($btn == "설정저장" || $detachNPC) && $me['myset'] > 0) {
- + - +
- + - +
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 " - + 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']}월:{$general['name']}에게서 $dtype $amount을 증여 받았습니다."; - $log[] = "●{$admin['month']}월:{$gen['name']}에게 $dtype $amount을 증여했습니다. <1>$date"; - - if($what == 1) { - $gen['gold'] += $amount; - $query = "update general set gold='{$gen['gold']}' where no='$who'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - $general['gold'] -= $amount; - $query = "update general set gold='{$general['gold']}' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } elseif($what == 2) { - $gen['rice'] += $amount; - $query = "update general set rice='{$gen['rice']}' where no='$who'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - $general['rice'] -= $amount; - $query = "update general set rice='{$general['rice']}' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - - $exp = 70; - $ded = 100; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - // 경험치 상승 // 공헌도, 명성 상승 - $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); - } - pushGenLog($general, $log); - pushGenLog($gen, $genlog); -} - -function process_44(&$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 name,gold,rice 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']); - $what = $command[2]; - $amount = $command[1]; - $amount *= 100; // 100~10000까지 - - if($amount > 10000) { $amount = 10000; } - if($amount < 100) { $amount = 100; } - if($what == 1) { - $dtype = "금"; - if($general['gold'] < $amount) { $amount = $general['gold']; } - } elseif($what == 2) { - $dtype = "쌀"; - if($general['rice'] < $amount) { $amount = $general['rice']; } - } else { - $what = 2; - $dtype = "쌀"; - if($general['rice'] < $amount) { $amount = $general['rice']; } - } - - if($general['nation'] == 0) { - $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['nation'] != $city['nation']) { - $log[] = "●{$admin['month']}월:아국이 아닙니다. 헌납 실패. <1>$date"; - } elseif($city['supply'] == 0) { - $log[] = "●{$admin['month']}월:고립된 도시입니다. 헌납 실패. <1>$date"; - } else { -// $alllog[] = "●{$admin['month']}월:{$nation['name']}에서 장수들이 재산을 헌납 하고 있습니다."; - $log[] = "●{$admin['month']}월: $dtype $amount을 헌납했습니다. <1>$date"; - - if($what == 1) { - $general['gold'] -= $amount; - $query = "update general set gold='{$general['gold']}' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - $nation['gold'] += $amount; - $query = "update nation set gold='{$nation['gold']}' where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } elseif($what == 2) { - $general['rice'] -= $amount; - $query = "update general set rice='{$general['rice']}' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - $nation['rice'] += $amount; - $query = "update nation set rice='{$nation['rice']}' where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - - $exp = 70; - $ded = 100; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - // 경험치 상승 // 공헌도, 명성 상승 - $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); - } - pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushGenLog($general, $log); -} - - -function process_48(&$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']); - - $city = getCity($general['city']); - - $command = DecodeCommand($general['turn0']); - $type = $command[1]; - - if($type < 100) { $isweap = 0; } - elseif($type < 200) { $type -= 100; $isweap = 1; } - elseif($type < 300) { $type -= 200; $isweap = 2; } - elseif($type < 400) { $type -= 300; $isweap = 3; } - else { $type = 7; } - - if($isweap == 3) { $cost = getItemCost($type); } - else { $cost = getItemCost($type); } - - if($city['trade'] == 0) { - $log[] = "●{$admin['month']}월:도시에 상인이 없습니다. 장비매매 실패. <1>$date"; - } elseif($city['secu']/1000 < $type) { - $log[] = "●{$admin['month']}월:이 도시에서는 구할 수 없었습니다. 구입 실패. <1>$date"; - } elseif($type > 6 || $type < 0) { - $log[] = "●{$admin['month']}월:구입할 수 있는 물건이 아닙니다. 구입 실패. <1>$date"; - } elseif($general['gold'] < $cost && $type != 0) { - $log[] = "●{$admin['month']}월:자금이 모자랍니다. 구입 실패. <1>$date"; - } elseif($general['weapon'] == 0 && $isweap == 0 && $type == 0) { - $log[] = "●{$admin['month']}월:무기가 없습니다. 판매 실패. <1>$date"; - } elseif($general['book'] == 0 && $isweap == 1 && $type == 0) { - $log[] = "●{$admin['month']}월:서적이 없습니다. 판매 실패. <1>$date"; - } elseif($general['horse'] == 0 && $isweap == 2 && $type == 0) { - $log[] = "●{$admin['month']}월:명마가 없습니다. 판매 실패. <1>$date"; - } elseif($general['item'] == 0 && $isweap == 3 && $type == 0) { - $log[] = "●{$admin['month']}월:도구가 없습니다. 판매 실패. <1>$date"; - } else { - if($isweap == 0) { - if($type != 0) { - $josaUl = JosaUtil::pick(getItemName($type), '을'); - $log[] = "●{$admin['month']}월:".getItemName($type)."{$josaUl} 구입했습니다. <1>$date"; - $query = "update general set resturn='SUCCESS',weapon='$type',gold=gold-'$cost' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } else { - $cost = Util::round(getItemCost($general['weapon']) / 2); - $josaUl = JosaUtil::pick(getItemName($general['weapon']), '을'); - $log[] = "●{$admin['month']}월:".getItemName($general['weapon'])."{$josaUl} 판매했습니다. <1>$date"; - $query = "update general set resturn='SUCCESS',weapon='0',gold=gold+'$cost' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - } elseif($isweap == 1) { - if($type != 0) { - $josaUl = JosaUtil::pick(getItemName($type), '을'); - $log[] = "●{$admin['month']}월:".getItemName($type)."{$josaUl} 구입했습니다. <1>$date"; - $query = "update general set resturn='SUCCESS',book='$type',gold=gold-'$cost' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } else { - $cost = Util::round(getItemCost($general['book']) / 2); - $josaUl = JosaUtil::pick(getItemName($general['book']), '을'); - $log[] = "●{$admin['month']}월:".getItemName($general['book'])."{$josaUl} 판매했습니다. <1>$date"; - $query = "update general set resturn='SUCCESS',book='0',gold=gold+'$cost' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - } elseif($isweap == 2) { - if($type != 0) { - $josaUl = JosaUtil::pick(getItemName($type), '을'); - $log[] = "●{$admin['month']}월:".getItemName($type)."{$josaUl} 구입했습니다. <1>$date"; - $query = "update general set resturn='SUCCESS',horse='$type',gold=gold-'$cost' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } else { - $cost = Util::round(getItemCost($general['horse']) / 2); - $josaUl = JosaUtil::pick(getItemName($general['horse']), '을'); - $log[] = "●{$admin['month']}월:".getItemName($general['horse'])."{$josaUl} 판매했습니다. <1>$date"; - $query = "update general set resturn='SUCCESS',horse='0',gold=gold+'$cost' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - } elseif($isweap == 3) { - if($type != 0) { - $josaUl = JosaUtil::pick(getItemName($type), '을'); - $log[] = "●{$admin['month']}월:".getItemName($type)."{$josaUl} 구입했습니다. <1>$date"; - $query = "update general set resturn='SUCCESS',item='$type',gold=gold-'$cost' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } else { - $cost = Util::round(getItemCost($general['item']) / 2); - $josaUl = JosaUtil::pick(getItemName($general['item']), '을'); - $log[] = "●{$admin['month']}월:".getItemName($general['item'])."{$josaUl} 판매했습니다. <1>$date"; - $query = "update general set resturn='SUCCESS',item='0',gold=gold+'$cost' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - } - } - - $exp = 10; - $ded = 0; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - // 명성 상승 - $query = "update general set experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - pushGenLog($general, $log); -} - -function process_49(&$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']); - - $city = getCity($general['city']); - - $command = DecodeCommand($general['turn0']); - $type = $command[2]; - $amount = $command[1]; - $amount *= 100; - - if($type != 1 && $type != 2) { $type = 1; } - if($amount < 100) { $amount = 100; } - elseif($amount > 10000) { $amount = 10000; } - - if($city['trade'] == 0 && $general['npc'] >= 2) { - $city['trade'] = 100; - } - - // 거상 f배 이득시 금 계산 - // a : 쌀, b : 물가, f : 배수, c : 금 - // (0.7 ~1.3) : c = a((1+f)b-f) - // (0.99~1.01) : c = a((1-f)b+f) - if($type == 1) { - $dtype = "군량 판매"; - if($general['rice'] < $amount) { $amount = $general['rice']; } - $cost = $amount * $city['trade'] / 100; - $tax = $cost * GameConst::$exchangeFee; - $cost = $cost - $tax; - } elseif($type == 2) { - $dtype = "군량 구입"; - $cost = $amount * $city['trade'] / 100; - $tax = $cost * GameConst::$exchangeFee; - $cost = $cost + $tax; - if($general['gold'] < $cost) { - $cost = $general['gold']; - $tax = $cost * GameConst::$exchangeFee; - $amount = ($cost-$tax) * 100 / $city['trade']; - } - } - - $cost = Util::round($cost); - $amount = Util::round($amount); - $tax = Util::round($tax); - - if($city['trade'] == 0 && $general['npc'] < 2) { - $log[] = "●{$admin['month']}월:도시에 상인이 없습니다. $dtype 실패. <1>$date"; - } elseif($general['nation'] != $city['nation'] && $nation['level'] != 0) { - $log[] = "●{$admin['month']}월:아국이 아닙니다. $dtype 실패. <1>$date"; - } elseif($city['supply'] == 0) { - $log[] = "●{$admin['month']}월:고립된 도시입니다. $dtype 실패. <1>$date"; - } elseif($type == 1 && $general['rice'] <= 0) { - $log[] = "●{$admin['month']}월:군량이 없습니다. $dtype 실패. <1>$date"; - } elseif($type == 2 && $general['gold'] <= 0) { - $log[] = "●{$admin['month']}월:자금이 없습니다. $dtype 실패. <1>$date"; - } else { - // 판매 - if($type == 1) { - $log[] = "●{$admin['month']}월:군량 $amount을 팔아 자금 $cost을 얻었습니다. <1>$date"; - // 군량 감소 - $query = "update general set rice=rice-{$amount} where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - // 자금 증가 - $query = "update general set gold=gold+{$cost} where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - // 구입 - } elseif($type == 2) { - $log[] = "●{$admin['month']}월:군량 $amount을 사서 자금 $cost을 썼습니다. <1>$date"; - // 군량 증가 - $query = "update general set rice=rice+{$amount} where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - // 자금 감소 - $query = "update general set gold=gold-{$cost} where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - - // 세금 국고로 - $query = "update nation set gold=gold+'$tax' where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - $exp = 30; - $ded = 50; - - // 성격 보정 - $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),""); - - // 경험치 상승 - switch(Util::choiceRandomUsingWeight([$general['leadership'], $general['power'], $general['intel']])) { - case 0: - $general['leadership2']++; - $query = "update general set leadership2='{$general['leadership2']}' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 1: - $general['strength2']++; - $query = "update general set strength2='{$general['strength2']}' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - case 2: - $general['intel2']++; - $query = "update general set intel2='{$general['intel2']}' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - break; - } - - $log = checkAbility($general, $log); - } - - pushGenLog($general, $log); -} - -function process_50(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $connect=$db->get(); - - $log = []; - $alllog = []; - $history = []; - $date = substr($general['turntime'],11,5); - - $month = $gameStor->month; - - $log[] = "●{$month}월:건강 회복을 위해 요양합니다. <1>$date"; - // 경험치 상승 // 공헌도, 명성 상승 - $exp = 10; - $ded = 7; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - $query = "update general set resturn='SUCCESS',injury='0',dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - pushGenLog($general, $log); -} - -function process_99(&$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']); - - $log[] = "●{$admin['month']}월:아직 구현되지 않았습니다. <1>$date"; - - $exp = 100; - $ded = 0; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - // 명성 상승 - $query = "update general set experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - pushGenLog($general, $log); -} - diff --git a/hwe/func_process_chief.old.php b/hwe/func_process_chief.old.php deleted file mode 100644 index ef3ec50a..00000000 --- a/hwe/func_process_chief.old.php +++ /dev/null @@ -1,2438 +0,0 @@ -get(); - - $genlog = []; - $log = []; - $alllog = []; - $history = []; - - $date = substr($general['turntime'],11,5); - - $admin = $gameStor->getValues(['year','month']); - - $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 gold,rice,l{$general['level']}turn0 from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - $command = DecodeCommand($nation["l{$general['level']}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 = "금"; - if($nation['gold']-GameConst::$basegold < $amount) { $amount = $nation['gold'] - GameConst::$basegold; } - } elseif($what == 2) { - $dtype = "쌀"; - if($nation['rice']-GameConst::$baserice < $amount) { $amount = $nation['rice'] - GameConst::$baserice; } - } else { - $what = 2; - $dtype = "쌀"; - if($nation['rice']-GameConst::$baserice < $amount) { $amount = $nation['rice'] - GameConst::$baserice; } - } - - $query = "select no,nation,level,name,gold,rice from general where no='$who'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $gen = MYDB_fetch_array($result); - - if(!$gen) { - $log[] = "●{$admin['month']}월:없는 장수입니다. 포상 실패. <1>$date"; - } elseif($general['no'] == $who) { - $log[] = "●{$admin['month']}월:자기 자신입니다. 포상 실패. <1>$date"; - } elseif($general['level'] < 5) { - $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($what == 1 && $amount <= 0) { - $log[] = "●{$admin['month']}월:국고가 부족합니다. 포상 실패. <1>$date"; - } elseif($what == 2 && $amount <= 0) { - $log[] = "●{$admin['month']}월:병량이 부족합니다. 포상 실패. <1>$date"; - } elseif($gen['nation'] != $general['nation']) { - $log[] = "●{$admin['month']}월:아국 장수가 아닙니다. 포상 실패. <1>$date"; - } else { - $genlog[] = "●$dtype $amount을 포상으로 받았습니다."; - $log[] = "●{$admin['month']}월:{$gen['name']}에게 $dtype $amount을 수여했습니다. <1>$date"; - - if($what == 1) { - $gen['gold'] += $amount; - $query = "update general set gold='{$gen['gold']}' where no='$who'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - $nation['gold'] -= $amount; - $query = "update nation set gold='{$nation['gold']}' where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } elseif($what == 2) { - $gen['rice'] += $amount; - $query = "update general set rice='{$gen['rice']}' where no='$who'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - $nation['rice'] -= $amount; - $query = "update nation set rice='{$nation['rice']}' where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - - $query = "update general set resturn='SUCCESS' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - -// $log = checkAbility($general, $log); - } - pushGenLog($general, $log); - pushGenLog($gen, $genlog); -} - - -function process_24(&$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','scenario','startyear']); - - $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 nation,name,color,gold,rice,l{$general['level']}turn0 from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - $command = DecodeCommand($nation["l{$general['level']}turn0"]); - $what = $command[3]; - $who = $command[2]; - $amount = $command[1]; - $amount *= 100; // 100~10000까지 - - $query = "select no,nation,level,name,gold,rice,npc,picture,imgsvr from general where no='$who'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $gen = MYDB_fetch_array($result); - - if($amount > 10000) { $amount = 10000; } - if($amount < 100) { $amount = 100; } - if($what == 1) { - $dtype = "금"; - if($gen['gold'] < $amount) { $amount = $gen['gold']; } - } elseif($what == 2) { - $dtype = "쌀"; - if($gen['rice'] < $amount) { $amount = $gen['rice']; } - } else { - $what = 2; - $dtype = "쌀"; - if($gen['rice'] < $amount) { $amount = $gen['rice']; } - } - - if(!$gen) { - $log[] = "●{$admin['month']}월:없는 장수입니다. 몰수 실패. <1>$date"; - } elseif($admin['year'] < $admin['startyear']+3) { - $log[] = "●{$admin['month']}월:현재 초반 제한중입니다. 몰수 실패. <1>$date"; - } elseif($general['no'] == $who) { - $log[] = "●{$admin['month']}월:자기 자신입니다. 몰수 실패. <1>$date"; - } elseif($general['level'] < 5) { - $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($gen['nation'] != $general['nation']) { - $log[] = "●{$admin['month']}월:아국 장수가 아닙니다. 몰수 실패. <1>$date"; - } else { - if($gen['npc'] >= 2 && rand()%100 == 0) { - switch(rand()%5) { - case 0: $str = "몰수를 하다니... 이것이 윗사람이 할 짓이란 말입니까..."; break; - case 1: $str = "사유재산까지 몰수해가면서 이 나라가 잘 될거라 믿습니까? 정말 이해할 수가 없군요..."; break; - case 2: $str = "내 돈 내놔라! 내 돈! 몰수가 왠 말이냐!"; break; - case 3: $str = "몰수해간 내 자금... 언젠가 몰래 다시 빼내올 것이다..."; break; - case 4: $str = "몰수로 인한 사기 저하는 몰수로 얻은 물자보다 더 손해란걸 모른단 말인가!"; break; - } - - $src = new MessageTarget( - $gen['no'], - $gen['name'], - $gen['nation'], - $nation['name'], - $nation['color'], - GetImageURL($gen['imgsvr'], $gen['picture']) - ); - $msg = new Message( - Message::MSGTYPE_PUBLIC, - $src, - $src, - $str, - new \DateTime(), - new \DateTime('9999-12-31'), - [] - ); - $msg->send(); - } - - $genlog[] = "●$dtype {$amount}을 몰수 당했습니다."; - $log[] = "●{$admin['month']}월:{$gen['name']}에게서 $dtype $amount을 몰수했습니다. <1>$date"; - - if($what == 1) { - $gen['gold'] -= $amount; - $query = "update general set gold='{$gen['gold']}' where no='$who'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - $nation['gold'] += $amount; - $query = "update nation set gold='{$nation['gold']}' where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } elseif($what == 2) { - $gen['rice'] -= $amount; - $query = "update general set rice='{$gen['rice']}' where no='$who'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - $nation['rice'] += $amount; - $query = "update nation set rice='{$nation['rice']}' where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - - // 경험치 상승 - $query = "update general set resturn='SUCCESS' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - -// $log = checkAbility($general, $log); - } - pushGenLog($general, $log); - pushGenLog($gen, $genlog); -} - - -function process_27(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $connect=$db->get(); - - $log = []; - $alllog = []; - $history = []; - $youlog = []; - $date = substr($general['turntime'],11,5); - - $query = "select gold,rice,l{$general['level']}turn0 from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - $command = DecodeCommand($nation["l{$general['level']}turn0"]); - $who = $command[2]; - $where = $command[1]; - - $admin = $gameStor->getValues(['year','month']); - - $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,level from general where no='$who'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $you = MYDB_fetch_array($result); - - $query = "select name,nation,supply from city where city='$where'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $destcity = MYDB_fetch_array($result); - - if(!$you) { - $log[] = "●{$admin['month']}월:없는 장수입니다. 발령 실패. <1>$date"; - } elseif($general['no'] == $who) { - $log[] = "●{$admin['month']}월:자기 자신입니다. {$you['name']} 발령 실패. <1>$date"; - } elseif($general['level'] < 5) { - $log[] = "●{$admin['month']}월:수뇌부가 아닙니다. {$you['name']} 발령 실패. <1>$date"; - } elseif($city['nation'] != $general['nation']) { - $log[] = "●{$admin['month']}월:아국이 아닙니다. {$you['name']} 발령 실패. <1>$date"; - } elseif($destcity['supply'] == 0) { - $log[] = "●{$admin['month']}월:고립된 도시입니다. {$you['name']} 발령 실패. <1>$date"; - } elseif($city['supply'] == 0) { - $log[] = "●{$admin['month']}월:고립된 도시입니다. {$you['name']} 발령 실패. <1>$date"; - } elseif($destcity['nation'] != $general['nation']) { - $log[] = "●{$admin['month']}월:아국 도시가 아닙니다. {$you['name']} 발령 실패. <1>$date"; - } elseif($general['nation'] != $you['nation']) { - $log[] = "●{$admin['month']}월:아국 장수가 아닙니다. {$you['name']} 발령 실패. <1>$date"; - } else { - $josaUl = JosaUtil::pick($you['name'], '을'); - $josaRo = JosaUtil::pick($destcity['name'], '로'); - $log[] = "●{$admin['month']}월:{$you['name']}{$josaUl} {$destcity['name']}{$josaRo} 발령했습니다. <1>$date"; - $youlog[] = "{$general['name']}에 의해 {$destcity['name']}{$josaRo} 발령됐습니다. <1>$date"; - - // 발령 - $query = "update general set city='$where' where no='{$you['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - // 경험치 상승 - $query = "update general set resturn='SUCCESS' 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_51(&$general) { - - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $date = substr($general['turntime'],11,5); - list($year, $month, $turnterm) = $gameStor->getValuesAsArray(['year','month','turnterm']); - - if($general['level'] < 5 || $general['nation']==0) { - pushGenLog($general, ["●{$month}월:수뇌부가 아닙니다. 권고 실패. <1>$date"]); - return; - } - - $supply = $db->queryFirstField('SELECT supply FROM city WHERE city=%i AND nation=%i', $general['city'], $general['nation']); - $myTurn = $db->queryFirstField('SELECT %b FROM nation WHERE nation=%i', "l{$general['level']}turn0", $general['nation']); - - $command = DecodeCommand($myTurn); - $which = $command[1]; - - $srcNation = getNationStaticInfo($general['nation']); - $destNation = getNationStaticInfo($which); - - if($destNation['nation'] == 0) { - pushGenLog($general, ["●{$month}월:멸망한 국가입니다. 권고 실패. <1>$date"]); - return; - } - - if($supply === null) { - pushGenLog($general, ["●{$month}월:아국이 아닙니다. 권고 실패. <1>$date"]); - return; - } - - if($supply === 0) { - pushGenLog($general, ["●{$month}월:고립된 도시입니다. 권고 실패. <1>$date"]); - return; - } - - // 상대에게 발송 - $src = new MessageTarget( - $general['no'], - $general['name'], - $srcNation['nation'], - $srcNation['name'], - $srcNation['color'], - GetImageURL($general['imgsvr'], $general['picture']) - ); - - $dest = new MessageTarget( - 0, - '', - $destNation['nation'], - $destNation['name'], - $destNation['color'] - ); - - $now = new \DateTime($date); - $validUntil = new \DateTime($date); - $validMinutes = max(30, $turnterm*3); - $validUntil->add(new \DateInterval("PT{$validMinutes}M")); - - $msg = new DiplomaticMessage( - Message::MSGTYPE_DIPLOMACY, - $src, - $dest, - "{$srcNation['name']}의 항복 권고 서신", - $now, - $validUntil, - ['action'=>DiplomaticMessage::TYPE_SURRENDER] - ); - $msg->send(); - - pushGenLog($general, ["●{$month}월:{$destNation['name']}으로 항복 권고 서신을 보냈습니다.<1>$date"]); -} - -function process_52(&$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,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 nation,name,level,gold,rice,surlimit,l{$general['level']}turn0 from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $mynation = MYDB_fetch_array($result); - - $command = DecodeCommand($mynation["l{$general['level']}turn0"]); - $rice = $command[3]; - $gold = $command[2]; - $which = $command[1]; - $rice *= 1000; - $gold *= 1000; - $limit = $mynation['level'] * 10000; - - if($gold < 0) { $gold = 0; } - if($rice < 0) { $rice = 0; } - - $query = "select nation,name,gold,rice,surlimit from nation where nation='$which'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $younation = MYDB_fetch_array($result); - - if($gold > $mynation['gold']-GameConst::$basegold) { $gold = $mynation['gold'] - GameConst::$basegold; } - if($rice > $mynation['rice']-GameConst::$baserice) { $rice = $mynation['rice'] - GameConst::$baserice; } - - if($younation['nation'] == 0) { - $log[] = "●{$admin['month']}월:멸망한 국가입니다. 원조 실패. <1>$date"; - } elseif($gold == 0 && $rice == 0) { - $log[] = "●{$admin['month']}월:보낼 물자가 부족합니다. 원조 실패. <1>$date"; - } elseif($gold < 0 || $rice < 0) { - $log[] = "●{$admin['month']}월:보낼 물자가 부족합니다. 원조 실패. <1>$date"; - } elseif($gold > $limit || $rice > $limit) { - $log[] = "●{$admin['month']}월:작위 제한량 이상은 보낼 수 없습니다. 원조 실패. <1>$date"; - } elseif($general['level'] < 5) { - $log[] = "●{$admin['month']}월:수뇌부가 아닙니다. 원조 실패. <1>$date"; - } elseif($mynation['surlimit'] > 0) { - $log[] = "●{$admin['month']}월:외교제한중입니다. 원조 실패. <1>$date"; - } elseif($younation['surlimit'] > 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"; - } else { - // 본국 자원 감소 - $query = "update nation set gold=gold-'$gold',rice=rice-'$rice',surlimit=surlimit+12 where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - // 상대국 자원 증가 - $query = "update nation set gold=gold+'$gold',rice=rice+'$rice' where nation='$which'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - //아국 수뇌부에게 로그 전달 - $query = "select no,name,nation from general where nation='{$general['nation']}' and level>='9'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $gencount = MYDB_num_rows($result); - - $josaRo = JosaUtil::pick($younation['name'], '로'); - $genlog = ["{$younation['name']}{$josaRo} 금$gold 쌀$rice을 지원했습니다."]; - for($i=0; $i < $gencount; $i++) { - $gen = MYDB_fetch_array($result); - pushGenLog($gen, $genlog); - } - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:{$younation['name']}{$josaRo} 금$gold 쌀$rice을 지원"); - pushNationHistory($mynation, "●{$admin['year']}년 {$admin['month']}월:{$younation['name']}{$josaRo} 금$gold 쌀$rice을 지원"); - pushNationHistory($younation, "●{$admin['year']}년 {$admin['month']}월:{$mynation['name']}{$josaRo}부터 금$gold 쌀$rice을 지원 받음"); - - //상대국 수뇌부에게 로그 전달 - $query = "select no,name,nation from general where nation='$which' and level>='9'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $gencount = MYDB_num_rows($result); - - for($i=0; $i < $gencount; $i++) { - $gen = MYDB_fetch_array($result); - $genlog[0] = "{$mynation['name']}에서 금$gold 쌀$rice을 원조 했습니다."; - pushGenLog($gen, $genlog); - } - - $history[] = "●{$admin['year']}년 {$admin['month']}월:【원조】{$mynation['name']}에서 {$younation['name']}{$josaRo} 물자를 지원합니다."; - $log[] = "●{$admin['month']}월:{$younation['name']}{$josaRo} 물자를 지원합니다. <1>$date"; - - $exp = 5; - $ded = 5; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - // 경험치 상승 // 공헌도, 명성 상승 - $query = "update general set dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - -// $log = checkAbility($general, $log); - } - pushWorldHistory($history, $admin['year'], $admin['month']); - pushGenLog($general, $log); -} - -function process_53(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $date = substr($general['turntime'],11,5); - list($year, $month, $turnterm) = $gameStor->getValuesAsArray(['year','month','turnterm']); - - if($general['level'] < 5 || $general['nation']==0) { - pushGenLog($general, ["●{$month}월:수뇌부가 아닙니다. 제의 실패. <1>$date"]); - return; - } - - $supply = $db->queryFirstField('SELECT supply FROM city WHERE city=%i AND nation=%i', $general['city'], $general['nation']); - $myTurn = $db->queryFirstField('SELECT %b FROM nation WHERE nation=%i', "l{$general['level']}turn0", $general['nation']); - - $command = DecodeCommand($myTurn); - $which = $command[1]; - - $srcNation = getNationStaticInfo($general['nation']); - $destNation = getNationStaticInfo($which); - - if($destNation['nation'] == 0) { - pushGenLog($general, ["●{$month}월:멸망한 국가입니다. 제의 실패. <1>$date"]); - return; - } - - if($supply === null) { - pushGenLog($general, ["●{$month}월:아국이 아닙니다. 제의 실패. <1>$date"]); - return; - } - - if($supply === 0) { - pushGenLog($general, ["●{$month}월:고립된 도시입니다. 제의 실패. <1>$date"]); - return; - } - - // 상대에게 발송 - $src = new MessageTarget( - $general['no'], - $general['name'], - $srcNation['nation'], - $srcNation['name'], - $srcNation['color'], - GetImageURL($general['imgsvr'], $general['picture']) - ); - - $dest = new MessageTarget( - 0, - '', - $destNation['nation'], - $destNation['name'], - $destNation['color'] - ); - - $now = new \DateTime($date); - $validUntil = new \DateTime($date); - $validMinutes = max(30, $turnterm*3); - $validUntil->add(new \DateInterval("PT{$validMinutes}M")); - - $msg = new DiplomaticMessage( - Message::MSGTYPE_DIPLOMACY, - $src, - $dest, - "{$srcNation['name']}의 통합 제의 서신", - $now, - $validUntil, - ['action'=>DiplomaticMessage::TYPE_MERGE] - ); - $msg->send(); - - $josaRo = JosaUtil::pick($destNation['name'], '로'); - pushGenLog($general, ["●{$month}월:{$destNation['name']}{$josaRo} 통합 제의 서신을 보냈습니다.<1>$date"]); -} - - -function process_61(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $date = substr($general['turntime'],11,5); - list($year, $month, $turnterm) = $gameStor->getValuesAsArray(['year','month','turnterm']); - - if($general['level'] < 5 || $general['nation']==0) { - pushGenLog($general, ["●{$month}월:수뇌부가 아닙니다. 제의 실패. <1>$date"]); - return; - } - - $supply = $db->queryFirstField('SELECT supply FROM city WHERE city=%i AND nation=%i', $general['city'], $general['nation']); - $myTurn = $db->queryFirstField('SELECT %b FROM nation WHERE nation=%i', "l{$general['level']}turn0", $general['nation']); - - $command = DecodeCommand($myTurn); - $which = $command[1]; - $when = Util::valueFit($command[2], 1, 20); - - $srcNation = getNationStaticInfo($general['nation']); - $destNation = getNationStaticInfo($which); - - if($destNation['nation'] == 0) { - pushGenLog($general, ["●{$month}월:멸망한 국가입니다. 제의 실패. <1>$date"]); - return; - } - - if($supply === null) { - pushGenLog($general, ["●{$month}월:아국이 아닙니다. 제의 실패. <1>$date"]); - return; - } - - if($supply === 0) { - pushGenLog($general, ["●{$month}월:고립된 도시입니다. 제의 실패. <1>$date"]); - return; - } - - // 상대에게 발송 - $src = new MessageTarget( - $general['no'], - $general['name'], - $srcNation['nation'], - $srcNation['name'], - $srcNation['color'], - GetImageURL($general['imgsvr'], $general['picture']) - ); - - $dest = new MessageTarget( - 0, - '', - $destNation['nation'], - $destNation['name'], - $destNation['color'] - ); - - $now = new \DateTime($date); - $validUntil = new \DateTime($date); - $validMinutes = max(30, $turnterm*3); - $validUntil->add(new \DateInterval("PT{$validMinutes}M")); - - //FIXME: 현재 command가 숫자로만 이루어져 있어서 문자열을 처리할 수 없다. - //XXX: 으악. - //TODO: 커맨드 처리 방식을 json으로 변경 - $option = $db->queryFirstField('SELECT reserved FROM diplomacy WHERE me=%i AND you=%i', $src->nationID, $dest->nationID); - - $msg = new DiplomaticMessage( - Message::MSGTYPE_DIPLOMACY, - $src, - $dest, - "{$srcNation['name']}의 {$when}년 불가침 제의 서신", - $now, - $validUntil, - [ - 'action'=>DiplomaticMessage::TYPE_NO_AGGRESSION, - 'year'=>$when, - 'option'=>$option - ] - ); - $msg->send(); - - //NOTE: 현재 내무부 외교란의 비고는 diplomacy가 기준이니까 유지할 필요는 있다. - //FIXME: 외교란도 message란의 diplomacy를 참조하든가 하도록. - $db->update('diplomacy', [ - 'showing'=>$validUntil->format('Y-m-d H:i:s') - ], 'me=%i AND you=%i', $src->nationID, $dest->nationID); - // 3턴후 - - pushGenLog($general, ["●{$month}월:{$destNation['name']}으로 불가침 제의 서신을 보냈습니다.<1>$date"]); -} - -function process_62(&$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','startyear']); - - $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 nation,name,l{$general['level']}turn0,color from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - $command = DecodeCommand($nation["l{$general['level']}turn0"]); - $which = $command[1]; - - $query = "select nation,name,color from nation where nation='$which'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $younation = MYDB_fetch_array($result); - - $query = "select * from general where nation='{$younation['nation']}' and level='12'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $king = MYDB_fetch_array($result); - - //아국과의 관계 - $query = "select state from diplomacy where me='{$nation['nation']}' and you='{$younation['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $dip = MYDB_fetch_array($result); - //대상국이 외교 진행중(합병수락중,통합수락중)일때 - $query = "select state from diplomacy where me='{$younation['nation']}' and (state='3' or state='5')"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $dipcount = MYDB_num_rows($result); - - if($younation['nation'] == 0) { - $log[] = "●{$admin['month']}월:멸망한 국가입니다. 선포 실패. <1>$date"; - } elseif($general['level'] < 5) { - $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($dip['state'] == 0) { - $log[] = "●{$admin['month']}월:아국과 이미 교전중입니다. 선포 실패. <1>$date"; - } elseif($dip['state'] == 1) { - $log[] = "●{$admin['month']}월:아국과 이미 선포중입니다. 선포 실패. <1>$date"; - } elseif($dip['state'] == 7) { - $log[] = "●{$admin['month']}월:아국과 불가침중입니다. 선포 실패. <1>$date"; - } elseif($dipcount != 0) { - $log[] = "●{$admin['month']}월:상대국이 외교 진행중입니다. 선포 실패. <1>$date"; - } elseif(!isNeighbor($nation['nation'], $younation['nation'])) { - $log[] = "●{$admin['month']}월:인접하지 않았습니다. 선포 실패. <1>$date"; - } elseif($admin['year'] <= $admin['startyear']) { - $log[] = "●{$admin['month']}월:초반제한 해제 2년전부터 가능합니다. 선포 실패. <1>$date"; - } else { - $log[] = "●{$admin['month']}월:{$younation['name']}으로 선전 포고 했습니다.<1>$date"; - - $josaYi = JosaUtil::pick($general['name'], '이'); - $josaYiNation = JosaUtil::pick($nation['name'], '이'); - - $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} {$younation['name']}선전 포고 하였습니다."; - $history[] = "●{$admin['year']}년 {$admin['month']}월:【선포】{$nation['name']}{$josaYiNation} {$younation['name']}에 선전 포고 하였습니다."; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:{$younation['name']}에 선전 포고"); - pushNationHistory($nation, "●{$admin['year']}년 {$admin['month']}월:{$general['name']}{$josaYi} {$younation['name']}에 선전 포고"); - pushNationHistory($younation, "●{$admin['year']}년 {$admin['month']}월:{$nation['name']}{$general['name']}{$josaYi} 아국에 선전 포고"); - - //외교 변경 - $query = "update diplomacy set state='1',term='24' where me='{$nation['nation']}' and you='{$younation['nation']}'"; - MYDB_query($query, $connect) or Error("ally ".MYDB_error($connect),""); - $query = "update diplomacy set state='1',term='24' where me='{$younation['nation']}' and you='{$nation['nation']}'"; - MYDB_query($query, $connect) or Error("ally ".MYDB_error($connect),""); - - //국메로 저장 - $text = "【외교】{$admin['year']}년 {$admin['month']}월:{$nation['name']}에서 {$younation['name']}에 선전포고"; - - $src = new MessageTarget( - $general['no'], - $general['name'], - $general['nation'], - $nation['name'], - $nation['color'], - GetImageURL($general['imgsvr'], $general['picture']) - ); - $dest = new MessageTarget( - 0, - '', - $younation['nation'], - $younation['name'], - $younation['color'] - ); - $msg = new Message( - Message::MSGTYPE_NATIONAL, - $src, - $dest, - $text, - new \DateTime($general['turntime']), - new \DateTime('9999-12-31'), - [] - ); - $msg->send(); - } - - pushWorldHistory($history, $admin['year'], $admin['month']); - pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushGenLog($general, $log); -} - -function process_63(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $date = substr($general['turntime'],11,5); - list($year, $month, $turnterm) = $gameStor->getValuesAsArray(['year','month','turnterm']); - - if($general['level'] < 5 || $general['nation']==0) { - pushGenLog($general, ["●{$month}월:수뇌부가 아닙니다. 제의 실패. <1>$date"]); - return; - } - - $supply = $db->queryFirstField('SELECT supply FROM city WHERE city=%i AND nation=%i', $general['city'], $general['nation']); - $myTurn = $db->queryFirstField('SELECT %b FROM nation WHERE nation=%i', "l{$general['level']}turn0", $general['nation']); - - $command = DecodeCommand($myTurn); - $which = $command[1]; - - $srcNation = getNationStaticInfo($general['nation']); - $destNation = getNationStaticInfo($which); - - if($destNation['nation'] == 0) { - pushGenLog($general, ["●{$month}월:멸망한 국가입니다. 제의 실패. <1>$date"]); - return; - } - - if($supply === null) { - pushGenLog($general, ["●{$month}월:아국이 아닙니다. 제의 실패. <1>$date"]); - return; - } - - if($supply === 0) { - pushGenLog($general, ["●{$month}월:고립된 도시입니다. 제의 실패. <1>$date"]); - return; - } - - // 상대에게 발송 - $src = new MessageTarget( - $general['no'], - $general['name'], - $srcNation['nation'], - $srcNation['name'], - $srcNation['color'], - GetImageURL($general['imgsvr'], $general['picture']) - ); - - $dest = new MessageTarget( - 0, - '', - $destNation['nation'], - $destNation['name'], - $destNation['color'] - ); - - $now = new \DateTime($date); - $validUntil = new \DateTime($date); - $validMinutes = max(30, $turnterm*3); - $validUntil->add(new \DateInterval("PT{$validMinutes}M")); - - $msg = new DiplomaticMessage( - Message::MSGTYPE_DIPLOMACY, - $src, - $dest, - "{$srcNation['name']}의 종전 제의 서신", - $now, - $validUntil, - ['action'=>DiplomaticMessage::TYPE_STOP_WAR] - ); - $msg->send(); - - pushGenLog($general, ["●{$month}월:{$destNation['name']}으로 종전 제의 서신을 보냈습니다. <1>$date"]); -} - -function process_64(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $date = substr($general['turntime'],11,5); - list($year, $month, $turnterm) = $gameStor->getValuesAsArray(['year','month','turnterm']); - - if($general['level'] < 5 || $general['nation']==0) { - pushGenLog($general, ["●{$month}월:수뇌부가 아닙니다. 제의 실패. <1>$date"]); - return; - } - - $supply = $db->queryFirstField('SELECT supply FROM city WHERE city=%i AND nation=%i', $general['city'], $general['nation']); - $myTurn = $db->queryFirstField('SELECT %b FROM nation WHERE nation=%i', "l{$general['level']}turn0", $general['nation']); - - $command = DecodeCommand($myTurn); - $which = $command[1]; - - $srcNation = getNationStaticInfo($general['nation']); - $destNation = getNationStaticInfo($which); - - if($destNation['nation'] == 0) { - pushGenLog($general, ["●{$month}월:멸망한 국가입니다. 제의 실패. <1>$date"]); - return; - } - - if($supply === null) { - pushGenLog($general, ["●{$month}월:아국이 아닙니다. 제의 실패. <1>$date"]); - return; - } - - if($supply === 0) { - pushGenLog($general, ["●{$month}월:고립된 도시입니다. 제의 실패. <1>$date"]); - return; - } - - // 상대에게 발송 - $src = new MessageTarget( - $general['no'], - $general['name'], - $srcNation['nation'], - $srcNation['name'], - $srcNation['color'], - GetImageURL($general['imgsvr'], $general['picture']) - ); - - $dest = new MessageTarget( - 0, - '', - $destNation['nation'], - $destNation['name'], - $destNation['color'] - ); - - $now = new \DateTime($date); - $validUntil = new \DateTime($date); - $validMinutes = max(30, $turnterm*3); - $validUntil->add(new \DateInterval("PT{$validMinutes}M")); - - $msg = new DiplomaticMessage( - Message::MSGTYPE_DIPLOMACY, - $src, - $dest, - "{$srcNation['name']}의 불가침 파기 제의 서신", - $now, - $validUntil, - ['action'=>DiplomaticMessage::TYPE_CANCEL_NA] - ); - $msg->send(); - - $josaRo = JosaUtil::pick($destNation['name'], '로'); - pushGenLog($general, ["●{$month}월:{$destNation['name']}{$josaRo} 불가침 파기 제의 서신을 보냈습니다.<1>$date"]); -} - -function process_65(&$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,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 city from city where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $citycount = MYDB_num_rows($result); - - $query = "select nation,capital,name,surlimit,l{$general['level']}turn0 from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - $command = DecodeCommand($nation["l{$general['level']}turn0"]); - $which = $command[1]; - - $query = "select city,name,nation,pop,gen1,gen2,gen3 from city where city='$which'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $destcity = MYDB_fetch_array($result); - - //아국이 외교중(교전, 선포, 합병, 통합 // 즉 !통상, !불가침)일때 - $query = "select state from diplomacy where me='{$nation['nation']}' and (state!='2' and state!='7')"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $dipcount = MYDB_num_rows($result); - - if($city['nation'] != $general['nation']) { - $log[] = "●{$admin['month']}월:아국이 아닙니다. 초토화 실패. <1>$date"; - } elseif($general['level'] < 5) { - $log[] = "●{$admin['month']}월:수뇌부가 아닙니다. 초토화 실패. <1>$date"; - } elseif($nation['capital'] == $destcity['city']) { - $log[] = "●{$admin['month']}월:수도입니다. 초토화 실패. <1>$date"; - } elseif($city['supply'] == 0) { - $log[] = "●{$admin['month']}월:고립된 도시입니다. 초토화 실패. <1>$date"; - } elseif($destcity['nation'] != $general['nation']) { - $log[] = "●{$admin['month']}월:아국 영토가 아닙니다. 초토화 실패. <1>$date"; - } elseif($citycount <= 4) { - $log[] = "●{$admin['month']}월:더이상 물러날 수 없습니다. 초토화 실패. <1>$date"; - } elseif($dipcount != 0) { - $log[] = "●{$admin['month']}월:평시에만 가능합니다. 초토화 실패. <1>$date"; - } elseif($nation['surlimit'] > 0) { - $log[] = "●{$admin['month']}월:제한 턴이 있습니다. 초토화 실패. <1>$date"; - } else { - $josaUl = JosaUtil::pick($destcity['name'], '을'); - $log[] = "●{$admin['month']}월:{$destcity['name']}{$josaUl} 초토화했습니다. <1>$date"; - - $josaYi = JosaUtil::pick($general['name'], '이'); - $josaYiNation = JosaUtil::pick($nation['name'], '이'); - - $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} {$destcity['name']}초토화를 명령하였습니다."; - $history[] = "●{$admin['year']}년 {$admin['month']}월:【초토화】{$nation['name']}{$josaYiNation} {$destcity['name']}{$josaUl} 초토화하였습니다."; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:{$destcity['name']}초토화를 명령"); - pushNationHistory($nation, "●{$admin['year']}년 {$admin['month']}월:{$general['name']}{$josaYi} {$destcity['name']}초토화를 명령"); - - //외교제한 24 - $amount = Util::round($destcity['pop'] * 0.1); - $query = "update nation set surlimit='24',gold=gold+'$amount',rice=rice+'$amount' where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - //직위해제 - $query = "update general set level=1 where no='{$destcity['gen1']}' or no='{$destcity['gen2']}' or no='{$destcity['gen3']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - //성 공백지로 - $query = "update city set pop=pop*0.1,trust=50,agri=agri*0.1,comm=comm*0.1,secu=secu*0.1,nation='0',front='0',gen1='0',gen2='0',gen3='0',conflict='{}' where city='{$destcity['city']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - //전장수 10% 삭감 - $query = "update general set experience=experience*0.9,dedication=dedication*0.9 where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - - pushWorldHistory($history, $admin['year'], $admin['month']); - pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushGenLog($general, $log); -} - -function process_66(&$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); - - $query = "select nation,name,gold,rice,surlimit,l{$general['level']}term,l{$general['level']}turn0,capital,capset from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - $command = DecodeCommand($nation["l{$general['level']}turn0"]); - $which = $command[1]; - - $query = "select city,name,nation from city where city='$which'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $destcity = MYDB_fetch_array($result); - - $nearCities = searchDistance($nation['capital'], 1, false); - $amount = $admin['develcost'] * 10; - - $code = $nation["l{$general['level']}term"]; - if($code%100 == 66) { - $term = intdiv($code, 100) + 1; - $code = $term * 100 + 66; - } else { - $term = 1; - $code = 100 + 66; - } - - if($city['nation'] != $general['nation']) { - $log[] = "●{$admin['month']}월:아국이 아닙니다. 천도 실패. <1>$date"; - } elseif($general['level'] < 5) { - $log[] = "●{$admin['month']}월:수뇌부가 아닙니다. 천도 실패. <1>$date"; - } elseif($city['supply'] == 0) { - $log[] = "●{$admin['month']}월:고립된 도시입니다. 천도 실패. <1>$date"; - } elseif($destcity['nation'] != $general['nation']) { - $log[] = "●{$admin['month']}월:아국 영토가 아닙니다. 천도 실패. <1>$date"; - } elseif($destcity['city'] == $nation['capital'] || !key_exists($destcity['city'], $nearCities)){ - $log[] = "●{$admin['month']}월:인접도시가 아닙니다. 천도 실패. <1>$date"; - } elseif($nation['capset'] == 1) { - $log[] = "●{$admin['month']}월:다음 분기에 가능합니다. 천도 실패. <1>$date"; - } elseif($nation['gold']-GameConst::$basegold < $amount || $nation['rice']-GameConst::$baserice < $amount) { - $log[] = "●{$admin['month']}월:물자가 부족합니다. 천도 실패. <1>$date"; - } elseif($term < 3) { - $log[] = "●{$admin['month']}월:천도중... ({$term}/3) <1>$date"; - - $query = "update nation set l{$general['level']}term={$code} where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } else { - $josaRo = JosaUtil::pick($destcity['name'], '로'); - $log[] = "●{$admin['month']}월:{$destcity['name']}{$josaRo} 천도했습니다. <1>$date"; - - $josaYi = JosaUtil::pick($general['name'], '이'); - $josaYiNation = JosaUtil::pick($nation['name'], '이'); - - $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} {$destcity['name']}{$josaRo} 천도를 명령하였습니다."; - $history[] = "●{$admin['year']}년 {$admin['month']}월:【천도】{$nation['name']}{$josaYiNation} {$destcity['name']}{$josaRo} 천도하였습니다."; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:{$destcity['name']}{$josaRo} 천도 명령"); - pushNationHistory($nation, "●{$admin['year']}년 {$admin['month']}월:{$general['name']}{$josaYi} {$destcity['name']}{$josaRo} 천도 명령"); - - //수도 변경 - $query = "update nation set l{$general['level']}term='0',capital='{$destcity['city']}',capset='1',gold=gold-'$amount',rice=rice-'$amount' where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - refreshNationStaticInfo(); - } - - pushWorldHistory($history, $admin['year'], $admin['month']); - pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushGenLog($general, $log); -} - -function process_67(&$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); - - $query = "select nation,name,gold,rice,surlimit,l{$general['level']}term,l{$general['level']}turn0,capital,capset from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - $command = DecodeCommand($nation["l{$general['level']}turn0"]); - $which = $command[1]; - - $query = "select city,name,nation,level from city where city='$which'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $destcity = MYDB_fetch_array($result); - - $amount = $admin['develcost'] * 500 + 60000; // 7만~13만 - - $code = $nation["l{$general['level']}term"]; - if($code%100 == 67) { - $term = intdiv($code, 100) + 1; - $code = $term * 100 + 67; - } else { - $term = 1; - $code = 100 + 67; - } - - if($nation['capital'] != $general['city']) { - $log[] = "●{$admin['month']}월:수도에서 실행해야 합니다. 증축 실패. <1>$date"; - } elseif($nation['capital'] != $destcity['city']) { - $log[] = "●{$admin['month']}월:수도만 가능합니다. 증축 실패. <1>$date"; - } elseif($destcity['level'] <= 3) { - $log[] = "●{$admin['month']}월:수진, 진, 관문은 불가능합니다. 증축 실패. <1>$date"; - } elseif($destcity['level'] >= 8) { - $log[] = "●{$admin['month']}월:더이상 증축할 수 없습니다. 증축 실패. <1>$date"; - } elseif($general['level'] < 5) { - $log[] = "●{$admin['month']}월:수뇌부가 아닙니다. 증축 실패. <1>$date"; - } elseif($nation['capset'] == 1) { - $log[] = "●{$admin['month']}월:다음 분기에 가능합니다. 증축 실패. <1>$date"; - } elseif($nation['gold']-GameConst::$basegold < $amount || $nation['rice']-GameConst::$baserice < $amount) { - $log[] = "●{$admin['month']}월:물자가 부족합니다. 증축 실패. <1>$date"; - } elseif($term < 6) { - $log[] = "●{$admin['month']}월:증축중... ({$term}/6) <1>$date"; - - $query = "update nation set l{$general['level']}term={$code} where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } else { - $josaUl = JosaUtil::pick($destcity['name'], '을'); - $log[] = "●{$admin['month']}월:{$destcity['name']}{$josaUl} 증축했습니다. <1>$date"; - $exp = 5 * 6; - $ded = 5 * 6; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - $josaYi = JosaUtil::pick($general['name'], '이'); - $josaYiNation = JosaUtil::pick($nation['name'], '이'); - - $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} {$destcity['name']}{$josaUl} 증축하였습니다."; - $history[] = "●{$admin['year']}년 {$admin['month']}월:【증축】{$nation['name']}{$josaYiNation} {$destcity['name']}{$josaUl} 증축하였습니다."; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:{$destcity['name']}{$josaUl} 증축"); - pushNationHistory($nation, "●{$admin['year']}년 {$admin['month']}월:{$general['name']}{$josaYi} {$destcity['name']}{$josaUl} 증축"); - - //물자 감소 - $query = "update nation set l{$general['level']}term='0',capset='1',gold=gold-'$amount',rice=rice-'$amount' where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - //수도 증축 - $query = "update city set upgrading=upgrading+1,level=level+1,pop2=pop2+100000,agri2=agri2+2000,comm2=comm2+2000,def2=def2+2000,wall2=wall2+2000,secu2=secu2+2000 where city='{$destcity['city']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - //경험치, 공헌치 - $query = "update general set dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - - pushWorldHistory($history, $admin['year'], $admin['month']); - pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushGenLog($general, $log); -} - -function process_68(&$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); - - $query = "select nation,name,gold,rice,surlimit,l{$general['level']}term,l{$general['level']}turn0,capital,capset from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - $command = DecodeCommand($nation["l{$general['level']}turn0"]); - $which = $command[1]; - - $query = "select city,name,nation,level,pop,agri,comm,def,wall,secu,upgrading from city where city='$which'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $destcity = MYDB_fetch_array($result); - - $amount = $admin['develcost'] * 500 + 30000; // 4만~10만 - - $code = $nation["l{$general['level']}term"]; - if($code%100 == 68) { - $term = intdiv($code, 100) + 1; - $code = $term * 100 + 68; - } else { - $term = 1; - $code = 100 + 68; - } - - if($nation['capital'] != $general['city']) { - $log[] = "●{$admin['month']}월:수도에서 실행해야 합니다. 감축 실패. <1>$date"; - } elseif($nation['capital'] != $destcity['city']) { - $log[] = "●{$admin['month']}월:수도만 가능합니다. 감축 실패. <1>$date"; - } elseif($destcity['level'] <= 3) { - $log[] = "●{$admin['month']}월:수진, 진, 관문은 불가능합니다. 감축 실패. <1>$date"; - } elseif($destcity['level'] <= 6) { - $log[] = "●{$admin['month']}월:더이상 감축할 수 없습니다. 감축 실패. <1>$date"; - } elseif($destcity['upgrading'] <= 0) { - $log[] = "●{$admin['month']}월:증축된 도시가 아닙니다. 감축 실패. <1>$date"; - } elseif($general['level'] < 5) { - $log[] = "●{$admin['month']}월:수뇌부가 아닙니다. 감축 실패. <1>$date"; - } elseif($nation['capset'] == 1) { - $log[] = "●{$admin['month']}월:다음 분기에 가능합니다. 감축 실패. <1>$date"; - } elseif($term < 6) { - $log[] = "●{$admin['month']}월:감축중... ({$term}/6) <1>$date"; - - $query = "update nation set l{$general['level']}term={$code} where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } else { - $josaUl = JosaUtil::pick($destcity['name'], '을'); - $log[] = "●{$admin['month']}월:{$destcity['name']}{$josaUl} 감축했습니다. <1>$date"; - $exp = 5 * 6; - $ded = 5 * 6; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - $josaYi = JosaUtil::pick($general['name'], '이'); - $josaYiNation = JosaUtil::pick($nation['name'], '이'); - - $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} {$destcity['name']}{$josaUl} 감축하였습니다."; - $history[] = "●{$admin['year']}년 {$admin['month']}월:【감축】{$nation['name']}{$josaYiNation} {$destcity['name']}{$josaUl} 감축하였습니다."; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:{$destcity['name']}{$josaUl} 감축"); - pushNationHistory($nation, "●{$admin['year']}년 {$admin['month']}월:{$general['name']}{$josaYi} {$destcity['name']}{$josaUl} 감축"); - - //물자 증가 - $query = "update nation set l{$general['level']}term='0',capset='1',gold=gold+'$amount',rice=rice+'$amount' where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - $pop = $destcity['pop'] - 100000; - $agri = $destcity['agri'] - 2000; - $comm = $destcity['comm'] - 2000; - $def = $destcity['def'] - 2000; - $wall = $destcity['wall'] - 2000; - $secu = $destcity['secu'] - 2000; - if($pop < 30000) { $pop = 30000; } - if($agri < 0) { $agri = 0; } - if($comm < 0) { $comm = 0; } - if($def < 0) { $def = 0; } - if($wall < 0) { $wall = 0; } - if($secu < 0) { $secu = 0; } - //수도 감축 - $query = "update city set upgrading=upgrading-1,level=level-1,pop2=pop2-100000,agri2=agri2-2000,comm2=comm2-2000,def2=def2-2000,wall2=wall2-2000,secu2=secu2-2000,pop='$pop',agri='$agri',comm='$comm',def='$def',wall='$wall',secu='$secu' where city='{$destcity['city']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - //경험치, 공헌치 - $query = "update general set dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - - pushWorldHistory($history, $admin['year'], $admin['month']); - pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushGenLog($general, $log); -} - -function process_71(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $connect=$db->get(); - - $log = []; - $alllog = []; - $history = []; - $sabotagelog = []; - - $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); - - $query = "select nation,name,type,strategic_cmd_limit,l{$general['level']}term,l{$general['level']}turn0 from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - $query = "select no from diplomacy where me='{$general['nation']}' and state=0"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $dipCount = MYDB_num_rows($result); - - $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; } - - //$term2 = Util::round($genCount / 10); - //if($term2 == 0) { $term2 = 1; } - $term2 = 3; - $term3 = Util::round(sqrt($genCount*8)*10); - - $code = $nation["l{$general['level']}term"]; - if($code%100 == 71) { - $term = intdiv($code, 100) + 1; - $code = $term * 100 + 71; - } else { - $term = 1; - $code = 100 + 71; - } - - if($city['nation'] != $general['nation']) { - $log[] = "●{$admin['month']}월:아국이 아닙니다. 필사즉생 실패. <1>$date"; - } elseif($general['level'] < 5) { - $log[] = "●{$admin['month']}월:수뇌부가 아닙니다. 필사즉생 실패. <1>$date"; - } elseif($dipCount == 0) { - $log[] = "●{$admin['month']}월:전쟁중이 아닙니다. 필사즉생 실패. <1>$date"; - } elseif($nation['strategic_cmd_limit'] > 0) { - $log[] = "●{$admin['month']}월:전략기한이 남았습니다. 필사즉생 실패. <1>$date"; - } elseif($term < $term2) { - $log[] = "●{$admin['month']}월:필사즉생 수행중... ({$term}/{$term2}) <1>$date"; - - $query = "update nation set l{$general['level']}term={$code} where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } else { - $log[] = "●{$admin['month']}월:필사즉생 발동! <1>$date"; - $exp = 5 * $term2; - $ded = 5 * $term2; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - $josaYi = JosaUtil::pick($general['name'], '이'); - $josaYiNation = JosaUtil::pick($nation['name'], '이'); - - $query = "select no,name from general where nation='{$general['nation']}' and no!='{$general['no']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $cnt = MYDB_num_rows($result); - $alllog[0] = "{$general['name']}{$josaYi} 필사즉생을 발동하였습니다."; - for($i=0; $i < $cnt; $i++) { - $gen = MYDB_fetch_array($result); - pushGenLog($gen, $alllog); - } - -// $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} 필사즉생을 발동하였습니다."; -// $history[] = "●{$admin['year']}년 {$admin['month']}월:【전략】{$nation['name']}{$josaYiNation} 필사즉생을 발동하였습니다."; - $sabotagelog[] = "●{$admin['year']}년 {$admin['month']}월:【전략】{$nation['name']}{$josaYiNation} 필사즉생을 발동하였습니다."; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:필사즉생을 발동"); - pushNationHistory($nation, "●{$admin['year']}년 {$admin['month']}월:{$general['name']}{$josaYi} 필사즉생을 발동"); - - //전장수 훈사100 - $query = "update general set atmos=100,train=100 where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - // 국가보정 - if($nation['type'] == 11) { $term3 = Util::round($term3 / 2); } - if($nation['type'] == 12) { $term3 = $term3 * 2; } - - //전략기한 - $query = "update nation set strategic_cmd_limit={$term3} where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - //경험치, 공헌치 - $query = "update general set dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - -// pushWorldHistory($history, $admin['year'], $admin['month']); -// pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushSabotageLog($sabotagelog); - pushGenLog($general, $log); -} - -function process_72(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $connect=$db->get(); - - $log = []; - $alllog = []; - $history = []; - $sabotagelog = []; - - $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); - - $query = "select nation,name,type,strategic_cmd_limit,l{$general['level']}term,l{$general['level']}turn0 from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - $command = DecodeCommand($nation["l{$general['level']}turn0"]); - $which = $command[1]; - - $query = "select city,name,nation from city where city='$which'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $destcity = MYDB_fetch_array($result); - - $query = "select no from diplomacy where me='{$general['nation']}' and state=0"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $dipCount = MYDB_num_rows($result); - - $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; } - - //$term2 = Util::round($genCount / 20); - //if($term2 == 0) { $term2 = 1; } - $term2 = 1; - $term3 = Util::round(sqrt($genCount*4)*10); - - $code = $nation["l{$general['level']}term"]; - if($code%100 == 72) { - $term = intdiv($code, 100) + 1; - $code = $term * 100 + 72; - } else { - $term = 1; - $code = 100 + 72; - } - - if($city['nation'] != $general['nation']) { - $log[] = "●{$admin['month']}월:아국이 아닙니다. 백성동원 실패. <1>$date"; - } elseif($general['level'] < 5) { - $log[] = "●{$admin['month']}월:수뇌부가 아닙니다. 백성동원 실패. <1>$date"; - } elseif($dipCount == 0) { - $log[] = "●{$admin['month']}월:전쟁중이 아닙니다. 백성동원 실패. <1>$date"; - } elseif($nation['strategic_cmd_limit'] > 0) { - $log[] = "●{$admin['month']}월:전략기한이 남았습니다. 백성동원 실패. <1>$date"; - } elseif($destcity['nation'] != $general['nation']) { - $log[] = "●{$admin['month']}월:아국 도시만 가능합니다. 백성동원 실패. <1>$date"; - } elseif($term < $term2) { - $log[] = "●{$admin['month']}월:백성동원 수행중... ({$term}/{$term2}) <1>$date"; - - $query = "update nation set l{$general['level']}term={$code} where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } else { - $log[] = "●{$admin['month']}월:백성동원 발동! <1>$date"; - $exp = 5 * $term2; - $ded = 5 * $term2; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - $josaYi = JosaUtil::pick($general['name'], '이'); - $josaYiNation = JosaUtil::pick($nation['name'], '이'); - - $query = "select no,name from general where nation='{$general['nation']}' and no!='{$general['no']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $cnt = MYDB_num_rows($result); - $alllog[0] = "{$general['name']}{$josaYi} {$destcity['name']}백성동원을 발동하였습니다."; - for($i=0; $i < $cnt; $i++) { - $gen = MYDB_fetch_array($result); - pushGenLog($gen, $alllog); - } - -// $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} {$destcity['name']}백성동원을 발동하였습니다."; -// $history[] = "●{$admin['year']}년 {$admin['month']}월:【전략】{$nation['name']}{$josaYiNation} {$destcity['name']}백성동원을 발동하였습니다."; - $sabotagelog[] = "●{$admin['year']}년 {$admin['month']}월:【전략】{$nation['name']}{$josaYiNation} {$destcity['name']}백성동원을 발동하였습니다."; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:{$destcity['name']}백성동원을 발동"); - pushNationHistory($nation, "●{$admin['year']}년 {$admin['month']}월:{$general['name']}{$josaYi} {$destcity['name']}백성동원을 발동"); - - //도시 성수 80% - $query = "update city set def=def2*0.8,wall=wall2*0.8 where city='{$destcity['city']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - // 국가보정 - if($nation['type'] == 11) { $term3 = Util::round($term3 / 2); } - if($nation['type'] == 12) { $term3 = $term3 * 2; } - - //전략기한 - $query = "update nation set strategic_cmd_limit={$term3} where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - //경험치, 공헌치 - $query = "update general set dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - -// pushWorldHistory($history, $admin['year'], $admin['month']); -// pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushSabotageLog($sabotagelog); - pushGenLog($general, $log); -} - -function process_73(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $connect=$db->get(); - - $log = []; - $alllog = []; - $history = []; - $sabotagelog = []; - - $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); - - $query = "select nation,name,type,strategic_cmd_limit,l{$general['level']}term,l{$general['level']}turn0 from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - $command = DecodeCommand($nation["l{$general['level']}turn0"]); - $which = $command[1]; - - $query = "select city,name,nation from city where city='$which'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $destcity = MYDB_fetch_array($result); - - $query = "select nation,name from nation where nation='{$destcity['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $destnation = 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); - - $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; } - - //$term2 = Util::round($genCount / 20); - //if($term2 == 0) { $term2 = 1; } - $term2 = 3; - $term3 = Util::round(sqrt($genCount*4)*10); - - $code = $nation["l{$general['level']}term"]; - if($code%100 == 73) { - $term = intdiv($code, 100) + 1; - $code = $term * 100 + 73; - } else { - $term = 1; - $code = 100 + 73; - } - - if($city['nation'] != $general['nation']) { - $log[] = "●{$admin['month']}월:아국이 아닙니다. 수몰 실패. <1>$date"; - } elseif($general['level'] < 5) { - $log[] = "●{$admin['month']}월:수뇌부가 아닙니다. 수몰 실패. <1>$date"; - } elseif($destcity['nation'] == 0) { - $log[] = "●{$admin['month']}월:공백지입니다. 수몰 실패. <1>$date"; - } elseif($destcity['nation'] == $general['nation']) { - $log[] = "●{$admin['month']}월:대상도시가 아국입니다. 수몰 실패. <1>$date"; - } elseif($dip['state'] > 0) { - $log[] = "●{$admin['month']}월:전쟁중인 상대국에만 가능합니다. 수몰 실패. <1>$date"; - } elseif($nation['strategic_cmd_limit'] > 0) { - $log[] = "●{$admin['month']}월:전략기한이 남았습니다. 수몰 실패. <1>$date"; - } elseif($term < $term2) { - $log[] = "●{$admin['month']}월:수몰 수행중... ({$term}/{$term2}) <1>$date"; - - $query = "update nation set l{$general['level']}term={$code} where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } else { - $log[] = "●{$admin['month']}월:수몰 발동! <1>$date"; - $exp = 5 * $term2; - $ded = 5 * $term2; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - $josaYi = JosaUtil::pick($general['name'], '이'); - $josaYiNation = JosaUtil::pick($nation['name'], '이'); - - $query = "select no,name from general where nation='{$general['nation']}' and no!='{$general['no']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $cnt = MYDB_num_rows($result); - $alllog[0] = "{$general['name']}{$josaYi} {$destcity['name']}수몰을 발동하였습니다."; - for($i=0; $i < $cnt; $i++) { - $gen = MYDB_fetch_array($result); - pushGenLog($gen, $alllog); - } - - $query = "select no,name from general where nation='{$destcity['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $cnt = MYDB_num_rows($result); - $alllog[0] = "{$destcity['name']}수몰이 발동되었습니다."; - for($i=0; $i < $cnt; $i++) { - $gen = MYDB_fetch_array($result); - pushGenLog($gen, $alllog); - } - -// $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} {$destcity['name']}수몰을 발동하였습니다."; -// $history[] = "●{$admin['year']}년 {$admin['month']}월:【전략】{$nation['name']}{$josaYiNation} {$destcity['name']}수몰을 발동하였습니다."; - $sabotagelog[] = "●{$admin['year']}년 {$admin['month']}월:【전략】{$nation['name']}{$josaYiNation} {$destcity['name']}수몰을 발동하였습니다."; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:{$destcity['name']}수몰을 발동"); - pushNationHistory($nation, "●{$admin['year']}년 {$admin['month']}월:{$general['name']}{$josaYi} {$destnation['name']}{$destcity['name']}수몰을 발동"); - pushNationHistory($destnation, "●{$admin['year']}년 {$admin['month']}월:{$nation['name']}{$general['name']}{$josaYi} 아국의 {$destcity['name']}수몰을 발동"); - - //도시 성수 80% 감소 - $query = "update city set def=def*0.2,wall=wall*0.2 where city='{$destcity['city']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - // 국가보정 - if($nation['type'] == 11) { $term3 = Util::round($term3 / 2); } - if($nation['type'] == 12) { $term3 = $term3 * 2; } - - //전략기한 - $query = "update nation set strategic_cmd_limit={$term3} where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - //경험치, 공헌치 - $query = "update general set dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - -// pushWorldHistory($history, $admin['year'], $admin['month']); -// pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushSabotageLog($sabotagelog); - pushGenLog($general, $log); -} - -function process_74(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $connect=$db->get(); - - $log = []; - $alllog = []; - $history = []; - $sabotagelog = []; - - $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); - - $query = "select nation,name,type,strategic_cmd_limit,l{$general['level']}term,l{$general['level']}turn0 from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - $command = DecodeCommand($nation["l{$general['level']}turn0"]); - $which = $command[1]; - - $query = "select city,name,nation from city where city='$which'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $destcity = MYDB_fetch_array($result); - - $query = "select nation,name from nation where nation='{$destcity['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $destnation = 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); - - $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; } - - //$term2 = Util::round($genCount / 20); - //if($term2 == 0) { $term2 = 1; } - $term2 = 2; - $term3 = Util::round(sqrt($genCount*4)*10); - - $code = $nation["l{$general['level']}term"]; - if($code%100 == 74) { - $term = intdiv($code, 100) + 1; - $code = $term * 100 + 74; - } else { - $term = 1; - $code = 100 + 74; - } - - if($city['nation'] != $general['nation']) { - $log[] = "●{$admin['month']}월:아국이 아닙니다. 허보 실패. <1>$date"; - } elseif($general['level'] < 5) { - $log[] = "●{$admin['month']}월:수뇌부가 아닙니다. 허보 실패. <1>$date"; - } elseif($destcity['nation'] == 0) { - $log[] = "●{$admin['month']}월:공백지입니다. 허보 실패. <1>$date"; - } elseif($destcity['nation'] == $general['nation']) { - $log[] = "●{$admin['month']}월:대상도시가 아국입니다. 허보 실패. <1>$date"; - } elseif($dip['state'] > 1) { - $log[] = "●{$admin['month']}월:선포,전쟁중인 상대국에만 가능합니다. 허보 실패. <1>$date"; - } elseif($nation['strategic_cmd_limit'] > 0) { - $log[] = "●{$admin['month']}월:전략기한이 남았습니다. 허보 실패. <1>$date"; - } elseif($term < $term2) { - $log[] = "●{$admin['month']}월:허보 수행중... ({$term}/{$term2}) <1>$date"; - - $query = "update nation set l{$general['level']}term={$code} where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } else { - $log[] = "●{$admin['month']}월:허보 발동! <1>$date"; - $exp = 5 * $term2; - $ded = 5 * $term2; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - $josaYi = JosaUtil::pick($general['name'], '이'); - $josaYiNation = JosaUtil::pick($nation['name'], '이'); - - $query = "select no,name from general where nation='{$general['nation']}' and no!='{$general['no']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $cnt = MYDB_num_rows($result); - $alllog[0] = "{$general['name']}{$josaYi} {$destcity['name']}허보를 발동하였습니다."; - for($i=0; $i < $cnt; $i++) { - $gen = MYDB_fetch_array($result); - pushGenLog($gen, $alllog); - } - -// $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} {$destcity['name']}허보를 발동하였습니다."; -// $history[] = "●{$admin['year']}년 {$admin['month']}월:【전략】{$nation['name']}{$josaYiNation} {$destcity['name']}허보를 발동하였습니다."; - $sabotagelog[] = "●{$admin['year']}년 {$admin['month']}월:【전략】{$nation['name']}{$josaYiNation} {$destcity['name']}허보를 발동하였습니다."; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:{$destcity['name']}허보를 발동"); - pushNationHistory($nation, "●{$admin['year']}년 {$admin['month']}월:{$general['name']}{$josaYi} {$destnation['name']}{$destcity['name']}허보를 발동"); - pushNationHistory($destnation, "●{$admin['year']}년 {$admin['month']}월:{$nation['name']}{$general['name']}{$josaYi} 아국의 {$destcity['name']}허보를 발동"); - - //상대국 도시 전부 검색 - $query = "select city from city where nation='{$destcity['nation']}' and supply=1"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $cityCount = MYDB_num_rows($result); - $cities = []; - for($i=0; $i < $cityCount; $i++) { - $dCity = MYDB_fetch_array($result); - $cities[$i] = $dCity['city']; - } - //상대국 유저 랜덤 배치 - $query = "select no,name from general where nation='{$destcity['nation']}' and city='{$destcity['city']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $count = MYDB_num_rows($result); - $opplog = ["●상대국의 허보에 당했다! <1>$date"]; - for($i=0; $i < $count; $i++) { - $gen = MYDB_fetch_array($result); - $selCity = $cities[rand() % $cityCount]; - //현재도시이면 한번 다시 랜덤추첨 - if($selCity == $destcity['city']) { $selCity = $cities[rand() % $cityCount]; } - - $query = "update general set city={$selCity} where no='{$gen['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - pushGenLog($gen, $opplog); - } - - // 국가보정 - if($nation['type'] == 11) { $term3 = Util::round($term3 / 2); } - if($nation['type'] == 12) { $term3 = $term3 * 2; } - - //전략기한 - $query = "update nation set strategic_cmd_limit={$term3} where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - //경험치, 공헌치 - $query = "update general set dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - -// pushWorldHistory($history, $admin['year'], $admin['month']); -// pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushSabotageLog($sabotagelog); - pushGenLog($general, $log); -} - -function process_75(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $connect=$db->get(); - - $log = []; - $alllog = []; - $history = []; - $sabotagelog = []; - - $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); - - $query = "select nation,name,type,strategic_cmd_limit,l{$general['level']}term,l{$general['level']}turn0 from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - $command = DecodeCommand($nation["l{$general['level']}turn0"]); - $which = $command[1]; - - $query = "select nation,name from nation where nation='$which'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $destnation = MYDB_fetch_array($result); - - $query = "select state from diplomacy where me='{$general['nation']}' and you='{$destnation['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $dip = MYDB_fetch_array($result); - - $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; } - - //$term2 = Util::round($genCount / 40); - //if($term2 == 0) { $term2 = 1; } - $term2 = 3; - $term3 = Util::round(sqrt($genCount*2)*10); - - $code = $nation["l{$general['level']}term"]; - if($code%100 == 75) { - $term = intdiv($code, 100) + 1; - $code = $term * 100 + 75; - } else { - $term = 1; - $code = 100 + 75; - } - - if(!$destnation) { - $log[] = "●{$admin['month']}월:없는 국가입니다. 피장파장 실패. <1>$date"; - } elseif($city['nation'] != $general['nation']) { - $log[] = "●{$admin['month']}월:아국이 아닙니다. 피장파장 실패. <1>$date"; - } elseif($general['level'] < 5) { - $log[] = "●{$admin['month']}월:수뇌부가 아닙니다. 피장파장 실패. <1>$date"; - } elseif($dip['state'] > 1) { - $log[] = "●{$admin['month']}월:선포,전쟁중인 상대국에만 가능합니다. 피장파장 실패. <1>$date"; - } elseif($nation['strategic_cmd_limit'] > 0) { - $log[] = "●{$admin['month']}월:전략기한이 남았습니다. 피장파장 실패. <1>$date"; - } elseif($term < $term2) { - $log[] = "●{$admin['month']}월:피장파장 수행중... ({$term}/{$term2}) <1>$date"; - - $query = "update nation set l{$general['level']}term={$code} where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } else { - $log[] = "●{$admin['month']}월:피장파장 발동! <1>$date"; - $exp = 5 * $term2; - $ded = 5 * $term2; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - $josaYi = JosaUtil::pick($general['name'], '이'); - $josaYiNation = JosaUtil::pick($nation['name'], '이'); - - $query = "select no,name from general where nation='{$general['nation']}' and no!='{$general['no']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $cnt = MYDB_num_rows($result); - $alllog[0] = "{$general['name']}{$josaYi} {$destnation['name']}피장파장을 발동하였습니다."; - for($i=0; $i < $cnt; $i++) { - $gen = MYDB_fetch_array($result); - pushGenLog($gen, $alllog); - } - - $query = "select no,name from general where nation='{$destnation['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $cnt = MYDB_num_rows($result); - $alllog[0] = "●아국에 피장파장이 발동되었습니다."; - for($i=0; $i < $cnt; $i++) { - $gen = MYDB_fetch_array($result); - pushGenLog($gen, $alllog); - } - -// $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} {$destnation['name']}피장파장을 발동하였습니다."; -// $history[] = "●{$admin['year']}년 {$admin['month']}월:【전략】{$nation['name']}{$josaYiNation} {$destnation['name']}피장파장을 발동하였습니다."; - $sabotagelog[] = "●{$admin['year']}년 {$admin['month']}월:【전략】{$nation['name']}{$josaYiNation} {$destnation['name']}피장파장을 발동하였습니다."; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:{$destnation['name']}피장파장을 발동"); - pushNationHistory($nation, "●{$admin['year']}년 {$admin['month']}월:{$general['name']}{$josaYi} {$destnation['name']}피장파장을 발동"); - pushNationHistory($destnation, "●{$admin['year']}년 {$admin['month']}월:{$nation['name']}{$general['name']}{$josaYi} 아국에 피장파장을 발동"); - - //전략기한+60 - $query = "update nation set strategic_cmd_limit=strategic_cmd_limit+60 where nation='{$destnation['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - // 국가보정 - if($nation['type'] == 11) { $term3 = Util::round($term3 / 2); } - if($nation['type'] == 12) { $term3 = $term3 * 2; } - - //전략기한, 최소72 - if($term3 < 72) { $term3 = 72; } - $query = "update nation set strategic_cmd_limit={$term3} where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - //경험치, 공헌치 - $query = "update general set dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - -// pushWorldHistory($history, $admin['year'], $admin['month']); -// pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushSabotageLog($sabotagelog); - pushGenLog($general, $log); -} - -function process_76(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $connect=$db->get(); - - $log = []; - $alllog = []; - $history = []; - $sabotagelog = []; - - $date = substr($general['turntime'],11,5); - - $admin = $gameStor->getValues(['startyear','year','month','develcost','turnterm']); - - $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 nation,name,type,strategic_cmd_limit,l{$general['level']}term,l{$general['level']}turn0 from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - $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; } - - //$term2 = Util::round($genCount / 10); - //if($term2 == 0) { $term2 = 1; } - $term2 = 3; - $term3 = Util::round(sqrt($genCount*10)*10); - - $code = $nation["l{$general['level']}term"]; - if($code%100 == 76) { - $term = intdiv($code, 100) + 1; - $code = $term * 100 + 76; - } else { - $term = 1; - $code = 100 + 76; - } - - if($admin['year'] < $admin['startyear']+3) { - $log[] = "●{$admin['month']}월:현재 초반 제한중입니다. 의병모집 실패. <1>$date"; - } elseif($city['nation'] != $general['nation']) { - $log[] = "●{$admin['month']}월:아국이 아닙니다. 의병모집 실패. <1>$date"; - } elseif($general['level'] < 5) { - $log[] = "●{$admin['month']}월:수뇌부가 아닙니다. 의병모집 실패. <1>$date"; - } elseif($nation['strategic_cmd_limit'] > 0) { - $log[] = "●{$admin['month']}월:전략기한이 남았습니다. 의병모집 실패. <1>$date"; - } elseif($term < $term2) { - $log[] = "●{$admin['month']}월:의병모집 수행중... ({$term}/{$term2}) <1>$date"; - - $query = "update nation set l{$general['level']}term={$code} where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } else { - $log[] = "●{$admin['month']}월:의병모집 발동! <1>$date"; - $exp = 5 * $term2; - $ded = 5 * $term2; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - $josaYi = JosaUtil::pick($general['name'], '이'); - $josaYiNation = JosaUtil::pick($nation['name'], '이'); - - $query = "select no,name from general where nation='{$general['nation']}' and no!='{$general['no']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $cnt = MYDB_num_rows($result); - $alllog[0] = "{$general['name']}{$josaYi} 의병모집을 발동하였습니다."; - for($i=0; $i < $cnt; $i++) { - $gen = MYDB_fetch_array($result); - pushGenLog($gen, $alllog); - } - -// $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} 의병모집을 발동하였습니다."; -// $history[] = "●{$admin['year']}년 {$admin['month']}월:【전략】{$nation['name']}{$josaYiNation} 의병모집을 발동하였습니다."; - $sabotagelog[] = "●{$admin['year']}년 {$admin['month']}월:【전략】{$nation['name']}{$josaYiNation} 의병모집을 발동하였습니다."; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:의병모집을 발동"); - pushNationHistory($nation, "●{$admin['year']}년 {$admin['month']}월:{$general['name']}{$josaYi} 의병모집을 발동"); - - $avgGenNum = $db->queryFirstField('SELECT avg(gennum) FROM nation'); - $addGenCount = 5 + Util::round($avgGenNum / 10); - - $query = "select avg(age) as age, max(leadership+power+intel) as stat_sum, avg(dedication) as ded,avg(experience) as exp, avg(dex0) as dex0, avg(dex10) as dex10, avg(dex20) as dex20, avg(dex30) as dex30, avg(dex40) as dex40 from general where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $avgGen = MYDB_fetch_array($result); - - //의병추가 - $npc = 4; - $npcid = Util::randRangeInt(0, 9999999); - for($i=0; $i < $addGenCount; $i++) { - // 무장 40%, 지장 40%, 무지장 20% - $type = rand() % 10; - switch($type) { - case 0: case 1: case 2: case 3: - $leadership = GameConst::$defaultStatMax - 10 + rand()%11; - $intel = GameConst::$defaultStatMin + rand()%6; - $power = GameConst::$defaultStatTotal - $leadership - $intel; - break; - case 4: case 5: case 6: case 7: - $leadership = GameConst::$defaultStatMax - 10 + rand()%11; - $power = GameConst::$defaultStatMin + rand()%6; - $intel = GameConst::$defaultStatTotal - $leadership - $power; - break; - case 8: case 9: - $leadership = GameConst::$defaultStatMin + rand()%6; - $power = GameConst::$defaultStatMax - 10 + rand()%11; - $intel = GameConst::$defaultStatTotal - $leadership - $power; - break; - } - // 국내 최고능치 기준으로 랜덤성 스케일링 - if($avgGen['stat_sum'] > 210) { - $leadership = Util::round($leadership * $avgGen['stat_sum'] / GameConst::$defaultStatTotal * (60+rand()%31)/100); - $power = Util::round($power * $avgGen['stat_sum'] / GameConst::$defaultStatTotal * (60+rand()%31)/100); - $intel = Util::round($intel * $avgGen['stat_sum'] / GameConst::$defaultStatTotal * (60+rand()%31)/100); - } elseif($avgGen['stat_sum'] > 180) { - $leadership = Util::round($leadership * $avgGen['stat_sum'] / GameConst::$defaultStatTotal * (75+rand()%21)/100); - $power = Util::round($power * $avgGen['stat_sum'] / GameConst::$defaultStatTotal * (75+rand()%21)/100); - $intel = Util::round($intel * $avgGen['stat_sum'] / GameConst::$defaultStatTotal * (75+rand()%21)/100); - } else { - $leadership = Util::round($leadership * $avgGen['stat_sum'] / GameConst::$defaultStatTotal * (90+rand()%11)/100); - $power = Util::round($power * $avgGen['stat_sum'] / GameConst::$defaultStatTotal * (90+rand()%11)/100); - $intel = Util::round($intel * $avgGen['stat_sum'] / GameConst::$defaultStatTotal * (90+rand()%11)/100); - } - $over1 = 0; - $over2 = 0; - $over3 = 0; - // 너무 높은 능치는 다른 능치로 분산 - if($leadership > 90) { - $over1 = rand() % ($leadership - 90) + 5; - $leadership -= $over1; - } - if($power > 90) { - $over2 = rand() % ($power - 90) + 5; - $power -= $over2; - } - if($intel > 90) { - $over3 = rand() % ($intel - 90) + 5; - $intel -= $over3; - } - // 낮은 능치쪽으로 합산 - if($type == 0) { - $intel = $intel + $over1 + $over2 + $over3; - } else { - $power = $power + $over1 + $over2 + $over3; - } - // 너무 높은 능치는 제한 - if($leadership > GameConst::$defaultStatNPCMax) { - $leadership = GameConst::$defaultStatNPCMax; - } - if($power > GameConst::$defaultStatNPCMax) { - $power = GameConst::$defaultStatNPCMax; - } - if($intel > GameConst::$defaultStatNPCMax) { - $intel = GameConst::$defaultStatNPCMax; - } - - $affinity = rand() % 150 + 1; - $name = "ⓖ의병장{$npcid}"; - $picture = 'default.jpg'; - $turntime = getRandTurn($admin['turnterm']); - $personal = rand() % 10; - $bornyear = $admin['year']; - $deadyear = $admin['year'] + 3; - $killturn = 64 + rand()%7; - - @MYDB_query(" - insert into general ( - npc,npc_org,affinity,name,picture,nation, - city,leadership,power,intel,experience,dedication, - level,gold,rice,crew,crewtype,train,atmos,tnmt, - weapon,book,horse,turntime,killturn,age,belong,personal,special,specage,special2,specage2,npcmsg, - makelimit,bornyear,deadyear, - dex0, dex10, dex20, dex30, dex40 - ) values ( - '$npc','$npc','$affinity','$name','$picture','{$nation['nation']}', - '{$general['city']}','$leadership','$power','$intel','{$avgGen['exp']}','{$avgGen['ded']}', - '1','100','100','0','".GameUnitConst::DEFAULT_CREWTYPE."','0','0','0', - '0','0','0','$turntime','$killturn','{$avgGen['age']}','1','$personal','0','0','0','0','', - '0','$bornyear','$deadyear', - '{$avgGen['dex0']}','{$avgGen['dex10']}','{$avgGen['dex20']}','{$avgGen['dex30']}','{$avgGen['dex40']}' - )", - $connect - ) or Error(__LINE__.MYDB_error($connect),""); - - $npcid++; - } - - // 국가보정 - if($nation['type'] == 11) { $term3 = Util::round($term3 / 2); } - if($nation['type'] == 12) { $term3 = $term3 * 2; } - - //전략기한 - $db->update('nation', [ - 'strategic_cmd_limit'=>$term3, - 'gennum'=>$db->sqleval('gennum + %i', $addGenCount), - ], 'nation=%i', $general['nation']); - - //경험치, 공헌치 - $query = "update general set dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - -// pushWorldHistory($history, $admin['year'], $admin['month']); -// pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushSabotageLog($sabotagelog); - pushGenLog($general, $log); -} - -function process_77(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $connect=$db->get(); - - $log = []; - $alllog = []; - $history = []; - $sabotagelog = []; - - $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); - - $query = "select nation,name,type,strategic_cmd_limit,l{$general['level']}term,l{$general['level']}turn0 from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - $command = DecodeCommand($nation["l{$general['level']}turn0"]); - $which = $command[1]; - - $query = "select nation,name from nation where nation='$which'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $destnation = MYDB_fetch_array($result); - - $query = "select state,term from diplomacy where me='{$general['nation']}' and you='{$destnation['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $dip = MYDB_fetch_array($result); - - $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; } - - $term2 = 1; - $term3 = Util::round(sqrt($genCount*16)*10); - - $code = $nation["l{$general['level']}term"]; - if($code%100 == 77) { - $term = intdiv($code, 100) + 1; - $code = $term * 100 + 77; - } else { - $term = 1; - $code = 100 + 77; - } - - if(!$destnation) { - $log[] = "●{$admin['month']}월:없는 국가입니다. 이호경식 실패. <1>$date"; - } elseif($city['nation'] != $general['nation']) { - $log[] = "●{$admin['month']}월:아국이 아닙니다. 이호경식 실패. <1>$date"; - } elseif($general['level'] < 5) { - $log[] = "●{$admin['month']}월:수뇌부가 아닙니다. 이호경식 실패. <1>$date"; - } elseif($dip['state'] > 1) { - $log[] = "●{$admin['month']}월:선포,전쟁중인 상대국에만 가능합니다. 이호경식 실패. <1>$date"; - } elseif($nation['strategic_cmd_limit'] > 0) { - $log[] = "●{$admin['month']}월:전략기한이 남았습니다. 이호경식 실패. <1>$date"; - } elseif($term < $term2) { - $log[] = "●{$admin['month']}월:이호경식 수행중... ({$term}/{$term2}) <1>$date"; - - $query = "update nation set l{$general['level']}term={$code} where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } else { - $log[] = "●{$admin['month']}월:이호경식 발동! <1>$date"; - $exp = 5 * $term2; - $ded = 5 * $term2; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - $josaYi = JosaUtil::pick($general['name'], '이'); - $josaYiNation = JosaUtil::pick($nation['name'], '이'); - - $query = "select no,name from general where nation='{$general['nation']}' and no!='{$general['no']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $cnt = MYDB_num_rows($result); - $alllog[0] = "{$general['name']}{$josaYi} {$destnation['name']}이호경식을 발동하였습니다."; - for($i=0; $i < $cnt; $i++) { - $gen = MYDB_fetch_array($result); - pushGenLog($gen, $alllog); - } - - $query = "select no,name from general where nation='{$destnation['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $cnt = MYDB_num_rows($result); - $alllog[0] = "●아국에 이호경식이 발동되었습니다."; - for($i=0; $i < $cnt; $i++) { - $gen = MYDB_fetch_array($result); - pushGenLog($gen, $alllog); - } - -// $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} {$destnation['name']}이호경식을 발동하였습니다."; -// $history[] = "●{$admin['year']}년 {$admin['month']}월:【전략】{$nation['name']}{$josaYiNation} {$destnation['name']}이호경식을 발동하였습니다."; - $sabotagelog[] = "●{$admin['year']}년 {$admin['month']}월:【전략】{$nation['name']}{$josaYiNation} {$destnation['name']}이호경식을 발동하였습니다."; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:{$destnation['name']}이호경식을 발동"); - pushNationHistory($nation, "●{$admin['year']}년 {$admin['month']}월:{$general['name']}{$josaYi} {$destnation['name']}이호경식을 발동"); - pushNationHistory($destnation, "●{$admin['year']}년 {$admin['month']}월:{$nation['name']}{$general['name']}{$josaYi} 아국에 이호경식을 발동"); - - //선포+3개월 - if($dip['state'] == 0) { - $query = "update diplomacy set state=1,term=3 where (me='{$general['nation']}' and you='{$destnation['nation']}') or (you='{$general['nation']}' and me='{$destnation['nation']}')"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } else { - $query = "update diplomacy set term=term+3 where (me='{$general['nation']}' and you='{$destnation['nation']}') or (you='{$general['nation']}' and me='{$destnation['nation']}')"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - - // 국가보정 - if($nation['type'] == 11) { $term3 = Util::round($term3 / 2); } - if($nation['type'] == 12) { $term3 = $term3 * 2; } - - //전략기한 - $query = "update nation set strategic_cmd_limit={$term3} where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - //경험치, 공헌치 - $query = "update general set dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - -// pushWorldHistory($history, $admin['year'], $admin['month']); -// pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushSabotageLog($sabotagelog); - pushGenLog($general, $log); -} - -function process_78(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $connect=$db->get(); - - $log = []; - $alllog = []; - $history = []; - $sabotagelog = []; - - $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); - - $query = "select nation,name,type,strategic_cmd_limit,l{$general['level']}term,l{$general['level']}turn0 from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - $command = DecodeCommand($nation["l{$general['level']}turn0"]); - $which = $command[1]; - - $query = "select nation,name from nation where nation='$which'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $destnation = MYDB_fetch_array($result); - - $query = "select state,term from diplomacy where me='{$general['nation']}' and you='{$destnation['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $dip = MYDB_fetch_array($result); - - $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; } - - $term2 = 1; - $term3 = Util::round(sqrt($genCount*16)*10); - - $code = $nation["l{$general['level']}term"]; - if($code%100 == 78) { - $term = intdiv($code, 100) + 1; - $code = $term * 100 + 78; - } else { - $term = 1; - $code = 100 + 78; - } - - if(!$destnation) { - $log[] = "●{$admin['month']}월:없는 국가입니다. 급습 실패. <1>$date"; - } elseif($city['nation'] != $general['nation']) { - $log[] = "●{$admin['month']}월:아국이 아닙니다. 급습 실패. <1>$date"; - } elseif($general['level'] < 5) { - $log[] = "●{$admin['month']}월:수뇌부가 아닙니다. 급습 실패. <1>$date"; - } elseif($dip['state'] != 1) { - $log[] = "●{$admin['month']}월:선포중인 상대국에만 가능합니다. 급습 실패. <1>$date"; - } elseif($dip['term'] < 12) { - $log[] = "●{$admin['month']}월:선포 12개월 이상인 상대국에만 가능합니다. 급습 실패. <1>$date"; - } elseif($nation['strategic_cmd_limit'] > 0) { - $log[] = "●{$admin['month']}월:전략기한이 남았습니다. 급습 실패. <1>$date"; - } elseif($term < $term2) { - $log[] = "●{$admin['month']}월:급습 수행중... ({$term}/{$term2}) <1>$date"; - - $query = "update nation set l{$general['level']}term={$code} where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } else { - $log[] = "●{$admin['month']}월:급습 발동! <1>$date"; - $exp = 5 * $term2; - $ded = 5 * $term2; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - $josaYi = JosaUtil::pick($general['name'], '이'); - $josaYiNation = JosaUtil::pick($nation['name'], '이'); - - $query = "select no,name from general where nation='{$general['nation']}' and no!='{$general['no']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $cnt = MYDB_num_rows($result); - $alllog[0] = "{$general['name']}{$josaYi} {$destnation['name']}급습을 발동하였습니다."; - for($i=0; $i < $cnt; $i++) { - $gen = MYDB_fetch_array($result); - pushGenLog($gen, $alllog); - } - - $query = "select no,name from general where nation='{$destnation['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $cnt = MYDB_num_rows($result); - $alllog[0] = "●아국에 급습이 발동되었습니다."; - for($i=0; $i < $cnt; $i++) { - $gen = MYDB_fetch_array($result); - pushGenLog($gen, $alllog); - } - -// $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} {$destnation['name']}급습을 발동하였습니다."; -// $history[] = "●{$admin['year']}년 {$admin['month']}월:【전략】{$nation['name']}{$josaYiNation} {$destnation['name']}급습을 발동하였습니다."; - $sabotagelog[] = "●{$admin['year']}년 {$admin['month']}월:【전략】{$nation['name']}{$josaYiNation} {$destnation['name']}급습을 발동하였습니다."; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:{$destnation['name']}급습을 발동"); - pushNationHistory($nation, "●{$admin['year']}년 {$admin['month']}월:{$general['name']}{$josaYi} {$destnation['name']}급습을 발동"); - pushNationHistory($destnation, "●{$admin['year']}년 {$admin['month']}월:{$nation['name']}{$general['name']}{$josaYi} 아국에 급습을 발동"); - - //선포-3개월 - $query = "update diplomacy set term=term-3 where (me='{$general['nation']}' and you='{$destnation['nation']}') or (you='{$general['nation']}' and me='{$destnation['nation']}')"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - // 국가보정 - if($nation['type'] == 11) { $term3 = Util::round($term3 / 2); } - if($nation['type'] == 12) { $term3 = $term3 * 2; } - - //전략기한 - $query = "update nation set strategic_cmd_limit={$term3} where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - //경험치, 공헌치 - $query = "update general set dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - -// pushWorldHistory($history, $admin['year'], $admin['month']); -// pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushSabotageLog($sabotagelog); - pushGenLog($general, $log); -} - -function process_81(&$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 from city where city='{$general['city']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $city = MYDB_fetch_array($result); - - $query = "select nation,can_change_flag,name,type,strategic_cmd_limit,l{$general['level']}term,l{$general['level']}turn0 from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - $command = DecodeCommand($nation["l{$general['level']}turn0"]); - $which = $command[1]; - $colors = GetNationColors(); - if($which >= count($colors)) { $which = 0; } - $color = $colors[$which]; - - if($city['nation'] != $general['nation']) { - $log[] = "●{$admin['month']}월:아국이 아닙니다. 국기변경 실패. <1>$date"; - } elseif($general['level'] < 5) { - $log[] = "●{$admin['month']}월:수뇌부가 아닙니다. 국기변경 실패. <1>$date"; - } elseif($nation['can_change_flag'] <= 0) { - $log[] = "●{$admin['month']}월:더이상 변경이 불가능합니다. 국기변경 실패. <1>$date"; - } else { - $log[] = "●{$admin['month']}월:국기를 변경합니다. <1>$date"; - $exp = 10; - $ded = 10; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - $josaYi = JosaUtil::pick($general['name'], '이'); - $josaYiNation = JosaUtil::pick($nation['name'], '이'); - - $query = "select no,name from general where nation='{$general['nation']}' and no!='{$general['no']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $cnt = MYDB_num_rows($result); - $genlog = ["{$general['name']}{$josaYi} 국기를 변경합니다."]; - for($i=0; $i < $cnt; $i++) { - $gen = MYDB_fetch_array($result); - pushGenLog($gen, $genlog); - } - - $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} 국기를 변경하였습니다."; - $history[] = "●{$admin['year']}년 {$admin['month']}월:【국기변경】{$nation['name']}{$josaYiNation} 국기를 변경하였습니다."; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:국기를 변경"); - pushNationHistory($nation, "●{$admin['year']}년 {$admin['month']}월:{$general['name']}{$josaYi} 국기를 변경"); - - //국기변경 - $query = "update nation set color='$color',can_change_flag=can_change_flag-1 where nation='{$nation['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - //경험치, 공헌치 - $query = "update general set dedication=dedication+'$ded',experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - refreshNationStaticInfo(); - } - - pushWorldHistory($history, $admin['year'], $admin['month']); - pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushGenLog($general, $log); -} diff --git a/hwe/func_process_personnel.old.php b/hwe/func_process_personnel.old.php deleted file mode 100644 index 94714293..00000000 --- a/hwe/func_process_personnel.old.php +++ /dev/null @@ -1,1118 +0,0 @@ -get(); - - $log = []; - $alllog = []; - $history = []; - $date = substr($general['turntime'],11,5); - - $admin = $gameStor->getValues(['startyear','year','month','develcost','join_mode']); - - $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']); - $who = $command[1]; - - $query = "select * from general where no='$who'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $you = MYDB_fetch_array($result); - - $cost = Util::round($admin['develcost'] + ($you['experience'] + $you['dedication'])/1000) * 10; - - if($admin['join_mode'] == 'onlyRandom'){ - $log[] = "●{$admin['month']}월:랜덤 임관만 가능합니다. 등용 실패. <1>$date"; - } - else if(!$you) { - $log[] = "●{$admin['month']}월:없는 장수입니다. 등용 실패. <1>$date"; - } elseif($admin['year'] < $admin['startyear']+3) { - $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['gold'] < $cost) { - $log[] = "●{$admin['month']}월:자금이 모자랍니다. 등용 실패. <1>$date"; - } else { - $log[] = "●{$admin['month']}월:{$you['name']}에게 등용 권유 서신을 보냈습니다. <1>$date"; - $exp = 100; - $ded = 200; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - $msg = ScoutMessage::buildScoutMessage($general['no'], $who, $reason); - if($msg){ - $msg->send(true); - } - - - $general['intel2']++; - $query = "update general set resturn='SUCCESS',gold=gold-'$cost',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); - } - pushGenLog($general, $log); -} - -function process_25(&$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', 'scenario', 'fiction', 'join_mode', 'init_year', 'init_month']); - - $query = "select nation 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']); - $where = $command[1]; - - if($admin['join_mode'] == 'onlyRandom' && $where < 98){ - $where = 99; - } - - $nation = null; - - $joinedNations = Json::decode($general['nations']); - - // 랜덤임관인 경우 - if($general['npc'] >= 2 && $where >= 98 && !$admin['fiction'] && 1000 <= $admin['scenario'] && $admin['scenario'] < 2000){ - //'사실' 모드에서는 '성향'에 우선을 두되, 장수수, 랜덤에 비중을 둠 - $nations = $db->query( - 'SELECT nation.`name` as `name`,nation.nation as nation,scout,nation.`level` as `level`,gennum,`affinity` FROM nation join general on general.nation = nation.nation and general.level = 12 WHERE nation.nation not in %li and gennum < %i and scout = 0', - $joinedNations, - ($admin['year'] < $admin['startyear']+3)?GameConst::$initialNationGenLimit:GameConst::$defaultMaxGeneral - ); - shuffle($nations); - - $allGen = array_sum(array_map(function($item) { - return $item['gennum']; - }, $nations)); - - $maxScore = 1<<30; - - foreach($nations as $testNation){ - $affinity = abs($general['affinity'] - $testNation['affinity']); - $affinity = min($affinity, abs($affinity - 150)); - - $score = log($affinity + 1, 2);//0~ - - //쉐킷쉐킷 - $score += Util::randF(); - - $score += sqrt($testNation['gennum']/$allGen); - - if($score < $maxScore){ - $maxScore = $score; - $nation = $testNation; - } - } - - } - else if($where >= 98) { - //랜임 - $generals = []; - foreach($db->queryAllLists('SELECT count(no), nation FROM general WHERE npc <= 2 AND nation > 0 GROUP BY nation') as list($cnt, $nation)){ - $generals[$nation] = $cnt; - } - - foreach($db->queryAllLists('SELECT count(no), nation FROM general WHERE 3 <= npc and npc <= 4 AND nation > 0 GROUP BY nation') as list($cnt, $nation)){ - //의병, 인탐장은 1/3로 카운트 - if(key_exists($nation, $generals)){ - $generals[$nation] += $cnt / 3; - } - else{ - $generals[$nation] = $cnt / 3; - } - } - - $allGen = array_sum($generals); - - $genLimit = GameConst::$defaultMaxGeneral; - if($admin['join_mode'] == 'onlyRandom' && TimeUtil::IsRangeMonth($admin['init_year'], $admin['init_month'], 1, $admin['year'], $admin['month'])){ - $genLimit = GameConst::$initialNationGenLimitForRandInit; - } - else if($admin['year'] < $admin['startyear'] + 3){ - $genLimit = GameConst::$initialNationGenLimit; - } - - $nations = $db->query( - 'SELECT nation.`name` as `name`,nation.nation as nation,scout,nation.`level` as `level`,gennum,`injury` FROM nation join general on general.nation = nation.nation and general.level = 12 WHERE nation.nation not in %li and gennum < %i and scout = 0', - $joinedNations, - $genLimit - ); - shuffle($nations); - - $randVals = []; - foreach($nations as $idx=>$testNation){ - // 임관금지없음 국가, 방랑군 제외 - if($where == 98 && $testNation['level'] == 0){ - continue; - } - - $score = 1; - if($admin['startyear']+3 > $admin['year'] && $general['npc'] == 2){ - $score *= sqrt((100-max(30, $testNation['injury']))/100); - } - - $score *= $allGen/$generals[$testNation['nation']]; - $randVals[$idx] = $score; - } - - if($randVals){ - $nation = $nations[Util::choiceRandomUsingWeight($randVals)]; - } - else{ - $nation = null; - } - - } else { - $nation = $db->queryFirstRow('SELECT `name`,nation,scout,`level` FROM nation WHERE nation=%i', $where); - } - - if($nation){ - $gencount = $db->queryFirstField('SELECT count(`no`) FROM general WHERE nation=%i', $nation['nation']); - $josaUn = JosaUtil::pick($nation['name'], '은'); - } - - if(!$nation) { - $log[] = "●{$admin['month']}월:임관할 국가가 없습니다. 임관 실패. <1>$date"; - if($where >= 98 && $genLimit == GameConst::$initialNationGenLimitForRandInit){ - //랜덤 모드, 초기화시에는 랜덤 임관을 대신 한턴 더 넣어준다. - $db->update('general', [ - 'turn1'=>EncodeCommand(0, 0, $where, 25), - ], '`no` = %i', $general['no']); - pushGenLog($general, $log); - process_42($general); - return; - } - } elseif($general['nation'] != 0) { - $log[] = "●{$admin['month']}월:재야가 아닙니다. 임관 실패. <1>$date"; - } elseif($nation['nation'] == 0) { - $log[] = "●{$admin['month']}월:없는 국가입니다. 임관 실패. <1>$date"; - } elseif($nation['level'] == 0 && $gencount >= GameConst::$initialNationGenLimit) { - $log[] = "●{$admin['month']}월:현재 {$nation['name']}{$josaUn} 임관이 제한되고 있습니다. 임관 실패."; - } elseif($admin['year'] < $admin['startyear']+3 && $gencount >= GameConst::$initialNationGenLimit) { - $log[] = "●{$admin['month']}월:현재 {$nation['name']}{$josaUn} 임관이 제한되고 있습니다. 임관 실패."; - } elseif($nation['scout'] == 1 && $general['npc'] != 9) { - $log[] = "●{$admin['month']}월:현재 {$nation['name']}{$josaUn} 임관이 금지되어 있습니다. 임관 실패."; - } elseif($general['makelimit'] > 0 && $general['npc'] != 9) { - $log[] = "●{$admin['month']}월:재야가 된지 12턴이 지나야 합니다. 임관 실패. <1>$date"; - } elseif(in_array($nation['nation'], $joinedNations)) { - $log[] = "●{$admin['month']}월:이미 임관했었던 국가입니다. 임관 실패. <1>$date"; - } else { - $josaYi = JosaUtil::pick($general['name'], '이'); - if($where == 99 || $where == 98) { - $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} 어쩌다보니 {$nation['name']}임관했습니다."; - $log[] = "●{$admin['month']}월:{$nation['name']}에 랜덤으로 임관했습니다. <1>$date"; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:{$nation['name']}에 임관"); - } else { - $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} {$nation['name']}임관했습니다."; - $log[] = "●{$admin['month']}월:{$nation['name']}에 임관했습니다. <1>$date"; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:{$nation['name']}에 임관"); - } - - if($gencount < GameConst::$initialNationGenLimit) { $exp = 700; } - else { $exp = 100; } - $ded = 0; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - // 군주가 있는 곳으로 이동 - $query = "select city from general where nation='{$nation['nation']}' and level='12'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $king = MYDB_fetch_array($result); - - - // NPC초반시 임관기록 추가 안함 - if($general['npc'] > 1 && $admin['year'] < $admin['startyear']+3) { - } else { - $joinedNations[] = $nation['nation']; - } - - // 국적 바꾸고 등급 일반으로 // 명성 상승 - $db->update('general', [ - 'resturn'=>'SUCCESS', - 'nation'=>$nation['nation'], - 'nations'=>Json::encode($joinedNations), - 'level'=>1, - 'permission'=>'normal', - 'experience'=>$db->sqleval('experience + %i', $exp), - 'city'=>$king['city'], - 'belong'=>1 - ], 'no=%i', $general['no']); - - $db->update('nation', [ - 'gennum'=>$gencount + 1, - ], 'nation=%i', $nation['nation']); - - if($where < 99) { - $log = uniqueItem($general, $log); - } else { - $log = uniqueItem($general, $log, 2); - } - } - - pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushGenLog($general, $log); -} - -function process_29(&$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','npccount','turnterm','scenario','maxgeneral', 'turntime']); - - $query = "select nation,name,level,gennum,scout from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - $josaUn = JosaUtil::pick($nation['name'], '은'); - if($general['level'] == 0) { - $log[] = "●{$admin['month']}월:재야입니다. 인재탐색 실패. <1>$date"; - } elseif($nation['level'] <= 0) { - $log[] = "●{$admin['month']}월:방랑군입니다. 인재탐색 실패. <1>$date"; - } elseif($general['gold'] < $admin['develcost']) { - $log[] = "●{$admin['month']}월:자금이 모자랍니다. 인재탐색 실패. <1>$date"; - } else { - - $max_gen_cnt = $admin['maxgeneral']; - - $total_gen_cnt = $db->queryFirstField('SELECT count(`no`) FROM general WHERE npc <= 2'); - $total_npc_cnt = $db->queryFirstField('SELECT count(`no`) FROM general WHERE 3 <= npc AND npc <= 4'); - - $gen_cnt = $db->queryFirstField('SELECT count(`no`) FROM general WHERE npc <= 2 AND nation = %i', $general['nation']); - $npc_cnt = $db->queryFirstField('SELECT count(`no`) FROM general WHERE 3 <= npc AND npc <= 4 AND nation = %i', $general['nation']); - - $nation_cnt = $db->queryFirstField('SELECT count(`nation`) FROM nation WHERE `level` > 0'); - - $curr_cnt = Util::toInt($total_gen_cnt + $total_npc_cnt / 2); - $remain_slot = $max_gen_cnt - $curr_cnt; - - $avg_cnt = $curr_cnt / $nation_cnt; - - $found_prop_main = pow($remain_slot / $max_gen_cnt, 6); - $found_prop_small = 1 / ($total_npc_cnt / 3 + 1); - $found_prop_big = 1 / $max_gen_cnt; - - if($total_npc_cnt < 50){ - $found_prop = max($found_prop_main, $found_prop_small); - } - else{ - $found_prop = max($found_prop_main, $found_prop_big); - } - $found_npc = Util::randBool($found_prop); - - // 탐색 실패 - if(!$found_npc) { - $exp = 100; - $ded = 70; - switch(Util::choiceRandomUsingWeight([$general['leadership'], $general['power'], $general['intel']])) { - case 0: $general['leadership2'] += 1; break; - case 1: $general['strength2'] += 1; break; - case 2: $general['intel2'] += 1; break; - } - $log[] = "●{$admin['month']}월:인재를 찾을 수 없었습니다. <1>$date"; - } else { - // 탐색 성공 - $exp = 200; - $ded = 300; - switch(Util::choiceRandomUsingWeight([$general['leadership'], $general['power'], $general['intel']])) { - case 0: $general['leadership2'] += 3; break; - case 1: $general['strength2'] += 3; break; - case 2: $general['intel2'] += 3; break; - } - - $name = getRandGenName(); - $name = 'ⓜ'.$name; - //중복장수 처리 - $query = "select no from general where name like '{$name}%'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $count = MYDB_num_rows($result); - $count++; - if($count > 1) { - $name = "{$name}{$count}"; - } - - $join_prop = 0.55 * $avg_cnt / ($gen_cnt + $npc_cnt / 2); - - $no_scout = false; - if($nation['scout'] != 0){ - $no_scout = true; - } - else if($admin['year'] < $admin['startyear']+3 && $nation['gennum'] >= GameConst::$initialNationGenLimit){ - $no_scout = true; - } - - if($no_scout || !Util::randBool($join_prop)) { - $scoutType = "발견"; - $scoutLevel = 0; - $scoutNation = 0; - } else { - $scoutType = "영입"; - $scoutLevel = 1; - $scoutNation = $nation['nation']; - } - - $josaYi = JosaUtil::pick($general['name'], '이'); - $josaRa = JosaUtil::pick($name, '라'); - $log[] = "●{$admin['month']}월:$name{$josaRa}는 인재를 {$scoutType}하였습니다! <1>$date"; - $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} $name{$josaRa}는 인재를 {$scoutType}하였습니다!"; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:$name{$josaRa}는 인재를 {$scoutType}"); - - $avgGen = $db->queryFirstRow('SELECT max(leadership+power+intel) as stat_sum, avg(dedication) as ded,avg(experience) as exp, avg(dex0+dex10+dex20+dex30) as dex_t, avg(dex40) as dex40 from general where npc < 5 and nation = %i', $general['nation']); - - $dexTotal = $avgGen['dex_t']; - - //무장 40%, 지장 40%, 무지장 20% - $stat_tier1 = GameConst::$defaultStatMax - 10 + rand()%11; - $stat_tier3 = GameConst::$defaultStatMin + rand()%6; - $stat_tier2 = GameConst::$defaultStatTotal - $stat_tier1 - $stat_tier3; - $type = Util::choiceRandomUsingWeight([ - 'strength0'=>2, - 'strength1'=>2, - 'strength2'=>2, - 'intel'=>6, - 'neutral'=>3 - ]); - switch($type){ - case 'strength0': - $leadership = $stat_tier1; - $power = $stat_tier2; - $intel = $stat_tier3; - $dexVal = [$dexTotal*5/8, $dexTotal/8, $dexTotal/8, $dexTotal/8]; - break; - case 'strength1': - $leadership = $stat_tier1; - $power = $stat_tier2; - $intel = $stat_tier3; - $dexVal = [$dexTotal/8, $dexTotal*5/8, $dexTotal/8, $dexTotal/8]; - break; - case 'strength2': - $leadership = $stat_tier1; - $power = $stat_tier2; - $intel = $stat_tier3; - $dexVal = [$dexTotal/8, $dexTotal/8, $dexTotal*5/8, $dexTotal/8]; - break; - case 'intel': - $leadership = $stat_tier1; - $power = $stat_tier3; - $intel = $stat_tier2; - $dexVal = [$dexTotal/8, $dexTotal/8, $dexTotal/8, $dexTotal*5/8]; - break; - default: - $leadership = $stat_tier3; - $power = $stat_tier1; - $intel = $stat_tier2; - $dexVal = [$dexTotal/4, $dexTotal/4, $dexTotal/4, $dexTotal/4]; - break; - } - - // 국내 최고능치 기준으로 랜덤성 스케일링 - if($avgGen['stat_sum'] > 210) { - $leadership = Util::round($leadership * $avgGen['stat_sum'] / GameConst::$defaultStatTotal * (60+rand()%31)/100); - $power = Util::round($power * $avgGen['stat_sum'] / GameConst::$defaultStatTotal * (60+rand()%31)/100); - $intel = Util::round($intel * $avgGen['stat_sum'] / GameConst::$defaultStatTotal * (60+rand()%31)/100); - } elseif($avgGen['stat_sum'] > 180) { - $leadership = Util::round($leadership * $avgGen['stat_sum'] / GameConst::$defaultStatTotal * (75+rand()%21)/100); - $power = Util::round($power * $avgGen['stat_sum'] / GameConst::$defaultStatTotal * (75+rand()%21)/100); - $intel = Util::round($intel * $avgGen['stat_sum'] / GameConst::$defaultStatTotal * (75+rand()%21)/100); - } else { - $leadership = Util::round($leadership * $avgGen['stat_sum'] / GameConst::$defaultStatTotal * (90+rand()%11)/100); - $power = Util::round($power * $avgGen['stat_sum'] / GameConst::$defaultStatTotal * (90+rand()%11)/100); - $intel = Util::round($intel * $avgGen['stat_sum'] / GameConst::$defaultStatTotal * (90+rand()%11)/100); - } - $over1 = 0; - $over2 = 0; - $over3 = 0; - // 너무 높은 능치는 다른 능치로 분산 - if($leadership > 90) { - $over1 = rand() % ($leadership - 90) + 5; - $leadership -= $over1; - } - if($power > 90) { - $over2 = rand() % ($power - 90) + 5; - $power -= $over2; - } - if($intel > 90) { - $over3 = rand() % ($intel - 90) + 5; - $intel -= $over3; - } - // 낮은 능치쪽으로 합산 - if($type == 'power') { - $intel = $intel + $over1 + $over2 + $over3; - } else { - $power = $power + $over1 + $over2 + $over3; - } - // 너무 높은 능치는 제한 - if($leadership > 95) { - $leadership = 95; - } - if($power > 95) { - $power = 95; - } - if($intel > 95) { - $intel = 95; - } - - //인재추가 - $npc = 3; - $npcid = $admin['npccount']; - $npccount = 10000 + $npcid; - $affinity = rand() % 150 + 1; - $picture = 'default.jpg'; - $turntime = getRandTurn($admin['turnterm'], new \DateTimeImmutable($admin['turntime'])); - $personal = rand() % 10; - $bornyear = $admin['year']; - $deadyear = $admin['year'] + 3; - $age = 20; - $specage = Util::round((GameConst::$retirementYear - $age)/12) + $age; - $specage2 = Util::round((GameConst::$retirementYear - $age)/3) + $age; - //$specage = $age + 1 + rand() % 3; - //$specage2 = $age + 5 + rand() % 5; - // 20년 ~ 50년 - $killturn = Util::randRangeInt(20, 50) * 12; - - @MYDB_query(" - insert into general ( - npcid,npc,npc_org,affinity,name,picture,nation, - city,leadership,power,intel,experience,dedication, - level,gold,rice,crew,crewtype,train,atmos,tnmt, - weapon,book,horse,turntime,killturn,age,belong,personal,special,specage,special2,specage2,npcmsg, - makelimit,bornyear,deadyear, - dex0, dex10, dex20, dex30, dex40 - ) values ( - '$npccount','$npc','$npc','$affinity','$name','$picture','$scoutNation', - '{$general['city']}','$leadership','$power','$intel','{$avgGen['exp']}','{$avgGen['ded']}', - '$scoutLevel','100','100','0','".GameUnitConst::DEFAULT_CREWTYPE."','0','0','0', - '0','0','0','$turntime','$killturn','$age','1','$personal','0','$specage','0','$specage2','', - '0','$bornyear','$deadyear', - '{$dexVal[0]}','{$dexVal[1]}','{$dexVal[2]}','{$dexVal[3]}','{$avgGen['dex40']}' - )", - $connect - ) or Error(__LINE__.MYDB_error($connect),""); - - $npcid++; - - //npccount - $gameStor->npccount=$npcid; - - $db->update('nation', [ - 'gennum'=>$db->sqleval('gennum + 1'), - ], 'nation=%i', $general['nation']); - - } - - //기술로 가격 - $gold = $general['gold'] - $admin['develcost']; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - // 자금 감소 // 경험치 상승 // 공헌도, 명성 상승 - $query = "update general set resturn='SUCCESS',term='0',gold='$gold',leadership2='{$general['leadership2']}',strength2='{$general['strength2']}',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); - } - - pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushGenLog($general, $log); -} - -function process_45(&$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 name from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - if($general['nation'] == 0) { - $log[] = "●{$admin['month']}월:재야입니다. 하야 실패. <1>$date"; - } elseif($admin['year'] < $admin['startyear']+3) { - $log[] = "●{$admin['month']}월:초반제한중 하야는 불가능합니다. 하야 실패. <1>$date"; - } elseif($general['level'] == 12) { - $log[] = "●{$admin['month']}월:군주입니다. 하야 실패. <1>$date"; - } else { - - $query = "select no from diplomacy where me='{$general['nation']}' and state>='3' and state<='4'"; - $dipresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $dipcount1 = MYDB_num_rows($dipresult); - - $query = "select no from diplomacy where me='{$general['nation']}' and state>='5' and state<='6'"; - $dipresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $dipcount2 = MYDB_num_rows($dipresult); - - $gold = 0; - $rice = 0; - // 금쌀1000이상은 남김 - if($general['gold'] > 1000) { - $gold = $general['gold'] - 1000; - $general['gold'] = 1000; - } - if($general['rice'] > 1000) { - $rice = $general['rice'] - 1000; - $general['rice'] = 1000; - } - - if($dipcount1 > 0) { - $josaYi = JosaUtil::pick($general['name'], '이'); - $josaUl = JosaUtil::pick($nation['name'], '을'); - $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} 통합에 반대하며 {$nation['name']}{$josaUl} 떠났습니다."; - $log[] = "●{$admin['month']}월:통합에 반대하며 {$nation['name']}에서 떠났습니다. <1>$date"; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:통합에 반대하며 {$nation['name']}{$josaUl} 떠남"); - - // 국적 바꾸고 등급 재야로 - $query = "update general set resturn='SUCCESS',belong=0,nation=0,level=0,makelimit='12',gold='{$general['gold']}',rice='{$general['rice']}' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } elseif($dipcount2 > 0) { - $josaYi = JosaUtil::pick($general['name'], '이'); - $josaUl = JosaUtil::pick($nation['name'], '을'); - $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} 합병에 반대하며 {$nation['name']}{$josaUl} 떠났습니다."; - $log[] = "●{$admin['month']}월:합병에 반대하며 {$nation['name']}에서 떠났습니다. <1>$date"; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:합병에 반대하며 {$nation['name']}{$josaUl} 떠남"); - - // 국적 바꾸고 등급 재야로 - $query = "update general set resturn='SUCCESS',belong=0,nation=0,level=0,makelimit='12',gold='{$general['gold']}',rice='{$general['rice']}' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } else { - $josaYi = JosaUtil::pick($general['name'], '이'); - $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} {$nation['name']}에서 하야했습니다."; - $log[] = "●{$admin['month']}월:{$nation['name']}에서 하야했습니다. <1>$date"; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:{$nation['name']}에서 하야"); - - // 국적 바꾸고 등급 재야로 // 명성/공헌 N*10% 감소 - $query = "update general set resturn='SUCCESS',belong=0,nation=0,level=0,permission='normal',experience=experience*(1-0.1*betray),dedication=dedication*(1-0.1*betray),makelimit='12',gold='{$general['gold']}',rice='{$general['rice']}',betray=betray+1 where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - - //도시의 태수, 군사, 종사직도 초기화 - $query = "update city set gen1='0' where gen1='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $query = "update city set gen2='0' where gen2='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $query = "update city set gen3='0' where gen3='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - $query = "select no from troop where troop='{$general['troop']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $troop = MYDB_fetch_array($result); - - //부대장일 경우 - if($troop['no'] == $general['no']) { - // 모두 탈퇴 - $query = "update general set troop='0' where troop='{$general['troop']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - // 부대 삭제 - $query = "delete from troop where troop='{$general['troop']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } else { - $query = "update general set troop='0' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - - $db->update('nation', [ - 'gennum'=>$db->sqleval('gennum - 1'), - 'gold'=>$db->sqleval('gold + %i', $gold), - 'rice'=>$db->sqleval('rice + %i', $rice), - ], 'nation=%i', $general['nation']); - } - pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushGenLog($general, $log); -} - -function process_46(&$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 * 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 from general where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $gencount = MYDB_num_rows($result); - - $query = "select nation from nation where nation!={$general['nation']} AND name='{$general['makenation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nationcount = MYDB_num_rows($result); - - $currNationLevel = $db->queryFirstField('SELECT level FROM nation WHERE nation=%i', $general['nation']); - - $command = DecodeCommand($general['turn0']); - $color = $command[1]; - $type = $command[2]; // 1 ~ 13 - - $colors = GetNationColors(); - if($color >= count($colors)) { $color = 0; } - $color = $colors[$color]; - - if($type < 1) { $type = 9; } - elseif($type > 13) { $type = 9; } - - if($gencount < 2) { - $log[] = "●{$admin['month']}월:수하 장수가 부족합니다. 건국 실패. <1>$date"; - } elseif($admin['year'] >= $admin['startyear']+2) { - $log[] = "●{$admin['month']}월:건국 기간이 지났습니다. 건국 실패. <1>$date"; - } elseif($city['nation'] != 0) { - $log[] = "●{$admin['month']}월:공백지가 아닙니다. 건국 실패. <1>$date"; - } elseif($currNationLevel != 0) { - $log[] = "●{$admin['month']}월:방랑군이 아닙니다. 건국 실패. <1>$date"; - } elseif($nationcount > 0) { - $log[] = "●{$admin['month']}월:존재하는 국가명입니다. 건국 실패. <1>$date"; - } elseif($general['makelimit'] > 0) { - $log[] = "●{$admin['month']}월:재야가 된지 12시간이 지나야 합니다. 건국 실패. <1>$date"; - } elseif($general['level'] != 12) { - $log[] = "●{$admin['month']}월:군주가 아닙니다. 건국 실패. <1>$date"; - } elseif($city['level'] != 5 && $city['level'] != 6) { - $log[] = "●{$admin['month']}월:중, 소 도시에서만 가능합니다. 건국 실패. <1>$date"; - } else { - $db->update('nation', [ - 'name'=>$general['makenation'], - 'color'=>$color, - 'level'=>1, - 'type'=>$type, - 'capital'=>$general['city'], - ], 'nation=%i', $general['nation']); - - refreshNationStaticInfo(); - $nation = getNationStaticInfo($general['nation']); - - // 현 도시 소속지로 - $query = "update city set nation='{$nation['nation']}',conflict='{}' where city='{$general['city']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - $josaYi = JosaUtil::pick($general['name'], '이'); - $josaUl = JosaUtil::pick($nation['name'], '을'); - $log[] = "●{$admin['month']}월:{$nation['name']}{$josaUl} 건국하였습니다. <1>$date"; - $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} {$city['name']}에 국가를 건설하였습니다."; - $josaYi = JosaUtil::pick($nation['name'], '이'); - $history[] = "●{$admin['year']}년 {$admin['month']}월:【건국】".getNationType($type)." {$nation['name']}{$josaYi} 새로이 등장하였습니다."; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:{$nation['name']}{$josaUl} 건국"); - $josaYi = JosaUtil::pick($general['name'], '이'); - pushNationHistory($nation, "●{$admin['year']}년 {$admin['month']}월:{$general['name']}{$josaYi} {$nation['name']}{$josaUl} 건국"); - - $exp = 1000; - $ded = 1000; - - - - // 성격 보정 - $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 = uniqueItem($general, $log, 3); - } - - pushWorldHistory($history, $admin['year'], $admin['month']); - pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushGenLog($general, $log); -} - -function process_47(&$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']); - - $nation = getNationStaticInfo($general['nation']); - - //현재 외교 진행중(평시, 불가침만 제외)일때 - $query = "select state from diplomacy where me='{$general['nation']}' and state!='2' and state!='7'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $dipcount = MYDB_num_rows($result); - - - if($general['level'] != 12) { - $log[] = "●{$admin['month']}월:군주가 아닙니다. <1>$date"; - } elseif($admin['year'] < $admin['startyear']+3) { - $log[] = "●{$admin['month']}월:초반제한중에는 방랑이 불가능합니다. 방랑 실패."; - } elseif($dipcount != 0) { - $log[] = "●{$admin['month']}월:방랑할 수 없는 외교상태입니다. 방랑 실패."; - } elseif($nation['level'] == 0) { - $log[] = "●{$admin['month']}월:이미 방랑군입니다. 방랑 실패."; - } else { - $josaYi = JosaUtil::pick($general['name'], '이'); - $log[] = "●{$admin['month']}월:영토를 버리고 방랑의 길을 떠납니다. <1>$date"; - $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} 방랑의 길을 떠납니다."; - $josaUl = JosaUtil::pick($nation['name'], '을'); - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:{$nation['name']}{$josaUl} 버리고 방랑"); - - $josaUn = JosaUtil::pick($general['name'], '은'); - $history[] = "●{$admin['year']}년 {$admin['month']}월:【방랑】{$general['name']}{$josaUn} 방랑의 길을 떠납니다."; - - //분쟁기록 모두 지움 - DeleteConflict($general['nation']); - // 국명, 색깔 바꿈 국가 레벨 0, 성향리셋, 기술0 - $db->update('nation', [ - 'name'=>$general['name'], - 'color'=>'#330000', //TODO: 기본 방랑군색 별도 지정 - 'level'=>0, - 'type'=>0, - 'tech'=>0, - 'capital'=>0 - ], 'nation=%i', $general['nation']); - // 본인 빼고 건국/임관제한 - $query = "update general set makelimit='12' where no!='{$general['no']}' and nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - // 건국/임관제한 - $query = "update general set resturn='SUCCESS',makelimit='12' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - // 관직장수 일반으로 - $query = "update general set level=1 where nation='{$general['nation']}' and level <= 11"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - // 전 도시 공백지로 - $query = "update city set nation='0',front='0',gen1='0',gen2='0',gen3='0',conflict='{}' where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - // 외교 리셋 - $query = "update diplomacy set state='2',term='0' where me='{$general['nation']}' or you='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - pushWorldHistory($history, $admin['year'], $admin['month']); - - refreshNationStaticInfo(); - } - pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushGenLog($general, $log); -} - -function process_54(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $connect=$db->get(); - - $log = []; - $youlog = []; - $alllog = []; - $history = []; - $date = substr($general['turntime'],11,5); - - $admin = $gameStor->getValues(['year','month']); - - $command = DecodeCommand($general['turn0']); - $who = $command[1]; - - $query = "select no,name,nation from general where no='$who'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nextruler = MYDB_fetch_array($result); - - $query = "select nation,name from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - //현재 외교 진행중(통합제의중)일때 - $query = "select state from diplomacy where me='{$general['nation']}' and state='4'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $dipcount = MYDB_num_rows($result); - - if($nextruler['name'] == "") { - $log[] = "●{$admin['month']}월:잘못된 장수입니다. 선양 실패. <1>$date"; - } elseif($general['level'] != 12) { - $log[] = "●{$admin['month']}월:군주가 아닙니다. 선양 실패. <1>$date"; - } elseif($nextruler['nation'] != $general['nation']) { - $log[] = "●{$admin['month']}월:잘못된 장수입니다. 선양 실패. <1>$date"; - } elseif($dipcount != 0) { - $log[] = "●{$admin['month']}월:현재 통합 진행중입니다. 선양 실패."; - } else { - //군주 교체 - $db->update('general', [ - 'level'=>12, - 'permission'=>'normal' - ], 'no=%i', $who); - - // 태수,군사,종사이었다면 해제 - $db->update('city', [ - 'gen1'=>0, - ], 'gen1=%i', $who); - $db->update('city', [ - 'gen2'=>0, - ], 'gen2=%i', $who); - $db->update('city', [ - 'gen3'=>0, - ], 'gen3=%i', $who); - - $db->update('general', [ - 'resturn'=>'SUCCESS', - 'level'=>1, - 'permission'=>'auditor', - 'experience'=>$db->sqleval('experience*0.7'), - ], 'no=%i', $general['no']); - - $josaYi = JosaUtil::pick($general['name'], '이'); - $history[] = "●{$admin['year']}년 {$admin['month']}월:【선양】{$general['name']}{$josaYi} {$nation['name']}의 군주 자리를 {$nextruler['name']}에게 선양했습니다."; - $log[] = "●{$admin['month']}월:{$nextruler['name']}에게 군주의 자리를 물려줍니다. <1>$date"; - $youlog[] = "●{$admin['month']}월:{$general['name']}에게서 군주의 자리를 물려받습니다."; - - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:{$nation['name']}의 군주자리를 {$nextruler['name']}에게 선양"); - pushGeneralHistory($nextruler, "●{$admin['year']}년 {$admin['month']}월:{$nation['name']}의 군주자리를 물려 받음"); - pushNationHistory($nation, "●{$admin['year']}년 {$admin['month']}월:{$general['name']}{$josaYi} {$nextruler['name']}에게 선양"); - } - pushGenLog($general, $log); - pushGenLog($nextruler, $youlog); - pushWorldHistory($history, $admin['year'], $admin['month']); -} - -function process_55(&$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 name from city where city='{$general['city']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $city = MYDB_fetch_array($result); - - $query = "select nation from nation where name='{$general['name']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nationcount = MYDB_num_rows($result); - - if($nationcount > 0) { $makename = mb_substr("$nationcount".$general['name'], 0, 6); } - else { $makename = $general['name']; } - - if($general['level'] != 0) { - $log[] = "●{$admin['month']}월:재야가 아닙니다. 거병 실패. <1>$date"; - } elseif($admin['year'] >= $admin['startyear']+2) { - $log[] = "●{$admin['month']}월:거병 기간이 지났습니다. 거병 실패. <1>$date"; - } elseif($general['makelimit'] > 0) { - $log[] = "●{$admin['month']}월:재야가 된지 12시간이 지나야 합니다. 거병 실패. <1>$date"; - } else { - - DB::db()->insert('nation', [ - 'name'=>$makename, - 'color'=>'#330000', - 'gold'=>0, - 'rice'=>GameConst::$baserice, - 'rate'=>20, - 'bill'=>100, - 'strategic_cmd_limit'=>36, - 'surlimit'=>72, - 'type'=>0, - 'gennum'=>1 - ]); - $nationID = DB::db()->insertId(); - - refreshNationStaticInfo(); - $nation = getNationStaticInfo($nationID); - - $exp = 100; - $ded = 100; - - // 성격 보정 - $exp = CharExperience($exp, $general['personal']); - $ded = CharDedication($ded, $general['personal']); - - // 명성 상승 - // 군주로 - // 현 국가 소속으로 - $query = "update general set resturn='SUCCESS',belong=1,level=12,nation='{$nation['nation']}',dedication=dedication+'$ded', experience=experience+'$exp' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - $josaYi = JosaUtil::pick($general['name'], '이'); - $log[] = "●{$admin['month']}월:거병에 성공하였습니다. <1>$date"; - $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} {$city['name']}에서 거병하였습니다."; - $history[] = "●{$admin['year']}년 {$admin['month']}월:【거병】{$general['name']}{$josaYi} 세력을 결성하였습니다."; - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:{$city['name']}에서 거병"); - pushNationHistory($nation, "●{$admin['year']}년 {$admin['month']}월:{$general['name']}{$josaYi} {$city['name']}에서 거병"); - - // 외교테이블 추가 - - - foreach(getAllNationStaticInfo() as $younation){ - if($nation['nation'] == $younation['nation']){ - continue; - } - - //FIXME: 쿼리 개선. foreach문은 굳이 필요없을것 - $query = "insert into diplomacy (me, you, state, term) values ('{$nation['nation']}', '{$younation['nation']}', '2', '0')"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $query = "insert into diplomacy (me, you, state, term) values ('{$younation['nation']}', '{$nation['nation']}', '2', '0')"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - } - pushWorldHistory($history, $admin['year'], $admin['month']); - pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushGenLog($general, $log); -} - -function process_56(&$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']); - - $query = "select city from city where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $citycount = MYDB_num_rows($result); - - if($general['level'] != 12) { - $log[] = "●{$admin['month']}월:군주가 아닙니다. <1>$date"; - } elseif($citycount != 0) { - $log[] = "●{$admin['month']}월:방랑군이 아닙니다. <1>$date"; - } else { - $josaYi = JosaUtil::pick($general['name'], '이'); - $log[] = "●{$admin['month']}월:세력을 해산했습니다. <1>$date"; - $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} 세력을 해산했습니다."; - $josaUl = JosaUtil::pick($nation['name'], '을'); - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:{$nation['name']}{$josaUl} 해산"); - - $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 > 1) { - $query = "update general set resturn='SUCCESS' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $query = "update general set gold=1000 where nation='{$general['nation']}' and gold>1000"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $query = "update general set rice=1000 where nation='{$general['nation']}' and rice>1000"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - - //분쟁기록 모두 지움 - DeleteConflict($general['nation']); - deleteNation($general); - - refreshNationStaticInfo(); - } - pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushGenLog($general, $log); -} - - -function process_57(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $connect=$db->get(); - - $log = []; - $youlog = []; - $alllog = []; - $history = []; - $date = substr($general['turntime'],11,5); - - $admin = $gameStor->getValues(['year', 'month', 'killturn']); - - $query = "select nation,name 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); - - $query = "select npc,no,name,killturn from general where nation='{$general['nation']}' and level='12'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $ruler = MYDB_fetch_array($result); - - if($general['level'] == 0) { - $log[] = "●{$admin['month']}월:재야 입니다. 모반 실패. <1>$date"; - } elseif($general['level'] < 5) { - $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['level'] == 12) { - $log[] = "●{$admin['month']}월:이미 군주 입니다. 모반 실패. <1>$date"; - } elseif($ruler['killturn'] >= $admin['killturn']) { - $log[] = "●{$admin['month']}월:군주가 활동중입니다. 모반 실패. <1>$date"; - } elseif($ruler['npc'] >= 2) { - $log[] = "●{$admin['month']}월:군주가 NPC입니다. 모반 실패. <1>$date"; - } else { - //군주 교체 - $query = "update general set resturn='SUCCESS',level='12' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - // 태수,군사,종사이었다면 해제 - $query = "update city set gen1='0' where gen1='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $query = "update city set gen2='0' where gen2='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $query = "update city set gen3='0' where gen3='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - $query = "update general set level='1',experience=experience*0.7 where no='{$ruler['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - $josaYi = JosaUtil::pick($general['name'], '이'); - $log[] = "●{$admin['month']}월:모반에 성공했습니다. <1>$date"; - $youlog[] = "●{$admin['month']}월:{$general['name']}에게 군주의 자리를 뺏겼습니다."; - $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} 모반에 성공했습니다."; - $history[] = "●{$admin['year']}년 {$admin['month']}월:【모반】{$general['name']}{$josaYi} {$nation['name']}의 군주 자리를 찬탈했습니다."; - - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:모반으로 {$nation['name']}의 군주자리를 찬탈"); - pushGeneralHistory($ruler, "●{$admin['year']}년 {$admin['month']}월:{$general['name']}의 모반으로 인해 {$nation['name']}의 군주자리를 박탈당함"); - pushNationHistory($nation, "●{$admin['year']}년 {$admin['month']}월:{$general['name']}{$josaYi} {$ruler['name']}에게서 군주자리를 찬탈"); - } - pushGenLog($general, $log); - pushGenLog($ruler, $youlog); - pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushWorldHistory($history, $admin['year'], $admin['month']); -} diff --git a/hwe/func_process_sabotage.old.php b/hwe/func_process_sabotage.old.php deleted file mode 100644 index f82d0075..00000000 --- a/hwe/func_process_sabotage.old.php +++ /dev/null @@ -1,709 +0,0 @@ -= 7){ - return '불가침국입니다.'; - } - return null; -} - -function process_32(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - - $date = substr($general['turntime'],11,5); - $sabotageName = '화계'; - $statType = 'intel'; - - [$year, $month, $develCost] = $gameStor->getValuesAsArray(['year','month','develcost']); - $logger = new ActionLogger($general['no'], $general['nation'], $year, $month); - - $reqGold = $develCost * 5; - $reqRice = $develCost * 5; - - $srcCityID = $general['city']; - $destCityID = DecodeCommand($general['turn0'])[1]; - - $dist = searchDistance($srcCityID, 5, false); - $srcCity = $db->queryFirstRow('SELECT city,nation,supply FROM city WHERE city=%i', $srcCityID); - $destCity = $db->queryFirstRow('SELECT city,name,level,nation,secu,secu2,supply,agri,comm,def,wall,trust FROM city WHERE city=%i',$destCityID); - $destCityName = $destCity['name']??null; - - $srcNationID = $general['nation']; - $destNationID = $destCity['nation']; - - $dipState = $db->queryFirstField('SELECT `state` FROM diplomacy WHERE me=%i AND you=%i', $srcNationID, $destNationID); - - $failReason = checkSabotageFailCondition($general, $srcCity, $destCity, $reqGold, $reqRice, $dipState); - if($failReason !== null){ - $logger->pushGeneralActionLog("{$failReason} {$sabotageName} 실패. <1>{$date}"); - return; - } - - $srcNation = getNationStaticInfo($srcNationID); - $destNation = getNationStaticInfo($destNationID); - - $generalList = $db->query('SELECT `no`,leadership,horse,strength,weapon,intel,book,injury,level,special,special2 FROM general WHERE city=%i and nation=%i', $destCity['city'], $destCity['nation']); - - [ - $srcGenScore, - $srcSpecialScore, - $srcItemScore, - $srcNationScore, - ] = calcSabotageAttackScore($statType, $general, $srcNation); - - [ - $destGenScore, - $destCityScore, - $destSupplyScore - ] = calcSabotageDefendScore($statType, $generalList, $destCity, $destNation); - - $sabotageProb = ( - GameConst::$sabotageDefaultProb - + ($srcGenScore + $srcSpecialScore + $srcItemScore + $srcNationScore) - - ($destGenScore + $destCityScore + $destSupplyScore) - ); - - // 거리보정 - $sabotageProb /= Util::array_get($dist[$destCityID], 99); - - if(!Util::randBool($sabotageProb)){ - $josaYi = JosaUtil::pick($sabotageName, '이'); - $logger->pushGeneralActionLog("{$destCityName}에 {$sabotageName}{$josaYi} 실패했습니다. <1>$date"); - - $exp = Util::randRangeInt(1, 100); - $exp *= getCharExpMultiplier($general['personal']); - $ded = Util::randRangeInt(1, 70); - $ded *= getCharDedMultiplier($general['personal']); - - $general[$statType.'2'] += 1; - $general['gold'] -= $reqGold; - $general['rice'] -= $reqRice; - $db->update('general', [ - ($statType.'2') => $general[$statType.'2'], - 'resturn'=>'SUCCESS', - 'gold'=>$general['gold'], - 'rice'=>$general['rice'], - 'experience'=>$db->sqleval('experience + %i', Util::round($exp)), - 'dedication'=>$db->sqleval('dedication + %i', Util::round($ded)) - ], 'no=%i', $general['no']); - - checkAbilityEx($general['no'], $logger); - return; - } - - if($srcItemScore){ - $itemName = getItemName($general['item']); - $josaUl = JosaUtil::pick($itemName, '을'); - $logger->pushGeneralActionLog("{$itemName}{$josaUl} 사용!", ActionLogger::PLAIN); - $general['item'] = 0; - } - - $josaYi = JosaUtil::pick($destCityName, '이'); - $logger->pushGlobalActionLog("{$destCityName}{$josaYi} 불타고 있습니다."); - $josaYi = JosaUtil::pick($sabotageName, '이'); - $logger->pushGeneralActionLog("{$destCityName}에 {$sabotageName}{$josaYi} 성공했습니다. <1>$date"); - - $agriAmount = Util::valueFit(Util::randRangeInt(GameConst::$sabotageDamageMin, GameConst::$sabotageDamageMax), null, $destCity['agri']); - $commAmount = Util::valueFit(Util::randRangeInt(GameConst::$sabotageDamageMin, GameConst::$sabotageDamageMax), null, $destCity['comm']); - $destCity['agri'] -= $agriAmount; - $destCity['comm'] -= $commAmount; - - $db->update('city', [ - 'state'=>32, - 'agri'=>$destCity['agri'], - 'comm'=>$destCity['comm'] - ], 'city=%i', $destCityID); - - $injuryCount = SabotageInjury($destCityID); - - $logger->pushGeneralActionLog("도시의 농업이 {$agriAmount}, 상업이 {$commAmount}만큼 감소하고, 장수 {$injuryCount}명이 부상 당했습니다.", ActionLogger::PLAIN); - - $exp = Util::randRangeInt(201, 300); - $exp *= getCharExpMultiplier($general['personal']); - $ded = Util::randRangeInt(141, 210); - $ded *= getCharDedMultiplier($general['personal']); - - $general[$statType.'2'] += 1; - $general['gold'] -= $reqGold; - $general['rice'] -= $reqRice; - $db->update('general', [ - 'firenum' => $db->sqleval('firenum + 1'), - ($statType.'2') => $general[$statType.'2'], - 'resturn'=>'SUCCESS', - 'gold'=>$general['gold'], - 'rice'=>$general['rice'], - 'item'=>$general['item'], - 'experience'=>$db->sqleval('experience + %i', Util::round($exp)), - 'dedication'=>$db->sqleval('dedication + %i', Util::round($ded)) - ], 'no=%i', $general['no']); - - checkAbilityEx($general['no'], $logger); -} - -function process_33(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - - $date = substr($general['turntime'],11,5); - $sabotageName = '탈취'; - $statType = 'strength'; - - [$year, $month, $develCost] = $gameStor->getValuesAsArray(['year','month','develcost']); - $logger = new ActionLogger($general['no'], $general['nation'], $year, $month); - - $reqGold = $develCost * 5; - $reqRice = $develCost * 5; - - $srcCityID = $general['city']; - $destCityID = DecodeCommand($general['turn0'])[1]; - - $dist = searchDistance($srcCityID, 5, false); - $srcCity = $db->queryFirstRow('SELECT city,nation,supply FROM city WHERE city=%i', $srcCityID); - $destCity = $db->queryFirstRow('SELECT city,name,level,nation,secu,secu2,supply,agri,comm,def,wall,trust FROM city WHERE city=%i',$destCityID); - $destCityName = $destCity['name']??null; - - $srcNationID = $general['nation']; - $destNationID = $destCity['nation']; - - //탈취는 0까지 무제한 - - $srcNation = getNationStaticInfo($srcNationID); - $dipState = $db->queryFirstField('SELECT `state` FROM diplomacy WHERE me=%i AND you=%i', $srcNationID, $destNationID); - - $failReason = checkSabotageFailCondition($general, $srcCity, $destCity, $reqGold, $reqRice, $dipState); - if($failReason !== null){ - $logger->pushGeneralActionLog("{$failReason} {$sabotageName} 실패. <1>{$date}"); - return; - } - - $srcNation = getNationStaticInfo($srcNationID); - $destNation = getNationStaticInfo($destNationID); - - $generalList = $db->query('SELECT `no`,leadership,horse,strength,weapon,intel,book,injury,level,special,special2 FROM general WHERE city=%i and nation=%i', $destCity['city'], $destCity['nation']); - - [ - $srcGenScore, - $srcSpecialScore, - $srcItemScore, - $srcNationScore, - ] = calcSabotageAttackScore($statType, $general, $srcNation); - - [ - $destGenScore, - $destCityScore, - $destSupplyScore - ] = calcSabotageDefendScore($statType, $generalList, $destCity, $destNation); - - $sabotageProb = ( - GameConst::$sabotageDefaultProb - + ($srcGenScore + $srcSpecialScore + $srcItemScore + $srcNationScore) - - ($destGenScore + $destCityScore + $destSupplyScore) - ); - - // 거리보정 - $sabotageProb /= Util::array_get($dist[$destCityID], 99); - - if(!Util::randBool($sabotageProb)){ - $josaYi = JosaUtil::pick($sabotageName, '이'); - $logger->pushGeneralActionLog("{$destCityName}에 {$sabotageName}{$josaYi} 실패했습니다. <1>$date"); - - $exp = Util::randRangeInt(1, 100); - $exp *= getCharExpMultiplier($general['personal']); - $ded = Util::randRangeInt(1, 70); - $ded *= getCharDedMultiplier($general['personal']); - - $general[$statType.'2'] += 1; - $general['gold'] -= $reqGold; - $general['rice'] -= $reqRice; - $db->update('general', [ - ($statType.'2') => $general[$statType.'2'], - 'resturn'=>'SUCCESS', - 'gold'=>$general['gold'], - 'rice'=>$general['rice'], - 'experience'=>$db->sqleval('experience + %i', Util::round($exp)), - 'dedication'=>$db->sqleval('dedication + %i', Util::round($ded)) - ], 'no=%i', $general['no']); - - checkAbilityEx($general['no'], $logger); - return; - } - - if($srcItemScore){ - $itemName = getItemName($general['item']); - $josaUl = JosaUtil::pick($itemName, '을'); - $logger->pushGeneralActionLog("{$itemName}{$josaUl} 사용!", ActionLogger::PLAIN); - $general['item'] = 0; - } - - $logger->pushGlobalActionLog("{$destCityName}에서 금과 쌀을 도둑맞았습니다."); - $josaYi = JosaUtil::pick($sabotageName, '이'); - $logger->pushGeneralActionLog("{$destCityName}에 {$sabotageName}{$josaYi} 성공했습니다. <1>$date"); - - // 탈취 최대 400 * 8 - $gold = Util::randRangeInt(GameConst::$sabotageDamageMin, GameConst::$sabotageDamageMax) * $destCity['level']; - $rice = Util::randRangeInt(GameConst::$sabotageDamageMin, GameConst::$sabotageDamageMax) * $destCity['level']; - - if($destCity['supply']){ - [$destNationGold, $destNationRice] = $db->queryFirstList('SELECT gold,rice FROM nation WHERE nation=%i', $destNationID); - - $destNationGold -= $gold; - $destNationRice -= $rice; - - if($destNationGold < GameConst::$minNationalGold) { - $gold += $destNationGold - GameConst::$minNationalGold; - $destNationGold = GameConst::$minNationalGold; - } - if($destNationRice < GameConst::$minNationalRice) { - $rice += $destNationRice - GameConst::$minNationalRice; - $destNationRice = GameConst::$minNationalRice; - } - - $db->update('nation', [ - 'gold'=>$destNationGold, - 'rice'=>$destNationRice - ], 'nation=%i', $destNationID); - $db->update('city', [ - 'state'=>34 - ], 'city=%i', $destCityID); - } - else{ - $db->update('city', [ - 'comm'=>Util::valueFit($destCity['comm'] - $gold / 12, 0), - 'agri'=>Util::valueFit($destCity['agri'] - $rice / 12, 0), - 'state'=>34 - ], 'city=%i', $destCityID); - } - - // 본국으로 일부 회수, 재야이면 본인이 전량 소유 - if($general['nation'] != 0) { - $db->update('nation', [ - 'gold' => $db->sqleval('gold + %i', Util::round($gold * 0.7)), - 'rice' => $db->sqleval('rice + %i', Util::round($rice * 0.7)) - ], 'nation=%i', $srcNationID); - $general['gold'] += $gold - Util::round($gold * 0.7); - $general['rice'] += $rice - Util::round($rice * 0.7); - } else { - $general['gold'] += $gold; - $general['rice'] += $rice; - } - - $logger->pushGeneralActionLog("금{$gold} 쌀{$rice}을 획득했습니다.", ActionLogger::PLAIN); - - $exp = Util::randRangeInt(201, 300); - $exp *= getCharExpMultiplier($general['personal']); - $ded = Util::randRangeInt(141, 210); - $ded *= getCharDedMultiplier($general['personal']); - - $general[$statType.'2'] += 1; - $general['gold'] -= $reqGold; - $general['rice'] -= $reqRice; - $db->update('general', [ - 'firenum' => $db->sqleval('firenum + 1'), - ($statType.'2') => $general[$statType.'2'], - 'resturn'=>'SUCCESS', - 'gold'=>$general['gold'], - 'rice'=>$general['rice'], - 'item'=>$general['item'], - 'experience'=>$db->sqleval('experience + %i', Util::round($exp)), - 'dedication'=>$db->sqleval('dedication + %i', Util::round($ded)) - ], 'no=%i', $general['no']); - - checkAbilityEx($general['no'], $logger); -} - -function process_34(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - - $date = substr($general['turntime'],11,5); - $sabotageName = '파괴'; - $statType = 'strength'; - - [$year, $month, $develCost] = $gameStor->getValuesAsArray(['year','month','develcost']); - $logger = new ActionLogger($general['no'], $general['nation'], $year, $month); - - $reqGold = $develCost * 5; - $reqRice = $develCost * 5; - - $srcCityID = $general['city']; - $destCityID = DecodeCommand($general['turn0'])[1]; - - $dist = searchDistance($srcCityID, 5, false); - $srcCity = $db->queryFirstRow('SELECT city,nation,supply FROM city WHERE city=%i', $srcCityID); - $destCity = $db->queryFirstRow('SELECT city,name,level,nation,secu,secu2,supply,agri,comm,def,wall,trust FROM city WHERE city=%i',$destCityID); - $destCityName = $destCity['name']??null; - - $srcNationID = $general['nation']; - $destNationID = $destCity['nation']; - - $srcNation = getNationStaticInfo($srcNationID); - $dipState = $db->queryFirstField('SELECT `state` FROM diplomacy WHERE me=%i AND you=%i', $srcNationID, $destNationID); - - $failReason = checkSabotageFailCondition($general, $srcCity, $destCity, $reqGold, $reqRice, $dipState); - if($failReason !== null){ - $logger->pushGeneralActionLog("{$failReason} {$sabotageName} 실패. <1>{$date}"); - return; - } - - $srcNation = getNationStaticInfo($srcNationID); - $destNation = getNationStaticInfo($destNationID); - - $generalList = $db->query('SELECT `no`,leadership,horse,strength,weapon,intel,book,injury,level,special,special2 FROM general WHERE city=%i and nation=%i', $destCity['city'], $destCity['nation']); - - [ - $srcGenScore, - $srcSpecialScore, - $srcItemScore, - $srcNationScore, - ] = calcSabotageAttackScore($statType, $general, $srcNation); - - [ - $destGenScore, - $destCityScore, - $destSupplyScore - ] = calcSabotageDefendScore($statType, $generalList, $destCity, $destNation); - - $sabotageProb = ( - GameConst::$sabotageDefaultProb - + ($srcGenScore + $srcSpecialScore + $srcItemScore + $srcNationScore) - - ($destGenScore + $destCityScore + $destSupplyScore) - ); - - // 거리보정 - $sabotageProb /= Util::array_get($dist[$destCityID], 99); - - if(!Util::randBool($sabotageProb)){ - $josaYi = JosaUtil::pick($sabotageName, '이'); - $logger->pushGeneralActionLog("{$destCityName}에 {$sabotageName}{$josaYi} 실패했습니다. <1>$date"); - - $exp = Util::randRangeInt(1, 100); - $exp *= getCharExpMultiplier($general['personal']); - $ded = Util::randRangeInt(1, 70); - $ded *= getCharDedMultiplier($general['personal']); - - $general[$statType.'2'] += 1; - $general['gold'] -= $reqGold; - $general['rice'] -= $reqRice; - $db->update('general', [ - ($statType.'2') => $general[$statType.'2'], - 'resturn'=>'SUCCESS', - 'gold'=>$general['gold'], - 'rice'=>$general['rice'], - 'experience'=>$db->sqleval('experience + %i', Util::round($exp)), - 'dedication'=>$db->sqleval('dedication + %i', Util::round($ded)) - ], 'no=%i', $general['no']); - - checkAbilityEx($general['no'], $logger); - return; - } - - if($srcItemScore){ - $itemName = getItemName($general['item']); - $josaUl = JosaUtil::pick($itemName, '을'); - $logger->pushGeneralActionLog("{$itemName}{$josaUl} 사용!", ActionLogger::PLAIN); - $general['item'] = 0; - } - - $logger->pushGlobalActionLog("누군가가 {$destCityName}의 성벽을 허물었습니다."); - $josaYi = JosaUtil::pick($sabotageName, '이'); - $logger->pushGeneralActionLog("{$destCityName}에 {$sabotageName}{$josaYi} 성공했습니다. <1>$date"); - - // 파괴 - $defAmount = Util::valueFit(Util::randRangeInt(GameConst::$sabotageDamageMin, GameConst::$sabotageDamageMax), null, $destCity['def'] - 100); - $wallAmount = Util::valueFit(Util::randRangeInt(GameConst::$sabotageDamageMin, GameConst::$sabotageDamageMax), null, $destCity['wall'] - 100); - if($defAmount < 0){ $defAmount = 0; } - if($wallAmount < 0){ $wallAmount = 0; } - - $destCity['def'] -= $defAmount; - $destCity['wall'] -= $wallAmount; - - $db->update('city', [ - 'state'=>32, - 'def'=>$destCity['def'], - 'wall'=>$destCity['wall'] - ], 'city=%i', $destCityID); - - $injuryCount = SabotageInjury($destCityID); - - $logger->pushGeneralActionLog("도시의 수비가 {$defAmount}, 성벽이 {$wallAmount}만큼 감소하고, 장수 {$injuryCount}명이 부상 당했습니다.", ActionLogger::PLAIN); - - $exp = Util::randRangeInt(201, 300); - $exp *= getCharExpMultiplier($general['personal']); - $ded = Util::randRangeInt(141, 210); - $ded *= getCharDedMultiplier($general['personal']); - - $general[$statType.'2'] += 1; - $general['gold'] -= $reqGold; - $general['rice'] -= $reqRice; - $db->update('general', [ - 'firenum' => $db->sqleval('firenum + 1'), - ($statType.'2') => $general[$statType.'2'], - 'resturn'=>'SUCCESS', - 'gold'=>$general['gold'], - 'rice'=>$general['rice'], - 'item'=>$general['item'], - 'experience'=>$db->sqleval('experience + %i', Util::round($exp)), - 'dedication'=>$db->sqleval('dedication + %i', Util::round($ded)) - ], 'no=%i', $general['no']); - - checkAbilityEx($general['no'], $logger); -} - -function process_35(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - - $date = substr($general['turntime'],11,5); - $sabotageName = '선동'; - $statType = 'leadership'; - - [$year, $month, $develCost] = $gameStor->getValuesAsArray(['year','month','develcost']); - $logger = new ActionLogger($general['no'], $general['nation'], $year, $month); - - $reqGold = $develCost * 5; - $reqRice = $develCost * 5; - - $srcCityID = $general['city']; - $destCityID = DecodeCommand($general['turn0'])[1]; - - $dist = searchDistance($srcCityID, 5, false); - $srcCity = $db->queryFirstRow('SELECT city,nation,supply FROM city WHERE city=%i', $srcCityID); - $destCity = $db->queryFirstRow('SELECT city,name,level,nation,secu,secu2,supply,agri,comm,def,wall,trust FROM city WHERE city=%i',$destCityID); - $destCityName = $destCity['name']??null; - - $srcNationID = $general['nation']; - $destNationID = $destCity['nation']; - - $srcNation = getNationStaticInfo($srcNationID); - $dipState = $db->queryFirstField('SELECT `state` FROM diplomacy WHERE me=%i AND you=%i', $srcNationID, $destNationID); - - $lbonus = setLeadershipBonus($general, $srcNation['level']); - - $failReason = checkSabotageFailCondition($general, $srcCity, $destCity, $reqGold, $reqRice, $dipState); - if($failReason !== null){ - $logger->pushGeneralActionLog("{$failReason} {$sabotageName} 실패. <1>{$date}"); - return; - } - - $srcNation = getNationStaticInfo($srcNationID); - $destNation = getNationStaticInfo($destNationID); - - $generalList = $db->query('SELECT `no`,leadership,horse,strength,weapon,intel,book,injury,level,special,special2 FROM general WHERE city=%i and nation=%i', $destCity['city'], $destCity['nation']); - [ - $srcGenScore, - $srcSpecialScore, - $srcItemScore, - $srcNationScore, - ] = calcSabotageAttackScore($statType, $general, $srcNation); - - [ - $destGenScore, - $destCityScore, - $destSupplyScore - ] = calcSabotageDefendScore($statType, $generalList, $destCity, $destNation); - - $sabotageProb = ( - GameConst::$sabotageDefaultProb - + ($srcGenScore + $srcSpecialScore + $srcItemScore + $srcNationScore) - - ($destGenScore + $destCityScore + $destSupplyScore) - ); - - // 거리보정 - $sabotageProb /= Util::array_get($dist[$destCityID], 99); - - if(!Util::randBool($sabotageProb)){ - $josaYi = JosaUtil::pick($sabotageName, '이'); - $logger->pushGeneralActionLog("{$destCityName}에 {$sabotageName}{$josaYi} 실패했습니다. <1>$date"); - - $exp = Util::randRangeInt(1, 100); - $exp *= getCharExpMultiplier($general['personal']); - $ded = Util::randRangeInt(1, 70); - $ded *= getCharDedMultiplier($general['personal']); - - $general[$statType.'2'] += 1; - $general['gold'] -= $reqGold; - $general['rice'] -= $reqRice; - $db->update('general', [ - ($statType.'2') => $general[$statType.'2'], - 'resturn'=>'SUCCESS', - 'gold'=>$general['gold'], - 'rice'=>$general['rice'], - 'experience'=>$db->sqleval('experience + %i', Util::round($exp)), - 'dedication'=>$db->sqleval('dedication + %i', Util::round($ded)) - ], 'no=%i', $general['no']); - - checkAbilityEx($general['no'], $logger); - return; - } - - if($srcItemScore){ - $itemName = getItemName($general['item']); - $josaUl = JosaUtil::pick($itemName, '을'); - $logger->pushGeneralActionLog("{$itemName}{$josaUl} 사용!", ActionLogger::PLAIN); - $general['item'] = 0; - } - - $logger->pushGlobalActionLog("{$destCityName}의 백성들이 동요하고 있습니다."); - $josaYi = JosaUtil::pick($sabotageName, '이'); - $logger->pushGeneralActionLog("{$destCityName}에 {$sabotageName}{$josaYi} 성공했습니다. <1>$date"); - - // 선동 최대 10 - $secuAmount = Util::valueFit(Util::randRangeInt(GameConst::$sabotageDamageMin, GameConst::$sabotageDamageMax), null, $destCity['secu']); - $trustAmount = Util::valueFit( - Util::randRange(GameConst::$sabotageDamageMin, GameConst::$sabotageDamageMax) / 50, - null, - $destCity['trust'] - ); - $destCity['secu'] -= $secuAmount; - $destCity['trust'] -= $trustAmount; - - $db->update('city', [ - 'state'=>32, - 'secu'=>$destCity['secu'], - 'trust'=>$destCity['trust'] - ], 'city=%i', $destCityID); - - $injuryCount = SabotageInjury($destCityID); - - $logger->pushGeneralActionLog("도시의 치안이 {$secuAmount}, 민심이 ".round($trustAmount, 1)."만큼 감소하고, 장수 {$injuryCount}명이 부상 당했습니다.", ActionLogger::PLAIN); - - $exp = Util::randRangeInt(201, 300); - $exp *= getCharExpMultiplier($general['personal']); - $ded = Util::randRangeInt(141, 210); - $ded *= getCharDedMultiplier($general['personal']); - - $general[$statType.'2'] += 1; - $general['gold'] -= $reqGold; - $general['rice'] -= $reqRice; - $db->update('general', [ - 'firenum' => $db->sqleval('firenum + 1'), - ($statType.'2') => $general[$statType.'2'], - 'resturn'=>'SUCCESS', - 'gold'=>$general['gold'], - 'rice'=>$general['rice'], - 'item'=>$general['item'], - 'experience'=>$db->sqleval('experience + %i', Util::round($exp)), - 'dedication'=>$db->sqleval('dedication + %i', Util::round($ded)) - ], 'no=%i', $general['no']); - - checkAbilityEx($general['no'], $logger); -} diff --git a/hwe/index.php b/hwe/index.php index 4fcd2e4d..e03add71 100644 --- a/hwe/index.php +++ b/hwe/index.php @@ -152,9 +152,9 @@ $(function(){
 {$general['name']} 【 {$level} | {$call} | {$color}{$injury} 】 ".substr($general['turntime'], 11)."{$general['name']} 【 {$level} | {$call} | {$color}{$injury} 】 ".substr($general['turntime'], 11, 8)."
통솔 동작 시각: ".substr($gameStor->turntime, 5).""; + echo "동작 시각: ".substr($gameStor->turntime, 5, 14).""; } else { - echo "동작 시각: ".substr($gameStor->turntime, 5).""; + echo "동작 시각: ".substr($gameStor->turntime, 5, 14).""; } echo " diff --git a/hwe/join_post.php.orig b/hwe/join_post.php.orig deleted file mode 100644 index 2b49a67e..00000000 --- a/hwe/join_post.php.orig +++ /dev/null @@ -1,274 +0,0 @@ -history.go(-1);"; - exit(1); -} - -$date = date('Y-m-d H:i:s'); -//등록정보 -$query = "update MEMBER set reg_num=reg_num+1,reg_date='$date' where no='$member[no]'"; -$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - -$connect = dbConn(); - -########## 동일 정보 존재여부 확인. ########## - -$query = "select year,month,scenario,maxgeneral,turnterm,genius,img from game where no='1'"; -$result = MYDB_query($query, $connect) or Error("join_post ".MYDB_error($connect),""); -$admin = MYDB_fetch_array($result); - -$query = "select no from general where npc<2"; -$result = MYDB_query($query,$connect) or Error(__LINE__.MYDB_error($connect),""); -$gencount = MYDB_num_rows($result); - -$query = "select no from general where user_id='$member[id]'"; -$result = MYDB_query($query,$connect) or Error(__LINE__.MYDB_error($connect),""); -$id_num = MYDB_num_rows($result); - -$query = "select no from general where name='$name'"; -$result = MYDB_query($query,$connect) or Error(__LINE__.MYDB_error($connect),""); -$name_num = MYDB_num_rows($result); - -$query = "select * from token where id='$member[id]'"; -$result = MYDB_query($query,$connect) or Error(__LINE__.MYDB_error($connect),""); -$token_num = MYDB_num_rows($result); - -if($token_num == 1) { - $token = MYDB_fetch_array($result); - $leadership = $token['leadership']; - $power = $token['power']; - $intel = $token['intel']; -} else { - $leadership = 0; - $power = 0; - $intel = 0; -} - -if($id_num) { - echo(""); - exit; -} elseif($name_num) { - echo(""); - exit; -} elseif($token_num != 1) { - echo(""); - exit; -} elseif($admin[maxgeneral] <= $gencount) { - echo(""); - exit; -} elseif($id == "") { - echo(""); - exit; -} elseif(_String::GetStrLen($name) < 1) { - echo(""); - exit; -} elseif($name == "") { - echo(""); - exit; -} elseif(_String::GetStrLen($name) > 6) { - echo(""); - exit; -} elseif($leadership + $power + $intel > 150) { - echo(""); - exit; -} elseif($leadership > 75 || $leadership < 10 || $power > 75 || $power < 10 || $intel > 75 || $intel < 10) { - echo(""); - exit; -} elseif($character < 0 || $character > 11) { - echo(""); - exit; -} else { - $ratio = rand() % 100; - // 현재 1% - if($ratio == 50 && $admin[genius] > 0) { - $genius = 1; - - $query = "update game set genius=genius-1 where no='1'"; - MYDB_query($query, $connect) or Error("join_post ".MYDB_error($connect),""); - } else { - $genius = 0; - } - - //중, 소 공백지 개수 - $query = "select city from city where level>=5 and level<=6 and nation=0"; - $result = MYDB_query($query, $connect) or Error("join_post ".MYDB_error($connect),""); - $citycount = MYDB_num_rows($result); - - // 공백지에서만 태어나게 - if($citycount > 0) { - $query = "select city from city where level>=5 and level<=6 and nation=0 order by rand() limit 0,1"; - $result = MYDB_query($query, $connect) or Error("join_post ".MYDB_error($connect),""); - $city = MYDB_fetch_array($result); - } else { - $query = "select city from city where level>=5 and level<=6 order by rand() limit 0,1"; - $result = MYDB_query($query, $connect) or Error("join_post ".MYDB_error($connect),""); - $city = MYDB_fetch_array($result); - } - $city = $city[city]; - - $total = rand() % 6; - $pleader = rand() % 100; - $ppower = rand() % 100; - $pintel = rand() % 100; - $rate = $pleader + $ppower + $pintel; - $pleader = floor($pleader / $rate * $total + 0.5); - $ppower = floor($ppower / $rate * $total + 0.5); - $pintel = floor($pintel / $rate * $total + 0.5); - - $leadership = $leadership + $pleader; - $power = $power + $ppower; - $intel = $intel + $pintel; - - $age = 20 + ($pleader + $ppower + $pintel) * 2 + (rand() % 2); - // 아직 남았고 천재등록상태이면 특기 부여 - if($genius == 1) { - $specage2 = $age; - $special2 = getSpecial2($connect, $leadership, $power, $intel); - } else { - $specage2 = round((80 - $age)/3) + $age; - $special2 = 0; - } - //내특 - $specage = round((80 - $age)/12) + $age; - $special = 0; - - if($admin[scenario] > 0) { - $specage2 = $age + 3; - $specage = $age + 3; - } - - $turntime = getRandTurn($admin[turnterm]); - - $lastconnect = date('Y-m-d H:i:s'); - if($lastconnect >= $turntime) { - $turntime = addTurn($turntime, $admin[turnterm]); - } - - //특회 전콘 - if($admin[img] >= 1 && $member[grade] >= 1 && $member[picture] != "" && $pic == 1) { - $face = $member[picture]; - $imgsvr = $member[imgsvr]; - } else { - $face = "default.jpg"; - $imgsvr = 0; - } - //특회 - $userlevel = $member[grade]; - - //성격 랜덤시 - if($character == 11) $character = rand()%10; - //상성 랜덤 - $npcmatch = rand()%150 + 1; - - ########## 회원정보 테이블에 입력값을 등록한다. ########## - $query = " - insert into general ( - user_id, password, name, picture, imgsvr, nation, city, troop, npcmatch, - leadership, power, intel, experience, dedication, gold, rice, crew, train, atmos, - userlevel, level, turntime, killturn, lastconnect, makelimit, age, startage, personal, specage, special, specage2, special2 - ) values ( - '$id', '$pwTemp', '$name', '$face', '$imgsvr', '0', '$city', '0', '$npcmatch', - '$leadership', '$power', '$intel', '0', '0', '1000', '1000', '0', '0', '0', - '$userlevel', '0', '$turntime', '6', '$lastconnect', '0', '$age', '$age', '$character', '$specage', '$special', '$specage2', '$special2' - )"; - $result = MYDB_query($query,$connect) or Error(__LINE__.MYDB_error($connect),""); - - $query = "select no,name,history from general where user_id='$id'"; - $result = MYDB_query($query, $connect) or Error("join_post ".MYDB_error($connect),""); - $me = MYDB_fetch_array($result); - - if($me[name] == "") { - $r = rand() % 999 + 1; - $me[name] = '장수-'.$r; - - $query = "update general set name='$me[name]' where user_id='$id'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - } - $cityname = getCity($connect, $city, "name"); - if($genius == 1) { - $log[0] = "●{$admin[month]}월:$cityname[name]에서 $me[name](이)라는 기재가 천하에 이름을 알립니다."; - $log[1] = "●{$admin[month]}월:".getGeneralSpecialWarName($special2)." 특기를 가진 천재의 등장으로 온 천하가 떠들썩합니다."; - - $history[0] = "●$admin[year]년 $admin[month]월:【천재】$cityname[name]에 천재가 등장했습니다."; - pushHistory($connect, $history); - } else { - $log[0] = "●{$admin[month]}월:$cityname[name]에서 $me[name](이)라는 호걸이 천하에 이름을 알립니다."; - } - $me = addHistory($connect, $me, "●$admin[year]년 $admin[month]월:$me[name], $cityname[name]에서 큰 뜻을 품다."); - $mylog[count($mylog)] = "●삼국지 모의전투 PHP의 세계에 오신 것을 환영합니다 ^o^"; - $mylog[count($mylog)] = "●처음 하시는 경우에는 도움말을 참고하시고,"; - $mylog[count($mylog)] = "●문의사항이 있으시면 게시판에 글을 남겨주시면 되겠네요~"; - $mylog[count($mylog)] = "●부디 즐거운 삼모전 되시길 바랍니다 ^^"; - $mylog[count($mylog)] = "●통솔 $pleader 무력 $ppower 지력 $pintel 의 보너스를 받으셨습니다."; - $mylog[count($mylog)] = "●연령은 $age세로 시작합니다."; - if($genius == 1) { - $mylog[count($mylog)] = "●축하합니다! 천재로 태어나 처음부터 ".getGeneralSpecialWarName($special2)." 특기를 가지게 됩니다!"; - $me = addHistory($connect, $me, "●$admin[year]년 $admin[month]월:".getGeneralSpecialWarName($special2)." 특기를 가진 천재로 탄생."); - } - pushGenLog($me, $mylog); - pushAllLog($log); - - $adminLog[0] = "가입 : {$name} // {$me[name]} // {$id} // ".getenv("REMOTE_ADDR"); - pushAdminLog($connect, $adminLog); - - MYDB_close($connect); - - echo(""); - echo(""); -} - diff --git a/hwe/processing.old.php b/hwe/processing.old.php deleted file mode 100644 index 5ba7a265..00000000 --- a/hwe/processing.old.php +++ /dev/null @@ -1,2522 +0,0 @@ -setReadOnly(); - -$db = DB::db(); -$connect=$db->get(); - -$count = count($turn); -for($i=0; $i < $count; $i++) { - if($turn[$i] == 100 || $turn[$i] == 99 || $turn[$i] == 98) { - } elseif($turn[$i] >= 0 || $turn[$i] <= 23) { - } else { - unset($turn); - $turn[0] = 100; - break; - } -} - -if($turn[0] == 100) { - unset($turn); - for($i=0; $i < 24; $i++) $turn[$i] = $i; -} elseif($turn[0] == 99) { - unset($turn); - for($i=0, $j=0; $i < 24; $i+=2, $j++) $turn[$j] = $i; -} elseif($turn[0] == 98) { - unset($turn); - for($i=1, $j=0; $i < 24; $i+=2, $j++) $turn[$j] = $i; -} - -switch($commandtype) { - case 0: command_Single($turn, 0); break; //휴식 - case 1: command_Single($turn, 1); break; //농업 - case 2: command_Single($turn, 2); break; //상업 - case 3: command_Single($turn, 3); break; //기술 - case 4: command_Single($turn, 4); break; //선정 - case 5: command_Single($turn, 5); break; //수비 - case 6: command_Single($turn, 6); break; //성벽 - case 7: command_Single($turn, 7); break; //정착 장려 - case 8: command_Single($turn, 8); break; //치안 강화 - case 9: command_Single($turn, 9); break; //자금 조달 - - case 11: command_11( $turn, 11, false); break; //징병 - case 12: command_11( $turn, 12, true); break; //모병 - case 13: command_Single($turn, 13); break; //훈련 - case 14: command_Single($turn, 14); break; //사기진작 - //case 15: command_Single($turn, 0); break; //전투태세 - case 16: command_16( $turn, 16); break; //전쟁 - case 17: command_Single($turn, 17); break; //소집해제 - - case 21: command_21( $turn, 21); break; //이동 - case 22: command_22( $turn, 22); break; //등용 //TODO:등용장 재 디자인 - case 23: command_23( $turn, 23); break; //포상 - case 24: command_24( $turn, 24); break; //몰수 - case 25: command_25( $turn, 25); break; //임관 - case 26: command_Single($turn, 26); break; //집합 - case 27: command_27( $turn, 27); break; //발령 - case 28: command_Single($turn, 28); break; //귀환 - case 29: command_Single($turn, 29); break; //인재탐색 - case 30: command_30( $turn, 30); break; //강행 - - case 31: command_31($turn, 31); break; //첩보 - case 32: command_32($turn, 32); break; //화계 - case 33: command_33($turn, 33); break; //탈취 - case 34: command_34($turn, 34); break; //파괴 - case 35: command_35($turn, 35); break; //선동 - - case 41: command_Single($turn, 41); break; //단련 - case 42: command_Single($turn, 42); break; //견문 - case 43: command_43( $turn, 43); break; //증여 - case 44: command_44( $turn, 44); break; //헌납 - case 45: command_Single($turn, 45); break; //하야 - case 46: command_46( $turn, 46); break; //건국 - case 47: command_Single($turn, 47); break; //방랑 - case 48: command_48( $turn, 48); break; //장비구입 - case 49: command_49( $turn, 49); break; //군량매매 - case 50: command_Single($turn, 50); break; //요양 - - case 51: command_51($turn, 51); break; //항복권고 - case 52: command_52($turn, 52); break; //원조 - case 53: command_53($turn, 53); break; //통합제의 - case 54: command_54($turn, 54); break; //선양 - case 55: command_Single($turn, 55); break; //거병 - case 56: command_Single($turn, 56); break; //해산 - case 57: command_Single($turn, 57); break; //모반 시도 - - case 61: command_61($turn, 61); break; //불가침 - case 62: command_62($turn, 62); break; //선포 - case 63: command_63($turn, 63); break; //종전 - case 64: command_64($turn, 64); break; //파기 - case 65: command_65($turn, 65); break; //초토화 - case 66: command_66($turn, 66); break; //천도 - case 67: command_67($turn, 67); break; //증축 - case 68: command_68($turn, 68); break; //감축 - case 71: command_Chief($turn, 71); break; //필사즉생 - case 72: command_72($turn, 72); break; //백성동원 - case 73: command_73($turn, 73); break; //수몰 - case 74: command_74($turn, 74); break; //허보 - case 75: command_75($turn, 75); break; //피장파장 - case 76: command_Chief($turn, 76); break; //의병모집 - case 77: command_77($turn, 77); break; //이호경식 - case 78: command_78($turn, 78); break; //급습 - case 81: command_81($turn, 81); break; //국기변경 - case 99: command_99($turn); break; //수뇌부 휴식 - - default:command_Single($turn, 0); break; //휴식 -} - -function starter($name, $type=0) { -?> - - - -<?=$name?> - - - - - - - - - - - - - - - - - - - - -
-
- - -"; -} - -function command_99($turn) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - $query = "select nation,level from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $me = MYDB_fetch_array($result); - - if($me['level'] >= 5) { - _setNationCommand($me['nation'], $me['level'], range(0, $turn - 1), 'che_휴식'); - } - - header('location:b_chiefcenter.php', true, 303); -} - -function command_11($turn, $command, bool $is모병 = false) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $userID = Session::getUserID(); - - $me = $db->queryFirstRow( - 'SELECT no,nation,level,personal,special2,level,city,crew,horse,injury,leadership,crewtype,gold - from general where owner=%i', - $userID - ); - - [$nationLevel, $tech] = $db->queryFirstList('SELECT level,tech FROM nation WHERE nation=%i', $me['nation']); - if(!$nationLevel){ - $nationLevel = 0; - } - - if(!$tech){ - $tech = 0; - } - - $lbonus = setLeadershipBonus($me, $nationLevel); - - $ownCities = []; - $ownRegions = []; - [$year, $startyear] = $gameStor->getValuesAsArray(['year','startyear']); - - $relativeYear = $year - $startyear; - - foreach(DB::db()->query('SELECT city, region from city where nation = %i', $me['nation']) as $city){ - $ownCities[$city['city']] = 1; - $ownRegions[$city['region']] = 1; - } - - $leadership = getGeneralLeadership($me, true, true, true); - $fullLeadershipship = getGeneralLeadership($me, false, true, true); - $abil = getTechAbil($tech); - - $armTypes = []; - - foreach(GameUnitConst::allType() as $armType => $armName){ - $armTypeCrews = []; - - foreach(GameUnitConst::byType($armType) as $unit){ - $crewObj = new \stdClass; - if(!$unit->isValid($ownCities, $ownRegions, $relativeYear, $tech)){ - continue; //TODO: 불가능한 병종도 보여줄 필요가 있음. - } - - $crewObj->id = $unit->id; - - if($unit->reqTech == 0){ - $crewObj->bgcolor = 'green'; - } - else{ - $crewObj->bgcolor = 'limegreen'; - } - - $crewObj->baseRice = $unit->rice * getTechCost($tech); - $crewObj->baseCost = CharCost($unit->costWithTech($tech), $me['personal']); - - $armType = $unit->armType; - if($me['special2'] == 50 && $armType == GameUnitConst::T_FOOTMAN){ - $crewObj->baseCost *= 0.9; - } - else if($me['special2'] == 51 && $armType == GameUnitConst::T_ARCHER){ - $crewObj->baseCost *= 0.9; - } - else if($me['special2'] == 52 && $armType == GameUnitConst::T_CAVALRY){ - $crewObj->baseCost *= 0.9; - } - else if($me['special2'] == 53 && $armType == GameUnitConst::T_WIZARD){ - $crewObj->baseCost *= 0.9; - } - else if($me['special2'] == 54 && $armType == GameUnitConst::T_SIEGE){ - $crewObj->baseCost *= 0.9; - } - else if($me['special2'] == 72) { - $crewObj->baseCost *= 0.5; - } - - $crewObj->name = $unit->name; - $crewObj->attack = $unit->attack + $abil; - $crewObj->defence = $unit->defence + $abil; - $crewObj->speed = $unit->speed; - $crewObj->avoid = $unit->avoid; - if($gameStor->show_img_level < 2) { - $crewObj->img = ServConfig::$sharedIconPath."/default.jpg"; - } - else{ - $crewObj->img = ServConfig::$gameImagePath."/weapon".$unit->id.".png"; - } - - $crewObj->baseRiceShort = round($crewObj->baseRice, 1); - $crewObj->baseCostShort = round($crewObj->baseCost, 1); - - $crewObj->info = join('
', $unit->info); - - - $armTypeCrews[] = $crewObj; - } - $armTypes[] = [$armName, $armTypeCrews]; - } - if($is모병){ - $commandName = '모병'; - starter("모병"); - } - else{ - $commandName = '징병'; - starter("징병"); - } - - $templates = new \League\Plates\Engine('templates'); - echo $templates->render('recruitCrewForm', [ - 'command'=>$command, - 'commandName'=>$commandName, - 'techLevelText'=>getTechCall($tech), - 'tech'=>$tech, - 'leadership'=>$leadership, - 'fullLeadership'=>$fullLeadership, - 'crewType'=>GameUnitConst::byId($me['crewtype'])->id, - 'crewTypeName'=>GameUnitConst::byId($me['crewtype'])->name, - 'crew'=>$me['crew'], - 'gold'=>$me['gold'], - 'turn'=>$turn, - 'armTypes'=>$armTypes, - ]); - - - ender(); -} - -function command_15($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("재편성"); - $query = "select no,nation from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $general = MYDB_fetch_array($result); - $me = $general['no']; - - $query = "select no,name from general where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $gencount = MYDB_num_rows($result); - - echo " -자신의 병사를 다른 장수에게 보냅니다. -
- -00명 - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - ender(); -} - -function command_16($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("출병"); - $query = "select city from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $general = MYDB_fetch_array($result); - - $query = "select city,name from city where city='{$general['city']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $currentcity = MYDB_fetch_array($result); - - echo getMapHtml(); - echo "
-선택된 도시로 침공을 합니다.
-목록을 선택하거나 도시를 클릭하세요.
-
-{$currentcity['name']} => - - -"; - - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - printCitiesBasedOnDistance($currentcity['city'], 1); - - ender(); -} - -function command_21($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("이동"); - $query = "select city from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $general = MYDB_fetch_array($result); - - $query = "select city,name from city where city='{$general['city']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $currentcity = MYDB_fetch_array($result); - - echo getMapHtml(); - echo "
-선택된 도시로 이동합니다.
-인접 도시로만 이동이 가능합니다.
-목록을 선택하거나 도시를 클릭하세요.
-
-{$currentcity['name']} => - - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - printCitiesBasedOnDistance($currentcity['city'], 1); - - ender(); -} - -function command_22($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("등용"); - - $query = "select nation from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $me = MYDB_fetch_array($result); - - echo " -재야나 타국의 장수를 등용합니다.
-서신은 개인 메세지로 전달됩니다.
-등용할 장수를 목록에서 선택하세요.
-
- - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - ender(); -} - -function command_23($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("포상", 1); - $query = "select no,nation from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $general = MYDB_fetch_array($result); - - $query = "select no,name,level,npc from general where nation='{$general['nation']}' and no!='{$general['no']}' order by npc,binary(name)"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $gencount = MYDB_num_rows($result); - - echo " -국고로 장수에게 자금이나 군량을 지급합니다.
-
- - - - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - ender(1); -} - -function command_24($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("몰수", 1); - $query = "select no,nation from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $general = MYDB_fetch_array($result); - - $query = "select no,name,level,npc from general where nation='{$general['nation']}' and no!='{$general['no']}' order by npc,binary(name)"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $gencount = MYDB_num_rows($result); - - echo " -장수의 자금이나 군량을 몰수합니다.
-몰수한것은 국가재산으로 귀속됩니다.
-
- - - - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - ender(1); -} - -function command_25($turn, $command) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $connect=$db->get(); - $userID = Session::getUserID(); - - $gameStor->cacheValues(['year','startyear','month','join_mode']); - - $onlyRandom = $gameStor->join_mode == 'onlyRandom'; - starter("임관"); - - $query = "select no,nations from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("command_27 ".MYDB_error($connect),""); - $me = MYDB_fetch_array($result); - - $joinedNations = Json::decode($me['nations']); - - $query = "select nation,name,color,scout,scoutmsg,strategic_cmd_limit,gennum from nation order by gennum"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $count = MYDB_num_rows($result); - - $nationList = $db->query('SELECT nation,`name`,color,scout,scoutmsg,gennum FROM nation ORDER BY rand()'); - - foreach($nationList as &$nation){ - if ($onlyRandom && TimeUtil::IsRangeMonth($gameStor->init_year, $gameStor->init_month, 1, $gameStor->year, $gameStor->month) && $nation['gennum'] >= GameConst::$initialNationGenLimitForRandInit) { - $nation['availableJoin'] = false; - } - else if($gameStor->year < $gameStor->startyear+3 && $nation['gennum'] >= GameConst::$initialNationGenLimit){ - $nation['availableJoin'] = false; - } - else if($nation['scout'] == 1) { - $nation['availableJoin'] = false; - } - else{ - $nation['availableJoin'] = true; - } - } - unset($nation); -?> - -국가에 임관합니다.
-이미 임관/등용되었던 국가는 다시 임관할 수 없습니다.
-바로 군주의 위치로 이동합니다.
- -랜덤 임관 대상 국가는 아래에서 확인할 수 있습니다.
- -임관할 국가를 목록에서 선택하세요.
- -!!!는 방랑군을 포함한 랜덤임관입니다. 유니크를 기대하신다면!
-???는 방랑군을 제외한 랜덤임관입니다. 유니크 혜택은 없습니다.
-임관 금지이거나 초기 제한중인 국가는 붉은색 배경으로 표시됩니다.
-870px x 200px를 넘어서는 내용은 표시되지 않습니다.
-
- - -> - - > - -
-get(); - $userID = Session::getUserID(); - - starter("발령", 1); - - $query = "select no,nation,level from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("command_27 ".MYDB_error($connect),""); - $me = MYDB_fetch_array($result); - - $query = "select no,name,level,npc from general where nation='{$me['nation']}' and no!='{$me['no']}' order by npc,binary(name)"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $gencount = MYDB_num_rows($result); - - echo getMapHtml(); - echo "
-선택된 도시로 아국 장수를 발령합니다.
-아국 도시로만 발령이 가능합니다.
-목록을 선택하거나 도시를 클릭하세요.
-
- - => - - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - ender(1); -} - -function command_30($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("강행"); - $query = "select city from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $general = MYDB_fetch_array($result); - - $query = "select city,name from city where city='{$general['city']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $currentcity = MYDB_fetch_array($result); - - echo getMapHtml(); - echo "
-선택된 도시로 강행합니다.
-최대 3칸내 도시로만 강행이 가능합니다.
-목록을 선택하거나 도시를 클릭하세요.
-
-{$currentcity['name']} => - - -"; - for($i=0; $i < count($turn); $i++) { - echo " -"; -} - -echo " -
-"; - -printCitiesBasedOnDistance($currentcity['city'], 3); - -ender(); -} - -function command_31($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("첩보"); - $query = "select city from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $general = MYDB_fetch_array($result); - - $query = "select city,name from city where city='{$general['city']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $currentcity = MYDB_fetch_array($result); - - echo getMapHtml(); - echo "
-선택된 도시에 첩보를 실행합니다.
-인접도시일 경우 많은 정보를 얻을 수 있습니다.
-목록을 선택하거나 도시를 클릭하세요.
-
-{$currentcity['name']} => - - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - echo " -모든 도시가 가능하지만 많은 정보를 얻을 수 있는
-"; - - printCitiesBasedOnDistance($currentcity['city'], 2); - - ender(); -} - -function command_32($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("화계"); - $query = "select city from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $general = MYDB_fetch_array($result); - - $query = "select city,name from city where city='{$general['city']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $currentcity = MYDB_fetch_array($result); - - echo getMapHtml(); - echo "
-선택된 도시에 화계를 실행합니다.
-목록을 선택하거나 도시를 클릭하세요.
-
-{$currentcity['name']} => - - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - printCitiesBasedOnDistance($currentcity['city'], 2); - - ender(); -} - -function command_33($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("탈취"); - $query = "select city from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $general = MYDB_fetch_array($result); - - $query = "select city,name from city where city='{$general['city']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $currentcity = MYDB_fetch_array($result); - - echo getMapHtml(); - echo "
-선택된 도시에 탈취를 실행합니다.
-목록을 선택하거나 도시를 클릭하세요.
-
-{$currentcity['name']} => - - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - printCitiesBasedOnDistance($currentcity['city'], 2); - - ender(); -} - -function command_34($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("파괴"); - $query = "select city from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $general = MYDB_fetch_array($result); - - $query = "select city,name from city where city='{$general['city']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $currentcity = MYDB_fetch_array($result); - - echo getMapHtml(); - echo "
-선택된 도시에 파괴를 실행합니다.
-목록을 선택하거나 도시를 클릭하세요.
-
-{$currentcity['name']} => - - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - printCitiesBasedOnDistance($currentcity['city'], 2); - - ender(); -} - -function command_35($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("선동"); - $query = "select city from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $general = MYDB_fetch_array($result); - - $query = "select city,name from city where city='{$general['city']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $currentcity = MYDB_fetch_array($result); - - echo getMapHtml(); - echo "
-선택된 도시에 선동을 실행합니다.
-목록을 선택하거나 도시를 클릭하세요.
-
-{$currentcity['name']} => - - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - printCitiesBasedOnDistance($currentcity['city'], 2); - - ender(); -} - -function command_36($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("기습"); - $query = "select city from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $general = MYDB_fetch_array($result); - - $query = "select city,name from city where city='{$general['city']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $currentcity = MYDB_fetch_array($result); - - echo getMapHtml(); - echo "
-선택된 도시에 기습을 실행합니다.
-목록을 선택하거나 도시를 클릭하세요.
-
-{$currentcity['name']} => - - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - printCitiesBasedOnDistance($currentcity['city'], 2); - - ender(); -} - -function command_43($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("증여"); - $query = "select no,nation from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $general = MYDB_fetch_array($result); - - $query = "select no,name,level,npc from general where nation='{$general['nation']}' and no!='{$general['no']}' order by npc,binary(name)"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $gencount = MYDB_num_rows($result); - - echo " -자신의 자금이나 군량을 다른 장수에게 증여합니다.
-장수를 선택하세요.
-
- - - - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - ender(); -} - -function command_44($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - - starter("헌납"); - - echo " -자신의 자금이나 군량을 국가 재산으로 헌납합니다.
-
- - - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - ender(); -} - -function command_46($turn, $command) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $connect=$db->get(); - - starter("건국"); - - $maxnation = $gameStor->maxnation; - - $colorUsed = []; - - foreach(GetNationColors() as $color){ - $colorUsed[$color] = 0; - } - - $nationCount = count(getAllNationStaticInfo()); - foreach(getAllNationStaticInfo() as $nation){ - if($nation['level'] <= 0){ - continue; - } - - if(!isset($nationcolor[$nation['color']])){ - $nationcolor[$nation['color']] = 1; - } - else{ - $nationcolor[$nation['color']]++; - } - - } - - $colorUsedCnt = 0; - foreach($colorUsed as $color=>$used){ - if($used){ - continue; - } - $colorUsedCnt += 1; - } - - //색깔이 다 쓰였으면 그냥 모두 허용 - if($colorUsedCnt === count($colorUsed)){ - foreach(array_keys($colorUsed) as $color){ - $colorUsed[$color] = 0; - } - } - - - if($nationCount < $maxnation) { -?> -현재 도시에서 나라를 세웁니다. 중, 소도시에서만 가능합니다.
- -- 법 가 : 금수입↑ 치안↑ 인구↓ 민심↓
-- 유 가 : 내정↑ 민심↑ 쌀수입↓
-- 병 가 : 기술↑ 수성↑ 인구↓ 민심↓
-- 덕 가 : 치안↑인구↑ 민심↑ 쌀수입↓ 수성↓
-- 묵 가 : 수성↑ 기술↓
-- 도 가 : 인구↑ 기술↓ 치안↓
-- 태 평 도 : 인구↑ 민심↑ 기술↓ 수성↓
-- 오 두 미 도 : 쌀수입↑ 인구↑ 기술↓ 수성↓ 내정↓
-- 도 적 : 계략↑ 금수입↓ 치안↓ 민심↓
-- 불 가 : 민심↑ 수성↑ 금수입↓
-- 종 횡 가 : 전략↑ 수성↑ 금수입↓ 내정↓
-- 음 양 가 : 내정↑ 인구↑ 기술↓ 전략↓
-- 명 가 : 기술↑ 인구↑ 쌀수입↓ 수성↓
- -
-국명 : -색깔 : -성향 : - -> -"; - } - - echo "
"; - } else { - echo "더 이상 건국은 불가능합니다.
"; - } - ender(); -} - -function command_48($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("장비 매매"); - - $query = "select no,city,gold from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("command_48 ".MYDB_error($connect),""); - $me = MYDB_fetch_array($result); - $city = getCity($me['city'], "secu"); - - $color = []; - - for($i=1; $i <= 6; $i++) { - if($city['secu'] >= $i*1000) { - $color[$i] = "white"; - } else { - $color[$i] = "red"; - } - } - - echo " -장비를 구입하거나 매각합니다.
-현재 구입 불가능한 것은 붉은색으로 표시됩니다.
-현재 도시 치안 : {$city['secu']}    현재 자금 : {$me['gold']}
-
-장비 : - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - ender(); -} - -function command_49($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - - starter("군량매매"); - - echo " -자신의 군량을 사거나 팝니다.
-
- - - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - ender(); -} - -function command_51($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("항복 권고", 1); - - $query = "select nation from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $me = MYDB_fetch_array($result); - - $query = "select nation,power from nation where nation='{$me['nation']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $myNation = MYDB_fetch_array($result); - - echo " -타국에게 항복을 권고합니다.
-서신은 개인 메세지로 전달됩니다.
-권고할 국가를 목록에서 선택하세요.
-합병이 불가능한 국가는 붉은 배경으로 표시됩니다.
-
- - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-제한 조건
-- 인접 국가
-- 양국 모두 외교제한 기간 없음
-- 제의한 국가가 항복하는 국가보다 국력 3배 초과
-"; - ender(1); -} - -function command_52($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("원조", 1); - - $query = "select nation from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $me = MYDB_fetch_array($result); - - $mynation = getNationStaticInfo($me['nation']); - - echo " -타국에게 원조합니다.
-작위별로 금액 제한이 있습니다.
- 호족: 1만
- 군벌: 2만
-주자사: 3만
- 주목: 4만
-  공: 5만
-  왕: 6만
- 황제: 7만
-원조할 국가를 목록에서 선택하세요.
-
- 대상 국가 -국고 -병량 - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - ender(1); -} - -function command_53($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("통합제의", 1); - - $query = "select no,nation from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("command_53 ".MYDB_error($connect),""); - $me = MYDB_fetch_array($result); - - $query = "select avg(power) as power,avg(gennum) as gennum from nation where level>=1"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $avgNation = MYDB_fetch_array($result); - - $query = "select std(power) as power,std(gennum) as gennum from nation where level>=1"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $stdNation = MYDB_fetch_array($result); - - $query = "select nation,power,gennum from nation where nation='{$me['nation']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $myNation = MYDB_fetch_array($result); - - echo " -세력이 비슷한 국가에 통합 제의를 합니다. 제의한 국가 위주로 통합됩니다.
-서신은 개인 메세지로 전달됩니다.
-제의할 국가를 목록에서 선택하세요.
-통합이 불가능한 국가는 붉은 배경으로 표시됩니다.
-
-대상국 : - 통합국명 : - - "; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-제한 조건
-- 인접 국가
-- 양국 모두 외교제한 없음
-- 두 국가의 국력 평균이 상위 60%(현재 ".round($cond1,2).") 이하.
-- 두 국가의 장수수 평균이 상위 75%(현재 ".round($cond2,1).") 이하.
-"; - ender(1); -} - -function command_54($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("선양"); - $query = "select no,nation from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $general = MYDB_fetch_array($result); - - $query = "select no,name,level from general where nation='{$general['nation']}' and no!='{$general['no']}' order by npc,binary(name)"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $gencount = MYDB_num_rows($result); - - echo " -군주의 자리를 다른 장수에게 물려줍니다.
-장수를 선택하세요.
-
- - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - ender(); -} - -function command_61($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("불가침", 1); - - $query = "select nation from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $me = MYDB_fetch_array($result); - - echo " -타국에게 불가침을 제의합니다.
-제의할 국가를 목록에서 선택하세요.
-배경색은 현재 제의가 불가능한 국가는 붉은색, 현재 불가침중인 국가는 푸른색으로 표시됩니다.
-
- 대상 국가 -기간 -년
- -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - ender(1); -} - -function command_62($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("선전포고", 1); - - $query = "select nation from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $me = MYDB_fetch_array($result); - - echo " -타국에게 선전 포고합니다.
-선전 포고할 국가를 목록에서 선택하세요.
-고립되지 않은 아국 도시에서 인접한 국가에 선포 가능합니다.
-초반제한 해제 2년전부터 선포가 가능합니다. (체섭기준 181년 1월부터 가능)
-배경색은 현재 선포가 불가능한 국가는 붉은색, 현재 불가침중(역시 불가)인 국가는 푸른색으로 표시됩니다.
-
- 대상 국가 - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - ender(1); -} - -function command_63($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("종전", 1); - - $query = "select nation from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $me = MYDB_fetch_array($result); - - echo " -전쟁중인 국가에 종전을 제의합니다.
-제의할 국가를 목록에서 선택하세요.
-배경색은 현재 제의가 불가능한 국가는 붉은색으로 표시됩니다.
-
- 대상 국가 - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - ender(1); -} - -function command_64($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("파기", 1); - - $query = "select nation from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $me = MYDB_fetch_array($result); - - echo " -불가침중인 국가에 조약 파기를 제의합니다.
-제의할 국가를 목록에서 선택하세요.
-배경색은 현재 제의가 불가능한 국가는 붉은색, 현재 불가침중(제의 가능)인 국가는 푸른색으로 표시됩니다.
-
- 대상 국가 - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - ender(1); -} - -function command_65($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("초토화", 1); - $query = "select city from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $general = MYDB_fetch_array($result); - - $query = "select name,path from city where city='{$general['city']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $currentcity = MYDB_fetch_array($result); - - echo getMapHtml(); -echo "
-선택된 도시를 초토화 시킵니다.
-목록을 선택하거나 도시를 클릭하세요.
-
- - -"; - - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - ender(); -} - -function command_66($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("천도", 1); - $query = "select city from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $general = MYDB_fetch_array($result); - - $query = "select name,path from city where city='{$general['city']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $currentcity = MYDB_fetch_array($result); - - echo getMapHtml(); -echo "
-선택된 도시로 천도합니다.
-현재 수도에서 인접한 도시만 가능합니다.
-목록을 선택하거나 도시를 클릭하세요.
-
- - -"; - - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - ender(); -} - -function command_67($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("증축", 1); - $query = "select city from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $general = MYDB_fetch_array($result); - - $query = "select name,path from city where city='{$general['city']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $currentcity = MYDB_fetch_array($result); - - echo getMapHtml(); -echo "
-선택된 도시를 증축합니다.
-현재 수도만 가능합니다.
-목록을 선택하거나 도시를 클릭하세요.
-
- - -"; - - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - ender(); -} - -function command_68($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("감축", 1); - $query = "select city from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $general = MYDB_fetch_array($result); - - $query = "select name,path from city where city='{$general['city']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $currentcity = MYDB_fetch_array($result); - - echo getMapHtml(); -echo "
-선택된 도시를 감축합니다.
-현재 수도만 가능합니다.
-목록을 선택하거나 도시를 클릭하세요.
-
- - -"; - - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - ender(); -} - -function command_72($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("백성동원", 1); - $query = "select city from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $general = MYDB_fetch_array($result); - - $query = "select name,path from city where city='{$general['city']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $currentcity = MYDB_fetch_array($result); - - echo getMapHtml(); -echo "
-선택된 도시에 백성동원을 발동합니다.
-아국 도시만 가능합니다.
-목록을 선택하거나 도시를 클릭하세요.
-
- - -"; - - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - ender(); -} - -function command_73($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("수몰", 1); - $query = "select city from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $general = MYDB_fetch_array($result); - - $query = "select name,path from city where city='{$general['city']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $currentcity = MYDB_fetch_array($result); - - echo getMapHtml(); -echo "
-선택된 도시에 수몰을 발동합니다.
-전쟁중인 상대국 도시만 가능합니다.
-목록을 선택하거나 도시를 클릭하세요.
-
- - -"; - - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - ender(); -} - -function command_74($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("허보", 1); - $query = "select city from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $general = MYDB_fetch_array($result); - - $query = "select name,path from city where city='{$general['city']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $currentcity = MYDB_fetch_array($result); - - echo getMapHtml(); -echo "
-선택된 도시에 허보를 발동합니다.
-선포, 전쟁중인 상대국 도시만 가능합니다.
-목록을 선택하거나 도시를 클릭하세요.
-
- - -"; - - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - - ender(); -} - -function command_75($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("피장파장", 1); - - $query = "select nation from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $me = MYDB_fetch_array($result); - - echo " -선택된 국가에 피장파장을 발동합니다.
-선포, 전쟁중인 상대국에만 가능합니다.
-상대 국가를 목록에서 선택하세요.
-배경색은 현재 피장파장 불가능 국가는 붉은색으로 표시됩니다.
-
- 대상 국가 - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - ender(1); -} - -function command_77($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("이호경식", 1); - - $query = "select nation from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $me = MYDB_fetch_array($result); - - echo " -선택된 국가에 이호경식을 발동합니다.
-선포, 전쟁중인 상대국에만 가능합니다.
-상대 국가를 목록에서 선택하세요.
-배경색은 현재 이호경식 불가능 국가는 붉은색으로 표시됩니다.
-
- 대상 국가 - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - ender(1); -} - -function command_78($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - $userID = Session::getUserID(); - - starter("급습", 1); - - $query = "select nation from general where owner='{$userID}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $me = MYDB_fetch_array($result); - - echo " -선택된 국가에 급습을 발동합니다.
-선포, 전쟁중인 상대국에만 가능합니다.
-상대 국가를 목록에서 선택하세요.
-배경색은 현재 급습 불가능 국가는 붉은색으로 표시됩니다.
-
- 대상 국가 - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - ender(1); -} - -function command_81($turn, $command) { - $db = DB::db(); - $connect=$db->get(); - - starter("국기변경", 1); - - $colorUsed = []; - - foreach(GetNationColors() as $color){ - $colorUsed[$color] = 0; - } - - foreach(getAllNationStaticInfo() as $nation){ - if($nation['level'] <= 0){ - continue; - } - - $colorUsed[$nation['color']]+=1; - } - - $colorUsedCnt = 0; - foreach($colorUsed as $color=>$used){ - if($used){ - continue; - } - $colorUsedCnt += 1; - } - - //색깔이 다 쓰였으면 그냥 모두 허용 - if($colorUsedCnt === count($colorUsed)){ - foreach(array_keys($colorUsed) as $color){ - $colorUsed[$color] = 0; - } - } - - echo " -국기를 변경합니다. 단 1회 가능합니다.
-
-색깔 : - -"; - for($i=0; $i < count($turn); $i++) { - echo " - "; - } - - echo " -
-"; - ender(1); -} diff --git a/hwe/sammo/General.php b/hwe/sammo/General.php index 117ea6ab..a899bdf7 100644 --- a/hwe/sammo/General.php +++ b/hwe/sammo/General.php @@ -619,7 +619,7 @@ class General implements iAction{ 'leadership', 'leadership2', 'strength', 'strength2', 'intel', 'intel2', 'weapon', 'book', 'horse', 'item', 'experience', 'dedication', 'level', 'gold', 'rice', 'crew', 'crewtype', 'train', 'atmos', 'turntime', 'makelimit', 'killturn', 'block', 'dedlevel', 'explevel', 'age', 'startage', 'belong', - 'personal', 'special', 'special2', 'mode', 'npc', 'npc_org', 'deadyear', 'npcmsg', + 'personal', 'special', 'special2', 'mode', 'tnmt', 'npc', 'npc_org', 'deadyear', 'npcmsg', 'dex0', 'dex10', 'dex20', 'dex30', 'dex40', 'warnum', 'killnum', 'deathnum', 'killcrew', 'deathcrew', 'recwar', 'last_turn', 'myset' ];