diff --git a/css/config.css b/css/config.css index aa3cdf0f..f5b02819 100644 --- a/css/config.css +++ b/css/config.css @@ -164,4 +164,8 @@ a.samButton.disabled { .samCommandButton.disabled > .samButtonOuter > .samButtonInner::after{ content:'】' +} + +.tooltiptext { + display: none; } \ No newline at end of file diff --git a/f_install/j_update_js_css_path.php b/f_install/j_update_js_css_path.php new file mode 100644 index 00000000..27b4fc10 --- /dev/null +++ b/f_install/j_update_js_css_path.php @@ -0,0 +1,117 @@ +setReadOnly(); +if($session->userGrade < 6){ + Json::die([ + 'result'=>false, + 'reason'=>'관리자 아님' + ]); +} + +$servHost = Util::getReq('serv_host'); +$sharedIconPath = Util::getReq('shared_icon_path'); +$gameImagePath = Util::getReq('game_image_path'); + +if($servHost){ + if(!$sharedIconPath || $gameImagePath){ + Json::die([ + 'result'=>false, + 'reason'=>'serv_host가 지정된 경우, sharedIconPath와 gameImagePath가 모두 지정되어야합니다.' + ]); + } + + $sharedIconPath = WebUtil::resolveRelativePath($sharedIconPath, $servHost); + $gameImagePath = WebUtil::resolveRelativePath($gameImagePath, $servHost); + + $result = Util::generateFileUsingSimpleTemplate( + __dir__.'/templates/ServConfig.orig.php', + ROOT.'/d_setting/ServConfig.php', + [ + 'serverBasePath'=>$servHost, + 'sharedIconPath'=>$sharedIconPath, + 'gameImagePath'=>$gameImagePath + ], + true + ); + + if ($result !== true) { + Json::die([ + 'result'=>false, + 'reason'=>$result + ]); + } +} +else if($sharedIconPath || $gameImagePath){ + $servHost = ServConfig::$serverWebPath; + if($sharedIconPath){ + $sharedIconPath = WebUtil::resolveRelativePath($sharedIconPath, $servHost); + } + else{ + $sharedIconPath = ServConfig::$sharedIconPath; + } + + if($gameImagePath){ + $gameImagePath = WebUtil::resolveRelativePath($gameImagePath, $servHost); + } + else{ + $gameImagePath = ServConfig::$gameImagePath; + } + + $result = Util::generateFileUsingSimpleTemplate( + __dir__.'/templates/ServConfig.orig.php', + ROOT.'/d_setting/ServConfig.php', + [ + 'serverBasePath'=>$servHost, + 'sharedIconPath'=>$sharedIconPath, + 'gameImagePath'=>$gameImagePath + ], + true + ); + + if ($result !== true) { + Json::die([ + 'result'=>false, + 'reason'=>$result + ]); + } +} +else{ + $servHost = ServConfig::$serverWebPath; + $sharedIconPath = ServConfig::$sharedIconPath; + $gameImagePath = ServConfig::$gameImagePath; +} + + + +$result = Util::generateFileUsingSimpleTemplate( + __dir__.'/templates/common_path.orig.js', + ROOT.'/d_shared/common_path.js', + [ + 'serverBasePath'=>$servHost, + 'sharedIconPath'=>$sharedIconPath, + 'gameImagePath'=>$gameImagePath + ], + true +); + + +$result = Util::generateFileUsingSimpleTemplate( + __dir__.'/templates/common.orig.css', + ROOT.'/d_shared/common.css', + [ + 'serverBasePath'=>$servHost, + 'sharedIconPath'=>$sharedIconPath, + 'gameImagePath'=>$gameImagePath + ], + true +); + +if ($result !== true) { + Json::die([ + 'result'=>false, + 'reason'=>$result + ]); +} diff --git a/f_install/templates/common.orig.css b/f_install/templates/common.orig.css index 0af1ec74..d3b58b00 100644 --- a/f_install/templates/common.orig.css +++ b/f_install/templates/common.orig.css @@ -99,28 +99,14 @@ background-size: 700px 500px; } -.map_theme_ludo_rathowm.map_detail.map_spring .map_title_text{ - background: - url('_tK_gameImagePath_/spring.gif') no-repeat right; -} - -.map_theme_ludo_rathowm.map_detail.map_summer .map_title_text{ - background: - url('_tK_gameImagePath_/summer.gif') no-repeat right; -} - -.map_theme_ludo_rathowm.map_detail.map_fall .map_title_text{ - background: - url('_tK_gameImagePath_/fall.gif') no-repeat right; -} - -.map_theme_ludo_rathowm.map_detail.map_winter .map_title_text{ - background: - url('_tK_gameImagePath_/winter.gif') no-repeat right; -} - .world_map.map_theme_ludo_rathowm .map_title .map_title_text::before { color:white; content:'LP'; margin-right:1ch; +} + +/*체스판 지도*/ +.map_theme_chess .map_bglayer1{ + background: url('_tK_gameImagePath_/map/chess/chessboard.png') no-repeat; + background-size: 700px 500px; } \ No newline at end of file diff --git a/hwe/_119_b.php b/hwe/_119_b.php index 841b0409..dac24a98 100644 --- a/hwe/_119_b.php +++ b/hwe/_119_b.php @@ -92,4 +92,4 @@ case "락풀기": break; } -header('Location:_119.php'); \ No newline at end of file +header('Location:_119.php', true, 303); \ No newline at end of file diff --git a/hwe/b_currentCity.php b/hwe/b_currentCity.php index d9cc86b6..e5eb61bd 100644 --- a/hwe/b_currentCity.php +++ b/hwe/b_currentCity.php @@ -302,6 +302,7 @@ for($j=0; $j < $gencount; $j++) { $generalsFormat[] = [ 'ourGeneral'=>$ourGeneral, + 'iconPath'=>GetImageURL($general['imgsvr']).'/'.$general['picture'], 'isNPC'=>$isNPC, 'wounded'=>$wounded, 'name'=>$name, diff --git a/hwe/c_dipcenter.php b/hwe/c_dipcenter.php index 1e7c0b1d..d1531dac 100644 --- a/hwe/c_dipcenter.php +++ b/hwe/c_dipcenter.php @@ -23,11 +23,11 @@ $me = $db->queryFirstRow('SELECT `no`,nation,`level`,permission,penalty FROM gen //내가 수뇌부이어야함 $permission = checkSecretPermission($me); if($permission < 0){ - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } else if ($me['level'] < 5 && $permission != 4) { - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } diff --git a/hwe/c_myBossInfo.php b/hwe/c_myBossInfo.php index 57251af6..8dcccfba 100644 --- a/hwe/c_myBossInfo.php +++ b/hwe/c_myBossInfo.php @@ -32,7 +32,7 @@ $ruler = MYDB_fetch_array($result); //수뇌가 아니면 아무것도 할 수 없음 if($meLevel < 5){ - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } @@ -45,18 +45,18 @@ if($btn == "임명") { } if($genlist != 0 && !$general){ - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } //임명할사람이 군주이면 불가, 내가 수뇌부이어야함, 공석아닌때는 국가가 같아야함 if($meLevel < 5 || ($genlist != 0 && $general['nation'] != $me['nation']) || ($genlist != 0 && $general['level'] == 12)) { - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } } elseif($btn == "추방") { if(!$outlist){ - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } $query = "select no,name,gold,rice,nation,troop,level,npc,picture,imgsvr,permission,penalty,belong from general where no='$outlist'"; @@ -64,33 +64,33 @@ if($btn == "임명") { $general = MYDB_fetch_array($result); if(!$general){ - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } //추방할사람이 군주이면 불가, 내가 수뇌부이어야함, 공석아닌때는 국가가 같아야함 if($general['level'] == 12 || $meLevel < 5 || ($general['nation'] != $me['nation'] && $outlist != 0)) { - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } //추방할사람이 외교권자이면 불가 $permission = checkSecretPermission($general); if($permission == 4){ - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } //NPC 부대장 추방 불가 if($general['npc'] == 5){ - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } } //나와 대상 장수는 국가가 같아야 함 if($genlist != 0 && $me['nation'] != $general['nation']){ - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); exit(); } @@ -242,7 +242,7 @@ if($btn == "추방") { pushGenLog($general, $log); pushGeneralPublicRecord($alllog, $year, $month); } - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); die(); } @@ -287,7 +287,7 @@ if($btn == "임명" && $level >= 5 && $level <= 11) { } } } - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); die(); } @@ -303,7 +303,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]; @@ -350,11 +350,11 @@ if($btn == "임명" && $level >= 2 && $level <= 4 && $citylist > 0) { } } } - header('location:b_myBossInfo.php'); + header('location:b_myBossInfo.php', true, 303); die(); } -header('location:b_myBossInfo.php'); +header('location:b_myBossInfo.php', true, 303); diff --git a/hwe/c_troop.php b/hwe/c_troop.php index bfee5ed1..6b1159a2 100644 --- a/hwe/c_troop.php +++ b/hwe/c_troop.php @@ -64,4 +64,4 @@ if($btn == "부 대 창 설" && $name != "" && $me['troop'] == 0) { } } -header('Location:b_troop.php'); +header('Location:b_troop.php', true, 303); diff --git a/hwe/c_vacation.php b/hwe/c_vacation.php index 8c825335..f6efa0d4 100644 --- a/hwe/c_vacation.php +++ b/hwe/c_vacation.php @@ -17,5 +17,5 @@ $db->update('general', [ ], 'owner=%i', $userID); -header('location:b_myPage.php'); +header('location:b_myPage.php', true, 303); diff --git a/hwe/c_vote.php b/hwe/c_vote.php index e5737202..0c102425 100644 --- a/hwe/c_vote.php +++ b/hwe/c_vote.php @@ -48,7 +48,7 @@ else if($btn == "댓글" && trim($comment) != "") { } if(!$isVoteAdmin){ - header('location:a_vote.php'); + header('location:a_vote.php', true, 303); die(); } @@ -86,4 +86,4 @@ if($btn == "수정") { $gameStor->voteopen = 2; } -header('location:a_vote.php'); \ No newline at end of file +header('location:a_vote.php', true, 303); \ No newline at end of file diff --git a/hwe/css/main.css b/hwe/css/main.css index 093b4eb5..29d2e937 100644 --- a/hwe/css/main.css +++ b/hwe/css/main.css @@ -85,4 +85,4 @@ color:white; #sidebar button{ /*width:100px;*/ -} \ No newline at end of file +} diff --git a/hwe/func.php b/hwe/func.php index 39336fb3..ae93013d 100644 --- a/hwe/func.php +++ b/hwe/func.php @@ -1612,7 +1612,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; diff --git a/hwe/func_converter.php b/hwe/func_converter.php index fb474510..4982e0c3 100644 --- a/hwe/func_converter.php +++ b/hwe/func_converter.php @@ -146,13 +146,24 @@ 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%'], + 3 => ['발명', '[내정] 기술 연구 : 기본 보정 +10%, 성공률 +10%p, 비용 -20%'], + + 10 => ['축성', '[내정] 성벽 보수 : 기본 보정 +10%, 성공률 +10%p, 비용 -20%'], + 11 => ['수비', '[내정] 수비 강화 : 기본 보정 +10%, 성공률 +10%p, 비용 -20%'], + 12 => ['통찰', '[내정] 치안 강화 : 기본 보정 +10%, 성공률 +10%p, 비용 -20%'], + + 20 => ['인덕', '[내정] 주민 선정·정착 장려 : 기본 보정 +10%, 성공률 +10%p, 비용 -20%'], + + 30 => ['거상', '이것 저것'], + 31 => ['귀모', '[계략] 화계·탈취·파괴·선동 : 성공률 +20%p'], + 40 => ['귀병', '[군사] 귀병 계통 징·모병비 -10%
[전투] 계략 성공 확률 +20%p'], 41 => ['신산', '[계략] 화계·탈취·파괴·선동 : 성공률 +10%p
[전투] 계략 시도 확률 +20%p, 계략 성공 확률 +20%p '], 42 => ['환술', '[전투] 계략 성공 확률 +10%p, 계략 성공 시 대미지 +30%'], @@ -177,6 +188,14 @@ function getSpecialInfo(?int $type):?string{ 74 => ['격노', '[전투] 상대방 필살 및 회피 시도시 일정 확률로 격노(필살) 발동, 공격 시 일정 확률로 진노(1페이즈 추가)'], 75 => ['척사', '[전투] 지역·도시 병종 상대로 대미지 +10%, 아군 피해 -10%'] ]; +} + +function getSpecialInfo(?int $type):?string{ + if($type === null){ + return null; + } + + $infoText = getSpecialTextList(); return $infoText[$type][1]??null; } diff --git a/hwe/func_gamerule.php b/hwe/func_gamerule.php index 8755cbff..f46a38e6 100644 --- a/hwe/func_gamerule.php +++ b/hwe/func_gamerule.php @@ -975,7 +975,7 @@ function updateNationState() { while($assemblerCnt < $maxAssemblerCnt){ $lastAssemblerID += 1; $npcObj = new Scenario\NPC( - 999, '부대장'.$lastAssemblerID, null, $nation['nation'], null, + 999, sprintf('부대장%4d',$lastAssemblerID), null, $nation['nation'], null, 10, 10, 10, 1, $admin['year'] - 15, $admin['year'] + 15, '은둔', '척사' ); $npcObj->npc = 5; diff --git a/hwe/func_process.php b/hwe/func_process.php index 20c62bf0..b4515d84 100644 --- a/hwe/func_process.php +++ b/hwe/func_process.php @@ -166,6 +166,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; +} + /** * 수뇌직 통솔 보너스 계산 * @@ -175,13 +186,7 @@ function CriticalRatioDomestic($general, $type) { * @return int 계산된 $general['lbonus'] 값 */ function setLeadershipBonus(&$general, $nationLevel){ - if($general['level'] == 12) { - $lbonus = $nationLevel * 2; - } elseif($general['level'] >= 5) { - $lbonus = $nationLevel; - } else { - $lbonus = 0; - } + $lbonus = calcLeadershipBonus($general['level'], $nationLevel); $general['lbonus'] = $lbonus; return $lbonus; } diff --git a/hwe/func_process_chief.php b/hwe/func_process_chief.php index 1a55e87f..dc2e3736 100644 --- a/hwe/func_process_chief.php +++ b/hwe/func_process_chief.php @@ -1472,7 +1472,9 @@ function process_76(&$general) { $avgGenNum = $db->queryFirstField('SELECT avg(gennum) FROM nation'); $addGenCount = 5 + Util::round($avgGenNum / 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; @@ -1483,25 +1485,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; } // 국내 최고능치 기준으로 랜덤성 스케일링 @@ -1574,7 +1593,7 @@ function process_76(&$general) { '1','100','100','0','".GameUnitConst::DEFAULT_CREWTYPE."','0','0','0', '0','0','0','$turntime','$killturn','{$avgGen['age']}','1','$personal','0','0','0','0','', '0','$bornyear','$deadyear', - '{$avgGen['dex_t']}','{$avgGen['dex_t']}','{$avgGen['dex_t']}','{$avgGen['dex_t']}','{$avgGen['dex40']}' + '{$dexVal[0]}','{$dexVal[1]}','{$dexVal[2]}','{$dexVal[3]}','{$avgGen['dex40']}' )", $connect ) or Error(__LINE__.MYDB_error($connect),""); diff --git a/hwe/func_process_personnel.old.php b/hwe/func_process_personnel.old.php index 44cb7995..ad84b547 100644 --- a/hwe/func_process_personnel.old.php +++ b/hwe/func_process_personnel.old.php @@ -383,32 +383,51 @@ function process_29(&$general) { $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} $name{$josaRa}는 인재를 {$scoutType}하였습니다!"; pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:$name{$josaRa}는 인재를 {$scoutType}"); - $avgGen = $db->queryFirstRow('SELECT max(leader+power+intel) as lpi, avg(dedication) as ded,avg(experience) as exp, avg(dex0+dex10+dex20+dex30) / 4 as dex_t, avg(dex40) as dex40 from general where npc < 5 and nation = %i', $general['nation']); + $avgGen = $db->queryFirstRow('SELECT max(leader+power+intel) as lpi, avg(dedication) as ded,avg(experience) as exp, avg(dex0+dex10+dex20+dex30) as dex_t, avg(dex40) as dex40 from general where npc < 5 and nation = %i', $general['nation']); + + $dexTotal = $avgGen['dex_t']; //무장 40%, 지장 40%, 무지장 20% $stat_tier1 = GameConst::$defaultStatMax - 10 + rand()%11; $stat_tier3 = GameConst::$defaultStatMin + rand()%6; $stat_tier2 = GameConst::$defaultStatTotal - $stat_tier1 - $stat_tier3; $type = Util::choiceRandomUsingWeight([ - 'power'=>4, - 'intel'=>4, - 'neutral'=>2 + 'power0'=>2, + 'power1'=>2, + 'power2'=>2, + 'intel'=>6, + 'neutral'=>3 ]); switch($type){ - case 'power': + case 'power0': $leader = $stat_tier1; $power = $stat_tier2; $intel = $stat_tier3; + $dexVal = [$dexTotal*5/8, $dexTotal/8, $dexTotal/8, $dexTotal/8]; + break; + case 'power1': + $leader = $stat_tier1; + $power = $stat_tier2; + $intel = $stat_tier3; + $dexVal = [$dexTotal/8, $dexTotal*5/8, $dexTotal/8, $dexTotal/8]; + break; + case 'power2': + $leader = $stat_tier1; + $power = $stat_tier2; + $intel = $stat_tier3; + $dexVal = [$dexTotal/8, $dexTotal/8, $dexTotal*5/8, $dexTotal/8]; break; case 'intel': $leader = $stat_tier1; $power = $stat_tier3; $intel = $stat_tier2; + $dexVal = [$dexTotal/8, $dexTotal/8, $dexTotal/8, $dexTotal*5/8]; break; - case 'neutral': + default: $leader = $stat_tier3; $power = $stat_tier1; $intel = $stat_tier2; + $dexVal = [$dexTotal/4, $dexTotal/4, $dexTotal/4, $dexTotal/4]; break; } @@ -491,7 +510,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),""); diff --git a/hwe/index.php b/hwe/index.php index ac10a14c..be288749 100644 --- a/hwe/index.php +++ b/hwe/index.php @@ -331,13 +331,6 @@ else if($session->userGrade == 4){
- 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); diff --git a/hwe/j_get_select_npc_token.php b/hwe/j_get_select_npc_token.php index e97ec514..53918826 100644 --- a/hwe/j_get_select_npc_token.php +++ b/hwe/j_get_select_npc_token.php @@ -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, intel, nation, imgsvr, picture, personal, special, special2 FROM general WHERE npc=2') as $general){ $general['special'] = (getGeneralSpecialDomesticClass($general['special']))::$name; $general['special2'] = (getGeneralSpecialWarClass($general['special2']))::$name; + $general['personal'] = (getPersonalityClass($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); diff --git a/hwe/j_server_basic_info.php b/hwe/j_server_basic_info.php index 40a89e5f..32913687 100644 --- a/hwe/j_server_basic_info.php +++ b/hwe/j_server_basic_info.php @@ -63,11 +63,13 @@ if(file_exists(__dir__.'/.htaccess')){ //TODO: 천통시에도 예약 오픈 알림이 필요..? -$admin = $gameStor->getValues(['isunited', 'npcmode', 'year', 'month', 'scenario', 'scenario_text', 'maxgeneral', 'turnterm']); +$admin = $gameStor->getValues(['isunited', 'npcmode', 'year', 'month', 'scenario', 'scenario_text', 'maxgeneral', 'turnterm', 'starttime', 'turntime']); $admin['maxUserCnt'] = $admin['maxgeneral']; $admin['npcMode'] = $admin['npcmode']; $admin['turnTerm'] = $admin['turnterm']; $admin['isUnited'] = $admin['isunited']; +$admin['starttime'] = substr($admin['starttime'], 5, 11); +$admin['turntime'] = substr($admin['turntime'], 5, 11); unset($admin['npcmode']); unset($admin['maxgeneral']); unset($admin['turnterm']); diff --git a/hwe/js/map.js b/hwe/js/map.js index b1c49e67..9ddbbda0 100644 --- a/hwe/js/map.js +++ b/hwe/js/map.js @@ -385,7 +385,7 @@ function reloadWorldMap(option){ //터치스크린 탭 - if(is_touch_device()){ + if(!option.neutralView && is_touch_device()){ $objs.on('touchstart', function(e){ if(window.sam_toggleSingleTap){ return true; diff --git a/hwe/js/select_npc.js b/hwe/js/select_npc.js index 773e9bf8..b563a755 100644 --- a/hwe/js/select_npc.js +++ b/hwe/js/select_npc.js @@ -3,8 +3,10 @@ var templateGeneralCard =

<%name%>

\

\

<%leader%> / <%power%> / <%intel%>
\ + <%nation%>
\ + <%personalText%>
\ <%specialText%> / <%special2Text%>

\ - \ + \ \ '; @@ -16,9 +18,32 @@ var templateSpecial = \ '; +var templateGeneralRow = +'\ + \ + <%name%><%nameAux%>\ + <%age%>세\ + <%personalWithTooltip%>\ + <%specialDomesticWithTooltip%> / <%speicalWarWithTooltip%>\ + Lv <%explevel%>\ + <%nation%>\ + <%experience%>\ + <%dedication%>\ + <%level%>\ + <%total%>\ + <%leader%>\ + <%power%>\ + <%intel%>\ + <%killturn%>\ +'; + function pickGeneral(){ $btn = $(this); + 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 += '
({0})'.format(general.name2); + } + + if(general.reserved == 1){ + general.nameAux += '
({0}회)'.format(tokenList[general.no]); + } + + + general.total = general.leader + general.power + general.intel; + general.iconPath = getIconPath(general.imgsvr, general.picture); + + general.specialDomesticWithTooltip = TemplateEngine(templateSpecial, { + text:general.special, + info:specialInfo[general.special] + }); + + general.speicalWarWithTooltip = TemplateEngine(templateSpecial, { + text:general.special2, + info:specialInfo[general.special2] + }); + + general.personalWithTooltip = TemplateEngine(templateSpecial, { + text:general.personal, + info:characterInfo[general.personal] + }); + + return general; + }); + + generalList.sort(function(lhs, rhs){ + if(lhs.reserved > rhs.reserved){ + return -1; + } + if(lhs.reserved < rhs.reserved){ + return 1; + } + if(lhs.total != rhs.total){ + return rhs.total - lhs.total; + } + if(lhs.leader != rhs.leader){ + return rhs.leader - lhs.total; + } + + if(lhs.name < rhs.name){ + return -1; + } + if(lhs.name > rhs.name){ + return 1; + } + return 0; + }); + + window.generalList = generalList; + _printGeneralList(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(); +}) + }); \ No newline at end of file diff --git a/hwe/preprocessing.php b/hwe/preprocessing.php index 5bf2a194..4d708909 100644 --- a/hwe/preprocessing.php +++ b/hwe/preprocessing.php @@ -16,7 +16,7 @@ $commandtype = Util::getReq('commandtype', 'int'); increaseRefresh("턴입력", 1); if(!$turn || $commandtype === null || $sel === null){ - header('location:commandlist.php'); + header('location:commandlist.php', true, 303); die(); } diff --git a/hwe/processing.php b/hwe/processing.php index e8c88ee2..3f424e88 100644 --- a/hwe/processing.php +++ b/hwe/processing.php @@ -9,7 +9,7 @@ $commandtype = Util::getReq('commandtype', 'int'); $turn = Util::getReq('turn', 'array_int'); if(!$turn || $commandtype === null){ - header('location:commandlist.php'); + header('location:commandlist.php', true, 303); die(); } @@ -191,7 +191,7 @@ function command_99($turn) { _setNationCommand($me['nation'], $me['level'], range(0, $turn - 1), 'che_휴식'); } - header('location:b_chiefcenter.php'); + header('location:b_chiefcenter.php', true, 303); } function command_11($turn, $command, bool $is모병 = false) { diff --git a/hwe/sammo/CityConstBase.php b/hwe/sammo/CityConstBase.php index 4b99bdf1..f83c2bb8 100644 --- a/hwe/sammo/CityConstBase.php +++ b/hwe/sammo/CityConstBase.php @@ -70,7 +70,7 @@ class CityConstBase{ [11, '수춘', '대', 5143, 99, 96, 80, 99, 95, '중원', 395, 270, ['서주', '여남', '초', '합비']], [12, '서주', '대', 4853,101, 98, 80,102, 97, '중원', 440, 250, ['수춘', '하비', '초', '패']], [13, '강릉', '대', 4850,105, 96, 80, 95, 96, '초', 245, 335, ['장사', '무릉', '이릉', '장판']], - [14, '장사', '대', 4710, 97, 99, 80,100,105, '초', 255, 375, ['강릉', '시상', '계양', '무릉']], + [14, '장사', '대', 4710, 97, 99, 80,100,105, '초', 255, 375, ['강릉', '시상', '계양', '무릉', '영릉']], [15, '시상', '대', 5252, 98,100,100, 99, 96, '오월', 360, 360, ['장사', '여강', '고창', '적벽', '파양']], [16, '위례', '대', 4926,100, 93, 80, 98,103, '동이', 620, 145, ['평양', '사비', '계림', '안평', '동황']], [17, '계', '중', 3885, 75, 80, 60, 78, 81, '하북', 365, 35, ['진양', '역경']], @@ -110,7 +110,7 @@ class CityConstBase{ [51, '신야', '소', 2786, 60, 62, 40, 58, 55, '초', 250, 260, ['양양', '완', '상용']], [52, '강하', '소', 3074, 55, 56, 40, 57, 60, '초', 315, 295, ['장판', '적벽']], [53, '무릉', '소', 3196, 58, 63, 40, 63, 58, '초', 195, 355, ['강릉', '장사', '영릉']], - [54, '영릉', '소', 2849, 62, 58, 40, 62, 62, '초', 190, 395, ['계양', '남영', '무릉']], + [54, '영릉', '소', 2849, 62, 58, 40, 62, 62, '초', 190, 395, ['계양', '남영', '무릉', '장사']], [55, '상동', '소', 2767, 58, 59, 40, 62, 58, '초', 210, 435, ['남해', '계양', '고창']], [56, '여강', '소', 2905, 56, 58, 40, 60, 55, '오월', 380, 315, ['시상', '합비', '적벽', '파양']], [57, '회계', '소', 3005, 64, 59, 40, 62, 64, '오월', 480, 395, ['오', '산월']], diff --git a/hwe/scenario/map/chess.php b/hwe/scenario/map/chess.php new file mode 100644 index 00000000..14af8ace --- /dev/null +++ b/hwe/scenario/map/chess.php @@ -0,0 +1,83 @@ +1,1=>'킹', + '퀸'=>2,2=>'퀸', + '룩'=>3,3=>'룩', + '나이트'=>4,4=>'나이트', + '비숍'=>5,5=>'비숍', + '폰'=>6,6=>'폰', + '빈칸'=>7,7=>'빈칸', + ]; + + protected static $initCity = [ + //id, 도시, 규모, 인구, 농, 상, 치, 성, 수,(x100)지역, x, y, 연결도시 + [ 1, "A1", "중", 8000, 80, 80, 80, 80, 80, "룩", 350.2, 420.2, ["A2", "B1", "B2"]], + [ 2, "B1", "중", 8000, 80, 80, 80, 80, 80, "나이트", 392.7, 395.6, ["A1", "A2", "B2", "C1", "C2"]], + [ 3, "C1", "중", 8000, 80, 80, 80, 80, 80, "비숍", 435.2, 371.1, ["B1", "B2", "C2", "D1", "D2"]], + [ 4, "D1", "특", 12000, 120, 120, 120, 120, 120, "킹", 477.7, 346.5, ["C1", "C2", "D2", "E1", "E2"]], + [ 5, "E1", "대", 10000, 100, 100, 100, 100, 100, "퀸", 520.2, 322.0, ["D1", "D2", "E2", "F1", "F2"]], + [ 6, "F1", "중", 8000, 80, 80, 80, 80, 80, "비숍", 562.7, 297.5, ["E1", "E2", "F2", "G1", "G2"]], + [ 7, "G1", "중", 8000, 80, 80, 80, 80, 80, "나이트", 605.2, 272.9, ["F1", "F2", "G2", "H1", "H2"]], + [ 8, "H1", "중", 8000, 80, 80, 80, 80, 80, "룩", 647.7, 248.4, ["G1", "G2", "H2"]], + [ 9, "A2", "소", 6000, 60, 60, 60, 60, 60, "폰", 307.7, 395.6, ["A1", "A3", "B1", "B2", "B3"]], + [10, "B2", "소", 6000, 60, 60, 60, 60, 60, "폰", 350.2, 371.1, ["A1", "A2", "A3", "B1", "B3", "C1", "C2", "C3"]], + [11, "C2", "소", 6000, 60, 60, 60, 60, 60, "폰", 392.7, 346.5, ["B1", "B2", "B3", "C1", "C3", "D1", "D2", "D3"]], + [12, "D2", "소", 6000, 60, 60, 60, 60, 60, "폰", 435.2, 322.0, ["C1", "C2", "C3", "D1", "D3", "E1", "E2", "E3"]], + [13, "E2", "소", 6000, 60, 60, 60, 60, 60, "폰", 477.7, 297.5, ["D1", "D2", "D3", "E1", "E3", "F1", "F2", "F3"]], + [14, "F2", "소", 6000, 60, 60, 60, 60, 60, "폰", 520.2, 272.9, ["E1", "E2", "E3", "F1", "F3", "G1", "G2", "G3"]], + [15, "G2", "소", 6000, 60, 60, 60, 60, 60, "폰", 562.7, 248.4, ["F1", "F2", "F3", "G1", "G3", "H1", "H2", "H3"]], + [16, "H2", "소", 6000, 60, 60, 60, 60, 60, "폰", 605.2, 223.8, ["G1", "G2", "G3", "H1", "H3"]], + [17, "A3", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 265.2, 371.1, ["A2", "A4", "B2", "B3", "B4"]], + [18, "B3", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 307.7, 346.5, ["A2", "A3", "A4", "B2", "B4", "C2", "C3", "C4"]], + [19, "C3", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 350.2, 322.0, ["B2", "B3", "B4", "C2", "C4", "D2", "D3", "D4"]], + [20, "D3", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 392.7, 297.5, ["C2", "C3", "C4", "D2", "D4", "E2", "E3", "E4"]], + [21, "E3", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 435.2, 272.9, ["D2", "D3", "D4", "E2", "E4", "F2", "F3", "F4"]], + [22, "F3", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 477.7, 248.4, ["E2", "E3", "E4", "F2", "F4", "G2", "G3", "G4"]], + [23, "G3", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 520.2, 223.8, ["F2", "F3", "F4", "G2", "G4", "H2", "H3", "H4"]], + [24, "H3", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 562.7, 199.3, ["G2", "G3", "G4", "H2", "H4"]], + [25, "A4", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 222.7, 346.5, ["A3", "A5", "B3", "B4", "B5"]], + [26, "B4", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 265.2, 322.0, ["A3", "A4", "A5", "B3", "B5", "C3", "C4", "C5"]], + [27, "C4", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 307.7, 297.5, ["B3", "B4", "B5", "C3", "C5", "D3", "D4", "D5"]], + [28, "D4", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 350.2, 272.9, ["C3", "C4", "C5", "D3", "D5", "E3", "E4", "E5"]], + [29, "E4", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 392.7, 248.4, ["D3", "D4", "D5", "E3", "E5", "F3", "F4", "F5"]], + [30, "F4", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 435.2, 223.8, ["E3", "E4", "E5", "F3", "F5", "G3", "G4", "G5"]], + [31, "G4", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 477.7, 199.3, ["F3", "F4", "F5", "G3", "G5", "H3", "H4", "H5"]], + [32, "H4", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 520.2, 174.8, ["G3", "G4", "G5", "H3", "H5"]], + [33, "A5", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 180.2, 322.0, ["A4", "A6", "B4", "B5", "B6"]], + [34, "B5", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 222.7, 297.5, ["A4", "A5", "A6", "B4", "B6", "C4", "C5", "C6"]], + [35, "C5", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 265.2, 272.9, ["B4", "B5", "B6", "C4", "C6", "D4", "D5", "D6"]], + [36, "D5", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 307.7, 248.4, ["C4", "C5", "C6", "D4", "D6", "E4", "E5", "E6"]], + [37, "E5", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 350.2, 223.8, ["D4", "D5", "D6", "E4", "E6", "F4", "F5", "F6"]], + [38, "F5", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 392.7, 199.3, ["E4", "E5", "E6", "F4", "F6", "G4", "G5", "G6"]], + [39, "G5", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 435.2, 174.8, ["F4", "F5", "F6", "G4", "G6", "H4", "H5", "H6"]], + [40, "H5", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 477.7, 150.2, ["G4", "G5", "G6", "H4", "H6"]], + [41, "A6", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 137.7, 297.5, ["A5", "A7", "B5", "B6", "B7"]], + [42, "B6", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 180.2, 272.9, ["A5", "A6", "A7", "B5", "B7", "C5", "C6", "C7"]], + [43, "C6", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 222.7, 248.4, ["B5", "B6", "B7", "C5", "C7", "D5", "D6", "D7"]], + [44, "D6", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 265.2, 223.8, ["C5", "C6", "C7", "D5", "D7", "E5", "E6", "E7"]], + [45, "E6", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 307.7, 199.3, ["D5", "D6", "D7", "E5", "E7", "F5", "F6", "F7"]], + [46, "F6", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 350.2, 174.8, ["E5", "E6", "E7", "F5", "F7", "G5", "G6", "G7"]], + [47, "G6", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 392.7, 150.2, ["F5", "F6", "F7", "G5", "G7", "H5", "H6", "H7"]], + [48, "H6", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 435.2, 125.7, ["G5", "G6", "G7", "H5", "H7"]], + [49, "A7", "소", 6000, 60, 60, 60, 60, 60, "폰", 95.2, 272.9, ["A6", "A8", "B6", "B7", "B8"]], + [50, "B7", "소", 6000, 60, 60, 60, 60, 60, "폰", 137.7, 248.4, ["A6", "A7", "A8", "B6", "B8", "C6", "C7", "C8"]], + [51, "C7", "소", 6000, 60, 60, 60, 60, 60, "폰", 180.2, 223.8, ["B6", "B7", "B8", "C6", "C8", "D6", "D7", "D8"]], + [52, "D7", "소", 6000, 60, 60, 60, 60, 60, "폰", 222.7, 199.3, ["C6", "C7", "C8", "D6", "D8", "E6", "E7", "E8"]], + [53, "E7", "소", 6000, 60, 60, 60, 60, 60, "폰", 265.2, 174.8, ["D6", "D7", "D8", "E6", "E8", "F6", "F7", "F8"]], + [54, "F7", "소", 6000, 60, 60, 60, 60, 60, "폰", 307.7, 150.2, ["E6", "E7", "E8", "F6", "F8", "G6", "G7", "G8"]], + [55, "G7", "소", 6000, 60, 60, 60, 60, 60, "폰", 350.2, 125.7, ["F6", "F7", "F8", "G6", "G8", "H6", "H7", "H8"]], + [56, "H7", "소", 6000, 60, 60, 60, 60, 60, "폰", 392.7, 101.1, ["G6", "G7", "G8", "H6", "H8"]], + [57, "A8", "중", 6000, 60, 60, 60, 60, 60, "룩", 52.7, 248.4, ["A7", "B7", "B8"]], + [58, "B8", "중", 8000, 80, 80, 80, 80, 80, "나이트", 95.2, 223.8, ["A7", "A8", "B7", "C7", "C8"]], + [59, "C8", "중", 8000, 80, 80, 80, 80, 80, "비숍", 137.7, 199.3, ["B7", "B8", "C7", "D7", "D8"]], + [60, "D8", "특", 8000, 80, 80, 80, 80, 80, "킹", 180.2, 174.8, ["C7", "C8", "D7", "E7", "E8"]], + [61, "E8", "대", 12000, 120, 120, 120, 120, 120, "퀸", 222.7, 150.2, ["D7", "D8", "E7", "F7", "F8"]], + [62, "F8", "중", 10000, 100, 100, 100, 100, 100, "비숍", 265.2, 125.7, ["E7", "E8", "F7", "G7", "G8"]], + [63, "G8", "중", 8000, 80, 80, 80, 80, 80, "나이트", 307.7, 101.1, ["F7", "F8", "G7", "H7", "H8"]], + [64, "H8", "중", 8000, 80, 80, 80, 80, 80, "룩", 350.2, 76.6, ["G7", "G8", "H7"]] + ]; +} \ No newline at end of file diff --git a/hwe/scenario/scenario_2121.json b/hwe/scenario/scenario_2121.json new file mode 100644 index 00000000..5a32cf63 --- /dev/null +++ b/hwe/scenario/scenario_2121.json @@ -0,0 +1,718 @@ +{ + "title":"【가상모드12-x】 삼국지11 영웅 난무(체스 지도)", + "life":1, + "fiction":1, + "nation":[ + ], + "diplomacy":[ + ], + "stat":{ + "total":220, + "min":40, + "max":95, + "npcMax":95 + }, + "const":{ + "defaultMaxGeneral":800 + }, + "map":{ + "mapName":"chess", + "unitSet":"basic" + }, + "general":[ + [0, "가규", -1, 0, null, 78, 61, 84, 0, 160, 250, null, null], + [0, "가범", -1, 0, null, 60, 62, 73, 0, 160, 250, null, null], + [0, "가충", -1, 0, null, 54, 31, 89, 0, 160, 250, null, null], + [0, "가화", -1, 0, null, 49, 65, 41, 0, 160, 250, null, null], + [0, "가후", -1, 0, null, 86, 48, 97, 0, 160, 250, null, null], + [0, "간옹", -1, 0, null, 20, 32, 74, 0, 160, 250, null, null], + [0, "감녕", -1, 0, null, 86, 94, 76, 0, 160, 250, null, null], + [0, "감택", -1, 0, null, 43, 49, 83, 0, 160, 250, null, null], + [0, "강유", -1, 0, null, 90, 86, 90, 0, 160, 250, null, null], + [0, "건석", -1, 0, null, 16, 7, 78, 0, 160, 250, null, null], + [0, "견희", -1, 0, null, 94, 76, 93, 0, 160, 250, null, null], + [0, "견초", -1, 0, null, 72, 69, 73, 0, 160, 250, null, null], + [0, "견홍", -1, 0, null, 70, 74, 66, 0, 160, 250, null, null], + [0, "계옹", -1, 0, null, 63, 52, 41, 0, 160, 250, null, null], + [0, "고간", -1, 0, null, 74, 56, 48, 0, 160, 250, null, null], + [0, "고담", -1, 0, null, 33, 23, 70, 0, 160, 250, null, null], + [0, "고당융", -1, 0, null, 35, 24, 76, 0, 160, 250, null, null], + [0, "고람", -1, 0, null, 76, 82, 66, 0, 160, 250, null, null], + [0, "고상", -1, 0, null, 68, 68, 52, 0, 160, 250, null, null], + [0, "고순", -1, 0, null, 85, 86, 55, 0, 160, 250, null, null], + [0, "고승", -1, 0, null, 67, 73, 41, 0, 160, 250, null, null], + [0, "고옹", -1, 0, null, 43, 18, 80, 0, 160, 250, null, null], + [0, "고유", -1, 0, null, 57, 43, 71, 0, 160, 250, null, null], + [0, "고정", -1, 0, null, 55, 63, 43, 0, 160, 250, null, null], + [0, "고패", -1, 0, null, 66, 61, 69, 0, 160, 250, null, null], + [0, "공도", -1, 0, null, 59, 70, 23, 0, 160, 250, null, null], + [0, "공손강", -1, 0, null, 72, 66, 61, 0, 160, 250, null, null], + [0, "공손공", -1, 0, null, 39, 17, 68, 0, 160, 250, null, null], + [0, "공손도", -1, 0, null, 67, 71, 63, 0, 160, 250, null, null], + [0, "공손범", -1, 0, null, 73, 69, 64, 0, 160, 250, null, null], + [0, "공손속", -1, 0, null, 63, 68, 54, 0, 160, 250, null, null], + [0, "공손연", -1, 0, null, 65, 70, 56, 0, 160, 250, null, null], + [0, "공손월", -1, 0, null, 74, 72, 47, 0, 160, 250, null, null], + [0, "공손찬", -1, 0, null, 84, 83, 70, 0, 160, 250, null, null], + [0, "공융", -1, 0, null, 30, 5, 72, 0, 160, 250, null, null], + [0, "공주", -1, 0, null, 26, 16, 68, 0, 160, 250, null, null], + [0, "공지", -1, 0, null, 43, 53, 61, 0, 160, 250, null, null], + [0, "곽가", -1, 0, null, 60, 15, 98, 0, 160, 250, null, null], + [0, "곽도", -1, 0, null, 52, 50, 82, 0, 160, 250, null, null], + [0, "곽마", -1, 0, null, 68, 71, 47, 0, 160, 250, null, null], + [0, "곽사", -1, 0, null, 64, 76, 13, 0, 160, 250, null, null], + [0, "곽원", -1, 0, null, 66, 73, 36, 0, 160, 250, null, null], + [0, "곽유지", -1, 0, null, 13, 9, 68, 0, 160, 250, null, null], + [0, "곽익", -1, 0, null, 73, 69, 69, 0, 160, 250, null, null], + [0, "곽준", -1, 0, null, 80, 66, 73, 0, 160, 250, null, null], + [0, "곽혁", -1, 0, null, 21, 29, 70, 0, 160, 250, null, null], + [0, "곽회", -1, 0, null, 87, 78, 81, 0, 160, 250, null, null], + [0, "관구검", -1, 0, null, 78, 74, 52, 0, 160, 250, null, null], + [0, "관구수", -1, 0, null, 58, 62, 33, 0, 160, 250, null, null], + [0, "관구전", -1, 0, null, 63, 60, 69, 0, 160, 250, null, null], + [0, "관색", -1, 0, null, 74, 88, 52, 0, 160, 250, null, null], + [0, "관우", -1, 0, null, 95, 97, 75, 0, 160, 250, null, null], + [0, "관이", -1, 0, null, 50, 62, 44, 0, 160, 250, null, null], + [0, "관정", -1, 0, null, 36, 52, 72, 0, 160, 250, null, null], + [0, "관통", -1, 0, null, 63, 60, 61, 0, 160, 250, null, null], + [0, "관평", -1, 0, null, 77, 82, 68, 0, 160, 250, null, null], + [0, "관해", -1, 0, null, 70, 82, 10, 0, 160, 250, null, null], + [0, "관흥", -1, 0, null, 76, 86, 62, 0, 160, 250, null, null], + [0, "괴량", -1, 0, null, 68, 33, 88, 0, 160, 250, null, null], + [0, "괴월", -1, 0, null, 47, 27, 82, 0, 160, 250, null, null], + [0, "교모", -1, 0, null, 54, 45, 69, 0, 160, 250, null, null], + [0, "교수", -1, 0, null, 64, 69, 38, 0, 160, 250, null, null], + [0, "교현", -1, 0, null, 12, 6, 66, 0, 160, 250, null, null], + [0, "구건", -1, 0, null, 39, 52, 65, 0, 160, 250, null, null], + [0, "구본", -1, 0, null, 50, 41, 67, 0, 160, 250, null, null], + [0, "구성", -1, 0, null, 55, 70, 38, 0, 160, 250, null, null], + [0, "국연", -1, 0, null, 50, 19, 71, 0, 160, 250, null, null], + [0, "국의", -1, 0, null, 82, 78, 51, 0, 160, 250, null, null], + [0, "극정", -1, 0, null, 10, 4, 63, 0, 160, 250, null, null], + [0, "금선", -1, 0, null, 52, 68, 13, 0, 160, 250, null, null], + [0, "금의", -1, 0, null, 17, 38, 64, 0, 160, 250, null, null], + [0, "금환삼결", -1, 0, null, 64, 76, 19, 0, 160, 250, null, null], + [0, "기령", -1, 0, null, 78, 83, 51, 0, 160, 250, null, null], + [0, "나헌", -1, 0, null, 85, 71, 75, 0, 160, 250, null, null], + [0, "낙통", -1, 0, null, 76, 58, 75, 0, 160, 250, null, null], + [0, "냉포", -1, 0, null, 71, 82, 68, 0, 160, 250, null, null], + [0, "영수", -1, 0, null, 67, 69, 72, 0, 160, 250, null, null], + [0, "아빠노숙", -1, 0, null, 80, 56, 92, 0, 160, 250, null, null], + [0, "아들노숙", -1, 0, null, 71, 53, 74, 0, 160, 250, null, null], + [0, "노식", -1, 0, null, 86, 63, 82, 0, 160, 250, null, null], + [0, "뇌동", -1, 0, null, 69, 78, 51, 0, 160, 250, null, null], + [0, "뇌박", -1, 0, null, 62, 70, 36, 0, 160, 250, null, null], + [0, "누규", -1, 0, null, 52, 13, 87, 0, 160, 250, null, null], + [0, "누현", -1, 0, null, 23, 22, 67, 0, 160, 250, null, null], + [0, "능조", -1, 0, null, 75, 81, 42, 0, 160, 250, null, null], + [0, "능통", -1, 0, null, 77, 89, 55, 0, 160, 250, null, null], + [0, "단경", -1, 0, null, 71, 68, 43, 0, 160, 250, null, null], + [0, "담웅", -1, 0, null, 58, 73, 14, 0, 160, 250, null, null], + [0, "당균", -1, 0, null, 33, 24, 77, 0, 160, 250, null, null], + [0, "당빈", -1, 0, null, 67, 74, 59, 0, 160, 250, null, null], + [0, "당자", -1, 0, null, 61, 71, 50, 0, 160, 250, null, null], + [0, "대교", -1, 0, null, 90, 53, 90, 0, 160, 250, null, null], + [0, "대래동주", -1, 0, null, 51, 53, 53, 0, 160, 250, null, null], + [0, "대릉", -1, 0, null, 70, 75, 39, 0, 160, 250, null, null], + [0, "도겸", -1, 0, null, 51, 27, 63, 0, 160, 250, null, null], + [0, "도준", -1, 0, null, 65, 66, 46, 0, 160, 250, null, null], + [0, "동궐", -1, 0, null, 65, 59, 76, 0, 160, 250, null, null], + [0, "동도나", -1, 0, null, 68, 73, 31, 0, 160, 250, null, null], + [0, "동민", -1, 0, null, 49, 60, 25, 0, 160, 250, null, null], + [0, "동소", -1, 0, null, 19, 25, 80, 0, 160, 250, null, null], + [0, "동습", -1, 0, null, 72, 85, 50, 0, 160, 250, null, null], + [0, "동승", -1, 0, null, 56, 53, 65, 0, 160, 250, null, null], + [0, "동윤", -1, 0, null, 47, 28, 78, 0, 160, 250, null, null], + [0, "동조", -1, 0, null, 17, 13, 56, 0, 160, 250, null, null], + [0, "동탁", -1, 0, null, 74, 87, 69, 0, 160, 250, null, null], + [0, "동화", -1, 0, null, 57, 34, 74, 0, 160, 250, null, null], + [0, "두기", -1, 0, null, 66, 32, 74, 0, 160, 250, null, null], + [0, "두예", -1, 0, null, 85, 30, 85, 0, 160, 250, null, null], + [0, "등무", -1, 0, null, 61, 75, 29, 0, 160, 250, null, null], + [0, "등수", -1, 0, null, 44, 32, 31, 0, 160, 250, null, null], + [0, "등애", -1, 0, null, 94, 87, 89, 0, 160, 250, null, null], + [0, "등윤", -1, 0, null, 29, 41, 71, 0, 160, 250, null, null], + [0, "등지", -1, 0, null, 73, 52, 81, 0, 160, 250, null, null], + [0, "등충", -1, 0, null, 72, 85, 69, 0, 160, 250, null, null], + [0, "등현", -1, 0, null, 61, 73, 45, 0, 160, 250, null, null], + [0, "마균", -1, 0, null, 2, 7, 60, 0, 160, 250, null, null], + [0, "마대", -1, 0, null, 81, 85, 56, 0, 160, 250, null, null], + [0, "마등", -1, 0, null, 82, 80, 51, 0, 160, 250, null, null], + [0, "마량", -1, 0, null, 46, 23, 85, 0, 160, 250, null, null], + [0, "마막", -1, 0, null, 19, 12, 7, 0, 160, 250, null, null], + [0, "마속", -1, 0, null, 61, 67, 87, 0, 160, 250, null, null], + [0, "마완", -1, 0, null, 71, 74, 16, 0, 160, 250, null, null], + [0, "마운록", -1, 0, null, 88, 91, 63, 0, 160, 250, null, null], + [0, "마준", -1, 0, null, 38, 52, 31, 0, 160, 250, null, null], + [0, "마철", -1, 0, null, 70, 62, 56, 0, 160, 250, null, null], + [0, "마초", -1, 0, null, 88, 97, 44, 0, 160, 250, null, null], + [0, "촉나라마충", -1, 0, null, 78, 72, 68, 0, 160, 250, null, null], + [0, "오나라마충", -1, 0, null, 67, 77, 64, 0, 160, 250, null, null], + [0, "마휴", -1, 0, null, 68, 73, 48, 0, 160, 250, null, null], + [0, "만욱", -1, 0, null, 21, 25, 71, 0, 160, 250, null, null], + [0, "만총", -1, 0, null, 84, 64, 82, 0, 160, 250, null, null], + [0, "망아장", -1, 0, null, 45, 79, 3, 0, 160, 250, null, null], + [0, "맹달", -1, 0, null, 75, 73, 74, 0, 160, 250, null, null], + [0, "맹우", -1, 0, null, 50, 68, 22, 0, 160, 250, null, null], + [0, "맹종", -1, 0, null, 47, 28, 72, 0, 160, 250, null, null], + [0, "맹획", -1, 0, null, 76, 87, 42, 0, 160, 250, null, null], + [0, "모개", -1, 0, null, 63, 39, 59, 0, 160, 250, null, null], + [0, "목록대왕", -1, 0, null, 65, 71, 39, 0, 160, 250, null, null], + [0, "목순", -1, 0, null, 52, 77, 11, 0, 160, 250, null, null], + [0, "무안국", -1, 0, null, 67, 83, 34, 0, 160, 250, null, null], + [0, "문빙", -1, 0, null, 86, 82, 66, 0, 160, 250, null, null], + [0, "문앙", -1, 0, null, 78, 91, 60, 0, 160, 250, null, null], + [0, "문추", -1, 0, null, 78, 94, 25, 0, 160, 250, null, null], + [0, "문호", -1, 0, null, 66, 72, 45, 0, 160, 250, null, null], + [0, "문흠", -1, 0, null, 74, 83, 43, 0, 160, 250, null, null], + [0, "미방", -1, 0, null, 54, 61, 32, 0, 160, 250, null, null], + [0, "미씨", -1, 0, null, 90, 46, 86, 0, 160, 250, null, null], + [0, "미축", -1, 0, null, 33, 29, 77, 0, 160, 250, null, null], + [0, "반봉", -1, 0, null, 56, 77, 4, 0, 160, 250, null, null], + [0, "반장", -1, 0, null, 76, 80, 70, 0, 160, 250, null, null], + [0, "반준", -1, 0, null, 61, 18, 67, 0, 160, 250, null, null], + [0, "방덕", -1, 0, null, 83, 94, 70, 0, 160, 250, null, null], + [0, "방열", -1, 0, null, 68, 80, 44, 0, 160, 250, null, null], + [0, "방통", -1, 0, null, 80, 34, 97, 0, 160, 250, null, null], + [0, "방회", -1, 0, null, 69, 75, 49, 0, 160, 250, null, null], + [0, "방희", -1, 0, null, 60, 38, 68, 0, 160, 250, null, null], + [0, "배수", -1, 0, null, 8, 9, 70, 0, 160, 250, null, null], + [0, "배원소", -1, 0, null, 49, 65, 25, 0, 160, 250, null, null], + [0, "번건", -1, 0, null, 41, 24, 71, 0, 160, 250, null, null], + [0, "번능", -1, 0, null, 69, 61, 36, 0, 160, 250, null, null], + [0, "번씨", -1, 0, null, 88, 32, 86, 0, 160, 250, null, null], + [0, "번주", -1, 0, null, 66, 73, 31, 0, 160, 250, null, null], + [0, "법정", -1, 0, null, 82, 47, 97, 0, 160, 250, null, null], + [0, "변씨", -1, 0, null, 86, 44, 84, 0, 160, 250, null, null], + [0, "변희", -1, 0, null, 56, 70, 59, 0, 160, 250, null, null], + [0, "보즐", -1, 0, null, 72, 51, 84, 0, 160, 250, null, null], + [0, "보천", -1, 0, null, 71, 60, 71, 0, 160, 250, null, null], + [0, "보협", -1, 0, null, 71, 49, 69, 0, 160, 250, null, null], + [0, "복양흥", -1, 0, null, 37, 32, 70, 0, 160, 250, null, null], + [0, "봉기", -1, 0, null, 27, 21, 84, 0, 160, 250, null, null], + [0, "부동", -1, 0, null, 66, 72, 46, 0, 160, 250, null, null], + [0, "부사인", -1, 0, null, 46, 63, 37, 0, 160, 250, null, null], + [0, "부손", -1, 0, null, 14, 13, 69, 0, 160, 250, null, null], + [0, "부첨", -1, 0, null, 73, 85, 72, 0, 160, 250, null, null], + [0, "부하", -1, 0, null, 44, 35, 81, 0, 160, 250, null, null], + [0, "비시", -1, 0, null, 15, 28, 64, 0, 160, 250, null, null], + [0, "비연", -1, 0, null, 60, 66, 21, 0, 160, 250, null, null], + [0, "비요", -1, 0, null, 70, 66, 73, 0, 160, 250, null, null], + [0, "비의", -1, 0, null, 77, 30, 83, 0, 160, 250, null, null], + [0, "사마가", -1, 0, null, 60, 84, 25, 0, 160, 250, null, null], + [0, "사마랑", -1, 0, null, 20, 21, 71, 0, 160, 250, null, null], + [0, "사마망", -1, 0, null, 73, 58, 78, 0, 160, 250, null, null], + [0, "사마부", -1, 0, null, 70, 37, 76, 0, 160, 250, null, null], + [0, "사마사", -1, 0, null, 80, 64, 88, 0, 160, 250, null, null], + [0, "사마소", -1, 0, null, 76, 57, 87, 0, 160, 250, null, null], + [0, "사마염", -1, 0, null, 69, 59, 76, 0, 160, 250, null, null], + [0, "사마유", -1, 0, null, 71, 68, 75, 0, 160, 250, null, null], + [0, "사마의", -1, 0, null, 98, 58, 96, 0, 160, 250, null, null], + [0, "사마주", -1, 0, null, 61, 52, 61, 0, 160, 250, null, null], + [0, "사정", -1, 0, null, 64, 76, 34, 0, 160, 250, null, null], + [0, "사찬", -1, 0, null, 60, 72, 54, 0, 160, 250, null, null], + [0, "서막", -1, 0, null, 55, 32, 67, 0, 160, 250, null, null], + [0, "서서", -1, 0, null, 87, 65, 93, 0, 160, 250, null, null], + [0, "서성", -1, 0, null, 87, 81, 78, 0, 160, 250, null, null], + [0, "서씨", -1, 0, null, 87, 46, 80, 0, 160, 250, null, null], + [0, "서영", -1, 0, null, 80, 76, 57, 0, 160, 250, null, null], + [0, "서질", -1, 0, null, 68, 83, 24, 0, 160, 250, null, null], + [0, "서황", -1, 0, null, 88, 90, 74, 0, 160, 250, null, null], + [0, "석포", -1, 0, null, 69, 71, 56, 0, 160, 250, null, null], + [0, "설영", -1, 0, null, 49, 18, 64, 0, 160, 250, null, null], + [0, "설종", -1, 0, null, 34, 16, 72, 0, 160, 250, null, null], + [0, "설후", -1, 0, null, 17, 15, 68, 0, 160, 250, null, null], + [0, "성공영", -1, 0, null, 73, 71, 80, 0, 160, 250, null, null], + [0, "성만", -1, 0, null, 61, 68, 66, 0, 160, 250, null, null], + [0, "성의", -1, 0, null, 74, 72, 41, 0, 160, 250, null, null], + [0, "소교", -1, 0, null, 90, 48, 87, 0, 160, 250, null, null], + [0, "소비", -1, 0, null, 69, 63, 66, 0, 160, 250, null, null], + [0, "소유", -1, 0, null, 50, 59, 49, 0, 160, 250, null, null], + [0, "소제", -1, 0, null, 21, 15, 72, 0, 160, 250, null, null], + [0, "손건", -1, 0, null, 34, 33, 78, 0, 160, 250, null, null], + [0, "손견", -1, 0, null, 93, 93, 69, 0, 160, 250, null, null], + [0, "손관", -1, 0, null, 72, 78, 51, 0, 160, 250, null, null], + [0, "손광", -1, 0, null, 52, 46, 44, 0, 160, 250, null, null], + [0, "손교", -1, 0, null, 77, 72, 66, 0, 160, 250, null, null], + [0, "손권", -1, 0, null, 78, 67, 83, 0, 160, 250, null, null], + [0, "손기", -1, 0, null, 60, 67, 51, 0, 160, 250, null, null], + [0, "손노반", -1, 0, null, 86, 38, 87, 0, 160, 250, null, null], + [0, "손등", -1, 0, null, 62, 37, 79, 0, 160, 250, null, null], + [0, "손랑", -1, 0, null, 34, 43, 30, 0, 160, 250, null, null], + [0, "손량", -1, 0, null, 21, 7, 70, 0, 160, 250, null, null], + [0, "손례", -1, 0, null, 78, 81, 62, 0, 160, 250, null, null], + [0, "손상향", -1, 0, null, 92, 90, 57, 0, 160, 250, null, null], + [0, "손소", -1, 0, null, 80, 79, 75, 0, 160, 250, null, null], + [0, "손수", -1, 0, null, 55, 51, 53, 0, 160, 250, null, null], + [0, "손씨", -1, 0, null, 93, 22, 82, 0, 160, 250, null, null], + [0, "손유", -1, 0, null, 77, 70, 68, 0, 160, 250, null, null], + [0, "손이", -1, 0, null, 69, 71, 55, 0, 160, 250, null, null], + [0, "손익", -1, 0, null, 67, 78, 27, 0, 160, 250, null, null], + [0, "손정", -1, 0, null, 66, 53, 72, 0, 160, 250, null, null], + [0, "손준", -1, 0, null, 64, 70, 65, 0, 160, 250, null, null], + [0, "손중", -1, 0, null, 62, 71, 36, 0, 160, 250, null, null], + [0, "손진", -1, 0, null, 67, 70, 48, 0, 160, 250, null, null], + [0, "손책", -1, 0, null, 92, 96, 69, 0, 160, 250, null, null], + [0, "손침", -1, 0, null, 25, 39, 65, 0, 160, 250, null, null], + [0, "손호", -1, 0, null, 13, 28, 31, 0, 160, 250, null, null], + [0, "손화", -1, 0, null, 31, 39, 68, 0, 160, 250, null, null], + [0, "손환", -1, 0, null, 82, 73, 72, 0, 160, 250, null, null], + [0, "손휴", -1, 0, null, 57, 39, 78, 0, 160, 250, null, null], + [0, "손흠", -1, 0, null, 66, 69, 35, 0, 160, 250, null, null], + [0, "송겸", -1, 0, null, 66, 78, 42, 0, 160, 250, null, null], + [0, "송헌", -1, 0, null, 68, 77, 38, 0, 160, 250, null, null], + [0, "순심", -1, 0, null, 19, 25, 77, 0, 160, 250, null, null], + [0, "순우경", -1, 0, null, 72, 66, 29, 0, 160, 250, null, null], + [0, "할배순욱", -1, 0, null, 63, 14, 95, 0, 160, 250, null, null], + [0, "손자순욱", -1, 0, null, 8, 19, 77, 0, 160, 250, null, null], + [0, "순유", -1, 0, null, 73, 26, 94, 0, 160, 250, null, null], + [0, "순의", -1, 0, null, 16, 13, 70, 0, 160, 250, null, null], + [0, "시삭", -1, 0, null, 38, 65, 47, 0, 160, 250, null, null], + [0, "신비", -1, 0, null, 39, 24, 78, 0, 160, 250, null, null], + [0, "신의", -1, 0, null, 55, 59, 59, 0, 160, 250, null, null], + [0, "신창", -1, 0, null, 50, 26, 42, 0, 160, 250, null, null], + [0, "신탐", -1, 0, null, 56, 62, 52, 0, 160, 250, null, null], + [0, "신평", -1, 0, null, 69, 43, 76, 0, 160, 250, null, null], + [0, "신헌영", -1, 0, null, 87, 48, 88, 0, 160, 250, null, null], + [0, "심배", -1, 0, null, 84, 60, 87, 0, 160, 250, null, null], + [0, "심영", -1, 0, null, 70, 77, 61, 0, 160, 250, null, null], + [0, "아회남", -1, 0, null, 65, 74, 26, 0, 160, 250, null, null], + [0, "악진", -1, 0, null, 80, 84, 52, 0, 160, 250, null, null], + [0, "악취", -1, 0, null, 53, 66, 58, 0, 160, 250, null, null], + [0, "악침", -1, 0, null, 73, 75, 43, 0, 160, 250, null, null], + [0, "악환", -1, 0, null, 60, 82, 42, 0, 160, 250, null, null], + [0, "안량", -1, 0, null, 79, 93, 42, 0, 160, 250, null, null], + [0, "양강", -1, 0, null, 60, 69, 41, 0, 160, 250, null, null], + [0, "양백", -1, 0, null, 44, 45, 19, 0, 160, 250, null, null], + [0, "양봉", -1, 0, null, 54, 62, 52, 0, 160, 250, null, null], + [0, "이각네양봉", -1, 0, null, 66, 65, 31, 0, 160, 250, null, null], + [0, "양부", -1, 0, null, 67, 50, 83, 0, 160, 250, null, null], + [0, "양서", -1, 0, null, 56, 62, 66, 0, 160, 250, null, null], + [0, "양송", -1, 0, null, 2, 5, 28, 0, 160, 250, null, null], + [0, "양수", -1, 0, null, 10, 4, 83, 0, 160, 250, null, null], + [0, "양습", -1, 0, null, 73, 40, 73, 0, 160, 250, null, null], + [0, "양앙", -1, 0, null, 68, 72, 38, 0, 160, 250, null, null], + [0, "양의", -1, 0, null, 68, 40, 82, 0, 160, 250, null, null], + [0, "양임", -1, 0, null, 70, 78, 53, 0, 160, 250, null, null], + [0, "양제", -1, 0, null, 67, 68, 71, 0, 160, 250, null, null], + [0, "진나라양조", -1, 0, null, 70, 65, 68, 0, 160, 250, null, null], + [0, "양조", -1, 0, null, 53, 61, 36, 0, 160, 250, null, null], + [0, "장양네양추", -1, 0, null, 67, 64, 58, 0, 160, 250, null, null], + [0, "양추", -1, 0, null, 52, 65, 40, 0, 160, 250, null, null], + [0, "양호", -1, 0, null, 90, 64, 84, 0, 160, 250, null, null], + [0, "양홍", -1, 0, null, 18, 15, 76, 0, 160, 250, null, null], + [0, "양회", -1, 0, null, 62, 68, 68, 0, 160, 250, null, null], + [0, "양흔", -1, 0, null, 61, 68, 61, 0, 160, 250, null, null], + [0, "양흥", -1, 0, null, 61, 65, 19, 0, 160, 250, null, null], + [0, "엄강", -1, 0, null, 68, 71, 40, 0, 160, 250, null, null], + [0, "엄백호", -1, 0, null, 67, 70, 23, 0, 160, 250, null, null], + [0, "엄안", -1, 0, null, 79, 83, 69, 0, 160, 250, null, null], + [0, "엄여", -1, 0, null, 61, 78, 44, 0, 160, 250, null, null], + [0, "엄정", -1, 0, null, 50, 55, 39, 0, 160, 250, null, null], + [0, "엄준", -1, 0, null, 13, 2, 70, 0, 160, 250, null, null], + [0, "여개", -1, 0, null, 53, 30, 66, 0, 160, 250, null, null], + [0, "여거", -1, 0, null, 70, 59, 71, 0, 160, 250, null, null], + [0, "여건", -1, 0, null, 57, 70, 58, 0, 160, 250, null, null], + [0, "여광", -1, 0, null, 56, 70, 13, 0, 160, 250, null, null], + [0, "여대", -1, 0, null, 82, 71, 69, 0, 160, 250, null, null], + [0, "여몽", -1, 0, null, 91, 81, 89, 0, 160, 250, null, null], + [0, "여범", -1, 0, null, 73, 63, 74, 0, 160, 250, null, null], + [0, "여상", -1, 0, null, 54, 71, 12, 0, 160, 250, null, null], + [0, "여령기", -1, 0, null, 87, 90, 47, 0, 160, 250, null, null], + [0, "여위황", -1, 0, null, 58, 63, 29, 0, 160, 250, null, null], + [0, "여포", -1, 0, null, 87, 108, 26, 0, 160, 250, null, null], + [0, "염상", -1, 0, null, 30, 27, 70, 0, 160, 250, null, null], + [0, "염우", -1, 0, null, 52, 61, 58, 0, 160, 250, null, null], + [0, "염유", -1, 0, null, 71, 57, 70, 0, 160, 250, null, null], + [0, "염포", -1, 0, null, 29, 25, 82, 0, 160, 250, null, null], + [0, "염행", -1, 0, null, 72, 84, 61, 0, 160, 250, null, null], + [0, "예형", -1, 0, null, 3, 6, 83, 0, 160, 250, null, null], + [0, "오강", -1, 0, null, 48, 38, 65, 0, 160, 250, null, null], + [0, "오거", -1, 0, null, 49, 61, 23, 0, 160, 250, null, null], + [0, "오경", -1, 0, null, 69, 66, 51, 0, 160, 250, null, null], + [0, "오국태", -1, 0, null, 83, 31, 81, 0, 160, 250, null, null], + [0, "오란", -1, 0, null, 62, 80, 35, 0, 160, 250, null, null], + [0, "오반", -1, 0, null, 74, 71, 56, 0, 160, 250, null, null], + [0, "오언", -1, 0, null, 74, 72, 77, 0, 160, 250, null, null], + [0, "오연", -1, 0, null, 66, 73, 42, 0, 160, 250, null, null], + [0, "오의", -1, 0, null, 83, 73, 68, 0, 160, 250, null, null], + [0, "오질", -1, 0, null, 16, 29, 68, 0, 160, 250, null, null], + [0, "오찬", -1, 0, null, 68, 41, 78, 0, 160, 250, null, null], + [0, "온회", -1, 0, null, 62, 36, 73, 0, 160, 250, null, null], + [0, "올돌골", -1, 0, null, 72, 86, 1, 0, 160, 250, null, null], + [0, "옹개", -1, 0, null, 81, 75, 54, 0, 160, 250, null, null], + [0, "왕경", -1, 0, null, 67, 63, 66, 0, 160, 250, null, null], + [0, "왕광", -1, 0, null, 65, 55, 61, 0, 160, 250, null, null], + [0, "큰왕기", -1, 0, null, 77, 78, 76, 0, 160, 250, null, null], + [0, "작은왕기", -1, 0, null, 69, 67, 61, 0, 160, 250, null, null], + [0, "왕누", -1, 0, null, 28, 30, 78, 0, 160, 250, null, null], + [0, "왕도", -1, 0, null, 46, 59, 72, 0, 160, 250, null, null], + [0, "왕돈", -1, 0, null, 60, 66, 46, 0, 160, 250, null, null], + [0, "왕랑", -1, 0, null, 47, 35, 79, 0, 160, 250, null, null], + [0, "왕릉", -1, 0, null, 74, 64, 70, 0, 160, 250, null, null], + [0, "왕문", -1, 0, null, 65, 64, 31, 0, 160, 250, null, null], + [0, "왕보", -1, 0, null, 62, 41, 79, 0, 160, 250, null, null], + [0, "왕상", -1, 0, null, 23, 19, 68, 0, 160, 250, null, null], + [0, "왕수", -1, 0, null, 54, 27, 76, 0, 160, 250, null, null], + [0, "왕숙", -1, 0, null, 36, 22, 75, 0, 160, 250, null, null], + [0, "왕쌍", -1, 0, null, 64, 88, 19, 0, 160, 250, null, null], + [0, "왕업", -1, 0, null, 33, 6, 35, 0, 160, 250, null, null], + [0, "왕위", -1, 0, null, 60, 70, 59, 0, 160, 250, null, null], + [0, "왕윤", -1, 0, null, 26, 6, 67, 0, 160, 250, null, null], + [0, "왕융", -1, 0, null, 57, 36, 72, 0, 160, 250, null, null], + [0, "왕이", -1, 0, null, 88, 86, 36, 0, 160, 250, null, null], + [0, "왕준", -1, 0, null, 81, 73, 77, 0, 160, 250, null, null], + [0, "왕찬", -1, 0, null, 6, 3, 79, 0, 160, 250, null, null], + [0, "왕창", -1, 0, null, 74, 64, 79, 0, 160, 250, null, null], + [0, "왕충", -1, 0, null, 39, 57, 21, 0, 160, 250, null, null], + [0, "왕평", -1, 0, null, 83, 79, 80, 0, 160, 250, null, null], + [0, "왕항", -1, 0, null, 76, 60, 61, 0, 160, 250, null, null], + [0, "왕혼", -1, 0, null, 76, 76, 72, 0, 160, 250, null, null], + [0, "요립", -1, 0, null, 22, 15, 69, 0, 160, 250, null, null], + [0, "요화", -1, 0, null, 73, 76, 64, 0, 160, 250, null, null], + [0, "큰우금", -1, 0, null, 84, 78, 70, 0, 160, 250, null, null], + [0, "작은우금", -1, 0, null, 72, 79, 38, 0, 160, 250, null, null], + [0, "우번", -1, 0, null, 43, 46, 86, 0, 160, 250, null, null], + [0, "우보", -1, 0, null, 38, 60, 21, 0, 160, 250, null, null], + [0, "우사", -1, 0, null, 61, 34, 74, 0, 160, 250, null, null], + [0, "우전", -1, 0, null, 64, 76, 40, 0, 160, 250, null, null], + [0, "원담", -1, 0, null, 60, 69, 30, 0, 160, 250, null, null], + [0, "원상", -1, 0, null, 63, 71, 42, 0, 160, 250, null, null], + [0, "원소", -1, 0, null, 81, 69, 70, 0, 160, 250, null, null], + [0, "원술", -1, 0, null, 44, 65, 61, 0, 160, 250, null, null], + [0, "원요", -1, 0, null, 41, 50, 41, 0, 160, 250, null, null], + [0, "원유", -1, 0, null, 56, 40, 73, 0, 160, 250, null, null], + [0, "원윤", -1, 0, null, 17, 14, 39, 0, 160, 250, null, null], + [0, "원환", -1, 0, null, 30, 17, 72, 0, 160, 250, null, null], + [0, "원희", -1, 0, null, 66, 51, 63, 0, 160, 250, null, null], + [0, "위관", -1, 0, null, 69, 46, 79, 0, 160, 250, null, null], + [0, "위막", -1, 0, null, 57, 62, 59, 0, 160, 250, null, null], + [0, "위소", -1, 0, null, 16, 19, 65, 0, 160, 250, null, null], + [0, "위속", -1, 0, null, 67, 78, 31, 0, 160, 250, null, null], + [0, "위연", -1, 0, null, 81, 92, 69, 0, 160, 250, null, null], + [0, "위유", -1, 0, null, 46, 29, 73, 0, 160, 250, null, null], + [0, "위풍", -1, 0, null, 52, 23, 72, 0, 160, 250, null, null], + [0, "유괴", -1, 0, null, 71, 73, 66, 0, 160, 250, null, null], + [0, "유기", -1, 0, null, 52, 12, 62, 0, 160, 250, null, null], + [0, "유대", -1, 0, null, 53, 65, 32, 0, 160, 250, null, null], + [0, "유도", -1, 0, null, 25, 23, 26, 0, 160, 250, null, null], + [0, "유략", -1, 0, null, 71, 66, 59, 0, 160, 250, null, null], + [0, "유반", -1, 0, null, 69, 76, 47, 0, 160, 250, null, null], + [0, "유벽", -1, 0, null, 70, 72, 47, 0, 160, 250, null, null], + [0, "유복", -1, 0, null, 64, 49, 73, 0, 160, 250, null, null], + [0, "유봉", -1, 0, null, 75, 79, 44, 0, 160, 250, null, null], + [0, "유비", -1, 0, null, 75, 73, 74, 0, 160, 250, null, null], + [0, "아빠유선", -1, 0, null, 8, 21, 36, 0, 160, 250, null, null], + [0, "아들유선", -1, 0, null, 3, 5, 9, 0, 160, 250, null, null], + [0, "유섭", -1, 0, null, 62, 79, 24, 0, 160, 250, null, null], + [0, "유소", -1, 0, null, 71, 53, 74, 0, 160, 250, null, null], + [0, "유순", -1, 0, null, 63, 46, 41, 0, 160, 250, null, null], + [0, "유승", -1, 0, null, 45, 65, 33, 0, 160, 250, null, null], + [0, "유심", -1, 0, null, 60, 62, 69, 0, 160, 250, null, null], + [0, "유씨", -1, 0, null, 83, 41, 86, 0, 160, 250, null, null], + [0, "유언", -1, 0, null, 53, 38, 80, 0, 160, 250, null, null], + [0, "유엽", -1, 0, null, 36, 32, 92, 0, 160, 250, null, null], + [0, "유요", -1, 0, null, 62, 67, 46, 0, 160, 250, null, null], + [0, "유우", -1, 0, null, 55, 33, 69, 0, 160, 250, null, null], + [0, "유장", -1, 0, null, 16, 5, 9, 0, 160, 250, null, null], + [0, "유종", -1, 0, null, 24, 22, 64, 0, 160, 250, null, null], + [0, "유찬", -1, 0, null, 78, 75, 64, 0, 160, 250, null, null], + [0, "유파", -1, 0, null, 14, 22, 74, 0, 160, 250, null, null], + [0, "유평", -1, 0, null, 70, 71, 68, 0, 160, 250, null, null], + [0, "유표", -1, 0, null, 48, 31, 71, 0, 160, 250, null, null], + [0, "유현", -1, 0, null, 54, 66, 51, 0, 160, 250, null, null], + [0, "유화", -1, 0, null, 21, 16, 59, 0, 160, 250, null, null], + [0, "유훈", -1, 0, null, 47, 63, 35, 0, 160, 250, null, null], + [0, "육개", -1, 0, null, 65, 61, 78, 0, 160, 250, null, null], + [0, "육손", -1, 0, null, 96, 65, 95, 0, 160, 250, null, null], + [0, "육적", -1, 0, null, 20, 7, 71, 0, 160, 250, null, null], + [0, "육항", -1, 0, null, 91, 63, 87, 0, 160, 250, null, null], + [0, "윤대목", -1, 0, null, 4, 9, 33, 0, 160, 250, null, null], + [0, "윤묵", -1, 0, null, 11, 15, 65, 0, 160, 250, null, null], + [0, "윤상", -1, 0, null, 51, 44, 61, 0, 160, 250, null, null], + [0, "윤직", -1, 0, null, 46, 42, 72, 0, 160, 250, null, null], + [0, "이각", -1, 0, null, 69, 72, 24, 0, 160, 250, null, null], + [0, "이감", -1, 0, null, 58, 69, 33, 0, 160, 250, null, null], + [0, "이부", -1, 0, null, 31, 36, 74, 0, 160, 250, null, null], + [0, "이숙", -1, 0, null, 46, 69, 59, 0, 160, 250, null, null], + [0, "이승", -1, 0, null, 12, 22, 29, 0, 160, 250, null, null], + [0, "이엄", -1, 0, null, 83, 84, 75, 0, 160, 250, null, null], + [0, "이유", -1, 0, null, 61, 26, 93, 0, 160, 250, null, null], + [0, "이이", -1, 0, null, 59, 77, 19, 0, 160, 250, null, null], + [0, "이적", -1, 0, null, 29, 24, 80, 0, 160, 250, null, null], + [0, "이전", -1, 0, null, 80, 77, 79, 0, 160, 250, null, null], + [0, "이통", -1, 0, null, 73, 81, 57, 0, 160, 250, null, null], + [0, "촉나라이풍", -1, 0, null, 55, 48, 67, 0, 160, 250, null, null], + [0, "원술네이풍", -1, 0, null, 69, 74, 50, 0, 160, 250, null, null], + [0, "위나라이풍", -1, 0, null, 25, 35, 67, 0, 160, 250, null, null], + [0, "이회", -1, 0, null, 79, 65, 78, 0, 160, 250, null, null], + [0, "잠혼", -1, 0, null, 1, 1, 33, 0, 160, 250, null, null], + [0, "장각", -1, 0, null, 86, 25, 86, 0, 160, 250, null, null], + [0, "장간", -1, 0, null, 9, 6, 65, 0, 160, 250, null, null], + [0, "장개", -1, 0, null, 34, 66, 8, 0, 160, 250, null, null], + [0, "장굉", -1, 0, null, 24, 22, 86, 0, 160, 250, null, null], + [0, "장구", -1, 0, null, 69, 72, 44, 0, 160, 250, null, null], + [0, "장기", -1, 0, null, 74, 35, 75, 0, 160, 250, null, null], + [0, "촉나라장남", -1, 0, null, 70, 69, 37, 0, 160, 250, null, null], + [0, "장남", -1, 0, null, 57, 71, 46, 0, 160, 250, null, null], + [0, "장노", -1, 0, null, 51, 26, 73, 0, 160, 250, null, null], + [0, "장료", -1, 0, null, 90, 91, 78, 0, 160, 250, null, null], + [0, "장막", -1, 0, null, 52, 53, 70, 0, 160, 250, null, null], + [0, "장만성", -1, 0, null, 73, 81, 45, 0, 160, 250, null, null], + [0, "장반", -1, 0, null, 63, 73, 62, 0, 160, 250, null, null], + [0, "장보", -1, 0, null, 83, 71, 81, 0, 160, 250, null, null], + [0, "장비", -1, 0, null, 85, 98, 45, 0, 160, 250, null, null], + [0, "장빈", -1, 0, null, 27, 23, 64, 0, 160, 250, null, null], + [0, "장서", -1, 0, null, 55, 76, 35, 0, 160, 250, null, null], + [0, "오나라장소", -1, 0, null, 33, 3, 84, 0, 160, 250, null, null], + [0, "촉나라장소", -1, 0, null, 8, 12, 31, 0, 160, 250, null, null], + [0, "장송", -1, 0, null, 15, 6, 88, 0, 160, 250, null, null], + [0, "장수", -1, 0, null, 80, 73, 60, 0, 160, 250, null, null], + [0, "장승", -1, 0, null, 77, 70, 75, 0, 160, 250, null, null], + [0, "장량", -1, 0, null, 78, 80, 68, 0, 160, 250, null, null], + [0, "장양", -1, 0, null, 72, 70, 62, 0, 160, 250, null, null], + [0, "장억", -1, 0, null, 79, 72, 74, 0, 160, 250, null, null], + [0, "장연", -1, 0, null, 82, 81, 53, 0, 160, 250, null, null], + [0, "장영", -1, 0, null, 75, 74, 41, 0, 160, 250, null, null], + [0, "장온", -1, 0, null, 17, 10, 71, 0, 160, 250, null, null], + [0, "장완", -1, 0, null, 78, 34, 84, 0, 160, 250, null, null], + [0, "장위", -1, 0, null, 74, 66, 45, 0, 160, 250, null, null], + [0, "장윤", -1, 0, null, 72, 67, 42, 0, 160, 250, null, null], + [0, "장의거", -1, 0, null, 71, 58, 57, 0, 160, 250, null, null], + [0, "장익", -1, 0, null, 75, 74, 71, 0, 160, 250, null, null], + [0, "장임", -1, 0, null, 88, 84, 78, 0, 160, 250, null, null], + [0, "오나라장제", -1, 0, null, 67, 43, 80, 0, 160, 250, null, null], + [0, "위나라장제", -1, 0, null, 48, 43, 85, 0, 160, 250, null, null], + [0, "동탁네장제", -1, 0, null, 70, 66, 52, 0, 160, 250, null, null], + [0, "장준", -1, 0, null, 63, 68, 66, 0, 160, 250, null, null], + [0, "장집", -1, 0, null, 31, 29, 70, 0, 160, 250, null, null], + [0, "장춘화", -1, 0, null, 80, 40, 86, 0, 160, 250, null, null], + [0, "장특", -1, 0, null, 73, 54, 75, 0, 160, 250, null, null], + [0, "장패", -1, 0, null, 74, 75, 52, 0, 160, 250, null, null], + [0, "촉나라장포", -1, 0, null, 75, 87, 48, 0, 160, 250, null, null], + [0, "오나라장포", -1, 0, null, 31, 24, 71, 0, 160, 250, null, null], + [0, "장합", -1, 0, null, 90, 89, 69, 0, 160, 250, null, null], + [0, "장호", -1, 0, null, 75, 74, 41, 0, 160, 250, null, null], + [0, "장화", -1, 0, null, 36, 27, 78, 0, 160, 250, null, null], + [0, "장횡", -1, 0, null, 59, 70, 23, 0, 160, 250, null, null], + [0, "장훈", -1, 0, null, 72, 68, 41, 0, 160, 250, null, null], + [0, "장휴", -1, 0, null, 53, 27, 74, 0, 160, 250, null, null], + [0, "장흠", -1, 0, null, 78, 84, 51, 0, 160, 250, null, null], + [0, "저곡", -1, 0, null, 55, 51, 66, 0, 160, 250, null, null], + [0, "저수", -1, 0, null, 78, 35, 90, 0, 160, 250, null, null], + [0, "전기", -1, 0, null, 49, 69, 61, 0, 160, 250, null, null], + [0, "전단", -1, 0, null, 67, 64, 39, 0, 160, 250, null, null], + [0, "전만", -1, 0, null, 51, 73, 39, 0, 160, 250, null, null], + [0, "전상", -1, 0, null, 2, 4, 12, 0, 160, 250, null, null], + [0, "전속", -1, 0, null, 47, 60, 55, 0, 160, 250, null, null], + [0, "전역", -1, 0, null, 60, 63, 38, 0, 160, 250, null, null], + [0, "전예", -1, 0, null, 80, 72, 80, 0, 160, 250, null, null], + [0, "전위", -1, 0, null, 56, 98, 35, 0, 160, 250, null, null], + [0, "전의", -1, 0, null, 61, 68, 44, 0, 160, 250, null, null], + [0, "전종", -1, 0, null, 78, 72, 71, 0, 160, 250, null, null], + [0, "전주", -1, 0, null, 66, 66, 72, 0, 160, 250, null, null], + [0, "전풍", -1, 0, null, 76, 29, 93, 0, 160, 250, null, null], + [0, "전해", -1, 0, null, 68, 65, 56, 0, 160, 250, null, null], + [0, "정무", -1, 0, null, 56, 35, 75, 0, 160, 250, null, null], + [0, "정병", -1, 0, null, 16, 15, 71, 0, 160, 250, null, null], + [0, "정보", -1, 0, null, 84, 79, 79, 0, 160, 250, null, null], + [0, "형정봉", -1, 0, null, 81, 80, 71, 0, 160, 250, null, null], + [0, "동생정봉", -1, 0, null, 66, 66, 53, 0, 160, 250, null, null], + [0, "정욱", -1, 0, null, 73, 49, 90, 0, 160, 250, null, null], + [0, "정원", -1, 0, null, 70, 76, 35, 0, 160, 250, null, null], + [0, "정원지", -1, 0, null, 69, 74, 17, 0, 160, 250, null, null], + [0, "정은", -1, 0, null, 69, 73, 40, 0, 160, 250, null, null], + [0, "정의", -1, 0, null, 15, 5, 64, 0, 160, 250, null, null], + [0, "제갈각", -1, 0, null, 72, 47, 90, 0, 160, 250, null, null], + [0, "제갈교", -1, 0, null, 62, 27, 75, 0, 160, 250, null, null], + [0, "제갈균", -1, 0, null, 29, 25, 51, 0, 160, 250, null, null], + [0, "제갈근", -1, 0, null, 75, 34, 81, 0, 160, 250, null, null], + [0, "제갈량", -1, 0, null, 92, 38, 100, 0, 160, 250, null, null], + [0, "제갈상", -1, 0, null, 64, 77, 62, 0, 160, 250, null, null], + [0, "제갈서", -1, 0, null, 41, 40, 29, 0, 160, 250, null, null], + [0, "제갈정", -1, 0, null, 58, 63, 66, 0, 160, 250, null, null], + [0, "제갈첨", -1, 0, null, 71, 60, 70, 0, 160, 250, null, null], + [0, "제갈탄", -1, 0, null, 81, 72, 71, 0, 160, 250, null, null], + [0, "조광", -1, 0, null, 67, 71, 53, 0, 160, 250, null, null], + [0, "조누", -1, 0, null, 70, 43, 67, 0, 160, 250, null, null], + [0, "조모", -1, 0, null, 54, 61, 59, 0, 160, 250, null, null], + [0, "조무", -1, 0, null, 70, 71, 62, 0, 160, 250, null, null], + [0, "조방", -1, 0, null, 5, 3, 27, 0, 160, 250, null, null], + [0, "조범", -1, 0, null, 28, 21, 32, 0, 160, 250, null, null], + [0, "조비", -1, 0, null, 70, 71, 83, 0, 160, 250, null, null], + [0, "조상", -1, 0, null, 39, 33, 30, 0, 160, 250, null, null], + [0, "조성", -1, 0, null, 54, 74, 38, 0, 160, 250, null, null], + [0, "조순", -1, 0, null, 75, 71, 60, 0, 160, 250, null, null], + [0, "조식", -1, 0, null, 18, 22, 81, 0, 160, 250, null, null], + [0, "조앙", -1, 0, null, 74, 67, 66, 0, 160, 250, null, null], + [0, "조예", -1, 0, null, 72, 52, 82, 0, 160, 250, null, null], + [0, "조우", -1, 0, null, 50, 43, 37, 0, 160, 250, null, null], + [0, "조운", -1, 0, null, 94, 93, 78, 0, 160, 250, null, null], + [0, "조웅", -1, 0, null, 9, 5, 52, 0, 160, 250, null, null], + [0, "조인", -1, 0, null, 89, 86, 56, 0, 160, 250, null, null], + [0, "조조", -1, 0, null, 96, 72, 91, 0, 160, 250, null, null], + [0, "조진", -1, 0, null, 87, 74, 68, 0, 160, 250, null, null], + [0, "조창", -1, 0, null, 82, 90, 40, 0, 160, 250, null, null], + [0, "조충", -1, 0, null, 31, 21, 85, 0, 160, 250, null, null], + [0, "조통", -1, 0, null, 68, 67, 61, 0, 160, 250, null, null], + [0, "조표", -1, 0, null, 54, 69, 32, 0, 160, 250, null, null], + [0, "위나라조홍", -1, 0, null, 79, 81, 44, 0, 160, 250, null, null], + [0, "황건적조홍", -1, 0, null, 66, 72, 28, 0, 160, 250, null, null], + [0, "조환", -1, 0, null, 13, 15, 30, 0, 160, 250, null, null], + [0, "조훈", -1, 0, null, 18, 34, 11, 0, 160, 250, null, null], + [0, "조휴", -1, 0, null, 74, 75, 58, 0, 160, 250, null, null], + [0, "조희", -1, 0, null, 30, 26, 50, 0, 160, 250, null, null], + [0, "종리목", -1, 0, null, 77, 72, 73, 0, 160, 250, null, null], + [0, "종요", -1, 0, null, 70, 24, 76, 0, 160, 250, null, null], + [0, "종육", -1, 0, null, 32, 12, 71, 0, 160, 250, null, null], + [0, "종회", -1, 0, null, 82, 51, 91, 0, 160, 250, null, null], + [0, "좌자", -1, 0, null, 10, 10, 94, 0, 160, 250, null, null], + [0, "좌혁", -1, 0, null, 62, 66, 51, 0, 160, 250, null, null], + [0, "주거", -1, 0, null, 77, 57, 72, 0, 160, 250, null, null], + [0, "주령", -1, 0, null, 71, 73, 67, 0, 160, 250, null, null], + [0, "주방", -1, 0, null, 52, 41, 80, 0, 160, 250, null, null], + [0, "주앙", -1, 0, null, 74, 65, 62, 0, 160, 250, null, null], + [0, "주연", -1, 0, null, 79, 69, 71, 0, 160, 250, null, null], + [0, "주유", -1, 0, null, 97, 71, 96, 0, 160, 250, null, null], + [0, "주이", -1, 0, null, 70, 68, 60, 0, 160, 250, null, null], + [0, "주준", -1, 0, null, 78, 65, 70, 0, 160, 250, null, null], + [0, "주지", -1, 0, null, 65, 85, 41, 0, 160, 250, null, null], + [0, "주창", -1, 0, null, 62, 84, 42, 0, 160, 250, null, null], + [0, "주치", -1, 0, null, 71, 56, 72, 0, 160, 250, null, null], + [0, "진나라주태", -1, 0, null, 71, 64, 71, 0, 160, 250, null, null], + [0, "오나라주태", -1, 0, null, 76, 91, 48, 0, 160, 250, null, null], + [0, "주포", -1, 0, null, 68, 73, 34, 0, 160, 250, null, null], + [0, "주환", -1, 0, null, 84, 82, 73, 0, 160, 250, null, null], + [0, "주흔", -1, 0, null, 65, 62, 72, 0, 160, 250, null, null], + [0, "진건", -1, 0, null, 72, 71, 65, 0, 160, 250, null, null], + [0, "진교", -1, 0, null, 61, 27, 76, 0, 160, 250, null, null], + [0, "진군", -1, 0, null, 32, 14, 74, 0, 160, 250, null, null], + [0, "진궁", -1, 0, null, 78, 55, 89, 0, 160, 250, null, null], + [0, "진규", -1, 0, null, 15, 4, 82, 0, 160, 250, null, null], + [0, "진기", -1, 0, null, 58, 65, 43, 0, 160, 250, null, null], + [0, "진도", -1, 0, null, 76, 71, 63, 0, 160, 250, null, null], + [0, "진등", -1, 0, null, 79, 64, 81, 0, 160, 250, null, null], + [0, "진란", -1, 0, null, 66, 69, 40, 0, 160, 250, null, null], + [0, "진랑", -1, 0, null, 58, 70, 35, 0, 160, 250, null, null], + [0, "진림", -1, 0, null, 10, 9, 74, 0, 160, 250, null, null], + [0, "진무", -1, 0, null, 74, 87, 43, 0, 160, 250, null, null], + [0, "진복", -1, 0, null, 16, 7, 72, 0, 160, 250, null, null], + [0, "진수", -1, 0, null, 12, 22, 60, 0, 160, 250, null, null], + [0, "진식", -1, 0, null, 70, 71, 25, 0, 160, 250, null, null], + [0, "진응", -1, 0, null, 62, 72, 45, 0, 160, 250, null, null], + [0, "진진", -1, 0, null, 46, 46, 68, 0, 160, 250, null, null], + [0, "진태", -1, 0, null, 84, 73, 86, 0, 160, 250, null, null], + [0, "진표", -1, 0, null, 66, 42, 74, 0, 160, 250, null, null], + [0, "진횡", -1, 0, null, 64, 63, 26, 0, 160, 250, null, null], + [0, "차주", -1, 0, null, 49, 49, 40, 0, 160, 250, null, null], + [0, "착융", -1, 0, null, 60, 69, 38, 0, 160, 250, null, null], + [0, "채모", -1, 0, null, 77, 70, 77, 0, 160, 250, null, null], + [0, "채씨", -1, 0, null, 88, 66, 69, 0, 160, 250, null, null], + [0, "채염", -1, 0, null, 92, 41, 90, 0, 160, 250, null, null], + [0, "채중", -1, 0, null, 40, 54, 2, 0, 160, 250, null, null], + [0, "채화", -1, 0, null, 39, 50, 1, 0, 160, 250, null, null], + [0, "초선", -1, 0, null, 90, 56, 94, 0, 160, 250, null, null], + [0, "초이", -1, 0, null, 62, 69, 63, 0, 160, 250, null, null], + [0, "초주", -1, 0, null, 3, 3, 66, 0, 160, 250, null, null], + [0, "초촉", -1, 0, null, 65, 72, 33, 0, 160, 250, null, null], + [0, "최림", -1, 0, null, 32, 22, 66, 0, 160, 250, null, null], + [0, "최염", -1, 0, null, 18, 55, 70, 0, 160, 250, null, null], + [0, "추단", -1, 0, null, 61, 64, 34, 0, 160, 250, null, null], + [0, "추씨", -1, 0, null, 90, 36, 86, 0, 160, 250, null, null], + [0, "추정", -1, 0, null, 70, 64, 66, 0, 160, 250, null, null], + [0, "축융", -1, 0, null, 90, 91, 49, 0, 160, 250, null, null], + [0, "타사대왕", -1, 0, null, 62, 59, 70, 0, 160, 250, null, null], + [0, "태사자", -1, 0, null, 84, 94, 66, 0, 160, 250, null, null], + [0, "태사향", -1, 0, null, 57, 66, 48, 0, 160, 250, null, null], + [0, "파재", -1, 0, null, 71, 74, 52, 0, 160, 250, null, null], + [0, "포삼랑", -1, 0, null, 92, 83, 56, 0, 160, 250, null, null], + [0, "포신", -1, 0, null, 77, 67, 81, 0, 160, 250, null, null], + [0, "포융", -1, 0, null, 58, 76, 49, 0, 160, 250, null, null], + [0, "풍습", -1, 0, null, 72, 71, 39, 0, 160, 250, null, null], + [0, "하식", -1, 0, null, 15, 24, 26, 0, 160, 250, null, null], + [0, "하안", -1, 0, null, 6, 30, 71, 0, 160, 250, null, null], + [0, "하의", -1, 0, null, 56, 69, 36, 0, 160, 250, null, null], + [0, "하제", -1, 0, null, 83, 78, 72, 0, 160, 250, null, null], + [0, "하진", -1, 0, null, 39, 40, 6, 0, 160, 250, null, null], + [0, "하후덕", -1, 0, null, 69, 73, 32, 0, 160, 250, null, null], + [0, "하후돈", -1, 0, null, 89, 90, 58, 0, 160, 250, null, null], + [0, "하후무", -1, 0, null, 20, 7, 4, 0, 160, 250, null, null], + [0, "하후상", -1, 0, null, 79, 72, 74, 0, 160, 250, null, null], + [0, "하후연", -1, 0, null, 87, 91, 54, 0, 160, 250, null, null], + [0, "하후영녀", -1, 0, null, 89, 40, 88, 0, 160, 250, null, null], + [0, "하후위", -1, 0, null, 71, 73, 49, 0, 160, 250, null, null], + [0, "하후은", -1, 0, null, 63, 72, 52, 0, 160, 250, null, null], + [0, "하후패", -1, 0, null, 79, 84, 77, 0, 160, 250, null, null], + [0, "하후현", -1, 0, null, 54, 39, 75, 0, 160, 250, null, null], + [0, "하후혜", -1, 0, null, 50, 44, 75, 0, 160, 250, null, null], + [0, "하후화", -1, 0, null, 48, 51, 70, 0, 160, 250, null, null], + [0, "학맹", -1, 0, null, 62, 67, 42, 0, 160, 250, null, null], + [0, "학소", -1, 0, null, 89, 79, 80, 0, 160, 250, null, null], + [0, "한거자", -1, 0, null, 51, 59, 51, 0, 160, 250, null, null], + [0, "한당", -1, 0, null, 76, 85, 56, 0, 160, 250, null, null], + [0, "한덕", -1, 0, null, 63, 76, 25, 0, 160, 250, null, null], + [0, "한복", -1, 0, null, 13, 3, 27, 0, 160, 250, null, null], + [0, "한섬", -1, 0, null, 69, 66, 36, 0, 160, 250, null, null], + [0, "한수", -1, 0, null, 89, 70, 77, 0, 160, 250, null, null], + [0, "한숭", -1, 0, null, 25, 15, 70, 0, 160, 250, null, null], + [0, "한윤", -1, 0, null, 26, 29, 64, 0, 160, 250, null, null], + [0, "한충", -1, 0, null, 64, 67, 18, 0, 160, 250, null, null], + [0, "한현", -1, 0, null, 42, 43, 7, 0, 160, 250, null, null], + [0, "한호", -1, 0, null, 69, 72, 68, 0, 160, 250, null, null], + [0, "향랑", -1, 0, null, 28, 18, 73, 0, 160, 250, null, null], + [0, "향총", -1, 0, null, 76, 61, 76, 0, 160, 250, null, null], + [0, "허공", -1, 0, null, 44, 66, 64, 0, 160, 250, null, null], + [0, "허소", -1, 0, null, 16, 11, 74, 0, 160, 250, null, null], + [0, "허유", -1, 0, null, 36, 21, 80, 0, 160, 250, null, null], + [0, "허의", -1, 0, null, 51, 74, 15, 0, 160, 250, null, null], + [0, "허저", -1, 0, null, 65, 96, 36, 0, 160, 250, null, null], + [0, "허정", -1, 0, null, 3, 5, 67, 0, 160, 250, null, null], + [0, "형도영", -1, 0, null, 61, 80, 41, 0, 160, 250, null, null], + [0, "호거아", -1, 0, null, 26, 82, 41, 0, 160, 250, null, null], + [0, "호반", -1, 0, null, 55, 55, 58, 0, 160, 250, null, null], + [0, "호분", -1, 0, null, 71, 76, 50, 0, 160, 250, null, null], + [0, "호열", -1, 0, null, 73, 67, 72, 0, 160, 250, null, null], + [0, "호제", -1, 0, null, 57, 39, 68, 0, 160, 250, null, null], + [0, "호준", -1, 0, null, 70, 76, 52, 0, 160, 250, null, null], + [0, "호진", -1, 0, null, 65, 74, 12, 0, 160, 250, null, null], + [0, "호질", -1, 0, null, 73, 46, 74, 0, 160, 250, null, null], + [0, "화만", -1, 0, null, 69, 82, 32, 0, 160, 250, null, null], + [0, "화웅", -1, 0, null, 81, 90, 56, 0, 160, 250, null, null], + [0, "화타", -1, 0, null, 8, 7, 68, 0, 160, 250, null, null], + [0, "화핵", -1, 0, null, 20, 24, 71, 0, 160, 250, null, null], + [0, "화흠", -1, 0, null, 18, 33, 82, 0, 160, 250, null, null], + [0, "환계", -1, 0, null, 10, 26, 67, 0, 160, 250, null, null], + [0, "환범", -1, 0, null, 20, 11, 78, 0, 160, 250, null, null], + [0, "황개", -1, 0, null, 79, 83, 65, 0, 160, 250, null, null], + [0, "황권", -1, 0, null, 78, 59, 82, 0, 160, 250, null, null], + [0, "황보숭", -1, 0, null, 87, 61, 73, 0, 160, 250, null, null], + [0, "황숭", -1, 0, null, 67, 63, 72, 0, 160, 250, null, null], + [0, "황월영", -1, 0, null, 81, 42, 90, 0, 160, 250, null, null], + [0, "황조", -1, 0, null, 74, 66, 53, 0, 160, 250, null, null], + [0, "황충", -1, 0, null, 86, 93, 60, 0, 160, 250, null, null], + [0, "황호", -1, 0, null, 1, 1, 30, 0, 160, 250, null, null], + [0, "후선", -1, 0, null, 63, 66, 34, 0, 160, 250, null, null], + [0, "후성", -1, 0, null, 74, 75, 63, 0, 160, 250, null, null], + [0, "휴고", -1, 0, null, 63, 71, 38, 0, 160, 250, null, null], + [0, "휴원진", -1, 0, null, 52, 68, 45, 0, 160, 250, null, null], + [0, "희지재", -1, 0, null, 23, 7, 88, 0, 160, 250, null, null], + [0, "왕원희", -1, 0, null, 93, 51, 90, 0, 160, 250, null, null], + [0, "김세정", -1, 0, null, 97, 93, 93, 0, 160, 250, null, null] + ], + "general_ex":[ + ], + "cities":[ + + ], + "history":[ + "●180년 1월:【이벤트】제작자: 세정.", + "●180년 1월:【가상모드11】 삼국지11 영웅 난무", + "●180년 1월:【이벤트】당대의 대표 세력들이 등장합니다." + ], + "initialEvents":[ + + ], + "events":[ + + ] +} \ No newline at end of file diff --git a/hwe/scenario/scenario_900.json b/hwe/scenario/scenario_900.json new file mode 100644 index 00000000..a24fb0de --- /dev/null +++ b/hwe/scenario/scenario_900.json @@ -0,0 +1,38 @@ +{ + "title":"【공백지】 충차전", + "startYear":180, + "map":{ + "mapName":"che", + "unitSet":"siegetank" + }, + "stat":{ + "chiefMin":9 + }, + "history": [ + "●180년 1월:【이벤트】병기로 싸운다! 최고의 충차 지휘관을 가린다" + ], + "initialEvents":[ + [ + true, + ["ChangeCity", "free", { + "pop":"70%", + "agri":"70%", + "comm":"70%", + "secu":"70%", + "rate":80 + }], + ["ChangeCity", "occupied", { + "pop":"70%", + "agri":"70%", + "comm":"70%", + "secu":"70%", + "rate":80, + "def":"70%", + "wall":"70%" + }] + ] + ], + "events":[ + + ] +} \ No newline at end of file diff --git a/hwe/scenario/unit/basic.php b/hwe/scenario/unit/basic.php new file mode 100644 index 00000000..0f2159e9 --- /dev/null +++ b/hwe/scenario/unit/basic.php @@ -0,0 +1,79 @@ +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], + ['엄청난 위력으로 성벽을 부수어버립니다.'] + ] + ]; +} \ No newline at end of file diff --git a/hwe/scenario/unit/siegetank.php b/hwe/scenario/unit/siegetank.php new file mode 100644 index 00000000..da191770 --- /dev/null +++ b/hwe/scenario/unit/siegetank.php @@ -0,0 +1,94 @@ +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, + [], + [], + ['상대를 저지하는 특수병기입니다.'] + ] + ]; +} \ No newline at end of file diff --git a/hwe/select_npc.php b/hwe/select_npc.php index a3f5cbe6..f79065dc 100644 --- a/hwe/select_npc.php +++ b/hwe/select_npc.php @@ -26,7 +26,7 @@ $nationList = $db->query('SELECT nation,`name`,color,scout,scoutmsg FROM nation <?=UniqueConst::$serverName?>: NPC빙의 - + @@ -51,7 +51,16 @@ foreach (SpecialityConst::WAR as $id=>$values) { $specialAll['-'] = '없음'; echo Json::encode($specialAll); ?> -; +; +var characterInfo = +[$name, $info]){ + $characterAll[$name] = $info; +} +echo Json::encode($characterAll); +?> +; @@ -64,7 +73,7 @@ echo Json::encode($specialAll); = $maxgeneral) { +if ($gencount>= $maxgeneral) { ?> @@ -94,9 +103,38 @@ history.go(-1);
-
-
+
+
+ + + + + + + + + + + + + +
diff --git a/hwe/templates/cityGeneral.php b/hwe/templates/cityGeneral.php index 7aa86c74..2cb6013d 100644 --- a/hwe/templates/cityGeneral.php +++ b/hwe/templates/cityGeneral.php @@ -20,7 +20,7 @@ data-general-nation="" data-general-nation-name="" > - + diff --git a/hwe/turn.php b/hwe/turn.php index 4891f4a8..bbb34b47 100644 --- a/hwe/turn.php +++ b/hwe/turn.php @@ -25,7 +25,7 @@ $myActionCnt = $db->queryFirstField('SELECT con FROM general WHERE `owner`=%i', $con = checkLimit($myActionCnt); if($con >= 2) { - header('location:commandlist.php'); + header('location:commandlist.php', true, 303); exit(); } @@ -46,4 +46,4 @@ case 2://당기기 break; } -header('location:commandlist.php'); +header('location:commandlist.php', true, 303); diff --git a/hwe/turn_pop_core.php b/hwe/turn_pop_core.php index aea18ce7..82d9442f 100644 --- a/hwe/turn_pop_core.php +++ b/hwe/turn_pop_core.php @@ -14,4 +14,4 @@ if($me['level'] >= 5 && $me['nation'] > 0){ pullNationCommand($me['nation'], $me['level']); } -header('location:b_chiefcenter.php'); +header('location:b_chiefcenter.php', true, 303); diff --git a/hwe/turn_push_core.php b/hwe/turn_push_core.php index fc11f984..b7294405 100644 --- a/hwe/turn_push_core.php +++ b/hwe/turn_push_core.php @@ -14,4 +14,4 @@ if($me['level'] >= 5 && $me['nation'] > 0){ pushNationCommand($me['nation'], $me['level']); } -header('location:b_chiefcenter.php'); +header('location:b_chiefcenter.php', true, 303); diff --git a/i_entrance/entrance.php b/i_entrance/entrance.php index 32e5ee53..88690181 100644 --- a/i_entrance/entrance.php +++ b/i_entrance/entrance.php @@ -30,9 +30,9 @@ $acl = $session->acl; - + diff --git a/i_entrance/j_server_change_status.php b/i_entrance/j_server_change_status.php index 6b791b41..5a7f336b 100644 --- a/i_entrance/j_server_change_status.php +++ b/i_entrance/j_server_change_status.php @@ -39,7 +39,39 @@ function doServerModeSet($server, $action, &$response, $session){ $serverPath = $settingObj->getBasePath(); $realServerPath = realpath(dirname(__FILE__)).'/'.$serverPath; - if($action == 'close' && ($userGrade >= 5 || in_array('openClose', $serverAcl))) { //폐쇄 + if($action == 'close') { //폐쇄 + $doClose = false; + if($userGrade >= 5){ + $doClose = true; + } + else if(in_array('openClose', $serverAcl)){ + $doClose = true; + } + + if(!$doClose && in_array('reset', $serverAcl) && file_exists($serverPath.'/d_setting/DB.php')){ + require($serverPath.'/lib.php'); + $localGameStorage = KVStorage::getStorage(DB::db(), 'game_env'); + //천통 이후, 오픈 직후는 닫을 수 있음 + $localGameStorage->cacheValues(['isunited', 'startyear', 'year']); + + if($localGameStorage->isunited){ + $doClose = true; + } + else if($localGameStorage->year < $localGameStorage->startyear + 2){ + $doClose = true; + } + + } + + if(!$doClose){ + if(in_array('reset', $serverAcl)){ + $response['msg'] = '서버 시작 직후, 또는 천하통일 이후에만 닫을 수 있습니다.'; + } + else{ + $response['msg'] = '서버 닫기 권한이 부족합니다.'; + } + return false; + } return $settingObj->closeServer(); } elseif($action == 'reset' && $userGrade >= 6) {//리셋 //FIXME: reset, reset_full 구현 diff --git a/i_entrance/user_info.php b/i_entrance/user_info.php index 2deb8dcd..0b551792 100644 --- a/i_entrance/user_info.php +++ b/i_entrance/user_info.php @@ -18,10 +18,10 @@ require(__dir__.'/../vendor/autoload.php'); - - + + diff --git a/j_login.php b/j_login.php index bed7c852..e83960b4 100644 --- a/j_login.php +++ b/j_login.php @@ -76,7 +76,7 @@ function kakaoOAuthCheck(array $userInfo) : ?array { $refreshTokenValidUntil = TimeUtil::nowAddSeconds($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', [ diff --git a/js/admin_server.js b/js/admin_server.js index b623f4ff..41f11202 100644 --- a/js/admin_server.js +++ b/js/admin_server.js @@ -131,7 +131,7 @@ function drawServerAdminList(serverList){ if(!server.installed){ return true; } - $tr.find('.serv_act_reset').prop('disabled', false); + $tr.find('.serv_act_reset, .serv_act_close').prop('disabled', false); } }); }); diff --git a/js/common.js b/js/common.js index 0e7c6e5a..03af655a 100644 --- a/js/common.js +++ b/js/common.js @@ -194,4 +194,51 @@ function quickReject(errMsg){ var deferred = $.Deferred(); deferred.reject(errMsg); return deferred.promise(); -} \ No newline at end of file +} + +function initTooltip($obj){ + if($obj === undefined){ + $obj = $('.obj_tooltip'); + } + else if(!$obj.hasClass('obj_tooltip')){ + $obj = $obj.find('.obj_tooltip'); + } + console.log($obj); + + $obj.each(function(){ + $target = $(this); + + if($target.data('installHandler')){ + return true; + } + $target.data('installHandler', true); + + $target.mouseover(function(){ + var $objTooltip = $(this); + if($objTooltip.data('setObjTooltip')){ + return true; + } + + var tooltipClassText = $objTooltip.data('tooltip-class'); + if(!tooltipClassText){ + tooltipClassText = ''; + } + var template = '' + .format(tooltipClassText); + + $objTooltip.tooltip({ + title:function(){ + return $.trim($(this).find('.tooltiptext').html()); + }, + template:template, + html:true + }).tooltip('show'); + + $objTooltip.data('setObjTooltip', true); + }); + }); +} + +jQuery(function($){ + initTooltip(); +}); \ No newline at end of file diff --git a/js/entrance.js b/js/entrance.js index 89a9770d..df4109bf 100644 --- a/js/entrance.js +++ b/js/entrance.js @@ -1,8 +1,9 @@ var serverListTemplate = "\ \ - \ + \ <%korName%>섭
\ \ + \ \ - 폐 쇄 중 -\ \ @@ -35,7 +36,7 @@ var serverCreateTemplate = "\ "; var serverLoginTemplate = "\ -\ +\ <%name%>\ \ \ @@ -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}
~ {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); }); }); }