Compare commits

..
33 Commits
Author SHA1 Message Date
Hide_D e731371ab1 빙의 선택 시 성격과 국가 표기 2019-05-04 20:41:27 +09:00
Hide_D 5559693cb3 entrance 띄어쓰기 장수 전콘 문제 수정 2019-05-04 20:28:41 +09:00
Hide_D ca33c3b259 빙의에 약간의 편의성 추가 2019-05-04 20:09:52 +09:00
Hide_D a78fa98b3d 장수 목록에 pagenation 추가 2019-05-04 20:01:17 +09:00
Hide_D 956dc82555 장수 빙의에 장수 리스트 띄움 2019-05-04 19:46:55 +09:00
Hide_D d30a824481 디버그 코드 제거 2019-05-04 18:37:41 +09:00
Hide_D a643182eee 장수 일람 시간 문제 수정 2019-05-04 18:33:48 +09:00
Hide_D e1dbc46d8d 장수일람 API 생성 2019-05-04 18:33:09 +09:00
Hide_D e33d8776bc 서버 루트 js include 순서 변경 2019-05-04 17:08:36 +09:00
Hide_D f6d16883de 서버 기간 표기 수정 2019-05-04 17:05:48 +09:00
Hide_D 51bdd3bbfd 서버가 열린 경우 서버가 열린 기간을 표기하도록 수정 2019-05-04 17:03:03 +09:00
Hide_D 8f9ae78b8c 서버 리셋 권한자는 서버 시작, 또는 천통시 닫을 수 있음 2019-05-04 16:38:44 +09:00
Hide_D 584b7b8e45 영릉 장사 구지도 복구 2019-05-04 16:18:53 +09:00
Hide_D f74e903f1f 병종 전콘 문제 수정 2019-05-02 01:20:45 +09:00
Hide_D 4cedf112f5 sidebar 다시 제거 2019-05-02 00:53:09 +09:00
Hide_D d607a8da0f chess 맵 테스트로 추가, 전차전 php 코드 버그 수정 2019-05-02 00:50:40 +09:00
Hide_D 84a12e28df 지도 등을 추가할 경우 css, js를 새로 설정하는 기능 추가 2019-05-02 00:50:24 +09:00
Hide_D 54aa47d1a8 충차전 기본 코드 추가 2019-05-01 14:55:42 +09:00
Hide_D faaee4b945 충차전 코드 준비 2019-05-01 14:41:06 +09:00
Hide_D 0b46303f9f 시간이 지날 수록 접경 수도 농상, 성수의 디버프가 생김 2019-05-01 03:08:46 +09:00
Hide_D b98668bc60 부대장 삭턴 계산 방식 일부 변경 2019-05-01 02:57:48 +09:00
Hide_D 947e8e9512 코드 버그 수정 2019-05-01 02:47:27 +09:00
Hide_D 681918cb63 유니크 획득시 골고루 획득하도록 변경 2019-05-01 02:42:23 +09:00
Hide_D d0fae44430 도시 목록에도 전콘을 띄워줌 2019-05-01 02:33:49 +09:00
Hide_D 3e752461e8 스마트폰이더라도 neutralView(도시선택모드)에서는 두번선택 해제 2019-05-01 02:21:06 +09:00
Hide_D 1a9e6f3b1a m장 의병장 초 강화! 2019-05-01 02:06:51 +09:00
Hide_D 580275a8cf 로그인 버그 수정 2019-05-01 01:52:50 +09:00
Hide_D ee74771f16 부대장 이름을 정렬하기에 편리하도록 수정 2019-05-01 01:51:49 +09:00
Hide_D 81fa97d3ee 에러 로그 강화 2019-04-30 23:20:39 +09:00
Hide_D ae8b94b2d7 redirect 변경 2019-04-23 12:03:36 +09:00
Hide_D 7670d55f3c 갱신 되돌림.. 2019-04-23 11:05:09 +09:00
Hide_D 528ab4e203 갱신방식 변경 2019-04-23 11:01:42 +09:00
Hide_D cf1dc90137 갱신 버튼 변경 2019-04-23 10:59:03 +09:00
51 changed files with 1763 additions and 138 deletions
+4
View File
@@ -164,4 +164,8 @@ a.samButton.disabled {
.samCommandButton.disabled > .samButtonOuter > .samButtonInner::after{
content:'】'
}
.tooltiptext {
display: none;
}
+14 -2
View File
@@ -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)
);
+117
View File
@@ -0,0 +1,117 @@
<?php
namespace sammo;
require(__dir__.'/../vendor/autoload.php');
$session = Session::requireLogin([])->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
]);
}
+3 -1
View File
@@ -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
+6 -20
View File
@@ -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;
}
+1 -1
View File
@@ -87,4 +87,4 @@ case "락풀기":
break;
}
header('Location:_119.php');
header('Location:_119.php', true, 303);
+1
View File
@@ -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,
+2 -2
View File
@@ -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();
}
+5 -5
View File
@@ -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);
+14 -14
View File
@@ -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);
+1 -1
View File
@@ -63,4 +63,4 @@ if($btn == "부 대 창 설" && $name != "" && $me['troop'] == 0) {
}
}
header('Location:b_troop.php');
header('Location:b_troop.php', true, 303);
+1 -1
View File
@@ -17,5 +17,5 @@ $db->update('general', [
], 'owner=%i', $userID);
header('location:b_myPage.php');
header('location:b_myPage.php', true, 303);
+2 -2
View File
@@ -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');
header('location:a_vote.php', true, 303);
-11
View File
@@ -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;*/
}
+7 -1
View File
@@ -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 > 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) {
case 0: $type = "weap"; break;
case 1: $type = "book"; break;
+3 -3
View File
@@ -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) {
+11 -6
View File
@@ -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;
}
+1 -1
View File
@@ -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;
+3 -1
View File
@@ -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']);
}
+38 -13
View File
@@ -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;
}
@@ -273,8 +278,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 +583,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;
}
}
}
// 성격 보정
+25 -6
View File
@@ -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),"");
+26 -7
View File
@@ -389,32 +389,51 @@ function process_29(&$general) {
$alllog[] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} <Y>$name</>{$josaRa}는 <C>인재</>를 {$scoutType}하였습니다!";
pushGeneralHistory($general, "<C>●</>{$admin['year']}{$admin['month']}월:<Y>$name</>{$josaRa}는 <C>인재</>를 {$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),"");
-7
View File
@@ -326,13 +326,6 @@ else if($session->userGrade == 4){
</div></div>
<div style="clear:left;"><?=allButton()?><?=banner()?></div>
</div>
<div id='sidebar' class='btn-group-vertical'>
<button type="button" class="btn btn-primary" onclick='refreshing(this, 0,0)'><i class="fas fa-sync-alt"></i>&nbsp;갱신</button>
<a class="btn btn-secondary" href="#map_position" role="button">지도 & 턴입력</a>
<a class="btn btn-secondary" href="#history_position" role="button">장수 동향</a>
<a class="btn btn-secondary" href="#public_talk_position" role="button">국가 메시지</a>
<a class="btn btn-secondary" href="#secret_talk_position" role="button">개인 메시지</a>
</div>
<?php
if ($con == 1) {
MessageBox("접속제한이 얼마 남지 않았습니다!");
+109
View File
@@ -0,0 +1,109 @@
<?php
namespace sammo;
include "lib.php";
include "func.php";
//로그인 검사
$session = Session::requireLogin();
$userID = Session::getUserID();
$db = DB::db();
$withToken = Util::getReq('with_token', 'bool', false);
$gameStor = KVStorage::getStorage($db, 'game_env');
if($session->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('PT10S'))->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'],
getGenSpecial($special),
getGenSpecial($special2),
getGenChar($personal),
$name,
$name2,
$injury,
$leader,
$lbonus,
$power,
$intel,
getExpLevel($experience),
getHonor($experience),
getDed($dedication),
getLevel($level, $nationArr['level']),
$killturn,
$connect
];
}
$result = [
'result'=>'true',
'list'=>$generalList,
];
if($withToken){
$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);
+3 -1
View File
@@ -90,9 +90,11 @@ if($token && !$refresh){
$candidates = [];
$weight = [];
foreach($db->query('SELECT `no`, `name`, leader, power, intel, imgsvr, picture, special, special2 FROM general WHERE npc=2') as $general){
foreach($db->query('SELECT `no`, `name`, leader, power, nation, personal, intel, imgsvr, picture, special, special2 FROM general WHERE npc=2') as $general){
$general['special'] = \sammo\SpecialityConst::DOMESTIC[$general['special']][0]??'-';
$general['special2'] = \sammo\SpecialityConst::WAR[$general['special2']][0]??'-';
$general['personal'] = getGenChar($general['personal']);
$general['nation'] = getNationStaticInfo($general['nation'])['name'];
$candidates[$general['no']] = $general + ['keepCnt'=>KEEP_CNT];
$allStat = $general['leader'] + $general['power'] + $general['intel'];
$weight[$general['no']] = pow($allStat, 1.5);
+3 -1
View File
@@ -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']);
+1 -1
View File
@@ -26,7 +26,7 @@ function refreshing(obj, arg1, arg2) {
}
// if(term <= 0) {
switch(arg1) {
case 0: location.reload(); break;
case 0: document.location.reload(); break;
case 2: turn(arg2); break;
case 3: arg2.submit(); break;
case 4:
+1 -1
View File
@@ -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;
+194 -2
View File
@@ -3,8 +3,10 @@ var templateGeneralCard =
<h4 class="bg1 with_border"><%name%></h4>\
<h4><img src="<%iconPath%>" height=64 width=64></h4>\
<p><%leader%> / <%power%> / <%intel%><br>\
<%nation%><br>\
<%personalText%><br>\
<%specialText%> / <%special2Text%></p>\
<button type="subject" class="with_skin with_border select_btn" value="<%no%>" name="pick">빙의하기</button>\
<button type="subject" class="with_skin with_border select_btn" data-name="<%name%>" value="<%no%>" name="pick">빙의하기</button>\
<label><input <%keepCnt?"":disabled="disabled"%> type="checkbox" value="<%no%>" name="keep[]" class="keep_select">보관(<%keepCnt%>회)</label>\
</div>';
@@ -16,9 +18,32 @@ var templateSpecial =
</span>\
';
var templateGeneralRow =
'<tr>\
<td><img class="generalIcon" width="64" height="64" src="<%iconPath%>"></td>\
<td style="<%userCSS%>"><%name%><%nameAux%></td>\
<td><%age%>세</td>\
<td><%personalWithTooltip%></td>\
<td><%specialDomesticWithTooltip%> / <%speicalWarWithTooltip%></td>\
<td>Lv <%explevel%></td>\
<td><%nation%></td>\
<td><%experience%></td>\
<td><%dedication%></td>\
<td><%level%></td>\
<td><%total%></td>\
<td><%leader%></td>\
<td><%power%></td>\
<td><%intel%></td>\
<td><%killturn%></td>\
</tr>';
function pickGeneral(){
$btn = $(this);
if (!confirm('빙의할까요? : {0}'.format($btn.data('name')))) {
return false;
}
$.post({
url:'j_select_npc.php',
dataType:'json',
@@ -112,10 +137,19 @@ function printGenerals(value){
else{
cardData.special2Text = cardData.special2;
}
if(cardData.personal in characterInfo){
cardData.personalText = TemplateEngine(templateSpecial, {
text:cardData.personal,
info:characterInfo[cardData.personal]
});
}
else{
cardData.personalText = cardData.personal;
}
var $card = $(TemplateEngine(templateGeneralCard, cardData));
console.log($card);
$('.card_holder').append($card);
$card.find('.select_btn').click(pickGeneral);
@@ -131,7 +165,145 @@ 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 += '<br><small>({0})</small>'.format(general.name2);
}
if(general.reserved == 1){
general.nameAux += '<br><small>({0}회)</small>'.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(true);
}
function _printGeneralList(clear){
var $generalTable = $('#general_list');
if(clear){
$generalTable.empty();
$generalTable.data('lastIdx', 0);
$('#row_print_more').show();
}
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(){
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 +337,24 @@ $('#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);
});
});
$('#btn_print_more').click(function(){
_printGeneralList();
})
});
+2 -1
View File
@@ -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');
+1 -1
View File
@@ -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();
}
+2 -2
View File
@@ -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) {
+2 -2
View File
@@ -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, ['오', '산월']],
+83
View File
@@ -0,0 +1,83 @@
<?php
namespace sammo;
class CityConst extends CityConstBase{
public static $regionMap = [
'킹'=>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"]]
];
}
+718
View File
@@ -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":[
"<C>●</>180년 1월:<L><b>【이벤트】</b></>제작자: 세정.",
"<C>●</>180년 1월:<L><b>【가상모드11】 삼국지11 영웅 난무</>",
"<C>●</>180년 1월:<L><b>【이벤트】</b></>당대의 대표 세력들이 등장합니다."
],
"initialEvents":[
],
"events":[
]
}
+38
View File
@@ -0,0 +1,38 @@
{
"title":"【공백지】 충차전",
"startYear":180,
"map":{
"mapName":"che",
"unitSet":"siegetank"
},
"stat":{
"chiefMin":9
},
"history": [
"<C>●</>180년 1월:<L><b>【이벤트】</b></>병기로 싸운다! 최고의 충차 지휘관을 가린다"
],
"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":[
]
}
+79
View File
@@ -0,0 +1,79 @@
<?php
namespace sammo;
class GameUnitConst extends GameUnitConstBase
{
const DEFAULT_CREWTYPE = 0;
protected static $_buildData = [
[
-1, self::T_CASTLE, '성벽',
100, 100, 7, 0, 0, 99, 9,
999999, null, null, 999999,
[],//성벽은 공격할 수 없다.
[self::T_FOOTMAN=>1.2],
['성벽입니다.','생성할 수 없습니다.']
],
[
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],
[self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8],
['표준적인 보병입니다.','보병은 방어특화이며, 상대가 회피하기 어렵습니다.']
],
[
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],
[self::T_CAVALRY=>0.8, self::T_FOOTMAN=>1.2, self::T_SIEGE=>0.8],
['표준적인 궁병입니다.','궁병은 회피특화입니다.']
],
[
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],
[self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2, self::T_SIEGE=>0.8],
['표준적인 기병입니다.','기병은 공격특화입니다.']
],
[
30, 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],
['계략을 사용하는 병종입니다.']
],
[
35, 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],
['전투를 포기하고 계략에 몰두합니다.']
],
[
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],
[self::T_FOOTMAN=>1.2, self::T_ARCHER=>1.2, self::T_CAVALRY=>1.2, self::T_WIZARD=>1.2],
['높은 구조물 위에서 공격합니다.']
],
[
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],
[self::T_FOOTMAN=>1.2, self::T_ARCHER=>1.2, self::T_CAVALRY=>1.2, self::T_WIZARD=>1.2],
['엄청난 위력으로 성벽을 부수어버립니다.']
]
];
}
+94
View File
@@ -0,0 +1,94 @@
<?php
namespace sammo;
class GameUnitConst extends GameUnitConstBase
{
const DEFAULT_CREWTYPE = 40;
protected static $_buildData = [
[
-1, self::T_CASTLE, '성벽',
100, 100, 7, 0, 0, 99, 9,
999999, null, null, 999999,
[],//성벽은 공격할 수 없다.
[self::T_FOOTMAN=>1.2],
['성벽입니다.','생성할 수 없습니다.']
],
[
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],
['표준적인 보병입니다.','보병은 방어특화이며, 상대가 회피하기 어렵습니다.']
],
[
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],
['표준적인 궁병입니다.','궁병은 회피특화입니다.']
],
[
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],
['표준적인 기병입니다.','기병은 공격특화입니다.']
],
[
30, self::T_WIZARD, '귀병',
80, 80, 7, 5, 0.5, 18, 18,
0, null, null, 0,
[],
[],
['계략을 사용하는 병종입니다.']
],
[
35, self::T_WIZARD, '남귀병',
60, 60, 7, 10, 0.8, 16, 16,
1000, null, null, 0,
[],
[],
['전투를 포기하고 계략에 몰두합니다.']
],
[
40, self::T_SIEGE, '정란',
100, 100, 6, 0, 0, 7, 3,
0, null, null, 0,
[self::T_CASTLE=>1.8],
[],
['높은 구조물 위에서 공격합니다.']
],
[
41, self::T_SIEGE, '충차',
150, 100, 6, 0, 0, 10, 3,
1000, null, null, 3,
[self::T_CASTLE=>2.4],
[],
['엄청난 위력으로 성벽을 부수어버립니다.']
],
[
42, self::T_SIEGE, '벽력거',
200, 100, 6, 0, 0, 20, 4,
3000, ['업'], null, 0,
[self::T_CASTLE=>1.8],
[],
['상대에게 돌덩이를 날립니다.']
],
[
43, self::T_SIEGE, '목우',
50, 200, 5, 0, 0, 15, 3,
3000, ['성도'], null, 0,
[],
[],
['상대를 저지하는 특수병기입니다.']
]
];
}
+43 -5
View File
@@ -26,7 +26,7 @@ $nationList = $db->query('SELECT nation,`name`,color,scout,scoutmsg FROM nation
<title><?=UniqueConst::$serverName?>: NPC빙의</title>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<meta name="viewport" content="style='width:1024" />
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('../css/config.css')?>
@@ -50,7 +50,16 @@ foreach (SpecialityConst::WAR as $id=>$values) {
$specialAll['-'] = '없음';
echo Json::encode($specialAll);
?>
;
;
var characterInfo =
<?php
$characterAll = [];
foreach(getCharacterList() as $id=>[$name, $info]){
$characterAll[$name] = $info;
}
echo Json::encode($characterAll);
?>
;
</script>
<?=WebUtil::printJS('../d_shared/common_path.js')?>
@@ -63,7 +72,7 @@ echo Json::encode($specialAll);
<?php
if ($gencount >= $maxgeneral) {
if ($gencount>= $maxgeneral) {
?>
<body>
@@ -93,9 +102,38 @@ history.go(-1);
<form class="card_holder">
</form>
</div>
<div class="with_border legacy_layout" style="text-align:center">
<button id="btn_pick_more" disabled="disabled" class="with_skin with_border">다른 장수 보기</button><br>
<div class="with_border legacy_layout" style="text-align:center; padding-top:20px; padding-bottom:20px;">
<button type="button" id="btn_pick_more" disabled="disabled" class="with_skin with_border">다른 장수 보기</button><button type="button" id="btn_load_general_list" class="with_skin with_border" style='margin-left:2ch;'>장수 목록 보기</button><br>
</div>
<table style='width:970px;table-layout: fixed;display:none; margin-bottom:20px;' class="tb_layout bg0" id='tb_general_list'>
<thead>
<tr class='bg1'>
<th style='width:64px;'>얼 굴</td>
<th style='width:140px;'>이 름</td>
<th style='width:40px;'>연령</td>
<th style='width:40px;'>성격</td>
<th style='width:80px;'>특기</td>
<th style='width:45px;'>레 벨</td>
<th style='width:140px;'>국 가</td>
<th style='width:50px;'>명 성</td>
<th style='width:50px;'>계 급</td>
<th style='width:75px;'>관 직</td>
<th style='width:60px;'>종능</td>
<th style='width:45px;'>통솔</td>
<th style='width:45px;'>무력</td>
<th style='width:45px;'>지력</td>
<th style='width:45px;'>삭턴</td>
</tr>
</thead>
<tbody id='general_list'>
</tbody>
<tfoot id='row_print_more' style='display:none;'>
<tr>
<td colspan="15"><button type="button" class="with_skin with_border" id="btn_print_more" style="width:100%;">장수 더 보기</button></td>
</tr>
</tfoot>
</table>
<div class="with_border legacy_layout"><?=backButton()?></div>
<div class="with_border legacy_layout"><?=banner()?></div>
</div>
+1 -1
View File
@@ -20,7 +20,7 @@
data-general-nation="<?=$nation?>"
data-general-nation-name="<?=$nationName?>"
>
<td height="64"></td>
<td height="64"><img class='generalIcon' width='64' height='64' src='<?=$iconPath?>'></td>
<td><?=$nameText?></td>
<td><?=$leadershipText?><?=$leadershipBonusText?></td>
<td><?=$powerText?></td>
+2 -2
View File
@@ -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);
+1 -1
View File
@@ -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);
+1 -1
View File
@@ -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);
+1 -1
View File
@@ -30,9 +30,9 @@ $acl = $session->acl;
<?=WebUtil::printCSS('../css/entrance.css')?>
<!-- 액션 -->
<?=WebUtil::printJS('../js/common.js')?>
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
<?=WebUtil::printJS('../js/common.js')?>
<?=WebUtil::printJS('../js/func.js')?>
<?=WebUtil::printJS('../js/entrance.js')?>
+33 -1
View File
@@ -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 구현
+2 -2
View File
@@ -18,10 +18,10 @@ require(__dir__.'/../vendor/autoload.php');
<?=WebUtil::printCSS('../css/user_info.css')?>
<!-- 액션 -->
<?=WebUtil::printJS('../d_shared/common_path.js')?>
<?=WebUtil::printJS('../js/common.js')?>
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
<?=WebUtil::printJS('../d_shared/common_path.js')?>
<?=WebUtil::printJS('../js/common.js')?>
<?=WebUtil::printJS('../e_lib/sha512.min.js')?>
<?=WebUtil::printJS('../e_lib/moment.min.js')?>
<?=WebUtil::printJS('../js/func.js')?>
+1 -1
View File
@@ -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', [
+1 -1
View File
@@ -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);
}
});
});
+48 -1
View File
@@ -141,4 +141,51 @@ function quickReject(errMsg){
var deferred = $.Deferred();
deferred.reject(errMsg);
return deferred.promise();
}
}
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 = '<div class="tooltip {0}" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>'
.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();
});
+7 -3
View File
@@ -1,8 +1,9 @@
var serverListTemplate = "\
<tr class='server_item bg0 server_name_<%name%>' data-server='<%name%>'>\
<td class='server_name'>\
<td class='server_name obj_tooltip' data-toggle='tooltip' data-placement='bottom'>\
<span style='font-weight:bold;font-size:1.4em;color:<%color%>'><%korName%>섭</span><br>\
<span class='n_country'></span>\
<span class='tooltiptext server_date'></span>\
</td>\
<td colspan='4' class='server_down'>- 폐 쇄 중 -</td>\
</tr>\
@@ -35,7 +36,7 @@ var serverCreateTemplate = "\
";
var serverLoginTemplate = "\
<td style='background:url(<%picture%>);background-size: 64px 64px;'></td>\
<td style='background:url(\"<%picture%>\");background-size: 64px 64px;'></td>\
<td><%name%></td>\
<td class='ignore_border'>\
<a href='<%serverPath%>/'><button class='general_login with_skin'>입장</button></a>\
@@ -96,12 +97,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} <br>~ {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 +135,7 @@ function Entrance_drawServerList(serverInfos){
);
}
initTooltip($serverHtml);
});
});
}
+7 -1
View File
@@ -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', [
<div class="card-body">
<div class="card-title"><?=htmlspecialchars($err['errstr'])?></div>
<ul class="list-group list-group-flush">
<?php if($err['errpath']): ?>
<li class="list-group-item"><?=htmlspecialchars($err['errpath'])?></li>
<?php endif; ?>
<?php foreach(Json::decode($err['trace']) as $trace): ?>
<li class="list-group-item"><?=htmlspecialchars($trace)?></li>
<?php endforeach; ?>
<li class="list-group-item"><?=htmlspecialchars($err['webuser'])?></li>
</ul>
</div>
</div>