From cf1dc90137f6404b26a4c6172ad5db0ff99debb8 Mon Sep 17 00:00:00 2001 From: hide_d Date: Tue, 23 Apr 2019 10:59:03 +0900 Subject: [PATCH 01/33] =?UTF-8?q?=EA=B0=B1=EC=8B=A0=20=EB=B2=84=ED=8A=BC?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hwe/index.php b/hwe/index.php index c5c2e545..d09f4caa 100644 --- a/hwe/index.php +++ b/hwe/index.php @@ -268,7 +268,7 @@ else if($session->userGrade == 4){
- ;color:white;width:110px;font-size:13px; value='실 행' onclick='refreshing(this, 3,form2)'>;color:white;width:110px;font-size:13px; value='갱 신' onclick='refreshing(this, 0,0)'>;color:white;width:160px;font-size:13px; value='로비로' onclick=location.replace('../')>
+ ;color:white;width:110px;font-size:13px; value='실 행' onclick='refreshing(this, 3,form2)'>;color:white;width:110px;font-size:13px; value='갱 신' onclick='location.replace("./")'>;color:white;width:160px;font-size:13px; value='로비로' onclick=location.replace('../')>
From 528ab4e203fd3fe89059044f5939ee2a010682cd Mon Sep 17 00:00:00 2001 From: hide_d Date: Tue, 23 Apr 2019 11:01:42 +0900 Subject: [PATCH 02/33] =?UTF-8?q?=EA=B0=B1=EC=8B=A0=EB=B0=A9=EC=8B=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/index.php | 2 +- hwe/js/main.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hwe/index.php b/hwe/index.php index d09f4caa..c5c2e545 100644 --- a/hwe/index.php +++ b/hwe/index.php @@ -268,7 +268,7 @@ else if($session->userGrade == 4){
- ;color:white;width:110px;font-size:13px; value='실 행' onclick='refreshing(this, 3,form2)'>;color:white;width:110px;font-size:13px; value='갱 신' onclick='location.replace("./")'>;color:white;width:160px;font-size:13px; value='로비로' onclick=location.replace('../')>
+ ;color:white;width:110px;font-size:13px; value='실 행' onclick='refreshing(this, 3,form2)'>;color:white;width:110px;font-size:13px; value='갱 신' onclick='refreshing(this, 0,0)'>;color:white;width:160px;font-size:13px; value='로비로' onclick=location.replace('../')>
diff --git a/hwe/js/main.js b/hwe/js/main.js index 7cdf5925..a4e75396 100644 --- a/hwe/js/main.js +++ b/hwe/js/main.js @@ -26,7 +26,7 @@ function refreshing(obj, arg1, arg2) { } // if(term <= 0) { switch(arg1) { - case 0: location.reload(); break; + case 0: location.reload(true); break; case 2: turn(arg2); break; case 3: arg2.submit(); break; case 4: From 7670d55f3c5c1cbf135b5fcee23ad64ecbaae922 Mon Sep 17 00:00:00 2001 From: hide_d Date: Tue, 23 Apr 2019 11:05:09 +0900 Subject: [PATCH 03/33] =?UTF-8?q?=EA=B0=B1=EC=8B=A0=20=EB=90=98=EB=8F=8C?= =?UTF-8?q?=EB=A6=BC..?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/js/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hwe/js/main.js b/hwe/js/main.js index a4e75396..fa79b5c3 100644 --- a/hwe/js/main.js +++ b/hwe/js/main.js @@ -26,7 +26,7 @@ function refreshing(obj, arg1, arg2) { } // if(term <= 0) { switch(arg1) { - case 0: location.reload(true); break; + case 0: document.location.reload(); break; case 2: turn(arg2); break; case 3: arg2.submit(); break; case 4: From ae8b94b2d70ba379a9c0638a6f90e76c4e193f4e Mon Sep 17 00:00:00 2001 From: hide_d Date: Tue, 23 Apr 2019 12:03:36 +0900 Subject: [PATCH 04/33] =?UTF-8?q?redirect=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/_119_b.php | 2 +- hwe/c_dipcenter.php | 4 ++-- hwe/c_double.php | 10 +++++----- hwe/c_myBossInfo.php | 28 ++++++++++++++-------------- hwe/c_troop.php | 2 +- hwe/c_vacation.php | 2 +- hwe/c_vote.php | 4 ++-- hwe/func_command.php | 6 +++--- hwe/preprocessing.php | 2 +- hwe/processing.php | 4 ++-- hwe/turn.php | 4 ++-- hwe/turn_pop_core.php | 2 +- hwe/turn_push_core.php | 2 +- 13 files changed, 36 insertions(+), 36 deletions(-) diff --git a/hwe/_119_b.php b/hwe/_119_b.php index 1e66a2e5..4f5b7992 100644 --- a/hwe/_119_b.php +++ b/hwe/_119_b.php @@ -87,4 +87,4 @@ case "락풀기": break; } -header('Location:_119.php'); \ No newline at end of file +header('Location:_119.php', true, 303); \ No newline at end of file diff --git a/hwe/c_dipcenter.php b/hwe/c_dipcenter.php index 1e7c0b1d..d1531dac 100644 --- a/hwe/c_dipcenter.php +++ b/hwe/c_dipcenter.php @@ -23,11 +23,11 @@ $me = $db->queryFirstRow('SELECT `no`,nation,`level`,permission,penalty FROM gen //내가 수뇌부이어야함 $permission = checkSecretPermission($me); if($permission < 0){ - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } else if ($me['level'] < 5 && $permission != 4) { - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } diff --git a/hwe/c_double.php b/hwe/c_double.php index b9e3ac79..e62bfaf1 100644 --- a/hwe/c_double.php +++ b/hwe/c_double.php @@ -55,7 +55,7 @@ if($command == 46) { $query['turn'.$turnIdx] = $comStr; } $db->update('general', $query, 'owner=%i', $userID); - header('Location:./'); + header('Location:./', true, 303); die(); } @@ -82,7 +82,7 @@ if($command == 53) { $query = "update nation set {$str} where nation='{$me['nation']}'"; MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); } - header('location:b_chiefcenter.php'); + header('location:b_chiefcenter.php', true, 303); die(); } @@ -102,7 +102,7 @@ if($command == 61) { MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); } - header('location:b_chiefcenter.php'); + header('location:b_chiefcenter.php', true, 303); die(); } @@ -126,7 +126,7 @@ if($command == 23 || $command == 24 || $command == 27 || $command == 51 || $comm $query = "update nation set {$str} where nation='{$me['nation']}'"; MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); } - header('location:b_chiefcenter.php'); + header('location:b_chiefcenter.php', true, 303); die(); } @@ -136,5 +136,5 @@ foreach($turn as $turnIdx){ $query['turn'.$turnIdx] = $comStr; } $db->update('general', $query, 'owner=%i', $userID); -header('Location:./'); +header('Location:./', true, 303); diff --git a/hwe/c_myBossInfo.php b/hwe/c_myBossInfo.php index ec1ff6a1..5524eb54 100644 --- a/hwe/c_myBossInfo.php +++ b/hwe/c_myBossInfo.php @@ -32,7 +32,7 @@ $ruler = MYDB_fetch_array($result); //수뇌가 아니면 아무것도 할 수 없음 if($meLevel < 5){ - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } @@ -45,18 +45,18 @@ if($btn == "임명") { } if($genlist != 0 && !$general){ - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } //임명할사람이 군주이면 불가, 내가 수뇌부이어야함, 공석아닌때는 국가가 같아야함 if($meLevel < 5 || ($genlist != 0 && $general['nation'] != $me['nation']) || ($genlist != 0 && $general['level'] == 12)) { - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } } elseif($btn == "추방") { if(!$outlist){ - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } $query = "select no,name,gold,rice,nation,troop,level,npc,picture,imgsvr,permission,penalty,belong from general where no='$outlist'"; @@ -64,33 +64,33 @@ if($btn == "임명") { $general = MYDB_fetch_array($result); if(!$general){ - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } //추방할사람이 군주이면 불가, 내가 수뇌부이어야함, 공석아닌때는 국가가 같아야함 if($general['level'] == 12 || $meLevel < 5 || ($general['nation'] != $me['nation'] && $outlist != 0)) { - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } //추방할사람이 외교권자이면 불가 $permission = checkSecretPermission($general); if($permission == 4){ - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } //NPC 부대장 추방 불가 if($general['npc'] == 5){ - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } } //나와 대상 장수는 국가가 같아야 함 if($genlist != 0 && $me['nation'] != $general['nation']){ - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } @@ -252,7 +252,7 @@ if($btn == "추방") { pushGenLog($general, $log); pushGeneralPublicRecord($alllog, $year, $month); } - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); die(); } @@ -303,7 +303,7 @@ if($btn == "임명" && $level >= 5 && $level <= 11) { } } } - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); die(); } @@ -319,7 +319,7 @@ if($btn == "임명" && $level >= 2 && $level <= 4 && $citylist > 0) { $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); $city = MYDB_fetch_array($result); if(!$city){ - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); die(); } $oldlist = $city[$genlv]; @@ -366,11 +366,11 @@ if($btn == "임명" && $level >= 2 && $level <= 4 && $citylist > 0) { } } } - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); die(); } -header('location:b_myBossInfo.php'); +header('location:b_myBossInfo.php', true, 303); diff --git a/hwe/c_troop.php b/hwe/c_troop.php index 4b57e620..faed759b 100644 --- a/hwe/c_troop.php +++ b/hwe/c_troop.php @@ -63,4 +63,4 @@ if($btn == "부 대 창 설" && $name != "" && $me['troop'] == 0) { } } -header('Location:b_troop.php'); +header('Location:b_troop.php', true, 303); diff --git a/hwe/c_vacation.php b/hwe/c_vacation.php index 8c825335..f6efa0d4 100644 --- a/hwe/c_vacation.php +++ b/hwe/c_vacation.php @@ -17,5 +17,5 @@ $db->update('general', [ ], 'owner=%i', $userID); -header('location:b_myPage.php'); +header('location:b_myPage.php', true, 303); diff --git a/hwe/c_vote.php b/hwe/c_vote.php index 18ce9594..31c75941 100644 --- a/hwe/c_vote.php +++ b/hwe/c_vote.php @@ -49,7 +49,7 @@ else if($btn == "댓글" && trim($comment) != "") { } if(!$isVoteAdmin){ - header('location:a_vote.php'); + header('location:a_vote.php', true, 303); die(); } @@ -85,4 +85,4 @@ if($btn == "수정") { $gameStor->voteopen = 2; } -header('location:a_vote.php'); \ No newline at end of file +header('location:a_vote.php', true, 303); \ No newline at end of file diff --git a/hwe/func_command.php b/hwe/func_command.php index 82e5b968..1d569fd3 100644 --- a/hwe/func_command.php +++ b/hwe/func_command.php @@ -707,7 +707,7 @@ where nation='{$general['nation']}' function command_Single($turn, $command) { if(!$turn){ - header('location:commandlist.php'); + header('location:commandlist.php', true, 303); return; } @@ -722,7 +722,7 @@ function command_Single($turn, $command) { } $db->update('general', $setValues, 'owner=%i',$userID); - header('location:commandlist.php'); + header('location:commandlist.php', true, 303); } function command_Chief($turn, $command) { @@ -745,7 +745,7 @@ function command_Chief($turn, $command) { $query = "update nation set {$str} where nation='{$me['nation']}'"; MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); } - header('location:b_chiefcenter.php'); + header('location:b_chiefcenter.php', true, 303); } function command_Other($turn, $commandtype) { diff --git a/hwe/preprocessing.php b/hwe/preprocessing.php index f5505d8c..3d884940 100644 --- a/hwe/preprocessing.php +++ b/hwe/preprocessing.php @@ -17,7 +17,7 @@ $commandtype = Util::getReq('commandtype', 'int'); increaseRefresh("턴입력", 1); if(!$turn || $commandtype === null || $sel === null){ - header('location:commandlist.php'); + header('location:commandlist.php', true, 303); die(); } diff --git a/hwe/processing.php b/hwe/processing.php index 40260b15..7cdf0468 100644 --- a/hwe/processing.php +++ b/hwe/processing.php @@ -9,7 +9,7 @@ $commandtype = Util::getReq('commandtype', 'int'); $turn = Util::getReq('turn', 'array_int'); if(!$turn || $commandtype === null){ - header('location:commandlist.php'); + header('location:commandlist.php', true, 303); die(); } @@ -196,7 +196,7 @@ function command_99($turn) { } } - header('location:b_chiefcenter.php'); + header('location:b_chiefcenter.php', true, 303); } function command_11($turn, $command, bool $is모병 = false) { diff --git a/hwe/turn.php b/hwe/turn.php index b1df8c37..2910641b 100644 --- a/hwe/turn.php +++ b/hwe/turn.php @@ -25,7 +25,7 @@ $myActionCnt = $db->queryFirstField('SELECT con FROM general WHERE `owner`=%i', $con = checkLimit($myActionCnt); if($con >= 2) { - header('location:commandlist.php'); + header('location:commandlist.php', true, 303); exit(); } @@ -62,4 +62,4 @@ case 2: break; } -header('location:commandlist.php'); +header('location:commandlist.php', true, 303); diff --git a/hwe/turn_pop_core.php b/hwe/turn_pop_core.php index 5148f3ec..afb2cdb4 100644 --- a/hwe/turn_pop_core.php +++ b/hwe/turn_pop_core.php @@ -16,4 +16,4 @@ $me = MYDB_fetch_array($result); updateCommand($me['no'], 2); -header('location:b_chiefcenter.php'); +header('location:b_chiefcenter.php', true, 303); diff --git a/hwe/turn_push_core.php b/hwe/turn_push_core.php index d3b8f088..04036916 100644 --- a/hwe/turn_push_core.php +++ b/hwe/turn_push_core.php @@ -16,4 +16,4 @@ $me = MYDB_fetch_array($result); backupdateCommand($me['no'], 2); -header('location:b_chiefcenter.php'); +header('location:b_chiefcenter.php', true, 303); From 81fa97d3eed7e7f17c26736e2b06d963b6acc54b Mon Sep 17 00:00:00 2001 From: hide_d Date: Sun, 21 Apr 2019 22:15:41 +0900 Subject: [PATCH 05/33] =?UTF-8?q?=EC=97=90=EB=9F=AC=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=20=EA=B0=95=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- f_config/config.php | 16 ++++++++++++++-- f_install/sql/err_log.sql | 4 +++- hwe/lib.php | 3 ++- showErrorLog.php | 8 +++++++- 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/f_config/config.php b/f_config/config.php index f86fc6be..1123e653 100644 --- a/f_config/config.php +++ b/f_config/config.php @@ -88,19 +88,28 @@ function getExceptionTraceAsString($exception) { return $rtn; } -function logError(string $err, string $errstr, array $trace){ +function logError(string $err, string $errstr, string $errpath, array $trace){ $fdb = FileDB::db(ROOT.'/d_log/err_log.sqlite3', ROOT.'/f_install/sql/err_log.sql'); $date = date("Ymd_His"); + $errpath = str_replace(ROOT, '{ROOT}', $errpath); $trace = array_map(function(string $text){ return str_replace(ROOT, '{ROOT}', $text); }, $trace); + $owner = Util::get_client_ip(); + $session = Session::getInstance(); + if($session->isLoggedIn(true)){ + $owner .= '('.$session->getUserID().','.$session->userName.')'; + } + $fdb->insert('err_log', [ 'date'=>$date, 'err'=>$err, 'errstr'=>$errstr, - 'trace'=>Json::encode($trace) + 'errpath'=>$errpath, + 'trace'=>Json::encode($trace), + 'webuser'=>$owner ]); } @@ -116,6 +125,7 @@ function logErrorByCustomHandler(int $errno, string $errstr, string $errfile, in logError( getFriendlyErrorType($errno), $errstr, + $errfile.':'.$errline, getExceptionTraceAsString($e) ); } @@ -123,9 +133,11 @@ set_error_handler("\sammo\logErrorByCustomHandler"); function logExceptionByCustomHandler(\Throwable $e){ + logError( get_class($e), $e->getMessage(), + $e->getFile().':'.$e->getLine(), getExceptionTraceAsString($e) ); diff --git a/f_install/sql/err_log.sql b/f_install/sql/err_log.sql index c12c2f89..69e7fc29 100644 --- a/f_install/sql/err_log.sql +++ b/f_install/sql/err_log.sql @@ -3,7 +3,9 @@ CREATE TABLE IF NOT EXISTS `err_log` ( `date` TEXT NOT NULL, `err` TEXT NOT NULL, `errstr` TEXT NOT NULL, - `trace` TEXT NOT NULL + `errpath` TEXT NOT NULL, + `trace` TEXT NOT NULL, + `webuser` TEXT NULL ); CREATE INDEX IF NOT EXISTS `date` ON `err_log` ( `date` DESC diff --git a/hwe/lib.php b/hwe/lib.php index 5ba3a90d..47a357ac 100644 --- a/hwe/lib.php +++ b/hwe/lib.php @@ -33,7 +33,8 @@ function Error($message='', $url="") if (!$url) { $url = $_SERVER['REQUEST_URI']; } - file_put_contents(__dir__."/logs/".UniqueConst::$serverID."/_db_bug.txt", "{\"url\":\"$url\",\"msg\":\"$message\"}\n", FILE_APPEND); + $e = new \Exception(); + logError("aux_err", $message, '', getExceptionTraceAsString($e)); $templates = new \League\Plates\Engine(__dir__.'/templates'); diff --git a/showErrorLog.php b/showErrorLog.php index 0b0fc974..320af10a 100644 --- a/showErrorLog.php +++ b/showErrorLog.php @@ -29,7 +29,9 @@ $err_logs = $fdb->select('err_log', [ 'date', 'err', 'errstr', - 'trace' + 'errpath', + 'trace', + 'webuser' ], [ 'ORDER'=>['id'=>'DESC'], 'LIMIT'=>100 @@ -61,9 +63,13 @@ $err_logs = $fdb->select('err_log', [
    + +
  • +
  • +
From ee74771f1676956e6bb43c334480b289ad5b5721 Mon Sep 17 00:00:00 2001 From: hide_d Date: Wed, 1 May 2019 01:51:49 +0900 Subject: [PATCH 06/33] =?UTF-8?q?=EB=B6=80=EB=8C=80=EC=9E=A5=20=EC=9D=B4?= =?UTF-8?q?=EB=A6=84=EC=9D=84=20=EC=A0=95=EB=A0=AC=ED=95=98=EA=B8=B0?= =?UTF-8?q?=EC=97=90=20=ED=8E=B8=EB=A6=AC=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/func_gamerule.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hwe/func_gamerule.php b/hwe/func_gamerule.php index ffff8e60..03132efc 100644 --- a/hwe/func_gamerule.php +++ b/hwe/func_gamerule.php @@ -1043,7 +1043,7 @@ function updateNationState() { while($genStep > 0){ $lastAssemblerID += 1; $npcObj = new Scenario\NPC( - 999, '부대장'.$lastAssemblerID, null, $nation['nation'], null, + 999, sprintf('부대장%3d',$lastAssemblerID), null, $nation['nation'], null, 10, 10, 10, 1, $admin['year'] - 15, $admin['year'] + 15, '은둔', '척사' ); $npcObj->npc = 5; From 580275a8cf256632fc0cf7085252017406a56d41 Mon Sep 17 00:00:00 2001 From: hide_d Date: Wed, 1 May 2019 01:52:50 +0900 Subject: [PATCH 07/33] =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- j_login.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/j_login.php b/j_login.php index e5e6939f..d6222216 100644 --- a/j_login.php +++ b/j_login.php @@ -76,7 +76,7 @@ function kakaoOAuthCheck(array $userInfo) : ?array { $refreshTokenValidUntil = TimeUtil::DatetimeFromNowSecond($refreshResult['refresh_token_expires_in']); $oauthInfo['refreshToken'] = $refreshToken; - $oauthInfo['refresh_token_expires_in'] = $refresh_token_expires_in; + $oauthInfo['refresh_token_expires_in'] = $refreshTokenValidUntil; } RootDB::db()->update('member', [ From 1a9e6f3b1aef2b2769f2379ce83110591856e15b Mon Sep 17 00:00:00 2001 From: hide_d Date: Wed, 1 May 2019 02:06:51 +0900 Subject: [PATCH 08/33] =?UTF-8?q?m=EC=9E=A5=20=EC=9D=98=EB=B3=91=EC=9E=A5?= =?UTF-8?q?=20=EC=B4=88=20=EA=B0=95=ED=99=94!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/func_process_chief.php | 31 +++++++++++++++++++++++++------ hwe/func_process_personnel.php | 33 ++++++++++++++++++++++++++------- 2 files changed, 51 insertions(+), 13 deletions(-) diff --git a/hwe/func_process_chief.php b/hwe/func_process_chief.php index bbac1110..3e9a9bc8 100644 --- a/hwe/func_process_chief.php +++ b/hwe/func_process_chief.php @@ -1968,7 +1968,9 @@ function process_76(&$general) { $avgNation = MYDB_fetch_array($result); $gencount = 5 + Util::round($avgNation['gennum'] / 10); - $avgGen = $db->queryFirstRow('SELECT max(leader+power+intel) as lpi, avg(dedication) as ded,avg(experience) as exp, avg(dex0+dex10+dex20+dex30) / 4 as dex_t, avg(age) as age, avg(dex40) as dex40 from general where npc < 5 and nation = %i', $general['nation']); + $avgGen = $db->queryFirstRow('SELECT max(leader+power+intel) as lpi, avg(dedication) as ded,avg(experience) as exp, avg(dex0+dex10+dex20+dex30) as dex_t, avg(age) as age, avg(dex40) as dex40 from general where npc < 5 and nation = %i', $general['nation']); + + $dexTotal = $avgGen['dex_t']; //의병추가 $npc = 4; @@ -1979,25 +1981,42 @@ function process_76(&$general) { $stat_tier3 = GameConst::$defaultStatMin + rand()%6; $stat_tier2 = GameConst::$defaultStatTotal - $stat_tier1 - $stat_tier3; $type = Util::choiceRandomUsingWeight([ - 'power'=>5, - 'intel'=>5, + 'power0'=>1, + 'power1'=>1, + 'power2'=>1, + 'intel'=>3, 'neutral'=>0 ]); switch($type){ - case 'power': + case 'power0': $leader = $stat_tier1; $power = $stat_tier2; $intel = $stat_tier3; + $dexVal = [$dexTotal*5/8, $dexTotal/8, $dexTotal/8, $dexTotal/8]; + break; + case 'power1': + $leader = $stat_tier1; + $power = $stat_tier2; + $intel = $stat_tier3; + $dexVal = [$dexTotal/8, $dexTotal*5/8, $dexTotal/8, $dexTotal/8]; + break; + case 'power2': + $leader = $stat_tier1; + $power = $stat_tier2; + $intel = $stat_tier3; + $dexVal = [$dexTotal/8, $dexTotal/8, $dexTotal*5/8, $dexTotal/8]; break; case 'intel': $leader = $stat_tier1; $power = $stat_tier3; $intel = $stat_tier2; + $dexVal = [$dexTotal/8, $dexTotal/8, $dexTotal/8, $dexTotal*5/8]; break; - case 'neutral': + default: $leader = $stat_tier3; $power = $stat_tier1; $intel = $stat_tier2; + $dexVal = [$dexTotal/4, $dexTotal/4, $dexTotal/4, $dexTotal/4]; break; } // 국내 최고능치 기준으로 랜덤성 스케일링 @@ -2071,7 +2090,7 @@ function process_76(&$general) { '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['dex_t']}','{$avgGen['dex_t']}','{$avgGen['dex_t']}','{$avgGen['dex_t']}','{$avgGen['dex40']}' + '{$dexVal[0]}','{$dexVal[1]}','{$dexVal[2]}','{$dexVal[3]}','{$avgGen['dex40']}' )", $connect ) or Error(__LINE__.MYDB_error($connect),""); diff --git a/hwe/func_process_personnel.php b/hwe/func_process_personnel.php index 9899edbb..10c6e192 100644 --- a/hwe/func_process_personnel.php +++ b/hwe/func_process_personnel.php @@ -389,32 +389,51 @@ function process_29(&$general) { $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} $name{$josaRa}는 인재를 {$scoutType}하였습니다!"; pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:$name{$josaRa}는 인재를 {$scoutType}"); - $avgGen = $db->queryFirstRow('SELECT max(leader+power+intel) as lpi, avg(dedication) as ded,avg(experience) as exp, avg(dex0+dex10+dex20+dex30) / 4 as dex_t, avg(dex40) as dex40 from general where npc < 5 and nation = %i', $general['nation']); + $avgGen = $db->queryFirstRow('SELECT max(leader+power+intel) as lpi, 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([ - 'power'=>4, - 'intel'=>4, - 'neutral'=>2 + 'power0'=>2, + 'power1'=>2, + 'power2'=>2, + 'intel'=>6, + 'neutral'=>3 ]); switch($type){ - case 'power': + case 'power0': $leader = $stat_tier1; $power = $stat_tier2; $intel = $stat_tier3; + $dexVal = [$dexTotal*5/8, $dexTotal/8, $dexTotal/8, $dexTotal/8]; + break; + case 'power1': + $leader = $stat_tier1; + $power = $stat_tier2; + $intel = $stat_tier3; + $dexVal = [$dexTotal/8, $dexTotal*5/8, $dexTotal/8, $dexTotal/8]; + break; + case 'power2': + $leader = $stat_tier1; + $power = $stat_tier2; + $intel = $stat_tier3; + $dexVal = [$dexTotal/8, $dexTotal/8, $dexTotal*5/8, $dexTotal/8]; break; case 'intel': $leader = $stat_tier1; $power = $stat_tier3; $intel = $stat_tier2; + $dexVal = [$dexTotal/8, $dexTotal/8, $dexTotal/8, $dexTotal*5/8]; break; - case 'neutral': + default: $leader = $stat_tier3; $power = $stat_tier1; $intel = $stat_tier2; + $dexVal = [$dexTotal/4, $dexTotal/4, $dexTotal/4, $dexTotal/4]; break; } @@ -497,7 +516,7 @@ function process_29(&$general) { '$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', - '{$avgGen['dex_t']}','{$avgGen['dex_t']}','{$avgGen['dex_t']}','{$avgGen['dex_t']}','{$avgGen['dex40']}' + '{$dexVal[0]}','{$dexVal[1]}','{$dexVal[2]}','{$dexVal[3]}','{$avgGen['dex40']}' )", $connect ) or Error(__LINE__.MYDB_error($connect),""); From 3e752461e8f37c2a7846ad1e48e039c1098831b5 Mon Sep 17 00:00:00 2001 From: hide_d Date: Wed, 1 May 2019 02:21:06 +0900 Subject: [PATCH 09/33] =?UTF-8?q?=EC=8A=A4=EB=A7=88=ED=8A=B8=ED=8F=B0?= =?UTF-8?q?=EC=9D=B4=EB=8D=94=EB=9D=BC=EB=8F=84=20neutralView(=EB=8F=84?= =?UTF-8?q?=EC=8B=9C=EC=84=A0=ED=83=9D=EB=AA=A8=EB=93=9C)=EC=97=90?= =?UTF-8?q?=EC=84=9C=EB=8A=94=20=EB=91=90=EB=B2=88=EC=84=A0=ED=83=9D=20?= =?UTF-8?q?=ED=95=B4=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/js/map.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hwe/js/map.js b/hwe/js/map.js index b1c49e67..9ddbbda0 100644 --- a/hwe/js/map.js +++ b/hwe/js/map.js @@ -385,7 +385,7 @@ function reloadWorldMap(option){ //터치스크린 탭 - if(is_touch_device()){ + if(!option.neutralView && is_touch_device()){ $objs.on('touchstart', function(e){ if(window.sam_toggleSingleTap){ return true; From d0fae444302fe82ad15f153268b403bee5d57bbb Mon Sep 17 00:00:00 2001 From: hide_d Date: Wed, 1 May 2019 02:33:49 +0900 Subject: [PATCH 10/33] =?UTF-8?q?=EB=8F=84=EC=8B=9C=20=EB=AA=A9=EB=A1=9D?= =?UTF-8?q?=EC=97=90=EB=8F=84=20=EC=A0=84=EC=BD=98=EC=9D=84=20=EB=9D=84?= =?UTF-8?q?=EC=9B=8C=EC=A4=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/b_currentCity.php | 1 + hwe/templates/cityGeneral.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/hwe/b_currentCity.php b/hwe/b_currentCity.php index 8896c05b..8c37b978 100644 --- a/hwe/b_currentCity.php +++ b/hwe/b_currentCity.php @@ -282,6 +282,7 @@ for($j=0; $j < $gencount; $j++) { $generalsFormat[] = [ 'ourGeneral'=>$ourGeneral, + 'iconPath'=>GetImageURL($general['imgsvr']).'/'.$general['picture'], 'isNPC'=>$isNPC, 'wounded'=>$wounded, 'name'=>$name, diff --git a/hwe/templates/cityGeneral.php b/hwe/templates/cityGeneral.php index 7aa86c74..2cb6013d 100644 --- a/hwe/templates/cityGeneral.php +++ b/hwe/templates/cityGeneral.php @@ -20,7 +20,7 @@ data-general-nation="" data-general-nation-name="" > - + From 681918cb63453c95b65f9038d9638a901f7cdc7c Mon Sep 17 00:00:00 2001 From: hide_d Date: Wed, 1 May 2019 02:42:23 +0900 Subject: [PATCH 11/33] =?UTF-8?q?=EC=9C=A0=EB=8B=88=ED=81=AC=20=ED=9A=8D?= =?UTF-8?q?=EB=93=9D=EC=8B=9C=20=EA=B3=A8=EA=B3=A0=EB=A3=A8=20=ED=9A=8D?= =?UTF-8?q?=EB=93=9D=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/func.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/hwe/func.php b/hwe/func.php index f1e73e96..7971e074 100644 --- a/hwe/func.php +++ b/hwe/func.php @@ -2250,7 +2250,13 @@ function uniqueItem($general, $log, $vote=0) { //아이템 습득 상황 if(rand() % $prob == 0) { //셋중 선택 - $sel = rand() % 4; + $selGroup = [ + 20 - $db->queryFirstField('SELECT count(*) from general where weap > 7'), + 20 - $db->queryFirstField('SELECT count(*) from general where book > 7'), + 20 - $db->queryFirstField('SELECT count(*) from general where horse > 7'), + 20 - $db->queryFirstField('SELECT count(*) from general where item > 7') + ]; + $sel = Util::choiceRandomUsingWeight($selGroup); switch($sel) { case 0: $type = "weap"; break; case 1: $type = "book"; break; From 947e8e9512fe23221c904dcfe6058b0b23772732 Mon Sep 17 00:00:00 2001 From: hide_d Date: Wed, 1 May 2019 02:47:27 +0900 Subject: [PATCH 12/33] =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EB=B2=84=EA=B7=B8?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/func.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hwe/func.php b/hwe/func.php index 7971e074..b8c74338 100644 --- a/hwe/func.php +++ b/hwe/func.php @@ -2251,10 +2251,10 @@ function uniqueItem($general, $log, $vote=0) { if(rand() % $prob == 0) { //셋중 선택 $selGroup = [ - 20 - $db->queryFirstField('SELECT count(*) from general where weap > 7'), - 20 - $db->queryFirstField('SELECT count(*) from general where book > 7'), - 20 - $db->queryFirstField('SELECT count(*) from general where horse > 7'), - 20 - $db->queryFirstField('SELECT count(*) from general where item > 7') + 20 - $db->queryFirstField('SELECT count(*) from general where weap > 6'), + 20 - $db->queryFirstField('SELECT count(*) from general where book > 6'), + 20 - $db->queryFirstField('SELECT count(*) from general where horse > 6'), + 20 - $db->queryFirstField('SELECT count(*) from general where item > 6') ]; $sel = Util::choiceRandomUsingWeight($selGroup); switch($sel) { From b98668bc6065bf6abb98900bb52cef46a04b385c Mon Sep 17 00:00:00 2001 From: hide_d Date: Wed, 1 May 2019 02:57:48 +0900 Subject: [PATCH 13/33] =?UTF-8?q?=EB=B6=80=EB=8C=80=EC=9E=A5=20=EC=82=AD?= =?UTF-8?q?=ED=84=B4=20=EA=B3=84=EC=82=B0=20=EB=B0=A9=EC=8B=9D=20=EC=9D=BC?= =?UTF-8?q?=EB=B6=80=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/func_npc.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hwe/func_npc.php b/hwe/func_npc.php index fff0c074..7abe8c36 100644 --- a/hwe/func_npc.php +++ b/hwe/func_npc.php @@ -220,6 +220,8 @@ function processAI($no) { } else{ + $newKillTurn = ($general['killturn'] + Util::randRangeInt(1, 4)) % 5; + $newKillTurn += 70; $command = EncodeCommand(0, 0, 0, 26); //집합 $db->update('general', [ 'turn0'=>$command, @@ -228,7 +230,7 @@ function processAI($no) { 'turn3'=>$command, 'turn4'=>$command, 'turn5'=>$command, - 'killturn'=>rand(70,75), + 'killturn'=>$newKillTurn, ], 'no=%i', $general['no']); } From 0b46303f9f5b99f0cf30f281cdfed948e10e2a4e Mon Sep 17 00:00:00 2001 From: hide_d Date: Wed, 1 May 2019 03:08:46 +0900 Subject: [PATCH 14/33] =?UTF-8?q?=EC=8B=9C=EA=B0=84=EC=9D=B4=20=EC=A7=80?= =?UTF-8?q?=EB=82=A0=20=EC=88=98=EB=A1=9D=20=EC=A0=91=EA=B2=BD=20=EC=88=98?= =?UTF-8?q?=EB=8F=84=20=EB=86=8D=EC=83=81,=20=EC=84=B1=EC=88=98=EC=9D=98?= =?UTF-8?q?=20=EB=94=94=EB=B2=84=ED=94=84=EA=B0=80=20=EC=83=9D=EA=B9=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/func_process.php | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/hwe/func_process.php b/hwe/func_process.php index 1410e19d..20e4f07f 100644 --- a/hwe/func_process.php +++ b/hwe/func_process.php @@ -273,8 +273,15 @@ function process_1(&$general, $type) { $exp = CharExperience($exp, $general['personal']); $ded = CharDedication($ded, $general['personal']); - if($city['front'] == 1 && $city['city'] != $nation['capital']){ - $score *= 0.5; + if($city['front'] == 1){ + if($city['city'] == $nation['capital']){ + $degrade = 1 - ($admin['year'] - $admin['startyear'] - 5) * 0.025; + $score *= Util::valueFit($degrade, 0.5, 1); + } + else{ + $score *= 0.5; + } + } $score += $city["$stype"]; @@ -571,14 +578,27 @@ function process_5(&$general, $type) { $exp = $score * 0.7; $ded = $score * 1.0; - if($city['front'] == 1 && $city['city'] != $nation['capital']){ - if($stype == 'def'){ - $score *= 0.5; + if($city['front'] == 1){ + if($city['city'] == $nation['capital']){ + if($stype == 'def'){ + $degrade = 1 - ($admin['year'] - $admin['startyear'] - 5) * 0.025; + $score *= Util::valueFit($degrade, 0.5, 1); + } + else{ + $degrade = 1 - ($admin['year'] - $admin['startyear'] - 5) * 0.0375; + $score *= Util::valueFit($degrade, 0.25, 1); + } } else{ - $score *= 0.25; + if($stype == 'def'){ + $score *= 0.5; + } + else{ + $score *= 0.25; + } } + } // 성격 보정 From faaee4b9457a6c7e5300b9953dea9c289dce210e Mon Sep 17 00:00:00 2001 From: hide_d Date: Wed, 1 May 2019 14:41:06 +0900 Subject: [PATCH 15/33] =?UTF-8?q?=EC=B6=A9=EC=B0=A8=EC=A0=84=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=A4=80=EB=B9=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/scenario/scenario_99.json | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 hwe/scenario/scenario_99.json diff --git a/hwe/scenario/scenario_99.json b/hwe/scenario/scenario_99.json new file mode 100644 index 00000000..0acd9849 --- /dev/null +++ b/hwe/scenario/scenario_99.json @@ -0,0 +1,10 @@ +{ + "title":"【공백지】 충차전", + "startYear":180, + "map":{ + "mapName":"che" + }, + "history": [ + "●180년 1월:【이벤트】병기로 싸운다! 최고의 충차 지휘관을 가린다" + ] +} \ No newline at end of file From 54aa47d1a831201f19290b2f701886a8530bce21 Mon Sep 17 00:00:00 2001 From: hide_d Date: Wed, 1 May 2019 14:55:42 +0900 Subject: [PATCH 16/33] =?UTF-8?q?=EC=B6=A9=EC=B0=A8=EC=A0=84=20=EA=B8=B0?= =?UTF-8?q?=EB=B3=B8=20=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{scenario_99.json => scenario_900.json} | 6 +- hwe/scenario/unit/siegetank.php | 276 ++++++++++++++++++ 2 files changed, 281 insertions(+), 1 deletion(-) rename hwe/scenario/{scenario_99.json => scenario_900.json} (70%) create mode 100644 hwe/scenario/unit/siegetank.php diff --git a/hwe/scenario/scenario_99.json b/hwe/scenario/scenario_900.json similarity index 70% rename from hwe/scenario/scenario_99.json rename to hwe/scenario/scenario_900.json index 0acd9849..a9edd73d 100644 --- a/hwe/scenario/scenario_99.json +++ b/hwe/scenario/scenario_900.json @@ -2,7 +2,11 @@ "title":"【공백지】 충차전", "startYear":180, "map":{ - "mapName":"che" + "mapName":"che", + "unitSet":"siegetank" + }, + "stat":{ + "chiefMin":9 }, "history": [ "●180년 1월:【이벤트】병기로 싸운다! 최고의 충차 지휘관을 가린다" diff --git a/hwe/scenario/unit/siegetank.php b/hwe/scenario/unit/siegetank.php new file mode 100644 index 00000000..84532661 --- /dev/null +++ b/hwe/scenario/unit/siegetank.php @@ -0,0 +1,276 @@ +1.2], + ['성벽입니다.','생성할 수 없습니다.'] + ], + [ + 9000, self::T_FOOTMAN, '보병', + 100, 150, 7, 10, 0, 18, 18, + 0, null, null, 0, + [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8], + [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2], + ['표준적인 보병입니다.','보병은 방어특화이며, 상대가 회피하기 어렵습니다.'] + ], + [ + 9001, self::T_FOOTMAN, '청주병', + 100, 200, 7, 10, 0, 20, 22, + 1000, null, ['중원'], 0, + [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8], + [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2], + ['저렴하고 튼튼합니다.'] + ], + [ + 9002, self::T_FOOTMAN, '수병', + 150, 150, 7, 10, 0, 22, 20, + 1000, null, ['오월'], 0, + [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8], + [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2], + ['저렴하고 강력합니다.'] + ], + [ + 9003, self::T_FOOTMAN, '자객병', + 100, 150, 8, 20, 0, 20, 20, + 2000, ['저'], null, 0, + [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8], + [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2], + ['은밀하고 날쌥니다.'] + ], + [ + 9004, self::T_FOOTMAN, '근위병', + 150, 200, 7, 10, 0, 24, 24, + 3000, ['낙양'], null, 0, + [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8], + [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2], + ['최강의 보병입니다.'] + ], + [ + 9005, self::T_FOOTMAN, '등갑병', + 100, 225, 7, 5, 0, 26, 20, + 1000, null, ['남중'], 0, + [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8], + [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2], + ['등갑을 두른 보병입니다.'] + ], + + [ + 9010, self::T_ARCHER, '궁병', + 100, 100, 7, 20, 0, 20, 20, + 0, null, null, 0, + [self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8], + [self::T_CAVALRY=>0.8, self::T_FOOTMAN=>1.2], + ['표준적인 궁병입니다.','궁병은 회피특화입니다.'] + ], + [ + 9011, self::T_ARCHER, '궁기병', + 100, 100, 8, 30, 0, 22, 24, + 1000, null, ['동이'], 0, + [self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8], + [self::T_CAVALRY=>0.8, self::T_FOOTMAN=>1.2], + ['말을 타고 잘 피합니다.'] + ], + [ + 9012, self::T_ARCHER, '연노병', + 150, 100, 8, 20, 0, 24, 22, + 1000, null, ['서촉'], 0, + [self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8], + [self::T_CAVALRY=>0.8, self::T_FOOTMAN=>1.2], + ['화살을 연사합니다.'] + ], + [ + 9013, self::T_ARCHER, '강궁병', + 150, 150, 7, 20, 0, 26, 26, + 3000, ['양양'], null, 0, + [self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8], + [self::T_CAVALRY=>0.8, self::T_FOOTMAN=>1.2], + ['강건한 궁병입니다.'] + ], + [ + 9014, self::T_ARCHER, '석궁병', + 200, 100, 7, 20, 0, 26, 26, + 3000, ['건업'], null, 0, + [self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8], + [self::T_CAVALRY=>0.8, self::T_FOOTMAN=>1.2], + ['강력한 화살을 쏩니다.'] + ], + + [ + 9020, self::T_CAVALRY, '기병', + 150, 100, 7, 5, 0, 22, 22, + 0, null, null, 0, + [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8], + [self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2], + ['표준적인 기병입니다.','기병은 공격특화입니다.'] + ], + [ + 9021, self::T_CAVALRY, '백마병', + 200, 100, 7, 5, 0, 24, 26, + 1000, null, ['하북'], 0, + [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8], + [self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2], + ['백마의 위용을 보여줍니다.'] + ], + [ + 9022, self::T_CAVALRY, '중장기병', + 150, 150, 7, 5, 0, 26, 24, + 1000, null, ['서북'], 0, + [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8], + [self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2], + ['갑주를 두른 기병입니다.'] + ], + [ + 9023, self::T_CAVALRY, '돌격기병', + 200, 100, 8, 5, 0, 26, 22, + 2000, ['흉노'], null, 0, + [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8], + [self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2], + ['저돌적으로 공격합니다.'] + ], + [ + 9024, self::T_CAVALRY, '철기병', + 100, 200, 7, 5, 0, 22, 26, + 2000, ['강'], null, 0, + [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8], + [self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2], + ['철갑을 두른 기병입니다.']], + [ + 9025, self::T_CAVALRY, '수렵기병', + 150, 100, 8, 15, 0, 24, 24, + 2000, ['산월'], null, 0, + [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8], + [self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2], + ['날쎄고 빠른 기병입니다.'] + ], + [ + 9026, self::T_CAVALRY, '맹수병', + 250, 175, 6, 0, 0, 32, 32, + 2000, ['남만'], null, 0, + [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8], + [self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2], + ['어느 누구보다 강력합니다.'] + ], + [ + 9027, self::T_CAVALRY, '호표기병', + 200, 150, 7, 5, 0, 28, 28, + 3000, ['허창'], null, 0, + [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8], + [self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2], + ['정예 기병입니다.'] + ], + + [ + 9030, self::T_WIZARD, '귀병', + 80, 80, 7, 5, 0.5, 18, 18, + 0, null, null, 0, + [], + [], + ['계략을 사용하는 병종입니다.'] + ], + [ + 9031, self::T_WIZARD, '신귀병', + 80, 80, 7, 20, 0.6, 20, 20, + 1000, null, ['초'], 0, + [], + [], + ['신출귀몰한 귀병입니다.'] + ], + [ + 9032, self::T_WIZARD, '백귀병', + 80, 130, 7, 5, 0.6, 18, 22, + 2000, ['오환'], null, 0, + [], + [], + ['저렴하고 튼튼합니다.'] + ], + [ + 9033, self::T_WIZARD, '흑귀병', + 130, 80, 7, 5, 0.6, 22, 18, + 2000, ['왜'], null, 0, + [], + [], + ['저렴하고 강력합니다.'] + ], + [ + 9034, self::T_WIZARD, '악귀병', + 130, 130, 7, 0, 0.6, 24, 24, + 3000, ['장안'], null, 0, + [], + [], + ['백병전에도 능숙합니다.'] + ], + [ + 9035, self::T_WIZARD, '남귀병', + 60, 60, 7, 10, 0.8, 16, 16, + 1000, null, null, 0, + [], + [], + ['전투를 포기하고 계략에 몰두합니다.'] + ], + [ + 9036, self::T_WIZARD, '황귀병', + 110, 110, 7, 0, 0.8, 26, 20, + 3000, ['낙양'], null, 0, + [], + [], + ['고도로 훈련된 귀병입니다.'] + ], + [ + 9037, self::T_WIZARD, '천귀병', + 80, 130, 7, 15, 0.6, 22, 24, + 3000, ['성도'], null, 0, + [], + [], + ['갑주를 두른 귀병입니다.'] + ], + [ + 9038, self::T_WIZARD, '마귀병', + 130, 80, 7, 15, 0.6, 24, 22, + 3000, ['업'], null, 0, + [], + [], + ['날카로운 무기를 가진 귀병입니다.'] + ], + [ + 9040, self::T_SIEGE, '정란', + 100, 100, 6, 0, 0, 7, 3, + 0, null, null, 0, + [self::T_CASTLE=>1.8], + [], + ['높은 구조물 위에서 공격합니다.'] + ], + [ + 9041, self::T_SIEGE, '충차', + 150, 100, 6, 0, 0, 10, 3, + 1000, null, null, 3, + [self::T_CASTLE=>2.4], + [], + ['엄청난 위력으로 성벽을 부수어버립니다.'] + ], + [ + 9042, self::T_SIEGE, '벽력거', + 200, 100, 6, 0, 0, 20, 4, + 3000, ['업'], null, 0, + [self::T_CASTLE=>1.8], + [], + ['상대에게 돌덩이를 날립니다.'] + ], + [ + 9043, self::T_SIEGE, '목우', + 50, 200, 5, 0, 0, 15, 3, + 3000, ['성도'], null, 0, + [], + [], + ['상대를 저지하는 특수병기입니다.'] + ] + ]; +} \ No newline at end of file From 84a12e28df045b63a415f09e383a0d0f8e9c2099 Mon Sep 17 00:00:00 2001 From: hide_d Date: Thu, 2 May 2019 00:50:24 +0900 Subject: [PATCH 17/33] =?UTF-8?q?=EC=A7=80=EB=8F=84=20=EB=93=B1=EC=9D=84?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80=ED=95=A0=20=EA=B2=BD=EC=9A=B0=20css,=20js?= =?UTF-8?q?=EB=A5=BC=20=EC=83=88=EB=A1=9C=20=EC=84=A4=EC=A0=95=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- f_install/j_update_js_css_path.php | 117 +++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 f_install/j_update_js_css_path.php diff --git a/f_install/j_update_js_css_path.php b/f_install/j_update_js_css_path.php new file mode 100644 index 00000000..27b4fc10 --- /dev/null +++ b/f_install/j_update_js_css_path.php @@ -0,0 +1,117 @@ +setReadOnly(); +if($session->userGrade < 6){ + Json::die([ + 'result'=>false, + 'reason'=>'관리자 아님' + ]); +} + +$servHost = Util::getReq('serv_host'); +$sharedIconPath = Util::getReq('shared_icon_path'); +$gameImagePath = Util::getReq('game_image_path'); + +if($servHost){ + if(!$sharedIconPath || $gameImagePath){ + Json::die([ + 'result'=>false, + 'reason'=>'serv_host가 지정된 경우, sharedIconPath와 gameImagePath가 모두 지정되어야합니다.' + ]); + } + + $sharedIconPath = WebUtil::resolveRelativePath($sharedIconPath, $servHost); + $gameImagePath = WebUtil::resolveRelativePath($gameImagePath, $servHost); + + $result = Util::generateFileUsingSimpleTemplate( + __dir__.'/templates/ServConfig.orig.php', + ROOT.'/d_setting/ServConfig.php', + [ + 'serverBasePath'=>$servHost, + 'sharedIconPath'=>$sharedIconPath, + 'gameImagePath'=>$gameImagePath + ], + true + ); + + if ($result !== true) { + Json::die([ + 'result'=>false, + 'reason'=>$result + ]); + } +} +else if($sharedIconPath || $gameImagePath){ + $servHost = ServConfig::$serverWebPath; + if($sharedIconPath){ + $sharedIconPath = WebUtil::resolveRelativePath($sharedIconPath, $servHost); + } + else{ + $sharedIconPath = ServConfig::$sharedIconPath; + } + + if($gameImagePath){ + $gameImagePath = WebUtil::resolveRelativePath($gameImagePath, $servHost); + } + else{ + $gameImagePath = ServConfig::$gameImagePath; + } + + $result = Util::generateFileUsingSimpleTemplate( + __dir__.'/templates/ServConfig.orig.php', + ROOT.'/d_setting/ServConfig.php', + [ + 'serverBasePath'=>$servHost, + 'sharedIconPath'=>$sharedIconPath, + 'gameImagePath'=>$gameImagePath + ], + true + ); + + if ($result !== true) { + Json::die([ + 'result'=>false, + 'reason'=>$result + ]); + } +} +else{ + $servHost = ServConfig::$serverWebPath; + $sharedIconPath = ServConfig::$sharedIconPath; + $gameImagePath = ServConfig::$gameImagePath; +} + + + +$result = Util::generateFileUsingSimpleTemplate( + __dir__.'/templates/common_path.orig.js', + ROOT.'/d_shared/common_path.js', + [ + 'serverBasePath'=>$servHost, + 'sharedIconPath'=>$sharedIconPath, + 'gameImagePath'=>$gameImagePath + ], + true +); + + +$result = Util::generateFileUsingSimpleTemplate( + __dir__.'/templates/common.orig.css', + ROOT.'/d_shared/common.css', + [ + 'serverBasePath'=>$servHost, + 'sharedIconPath'=>$sharedIconPath, + 'gameImagePath'=>$gameImagePath + ], + true +); + +if ($result !== true) { + Json::die([ + 'result'=>false, + 'reason'=>$result + ]); +} From d607a8da0f45bb181c19bd86de7664b19d43d399 Mon Sep 17 00:00:00 2001 From: hide_d Date: Thu, 2 May 2019 00:50:40 +0900 Subject: [PATCH 18/33] =?UTF-8?q?chess=20=EB=A7=B5=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=EB=A1=9C=20=EC=B6=94=EA=B0=80,=20=EC=A0=84=EC=B0=A8?= =?UTF-8?q?=EC=A0=84=20php=20=EC=BD=94=EB=93=9C=20=EB=B2=84=EA=B7=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- f_install/templates/common.orig.css | 26 +- hwe/scenario/map/chess.php | 83 ++++ hwe/scenario/scenario_2121.json | 718 ++++++++++++++++++++++++++++ hwe/scenario/scenario_900.json | 24 + hwe/scenario/unit/basic.php | 79 +++ hwe/scenario/unit/siegetank.php | 2 +- 6 files changed, 911 insertions(+), 21 deletions(-) create mode 100644 hwe/scenario/map/chess.php create mode 100644 hwe/scenario/scenario_2121.json create mode 100644 hwe/scenario/unit/basic.php diff --git a/f_install/templates/common.orig.css b/f_install/templates/common.orig.css index 0af1ec74..d3b58b00 100644 --- a/f_install/templates/common.orig.css +++ b/f_install/templates/common.orig.css @@ -99,28 +99,14 @@ background-size: 700px 500px; } -.map_theme_ludo_rathowm.map_detail.map_spring .map_title_text{ - background: - url('_tK_gameImagePath_/spring.gif') no-repeat right; -} - -.map_theme_ludo_rathowm.map_detail.map_summer .map_title_text{ - background: - url('_tK_gameImagePath_/summer.gif') no-repeat right; -} - -.map_theme_ludo_rathowm.map_detail.map_fall .map_title_text{ - background: - url('_tK_gameImagePath_/fall.gif') no-repeat right; -} - -.map_theme_ludo_rathowm.map_detail.map_winter .map_title_text{ - background: - url('_tK_gameImagePath_/winter.gif') no-repeat right; -} - .world_map.map_theme_ludo_rathowm .map_title .map_title_text::before { color:white; content:'LP'; margin-right:1ch; +} + +/*체스판 지도*/ +.map_theme_chess .map_bglayer1{ + background: url('_tK_gameImagePath_/map/chess/chessboard.png') no-repeat; + background-size: 700px 500px; } \ No newline at end of file diff --git a/hwe/scenario/map/chess.php b/hwe/scenario/map/chess.php new file mode 100644 index 00000000..14af8ace --- /dev/null +++ b/hwe/scenario/map/chess.php @@ -0,0 +1,83 @@ +1,1=>'킹', + '퀸'=>2,2=>'퀸', + '룩'=>3,3=>'룩', + '나이트'=>4,4=>'나이트', + '비숍'=>5,5=>'비숍', + '폰'=>6,6=>'폰', + '빈칸'=>7,7=>'빈칸', + ]; + + protected static $initCity = [ + //id, 도시, 규모, 인구, 농, 상, 치, 성, 수,(x100)지역, x, y, 연결도시 + [ 1, "A1", "중", 8000, 80, 80, 80, 80, 80, "룩", 350.2, 420.2, ["A2", "B1", "B2"]], + [ 2, "B1", "중", 8000, 80, 80, 80, 80, 80, "나이트", 392.7, 395.6, ["A1", "A2", "B2", "C1", "C2"]], + [ 3, "C1", "중", 8000, 80, 80, 80, 80, 80, "비숍", 435.2, 371.1, ["B1", "B2", "C2", "D1", "D2"]], + [ 4, "D1", "특", 12000, 120, 120, 120, 120, 120, "킹", 477.7, 346.5, ["C1", "C2", "D2", "E1", "E2"]], + [ 5, "E1", "대", 10000, 100, 100, 100, 100, 100, "퀸", 520.2, 322.0, ["D1", "D2", "E2", "F1", "F2"]], + [ 6, "F1", "중", 8000, 80, 80, 80, 80, 80, "비숍", 562.7, 297.5, ["E1", "E2", "F2", "G1", "G2"]], + [ 7, "G1", "중", 8000, 80, 80, 80, 80, 80, "나이트", 605.2, 272.9, ["F1", "F2", "G2", "H1", "H2"]], + [ 8, "H1", "중", 8000, 80, 80, 80, 80, 80, "룩", 647.7, 248.4, ["G1", "G2", "H2"]], + [ 9, "A2", "소", 6000, 60, 60, 60, 60, 60, "폰", 307.7, 395.6, ["A1", "A3", "B1", "B2", "B3"]], + [10, "B2", "소", 6000, 60, 60, 60, 60, 60, "폰", 350.2, 371.1, ["A1", "A2", "A3", "B1", "B3", "C1", "C2", "C3"]], + [11, "C2", "소", 6000, 60, 60, 60, 60, 60, "폰", 392.7, 346.5, ["B1", "B2", "B3", "C1", "C3", "D1", "D2", "D3"]], + [12, "D2", "소", 6000, 60, 60, 60, 60, 60, "폰", 435.2, 322.0, ["C1", "C2", "C3", "D1", "D3", "E1", "E2", "E3"]], + [13, "E2", "소", 6000, 60, 60, 60, 60, 60, "폰", 477.7, 297.5, ["D1", "D2", "D3", "E1", "E3", "F1", "F2", "F3"]], + [14, "F2", "소", 6000, 60, 60, 60, 60, 60, "폰", 520.2, 272.9, ["E1", "E2", "E3", "F1", "F3", "G1", "G2", "G3"]], + [15, "G2", "소", 6000, 60, 60, 60, 60, 60, "폰", 562.7, 248.4, ["F1", "F2", "F3", "G1", "G3", "H1", "H2", "H3"]], + [16, "H2", "소", 6000, 60, 60, 60, 60, 60, "폰", 605.2, 223.8, ["G1", "G2", "G3", "H1", "H3"]], + [17, "A3", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 265.2, 371.1, ["A2", "A4", "B2", "B3", "B4"]], + [18, "B3", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 307.7, 346.5, ["A2", "A3", "A4", "B2", "B4", "C2", "C3", "C4"]], + [19, "C3", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 350.2, 322.0, ["B2", "B3", "B4", "C2", "C4", "D2", "D3", "D4"]], + [20, "D3", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 392.7, 297.5, ["C2", "C3", "C4", "D2", "D4", "E2", "E3", "E4"]], + [21, "E3", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 435.2, 272.9, ["D2", "D3", "D4", "E2", "E4", "F2", "F3", "F4"]], + [22, "F3", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 477.7, 248.4, ["E2", "E3", "E4", "F2", "F4", "G2", "G3", "G4"]], + [23, "G3", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 520.2, 223.8, ["F2", "F3", "F4", "G2", "G4", "H2", "H3", "H4"]], + [24, "H3", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 562.7, 199.3, ["G2", "G3", "G4", "H2", "H4"]], + [25, "A4", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 222.7, 346.5, ["A3", "A5", "B3", "B4", "B5"]], + [26, "B4", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 265.2, 322.0, ["A3", "A4", "A5", "B3", "B5", "C3", "C4", "C5"]], + [27, "C4", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 307.7, 297.5, ["B3", "B4", "B5", "C3", "C5", "D3", "D4", "D5"]], + [28, "D4", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 350.2, 272.9, ["C3", "C4", "C5", "D3", "D5", "E3", "E4", "E5"]], + [29, "E4", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 392.7, 248.4, ["D3", "D4", "D5", "E3", "E5", "F3", "F4", "F5"]], + [30, "F4", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 435.2, 223.8, ["E3", "E4", "E5", "F3", "F5", "G3", "G4", "G5"]], + [31, "G4", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 477.7, 199.3, ["F3", "F4", "F5", "G3", "G5", "H3", "H4", "H5"]], + [32, "H4", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 520.2, 174.8, ["G3", "G4", "G5", "H3", "H5"]], + [33, "A5", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 180.2, 322.0, ["A4", "A6", "B4", "B5", "B6"]], + [34, "B5", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 222.7, 297.5, ["A4", "A5", "A6", "B4", "B6", "C4", "C5", "C6"]], + [35, "C5", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 265.2, 272.9, ["B4", "B5", "B6", "C4", "C6", "D4", "D5", "D6"]], + [36, "D5", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 307.7, 248.4, ["C4", "C5", "C6", "D4", "D6", "E4", "E5", "E6"]], + [37, "E5", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 350.2, 223.8, ["D4", "D5", "D6", "E4", "E6", "F4", "F5", "F6"]], + [38, "F5", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 392.7, 199.3, ["E4", "E5", "E6", "F4", "F6", "G4", "G5", "G6"]], + [39, "G5", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 435.2, 174.8, ["F4", "F5", "F6", "G4", "G6", "H4", "H5", "H6"]], + [40, "H5", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 477.7, 150.2, ["G4", "G5", "G6", "H4", "H6"]], + [41, "A6", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 137.7, 297.5, ["A5", "A7", "B5", "B6", "B7"]], + [42, "B6", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 180.2, 272.9, ["A5", "A6", "A7", "B5", "B7", "C5", "C6", "C7"]], + [43, "C6", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 222.7, 248.4, ["B5", "B6", "B7", "C5", "C7", "D5", "D6", "D7"]], + [44, "D6", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 265.2, 223.8, ["C5", "C6", "C7", "D5", "D7", "E5", "E6", "E7"]], + [45, "E6", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 307.7, 199.3, ["D5", "D6", "D7", "E5", "E7", "F5", "F6", "F7"]], + [46, "F6", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 350.2, 174.8, ["E5", "E6", "E7", "F5", "F7", "G5", "G6", "G7"]], + [47, "G6", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 392.7, 150.2, ["F5", "F6", "F7", "G5", "G7", "H5", "H6", "H7"]], + [48, "H6", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 435.2, 125.7, ["G5", "G6", "G7", "H5", "H7"]], + [49, "A7", "소", 6000, 60, 60, 60, 60, 60, "폰", 95.2, 272.9, ["A6", "A8", "B6", "B7", "B8"]], + [50, "B7", "소", 6000, 60, 60, 60, 60, 60, "폰", 137.7, 248.4, ["A6", "A7", "A8", "B6", "B8", "C6", "C7", "C8"]], + [51, "C7", "소", 6000, 60, 60, 60, 60, 60, "폰", 180.2, 223.8, ["B6", "B7", "B8", "C6", "C8", "D6", "D7", "D8"]], + [52, "D7", "소", 6000, 60, 60, 60, 60, 60, "폰", 222.7, 199.3, ["C6", "C7", "C8", "D6", "D8", "E6", "E7", "E8"]], + [53, "E7", "소", 6000, 60, 60, 60, 60, 60, "폰", 265.2, 174.8, ["D6", "D7", "D8", "E6", "E8", "F6", "F7", "F8"]], + [54, "F7", "소", 6000, 60, 60, 60, 60, 60, "폰", 307.7, 150.2, ["E6", "E7", "E8", "F6", "F8", "G6", "G7", "G8"]], + [55, "G7", "소", 6000, 60, 60, 60, 60, 60, "폰", 350.2, 125.7, ["F6", "F7", "F8", "G6", "G8", "H6", "H7", "H8"]], + [56, "H7", "소", 6000, 60, 60, 60, 60, 60, "폰", 392.7, 101.1, ["G6", "G7", "G8", "H6", "H8"]], + [57, "A8", "중", 6000, 60, 60, 60, 60, 60, "룩", 52.7, 248.4, ["A7", "B7", "B8"]], + [58, "B8", "중", 8000, 80, 80, 80, 80, 80, "나이트", 95.2, 223.8, ["A7", "A8", "B7", "C7", "C8"]], + [59, "C8", "중", 8000, 80, 80, 80, 80, 80, "비숍", 137.7, 199.3, ["B7", "B8", "C7", "D7", "D8"]], + [60, "D8", "특", 8000, 80, 80, 80, 80, 80, "킹", 180.2, 174.8, ["C7", "C8", "D7", "E7", "E8"]], + [61, "E8", "대", 12000, 120, 120, 120, 120, 120, "퀸", 222.7, 150.2, ["D7", "D8", "E7", "F7", "F8"]], + [62, "F8", "중", 10000, 100, 100, 100, 100, 100, "비숍", 265.2, 125.7, ["E7", "E8", "F7", "G7", "G8"]], + [63, "G8", "중", 8000, 80, 80, 80, 80, 80, "나이트", 307.7, 101.1, ["F7", "F8", "G7", "H7", "H8"]], + [64, "H8", "중", 8000, 80, 80, 80, 80, 80, "룩", 350.2, 76.6, ["G7", "G8", "H7"]] + ]; +} \ No newline at end of file diff --git a/hwe/scenario/scenario_2121.json b/hwe/scenario/scenario_2121.json new file mode 100644 index 00000000..5a32cf63 --- /dev/null +++ b/hwe/scenario/scenario_2121.json @@ -0,0 +1,718 @@ +{ + "title":"【가상모드12-x】 삼국지11 영웅 난무(체스 지도)", + "life":1, + "fiction":1, + "nation":[ + ], + "diplomacy":[ + ], + "stat":{ + "total":220, + "min":40, + "max":95, + "npcMax":95 + }, + "const":{ + "defaultMaxGeneral":800 + }, + "map":{ + "mapName":"chess", + "unitSet":"basic" + }, + "general":[ + [0, "가규", -1, 0, null, 78, 61, 84, 0, 160, 250, null, null], + [0, "가범", -1, 0, null, 60, 62, 73, 0, 160, 250, null, null], + [0, "가충", -1, 0, null, 54, 31, 89, 0, 160, 250, null, null], + [0, "가화", -1, 0, null, 49, 65, 41, 0, 160, 250, null, null], + [0, "가후", -1, 0, null, 86, 48, 97, 0, 160, 250, null, null], + [0, "간옹", -1, 0, null, 20, 32, 74, 0, 160, 250, null, null], + [0, "감녕", -1, 0, null, 86, 94, 76, 0, 160, 250, null, null], + [0, "감택", -1, 0, null, 43, 49, 83, 0, 160, 250, null, null], + [0, "강유", -1, 0, null, 90, 86, 90, 0, 160, 250, null, null], + [0, "건석", -1, 0, null, 16, 7, 78, 0, 160, 250, null, null], + [0, "견희", -1, 0, null, 94, 76, 93, 0, 160, 250, null, null], + [0, "견초", -1, 0, null, 72, 69, 73, 0, 160, 250, null, null], + [0, "견홍", -1, 0, null, 70, 74, 66, 0, 160, 250, null, null], + [0, "계옹", -1, 0, null, 63, 52, 41, 0, 160, 250, null, null], + [0, "고간", -1, 0, null, 74, 56, 48, 0, 160, 250, null, null], + [0, "고담", -1, 0, null, 33, 23, 70, 0, 160, 250, null, null], + [0, "고당융", -1, 0, null, 35, 24, 76, 0, 160, 250, null, null], + [0, "고람", -1, 0, null, 76, 82, 66, 0, 160, 250, null, null], + [0, "고상", -1, 0, null, 68, 68, 52, 0, 160, 250, null, null], + [0, "고순", -1, 0, null, 85, 86, 55, 0, 160, 250, null, null], + [0, "고승", -1, 0, null, 67, 73, 41, 0, 160, 250, null, null], + [0, "고옹", -1, 0, null, 43, 18, 80, 0, 160, 250, null, null], + [0, "고유", -1, 0, null, 57, 43, 71, 0, 160, 250, null, null], + [0, "고정", -1, 0, null, 55, 63, 43, 0, 160, 250, null, null], + [0, "고패", -1, 0, null, 66, 61, 69, 0, 160, 250, null, null], + [0, "공도", -1, 0, null, 59, 70, 23, 0, 160, 250, null, null], + [0, "공손강", -1, 0, null, 72, 66, 61, 0, 160, 250, null, null], + [0, "공손공", -1, 0, null, 39, 17, 68, 0, 160, 250, null, null], + [0, "공손도", -1, 0, null, 67, 71, 63, 0, 160, 250, null, null], + [0, "공손범", -1, 0, null, 73, 69, 64, 0, 160, 250, null, null], + [0, "공손속", -1, 0, null, 63, 68, 54, 0, 160, 250, null, null], + [0, "공손연", -1, 0, null, 65, 70, 56, 0, 160, 250, null, null], + [0, "공손월", -1, 0, null, 74, 72, 47, 0, 160, 250, null, null], + [0, "공손찬", -1, 0, null, 84, 83, 70, 0, 160, 250, null, null], + [0, "공융", -1, 0, null, 30, 5, 72, 0, 160, 250, null, null], + [0, "공주", -1, 0, null, 26, 16, 68, 0, 160, 250, null, null], + [0, "공지", -1, 0, null, 43, 53, 61, 0, 160, 250, null, null], + [0, "곽가", -1, 0, null, 60, 15, 98, 0, 160, 250, null, null], + [0, "곽도", -1, 0, null, 52, 50, 82, 0, 160, 250, null, null], + [0, "곽마", -1, 0, null, 68, 71, 47, 0, 160, 250, null, null], + [0, "곽사", -1, 0, null, 64, 76, 13, 0, 160, 250, null, null], + [0, "곽원", -1, 0, null, 66, 73, 36, 0, 160, 250, null, null], + [0, "곽유지", -1, 0, null, 13, 9, 68, 0, 160, 250, null, null], + [0, "곽익", -1, 0, null, 73, 69, 69, 0, 160, 250, null, null], + [0, "곽준", -1, 0, null, 80, 66, 73, 0, 160, 250, null, null], + [0, "곽혁", -1, 0, null, 21, 29, 70, 0, 160, 250, null, null], + [0, "곽회", -1, 0, null, 87, 78, 81, 0, 160, 250, null, null], + [0, "관구검", -1, 0, null, 78, 74, 52, 0, 160, 250, null, null], + [0, "관구수", -1, 0, null, 58, 62, 33, 0, 160, 250, null, null], + [0, "관구전", -1, 0, null, 63, 60, 69, 0, 160, 250, null, null], + [0, "관색", -1, 0, null, 74, 88, 52, 0, 160, 250, null, null], + [0, "관우", -1, 0, null, 95, 97, 75, 0, 160, 250, null, null], + [0, "관이", -1, 0, null, 50, 62, 44, 0, 160, 250, null, null], + [0, "관정", -1, 0, null, 36, 52, 72, 0, 160, 250, null, null], + [0, "관통", -1, 0, null, 63, 60, 61, 0, 160, 250, null, null], + [0, "관평", -1, 0, null, 77, 82, 68, 0, 160, 250, null, null], + [0, "관해", -1, 0, null, 70, 82, 10, 0, 160, 250, null, null], + [0, "관흥", -1, 0, null, 76, 86, 62, 0, 160, 250, null, null], + [0, "괴량", -1, 0, null, 68, 33, 88, 0, 160, 250, null, null], + [0, "괴월", -1, 0, null, 47, 27, 82, 0, 160, 250, null, null], + [0, "교모", -1, 0, null, 54, 45, 69, 0, 160, 250, null, null], + [0, "교수", -1, 0, null, 64, 69, 38, 0, 160, 250, null, null], + [0, "교현", -1, 0, null, 12, 6, 66, 0, 160, 250, null, null], + [0, "구건", -1, 0, null, 39, 52, 65, 0, 160, 250, null, null], + [0, "구본", -1, 0, null, 50, 41, 67, 0, 160, 250, null, null], + [0, "구성", -1, 0, null, 55, 70, 38, 0, 160, 250, null, null], + [0, "국연", -1, 0, null, 50, 19, 71, 0, 160, 250, null, null], + [0, "국의", -1, 0, null, 82, 78, 51, 0, 160, 250, null, null], + [0, "극정", -1, 0, null, 10, 4, 63, 0, 160, 250, null, null], + [0, "금선", -1, 0, null, 52, 68, 13, 0, 160, 250, null, null], + [0, "금의", -1, 0, null, 17, 38, 64, 0, 160, 250, null, null], + [0, "금환삼결", -1, 0, null, 64, 76, 19, 0, 160, 250, null, null], + [0, "기령", -1, 0, null, 78, 83, 51, 0, 160, 250, null, null], + [0, "나헌", -1, 0, null, 85, 71, 75, 0, 160, 250, null, null], + [0, "낙통", -1, 0, null, 76, 58, 75, 0, 160, 250, null, null], + [0, "냉포", -1, 0, null, 71, 82, 68, 0, 160, 250, null, null], + [0, "영수", -1, 0, null, 67, 69, 72, 0, 160, 250, null, null], + [0, "아빠노숙", -1, 0, null, 80, 56, 92, 0, 160, 250, null, null], + [0, "아들노숙", -1, 0, null, 71, 53, 74, 0, 160, 250, null, null], + [0, "노식", -1, 0, null, 86, 63, 82, 0, 160, 250, null, null], + [0, "뇌동", -1, 0, null, 69, 78, 51, 0, 160, 250, null, null], + [0, "뇌박", -1, 0, null, 62, 70, 36, 0, 160, 250, null, null], + [0, "누규", -1, 0, null, 52, 13, 87, 0, 160, 250, null, null], + [0, "누현", -1, 0, null, 23, 22, 67, 0, 160, 250, null, null], + [0, "능조", -1, 0, null, 75, 81, 42, 0, 160, 250, null, null], + [0, "능통", -1, 0, null, 77, 89, 55, 0, 160, 250, null, null], + [0, "단경", -1, 0, null, 71, 68, 43, 0, 160, 250, null, null], + [0, "담웅", -1, 0, null, 58, 73, 14, 0, 160, 250, null, null], + [0, "당균", -1, 0, null, 33, 24, 77, 0, 160, 250, null, null], + [0, "당빈", -1, 0, null, 67, 74, 59, 0, 160, 250, null, null], + [0, "당자", -1, 0, null, 61, 71, 50, 0, 160, 250, null, null], + [0, "대교", -1, 0, null, 90, 53, 90, 0, 160, 250, null, null], + [0, "대래동주", -1, 0, null, 51, 53, 53, 0, 160, 250, null, null], + [0, "대릉", -1, 0, null, 70, 75, 39, 0, 160, 250, null, null], + [0, "도겸", -1, 0, null, 51, 27, 63, 0, 160, 250, null, null], + [0, "도준", -1, 0, null, 65, 66, 46, 0, 160, 250, null, null], + [0, "동궐", -1, 0, null, 65, 59, 76, 0, 160, 250, null, null], + [0, "동도나", -1, 0, null, 68, 73, 31, 0, 160, 250, null, null], + [0, "동민", -1, 0, null, 49, 60, 25, 0, 160, 250, null, null], + [0, "동소", -1, 0, null, 19, 25, 80, 0, 160, 250, null, null], + [0, "동습", -1, 0, null, 72, 85, 50, 0, 160, 250, null, null], + [0, "동승", -1, 0, null, 56, 53, 65, 0, 160, 250, null, null], + [0, "동윤", -1, 0, null, 47, 28, 78, 0, 160, 250, null, null], + [0, "동조", -1, 0, null, 17, 13, 56, 0, 160, 250, null, null], + [0, "동탁", -1, 0, null, 74, 87, 69, 0, 160, 250, null, null], + [0, "동화", -1, 0, null, 57, 34, 74, 0, 160, 250, null, null], + [0, "두기", -1, 0, null, 66, 32, 74, 0, 160, 250, null, null], + [0, "두예", -1, 0, null, 85, 30, 85, 0, 160, 250, null, null], + [0, "등무", -1, 0, null, 61, 75, 29, 0, 160, 250, null, null], + [0, "등수", -1, 0, null, 44, 32, 31, 0, 160, 250, null, null], + [0, "등애", -1, 0, null, 94, 87, 89, 0, 160, 250, null, null], + [0, "등윤", -1, 0, null, 29, 41, 71, 0, 160, 250, null, null], + [0, "등지", -1, 0, null, 73, 52, 81, 0, 160, 250, null, null], + [0, "등충", -1, 0, null, 72, 85, 69, 0, 160, 250, null, null], + [0, "등현", -1, 0, null, 61, 73, 45, 0, 160, 250, null, null], + [0, "마균", -1, 0, null, 2, 7, 60, 0, 160, 250, null, null], + [0, "마대", -1, 0, null, 81, 85, 56, 0, 160, 250, null, null], + [0, "마등", -1, 0, null, 82, 80, 51, 0, 160, 250, null, null], + [0, "마량", -1, 0, null, 46, 23, 85, 0, 160, 250, null, null], + [0, "마막", -1, 0, null, 19, 12, 7, 0, 160, 250, null, null], + [0, "마속", -1, 0, null, 61, 67, 87, 0, 160, 250, null, null], + [0, "마완", -1, 0, null, 71, 74, 16, 0, 160, 250, null, null], + [0, "마운록", -1, 0, null, 88, 91, 63, 0, 160, 250, null, null], + [0, "마준", -1, 0, null, 38, 52, 31, 0, 160, 250, null, null], + [0, "마철", -1, 0, null, 70, 62, 56, 0, 160, 250, null, null], + [0, "마초", -1, 0, null, 88, 97, 44, 0, 160, 250, null, null], + [0, "촉나라마충", -1, 0, null, 78, 72, 68, 0, 160, 250, null, null], + [0, "오나라마충", -1, 0, null, 67, 77, 64, 0, 160, 250, null, null], + [0, "마휴", -1, 0, null, 68, 73, 48, 0, 160, 250, null, null], + [0, "만욱", -1, 0, null, 21, 25, 71, 0, 160, 250, null, null], + [0, "만총", -1, 0, null, 84, 64, 82, 0, 160, 250, null, null], + [0, "망아장", -1, 0, null, 45, 79, 3, 0, 160, 250, null, null], + [0, "맹달", -1, 0, null, 75, 73, 74, 0, 160, 250, null, null], + [0, "맹우", -1, 0, null, 50, 68, 22, 0, 160, 250, null, null], + [0, "맹종", -1, 0, null, 47, 28, 72, 0, 160, 250, null, null], + [0, "맹획", -1, 0, null, 76, 87, 42, 0, 160, 250, null, null], + [0, "모개", -1, 0, null, 63, 39, 59, 0, 160, 250, null, null], + [0, "목록대왕", -1, 0, null, 65, 71, 39, 0, 160, 250, null, null], + [0, "목순", -1, 0, null, 52, 77, 11, 0, 160, 250, null, null], + [0, "무안국", -1, 0, null, 67, 83, 34, 0, 160, 250, null, null], + [0, "문빙", -1, 0, null, 86, 82, 66, 0, 160, 250, null, null], + [0, "문앙", -1, 0, null, 78, 91, 60, 0, 160, 250, null, null], + [0, "문추", -1, 0, null, 78, 94, 25, 0, 160, 250, null, null], + [0, "문호", -1, 0, null, 66, 72, 45, 0, 160, 250, null, null], + [0, "문흠", -1, 0, null, 74, 83, 43, 0, 160, 250, null, null], + [0, "미방", -1, 0, null, 54, 61, 32, 0, 160, 250, null, null], + [0, "미씨", -1, 0, null, 90, 46, 86, 0, 160, 250, null, null], + [0, "미축", -1, 0, null, 33, 29, 77, 0, 160, 250, null, null], + [0, "반봉", -1, 0, null, 56, 77, 4, 0, 160, 250, null, null], + [0, "반장", -1, 0, null, 76, 80, 70, 0, 160, 250, null, null], + [0, "반준", -1, 0, null, 61, 18, 67, 0, 160, 250, null, null], + [0, "방덕", -1, 0, null, 83, 94, 70, 0, 160, 250, null, null], + [0, "방열", -1, 0, null, 68, 80, 44, 0, 160, 250, null, null], + [0, "방통", -1, 0, null, 80, 34, 97, 0, 160, 250, null, null], + [0, "방회", -1, 0, null, 69, 75, 49, 0, 160, 250, null, null], + [0, "방희", -1, 0, null, 60, 38, 68, 0, 160, 250, null, null], + [0, "배수", -1, 0, null, 8, 9, 70, 0, 160, 250, null, null], + [0, "배원소", -1, 0, null, 49, 65, 25, 0, 160, 250, null, null], + [0, "번건", -1, 0, null, 41, 24, 71, 0, 160, 250, null, null], + [0, "번능", -1, 0, null, 69, 61, 36, 0, 160, 250, null, null], + [0, "번씨", -1, 0, null, 88, 32, 86, 0, 160, 250, null, null], + [0, "번주", -1, 0, null, 66, 73, 31, 0, 160, 250, null, null], + [0, "법정", -1, 0, null, 82, 47, 97, 0, 160, 250, null, null], + [0, "변씨", -1, 0, null, 86, 44, 84, 0, 160, 250, null, null], + [0, "변희", -1, 0, null, 56, 70, 59, 0, 160, 250, null, null], + [0, "보즐", -1, 0, null, 72, 51, 84, 0, 160, 250, null, null], + [0, "보천", -1, 0, null, 71, 60, 71, 0, 160, 250, null, null], + [0, "보협", -1, 0, null, 71, 49, 69, 0, 160, 250, null, null], + [0, "복양흥", -1, 0, null, 37, 32, 70, 0, 160, 250, null, null], + [0, "봉기", -1, 0, null, 27, 21, 84, 0, 160, 250, null, null], + [0, "부동", -1, 0, null, 66, 72, 46, 0, 160, 250, null, null], + [0, "부사인", -1, 0, null, 46, 63, 37, 0, 160, 250, null, null], + [0, "부손", -1, 0, null, 14, 13, 69, 0, 160, 250, null, null], + [0, "부첨", -1, 0, null, 73, 85, 72, 0, 160, 250, null, null], + [0, "부하", -1, 0, null, 44, 35, 81, 0, 160, 250, null, null], + [0, "비시", -1, 0, null, 15, 28, 64, 0, 160, 250, null, null], + [0, "비연", -1, 0, null, 60, 66, 21, 0, 160, 250, null, null], + [0, "비요", -1, 0, null, 70, 66, 73, 0, 160, 250, null, null], + [0, "비의", -1, 0, null, 77, 30, 83, 0, 160, 250, null, null], + [0, "사마가", -1, 0, null, 60, 84, 25, 0, 160, 250, null, null], + [0, "사마랑", -1, 0, null, 20, 21, 71, 0, 160, 250, null, null], + [0, "사마망", -1, 0, null, 73, 58, 78, 0, 160, 250, null, null], + [0, "사마부", -1, 0, null, 70, 37, 76, 0, 160, 250, null, null], + [0, "사마사", -1, 0, null, 80, 64, 88, 0, 160, 250, null, null], + [0, "사마소", -1, 0, null, 76, 57, 87, 0, 160, 250, null, null], + [0, "사마염", -1, 0, null, 69, 59, 76, 0, 160, 250, null, null], + [0, "사마유", -1, 0, null, 71, 68, 75, 0, 160, 250, null, null], + [0, "사마의", -1, 0, null, 98, 58, 96, 0, 160, 250, null, null], + [0, "사마주", -1, 0, null, 61, 52, 61, 0, 160, 250, null, null], + [0, "사정", -1, 0, null, 64, 76, 34, 0, 160, 250, null, null], + [0, "사찬", -1, 0, null, 60, 72, 54, 0, 160, 250, null, null], + [0, "서막", -1, 0, null, 55, 32, 67, 0, 160, 250, null, null], + [0, "서서", -1, 0, null, 87, 65, 93, 0, 160, 250, null, null], + [0, "서성", -1, 0, null, 87, 81, 78, 0, 160, 250, null, null], + [0, "서씨", -1, 0, null, 87, 46, 80, 0, 160, 250, null, null], + [0, "서영", -1, 0, null, 80, 76, 57, 0, 160, 250, null, null], + [0, "서질", -1, 0, null, 68, 83, 24, 0, 160, 250, null, null], + [0, "서황", -1, 0, null, 88, 90, 74, 0, 160, 250, null, null], + [0, "석포", -1, 0, null, 69, 71, 56, 0, 160, 250, null, null], + [0, "설영", -1, 0, null, 49, 18, 64, 0, 160, 250, null, null], + [0, "설종", -1, 0, null, 34, 16, 72, 0, 160, 250, null, null], + [0, "설후", -1, 0, null, 17, 15, 68, 0, 160, 250, null, null], + [0, "성공영", -1, 0, null, 73, 71, 80, 0, 160, 250, null, null], + [0, "성만", -1, 0, null, 61, 68, 66, 0, 160, 250, null, null], + [0, "성의", -1, 0, null, 74, 72, 41, 0, 160, 250, null, null], + [0, "소교", -1, 0, null, 90, 48, 87, 0, 160, 250, null, null], + [0, "소비", -1, 0, null, 69, 63, 66, 0, 160, 250, null, null], + [0, "소유", -1, 0, null, 50, 59, 49, 0, 160, 250, null, null], + [0, "소제", -1, 0, null, 21, 15, 72, 0, 160, 250, null, null], + [0, "손건", -1, 0, null, 34, 33, 78, 0, 160, 250, null, null], + [0, "손견", -1, 0, null, 93, 93, 69, 0, 160, 250, null, null], + [0, "손관", -1, 0, null, 72, 78, 51, 0, 160, 250, null, null], + [0, "손광", -1, 0, null, 52, 46, 44, 0, 160, 250, null, null], + [0, "손교", -1, 0, null, 77, 72, 66, 0, 160, 250, null, null], + [0, "손권", -1, 0, null, 78, 67, 83, 0, 160, 250, null, null], + [0, "손기", -1, 0, null, 60, 67, 51, 0, 160, 250, null, null], + [0, "손노반", -1, 0, null, 86, 38, 87, 0, 160, 250, null, null], + [0, "손등", -1, 0, null, 62, 37, 79, 0, 160, 250, null, null], + [0, "손랑", -1, 0, null, 34, 43, 30, 0, 160, 250, null, null], + [0, "손량", -1, 0, null, 21, 7, 70, 0, 160, 250, null, null], + [0, "손례", -1, 0, null, 78, 81, 62, 0, 160, 250, null, null], + [0, "손상향", -1, 0, null, 92, 90, 57, 0, 160, 250, null, null], + [0, "손소", -1, 0, null, 80, 79, 75, 0, 160, 250, null, null], + [0, "손수", -1, 0, null, 55, 51, 53, 0, 160, 250, null, null], + [0, "손씨", -1, 0, null, 93, 22, 82, 0, 160, 250, null, null], + [0, "손유", -1, 0, null, 77, 70, 68, 0, 160, 250, null, null], + [0, "손이", -1, 0, null, 69, 71, 55, 0, 160, 250, null, null], + [0, "손익", -1, 0, null, 67, 78, 27, 0, 160, 250, null, null], + [0, "손정", -1, 0, null, 66, 53, 72, 0, 160, 250, null, null], + [0, "손준", -1, 0, null, 64, 70, 65, 0, 160, 250, null, null], + [0, "손중", -1, 0, null, 62, 71, 36, 0, 160, 250, null, null], + [0, "손진", -1, 0, null, 67, 70, 48, 0, 160, 250, null, null], + [0, "손책", -1, 0, null, 92, 96, 69, 0, 160, 250, null, null], + [0, "손침", -1, 0, null, 25, 39, 65, 0, 160, 250, null, null], + [0, "손호", -1, 0, null, 13, 28, 31, 0, 160, 250, null, null], + [0, "손화", -1, 0, null, 31, 39, 68, 0, 160, 250, null, null], + [0, "손환", -1, 0, null, 82, 73, 72, 0, 160, 250, null, null], + [0, "손휴", -1, 0, null, 57, 39, 78, 0, 160, 250, null, null], + [0, "손흠", -1, 0, null, 66, 69, 35, 0, 160, 250, null, null], + [0, "송겸", -1, 0, null, 66, 78, 42, 0, 160, 250, null, null], + [0, "송헌", -1, 0, null, 68, 77, 38, 0, 160, 250, null, null], + [0, "순심", -1, 0, null, 19, 25, 77, 0, 160, 250, null, null], + [0, "순우경", -1, 0, null, 72, 66, 29, 0, 160, 250, null, null], + [0, "할배순욱", -1, 0, null, 63, 14, 95, 0, 160, 250, null, null], + [0, "손자순욱", -1, 0, null, 8, 19, 77, 0, 160, 250, null, null], + [0, "순유", -1, 0, null, 73, 26, 94, 0, 160, 250, null, null], + [0, "순의", -1, 0, null, 16, 13, 70, 0, 160, 250, null, null], + [0, "시삭", -1, 0, null, 38, 65, 47, 0, 160, 250, null, null], + [0, "신비", -1, 0, null, 39, 24, 78, 0, 160, 250, null, null], + [0, "신의", -1, 0, null, 55, 59, 59, 0, 160, 250, null, null], + [0, "신창", -1, 0, null, 50, 26, 42, 0, 160, 250, null, null], + [0, "신탐", -1, 0, null, 56, 62, 52, 0, 160, 250, null, null], + [0, "신평", -1, 0, null, 69, 43, 76, 0, 160, 250, null, null], + [0, "신헌영", -1, 0, null, 87, 48, 88, 0, 160, 250, null, null], + [0, "심배", -1, 0, null, 84, 60, 87, 0, 160, 250, null, null], + [0, "심영", -1, 0, null, 70, 77, 61, 0, 160, 250, null, null], + [0, "아회남", -1, 0, null, 65, 74, 26, 0, 160, 250, null, null], + [0, "악진", -1, 0, null, 80, 84, 52, 0, 160, 250, null, null], + [0, "악취", -1, 0, null, 53, 66, 58, 0, 160, 250, null, null], + [0, "악침", -1, 0, null, 73, 75, 43, 0, 160, 250, null, null], + [0, "악환", -1, 0, null, 60, 82, 42, 0, 160, 250, null, null], + [0, "안량", -1, 0, null, 79, 93, 42, 0, 160, 250, null, null], + [0, "양강", -1, 0, null, 60, 69, 41, 0, 160, 250, null, null], + [0, "양백", -1, 0, null, 44, 45, 19, 0, 160, 250, null, null], + [0, "양봉", -1, 0, null, 54, 62, 52, 0, 160, 250, null, null], + [0, "이각네양봉", -1, 0, null, 66, 65, 31, 0, 160, 250, null, null], + [0, "양부", -1, 0, null, 67, 50, 83, 0, 160, 250, null, null], + [0, "양서", -1, 0, null, 56, 62, 66, 0, 160, 250, null, null], + [0, "양송", -1, 0, null, 2, 5, 28, 0, 160, 250, null, null], + [0, "양수", -1, 0, null, 10, 4, 83, 0, 160, 250, null, null], + [0, "양습", -1, 0, null, 73, 40, 73, 0, 160, 250, null, null], + [0, "양앙", -1, 0, null, 68, 72, 38, 0, 160, 250, null, null], + [0, "양의", -1, 0, null, 68, 40, 82, 0, 160, 250, null, null], + [0, "양임", -1, 0, null, 70, 78, 53, 0, 160, 250, null, null], + [0, "양제", -1, 0, null, 67, 68, 71, 0, 160, 250, null, null], + [0, "진나라양조", -1, 0, null, 70, 65, 68, 0, 160, 250, null, null], + [0, "양조", -1, 0, null, 53, 61, 36, 0, 160, 250, null, null], + [0, "장양네양추", -1, 0, null, 67, 64, 58, 0, 160, 250, null, null], + [0, "양추", -1, 0, null, 52, 65, 40, 0, 160, 250, null, null], + [0, "양호", -1, 0, null, 90, 64, 84, 0, 160, 250, null, null], + [0, "양홍", -1, 0, null, 18, 15, 76, 0, 160, 250, null, null], + [0, "양회", -1, 0, null, 62, 68, 68, 0, 160, 250, null, null], + [0, "양흔", -1, 0, null, 61, 68, 61, 0, 160, 250, null, null], + [0, "양흥", -1, 0, null, 61, 65, 19, 0, 160, 250, null, null], + [0, "엄강", -1, 0, null, 68, 71, 40, 0, 160, 250, null, null], + [0, "엄백호", -1, 0, null, 67, 70, 23, 0, 160, 250, null, null], + [0, "엄안", -1, 0, null, 79, 83, 69, 0, 160, 250, null, null], + [0, "엄여", -1, 0, null, 61, 78, 44, 0, 160, 250, null, null], + [0, "엄정", -1, 0, null, 50, 55, 39, 0, 160, 250, null, null], + [0, "엄준", -1, 0, null, 13, 2, 70, 0, 160, 250, null, null], + [0, "여개", -1, 0, null, 53, 30, 66, 0, 160, 250, null, null], + [0, "여거", -1, 0, null, 70, 59, 71, 0, 160, 250, null, null], + [0, "여건", -1, 0, null, 57, 70, 58, 0, 160, 250, null, null], + [0, "여광", -1, 0, null, 56, 70, 13, 0, 160, 250, null, null], + [0, "여대", -1, 0, null, 82, 71, 69, 0, 160, 250, null, null], + [0, "여몽", -1, 0, null, 91, 81, 89, 0, 160, 250, null, null], + [0, "여범", -1, 0, null, 73, 63, 74, 0, 160, 250, null, null], + [0, "여상", -1, 0, null, 54, 71, 12, 0, 160, 250, null, null], + [0, "여령기", -1, 0, null, 87, 90, 47, 0, 160, 250, null, null], + [0, "여위황", -1, 0, null, 58, 63, 29, 0, 160, 250, null, null], + [0, "여포", -1, 0, null, 87, 108, 26, 0, 160, 250, null, null], + [0, "염상", -1, 0, null, 30, 27, 70, 0, 160, 250, null, null], + [0, "염우", -1, 0, null, 52, 61, 58, 0, 160, 250, null, null], + [0, "염유", -1, 0, null, 71, 57, 70, 0, 160, 250, null, null], + [0, "염포", -1, 0, null, 29, 25, 82, 0, 160, 250, null, null], + [0, "염행", -1, 0, null, 72, 84, 61, 0, 160, 250, null, null], + [0, "예형", -1, 0, null, 3, 6, 83, 0, 160, 250, null, null], + [0, "오강", -1, 0, null, 48, 38, 65, 0, 160, 250, null, null], + [0, "오거", -1, 0, null, 49, 61, 23, 0, 160, 250, null, null], + [0, "오경", -1, 0, null, 69, 66, 51, 0, 160, 250, null, null], + [0, "오국태", -1, 0, null, 83, 31, 81, 0, 160, 250, null, null], + [0, "오란", -1, 0, null, 62, 80, 35, 0, 160, 250, null, null], + [0, "오반", -1, 0, null, 74, 71, 56, 0, 160, 250, null, null], + [0, "오언", -1, 0, null, 74, 72, 77, 0, 160, 250, null, null], + [0, "오연", -1, 0, null, 66, 73, 42, 0, 160, 250, null, null], + [0, "오의", -1, 0, null, 83, 73, 68, 0, 160, 250, null, null], + [0, "오질", -1, 0, null, 16, 29, 68, 0, 160, 250, null, null], + [0, "오찬", -1, 0, null, 68, 41, 78, 0, 160, 250, null, null], + [0, "온회", -1, 0, null, 62, 36, 73, 0, 160, 250, null, null], + [0, "올돌골", -1, 0, null, 72, 86, 1, 0, 160, 250, null, null], + [0, "옹개", -1, 0, null, 81, 75, 54, 0, 160, 250, null, null], + [0, "왕경", -1, 0, null, 67, 63, 66, 0, 160, 250, null, null], + [0, "왕광", -1, 0, null, 65, 55, 61, 0, 160, 250, null, null], + [0, "큰왕기", -1, 0, null, 77, 78, 76, 0, 160, 250, null, null], + [0, "작은왕기", -1, 0, null, 69, 67, 61, 0, 160, 250, null, null], + [0, "왕누", -1, 0, null, 28, 30, 78, 0, 160, 250, null, null], + [0, "왕도", -1, 0, null, 46, 59, 72, 0, 160, 250, null, null], + [0, "왕돈", -1, 0, null, 60, 66, 46, 0, 160, 250, null, null], + [0, "왕랑", -1, 0, null, 47, 35, 79, 0, 160, 250, null, null], + [0, "왕릉", -1, 0, null, 74, 64, 70, 0, 160, 250, null, null], + [0, "왕문", -1, 0, null, 65, 64, 31, 0, 160, 250, null, null], + [0, "왕보", -1, 0, null, 62, 41, 79, 0, 160, 250, null, null], + [0, "왕상", -1, 0, null, 23, 19, 68, 0, 160, 250, null, null], + [0, "왕수", -1, 0, null, 54, 27, 76, 0, 160, 250, null, null], + [0, "왕숙", -1, 0, null, 36, 22, 75, 0, 160, 250, null, null], + [0, "왕쌍", -1, 0, null, 64, 88, 19, 0, 160, 250, null, null], + [0, "왕업", -1, 0, null, 33, 6, 35, 0, 160, 250, null, null], + [0, "왕위", -1, 0, null, 60, 70, 59, 0, 160, 250, null, null], + [0, "왕윤", -1, 0, null, 26, 6, 67, 0, 160, 250, null, null], + [0, "왕융", -1, 0, null, 57, 36, 72, 0, 160, 250, null, null], + [0, "왕이", -1, 0, null, 88, 86, 36, 0, 160, 250, null, null], + [0, "왕준", -1, 0, null, 81, 73, 77, 0, 160, 250, null, null], + [0, "왕찬", -1, 0, null, 6, 3, 79, 0, 160, 250, null, null], + [0, "왕창", -1, 0, null, 74, 64, 79, 0, 160, 250, null, null], + [0, "왕충", -1, 0, null, 39, 57, 21, 0, 160, 250, null, null], + [0, "왕평", -1, 0, null, 83, 79, 80, 0, 160, 250, null, null], + [0, "왕항", -1, 0, null, 76, 60, 61, 0, 160, 250, null, null], + [0, "왕혼", -1, 0, null, 76, 76, 72, 0, 160, 250, null, null], + [0, "요립", -1, 0, null, 22, 15, 69, 0, 160, 250, null, null], + [0, "요화", -1, 0, null, 73, 76, 64, 0, 160, 250, null, null], + [0, "큰우금", -1, 0, null, 84, 78, 70, 0, 160, 250, null, null], + [0, "작은우금", -1, 0, null, 72, 79, 38, 0, 160, 250, null, null], + [0, "우번", -1, 0, null, 43, 46, 86, 0, 160, 250, null, null], + [0, "우보", -1, 0, null, 38, 60, 21, 0, 160, 250, null, null], + [0, "우사", -1, 0, null, 61, 34, 74, 0, 160, 250, null, null], + [0, "우전", -1, 0, null, 64, 76, 40, 0, 160, 250, null, null], + [0, "원담", -1, 0, null, 60, 69, 30, 0, 160, 250, null, null], + [0, "원상", -1, 0, null, 63, 71, 42, 0, 160, 250, null, null], + [0, "원소", -1, 0, null, 81, 69, 70, 0, 160, 250, null, null], + [0, "원술", -1, 0, null, 44, 65, 61, 0, 160, 250, null, null], + [0, "원요", -1, 0, null, 41, 50, 41, 0, 160, 250, null, null], + [0, "원유", -1, 0, null, 56, 40, 73, 0, 160, 250, null, null], + [0, "원윤", -1, 0, null, 17, 14, 39, 0, 160, 250, null, null], + [0, "원환", -1, 0, null, 30, 17, 72, 0, 160, 250, null, null], + [0, "원희", -1, 0, null, 66, 51, 63, 0, 160, 250, null, null], + [0, "위관", -1, 0, null, 69, 46, 79, 0, 160, 250, null, null], + [0, "위막", -1, 0, null, 57, 62, 59, 0, 160, 250, null, null], + [0, "위소", -1, 0, null, 16, 19, 65, 0, 160, 250, null, null], + [0, "위속", -1, 0, null, 67, 78, 31, 0, 160, 250, null, null], + [0, "위연", -1, 0, null, 81, 92, 69, 0, 160, 250, null, null], + [0, "위유", -1, 0, null, 46, 29, 73, 0, 160, 250, null, null], + [0, "위풍", -1, 0, null, 52, 23, 72, 0, 160, 250, null, null], + [0, "유괴", -1, 0, null, 71, 73, 66, 0, 160, 250, null, null], + [0, "유기", -1, 0, null, 52, 12, 62, 0, 160, 250, null, null], + [0, "유대", -1, 0, null, 53, 65, 32, 0, 160, 250, null, null], + [0, "유도", -1, 0, null, 25, 23, 26, 0, 160, 250, null, null], + [0, "유략", -1, 0, null, 71, 66, 59, 0, 160, 250, null, null], + [0, "유반", -1, 0, null, 69, 76, 47, 0, 160, 250, null, null], + [0, "유벽", -1, 0, null, 70, 72, 47, 0, 160, 250, null, null], + [0, "유복", -1, 0, null, 64, 49, 73, 0, 160, 250, null, null], + [0, "유봉", -1, 0, null, 75, 79, 44, 0, 160, 250, null, null], + [0, "유비", -1, 0, null, 75, 73, 74, 0, 160, 250, null, null], + [0, "아빠유선", -1, 0, null, 8, 21, 36, 0, 160, 250, null, null], + [0, "아들유선", -1, 0, null, 3, 5, 9, 0, 160, 250, null, null], + [0, "유섭", -1, 0, null, 62, 79, 24, 0, 160, 250, null, null], + [0, "유소", -1, 0, null, 71, 53, 74, 0, 160, 250, null, null], + [0, "유순", -1, 0, null, 63, 46, 41, 0, 160, 250, null, null], + [0, "유승", -1, 0, null, 45, 65, 33, 0, 160, 250, null, null], + [0, "유심", -1, 0, null, 60, 62, 69, 0, 160, 250, null, null], + [0, "유씨", -1, 0, null, 83, 41, 86, 0, 160, 250, null, null], + [0, "유언", -1, 0, null, 53, 38, 80, 0, 160, 250, null, null], + [0, "유엽", -1, 0, null, 36, 32, 92, 0, 160, 250, null, null], + [0, "유요", -1, 0, null, 62, 67, 46, 0, 160, 250, null, null], + [0, "유우", -1, 0, null, 55, 33, 69, 0, 160, 250, null, null], + [0, "유장", -1, 0, null, 16, 5, 9, 0, 160, 250, null, null], + [0, "유종", -1, 0, null, 24, 22, 64, 0, 160, 250, null, null], + [0, "유찬", -1, 0, null, 78, 75, 64, 0, 160, 250, null, null], + [0, "유파", -1, 0, null, 14, 22, 74, 0, 160, 250, null, null], + [0, "유평", -1, 0, null, 70, 71, 68, 0, 160, 250, null, null], + [0, "유표", -1, 0, null, 48, 31, 71, 0, 160, 250, null, null], + [0, "유현", -1, 0, null, 54, 66, 51, 0, 160, 250, null, null], + [0, "유화", -1, 0, null, 21, 16, 59, 0, 160, 250, null, null], + [0, "유훈", -1, 0, null, 47, 63, 35, 0, 160, 250, null, null], + [0, "육개", -1, 0, null, 65, 61, 78, 0, 160, 250, null, null], + [0, "육손", -1, 0, null, 96, 65, 95, 0, 160, 250, null, null], + [0, "육적", -1, 0, null, 20, 7, 71, 0, 160, 250, null, null], + [0, "육항", -1, 0, null, 91, 63, 87, 0, 160, 250, null, null], + [0, "윤대목", -1, 0, null, 4, 9, 33, 0, 160, 250, null, null], + [0, "윤묵", -1, 0, null, 11, 15, 65, 0, 160, 250, null, null], + [0, "윤상", -1, 0, null, 51, 44, 61, 0, 160, 250, null, null], + [0, "윤직", -1, 0, null, 46, 42, 72, 0, 160, 250, null, null], + [0, "이각", -1, 0, null, 69, 72, 24, 0, 160, 250, null, null], + [0, "이감", -1, 0, null, 58, 69, 33, 0, 160, 250, null, null], + [0, "이부", -1, 0, null, 31, 36, 74, 0, 160, 250, null, null], + [0, "이숙", -1, 0, null, 46, 69, 59, 0, 160, 250, null, null], + [0, "이승", -1, 0, null, 12, 22, 29, 0, 160, 250, null, null], + [0, "이엄", -1, 0, null, 83, 84, 75, 0, 160, 250, null, null], + [0, "이유", -1, 0, null, 61, 26, 93, 0, 160, 250, null, null], + [0, "이이", -1, 0, null, 59, 77, 19, 0, 160, 250, null, null], + [0, "이적", -1, 0, null, 29, 24, 80, 0, 160, 250, null, null], + [0, "이전", -1, 0, null, 80, 77, 79, 0, 160, 250, null, null], + [0, "이통", -1, 0, null, 73, 81, 57, 0, 160, 250, null, null], + [0, "촉나라이풍", -1, 0, null, 55, 48, 67, 0, 160, 250, null, null], + [0, "원술네이풍", -1, 0, null, 69, 74, 50, 0, 160, 250, null, null], + [0, "위나라이풍", -1, 0, null, 25, 35, 67, 0, 160, 250, null, null], + [0, "이회", -1, 0, null, 79, 65, 78, 0, 160, 250, null, null], + [0, "잠혼", -1, 0, null, 1, 1, 33, 0, 160, 250, null, null], + [0, "장각", -1, 0, null, 86, 25, 86, 0, 160, 250, null, null], + [0, "장간", -1, 0, null, 9, 6, 65, 0, 160, 250, null, null], + [0, "장개", -1, 0, null, 34, 66, 8, 0, 160, 250, null, null], + [0, "장굉", -1, 0, null, 24, 22, 86, 0, 160, 250, null, null], + [0, "장구", -1, 0, null, 69, 72, 44, 0, 160, 250, null, null], + [0, "장기", -1, 0, null, 74, 35, 75, 0, 160, 250, null, null], + [0, "촉나라장남", -1, 0, null, 70, 69, 37, 0, 160, 250, null, null], + [0, "장남", -1, 0, null, 57, 71, 46, 0, 160, 250, null, null], + [0, "장노", -1, 0, null, 51, 26, 73, 0, 160, 250, null, null], + [0, "장료", -1, 0, null, 90, 91, 78, 0, 160, 250, null, null], + [0, "장막", -1, 0, null, 52, 53, 70, 0, 160, 250, null, null], + [0, "장만성", -1, 0, null, 73, 81, 45, 0, 160, 250, null, null], + [0, "장반", -1, 0, null, 63, 73, 62, 0, 160, 250, null, null], + [0, "장보", -1, 0, null, 83, 71, 81, 0, 160, 250, null, null], + [0, "장비", -1, 0, null, 85, 98, 45, 0, 160, 250, null, null], + [0, "장빈", -1, 0, null, 27, 23, 64, 0, 160, 250, null, null], + [0, "장서", -1, 0, null, 55, 76, 35, 0, 160, 250, null, null], + [0, "오나라장소", -1, 0, null, 33, 3, 84, 0, 160, 250, null, null], + [0, "촉나라장소", -1, 0, null, 8, 12, 31, 0, 160, 250, null, null], + [0, "장송", -1, 0, null, 15, 6, 88, 0, 160, 250, null, null], + [0, "장수", -1, 0, null, 80, 73, 60, 0, 160, 250, null, null], + [0, "장승", -1, 0, null, 77, 70, 75, 0, 160, 250, null, null], + [0, "장량", -1, 0, null, 78, 80, 68, 0, 160, 250, null, null], + [0, "장양", -1, 0, null, 72, 70, 62, 0, 160, 250, null, null], + [0, "장억", -1, 0, null, 79, 72, 74, 0, 160, 250, null, null], + [0, "장연", -1, 0, null, 82, 81, 53, 0, 160, 250, null, null], + [0, "장영", -1, 0, null, 75, 74, 41, 0, 160, 250, null, null], + [0, "장온", -1, 0, null, 17, 10, 71, 0, 160, 250, null, null], + [0, "장완", -1, 0, null, 78, 34, 84, 0, 160, 250, null, null], + [0, "장위", -1, 0, null, 74, 66, 45, 0, 160, 250, null, null], + [0, "장윤", -1, 0, null, 72, 67, 42, 0, 160, 250, null, null], + [0, "장의거", -1, 0, null, 71, 58, 57, 0, 160, 250, null, null], + [0, "장익", -1, 0, null, 75, 74, 71, 0, 160, 250, null, null], + [0, "장임", -1, 0, null, 88, 84, 78, 0, 160, 250, null, null], + [0, "오나라장제", -1, 0, null, 67, 43, 80, 0, 160, 250, null, null], + [0, "위나라장제", -1, 0, null, 48, 43, 85, 0, 160, 250, null, null], + [0, "동탁네장제", -1, 0, null, 70, 66, 52, 0, 160, 250, null, null], + [0, "장준", -1, 0, null, 63, 68, 66, 0, 160, 250, null, null], + [0, "장집", -1, 0, null, 31, 29, 70, 0, 160, 250, null, null], + [0, "장춘화", -1, 0, null, 80, 40, 86, 0, 160, 250, null, null], + [0, "장특", -1, 0, null, 73, 54, 75, 0, 160, 250, null, null], + [0, "장패", -1, 0, null, 74, 75, 52, 0, 160, 250, null, null], + [0, "촉나라장포", -1, 0, null, 75, 87, 48, 0, 160, 250, null, null], + [0, "오나라장포", -1, 0, null, 31, 24, 71, 0, 160, 250, null, null], + [0, "장합", -1, 0, null, 90, 89, 69, 0, 160, 250, null, null], + [0, "장호", -1, 0, null, 75, 74, 41, 0, 160, 250, null, null], + [0, "장화", -1, 0, null, 36, 27, 78, 0, 160, 250, null, null], + [0, "장횡", -1, 0, null, 59, 70, 23, 0, 160, 250, null, null], + [0, "장훈", -1, 0, null, 72, 68, 41, 0, 160, 250, null, null], + [0, "장휴", -1, 0, null, 53, 27, 74, 0, 160, 250, null, null], + [0, "장흠", -1, 0, null, 78, 84, 51, 0, 160, 250, null, null], + [0, "저곡", -1, 0, null, 55, 51, 66, 0, 160, 250, null, null], + [0, "저수", -1, 0, null, 78, 35, 90, 0, 160, 250, null, null], + [0, "전기", -1, 0, null, 49, 69, 61, 0, 160, 250, null, null], + [0, "전단", -1, 0, null, 67, 64, 39, 0, 160, 250, null, null], + [0, "전만", -1, 0, null, 51, 73, 39, 0, 160, 250, null, null], + [0, "전상", -1, 0, null, 2, 4, 12, 0, 160, 250, null, null], + [0, "전속", -1, 0, null, 47, 60, 55, 0, 160, 250, null, null], + [0, "전역", -1, 0, null, 60, 63, 38, 0, 160, 250, null, null], + [0, "전예", -1, 0, null, 80, 72, 80, 0, 160, 250, null, null], + [0, "전위", -1, 0, null, 56, 98, 35, 0, 160, 250, null, null], + [0, "전의", -1, 0, null, 61, 68, 44, 0, 160, 250, null, null], + [0, "전종", -1, 0, null, 78, 72, 71, 0, 160, 250, null, null], + [0, "전주", -1, 0, null, 66, 66, 72, 0, 160, 250, null, null], + [0, "전풍", -1, 0, null, 76, 29, 93, 0, 160, 250, null, null], + [0, "전해", -1, 0, null, 68, 65, 56, 0, 160, 250, null, null], + [0, "정무", -1, 0, null, 56, 35, 75, 0, 160, 250, null, null], + [0, "정병", -1, 0, null, 16, 15, 71, 0, 160, 250, null, null], + [0, "정보", -1, 0, null, 84, 79, 79, 0, 160, 250, null, null], + [0, "형정봉", -1, 0, null, 81, 80, 71, 0, 160, 250, null, null], + [0, "동생정봉", -1, 0, null, 66, 66, 53, 0, 160, 250, null, null], + [0, "정욱", -1, 0, null, 73, 49, 90, 0, 160, 250, null, null], + [0, "정원", -1, 0, null, 70, 76, 35, 0, 160, 250, null, null], + [0, "정원지", -1, 0, null, 69, 74, 17, 0, 160, 250, null, null], + [0, "정은", -1, 0, null, 69, 73, 40, 0, 160, 250, null, null], + [0, "정의", -1, 0, null, 15, 5, 64, 0, 160, 250, null, null], + [0, "제갈각", -1, 0, null, 72, 47, 90, 0, 160, 250, null, null], + [0, "제갈교", -1, 0, null, 62, 27, 75, 0, 160, 250, null, null], + [0, "제갈균", -1, 0, null, 29, 25, 51, 0, 160, 250, null, null], + [0, "제갈근", -1, 0, null, 75, 34, 81, 0, 160, 250, null, null], + [0, "제갈량", -1, 0, null, 92, 38, 100, 0, 160, 250, null, null], + [0, "제갈상", -1, 0, null, 64, 77, 62, 0, 160, 250, null, null], + [0, "제갈서", -1, 0, null, 41, 40, 29, 0, 160, 250, null, null], + [0, "제갈정", -1, 0, null, 58, 63, 66, 0, 160, 250, null, null], + [0, "제갈첨", -1, 0, null, 71, 60, 70, 0, 160, 250, null, null], + [0, "제갈탄", -1, 0, null, 81, 72, 71, 0, 160, 250, null, null], + [0, "조광", -1, 0, null, 67, 71, 53, 0, 160, 250, null, null], + [0, "조누", -1, 0, null, 70, 43, 67, 0, 160, 250, null, null], + [0, "조모", -1, 0, null, 54, 61, 59, 0, 160, 250, null, null], + [0, "조무", -1, 0, null, 70, 71, 62, 0, 160, 250, null, null], + [0, "조방", -1, 0, null, 5, 3, 27, 0, 160, 250, null, null], + [0, "조범", -1, 0, null, 28, 21, 32, 0, 160, 250, null, null], + [0, "조비", -1, 0, null, 70, 71, 83, 0, 160, 250, null, null], + [0, "조상", -1, 0, null, 39, 33, 30, 0, 160, 250, null, null], + [0, "조성", -1, 0, null, 54, 74, 38, 0, 160, 250, null, null], + [0, "조순", -1, 0, null, 75, 71, 60, 0, 160, 250, null, null], + [0, "조식", -1, 0, null, 18, 22, 81, 0, 160, 250, null, null], + [0, "조앙", -1, 0, null, 74, 67, 66, 0, 160, 250, null, null], + [0, "조예", -1, 0, null, 72, 52, 82, 0, 160, 250, null, null], + [0, "조우", -1, 0, null, 50, 43, 37, 0, 160, 250, null, null], + [0, "조운", -1, 0, null, 94, 93, 78, 0, 160, 250, null, null], + [0, "조웅", -1, 0, null, 9, 5, 52, 0, 160, 250, null, null], + [0, "조인", -1, 0, null, 89, 86, 56, 0, 160, 250, null, null], + [0, "조조", -1, 0, null, 96, 72, 91, 0, 160, 250, null, null], + [0, "조진", -1, 0, null, 87, 74, 68, 0, 160, 250, null, null], + [0, "조창", -1, 0, null, 82, 90, 40, 0, 160, 250, null, null], + [0, "조충", -1, 0, null, 31, 21, 85, 0, 160, 250, null, null], + [0, "조통", -1, 0, null, 68, 67, 61, 0, 160, 250, null, null], + [0, "조표", -1, 0, null, 54, 69, 32, 0, 160, 250, null, null], + [0, "위나라조홍", -1, 0, null, 79, 81, 44, 0, 160, 250, null, null], + [0, "황건적조홍", -1, 0, null, 66, 72, 28, 0, 160, 250, null, null], + [0, "조환", -1, 0, null, 13, 15, 30, 0, 160, 250, null, null], + [0, "조훈", -1, 0, null, 18, 34, 11, 0, 160, 250, null, null], + [0, "조휴", -1, 0, null, 74, 75, 58, 0, 160, 250, null, null], + [0, "조희", -1, 0, null, 30, 26, 50, 0, 160, 250, null, null], + [0, "종리목", -1, 0, null, 77, 72, 73, 0, 160, 250, null, null], + [0, "종요", -1, 0, null, 70, 24, 76, 0, 160, 250, null, null], + [0, "종육", -1, 0, null, 32, 12, 71, 0, 160, 250, null, null], + [0, "종회", -1, 0, null, 82, 51, 91, 0, 160, 250, null, null], + [0, "좌자", -1, 0, null, 10, 10, 94, 0, 160, 250, null, null], + [0, "좌혁", -1, 0, null, 62, 66, 51, 0, 160, 250, null, null], + [0, "주거", -1, 0, null, 77, 57, 72, 0, 160, 250, null, null], + [0, "주령", -1, 0, null, 71, 73, 67, 0, 160, 250, null, null], + [0, "주방", -1, 0, null, 52, 41, 80, 0, 160, 250, null, null], + [0, "주앙", -1, 0, null, 74, 65, 62, 0, 160, 250, null, null], + [0, "주연", -1, 0, null, 79, 69, 71, 0, 160, 250, null, null], + [0, "주유", -1, 0, null, 97, 71, 96, 0, 160, 250, null, null], + [0, "주이", -1, 0, null, 70, 68, 60, 0, 160, 250, null, null], + [0, "주준", -1, 0, null, 78, 65, 70, 0, 160, 250, null, null], + [0, "주지", -1, 0, null, 65, 85, 41, 0, 160, 250, null, null], + [0, "주창", -1, 0, null, 62, 84, 42, 0, 160, 250, null, null], + [0, "주치", -1, 0, null, 71, 56, 72, 0, 160, 250, null, null], + [0, "진나라주태", -1, 0, null, 71, 64, 71, 0, 160, 250, null, null], + [0, "오나라주태", -1, 0, null, 76, 91, 48, 0, 160, 250, null, null], + [0, "주포", -1, 0, null, 68, 73, 34, 0, 160, 250, null, null], + [0, "주환", -1, 0, null, 84, 82, 73, 0, 160, 250, null, null], + [0, "주흔", -1, 0, null, 65, 62, 72, 0, 160, 250, null, null], + [0, "진건", -1, 0, null, 72, 71, 65, 0, 160, 250, null, null], + [0, "진교", -1, 0, null, 61, 27, 76, 0, 160, 250, null, null], + [0, "진군", -1, 0, null, 32, 14, 74, 0, 160, 250, null, null], + [0, "진궁", -1, 0, null, 78, 55, 89, 0, 160, 250, null, null], + [0, "진규", -1, 0, null, 15, 4, 82, 0, 160, 250, null, null], + [0, "진기", -1, 0, null, 58, 65, 43, 0, 160, 250, null, null], + [0, "진도", -1, 0, null, 76, 71, 63, 0, 160, 250, null, null], + [0, "진등", -1, 0, null, 79, 64, 81, 0, 160, 250, null, null], + [0, "진란", -1, 0, null, 66, 69, 40, 0, 160, 250, null, null], + [0, "진랑", -1, 0, null, 58, 70, 35, 0, 160, 250, null, null], + [0, "진림", -1, 0, null, 10, 9, 74, 0, 160, 250, null, null], + [0, "진무", -1, 0, null, 74, 87, 43, 0, 160, 250, null, null], + [0, "진복", -1, 0, null, 16, 7, 72, 0, 160, 250, null, null], + [0, "진수", -1, 0, null, 12, 22, 60, 0, 160, 250, null, null], + [0, "진식", -1, 0, null, 70, 71, 25, 0, 160, 250, null, null], + [0, "진응", -1, 0, null, 62, 72, 45, 0, 160, 250, null, null], + [0, "진진", -1, 0, null, 46, 46, 68, 0, 160, 250, null, null], + [0, "진태", -1, 0, null, 84, 73, 86, 0, 160, 250, null, null], + [0, "진표", -1, 0, null, 66, 42, 74, 0, 160, 250, null, null], + [0, "진횡", -1, 0, null, 64, 63, 26, 0, 160, 250, null, null], + [0, "차주", -1, 0, null, 49, 49, 40, 0, 160, 250, null, null], + [0, "착융", -1, 0, null, 60, 69, 38, 0, 160, 250, null, null], + [0, "채모", -1, 0, null, 77, 70, 77, 0, 160, 250, null, null], + [0, "채씨", -1, 0, null, 88, 66, 69, 0, 160, 250, null, null], + [0, "채염", -1, 0, null, 92, 41, 90, 0, 160, 250, null, null], + [0, "채중", -1, 0, null, 40, 54, 2, 0, 160, 250, null, null], + [0, "채화", -1, 0, null, 39, 50, 1, 0, 160, 250, null, null], + [0, "초선", -1, 0, null, 90, 56, 94, 0, 160, 250, null, null], + [0, "초이", -1, 0, null, 62, 69, 63, 0, 160, 250, null, null], + [0, "초주", -1, 0, null, 3, 3, 66, 0, 160, 250, null, null], + [0, "초촉", -1, 0, null, 65, 72, 33, 0, 160, 250, null, null], + [0, "최림", -1, 0, null, 32, 22, 66, 0, 160, 250, null, null], + [0, "최염", -1, 0, null, 18, 55, 70, 0, 160, 250, null, null], + [0, "추단", -1, 0, null, 61, 64, 34, 0, 160, 250, null, null], + [0, "추씨", -1, 0, null, 90, 36, 86, 0, 160, 250, null, null], + [0, "추정", -1, 0, null, 70, 64, 66, 0, 160, 250, null, null], + [0, "축융", -1, 0, null, 90, 91, 49, 0, 160, 250, null, null], + [0, "타사대왕", -1, 0, null, 62, 59, 70, 0, 160, 250, null, null], + [0, "태사자", -1, 0, null, 84, 94, 66, 0, 160, 250, null, null], + [0, "태사향", -1, 0, null, 57, 66, 48, 0, 160, 250, null, null], + [0, "파재", -1, 0, null, 71, 74, 52, 0, 160, 250, null, null], + [0, "포삼랑", -1, 0, null, 92, 83, 56, 0, 160, 250, null, null], + [0, "포신", -1, 0, null, 77, 67, 81, 0, 160, 250, null, null], + [0, "포융", -1, 0, null, 58, 76, 49, 0, 160, 250, null, null], + [0, "풍습", -1, 0, null, 72, 71, 39, 0, 160, 250, null, null], + [0, "하식", -1, 0, null, 15, 24, 26, 0, 160, 250, null, null], + [0, "하안", -1, 0, null, 6, 30, 71, 0, 160, 250, null, null], + [0, "하의", -1, 0, null, 56, 69, 36, 0, 160, 250, null, null], + [0, "하제", -1, 0, null, 83, 78, 72, 0, 160, 250, null, null], + [0, "하진", -1, 0, null, 39, 40, 6, 0, 160, 250, null, null], + [0, "하후덕", -1, 0, null, 69, 73, 32, 0, 160, 250, null, null], + [0, "하후돈", -1, 0, null, 89, 90, 58, 0, 160, 250, null, null], + [0, "하후무", -1, 0, null, 20, 7, 4, 0, 160, 250, null, null], + [0, "하후상", -1, 0, null, 79, 72, 74, 0, 160, 250, null, null], + [0, "하후연", -1, 0, null, 87, 91, 54, 0, 160, 250, null, null], + [0, "하후영녀", -1, 0, null, 89, 40, 88, 0, 160, 250, null, null], + [0, "하후위", -1, 0, null, 71, 73, 49, 0, 160, 250, null, null], + [0, "하후은", -1, 0, null, 63, 72, 52, 0, 160, 250, null, null], + [0, "하후패", -1, 0, null, 79, 84, 77, 0, 160, 250, null, null], + [0, "하후현", -1, 0, null, 54, 39, 75, 0, 160, 250, null, null], + [0, "하후혜", -1, 0, null, 50, 44, 75, 0, 160, 250, null, null], + [0, "하후화", -1, 0, null, 48, 51, 70, 0, 160, 250, null, null], + [0, "학맹", -1, 0, null, 62, 67, 42, 0, 160, 250, null, null], + [0, "학소", -1, 0, null, 89, 79, 80, 0, 160, 250, null, null], + [0, "한거자", -1, 0, null, 51, 59, 51, 0, 160, 250, null, null], + [0, "한당", -1, 0, null, 76, 85, 56, 0, 160, 250, null, null], + [0, "한덕", -1, 0, null, 63, 76, 25, 0, 160, 250, null, null], + [0, "한복", -1, 0, null, 13, 3, 27, 0, 160, 250, null, null], + [0, "한섬", -1, 0, null, 69, 66, 36, 0, 160, 250, null, null], + [0, "한수", -1, 0, null, 89, 70, 77, 0, 160, 250, null, null], + [0, "한숭", -1, 0, null, 25, 15, 70, 0, 160, 250, null, null], + [0, "한윤", -1, 0, null, 26, 29, 64, 0, 160, 250, null, null], + [0, "한충", -1, 0, null, 64, 67, 18, 0, 160, 250, null, null], + [0, "한현", -1, 0, null, 42, 43, 7, 0, 160, 250, null, null], + [0, "한호", -1, 0, null, 69, 72, 68, 0, 160, 250, null, null], + [0, "향랑", -1, 0, null, 28, 18, 73, 0, 160, 250, null, null], + [0, "향총", -1, 0, null, 76, 61, 76, 0, 160, 250, null, null], + [0, "허공", -1, 0, null, 44, 66, 64, 0, 160, 250, null, null], + [0, "허소", -1, 0, null, 16, 11, 74, 0, 160, 250, null, null], + [0, "허유", -1, 0, null, 36, 21, 80, 0, 160, 250, null, null], + [0, "허의", -1, 0, null, 51, 74, 15, 0, 160, 250, null, null], + [0, "허저", -1, 0, null, 65, 96, 36, 0, 160, 250, null, null], + [0, "허정", -1, 0, null, 3, 5, 67, 0, 160, 250, null, null], + [0, "형도영", -1, 0, null, 61, 80, 41, 0, 160, 250, null, null], + [0, "호거아", -1, 0, null, 26, 82, 41, 0, 160, 250, null, null], + [0, "호반", -1, 0, null, 55, 55, 58, 0, 160, 250, null, null], + [0, "호분", -1, 0, null, 71, 76, 50, 0, 160, 250, null, null], + [0, "호열", -1, 0, null, 73, 67, 72, 0, 160, 250, null, null], + [0, "호제", -1, 0, null, 57, 39, 68, 0, 160, 250, null, null], + [0, "호준", -1, 0, null, 70, 76, 52, 0, 160, 250, null, null], + [0, "호진", -1, 0, null, 65, 74, 12, 0, 160, 250, null, null], + [0, "호질", -1, 0, null, 73, 46, 74, 0, 160, 250, null, null], + [0, "화만", -1, 0, null, 69, 82, 32, 0, 160, 250, null, null], + [0, "화웅", -1, 0, null, 81, 90, 56, 0, 160, 250, null, null], + [0, "화타", -1, 0, null, 8, 7, 68, 0, 160, 250, null, null], + [0, "화핵", -1, 0, null, 20, 24, 71, 0, 160, 250, null, null], + [0, "화흠", -1, 0, null, 18, 33, 82, 0, 160, 250, null, null], + [0, "환계", -1, 0, null, 10, 26, 67, 0, 160, 250, null, null], + [0, "환범", -1, 0, null, 20, 11, 78, 0, 160, 250, null, null], + [0, "황개", -1, 0, null, 79, 83, 65, 0, 160, 250, null, null], + [0, "황권", -1, 0, null, 78, 59, 82, 0, 160, 250, null, null], + [0, "황보숭", -1, 0, null, 87, 61, 73, 0, 160, 250, null, null], + [0, "황숭", -1, 0, null, 67, 63, 72, 0, 160, 250, null, null], + [0, "황월영", -1, 0, null, 81, 42, 90, 0, 160, 250, null, null], + [0, "황조", -1, 0, null, 74, 66, 53, 0, 160, 250, null, null], + [0, "황충", -1, 0, null, 86, 93, 60, 0, 160, 250, null, null], + [0, "황호", -1, 0, null, 1, 1, 30, 0, 160, 250, null, null], + [0, "후선", -1, 0, null, 63, 66, 34, 0, 160, 250, null, null], + [0, "후성", -1, 0, null, 74, 75, 63, 0, 160, 250, null, null], + [0, "휴고", -1, 0, null, 63, 71, 38, 0, 160, 250, null, null], + [0, "휴원진", -1, 0, null, 52, 68, 45, 0, 160, 250, null, null], + [0, "희지재", -1, 0, null, 23, 7, 88, 0, 160, 250, null, null], + [0, "왕원희", -1, 0, null, 93, 51, 90, 0, 160, 250, null, null], + [0, "김세정", -1, 0, null, 97, 93, 93, 0, 160, 250, null, null] + ], + "general_ex":[ + ], + "cities":[ + + ], + "history":[ + "●180년 1월:【이벤트】제작자: 세정.", + "●180년 1월:【가상모드11】 삼국지11 영웅 난무", + "●180년 1월:【이벤트】당대의 대표 세력들이 등장합니다." + ], + "initialEvents":[ + + ], + "events":[ + + ] +} \ No newline at end of file diff --git a/hwe/scenario/scenario_900.json b/hwe/scenario/scenario_900.json index a9edd73d..a24fb0de 100644 --- a/hwe/scenario/scenario_900.json +++ b/hwe/scenario/scenario_900.json @@ -10,5 +10,29 @@ }, "history": [ "●180년 1월:【이벤트】병기로 싸운다! 최고의 충차 지휘관을 가린다" + ], + "initialEvents":[ + [ + true, + ["ChangeCity", "free", { + "pop":"70%", + "agri":"70%", + "comm":"70%", + "secu":"70%", + "rate":80 + }], + ["ChangeCity", "occupied", { + "pop":"70%", + "agri":"70%", + "comm":"70%", + "secu":"70%", + "rate":80, + "def":"70%", + "wall":"70%" + }] + ] + ], + "events":[ + ] } \ No newline at end of file diff --git a/hwe/scenario/unit/basic.php b/hwe/scenario/unit/basic.php new file mode 100644 index 00000000..5ab1c990 --- /dev/null +++ b/hwe/scenario/unit/basic.php @@ -0,0 +1,79 @@ +1.2], + ['성벽입니다.','생성할 수 없습니다.'] + ], + + [ + 1000, self::T_FOOTMAN, '보병', + 100, 150, 7, 10, 0, 9, 9, + 0, null, null, 0, + [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2], + [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8], + ['표준적인 보병입니다.','보병은 방어특화이며, 상대가 회피하기 어렵습니다.'] + ], + + [ + 1010, self::T_ARCHER, '궁병', + 100, 100, 7, 20, 0, 10, 10, + 0, null, null, 0, + [self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8, self::T_SIEGE=>1.2], + [self::T_CAVALRY=>0.8, self::T_FOOTMAN=>1.2, self::T_SIEGE=>0.8], + ['표준적인 궁병입니다.','궁병은 회피특화입니다.'] + ], + + [ + 1020, self::T_CAVALRY, '기병', + 150, 100, 7, 5, 0, 11, 11, + 0, null, null, 0, + [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2], + [self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2, self::T_SIEGE=>0.8], + ['표준적인 기병입니다.','기병은 공격특화입니다.'] + ], + + [ + 1030, self::T_WIZARD, '귀병', + 80, 80, 7, 5, 0.5, 9, 9, + 0, null, null, 0, + [self::T_SIEGE=>1.2], + [self::T_SIEGE=>0.8], + ['계략을 사용하는 병종입니다.'] + ], + [ + 1035, self::T_WIZARD, '남귀병', + 60, 60, 7, 10, 0.8, 8, 8, + 1000, null, null, 0, + [self::T_SIEGE=>1.2], + [self::T_SIEGE=>0.8], + ['전투를 포기하고 계략에 몰두합니다.'] + ], + + [ + 1040, self::T_SIEGE, '정란', + 100, 100, 6, 0, 0, 15, 5, + 0, null, null, 3, + [self::T_FOOTMAN=>0.8, self::T_ARCHER=>0.8, self::T_CAVALRY=>0.8, self::T_WIZARD=>0.8, self::T_CASTLE=>1.8], + [self::T_FOOTMAN=>1.2, self::T_ARCHER=>1.2, self::T_CAVALRY=>1.2, self::T_WIZARD=>1.2], + ['높은 구조물 위에서 공격합니다.'] + ], + [ + 1041, self::T_SIEGE, '충차', + 150, 100, 6, 0, 0, 20, 5, + 1000, null, null, 3, + [self::T_FOOTMAN=>0.8, self::T_ARCHER=>0.8, self::T_CAVALRY=>0.8, self::T_WIZARD=>0.8, self::T_CASTLE=>2.4], + [self::T_FOOTMAN=>1.2, self::T_ARCHER=>1.2, self::T_CAVALRY=>1.2, self::T_WIZARD=>1.2], + ['엄청난 위력으로 성벽을 부수어버립니다.'] + ] + ]; +} \ No newline at end of file diff --git a/hwe/scenario/unit/siegetank.php b/hwe/scenario/unit/siegetank.php index 84532661..71ded9d1 100644 --- a/hwe/scenario/unit/siegetank.php +++ b/hwe/scenario/unit/siegetank.php @@ -3,7 +3,7 @@ namespace sammo; class GameUnitConst extends GameUnitConstBase { - const DEFAULT_CREWTYPE = 217001; + const DEFAULT_CREWTYPE = 9040; protected static $_buildData = [ [ From 4cedf112f57958a696fb159ef14c194a908e978d Mon Sep 17 00:00:00 2001 From: hide_d Date: Thu, 2 May 2019 00:53:09 +0900 Subject: [PATCH 19/33] =?UTF-8?q?sidebar=20=EB=8B=A4=EC=8B=9C=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/css/main.css | 11 ----------- hwe/index.php | 7 ------- 2 files changed, 18 deletions(-) diff --git a/hwe/css/main.css b/hwe/css/main.css index 983d3c9b..f3b258bb 100644 --- a/hwe/css/main.css +++ b/hwe/css/main.css @@ -68,14 +68,3 @@ color:white; .nation_info td{ height:18px; } - -#sidebar{ - position:fixed; - right:0; - top: 50%; - transform: translateY(-50%); -} - -#sidebar button{ - /*width:100px;*/ -} \ No newline at end of file diff --git a/hwe/index.php b/hwe/index.php index c5c2e545..83a89344 100644 --- a/hwe/index.php +++ b/hwe/index.php @@ -326,13 +326,6 @@ else if($session->userGrade == 4){
- Date: Thu, 2 May 2019 01:20:45 +0900 Subject: [PATCH 20/33] =?UTF-8?q?=EB=B3=91=EC=A2=85=20=EC=A0=84=EC=BD=98?= =?UTF-8?q?=20=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/scenario/unit/basic.php | 16 +-- hwe/scenario/unit/siegetank.php | 204 ++------------------------------ 2 files changed, 19 insertions(+), 201 deletions(-) diff --git a/hwe/scenario/unit/basic.php b/hwe/scenario/unit/basic.php index 5ab1c990..0f2159e9 100644 --- a/hwe/scenario/unit/basic.php +++ b/hwe/scenario/unit/basic.php @@ -3,7 +3,7 @@ namespace sammo; class GameUnitConst extends GameUnitConstBase { - const DEFAULT_CREWTYPE = 1000; + const DEFAULT_CREWTYPE = 0; protected static $_buildData = [ [ @@ -16,7 +16,7 @@ class GameUnitConst extends GameUnitConstBase ], [ - 1000, self::T_FOOTMAN, '보병', + 0, self::T_FOOTMAN, '보병', 100, 150, 7, 10, 0, 9, 9, 0, null, null, 0, [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2], @@ -25,7 +25,7 @@ class GameUnitConst extends GameUnitConstBase ], [ - 1010, self::T_ARCHER, '궁병', + 10, self::T_ARCHER, '궁병', 100, 100, 7, 20, 0, 10, 10, 0, null, null, 0, [self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8, self::T_SIEGE=>1.2], @@ -34,7 +34,7 @@ class GameUnitConst extends GameUnitConstBase ], [ - 1020, self::T_CAVALRY, '기병', + 20, self::T_CAVALRY, '기병', 150, 100, 7, 5, 0, 11, 11, 0, null, null, 0, [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2], @@ -43,7 +43,7 @@ class GameUnitConst extends GameUnitConstBase ], [ - 1030, self::T_WIZARD, '귀병', + 30, self::T_WIZARD, '귀병', 80, 80, 7, 5, 0.5, 9, 9, 0, null, null, 0, [self::T_SIEGE=>1.2], @@ -51,7 +51,7 @@ class GameUnitConst extends GameUnitConstBase ['계략을 사용하는 병종입니다.'] ], [ - 1035, self::T_WIZARD, '남귀병', + 35, self::T_WIZARD, '남귀병', 60, 60, 7, 10, 0.8, 8, 8, 1000, null, null, 0, [self::T_SIEGE=>1.2], @@ -60,7 +60,7 @@ class GameUnitConst extends GameUnitConstBase ], [ - 1040, self::T_SIEGE, '정란', + 40, self::T_SIEGE, '정란', 100, 100, 6, 0, 0, 15, 5, 0, null, null, 3, [self::T_FOOTMAN=>0.8, self::T_ARCHER=>0.8, self::T_CAVALRY=>0.8, self::T_WIZARD=>0.8, self::T_CASTLE=>1.8], @@ -68,7 +68,7 @@ class GameUnitConst extends GameUnitConstBase ['높은 구조물 위에서 공격합니다.'] ], [ - 1041, self::T_SIEGE, '충차', + 41, self::T_SIEGE, '충차', 150, 100, 6, 0, 0, 20, 5, 1000, null, null, 3, [self::T_FOOTMAN=>0.8, self::T_ARCHER=>0.8, self::T_CAVALRY=>0.8, self::T_WIZARD=>0.8, self::T_CASTLE=>2.4], diff --git a/hwe/scenario/unit/siegetank.php b/hwe/scenario/unit/siegetank.php index 71ded9d1..da191770 100644 --- a/hwe/scenario/unit/siegetank.php +++ b/hwe/scenario/unit/siegetank.php @@ -3,7 +3,7 @@ namespace sammo; class GameUnitConst extends GameUnitConstBase { - const DEFAULT_CREWTYPE = 9040; + const DEFAULT_CREWTYPE = 40; protected static $_buildData = [ [ @@ -15,161 +15,34 @@ class GameUnitConst extends GameUnitConstBase ['성벽입니다.','생성할 수 없습니다.'] ], [ - 9000, self::T_FOOTMAN, '보병', + 0, self::T_FOOTMAN, '보병', 100, 150, 7, 10, 0, 18, 18, 0, null, null, 0, [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8], [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2], ['표준적인 보병입니다.','보병은 방어특화이며, 상대가 회피하기 어렵습니다.'] ], - [ - 9001, self::T_FOOTMAN, '청주병', - 100, 200, 7, 10, 0, 20, 22, - 1000, null, ['중원'], 0, - [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8], - [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2], - ['저렴하고 튼튼합니다.'] - ], - [ - 9002, self::T_FOOTMAN, '수병', - 150, 150, 7, 10, 0, 22, 20, - 1000, null, ['오월'], 0, - [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8], - [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2], - ['저렴하고 강력합니다.'] - ], - [ - 9003, self::T_FOOTMAN, '자객병', - 100, 150, 8, 20, 0, 20, 20, - 2000, ['저'], null, 0, - [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8], - [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2], - ['은밀하고 날쌥니다.'] - ], - [ - 9004, self::T_FOOTMAN, '근위병', - 150, 200, 7, 10, 0, 24, 24, - 3000, ['낙양'], null, 0, - [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8], - [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2], - ['최강의 보병입니다.'] - ], - [ - 9005, self::T_FOOTMAN, '등갑병', - 100, 225, 7, 5, 0, 26, 20, - 1000, null, ['남중'], 0, - [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8], - [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2], - ['등갑을 두른 보병입니다.'] - ], [ - 9010, self::T_ARCHER, '궁병', + 10, self::T_ARCHER, '궁병', 100, 100, 7, 20, 0, 20, 20, 0, null, null, 0, [self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8], [self::T_CAVALRY=>0.8, self::T_FOOTMAN=>1.2], ['표준적인 궁병입니다.','궁병은 회피특화입니다.'] ], - [ - 9011, self::T_ARCHER, '궁기병', - 100, 100, 8, 30, 0, 22, 24, - 1000, null, ['동이'], 0, - [self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8], - [self::T_CAVALRY=>0.8, self::T_FOOTMAN=>1.2], - ['말을 타고 잘 피합니다.'] - ], - [ - 9012, self::T_ARCHER, '연노병', - 150, 100, 8, 20, 0, 24, 22, - 1000, null, ['서촉'], 0, - [self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8], - [self::T_CAVALRY=>0.8, self::T_FOOTMAN=>1.2], - ['화살을 연사합니다.'] - ], - [ - 9013, self::T_ARCHER, '강궁병', - 150, 150, 7, 20, 0, 26, 26, - 3000, ['양양'], null, 0, - [self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8], - [self::T_CAVALRY=>0.8, self::T_FOOTMAN=>1.2], - ['강건한 궁병입니다.'] - ], - [ - 9014, self::T_ARCHER, '석궁병', - 200, 100, 7, 20, 0, 26, 26, - 3000, ['건업'], null, 0, - [self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8], - [self::T_CAVALRY=>0.8, self::T_FOOTMAN=>1.2], - ['강력한 화살을 쏩니다.'] - ], [ - 9020, self::T_CAVALRY, '기병', + 20, self::T_CAVALRY, '기병', 150, 100, 7, 5, 0, 22, 22, 0, null, null, 0, [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8], [self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2], ['표준적인 기병입니다.','기병은 공격특화입니다.'] ], - [ - 9021, self::T_CAVALRY, '백마병', - 200, 100, 7, 5, 0, 24, 26, - 1000, null, ['하북'], 0, - [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8], - [self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2], - ['백마의 위용을 보여줍니다.'] - ], - [ - 9022, self::T_CAVALRY, '중장기병', - 150, 150, 7, 5, 0, 26, 24, - 1000, null, ['서북'], 0, - [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8], - [self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2], - ['갑주를 두른 기병입니다.'] - ], - [ - 9023, self::T_CAVALRY, '돌격기병', - 200, 100, 8, 5, 0, 26, 22, - 2000, ['흉노'], null, 0, - [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8], - [self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2], - ['저돌적으로 공격합니다.'] - ], - [ - 9024, self::T_CAVALRY, '철기병', - 100, 200, 7, 5, 0, 22, 26, - 2000, ['강'], null, 0, - [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8], - [self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2], - ['철갑을 두른 기병입니다.']], - [ - 9025, self::T_CAVALRY, '수렵기병', - 150, 100, 8, 15, 0, 24, 24, - 2000, ['산월'], null, 0, - [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8], - [self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2], - ['날쎄고 빠른 기병입니다.'] - ], - [ - 9026, self::T_CAVALRY, '맹수병', - 250, 175, 6, 0, 0, 32, 32, - 2000, ['남만'], null, 0, - [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8], - [self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2], - ['어느 누구보다 강력합니다.'] - ], - [ - 9027, self::T_CAVALRY, '호표기병', - 200, 150, 7, 5, 0, 28, 28, - 3000, ['허창'], null, 0, - [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8], - [self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2], - ['정예 기병입니다.'] - ], [ - 9030, self::T_WIZARD, '귀병', + 30, self::T_WIZARD, '귀병', 80, 80, 7, 5, 0.5, 18, 18, 0, null, null, 0, [], @@ -177,71 +50,16 @@ class GameUnitConst extends GameUnitConstBase ['계략을 사용하는 병종입니다.'] ], [ - 9031, self::T_WIZARD, '신귀병', - 80, 80, 7, 20, 0.6, 20, 20, - 1000, null, ['초'], 0, - [], - [], - ['신출귀몰한 귀병입니다.'] - ], - [ - 9032, self::T_WIZARD, '백귀병', - 80, 130, 7, 5, 0.6, 18, 22, - 2000, ['오환'], null, 0, - [], - [], - ['저렴하고 튼튼합니다.'] - ], - [ - 9033, self::T_WIZARD, '흑귀병', - 130, 80, 7, 5, 0.6, 22, 18, - 2000, ['왜'], null, 0, - [], - [], - ['저렴하고 강력합니다.'] - ], - [ - 9034, self::T_WIZARD, '악귀병', - 130, 130, 7, 0, 0.6, 24, 24, - 3000, ['장안'], null, 0, - [], - [], - ['백병전에도 능숙합니다.'] - ], - [ - 9035, self::T_WIZARD, '남귀병', + 35, self::T_WIZARD, '남귀병', 60, 60, 7, 10, 0.8, 16, 16, 1000, null, null, 0, [], [], ['전투를 포기하고 계략에 몰두합니다.'] ], + [ - 9036, self::T_WIZARD, '황귀병', - 110, 110, 7, 0, 0.8, 26, 20, - 3000, ['낙양'], null, 0, - [], - [], - ['고도로 훈련된 귀병입니다.'] - ], - [ - 9037, self::T_WIZARD, '천귀병', - 80, 130, 7, 15, 0.6, 22, 24, - 3000, ['성도'], null, 0, - [], - [], - ['갑주를 두른 귀병입니다.'] - ], - [ - 9038, self::T_WIZARD, '마귀병', - 130, 80, 7, 15, 0.6, 24, 22, - 3000, ['업'], null, 0, - [], - [], - ['날카로운 무기를 가진 귀병입니다.'] - ], - [ - 9040, self::T_SIEGE, '정란', + 40, self::T_SIEGE, '정란', 100, 100, 6, 0, 0, 7, 3, 0, null, null, 0, [self::T_CASTLE=>1.8], @@ -249,7 +67,7 @@ class GameUnitConst extends GameUnitConstBase ['높은 구조물 위에서 공격합니다.'] ], [ - 9041, self::T_SIEGE, '충차', + 41, self::T_SIEGE, '충차', 150, 100, 6, 0, 0, 10, 3, 1000, null, null, 3, [self::T_CASTLE=>2.4], @@ -257,7 +75,7 @@ class GameUnitConst extends GameUnitConstBase ['엄청난 위력으로 성벽을 부수어버립니다.'] ], [ - 9042, self::T_SIEGE, '벽력거', + 42, self::T_SIEGE, '벽력거', 200, 100, 6, 0, 0, 20, 4, 3000, ['업'], null, 0, [self::T_CASTLE=>1.8], @@ -265,7 +83,7 @@ class GameUnitConst extends GameUnitConstBase ['상대에게 돌덩이를 날립니다.'] ], [ - 9043, self::T_SIEGE, '목우', + 43, self::T_SIEGE, '목우', 50, 200, 5, 0, 0, 15, 3, 3000, ['성도'], null, 0, [], From 584b7b8e45a0a0bb94b772602564564edc76e378 Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 4 May 2019 16:18:53 +0900 Subject: [PATCH 21/33] =?UTF-8?q?=EC=98=81=EB=A6=89=20=EC=9E=A5=EC=82=AC?= =?UTF-8?q?=20=EA=B5=AC=EC=A7=80=EB=8F=84=20=EB=B3=B5=EA=B5=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/sammo/CityConstBase.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hwe/sammo/CityConstBase.php b/hwe/sammo/CityConstBase.php index c7673351..18a28c71 100644 --- a/hwe/sammo/CityConstBase.php +++ b/hwe/sammo/CityConstBase.php @@ -70,7 +70,7 @@ class CityConstBase{ [11, '수춘', '대', 5143, 99, 96, 80, 99, 95, '중원', 395, 270, ['서주', '여남', '초', '합비']], [12, '서주', '대', 4853,101, 98, 80,102, 97, '중원', 440, 250, ['수춘', '하비', '초', '패']], [13, '강릉', '대', 4850,105, 96, 80, 95, 96, '초', 245, 335, ['장사', '무릉', '이릉', '장판']], - [14, '장사', '대', 4710, 97, 99, 80,100,105, '초', 255, 375, ['강릉', '시상', '계양', '무릉']], + [14, '장사', '대', 4710, 97, 99, 80,100,105, '초', 255, 375, ['강릉', '시상', '계양', '무릉', '영릉']], [15, '시상', '대', 5252, 98,100,100, 99, 96, '오월', 360, 360, ['장사', '여강', '고창', '적벽', '파양']], [16, '위례', '대', 4926,100, 93, 80, 98,103, '동이', 620, 145, ['평양', '사비', '계림', '안평', '동황']], [17, '계', '중', 3885, 75, 80, 60, 78, 81, '하북', 365, 35, ['진양', '역경']], @@ -110,7 +110,7 @@ class CityConstBase{ [51, '신야', '소', 2786, 60, 62, 40, 58, 55, '초', 250, 260, ['양양', '완', '상용']], [52, '강하', '소', 3074, 55, 56, 40, 57, 60, '초', 315, 295, ['장판', '적벽']], [53, '무릉', '소', 3196, 58, 63, 40, 63, 58, '초', 195, 355, ['강릉', '장사', '영릉']], - [54, '영릉', '소', 2849, 62, 58, 40, 62, 62, '초', 190, 395, ['계양', '남영', '무릉']], + [54, '영릉', '소', 2849, 62, 58, 40, 62, 62, '초', 190, 395, ['계양', '남영', '무릉', '장사']], [55, '상동', '소', 2767, 58, 59, 40, 62, 58, '초', 210, 435, ['남해', '계양', '고창']], [56, '여강', '소', 2905, 56, 58, 40, 60, 55, '오월', 380, 315, ['시상', '합비', '적벽', '파양']], [57, '회계', '소', 3005, 64, 59, 40, 62, 64, '오월', 480, 395, ['오', '산월']], From 8f9ae78b8cb4b98a0d53e06b1c7d0eeaf2caf6d8 Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 4 May 2019 16:38:44 +0900 Subject: [PATCH 22/33] =?UTF-8?q?=EC=84=9C=EB=B2=84=20=EB=A6=AC=EC=85=8B?= =?UTF-8?q?=20=EA=B6=8C=ED=95=9C=EC=9E=90=EB=8A=94=20=EC=84=9C=EB=B2=84=20?= =?UTF-8?q?=EC=8B=9C=EC=9E=91,=20=EB=98=90=EB=8A=94=20=EC=B2=9C=ED=86=B5?= =?UTF-8?q?=EC=8B=9C=20=EB=8B=AB=EC=9D=84=20=EC=88=98=20=EC=9E=88=EC=9D=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- i_entrance/j_server_change_status.php | 34 ++++++++++++++++++++++++++- js/admin_server.js | 2 +- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/i_entrance/j_server_change_status.php b/i_entrance/j_server_change_status.php index 6b791b41..5a7f336b 100644 --- a/i_entrance/j_server_change_status.php +++ b/i_entrance/j_server_change_status.php @@ -39,7 +39,39 @@ function doServerModeSet($server, $action, &$response, $session){ $serverPath = $settingObj->getBasePath(); $realServerPath = realpath(dirname(__FILE__)).'/'.$serverPath; - if($action == 'close' && ($userGrade >= 5 || in_array('openClose', $serverAcl))) { //폐쇄 + if($action == 'close') { //폐쇄 + $doClose = false; + if($userGrade >= 5){ + $doClose = true; + } + else if(in_array('openClose', $serverAcl)){ + $doClose = true; + } + + if(!$doClose && in_array('reset', $serverAcl) && file_exists($serverPath.'/d_setting/DB.php')){ + require($serverPath.'/lib.php'); + $localGameStorage = KVStorage::getStorage(DB::db(), 'game_env'); + //천통 이후, 오픈 직후는 닫을 수 있음 + $localGameStorage->cacheValues(['isunited', 'startyear', 'year']); + + if($localGameStorage->isunited){ + $doClose = true; + } + else if($localGameStorage->year < $localGameStorage->startyear + 2){ + $doClose = true; + } + + } + + if(!$doClose){ + if(in_array('reset', $serverAcl)){ + $response['msg'] = '서버 시작 직후, 또는 천하통일 이후에만 닫을 수 있습니다.'; + } + else{ + $response['msg'] = '서버 닫기 권한이 부족합니다.'; + } + return false; + } return $settingObj->closeServer(); } elseif($action == 'reset' && $userGrade >= 6) {//리셋 //FIXME: reset, reset_full 구현 diff --git a/js/admin_server.js b/js/admin_server.js index 4467efc9..e2c4475d 100644 --- a/js/admin_server.js +++ b/js/admin_server.js @@ -131,7 +131,7 @@ function drawServerAdminList(serverList){ if(!server.installed){ return true; } - $tr.find('.serv_act_reset').prop('disabled', false); + $tr.find('.serv_act_reset, .serv_act_close').prop('disabled', false); } }); }); From 51bdd3bbfdc4652b5ffc576d42e852cdc69ff80c Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 4 May 2019 17:02:48 +0900 Subject: [PATCH 23/33] =?UTF-8?q?=EC=84=9C=EB=B2=84=EA=B0=80=20=EC=97=B4?= =?UTF-8?q?=EB=A6=B0=20=EA=B2=BD=EC=9A=B0=20=EC=84=9C=EB=B2=84=EA=B0=80=20?= =?UTF-8?q?=EC=97=B4=EB=A6=B0=20=EA=B8=B0=EA=B0=84=EC=9D=84=20=ED=91=9C?= =?UTF-8?q?=EA=B8=B0=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/config.css | 4 +++ hwe/j_server_basic_info.php | 4 ++- js/common.js | 49 ++++++++++++++++++++++++++++++++++++- js/entrance.js | 7 ++++-- 4 files changed, 60 insertions(+), 4 deletions(-) diff --git a/css/config.css b/css/config.css index aa3cdf0f..f5b02819 100644 --- a/css/config.css +++ b/css/config.css @@ -164,4 +164,8 @@ a.samButton.disabled { .samCommandButton.disabled > .samButtonOuter > .samButtonInner::after{ content:'】' +} + +.tooltiptext { + display: none; } \ No newline at end of file diff --git a/hwe/j_server_basic_info.php b/hwe/j_server_basic_info.php index 40a89e5f..32913687 100644 --- a/hwe/j_server_basic_info.php +++ b/hwe/j_server_basic_info.php @@ -63,11 +63,13 @@ if(file_exists(__dir__.'/.htaccess')){ //TODO: 천통시에도 예약 오픈 알림이 필요..? -$admin = $gameStor->getValues(['isunited', 'npcmode', 'year', 'month', 'scenario', 'scenario_text', 'maxgeneral', 'turnterm']); +$admin = $gameStor->getValues(['isunited', 'npcmode', 'year', 'month', 'scenario', 'scenario_text', 'maxgeneral', 'turnterm', 'starttime', 'turntime']); $admin['maxUserCnt'] = $admin['maxgeneral']; $admin['npcMode'] = $admin['npcmode']; $admin['turnTerm'] = $admin['turnterm']; $admin['isUnited'] = $admin['isunited']; +$admin['starttime'] = substr($admin['starttime'], 5, 11); +$admin['turntime'] = substr($admin['turntime'], 5, 11); unset($admin['npcmode']); unset($admin['maxgeneral']); unset($admin['turnterm']); diff --git a/js/common.js b/js/common.js index 96602943..9e35ba19 100644 --- a/js/common.js +++ b/js/common.js @@ -141,4 +141,51 @@ function quickReject(errMsg){ var deferred = $.Deferred(); deferred.reject(errMsg); return deferred.promise(); -} \ No newline at end of file +} + +function initTooltip($obj){ + if($obj === undefined){ + $obj = $('.obj_tooltip'); + } + else if(!$obj.hasClass('obj_tooltip')){ + $obj = $obj.find('.obj_tooltip'); + } + console.log($obj); + + $obj.each(function(){ + $target = $(this); + + if($target.data('installHandler')){ + return true; + } + $target.data('installHandler', true); + + $target.mouseover(function(){ + var $objTooltip = $(this); + if($objTooltip.data('setObjTooltip')){ + return true; + } + + var tooltipClassText = $objTooltip.data('tooltip-class'); + if(!tooltipClassText){ + tooltipClassText = ''; + } + var template = '' + .format(tooltipClassText); + + $objTooltip.tooltip({ + title:function(){ + return $.trim($(this).find('.tooltiptext').html()); + }, + template:template, + html:true + }).tooltip('show'); + + $objTooltip.data('setObjTooltip', true); + }); + }); +} + +jQuery(function($){ + initTooltip(); +}); \ No newline at end of file diff --git a/js/entrance.js b/js/entrance.js index 7a369025..60651717 100644 --- a/js/entrance.js +++ b/js/entrance.js @@ -2,7 +2,7 @@ var serverListTemplate = "\ \ \ <%korName%>섭
\ - \ + \ \ - 폐 쇄 중 -\ \ @@ -96,12 +96,15 @@ function Entrance_drawServerList(serverInfos){ var game= result.game; //TODO: 서버 폐쇄 방식을 새롭게 변경 $serverHtml.find('.server_down').detach(); + var serverTime = '%s ~ %s'.format(game.startFrom) if(game.isUnited == 2){ $serverHtml.find('.n_country').html('§천하통일§'); + $serverHtml.find('.server_date').html('{0}
~ {1}'.format(game.starttime, game.turntime)); } else{ $serverHtml.find('.n_country').html('<{0}국 경쟁중>'.format(game.nationCnt)); + $serverHtml.find('.server_date').html('{0} ~'.format(game.starttime)); } $serverHtml.append( @@ -131,7 +134,7 @@ function Entrance_drawServerList(serverInfos){ ); } - + initTooltip($serverHtml); }); }); } From f6d16883de04d02206d923123496843d2931b8a4 Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 4 May 2019 17:05:48 +0900 Subject: [PATCH 24/33] =?UTF-8?q?=EC=84=9C=EB=B2=84=20=EA=B8=B0=EA=B0=84?= =?UTF-8?q?=20=ED=91=9C=EA=B8=B0=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/entrance.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/js/entrance.js b/js/entrance.js index 60651717..1a5b0191 100644 --- a/js/entrance.js +++ b/js/entrance.js @@ -1,8 +1,9 @@ var serverListTemplate = "\ \ - \ + \ <%korName%>섭
\ - \ + \ + \ \ - 폐 쇄 중 -\ \ From e33d8776bc03334ba055ba21156b6b6a256a9363 Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 4 May 2019 17:08:36 +0900 Subject: [PATCH 25/33] =?UTF-8?q?=EC=84=9C=EB=B2=84=20=EB=A3=A8=ED=8A=B8?= =?UTF-8?q?=20js=20include=20=EC=88=9C=EC=84=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- i_entrance/entrance.php | 2 +- i_entrance/user_info.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/i_entrance/entrance.php b/i_entrance/entrance.php index b2c7a7f3..f6c21591 100644 --- a/i_entrance/entrance.php +++ b/i_entrance/entrance.php @@ -30,9 +30,9 @@ $acl = $session->acl; - + diff --git a/i_entrance/user_info.php b/i_entrance/user_info.php index 4e4941e1..e0dd4f10 100644 --- a/i_entrance/user_info.php +++ b/i_entrance/user_info.php @@ -18,10 +18,10 @@ require(__dir__.'/../vendor/autoload.php'); - - + + From e1dbc46d8dc120cb767b95923a58b5f9de39d5ae Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 4 May 2019 18:33:09 +0900 Subject: [PATCH 26/33] =?UTF-8?q?=EC=9E=A5=EC=88=98=EC=9D=BC=EB=9E=8C=20AP?= =?UTF-8?q?I=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/func_converter.php | 17 +++--- hwe/func_process.php | 19 ++++--- hwe/j_get_general_list.php | 108 +++++++++++++++++++++++++++++++++++++ hwe/select_npc.php | 11 +++- 4 files changed, 141 insertions(+), 14 deletions(-) create mode 100644 hwe/j_get_general_list.php diff --git a/hwe/func_converter.php b/hwe/func_converter.php index f780cd9a..695bcb1a 100644 --- a/hwe/func_converter.php +++ b/hwe/func_converter.php @@ -174,13 +174,10 @@ function getGenSpecial($type) { return $call; } -function getSpecialInfo(?int $type):?string{ - if($type === null){ - return null; - } - +function getSpecialTextList():array{ + //앞칸은 '설명을 위해' '그냥' 적어둠 - $infoText = [ + return [ 0 => ['-', null], 1 => ['경작', '[내정] 농지 개간 : 기본 보정 +10%, 성공률 +10%p, 비용 -20%'], 2 => ['상재', '[내정] 상업 투자 : 기본 보정 +10%, 성공률 +10%p, 비용 -20%'], @@ -219,6 +216,14 @@ function getSpecialInfo(?int $type):?string{ 74 => ['격노', '[전투] 상대방 필살 및 회피 시도시 일정 확률로 격노(필살) 발동, 공격 시 일정 확률로 진노(1페이즈 추가)'], 75 => ['척사', '[전투] 지역·도시 병종 상대로 대미지 +10%, 아군 피해 -10%'] ]; +} + +function getSpecialInfo(?int $type):?string{ + if($type === null){ + return null; + } + + $infoText = getSpecialTextList(); return $infoText[$type][1]??null; } diff --git a/hwe/func_process.php b/hwe/func_process.php index 20e4f07f..6f197759 100644 --- a/hwe/func_process.php +++ b/hwe/func_process.php @@ -159,6 +159,17 @@ function CriticalRatioDomestic(&$general, $type) { ); } +function calcLeadershipBonus($generalLevel, $nationLevel):int{ + if($generalLevel == 12) { + $lbonus = $nationLevel * 2; + } elseif($generalLevel >= 5) { + $lbonus = $nationLevel; + } else { + $lbonus = 0; + } + return $lbonus; +} + /** * 수뇌직 통솔 보너스 계산 * @@ -168,13 +179,7 @@ function CriticalRatioDomestic(&$general, $type) { * @return int 계산된 $general['lbonus'] 값 */ function setLeadershipBonus(&$general, $nationLevel){ - if($general['level'] == 12) { - $lbonus = $nationLevel * 2; - } elseif($general['level'] >= 5) { - $lbonus = $nationLevel; - } else { - $lbonus = 0; - } + $lbonus = calcLeadershipBonus($general['level'], $nationLevel); $general['lbonus'] = $lbonus; return $lbonus; } diff --git a/hwe/j_get_general_list.php b/hwe/j_get_general_list.php new file mode 100644 index 00000000..76a3ac9d --- /dev/null +++ b/hwe/j_get_general_list.php @@ -0,0 +1,108 @@ +isGameLoggedIn()){ + increaseRefresh("장수일람", 2); + + $me = $db->queryFirstRow('SELECT con, turntime FROM general WHERE owner=%i', $userID); + $con = checkLimit($me['con']); + if ($con >= 2) { + Json::die([ + 'result'=>false, + 'reason'=>'접속 제한중입니다. 1턴 이내에 너무 많은 갱신을 하셨습니다.' + ]); + } +} +else{ + $availableNextCall = $session->availableNextCallGetGeneralList??'2000-01-01 00:00:00'; + $now = new \DateTimeImmutable(); + + if($now <= new \DateTimeImmutable($availableNextCall) && $session->userGrade < 5){ + Json::die([ + 'result'=>false, + 'reason'=>"장수 리스트는 10초에 한번 갱신 가능합니다.\n다음 시간 : ".$availableNextCall + ]); + } + + $availableNextCall = $now->add(new \DateInterval('PT1S'))->format('Y-m-d H:i:s'); + $session->availableNextCallGetGeneralList = $availableNextCall; +} + +$session->setReadOnly(); + +$rawGeneralList = $db->queryAllLists('SELECT owner,no,picture,imgsvr,npc,age,nation,special,special2,personal,name,name2,injury,leader,power,intel,experience,dedication,level,killturn,connect from general'); + +$ownerNameList = []; +if($gameStor->isunited){ + foreach(RootDB::db()->queryAllLists('SELECT no, name FROM member') as [$ownerID, $ownerName]){ + $ownerNameList[$ownerID] = $ownerName; + } +} + +$generalList = []; +foreach($rawGeneralList as $rawGeneral){ + [$owner,$no,$picture,$imgsvr,$npc,$age,$nation,$special,$special2,$personal,$name,$name2,$injury,$leader,$power,$intel,$experience,$dedication,$level,$killturn,$connect] = $rawGeneral; + + if(key_exists($owner, $ownerNameList)){ + $name2 = $ownerNameList[$owner]; + } + + $nationArr = getNationStaticInfo($nation); + $lbonus = calcLeadershipBonus($level, $nationArr['level']); + + $generalList[] = [ + $no, + $picture, + $imgsvr, + $npc, + $age, + $nationArr['name'], + SpecCall($special), + SpecCall($special2), + getGenChar($personal), + $name, + $name2, + $leader, + $lbonus, + $power, + $intel, + getHonor($experience), + getDed($dedication), + getLevel($level, $nationArr['level']), + $killturn, + $connect + ]; +} + +$result = [ + 'result'=>'true', + 'list'=>$generalList, +]; + +if($withToken){ + $result['list'][] ='aserasdrgtlkjsdrgltjsrdt1!!!!!!!!!!!!!!!!!!'; + $now = (new \DateTimeImmutable())->format('Y-m-d H:i:s'); + $tokens = []; + foreach($db->query('SELECT * FROM select_npc_token WHERE `valid_until`>=%s', $now) as $token){ + $validUntil = $token['valid_until']; + + foreach(Json::decode($token['pick_result']) as $pickResult){ + $tokens[$pickResult['no']]=$pickResult['keepCnt']; + } + } + $result['token'] = $tokens; +} + +Json::die($result); diff --git a/hwe/select_npc.php b/hwe/select_npc.php index 979bbf62..fef164d7 100644 --- a/hwe/select_npc.php +++ b/hwe/select_npc.php @@ -50,7 +50,16 @@ foreach (SpecialityConst::WAR as $id=>$values) { $specialAll['-'] = '없음'; echo Json::encode($specialAll); ?> -; +; +var characterInfo = +[$name, $info]){ + $characterAll[$name] = $info; +} +echo Json::encode($characterAll); +?> +; From a643182eeeedc036da3a2bb6733be2f666bf29da Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 4 May 2019 18:33:48 +0900 Subject: [PATCH 27/33] =?UTF-8?q?=EC=9E=A5=EC=88=98=20=EC=9D=BC=EB=9E=8C?= =?UTF-8?q?=20=EC=8B=9C=EA=B0=84=20=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/j_get_general_list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hwe/j_get_general_list.php b/hwe/j_get_general_list.php index 76a3ac9d..8dc211f6 100644 --- a/hwe/j_get_general_list.php +++ b/hwe/j_get_general_list.php @@ -36,7 +36,7 @@ else{ ]); } - $availableNextCall = $now->add(new \DateInterval('PT1S'))->format('Y-m-d H:i:s'); + $availableNextCall = $now->add(new \DateInterval('PT10S'))->format('Y-m-d H:i:s'); $session->availableNextCallGetGeneralList = $availableNextCall; } From d30a82448197a34058efa60ddec9a6f6580dc90c Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 4 May 2019 18:37:41 +0900 Subject: [PATCH 28/33] =?UTF-8?q?=EB=94=94=EB=B2=84=EA=B7=B8=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/j_get_general_list.php | 1 - 1 file changed, 1 deletion(-) diff --git a/hwe/j_get_general_list.php b/hwe/j_get_general_list.php index 8dc211f6..3ec55b1b 100644 --- a/hwe/j_get_general_list.php +++ b/hwe/j_get_general_list.php @@ -92,7 +92,6 @@ $result = [ ]; if($withToken){ - $result['list'][] ='aserasdrgtlkjsdrgltjsrdt1!!!!!!!!!!!!!!!!!!'; $now = (new \DateTimeImmutable())->format('Y-m-d H:i:s'); $tokens = []; foreach($db->query('SELECT * FROM select_npc_token WHERE `valid_until`>=%s', $now) as $token){ From 956dc82555634caa94fb6b76c02ef52eb3b061ef Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 4 May 2019 19:46:55 +0900 Subject: [PATCH 29/33] =?UTF-8?q?=EC=9E=A5=EC=88=98=20=EB=B9=99=EC=9D=98?= =?UTF-8?q?=EC=97=90=20=EC=9E=A5=EC=88=98=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EB=9D=84=EC=9B=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/j_get_general_list.php | 6 +- hwe/js/select_npc.js | 161 ++++++++++++++++++++++++++++++++++++- hwe/select_npc.php | 30 ++++++- 3 files changed, 191 insertions(+), 6 deletions(-) diff --git a/hwe/j_get_general_list.php b/hwe/j_get_general_list.php index 3ec55b1b..218692e2 100644 --- a/hwe/j_get_general_list.php +++ b/hwe/j_get_general_list.php @@ -69,15 +69,17 @@ foreach($rawGeneralList as $rawGeneral){ $npc, $age, $nationArr['name'], - SpecCall($special), - SpecCall($special2), + getGenSpecial($special), + getGenSpecial($special2), getGenChar($personal), $name, $name2, + $injury, $leader, $lbonus, $power, $intel, + getExpLevel($experience), getHonor($experience), getDed($dedication), getLevel($level, $nationArr['level']), diff --git a/hwe/js/select_npc.js b/hwe/js/select_npc.js index 773e9bf8..eb9bb5c6 100644 --- a/hwe/js/select_npc.js +++ b/hwe/js/select_npc.js @@ -16,6 +16,25 @@ var templateSpecial = \ '; +var templateGeneralRow = +'\ + \ + <%name%><%nameAux%>\ + <%age%>세\ + <%personalWithTooltip%>\ + <%specialDomesticWithTooltip%> / <%speicalWarWithTooltip%>\ + Lv <%explevel%>\ + <%nation%>\ + <%experience%>\ + <%dedication%>\ + <%level%>\ + <%total%>\ + <%leader%>\ + <%power%>\ + <%intel%>\ + <%killturn%>\ +'; + function pickGeneral(){ $btn = $(this); @@ -115,7 +134,6 @@ function printGenerals(value){ var $card = $(TemplateEngine(templateGeneralCard, cardData)); - console.log($card); $('.card_holder').append($card); $card.find('.select_btn').click(pickGeneral); @@ -131,7 +149,132 @@ function printGenerals(value){ updateOutdateTimer(); } +function printGeneralList(value){ + var tokenList = value.token; + var generalList = $.map(value.list, function(general){ + general = { + no:general[0], + picture:general[1], + imgsvr:general[2], + npc:general[3], + age:general[4], + nation:general[5], + special:general[6], + special2:general[7], + personal:general[8], + name:general[9], + name2:general[10], + injury:general[11], + leader:general[12], + lbonus:general[13], + power:general[14], + intel:general[15], + explevel:general[16], + experience:general[17], + dedication:general[18], + level:general[19], + killturn:general[20], + connect:general[21], + reserved:0 + }; + if(general.npc < 2){ + general.reserved = 2; + } + if(general.no in tokenList){ + general.reserved = 1; + } + + general.userCSS = ""; + general.nameAux = ""; + + if(general.reserved == 1){ + general.userCSS = 'color:violet'; + } + else if(general.npc >= 2){ + general.userCSS = 'color:cyan'; + } + else if(general.npc == 1){ + general.userCSS = 'color:skyblue'; + } + + if(general.name2){ + general.nameAux += '
({0})'.format(general.name2); + } + + if(general.reserved == 1){ + general.nameAux += '
({0}회)'.format(tokenList[general.no]); + } + + + general.total = general.leader + general.power + general.intel; + general.iconPath = getIconPath(general.imgsvr, general.picture); + + general.specialDomesticWithTooltip = TemplateEngine(templateSpecial, { + text:general.special, + info:specialInfo[general.special] + }); + + general.speicalWarWithTooltip = TemplateEngine(templateSpecial, { + text:general.special2, + info:specialInfo[general.special2] + }); + + general.personalWithTooltip = TemplateEngine(templateSpecial, { + text:general.personal, + info:characterInfo[general.personal] + }); + + return general; + }); + + generalList.sort(function(lhs, rhs){ + if(lhs.reserved > rhs.reserved){ + return -1; + } + if(lhs.reserved < rhs.reserved){ + return 1; + } + if(lhs.total != rhs.total){ + return rhs.total - lhs.total; + } + if(lhs.leader != rhs.leader){ + return rhs.leader - lhs.total; + } + + if(lhs.name < rhs.name){ + return -1; + } + if(lhs.name > rhs.name){ + return 1; + } + return 0; + }); + + window.generalList = generalList; + _printGeneralList(generalList); + + +} + +function _printGeneralList(generalList){ + var $generalTable = $('#general_list'); + $generalTable.empty(); + + $.each(generalList, function(idx, general){ + $generalTable.append(TemplateEngine(templateGeneralRow, general)); + }); + + $generalTable.find('.obj_tooltip').tooltip({ + title:function(){ + return $.trim($(this).find('.tooltiptext').html()); + }, + html:true + }); + $('#tb_general_list').show(); +} + $(function($){ +window.generalList = []; $.post('j_get_select_npc_token.php').then(function(value){ if(!value.result){ @@ -165,4 +308,20 @@ $('#btn_pick_more').click(function(){ }); }); +$('#btn_load_general_list').click(function(){ + $.post({ + url:'j_get_general_list.php', + dataType:'json', + data:{ + with_token:true + } + }).then(function(result){ + if(!result.result){ + alert(result.reason); + return false; + } + printGeneralList(result); + }); +}); + }); \ No newline at end of file diff --git a/hwe/select_npc.php b/hwe/select_npc.php index fef164d7..70ce5697 100644 --- a/hwe/select_npc.php +++ b/hwe/select_npc.php @@ -26,7 +26,7 @@ $nationList = $db->query('SELECT nation,`name`,color,scout,scoutmsg FROM nation <?=UniqueConst::$serverName?>: NPC빙의 - + @@ -72,7 +72,7 @@ echo Json::encode($characterAll); = $maxgeneral) { +if ($gencount>= $maxgeneral) { ?> @@ -103,8 +103,32 @@ history.go(-1);
-
+
+ + + + + + + + +
얼 굴 + 이 름 + 연령 + 성격 + 특기 + 레 벨 + 국 가 + 명 성 + 계 급 + 관 직 + 종능 + 통솔 + 무력 + 지력 + 삭턴 +
From a78fa98b3d23acab6a567ff4109bebfad72e29d5 Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 4 May 2019 20:01:17 +0900 Subject: [PATCH 30/33] =?UTF-8?q?=EC=9E=A5=EC=88=98=20=EB=AA=A9=EB=A1=9D?= =?UTF-8?q?=EC=97=90=20pagenation=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/js/select_npc.js | 31 ++++++++++++++++++++++++------- hwe/select_npc.php | 9 +++++++-- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/hwe/js/select_npc.js b/hwe/js/select_npc.js index eb9bb5c6..829d1162 100644 --- a/hwe/js/select_npc.js +++ b/hwe/js/select_npc.js @@ -251,18 +251,31 @@ function printGeneralList(value){ }); window.generalList = generalList; - _printGeneralList(generalList); - - + _printGeneralList(true); } -function _printGeneralList(generalList){ +function _printGeneralList(clear){ var $generalTable = $('#general_list'); - $generalTable.empty(); + if(clear){ + $generalTable.empty(); + $generalTable.data('lastIdx', 0); + $('#row_print_more').show(); + } - $.each(generalList, function(idx, general){ + generalList = window.generalList; + + var idxFrom = $generalTable.data('lastIdx'); + var idxTo = Math.min(idxFrom + 50, generalList.length); + $generalTable.data('lastIdx', idxTo); + + for(var idx = idxFrom; idx < idxFrom + 50; idx++){ + var general = generalList[idx]; $generalTable.append(TemplateEngine(templateGeneralRow, general)); - }); + } + + if(idxTo == generalList.length){ + $('#row_print_more').hide(); + } $generalTable.find('.obj_tooltip').tooltip({ title:function(){ @@ -324,4 +337,8 @@ $('#btn_load_general_list').click(function(){ }); }); +$('#btn_print_more').click(function(){ + _printGeneralList(); +}) + }); \ No newline at end of file diff --git a/hwe/select_npc.php b/hwe/select_npc.php index 70ce5697..4b805620 100644 --- a/hwe/select_npc.php +++ b/hwe/select_npc.php @@ -103,10 +103,10 @@ history.go(-1);
-
+
- +
+ + + + +
From ca33c3b2596efe26fc69df8170f888df755d1bc9 Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 4 May 2019 20:09:52 +0900 Subject: [PATCH 31/33] =?UTF-8?q?=EB=B9=99=EC=9D=98=EC=97=90=20=EC=95=BD?= =?UTF-8?q?=EA=B0=84=EC=9D=98=20=ED=8E=B8=EC=9D=98=EC=84=B1=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/js/select_npc.js | 6 +++++- hwe/select_npc.php | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/hwe/js/select_npc.js b/hwe/js/select_npc.js index 829d1162..a3e07b1f 100644 --- a/hwe/js/select_npc.js +++ b/hwe/js/select_npc.js @@ -4,7 +4,7 @@ var templateGeneralCard =

\

<%leader%> / <%power%> / <%intel%>
\ <%specialText%> / <%special2Text%>

\ - \ + \ \ '; @@ -38,6 +38,10 @@ var templateGeneralRow = function pickGeneral(){ $btn = $(this); + if (!confirm('빙의할까요? : {0}'.format($btn.data('name')))) { + return false; + } + $.post({ url:'j_select_npc.php', dataType:'json', diff --git a/hwe/select_npc.php b/hwe/select_npc.php index 4b805620..70bc418f 100644 --- a/hwe/select_npc.php +++ b/hwe/select_npc.php @@ -102,11 +102,11 @@ history.go(-1);
-
+

- +\ +\ \