Compare commits
72
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d679a6fed8 | ||
|
|
6fe156eb7c | ||
|
|
663ddbe76a | ||
|
|
30297454f7 | ||
|
|
bc602722bf | ||
|
|
be8f147216 | ||
|
|
b9495fb64a | ||
|
|
07b217b290 | ||
|
|
42fac46062 | ||
|
|
24bc8985d0 | ||
|
|
76a2d5ff63 | ||
|
|
148f32f78b | ||
|
|
62f5b6597e | ||
|
|
7e810b0279 | ||
|
|
2336b29b65 | ||
|
|
185c0e16a0 | ||
|
|
656baeb9ee | ||
|
|
3e06304dc7 | ||
|
|
4bb940c8c5 | ||
|
|
2b376b6aab | ||
|
|
04df26ff83 | ||
|
|
aca4240b92 | ||
|
|
faf26fa8a2 | ||
|
|
030ab1e7ea | ||
|
|
7f2c1d4782 | ||
|
|
9132138a99 | ||
|
|
84875d60bd | ||
|
|
3cbaf76626 | ||
|
|
f4846d0d66 | ||
|
|
f183dcc72b | ||
|
|
63cc5d8e88 | ||
|
|
f858c32fdf | ||
|
|
60eb127d71 | ||
|
|
ede33f3a37 | ||
|
|
ffd53a2390 | ||
|
|
2591fbde67 | ||
|
|
922d3f1938 | ||
|
|
64522ba8a6 | ||
|
|
7b1eedb574 | ||
|
|
7ec6ca605f | ||
|
|
5a5c613814 | ||
|
|
1a3ef20a35 | ||
|
|
fba966177d | ||
|
|
62c72dfdbe | ||
|
|
1ae1ff9b72 | ||
|
|
c1e12c2737 | ||
|
|
de09a66d6f | ||
|
|
3c2012da46 | ||
|
|
d55be54320 | ||
|
|
dcbefa1a96 | ||
|
|
be8f1fff96 | ||
|
|
6117dbdcc0 | ||
|
|
0a39ba1023 | ||
|
|
dae5f65baa | ||
|
|
080bb30103 | ||
|
|
9e647c7ce5 | ||
|
|
73606b0fb4 | ||
|
|
e62eb36cc2 | ||
|
|
6b81f744d4 | ||
|
|
1a9b3b78cb | ||
|
|
c3cbf956d0 | ||
|
|
91188c555d | ||
|
|
913028dd6c | ||
|
|
dfb3f6478d | ||
|
|
6afc6221d3 | ||
|
|
7b5a02487e | ||
|
|
533b79762e | ||
|
|
53b7dbfdd0 | ||
|
|
fd14c5403b | ||
|
|
dc476e73a1 | ||
|
|
e60150705e | ||
|
|
2869ba5c42 |
@@ -12,7 +12,6 @@
|
||||
}
|
||||
},
|
||||
"require": {
|
||||
"brandonwamboldt/utilphp": "^1.1",
|
||||
"sergeytsalkov/meekrodb": "^2.5",
|
||||
"league/plates": "^3.5",
|
||||
"vlucas/valitron": "^1.4",
|
||||
|
||||
Generated
+2
-52
@@ -4,58 +4,8 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "deed9afdc95bc42f84784df67d295223",
|
||||
"content-hash": "7edae9b6be35e66ffd0d180f5fac6679",
|
||||
"packages": [
|
||||
{
|
||||
"name": "brandonwamboldt/utilphp",
|
||||
"version": "1.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/brandonwamboldt/utilphp.git",
|
||||
"reference": "36c32efc4f0679c05163464a550f45c8d83fe683"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/brandonwamboldt/utilphp/zipball/36c32efc4f0679c05163464a550f45c8d83fe683",
|
||||
"reference": "36c32efc4f0679c05163464a550f45c8d83fe683",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"satooshi/php-coveralls": "dev-master"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"utilphp\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Brandon Wamboldt",
|
||||
"email": "brandon.wamboldt@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "util.php is a collection of useful functions and snippets that you need or could use every day, designed to avoid conflicts with existing projects",
|
||||
"homepage": "https://github.com/brandonwamboldt/utilphp",
|
||||
"keywords": [
|
||||
"collection",
|
||||
"helpers",
|
||||
"php",
|
||||
"utility"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/brandonwamboldt/utilphp/issues",
|
||||
"source": "https://github.com/brandonwamboldt/utilphp/tree/master"
|
||||
},
|
||||
"time": "2015-02-02T17:56:14+00:00"
|
||||
},
|
||||
{
|
||||
"name": "brick/math",
|
||||
"version": "0.12.1",
|
||||
@@ -5721,5 +5671,5 @@
|
||||
"platform-overrides": {
|
||||
"php": "8.3"
|
||||
},
|
||||
"plugin-api-version": "2.3.0"
|
||||
"plugin-api-version": "2.6.0"
|
||||
}
|
||||
|
||||
+4
-1
@@ -99,7 +99,10 @@ function logError(string $err, string $errstr, string $errpath, array $trace)
|
||||
$err = str_replace(ROOT, '{ROOT}', $err);
|
||||
$errstr = str_replace(ROOT, '{ROOT}', $errstr);
|
||||
$errpath = str_replace(ROOT, '{ROOT}', $errpath);
|
||||
$trace = array_map(function (string $text) {
|
||||
$trace = array_map(function (string|array $text) {
|
||||
if (is_array($text)) {
|
||||
$text = Json::encode($text);
|
||||
}
|
||||
return str_replace(ROOT, '{ROOT}', $text);
|
||||
}, $trace);
|
||||
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ $queryMap = [
|
||||
];
|
||||
|
||||
if ($reqQueryType === null || !key_exists($reqQueryType, $queryMap)) {
|
||||
$reqQueryType = Util::array_first_key($queryMap);
|
||||
$reqQueryType = array_key_first($queryMap);
|
||||
}
|
||||
|
||||
//로그인 검사
|
||||
|
||||
@@ -686,7 +686,7 @@ function TechLimit($startYear, $year, $tech) : bool {
|
||||
$relYear = $year - $startYear;
|
||||
|
||||
$relMaxTech = Util::valueFit(
|
||||
floor($relYear / 5) + 1,
|
||||
floor($relYear / GameConst::$techLevelIncYear) + GameConst::$initialAllowedTechLevel,
|
||||
1,
|
||||
GameConst::$maxTechLevel
|
||||
);
|
||||
|
||||
@@ -559,7 +559,7 @@ function checkStatistic()
|
||||
|
||||
$nationHist = '';
|
||||
foreach (GameConst::$availableNationType as $nationType) {
|
||||
if (!Util::array_get($nationHists[$nationType])) {
|
||||
if (!($nationHists[$nationType] ?? null)) {
|
||||
$nationHists[$nationType] = '-';
|
||||
}
|
||||
$nationHist .= getNationType($nationType) . "({$nationHists[$nationType]}), ";
|
||||
|
||||
+2
-2
@@ -138,7 +138,7 @@ function JSCitiesBasedOnDistance(int $cityNo, int $maxDistance = 1): array{
|
||||
$distanceList = searchDistance($cityNo, $maxDistance, true);
|
||||
$result = [];
|
||||
for ($dist = 1; $dist <= $maxDistance; $dist++) {
|
||||
$result[$dist] = Util::array_get($distanceList[$dist], []);
|
||||
$result[$dist] = $distanceList[$dist] ?? [];
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
@@ -152,7 +152,7 @@ function printCitiesBasedOnDistance(int $cityNo, int $maxDistance = 1): string
|
||||
for ($dist = 1; $dist <= $maxDistance; $dist++) {
|
||||
$cityList = array_map(function ($cityID) {
|
||||
return CityConst::byID($cityID)->name;
|
||||
}, Util::array_get($distanceList[$dist], []));
|
||||
}, $distanceList[$dist] ?? []);
|
||||
|
||||
$cityStr = join(', ', $cityList);
|
||||
|
||||
|
||||
@@ -1153,21 +1153,25 @@ function fight($tnmt_type, $tnmt, $phs, $group, $g1, $g2, $type)
|
||||
];
|
||||
|
||||
//막판 분노
|
||||
$factor1 = 1.0;
|
||||
$factor2 = 1.0;
|
||||
$ratio = rand() % 300;
|
||||
if ($e1 / 5 > $energy1 && $damage1 > $damage2 && $gen1[$tp] >= $ratio) {
|
||||
$damage2 *= Util::round((rand() % 301 + 200) / 100); // 200 ~ 500%
|
||||
$factor2 = Util::round((rand() % 301 + 200) / 100); // 200 ~ 500%
|
||||
$critical1 = 1;
|
||||
$str = Util::choiceRandom($crticialSkillMap[$tnmt_type]);
|
||||
$log[] = "<S>●</> <Y>{$gen1['name']}</>의 분노의 <M>{$str}</> 공격!";
|
||||
}
|
||||
$ratio = rand() % 300;
|
||||
if ($e2 / 5 > $energy2 && $damage2 > $damage1 && $gen2[$tp] >= $ratio) {
|
||||
$damage1 *= Util::round((rand() % 301 + 200) / 100); // 200 ~ 500%
|
||||
$factor1 = Util::round((rand() % 301 + 200) / 100); // 200 ~ 500%
|
||||
$critical2 = 1;
|
||||
|
||||
$str = Util::choiceRandom($crticialSkillMap[$tnmt_type]);
|
||||
$log[] = "<S>●</> <Y>{$gen2['name']}</>의 분노의 <M>{$str}</> 공격!";
|
||||
}
|
||||
$damage1 *= $factor1;
|
||||
$damage2 *= $factor2;
|
||||
|
||||
//1합 승부
|
||||
if ($phase == 1) {
|
||||
|
||||
|
||||
@@ -144,7 +144,7 @@ function do도시임명(General $general, int $cityID, int $targetOfficerLevel):
|
||||
return '올바르지 않은 도시입니다';
|
||||
}
|
||||
|
||||
if ($general->getVar(GeneralColumn::officer_level) >= 4 && $myPenalty[PenaltyKey::NoChiefChange->value] ?? false) {
|
||||
if ($general->getVar(GeneralColumn::officer_level) >= 4 && ($myPenalty[PenaltyKey::NoChiefChange->value] ?? false)) {
|
||||
return '수뇌인 장수를 변경할 수 없는 상태입니다.';
|
||||
}
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ $penaltyInfo = array_merge($memberPenalty['any'] ?? [], $memberPenalty[DB::prefi
|
||||
|
||||
$penalty = [];
|
||||
foreach($penaltyInfo as $penaltyKey => $penaltyValue){
|
||||
if($penaltyValue['expire'] ?? 0 > TimeUtil::now()){
|
||||
if(($penaltyValue['expire'] ?? 0) > TimeUtil::now()){
|
||||
$penalty[$penaltyKey] = $penaltyValue['value'];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ $penaltyInfo = array_merge($memberPenalty['any'] ?? [], $memberPenalty[DB::prefi
|
||||
|
||||
$penalty = [];
|
||||
foreach ($penaltyInfo as $penaltyKey => $penaltyValue) {
|
||||
if ($penaltyValue['expire'] ?? 0 > TimeUtil::now()) {
|
||||
if (($penaltyValue['expire'] ?? 0) > TimeUtil::now()) {
|
||||
$penalty[$penaltyKey] = $penaltyValue['value'];
|
||||
}
|
||||
}
|
||||
|
||||
+3
-2
@@ -51,8 +51,9 @@ function MessageBox($str)
|
||||
|
||||
function LogText($prefix, $variable)
|
||||
{
|
||||
$text = sprintf('%s : %s'."\r\n", $prefix, TVarDumper::dump($variable));
|
||||
file_put_contents(ROOT.'/d_log/'.UniqueConst::$serverName.'_dbg_logs.txt', $text, FILE_APPEND);
|
||||
return;
|
||||
//$text = sprintf('%s : %s'."\r\n", $prefix, TVarDumper::dump($variable));
|
||||
//file_put_contents(ROOT.'/d_log/'.UniqueConst::$serverName.'_dbg_logs.txt', $text, FILE_APPEND);
|
||||
}
|
||||
|
||||
function prepareDir(string $dirPath, bool $forceCreate=true):bool{
|
||||
|
||||
+9
-1
@@ -8,4 +8,12 @@ $session = Session::getInstance()->setReadOnly();
|
||||
|
||||
$db = DB::db();
|
||||
|
||||
TurnExecutionHelper::executeAllCommand();
|
||||
$updated = false;
|
||||
$locked = false;
|
||||
$lastExecuted = TurnExecutionHelper::executeAllCommand($updated, $locked);
|
||||
Json::die([
|
||||
'result' => true,
|
||||
'updated' => $updated,
|
||||
'locked' => $locked,
|
||||
'lastExecuted' => $lastExecuted,
|
||||
]);
|
||||
+3
-3
@@ -526,7 +526,7 @@ function DeleteConflict($nation)
|
||||
function getConquerNation($city): int
|
||||
{
|
||||
$conflict = Json::decode($city['conflict']);
|
||||
return Util::array_first_key($conflict);
|
||||
return array_key_first($conflict);
|
||||
}
|
||||
|
||||
function ConquerCity(array $admin, General $general, array $city, array $defenderCityGeneralList)
|
||||
@@ -785,8 +785,8 @@ function ConquerCity(array $admin, General $general, array $city, array $defende
|
||||
'officer_set' => 0,
|
||||
];
|
||||
if ($city['level'] > 3) {
|
||||
$query['def'] = 1000;
|
||||
$query['wall'] = 1000;
|
||||
$query['def'] = GameConst::$defaultCityWall;
|
||||
$query['wall'] = GameConst::$defaultCityWall;
|
||||
} else {
|
||||
$query['def'] = $db->sqleval('def_max/2');
|
||||
$query['wall'] = $db->sqleval('wall_max/2');
|
||||
|
||||
@@ -99,7 +99,7 @@ class Join extends \sammo\BaseAPI
|
||||
}
|
||||
|
||||
$gameID = UniqueConst::$serverID;
|
||||
$alreadyJoined = $db->queryFirstField('SELECT count(*) FROM `storage` WHERE `namespace` = %s AND `key` LIKE %s', 'inheritance_result', "{$gameID}_{$userID}_%");
|
||||
$alreadyJoined = $db->queryFirstField('SELECT COUNT(*) FROM `inheritance_result` WHERE `server_id` = %s AND `owner` = %i', $gameID, $userID);
|
||||
if ($alreadyJoined) {
|
||||
//이미 받았음
|
||||
return 0;
|
||||
@@ -157,7 +157,7 @@ class Join extends \sammo\BaseAPI
|
||||
|
||||
$penalty = [];
|
||||
foreach($penaltyInfo as $penaltyKey => $penaltyValue){
|
||||
if($penaltyValue['expire'] ?? 0 > TimeUtil::now()){
|
||||
if(($penaltyValue['expire'] ?? 0) > TimeUtil::now()){
|
||||
$penalty[$penaltyKey] = $penaltyValue['value'];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ class che_척사_오악진형도 extends \sammo\BaseItem{
|
||||
|
||||
public function getWarPowerMultiplier(WarUnit $unit):array{
|
||||
$opposeCrewType = $unit->getOppose()->getCrewType();
|
||||
if($opposeCrewType->reqCities || $opposeCrewType->reqRegions){
|
||||
if($opposeCrewType->reqCities() || $opposeCrewType->reqRegions()){
|
||||
return [1.15, 0.85];
|
||||
}
|
||||
return [1, 1];
|
||||
|
||||
@@ -33,7 +33,7 @@ class event_전투특기_공성 extends \sammo\BaseItem{
|
||||
}
|
||||
|
||||
public function onCalcStat(General $general, string $statName, $value, $aux=null){
|
||||
if(\sammo\Util::starts_with($statName, 'dex')){
|
||||
if(str_starts_with($statName, 'dex')){
|
||||
$myArmType = 'dex'.GameUnitConst::T_SIEGE;
|
||||
$opposeArmType = 'dex'.$aux['opposeType']->armType;;
|
||||
if($aux['isAttacker'] && $opposeArmType === $statName){
|
||||
|
||||
@@ -28,7 +28,7 @@ class event_전투특기_궁병 extends \sammo\BaseItem{
|
||||
if($statName === 'warAvoidRatio'){
|
||||
return $value + 0.2;
|
||||
}
|
||||
if(\sammo\Util::starts_with($statName, 'dex')){
|
||||
if(str_starts_with($statName, 'dex')){
|
||||
$myArmType = 'dex'.GameUnitConst::T_ARCHER;
|
||||
$opposeArmType = 'dex'.$aux['opposeType']->armType;;
|
||||
if($aux['isAttacker'] && $opposeArmType === $statName){
|
||||
|
||||
@@ -28,7 +28,7 @@ class event_전투특기_귀병 extends \sammo\BaseItem{
|
||||
if($statName === 'warMagicSuccessProb'){
|
||||
return $value + 0.2;
|
||||
}
|
||||
if(\sammo\Util::starts_with($statName, 'dex')){
|
||||
if(str_starts_with($statName, 'dex')){
|
||||
$myArmType = 'dex'.GameUnitConst::T_WIZARD;
|
||||
$opposeArmType = 'dex'.$aux['opposeType']->armType;;
|
||||
if($aux['isAttacker'] && $opposeArmType === $statName){
|
||||
|
||||
@@ -32,7 +32,7 @@ class event_전투특기_기병 extends \sammo\BaseItem{
|
||||
}
|
||||
|
||||
public function onCalcStat(General $general, string $statName, $value, $aux=null){
|
||||
if(\sammo\Util::starts_with($statName, 'dex')){
|
||||
if(str_starts_with($statName, 'dex')){
|
||||
$myArmType = 'dex'.GameUnitConst::T_CAVALRY;
|
||||
$opposeArmType = 'dex'.$aux['opposeType']->armType;;
|
||||
if($aux['isAttacker'] && $opposeArmType === $statName){
|
||||
|
||||
@@ -33,7 +33,7 @@ class event_전투특기_보병 extends \sammo\BaseItem{
|
||||
}
|
||||
|
||||
public function onCalcStat(General $general, string $statName, $value, $aux=null){
|
||||
if(\sammo\Util::starts_with($statName, 'dex')){
|
||||
if(str_starts_with($statName, 'dex')){
|
||||
$myArmType = 'dex'.GameUnitConst::T_FOOTMAN;
|
||||
$opposeArmType = 'dex'.$aux['opposeType']->armType;;
|
||||
if($aux['isAttacker'] && $opposeArmType === $statName){
|
||||
|
||||
@@ -17,7 +17,7 @@ class event_전투특기_척사 extends \sammo\BaseItem{
|
||||
|
||||
public function getWarPowerMultiplier(WarUnit $unit):array{
|
||||
$opposeCrewType = $unit->getOppose()->getCrewType();
|
||||
if($opposeCrewType->reqCities || $opposeCrewType->reqRegions){
|
||||
if($opposeCrewType->reqCities() || $opposeCrewType->reqRegions()){
|
||||
return [1.2, 0.8];
|
||||
}
|
||||
return [1, 1];
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace sammo\ActionScenarioEffect;
|
||||
|
||||
use \sammo\iAction;
|
||||
use sammo\Util;
|
||||
use sammo\WarUnit;
|
||||
use sammo\WarUnitCity;
|
||||
use sammo\WarUnitTrigger\che_전멸시페이즈증가;
|
||||
use sammo\WarUnitTriggerCaller;
|
||||
|
||||
class event_MoreEffect implements iAction
|
||||
{
|
||||
use \sammo\DefaultAction;
|
||||
|
||||
public function getWarPowerMultiplier(WarUnit $unit): array
|
||||
{
|
||||
if ($unit->isAttacker()) {
|
||||
return [1.4, 0.7143];
|
||||
}
|
||||
return [1, 1];
|
||||
}
|
||||
|
||||
public function onCalcDomestic(string $turnType, string $varType, float $value, $aux = null): float
|
||||
{
|
||||
$scoreMap = [
|
||||
'상업' => 2,
|
||||
'농업' => 2,
|
||||
'치안' => 2,
|
||||
'기술' => 2,
|
||||
'성벽' => 2,
|
||||
'수비' => 2,
|
||||
'인구' => 2,
|
||||
'민심' => 2,
|
||||
];
|
||||
if ($turnType == 'changeDefenceTrain') {
|
||||
return 0;
|
||||
}
|
||||
if ($varType === 'score' && key_exists($turnType, $scoreMap)) {
|
||||
$multiplier = $scoreMap[$turnType];
|
||||
$value *= $multiplier;
|
||||
return $value;
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
public function onCalcNationalIncome(string $type, $amount){
|
||||
if($type == 'gold'){
|
||||
return $amount * 2;
|
||||
}
|
||||
if($type == 'rice'){
|
||||
return $amount * 2;
|
||||
}
|
||||
if($type == 'pop' && $amount > 0){
|
||||
return $amount * 2;
|
||||
}
|
||||
|
||||
return $amount;
|
||||
}
|
||||
|
||||
public function getBattlePhaseSkillTriggerList(\sammo\WarUnit $unit): ?WarUnitTriggerCaller
|
||||
{
|
||||
return new WarUnitTriggerCaller(
|
||||
new che_전멸시페이즈증가($unit),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -35,7 +35,7 @@ class che_event_공성 extends \sammo\BaseSpecial{
|
||||
}
|
||||
|
||||
public function onCalcStat(General $general, string $statName, $value, $aux=null){
|
||||
if(\sammo\Util::starts_with($statName, 'dex')){
|
||||
if(str_starts_with($statName, 'dex')){
|
||||
$myArmType = 'dex'.GameUnitConst::T_SIEGE;
|
||||
$opposeArmType = 'dex'.$aux['opposeType']->armType;;
|
||||
if($aux['isAttacker'] && $opposeArmType === $statName){
|
||||
|
||||
@@ -31,7 +31,7 @@ class che_event_궁병 extends \sammo\BaseSpecial{
|
||||
if($statName === 'warAvoidRatio'){
|
||||
return $value + 0.2;
|
||||
}
|
||||
if(\sammo\Util::starts_with($statName, 'dex')){
|
||||
if(str_starts_with($statName, 'dex')){
|
||||
$myArmType = 'dex'.GameUnitConst::T_ARCHER;
|
||||
$opposeArmType = 'dex'.$aux['opposeType']->armType;;
|
||||
if($aux['isAttacker'] && $opposeArmType === $statName){
|
||||
|
||||
@@ -30,7 +30,7 @@ class che_event_귀병 extends \sammo\BaseSpecial{
|
||||
if($statName === 'warMagicSuccessProb'){
|
||||
return $value + 0.2;
|
||||
}
|
||||
if(\sammo\Util::starts_with($statName, 'dex')){
|
||||
if(str_starts_with($statName, 'dex')){
|
||||
$myArmType = 'dex'.GameUnitConst::T_WIZARD;
|
||||
$opposeArmType = 'dex'.$aux['opposeType']->armType;;
|
||||
if($aux['isAttacker'] && $opposeArmType === $statName){
|
||||
|
||||
@@ -35,7 +35,7 @@ class che_event_기병 extends \sammo\BaseSpecial{
|
||||
}
|
||||
|
||||
public function onCalcStat(General $general, string $statName, $value, $aux=null){
|
||||
if(\sammo\Util::starts_with($statName, 'dex')){
|
||||
if(str_starts_with($statName, 'dex')){
|
||||
$myArmType = 'dex'.GameUnitConst::T_CAVALRY;
|
||||
$opposeArmType = 'dex'.$aux['opposeType']->armType;;
|
||||
if($aux['isAttacker'] && $opposeArmType === $statName){
|
||||
|
||||
@@ -35,7 +35,7 @@ class che_event_보병 extends \sammo\BaseSpecial{
|
||||
}
|
||||
|
||||
public function onCalcStat(General $general, string $statName, $value, $aux=null){
|
||||
if(\sammo\Util::starts_with($statName, 'dex')){
|
||||
if(str_starts_with($statName, 'dex')){
|
||||
$myArmType = 'dex'.GameUnitConst::T_FOOTMAN;
|
||||
$opposeArmType = 'dex'.$aux['opposeType']->armType;;
|
||||
if($aux['isAttacker'] && $opposeArmType === $statName){
|
||||
|
||||
@@ -21,7 +21,7 @@ class che_event_척사 extends \sammo\BaseSpecial{
|
||||
|
||||
public function getWarPowerMultiplier(WarUnit $unit):array{
|
||||
$opposeCrewType = $unit->getOppose()->getCrewType();
|
||||
if($opposeCrewType->reqCities || $opposeCrewType->reqRegions){
|
||||
if($opposeCrewType->reqCities() || $opposeCrewType->reqRegions()){
|
||||
return [1.2, 0.8];
|
||||
}
|
||||
return [1, 1];
|
||||
|
||||
@@ -35,7 +35,7 @@ class che_공성 extends \sammo\BaseSpecial{
|
||||
}
|
||||
|
||||
public function onCalcStat(General $general, string $statName, $value, $aux=null){
|
||||
if(\sammo\Util::starts_with($statName, 'dex')){
|
||||
if(str_starts_with($statName, 'dex')){
|
||||
$myArmType = 'dex'.GameUnitConst::T_SIEGE;
|
||||
$opposeArmType = 'dex'.$aux['opposeType']->armType;;
|
||||
if($aux['isAttacker'] && $opposeArmType === $statName){
|
||||
|
||||
@@ -31,7 +31,7 @@ class che_궁병 extends \sammo\BaseSpecial{
|
||||
if($statName === 'warAvoidRatio'){
|
||||
return $value + 0.2;
|
||||
}
|
||||
if(\sammo\Util::starts_with($statName, 'dex')){
|
||||
if(str_starts_with($statName, 'dex')){
|
||||
$myArmType = 'dex'.GameUnitConst::T_ARCHER;
|
||||
$opposeArmType = 'dex'.$aux['opposeType']->armType;;
|
||||
if($aux['isAttacker'] && $opposeArmType === $statName){
|
||||
|
||||
@@ -30,7 +30,7 @@ class che_귀병 extends \sammo\BaseSpecial{
|
||||
if($statName === 'warMagicSuccessProb'){
|
||||
return $value + 0.2;
|
||||
}
|
||||
if(\sammo\Util::starts_with($statName, 'dex')){
|
||||
if(str_starts_with($statName, 'dex')){
|
||||
$myArmType = 'dex'.GameUnitConst::T_WIZARD;
|
||||
$opposeArmType = 'dex'.$aux['opposeType']->armType;;
|
||||
if($aux['isAttacker'] && $opposeArmType === $statName){
|
||||
|
||||
@@ -35,7 +35,7 @@ class che_기병 extends \sammo\BaseSpecial{
|
||||
}
|
||||
|
||||
public function onCalcStat(General $general, string $statName, $value, $aux=null){
|
||||
if(\sammo\Util::starts_with($statName, 'dex')){
|
||||
if(str_starts_with($statName, 'dex')){
|
||||
$myArmType = 'dex'.GameUnitConst::T_CAVALRY;
|
||||
$opposeArmType = 'dex'.$aux['opposeType']->armType;;
|
||||
if($aux['isAttacker'] && $opposeArmType === $statName){
|
||||
|
||||
@@ -35,7 +35,7 @@ class che_보병 extends \sammo\BaseSpecial{
|
||||
}
|
||||
|
||||
public function onCalcStat(General $general, string $statName, $value, $aux=null){
|
||||
if(\sammo\Util::starts_with($statName, 'dex')){
|
||||
if(str_starts_with($statName, 'dex')){
|
||||
$myArmType = 'dex'.GameUnitConst::T_FOOTMAN;
|
||||
$opposeArmType = 'dex'.$aux['opposeType']->armType;;
|
||||
if($aux['isAttacker'] && $opposeArmType === $statName){
|
||||
|
||||
@@ -21,7 +21,7 @@ class che_척사 extends \sammo\BaseSpecial{
|
||||
|
||||
public function getWarPowerMultiplier(WarUnit $unit):array{
|
||||
$opposeCrewType = $unit->getOppose()->getCrewType();
|
||||
if($opposeCrewType->reqCities || $opposeCrewType->reqRegions){
|
||||
if($opposeCrewType->reqCities() || $opposeCrewType->reqRegions()){
|
||||
return [1.2, 0.8];
|
||||
}
|
||||
return [1, 1];
|
||||
|
||||
@@ -5,6 +5,7 @@ use \sammo\{
|
||||
Util, JosaUtil, DB,
|
||||
General, GameConst,
|
||||
ActionLogger,
|
||||
Json,
|
||||
LastTurn,
|
||||
NotInheritedMethodException,
|
||||
RandUtil
|
||||
@@ -118,6 +119,7 @@ abstract class BaseCommand{
|
||||
$nationID = $this->generalObj->getNationID();
|
||||
if($nationID == 0){
|
||||
$this->nation = $this->generalObj->getStaticNation();
|
||||
$this->nation['aux'] = [];
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -138,7 +140,8 @@ abstract class BaseCommand{
|
||||
'gold'=>0,
|
||||
'rice'=>2000,
|
||||
'tech'=>0,
|
||||
'gennum'=>1
|
||||
'gennum'=>1,
|
||||
'aux'=>'{}',
|
||||
];
|
||||
|
||||
if($this->nation && $this->nation['nation'] === $nationID){
|
||||
@@ -170,6 +173,10 @@ abstract class BaseCommand{
|
||||
else{
|
||||
$this->nation = $nation;
|
||||
}
|
||||
|
||||
if(is_string($this->nation['aux'] ?? null)){
|
||||
$this->nation['aux'] = Json::decode($this->nation['aux']);
|
||||
}
|
||||
}
|
||||
|
||||
protected function setDestGeneral(General $destGeneralObj){
|
||||
@@ -312,12 +319,12 @@ abstract class BaseCommand{
|
||||
|
||||
$this->generalObj->unpackAux();
|
||||
$constraintInput = [
|
||||
'general'=>$this->generalObj->getRaw(),
|
||||
'general'=>$this->generalObj,
|
||||
'city'=>$this->city,
|
||||
'nation'=>$this->nation,
|
||||
'cmd_arg'=>$this->arg,
|
||||
|
||||
'destGeneral'=>$this->destGeneralObj?$this->destGeneralObj->getRaw():null,
|
||||
'destGeneral'=>$this->destGeneralObj??null,
|
||||
'destCity'=>$this->destCity,
|
||||
'destNation'=>$this->destNation,
|
||||
];
|
||||
@@ -346,12 +353,12 @@ abstract class BaseCommand{
|
||||
|
||||
$this->generalObj->unpackAux();
|
||||
$constraintInput = [
|
||||
'general'=>$this->generalObj->getRaw(),
|
||||
'general'=>$this->generalObj,
|
||||
'city'=>$this->city,
|
||||
'nation'=>$this->nation,
|
||||
'cmd_arg'=>$this->arg,
|
||||
|
||||
'destGeneral'=>$this->destGeneralObj?$this->destGeneralObj->getRaw():null,
|
||||
'destGeneral'=>$this->destGeneralObj??null,
|
||||
'destCity'=>$this->destCity,
|
||||
'destNation'=>$this->destNation,
|
||||
];
|
||||
@@ -384,12 +391,12 @@ abstract class BaseCommand{
|
||||
|
||||
$this->generalObj->unpackAux();
|
||||
$constraintInput = [
|
||||
'general'=>$this->generalObj->getRaw(),
|
||||
'general'=>$this->generalObj,
|
||||
'city'=>$this->city,
|
||||
'nation'=>$this->nation,
|
||||
'cmd_arg'=>$this->arg,
|
||||
|
||||
'destGeneral'=>$this->destGeneralObj?$this->destGeneralObj->getRaw():null,
|
||||
'destGeneral'=>$this->destGeneralObj??null,
|
||||
'destCity'=>$this->destCity,
|
||||
'destNation'=>$this->destNation,
|
||||
];
|
||||
|
||||
@@ -183,7 +183,7 @@ class che_건국 extends Command\GeneralCommand
|
||||
$general->addExperience($exp);
|
||||
$general->addDedication($ded);
|
||||
|
||||
$aux = Json::decode($this->nation['aux']) ?? [];
|
||||
$aux = $this->nation['aux'];
|
||||
$aux['can_국기변경'] = 1;
|
||||
|
||||
$db->update('city', [
|
||||
|
||||
@@ -181,7 +181,7 @@ class che_랜덤임관 extends Command\GeneralCommand
|
||||
if ($notIn) {
|
||||
|
||||
$rawGeneralsCnt = $db->query(
|
||||
"SELECT g.`nation`, n.`gennum`, n.name, SUM((ra.value + 1000)/(rb.value + 1000)*(CASE WHEN g.`npc` < 2 THEN 1.2 ELSE 1 END)*(CASE WHEN g.`leadership` >= 40 THEN g.`leadership` ELSE 0 END)) AS warpower, SUM(SQRT(g.intel * g.strength) * 2 + g.leadership / 2)/5 AS develpower
|
||||
"SELECT g.`nation`, n.`gennum`, n.name, SUM((ra.value + 50000)/(rb.value + 50000)*(CASE WHEN g.`npc` < 2 THEN 1.15 ELSE 1 END)*(CASE WHEN g.`leadership` >= 40 THEN g.`leadership` ELSE 0 END)) AS warpower, SUM(SQRT(g.intel * g.strength) * 2 + g.leadership / 2)/5 AS develpower
|
||||
FROM general AS g
|
||||
LEFT JOIN `rank_data` AS ra ON g.`no` = ra.general_id AND ra.`type` = 'killcrew_person'
|
||||
LEFT JOIN `rank_data` AS rb ON g.`no` = rb.general_id AND rb.`type` = 'deathcrew_person'
|
||||
@@ -193,7 +193,7 @@ class che_랜덤임관 extends Command\GeneralCommand
|
||||
);
|
||||
} else {
|
||||
$rawGeneralsCnt = $db->query(
|
||||
"SELECT g.`nation`, n.`gennum`, n.name, SUM((ra.value + 100)/(rb.value + 100)*(CASE WHEN g.`npc` < 2 THEN 1.2 ELSE 1 END)*(CASE WHEN g.`leadership` >= 40 THEN g.`leadership` ELSE 0 END)) AS warpower, SUM(SQRT(g.intel * g.strength) * 2 + g.leadership / 2)/5 AS develpower
|
||||
"SELECT g.`nation`, n.`gennum`, n.name, SUM((ra.value + 50000)/(rb.value + 50000)*(CASE WHEN g.`npc` < 2 THEN 1.15 ELSE 1 END)*(CASE WHEN g.`leadership` >= 40 THEN g.`leadership` ELSE 0 END)) AS warpower, SUM(SQRT(g.intel * g.strength) * 2 + g.leadership / 2)/5 AS develpower
|
||||
FROM general AS g
|
||||
LEFT JOIN `rank_data` AS ra ON g.`no` = ra.general_id AND ra.`type` = 'killcrew_person'
|
||||
LEFT JOIN `rank_data` AS rb ON g.`no` = rb.general_id AND rb.`type` = 'deathcrew_person'
|
||||
@@ -208,7 +208,7 @@ class che_랜덤임관 extends Command\GeneralCommand
|
||||
foreach ($rawGeneralsCnt as $nation) {
|
||||
$calcCnt = $nation['warpower'] + $nation['develpower'];
|
||||
|
||||
if ($general->getNPCType() < 2 && Util::starts_with($nation['name'], 'ⓤ')) {
|
||||
if ($general->getNPCType() < 2 && str_starts_with($nation['name'], 'ⓤ')) {
|
||||
$calcCnt *= 100;
|
||||
}
|
||||
|
||||
|
||||
@@ -194,7 +194,7 @@ class che_무작위건국 extends Command\GeneralCommand
|
||||
$general->addExperience($exp);
|
||||
$general->addDedication($ded);
|
||||
|
||||
$aux = Json::decode($this->nation['aux']) ?? [];
|
||||
$aux = $this->nation['aux'];
|
||||
$aux['can_국기변경'] = 1;
|
||||
$aux['can_무작위수도이전'] = 1;
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ class che_징병 extends Command\GeneralCommand
|
||||
protected function init()
|
||||
{
|
||||
$this->setCity();
|
||||
$this->setNation(['tech']);
|
||||
$this->setNation(['tech', 'aux']);
|
||||
|
||||
$this->minConditionConstraints = [
|
||||
ConstraintHelper::NotBeNeutral(),
|
||||
@@ -281,14 +281,14 @@ class che_징병 extends Command\GeneralCommand
|
||||
|
||||
$crewObj->id = $unit->id;
|
||||
/** @var ?\sammo\GameUnitConstraints\ReqTech */
|
||||
$reqTechObj = $unit->reqConstraints['reqTech'] ?? null;
|
||||
$reqTechObj = $unit->reqConstraints['ReqTech'] ?? null;
|
||||
$crewObj->reqTech = $reqTechObj ? $reqTechObj->reqTech : 0;
|
||||
|
||||
/** @var ?\sammo\GameUnitConstraint\ReqMinRelYear */
|
||||
$reqMinRelYearObj = $unit->reqConstraints['reqMinRelYear'] ?? null;
|
||||
$crewObj->reqYear = $reqMinRelYearObj ? $reqMinRelYearObj->reqMinRelYear : 0;
|
||||
|
||||
$crewObj->notAvailable = !$unit->isValid($general, $ownCities, $ownRegions, $relativeYear, $tech);
|
||||
$crewObj->notAvailable = !$unit->isValid($general, $ownCities, $ownRegions, $relativeYear, $tech, $this->nation['aux']);
|
||||
|
||||
$crewObj->baseRice = $general->onCalcDomestic($this->getName(), 'rice', $unit->riceWithTech($tech), ['armType' => $unit->armType]);
|
||||
$crewObj->baseCost = $general->onCalcDomestic($this->getName(), 'cost', $unit->costWithTech($tech), ['armType' => $unit->armType]);
|
||||
|
||||
@@ -164,7 +164,7 @@ class che_출병 extends Command\GeneralCommand
|
||||
|
||||
$currDist = 999;
|
||||
|
||||
$minDist = Util::array_first_key($distanceList);
|
||||
$minDist = array_key_first($distanceList);
|
||||
do {
|
||||
//1: 최단 거리 도시 중 공격 대상이 있는가 확인
|
||||
//2: 최단 거리 + 1 도시 중 공격 대상이 있는가 확인
|
||||
|
||||
@@ -180,7 +180,7 @@ class cr_건국 extends Command\GeneralCommand
|
||||
$general->addExperience($exp);
|
||||
$general->addDedication($ded);
|
||||
|
||||
$aux = Json::decode($this->nation['aux']) ?? [];
|
||||
$aux = $this->nation['aux'];
|
||||
$aux['can_국기변경'] = 1;
|
||||
|
||||
$db->update('city', [
|
||||
|
||||
@@ -122,7 +122,7 @@ class che_국기변경 extends Command\NationCommand
|
||||
$josaYi = JosaUtil::pick($generalName, '이');
|
||||
$josaYiNation = JosaUtil::pick($nationName, '이');
|
||||
|
||||
$aux = Json::decode($this->nation['aux']);
|
||||
$aux = $this->nation['aux'];
|
||||
$aux["can_{$actionName}"] = 0;
|
||||
|
||||
$db->update('nation', [
|
||||
|
||||
@@ -140,7 +140,7 @@ class che_국호변경 extends Command\NationCommand
|
||||
$josaYi = JosaUtil::pick($generalName, '이');
|
||||
$josaYiNation = JosaUtil::pick($nationName, '이');
|
||||
|
||||
$aux = Json::decode($this->nation['aux']);
|
||||
$aux = $this->nation['aux'];
|
||||
$aux["can_{$actionName}"] = 0;
|
||||
|
||||
$db->update('nation', [
|
||||
|
||||
@@ -119,7 +119,7 @@ class che_무작위수도이전 extends Command\NationCommand
|
||||
$josaYi = JosaUtil::pick($generalName, '이');
|
||||
$josaYiNation = JosaUtil::pick($nationName, '이');
|
||||
|
||||
$aux = Json::decode($this->nation['aux']);
|
||||
$aux = $this->nation['aux'];
|
||||
$aux["can_무작위수도이전"] -= 1;
|
||||
|
||||
$db->update('city', [
|
||||
|
||||
@@ -13,12 +13,14 @@ use \sammo\{
|
||||
Message,
|
||||
CityConst,
|
||||
CityInitialDetail,
|
||||
Json,
|
||||
StaticEventHandler
|
||||
};
|
||||
|
||||
use \sammo\Constraint\Constraint;
|
||||
use \sammo\Constraint\ConstraintHelper;
|
||||
use sammo\Enums\InheritanceKey;
|
||||
use sammo\Enums\NationAuxKey;
|
||||
use sammo\Event\Action;
|
||||
|
||||
class che_초토화 extends Command\NationCommand{
|
||||
@@ -52,7 +54,7 @@ class che_초토화 extends Command\NationCommand{
|
||||
$env = $this->env;
|
||||
|
||||
$this->setCity();
|
||||
$this->setNation(['surlimit', 'gold', 'rice', 'capital']);
|
||||
$this->setNation(['surlimit', 'gold', 'rice', 'capital', 'aux']);
|
||||
|
||||
$this->minConditionConstraints=[
|
||||
ConstraintHelper::OccupiedCity(),
|
||||
@@ -157,6 +159,11 @@ class che_초토화 extends Command\NationCommand{
|
||||
$josaYiNation = JosaUtil::pick($nationName, '이');
|
||||
|
||||
$amount = $this->calcReturnAmount($destCity);
|
||||
$aux = $this->nation['aux'];
|
||||
|
||||
if($destCity['level'] >= 8){
|
||||
$aux[NationAuxKey::did_특성초토화->value] = ($aux[NationAuxKey::did_특성초토화->value] ?? 0) + 1;
|
||||
}
|
||||
|
||||
$db->update('general', [
|
||||
'experience'=>$db->sqleval('experience * 0.9')
|
||||
@@ -184,6 +191,7 @@ class che_초토화 extends Command\NationCommand{
|
||||
'gold' => $db->sqleval('gold + %i', $amount),
|
||||
'rice' => $db->sqleval('rice + %i', $amount),
|
||||
'surlimit' => $db->sqleval('surlimit + %i', $this->getPostReqTurn()),
|
||||
'aux' => Json::encode($aux),
|
||||
], 'nation=%i', $nationID);
|
||||
|
||||
\sammo\refreshNationStaticInfo();
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
<?php
|
||||
namespace sammo\Command\Nation;
|
||||
|
||||
use \sammo\Command;
|
||||
use sammo\Constraint\ConstraintHelper;
|
||||
use sammo\DB;
|
||||
use sammo\Enums\InheritanceKey;
|
||||
use sammo\Enums\NationAuxKey;
|
||||
use \sammo\Util;
|
||||
use \sammo\JosaUtil;
|
||||
use sammo\Json;
|
||||
use sammo\LastTurn;
|
||||
use sammo\StaticEventHandler;
|
||||
use sammo\GameConst;
|
||||
|
||||
class event_극병연구 extends Command\NationCommand{
|
||||
static protected $actionName = '극병 연구';
|
||||
static protected $auxType = NationAuxKey::can_극병사용;
|
||||
|
||||
protected function argTest():bool{
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function init(){
|
||||
$this->setCity();
|
||||
$this->setNation(['gold','rice','aux']);
|
||||
$this->fullConditionConstraints=[];
|
||||
|
||||
$name = static::$actionName;
|
||||
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
|
||||
$this->minConditionConstraints = [
|
||||
ConstraintHelper::OccupiedCity(),
|
||||
ConstraintHelper::BeChief(),
|
||||
ConstraintHelper::ReqNationAuxValue(static::$auxType->value, 0, "<", 1, "{$name}가 이미 완료되었습니다."),
|
||||
ConstraintHelper::ReqNationGold(GameConst::$basegold + $reqGold),
|
||||
ConstraintHelper::ReqNationRice(GameConst::$baserice + $reqRice),
|
||||
];
|
||||
|
||||
$this->fullConditionConstraints = $this->minConditionConstraints;
|
||||
}
|
||||
|
||||
public function getCommandDetailTitle():string{
|
||||
$name = $this->getName();
|
||||
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
$reqTurn = $this->getPreReqTurn()+1;
|
||||
|
||||
$reqGoldD5 = number_format($reqGold / 10000);
|
||||
$reqRiceD5 = number_format($reqRice / 10000);
|
||||
|
||||
return "{$name}/{$reqTurn}턴(금/쌀 {$reqGoldD5}만)";
|
||||
}
|
||||
|
||||
public function getPreReqTurn():int{
|
||||
return 23;
|
||||
}
|
||||
|
||||
public function getPostReqTurn():int{
|
||||
return 0;
|
||||
}
|
||||
|
||||
public function getCost():array{
|
||||
return [100000, 100000];
|
||||
}
|
||||
|
||||
public function run(\Sammo\RandUtil $rng):bool{
|
||||
if(!$this->hasFullConditionMet()){
|
||||
throw new \RuntimeException('불가능한 커맨드를 강제로 실행 시도');
|
||||
}
|
||||
|
||||
$db = DB::db();
|
||||
$general = $this->generalObj;
|
||||
$nationID = $general->getNationID();
|
||||
|
||||
$actionName = static::$actionName;
|
||||
|
||||
$aux = $this->nation['aux'];
|
||||
$aux[static::$auxType->value] = 1;
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
|
||||
$logger = $general->getLogger();
|
||||
|
||||
$general->addExperience(5 * ($this->getPreReqTurn() + 1));
|
||||
$general->addDedication(5 * ($this->getPreReqTurn() + 1));
|
||||
|
||||
$generalName = $general->getName();
|
||||
$josaYi = JosaUtil::pick($generalName, '이');
|
||||
|
||||
$db->update('nation', [
|
||||
'gold' => $db->sqleval('gold - %i', $reqGold),
|
||||
'rice' => $db->sqleval('rice - %i', $reqRice),
|
||||
'aux' => Json::encode($aux),
|
||||
], 'nation=%i', $nationID);
|
||||
|
||||
$logger->pushGeneralActionLog("<M>{$actionName}</> 완료");
|
||||
$logger->pushGeneralHistoryLog("<M>{$actionName}</> 완료");
|
||||
$logger->pushNationalHistoryLog("<Y>{$generalName}</>{$josaYi} <M>{$actionName}</> 완료");
|
||||
|
||||
$general->increaseInheritancePoint(InheritanceKey::active_action, 1);
|
||||
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg ?? []);
|
||||
$this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0));
|
||||
$general->applyDB($db);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
namespace sammo\Command\Nation;
|
||||
|
||||
use \sammo\Command;
|
||||
use sammo\Constraint\ConstraintHelper;
|
||||
use sammo\DB;
|
||||
use sammo\Enums\InheritanceKey;
|
||||
use sammo\Enums\NationAuxKey;
|
||||
use \sammo\Util;
|
||||
use \sammo\JosaUtil;
|
||||
use sammo\Json;
|
||||
use sammo\LastTurn;
|
||||
use sammo\StaticEventHandler;
|
||||
use sammo\GameConst;
|
||||
|
||||
class event_대검병연구 extends Command\NationCommand{
|
||||
static protected $actionName = '대검병 연구';
|
||||
static protected $auxType = NationAuxKey::can_대검병사용;
|
||||
|
||||
protected function argTest():bool{
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function init(){
|
||||
$this->setCity();
|
||||
$this->setNation(['gold','rice','aux']);
|
||||
$this->fullConditionConstraints=[];
|
||||
|
||||
$name = static::$actionName;
|
||||
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
$this->minConditionConstraints = [
|
||||
ConstraintHelper::OccupiedCity(),
|
||||
ConstraintHelper::BeChief(),
|
||||
ConstraintHelper::ReqNationAuxValue(static::$auxType->value, 0, "<", 1, "{$name}가 이미 완료되었습니다."),
|
||||
ConstraintHelper::ReqNationGold(GameConst::$basegold + $reqGold),
|
||||
ConstraintHelper::ReqNationRice(GameConst::$baserice + $reqRice),
|
||||
];
|
||||
|
||||
$this->fullConditionConstraints = $this->minConditionConstraints;
|
||||
}
|
||||
|
||||
public function getCommandDetailTitle():string{
|
||||
$name = $this->getName();
|
||||
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
$reqTurn = $this->getPreReqTurn()+1;
|
||||
|
||||
$reqGoldD5 = number_format($reqGold / 10000);
|
||||
$reqRiceD5 = number_format($reqRice / 10000);
|
||||
|
||||
return "{$name}/{$reqTurn}턴(금/쌀 {$reqGoldD5}만)";
|
||||
}
|
||||
|
||||
public function getPreReqTurn():int{
|
||||
return 11;
|
||||
}
|
||||
|
||||
public function getPostReqTurn():int{
|
||||
return 0;
|
||||
}
|
||||
|
||||
public function getCost():array{
|
||||
return [50000, 50000];
|
||||
}
|
||||
|
||||
public function run(\Sammo\RandUtil $rng):bool{
|
||||
if(!$this->hasFullConditionMet()){
|
||||
throw new \RuntimeException('불가능한 커맨드를 강제로 실행 시도');
|
||||
}
|
||||
|
||||
$db = DB::db();
|
||||
$general = $this->generalObj;
|
||||
$nationID = $general->getNationID();
|
||||
|
||||
$actionName = static::$actionName;
|
||||
|
||||
$aux = $this->nation['aux'];
|
||||
$aux[static::$auxType->value] = 1;
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
|
||||
$logger = $general->getLogger();
|
||||
|
||||
$general->addExperience(5 * ($this->getPreReqTurn() + 1));
|
||||
$general->addDedication(5 * ($this->getPreReqTurn() + 1));
|
||||
|
||||
$generalName = $general->getName();
|
||||
$josaYi = JosaUtil::pick($generalName, '이');
|
||||
|
||||
$db->update('nation', [
|
||||
'gold' => $db->sqleval('gold - %i', $reqGold),
|
||||
'rice' => $db->sqleval('rice - %i', $reqRice),
|
||||
'aux' => Json::encode($aux),
|
||||
], 'nation=%i', $nationID);
|
||||
|
||||
$logger->pushGeneralActionLog("<M>{$actionName}</> 완료");
|
||||
$logger->pushGeneralHistoryLog("<M>{$actionName}</> 완료");
|
||||
$logger->pushNationalHistoryLog("<Y>{$generalName}</>{$josaYi} <M>{$actionName}</> 완료");
|
||||
|
||||
$general->increaseInheritancePoint(InheritanceKey::active_action, 1);
|
||||
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg ?? []);
|
||||
$this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0));
|
||||
$general->applyDB($db);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
namespace sammo\Command\Nation;
|
||||
|
||||
use \sammo\Command;
|
||||
use sammo\Constraint\ConstraintHelper;
|
||||
use sammo\DB;
|
||||
use sammo\Enums\InheritanceKey;
|
||||
use sammo\Enums\NationAuxKey;
|
||||
use \sammo\Util;
|
||||
use \sammo\JosaUtil;
|
||||
use sammo\Json;
|
||||
use sammo\LastTurn;
|
||||
use sammo\StaticEventHandler;
|
||||
use sammo\GameConst;
|
||||
|
||||
class event_무희연구 extends Command\NationCommand{
|
||||
static protected $actionName = '무희 연구';
|
||||
static protected $auxType = NationAuxKey::can_무희사용;
|
||||
|
||||
protected function argTest():bool{
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function init(){
|
||||
$this->setCity();
|
||||
$this->setNation(['gold','rice','aux']);
|
||||
$this->fullConditionConstraints=[];
|
||||
|
||||
$name = static::$actionName;
|
||||
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
$this->minConditionConstraints = [
|
||||
ConstraintHelper::OccupiedCity(),
|
||||
ConstraintHelper::BeChief(),
|
||||
ConstraintHelper::ReqNationAuxValue(static::$auxType->value, 0, "<", 1, "{$name}가 이미 완료되었습니다."),
|
||||
ConstraintHelper::ReqNationGold(GameConst::$basegold + $reqGold),
|
||||
ConstraintHelper::ReqNationRice(GameConst::$baserice + $reqRice),
|
||||
];
|
||||
|
||||
$this->fullConditionConstraints = $this->minConditionConstraints;
|
||||
}
|
||||
|
||||
public function getCommandDetailTitle():string{
|
||||
$name = $this->getName();
|
||||
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
$reqTurn = $this->getPreReqTurn()+1;
|
||||
|
||||
$reqGoldD5 = number_format($reqGold / 10000);
|
||||
$reqRiceD5 = number_format($reqRice / 10000);
|
||||
|
||||
return "{$name}/{$reqTurn}턴(금/쌀 {$reqGoldD5}만)";
|
||||
}
|
||||
|
||||
public function getPreReqTurn():int{
|
||||
return 23;
|
||||
}
|
||||
|
||||
public function getPostReqTurn():int{
|
||||
return 0;
|
||||
}
|
||||
|
||||
public function getCost():array{
|
||||
return [100000, 100000];
|
||||
}
|
||||
|
||||
public function run(\Sammo\RandUtil $rng):bool{
|
||||
if(!$this->hasFullConditionMet()){
|
||||
throw new \RuntimeException('불가능한 커맨드를 강제로 실행 시도');
|
||||
}
|
||||
|
||||
$db = DB::db();
|
||||
$general = $this->generalObj;
|
||||
$nationID = $general->getNationID();
|
||||
|
||||
$actionName = static::$actionName;
|
||||
|
||||
$aux = $this->nation['aux'];
|
||||
$aux[static::$auxType->value] = 1;
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
|
||||
$logger = $general->getLogger();
|
||||
|
||||
$general->addExperience(5 * ($this->getPreReqTurn() + 1));
|
||||
$general->addDedication(5 * ($this->getPreReqTurn() + 1));
|
||||
|
||||
$generalName = $general->getName();
|
||||
$josaYi = JosaUtil::pick($generalName, '이');
|
||||
|
||||
$db->update('nation', [
|
||||
'gold' => $db->sqleval('gold - %i', $reqGold),
|
||||
'rice' => $db->sqleval('rice - %i', $reqRice),
|
||||
'aux' => Json::encode($aux),
|
||||
], 'nation=%i', $nationID);
|
||||
|
||||
$logger->pushGeneralActionLog("<M>{$actionName}</> 완료");
|
||||
$logger->pushGeneralHistoryLog("<M>{$actionName}</> 완료");
|
||||
$logger->pushNationalHistoryLog("<Y>{$generalName}</>{$josaYi} <M>{$actionName}</> 완료");
|
||||
|
||||
$general->increaseInheritancePoint(InheritanceKey::active_action, 1);
|
||||
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg ?? []);
|
||||
$this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0));
|
||||
$general->applyDB($db);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
namespace sammo\Command\Nation;
|
||||
|
||||
use \sammo\Command;
|
||||
use sammo\Constraint\ConstraintHelper;
|
||||
use sammo\DB;
|
||||
use sammo\Enums\InheritanceKey;
|
||||
use sammo\Enums\NationAuxKey;
|
||||
use \sammo\Util;
|
||||
use \sammo\JosaUtil;
|
||||
use sammo\Json;
|
||||
use sammo\LastTurn;
|
||||
use sammo\StaticEventHandler;
|
||||
use sammo\GameConst;
|
||||
|
||||
class event_산저병연구 extends Command\NationCommand{
|
||||
static protected $actionName = '산저병 연구';
|
||||
static protected $auxType = NationAuxKey::can_산저병사용;
|
||||
|
||||
protected function argTest():bool{
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function init(){
|
||||
$this->setCity();
|
||||
$this->setNation(['gold','rice','aux']);
|
||||
$this->fullConditionConstraints=[];
|
||||
|
||||
$name = static::$actionName;
|
||||
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
$this->minConditionConstraints = [
|
||||
ConstraintHelper::OccupiedCity(),
|
||||
ConstraintHelper::BeChief(),
|
||||
ConstraintHelper::ReqNationAuxValue(static::$auxType->value, 0, "<", 1, "{$name}가 이미 완료되었습니다."),
|
||||
ConstraintHelper::ReqNationGold(GameConst::$basegold + $reqGold),
|
||||
ConstraintHelper::ReqNationRice(GameConst::$baserice + $reqRice),
|
||||
];
|
||||
|
||||
$this->fullConditionConstraints = $this->minConditionConstraints;
|
||||
}
|
||||
|
||||
public function getCommandDetailTitle():string{
|
||||
$name = $this->getName();
|
||||
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
$reqTurn = $this->getPreReqTurn()+1;
|
||||
|
||||
$reqGoldD5 = number_format($reqGold / 10000);
|
||||
$reqRiceD5 = number_format($reqRice / 10000);
|
||||
|
||||
return "{$name}/{$reqTurn}턴(금/쌀 {$reqGoldD5}만)";
|
||||
}
|
||||
|
||||
public function getPreReqTurn():int{
|
||||
return 11;
|
||||
}
|
||||
|
||||
public function getPostReqTurn():int{
|
||||
return 0;
|
||||
}
|
||||
|
||||
public function getCost():array{
|
||||
return [50000, 50000];
|
||||
}
|
||||
|
||||
public function run(\Sammo\RandUtil $rng):bool{
|
||||
if(!$this->hasFullConditionMet()){
|
||||
throw new \RuntimeException('불가능한 커맨드를 강제로 실행 시도');
|
||||
}
|
||||
|
||||
$db = DB::db();
|
||||
$general = $this->generalObj;
|
||||
$nationID = $general->getNationID();
|
||||
|
||||
$actionName = static::$actionName;
|
||||
|
||||
$aux = $this->nation['aux'];
|
||||
$aux[static::$auxType->value] = 1;
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
|
||||
$logger = $general->getLogger();
|
||||
|
||||
$general->addExperience(5 * ($this->getPreReqTurn() + 1));
|
||||
$general->addDedication(5 * ($this->getPreReqTurn() + 1));
|
||||
|
||||
$generalName = $general->getName();
|
||||
$josaYi = JosaUtil::pick($generalName, '이');
|
||||
|
||||
$db->update('nation', [
|
||||
'gold' => $db->sqleval('gold - %i', $reqGold),
|
||||
'rice' => $db->sqleval('rice - %i', $reqRice),
|
||||
'aux' => Json::encode($aux),
|
||||
], 'nation=%i', $nationID);
|
||||
|
||||
$logger->pushGeneralActionLog("<M>{$actionName}</> 완료");
|
||||
$logger->pushGeneralHistoryLog("<M>{$actionName}</> 완료");
|
||||
$logger->pushNationalHistoryLog("<Y>{$generalName}</>{$josaYi} <M>{$actionName}</> 완료");
|
||||
|
||||
$general->increaseInheritancePoint(InheritanceKey::active_action, 1);
|
||||
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg ?? []);
|
||||
$this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0));
|
||||
$general->applyDB($db);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
namespace sammo\Command\Nation;
|
||||
|
||||
use \sammo\Command;
|
||||
use sammo\Constraint\ConstraintHelper;
|
||||
use sammo\DB;
|
||||
use sammo\Enums\InheritanceKey;
|
||||
use sammo\Enums\NationAuxKey;
|
||||
use \sammo\Util;
|
||||
use \sammo\JosaUtil;
|
||||
use sammo\Json;
|
||||
use sammo\LastTurn;
|
||||
use sammo\StaticEventHandler;
|
||||
use sammo\GameConst;
|
||||
|
||||
class event_상병연구 extends Command\NationCommand{
|
||||
static protected $actionName = '상병 연구';
|
||||
static protected $auxType = NationAuxKey::can_상병사용;
|
||||
|
||||
protected function argTest():bool{
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function init(){
|
||||
$this->setCity();
|
||||
$this->setNation(['gold','rice','aux']);
|
||||
$this->fullConditionConstraints=[];
|
||||
|
||||
$name = static::$actionName;
|
||||
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
$this->minConditionConstraints = [
|
||||
ConstraintHelper::OccupiedCity(),
|
||||
ConstraintHelper::BeChief(),
|
||||
ConstraintHelper::ReqNationAuxValue(static::$auxType->value, 0, "<", 1, "{$name}가 이미 완료되었습니다."),
|
||||
ConstraintHelper::ReqNationGold(GameConst::$basegold + $reqGold),
|
||||
ConstraintHelper::ReqNationRice(GameConst::$baserice + $reqRice),
|
||||
];
|
||||
|
||||
$this->fullConditionConstraints = $this->minConditionConstraints;
|
||||
}
|
||||
|
||||
public function getCommandDetailTitle():string{
|
||||
$name = $this->getName();
|
||||
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
$reqTurn = $this->getPreReqTurn()+1;
|
||||
|
||||
$reqGoldD5 = number_format($reqGold / 10000);
|
||||
$reqRiceD5 = number_format($reqRice / 10000);
|
||||
|
||||
return "{$name}/{$reqTurn}턴(금/쌀 {$reqGoldD5}만)";
|
||||
}
|
||||
|
||||
public function getPreReqTurn():int{
|
||||
return 23;
|
||||
}
|
||||
|
||||
public function getPostReqTurn():int{
|
||||
return 0;
|
||||
}
|
||||
|
||||
public function getCost():array{
|
||||
return [100000, 100000];
|
||||
}
|
||||
|
||||
public function run(\Sammo\RandUtil $rng):bool{
|
||||
if(!$this->hasFullConditionMet()){
|
||||
throw new \RuntimeException('불가능한 커맨드를 강제로 실행 시도');
|
||||
}
|
||||
|
||||
$db = DB::db();
|
||||
$general = $this->generalObj;
|
||||
$nationID = $general->getNationID();
|
||||
|
||||
$actionName = static::$actionName;
|
||||
|
||||
$aux = $this->nation['aux'];
|
||||
$aux[static::$auxType->value] = 1;
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
|
||||
$logger = $general->getLogger();
|
||||
|
||||
$general->addExperience(5 * ($this->getPreReqTurn() + 1));
|
||||
$general->addDedication(5 * ($this->getPreReqTurn() + 1));
|
||||
|
||||
$generalName = $general->getName();
|
||||
$josaYi = JosaUtil::pick($generalName, '이');
|
||||
|
||||
$db->update('nation', [
|
||||
'gold' => $db->sqleval('gold - %i', $reqGold),
|
||||
'rice' => $db->sqleval('rice - %i', $reqRice),
|
||||
'aux' => Json::encode($aux),
|
||||
], 'nation=%i', $nationID);
|
||||
|
||||
$logger->pushGeneralActionLog("<M>{$actionName}</> 완료");
|
||||
$logger->pushGeneralHistoryLog("<M>{$actionName}</> 완료");
|
||||
$logger->pushNationalHistoryLog("<Y>{$generalName}</>{$josaYi} <M>{$actionName}</> 완료");
|
||||
|
||||
$general->increaseInheritancePoint(InheritanceKey::active_action, 1);
|
||||
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg ?? []);
|
||||
$this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0));
|
||||
$general->applyDB($db);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
namespace sammo\Command\Nation;
|
||||
|
||||
use \sammo\Command;
|
||||
use sammo\Constraint\ConstraintHelper;
|
||||
use sammo\DB;
|
||||
use sammo\Enums\InheritanceKey;
|
||||
use sammo\Enums\NationAuxKey;
|
||||
use \sammo\Util;
|
||||
use \sammo\JosaUtil;
|
||||
use sammo\Json;
|
||||
use sammo\LastTurn;
|
||||
use sammo\StaticEventHandler;
|
||||
use sammo\GameConst;
|
||||
|
||||
class event_원융노병연구 extends Command\NationCommand{
|
||||
static protected $actionName = '원융노병 연구';
|
||||
static protected $auxType = NationAuxKey::can_원융노병사용;
|
||||
|
||||
protected function argTest():bool{
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function init(){
|
||||
$this->setCity();
|
||||
$this->setNation(['gold','rice','aux']);
|
||||
$this->fullConditionConstraints=[];
|
||||
|
||||
$name = static::$actionName;
|
||||
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
$this->minConditionConstraints = [
|
||||
ConstraintHelper::OccupiedCity(),
|
||||
ConstraintHelper::BeChief(),
|
||||
ConstraintHelper::ReqNationAuxValue(static::$auxType->value, 0, "<", 1, "{$name}가 이미 완료되었습니다."),
|
||||
ConstraintHelper::ReqNationGold(GameConst::$basegold + $reqGold),
|
||||
ConstraintHelper::ReqNationRice(GameConst::$baserice + $reqRice),
|
||||
];
|
||||
|
||||
$this->fullConditionConstraints = $this->minConditionConstraints;
|
||||
}
|
||||
|
||||
public function getCommandDetailTitle():string{
|
||||
$name = $this->getName();
|
||||
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
$reqTurn = $this->getPreReqTurn()+1;
|
||||
|
||||
$reqGoldD5 = number_format($reqGold / 10000);
|
||||
$reqRiceD5 = number_format($reqRice / 10000);
|
||||
|
||||
return "{$name}/{$reqTurn}턴(금/쌀 {$reqGoldD5}만)";
|
||||
}
|
||||
|
||||
public function getPreReqTurn():int{
|
||||
return 23;
|
||||
}
|
||||
|
||||
public function getPostReqTurn():int{
|
||||
return 0;
|
||||
}
|
||||
|
||||
public function getCost():array{
|
||||
return [100000, 100000];
|
||||
}
|
||||
|
||||
public function run(\Sammo\RandUtil $rng):bool{
|
||||
if(!$this->hasFullConditionMet()){
|
||||
throw new \RuntimeException('불가능한 커맨드를 강제로 실행 시도');
|
||||
}
|
||||
|
||||
$db = DB::db();
|
||||
$general = $this->generalObj;
|
||||
$nationID = $general->getNationID();
|
||||
|
||||
$actionName = static::$actionName;
|
||||
|
||||
$aux = $this->nation['aux'];
|
||||
$aux[static::$auxType->value] = 1;
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
|
||||
$logger = $general->getLogger();
|
||||
|
||||
$general->addExperience(5 * ($this->getPreReqTurn() + 1));
|
||||
$general->addDedication(5 * ($this->getPreReqTurn() + 1));
|
||||
|
||||
$generalName = $general->getName();
|
||||
$josaYi = JosaUtil::pick($generalName, '이');
|
||||
|
||||
$db->update('nation', [
|
||||
'gold' => $db->sqleval('gold - %i', $reqGold),
|
||||
'rice' => $db->sqleval('rice - %i', $reqRice),
|
||||
'aux' => Json::encode($aux),
|
||||
], 'nation=%i', $nationID);
|
||||
|
||||
$logger->pushGeneralActionLog("<M>{$actionName}</> 완료");
|
||||
$logger->pushGeneralHistoryLog("<M>{$actionName}</> 완료");
|
||||
$logger->pushNationalHistoryLog("<Y>{$generalName}</>{$josaYi} <M>{$actionName}</> 완료");
|
||||
|
||||
$general->increaseInheritancePoint(InheritanceKey::active_action, 1);
|
||||
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg ?? []);
|
||||
$this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0));
|
||||
$general->applyDB($db);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
namespace sammo\Command\Nation;
|
||||
|
||||
use \sammo\Command;
|
||||
use sammo\Constraint\ConstraintHelper;
|
||||
use sammo\DB;
|
||||
use sammo\Enums\InheritanceKey;
|
||||
use sammo\Enums\NationAuxKey;
|
||||
use \sammo\Util;
|
||||
use \sammo\JosaUtil;
|
||||
use sammo\Json;
|
||||
use sammo\LastTurn;
|
||||
use sammo\StaticEventHandler;
|
||||
use sammo\GameConst;
|
||||
|
||||
class event_음귀병연구 extends Command\NationCommand{
|
||||
static protected $actionName = '음귀병 연구';
|
||||
static protected $auxType = NationAuxKey::can_음귀병사용;
|
||||
|
||||
protected function argTest():bool{
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function init(){
|
||||
$this->setCity();
|
||||
$this->setNation(['gold','rice','aux']);
|
||||
$this->fullConditionConstraints=[];
|
||||
|
||||
$name = static::$actionName;
|
||||
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
$this->minConditionConstraints = [
|
||||
ConstraintHelper::OccupiedCity(),
|
||||
ConstraintHelper::BeChief(),
|
||||
ConstraintHelper::ReqNationAuxValue(static::$auxType->value, 0, "<", 1, "{$name}가 이미 완료되었습니다."),
|
||||
ConstraintHelper::ReqNationGold(GameConst::$basegold + $reqGold),
|
||||
ConstraintHelper::ReqNationRice(GameConst::$baserice + $reqRice),
|
||||
];
|
||||
|
||||
$this->fullConditionConstraints = $this->minConditionConstraints;
|
||||
}
|
||||
|
||||
public function getCommandDetailTitle():string{
|
||||
$name = $this->getName();
|
||||
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
$reqTurn = $this->getPreReqTurn()+1;
|
||||
|
||||
$reqGoldD5 = number_format($reqGold / 10000);
|
||||
$reqRiceD5 = number_format($reqRice / 10000);
|
||||
|
||||
return "{$name}/{$reqTurn}턴(금/쌀 {$reqGoldD5}만)";
|
||||
}
|
||||
|
||||
public function getPreReqTurn():int{
|
||||
return 11;
|
||||
}
|
||||
|
||||
public function getPostReqTurn():int{
|
||||
return 0;
|
||||
}
|
||||
|
||||
public function getCost():array{
|
||||
return [50000, 50000];
|
||||
}
|
||||
|
||||
public function run(\Sammo\RandUtil $rng):bool{
|
||||
if(!$this->hasFullConditionMet()){
|
||||
throw new \RuntimeException('불가능한 커맨드를 강제로 실행 시도');
|
||||
}
|
||||
|
||||
$db = DB::db();
|
||||
$general = $this->generalObj;
|
||||
$nationID = $general->getNationID();
|
||||
|
||||
$actionName = static::$actionName;
|
||||
|
||||
$aux = $this->nation['aux'];
|
||||
$aux[static::$auxType->value] = 1;
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
|
||||
$logger = $general->getLogger();
|
||||
|
||||
$general->addExperience(5 * ($this->getPreReqTurn() + 1));
|
||||
$general->addDedication(5 * ($this->getPreReqTurn() + 1));
|
||||
|
||||
$generalName = $general->getName();
|
||||
$josaYi = JosaUtil::pick($generalName, '이');
|
||||
|
||||
$db->update('nation', [
|
||||
'gold' => $db->sqleval('gold - %i', $reqGold),
|
||||
'rice' => $db->sqleval('rice - %i', $reqRice),
|
||||
'aux' => Json::encode($aux),
|
||||
], 'nation=%i', $nationID);
|
||||
|
||||
$logger->pushGeneralActionLog("<M>{$actionName}</> 완료");
|
||||
$logger->pushGeneralHistoryLog("<M>{$actionName}</> 완료");
|
||||
$logger->pushNationalHistoryLog("<Y>{$generalName}</>{$josaYi} <M>{$actionName}</> 완료");
|
||||
|
||||
$general->increaseInheritancePoint(InheritanceKey::active_action, 1);
|
||||
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg ?? []);
|
||||
$this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0));
|
||||
$general->applyDB($db);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
namespace sammo\Command\Nation;
|
||||
|
||||
use \sammo\Command;
|
||||
use sammo\Constraint\ConstraintHelper;
|
||||
use sammo\DB;
|
||||
use sammo\Enums\InheritanceKey;
|
||||
use sammo\Enums\NationAuxKey;
|
||||
use \sammo\Util;
|
||||
use \sammo\JosaUtil;
|
||||
use sammo\Json;
|
||||
use sammo\LastTurn;
|
||||
use sammo\StaticEventHandler;
|
||||
use sammo\GameConst;
|
||||
|
||||
class event_화륜차연구 extends Command\NationCommand{
|
||||
static protected $actionName = '화륜차 연구';
|
||||
static protected $auxType = NationAuxKey::can_화륜차사용;
|
||||
|
||||
protected function argTest():bool{
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function init(){
|
||||
$this->setCity();
|
||||
$this->setNation(['gold','rice','aux']);
|
||||
$this->fullConditionConstraints=[];
|
||||
|
||||
$name = static::$actionName;
|
||||
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
$this->minConditionConstraints = [
|
||||
ConstraintHelper::OccupiedCity(),
|
||||
ConstraintHelper::BeChief(),
|
||||
ConstraintHelper::ReqNationAuxValue(static::$auxType->value, 0, "<", 1, "{$name}가 이미 완료되었습니다."),
|
||||
ConstraintHelper::ReqNationGold(GameConst::$basegold + $reqGold),
|
||||
ConstraintHelper::ReqNationRice(GameConst::$baserice + $reqRice),
|
||||
];
|
||||
|
||||
$this->fullConditionConstraints = $this->minConditionConstraints;
|
||||
}
|
||||
|
||||
public function getCommandDetailTitle():string{
|
||||
$name = $this->getName();
|
||||
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
$reqTurn = $this->getPreReqTurn()+1;
|
||||
|
||||
$reqGoldD5 = number_format($reqGold / 10000);
|
||||
$reqRiceD5 = number_format($reqRice / 10000);
|
||||
|
||||
return "{$name}/{$reqTurn}턴(금/쌀 {$reqGoldD5}만)";
|
||||
}
|
||||
|
||||
public function getPreReqTurn():int{
|
||||
return 23;
|
||||
}
|
||||
|
||||
public function getPostReqTurn():int{
|
||||
return 0;
|
||||
}
|
||||
|
||||
public function getCost():array{
|
||||
return [100000, 100000];
|
||||
}
|
||||
|
||||
public function run(\Sammo\RandUtil $rng):bool{
|
||||
if(!$this->hasFullConditionMet()){
|
||||
throw new \RuntimeException('불가능한 커맨드를 강제로 실행 시도');
|
||||
}
|
||||
|
||||
$db = DB::db();
|
||||
$general = $this->generalObj;
|
||||
$nationID = $general->getNationID();
|
||||
|
||||
$actionName = static::$actionName;
|
||||
|
||||
$aux = $this->nation['aux'];
|
||||
$aux[static::$auxType->value] = 1;
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
|
||||
$logger = $general->getLogger();
|
||||
|
||||
$general->addExperience(5 * ($this->getPreReqTurn() + 1));
|
||||
$general->addDedication(5 * ($this->getPreReqTurn() + 1));
|
||||
|
||||
$generalName = $general->getName();
|
||||
$josaYi = JosaUtil::pick($generalName, '이');
|
||||
|
||||
$db->update('nation', [
|
||||
'gold' => $db->sqleval('gold - %i', $reqGold),
|
||||
'rice' => $db->sqleval('rice - %i', $reqRice),
|
||||
'aux' => Json::encode($aux),
|
||||
], 'nation=%i', $nationID);
|
||||
|
||||
$logger->pushGeneralActionLog("<M>{$actionName}</> 완료");
|
||||
$logger->pushGeneralHistoryLog("<M>{$actionName}</> 완료");
|
||||
$logger->pushNationalHistoryLog("<Y>{$generalName}</>{$josaYi} <M>{$actionName}</> 완료");
|
||||
|
||||
$general->increaseInheritancePoint(InheritanceKey::active_action, 1);
|
||||
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg ?? []);
|
||||
$this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0));
|
||||
$general->applyDB($db);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
namespace sammo\Command\Nation;
|
||||
|
||||
use \sammo\Command;
|
||||
use sammo\Constraint\ConstraintHelper;
|
||||
use sammo\DB;
|
||||
use sammo\Enums\InheritanceKey;
|
||||
use sammo\Enums\NationAuxKey;
|
||||
use \sammo\Util;
|
||||
use \sammo\JosaUtil;
|
||||
use sammo\Json;
|
||||
use sammo\LastTurn;
|
||||
use sammo\StaticEventHandler;
|
||||
use sammo\GameConst;
|
||||
|
||||
class event_화시병연구 extends Command\NationCommand{
|
||||
static protected $actionName = '화시병 연구';
|
||||
static protected $auxType = NationAuxKey::can_화시병사용;
|
||||
|
||||
protected function argTest():bool{
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function init(){
|
||||
$this->setCity();
|
||||
$this->setNation(['gold','rice','aux']);
|
||||
$this->fullConditionConstraints=[];
|
||||
|
||||
$name = static::$actionName;
|
||||
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
$this->minConditionConstraints = [
|
||||
ConstraintHelper::OccupiedCity(),
|
||||
ConstraintHelper::BeChief(),
|
||||
ConstraintHelper::ReqNationAuxValue(static::$auxType->value, 0, "<", 1, "{$name}가 이미 완료되었습니다."),
|
||||
ConstraintHelper::ReqNationGold(GameConst::$basegold + $reqGold),
|
||||
ConstraintHelper::ReqNationRice(GameConst::$baserice + $reqRice),
|
||||
];
|
||||
|
||||
$this->fullConditionConstraints = $this->minConditionConstraints;
|
||||
}
|
||||
|
||||
public function getCommandDetailTitle():string{
|
||||
$name = $this->getName();
|
||||
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
$reqTurn = $this->getPreReqTurn()+1;
|
||||
|
||||
$reqGoldD5 = number_format($reqGold / 10000);
|
||||
$reqRiceD5 = number_format($reqRice / 10000);
|
||||
|
||||
return "{$name}/{$reqTurn}턴(금/쌀 {$reqGoldD5}만)";
|
||||
}
|
||||
|
||||
public function getPreReqTurn():int{
|
||||
return 11;
|
||||
}
|
||||
|
||||
public function getPostReqTurn():int{
|
||||
return 0;
|
||||
}
|
||||
|
||||
public function getCost():array{
|
||||
return [50000, 50000];
|
||||
}
|
||||
|
||||
public function run(\Sammo\RandUtil $rng):bool{
|
||||
if(!$this->hasFullConditionMet()){
|
||||
throw new \RuntimeException('불가능한 커맨드를 강제로 실행 시도');
|
||||
}
|
||||
|
||||
$db = DB::db();
|
||||
$general = $this->generalObj;
|
||||
$nationID = $general->getNationID();
|
||||
|
||||
$actionName = static::$actionName;
|
||||
|
||||
$aux = $this->nation['aux'];
|
||||
$aux[static::$auxType->value] = 1;
|
||||
[$reqGold, $reqRice] = $this->getCost();
|
||||
|
||||
$logger = $general->getLogger();
|
||||
|
||||
$general->addExperience(5 * ($this->getPreReqTurn() + 1));
|
||||
$general->addDedication(5 * ($this->getPreReqTurn() + 1));
|
||||
|
||||
$generalName = $general->getName();
|
||||
$josaYi = JosaUtil::pick($generalName, '이');
|
||||
|
||||
$db->update('nation', [
|
||||
'gold' => $db->sqleval('gold - %i', $reqGold),
|
||||
'rice' => $db->sqleval('rice - %i', $reqRice),
|
||||
'aux' => Json::encode($aux),
|
||||
], 'nation=%i', $nationID);
|
||||
|
||||
$logger->pushGeneralActionLog("<M>{$actionName}</> 완료");
|
||||
$logger->pushGeneralHistoryLog("<M>{$actionName}</> 완료");
|
||||
$logger->pushNationalHistoryLog("<Y>{$generalName}</>{$josaYi} <M>{$actionName}</> 완료");
|
||||
|
||||
$general->increaseInheritancePoint(InheritanceKey::active_action, 1);
|
||||
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg ?? []);
|
||||
$this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0));
|
||||
$general->applyDB($db);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -50,7 +50,7 @@ class AllowJoinDestNation extends Constraint{
|
||||
return false;
|
||||
}
|
||||
|
||||
if(($this->general['npc']??2 < 2) && \str_starts_with($this->destNation['name'], 'ⓤ')){
|
||||
if((($this->general['npc']??2) < 2) && \str_starts_with($this->destNation['name'], 'ⓤ')){
|
||||
$this->reason = "유저장은 태수국에 임관할 수 없습니다.";
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -6,9 +6,10 @@ use \sammo\GameUnitConst;
|
||||
use \sammo\DB;
|
||||
use \sammo\KVStorage;
|
||||
use \sammo\CityConst;
|
||||
use sammo\Json;
|
||||
|
||||
class AvailableRecruitCrewType extends Constraint{
|
||||
const REQ_VALUES = Constraint::REQ_NATION|Constraint::REQ_INT_ARG;
|
||||
const REQ_VALUES = Constraint::REQ_GENERAL|Constraint::REQ_NATION|Constraint::REQ_INT_ARG;
|
||||
|
||||
public function checkInputValues(bool $throwExeception=true):bool{
|
||||
if(!parent::checkInputValues($throwExeception) && !$throwExeception){
|
||||
@@ -47,13 +48,22 @@ class AvailableRecruitCrewType extends Constraint{
|
||||
|
||||
$ownCities = [];
|
||||
$ownRegions = [];
|
||||
foreach($db->queryFirstColumn('SELECT city FROM city WHERE nation = %i', $nationID) as $ownCity){
|
||||
$ownCities[$ownCity] = 1;
|
||||
$ownRegions[CityConst::byId($ownCity)->region] = 1;
|
||||
foreach($db->query('SELECT city, region, secu, level FROM city WHERE nation = %i', $nationID) as $ownCity){
|
||||
$ownCityID = $ownCity['city'];
|
||||
$ownCities[$ownCityID] = [
|
||||
'secu'=>$ownCity['secu'],
|
||||
'level'=>$ownCity['level'],
|
||||
];
|
||||
$ownRegions[CityConst::byId($ownCityID)->region] = 1;
|
||||
}
|
||||
|
||||
$nationAux = $this->nation['aux'] ?? null;
|
||||
if($nationAux === null){
|
||||
$nationAux = Json::decode($db->queryFirstField('SELECT aux FROM nation WHERE id = %i', $nationID) ?? "{}");
|
||||
}
|
||||
|
||||
$crewType = GameUnitConst::byID($this->arg);
|
||||
if($crewType->isValid($ownCities, $ownRegions, $year - $startyear, $tech)){
|
||||
if($crewType->isValid($this->generalObj, $ownCities, $ownRegions, $year - $startyear, $tech, $nationAux)){
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
namespace sammo\Constraint;
|
||||
|
||||
use sammo\General;
|
||||
|
||||
abstract class Constraint
|
||||
{
|
||||
private function __construct()
|
||||
@@ -24,6 +26,8 @@ abstract class Constraint
|
||||
|
||||
const REQ_VALUES = 0;
|
||||
|
||||
/** @var ?General */
|
||||
protected $generalObj = null;
|
||||
protected $general = null;
|
||||
protected $city = null;
|
||||
protected $nation = null;
|
||||
@@ -33,6 +37,8 @@ abstract class Constraint
|
||||
|
||||
protected $cmd_arg = null;
|
||||
|
||||
/** @var ?General */
|
||||
protected $destGeneralObj = null;
|
||||
protected $destGeneral = null;
|
||||
protected $destCity = null;
|
||||
protected $destNation = null;
|
||||
@@ -48,9 +54,10 @@ abstract class Constraint
|
||||
return static::REQ_VALUES;
|
||||
}
|
||||
|
||||
public function setGeneral(array $general)
|
||||
public function setGeneral(General $general)
|
||||
{
|
||||
$this->general = $general;
|
||||
$this->generalObj = $general;
|
||||
$this->general = $general->getRaw();
|
||||
$this->tested = false;
|
||||
$this->reason = null;
|
||||
}
|
||||
@@ -85,9 +92,10 @@ abstract class Constraint
|
||||
$this->reason = null;
|
||||
}
|
||||
|
||||
public function setDestGeneral(array $general)
|
||||
public function setDestGeneral(General $general)
|
||||
{
|
||||
$this->destGeneral = $general;
|
||||
$this->destGeneralObj = $general;
|
||||
$this->destGeneral = $general->getRaw();
|
||||
$this->tested = false;
|
||||
$this->reason = null;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace sammo\Enums;
|
||||
|
||||
// Nation['aux'] 에서 지정될 수 있는 키
|
||||
|
||||
enum NationAuxKey: string
|
||||
{
|
||||
case can_국기변경 = 'can_국기변경';
|
||||
case can_국호변경 = 'can_국호변경';
|
||||
case did_특성초토화 = 'did_특성초토화';
|
||||
|
||||
|
||||
// 이벤트
|
||||
case can_무작위수도이전 = 'can_무작위수도이전';
|
||||
|
||||
case can_대검병사용 = 'can_대검병사용';
|
||||
case can_극병사용 = 'can_극병사용';
|
||||
case can_화시병사용 = 'can_화시병사용';
|
||||
case can_원융노병사용 = 'can_원융노병사용';
|
||||
case can_산저병사용 = 'can_산저병사용';
|
||||
case can_상병사용 = 'can_상병사용';
|
||||
case can_음귀병사용 = 'can_음귀병사용';
|
||||
case can_무희사용 = 'can_무희사용';
|
||||
case can_화륜차사용 = 'can_화륜차사용';
|
||||
}
|
||||
@@ -14,6 +14,13 @@ class ChangeCity extends \sammo\Event\Action{
|
||||
'def'=>true,
|
||||
'wall'=>true,
|
||||
'trade'=>true,
|
||||
|
||||
'pop_max'=>true,
|
||||
'agri_max'=>true,
|
||||
'comm_max'=>true,
|
||||
'secu_max'=>true,
|
||||
'def_max'=>true,
|
||||
'wall_max'=>true,
|
||||
];
|
||||
const REGEXP_PERCENT = '/^(\d+(\.\d+)?)%$/';// 123.5% [1]=float
|
||||
const REGEXP_MATH = '/^([\+\-\/\*])(\d+(\.\d+)?)$/'; //+30 [1]=기호, [2]=float
|
||||
@@ -120,6 +127,16 @@ class ChangeCity extends \sammo\Event\Action{
|
||||
return DB::db()->sqleval('ROUND(%b * %d, 0)', $keyMax, $value/100);
|
||||
}
|
||||
|
||||
if(str_ends_with($key, '_max') && preg_match(self::REGEXP_MATH, $value, $matches)){
|
||||
//key가 아예 최대치에 대한 값이면 연산은 결과값이 0보다만 높게.
|
||||
$op = $matches[1];
|
||||
$value = $matches[2];
|
||||
if($op == '/' && $value == 0){
|
||||
throw new \InvalidArgumentException('0으로 나눌 수 없습니다.');
|
||||
}
|
||||
return DB::db()->sqleval('greatest(0, ROUND(%b '.$op.' %i, 0))', $key, $value);
|
||||
}
|
||||
|
||||
if(preg_match(self::REGEXP_MATH, $value, $matches)){
|
||||
$op = $matches[1];
|
||||
$value = $matches[2];
|
||||
|
||||
@@ -94,6 +94,11 @@ class GameConstBase
|
||||
/** @var int 최대 레벨 */
|
||||
public static $maxLevel = 255;
|
||||
|
||||
/** @var int 기술등급 허용 증가 단위 년 */
|
||||
public static $techLevelIncYear = 5;
|
||||
/** @var int 초기 기술등급 */
|
||||
public static $initialAllowedTechLevel = 1;
|
||||
|
||||
/** @var int 최소 인구 증가량 */
|
||||
public static $basePopIncreaseAmount = 5000;
|
||||
/** @var int 증축시 인구 증가량 */
|
||||
@@ -109,6 +114,9 @@ class GameConstBase
|
||||
/** @var int 징병 허용 최소 인구 */
|
||||
public static $minAvailableRecruitPop = 30000;
|
||||
|
||||
/** @var int 점령 후 일반 도시 성벽 */
|
||||
public static $defaultCityWall = 1000;
|
||||
|
||||
/** @var int 초기 제한시 장수 제한 */
|
||||
public static $initialNationGenLimit = 10;
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace sammo\GameUnitConstraint;
|
||||
|
||||
use sammo\General;
|
||||
|
||||
class ReqChief extends BaseGameUnitConstraint
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
public function test(General $general, array $ownCities, array $ownRegions, int $relativeYear, int $tech, array $nationAux): bool
|
||||
{
|
||||
if($general->getVar('officer_level') >= 5){
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getInfo(): string
|
||||
{
|
||||
return "군주 및 수뇌부만 가능";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace sammo\GameUnitConstraint;
|
||||
|
||||
use sammo\CityConst;
|
||||
use sammo\General;
|
||||
|
||||
use function sammo\getCityLevelList;
|
||||
|
||||
class ReqCitiesWithCityLevel extends BaseGameUnitConstraint
|
||||
{
|
||||
|
||||
public readonly array $reqCities;
|
||||
public function __construct(
|
||||
public readonly int $reqCityLevel,
|
||||
...$reqCities)
|
||||
{
|
||||
$dstReqCities = [];
|
||||
if (count($reqCities) == 0) {
|
||||
$this->reqCities = [];
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ($reqCities as $city) {
|
||||
$dstReqCities[CityConst::byName($city)->id] = $city;
|
||||
}
|
||||
$this->reqCities = $dstReqCities;
|
||||
}
|
||||
|
||||
public function test(General $general, array $ownCities, array $ownRegions, int $relativeYear, int $tech, array $nationAux): bool
|
||||
{
|
||||
foreach ($this->reqCities as $cityID => $cityName) {
|
||||
if (!key_exists($cityID, $ownCities)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if($ownCities[$cityID]['level'] >= $this->reqCityLevel) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getInfo(): string
|
||||
{
|
||||
$cityLevelText = getCityLevelList()[$this->reqCityLevel];
|
||||
$cityNameText = implode(', ', $this->reqCities);
|
||||
return "{$cityNameText} {$cityLevelText}성 소유시 가능";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace sammo\GameUnitConstraint;
|
||||
|
||||
use sammo\General;
|
||||
|
||||
use function sammo\getCityLevelList;
|
||||
|
||||
class ReqHighLevelCities extends BaseGameUnitConstraint
|
||||
{
|
||||
|
||||
public readonly array $reqCities;
|
||||
public function __construct(
|
||||
public readonly int $reqCityLevel,
|
||||
public readonly int $reqCityCount
|
||||
) {}
|
||||
|
||||
public function test(General $general, array $ownCities, array $ownRegions, int $relativeYear, int $tech, array $nationAux): bool
|
||||
{
|
||||
$cnt = 0;
|
||||
foreach ($ownCities as $cityItem) {
|
||||
if ($cityItem['level'] >= $this->reqCityLevel) {
|
||||
$cnt++;
|
||||
}
|
||||
}
|
||||
|
||||
if($cnt >= $this->reqCityCount) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getInfo(): string
|
||||
{
|
||||
$cityLevelText = getCityLevelList()[$this->reqCityLevel];
|
||||
return "{$cityLevelText}성 {$this->reqCityCount}개 이상 소유시 가능";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
<?php
|
||||
|
||||
namespace sammo\GameUnitConstraint;
|
||||
|
||||
use sammo\CityConst;
|
||||
use sammo\Enums\NationAuxKey;
|
||||
use sammo\General;
|
||||
|
||||
class ReqNationAux extends BaseGameUnitConstraint
|
||||
{
|
||||
|
||||
const AVAILABLE_CMP = [
|
||||
'==' => true,
|
||||
'!=' => true,
|
||||
'<' => true,
|
||||
'>' => true,
|
||||
'<=' => true,
|
||||
'>=' => true,
|
||||
];
|
||||
|
||||
public function __construct(
|
||||
public readonly NationAuxKey $reqNationAuxKey,
|
||||
public readonly string $cmp,
|
||||
public readonly int|float $value
|
||||
) {
|
||||
if (!array_key_exists($cmp, self::AVAILABLE_CMP)) {
|
||||
throw new \InvalidArgumentException('올바르지 않은 비교연산자입니다');
|
||||
}
|
||||
}
|
||||
|
||||
public function test(General $general, array $ownCities, array $ownRegions, int $relativeYear, int $tech, array $nationAux): bool
|
||||
{
|
||||
|
||||
$lhs = $nationAux[$this->reqNationAuxKey->value] ?? 0;
|
||||
$rhs = $this->value;
|
||||
|
||||
$value = false;
|
||||
switch ($this->cmp) {
|
||||
case '==':
|
||||
$value = ($lhs == $rhs);
|
||||
break;
|
||||
case '!=':
|
||||
$value = ($lhs != $rhs);
|
||||
break;
|
||||
case '<=':
|
||||
$value = ($lhs <= $rhs);
|
||||
break;
|
||||
case '>=':
|
||||
$value = ($lhs >= $rhs);
|
||||
break;
|
||||
case '<':
|
||||
$value = ($lhs < $rhs);
|
||||
break;
|
||||
case '>':
|
||||
$value = ($lhs > $rhs);
|
||||
break;
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
public function getInfo(): string
|
||||
{
|
||||
//Enum별 특수한 경우
|
||||
switch ($this->reqNationAuxKey) {
|
||||
case NationAuxKey::can_대검병사용:
|
||||
if ($this->cmp == "==" && $this->value == 1) return "대검병 연구 시 가능";
|
||||
break;
|
||||
case NationAuxKey::can_극병사용:
|
||||
if ($this->cmp == "==" && $this->value == 1) return "극병 연구 시 가능";
|
||||
break;
|
||||
case NationAuxKey::can_화시병사용:
|
||||
if ($this->cmp == "==" && $this->value == 1) return "화시병 연구 시 가능";
|
||||
break;
|
||||
case NationAuxKey::can_원융노병사용:
|
||||
if ($this->cmp == "==" && $this->value == 1) return "원융노병 연구 시 가능";
|
||||
break;
|
||||
case NationAuxKey::can_산저병사용:
|
||||
if ($this->cmp == "==" && $this->value == 1) return "산저병 연구 시 가능";
|
||||
break;
|
||||
case NationAuxKey::can_상병사용:
|
||||
if ($this->cmp == "==" && $this->value == 1) return "상병 연구 시 가능";
|
||||
break;
|
||||
case NationAuxKey::can_음귀병사용:
|
||||
if ($this->cmp == "==" && $this->value == 1) return "음귀병 연구 시 가능";
|
||||
break;
|
||||
case NationAuxKey::can_무희사용:
|
||||
if ($this->cmp == "==" && $this->value == 1) return "무희 연구 시 가능";
|
||||
break;
|
||||
case NationAuxKey::can_화륜차사용:
|
||||
if ($this->cmp == "==" && $this->value == 1) return "화륜차 연구 시 가능";
|
||||
break;
|
||||
case NationAuxKey::did_특성초토화:
|
||||
if ($this->cmp == ">=" && $this->value == 1) return "특성 초토화 시 가능";
|
||||
break;
|
||||
}
|
||||
|
||||
//범용
|
||||
switch ($this->cmp) {
|
||||
case '==': {
|
||||
if ($this->value == 0) {
|
||||
return "{$this->reqNationAuxKey->value} 없을 때";
|
||||
}
|
||||
if ($this->value == 1) {
|
||||
return "{$this->reqNationAuxKey->value} 있을 때";
|
||||
}
|
||||
return "{$this->reqNationAuxKey->value} = {$this->value} 일 때";
|
||||
};
|
||||
case '!=': {
|
||||
if ($this->value == 0) {
|
||||
return "{$this->reqNationAuxKey->value} 없을 때";
|
||||
}
|
||||
if ($this->value == 1) {
|
||||
return "{$this->reqNationAuxKey->value} 있을 때";
|
||||
}
|
||||
return "{$this->reqNationAuxKey->value} != {$this->value} 일 때";
|
||||
};
|
||||
default:
|
||||
return "{$this->reqNationAuxKey->value} {$this->cmp} {$this->value} 일 때";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace sammo\GameUnitConstraint;
|
||||
|
||||
use sammo\General;
|
||||
|
||||
class ReqNotChief extends BaseGameUnitConstraint
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
public function test(General $general, array $ownCities, array $ownRegions, int $relativeYear, int $tech, array $nationAux): bool
|
||||
{
|
||||
if($general->getVar('officer_level') < 5){
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getInfo(): string
|
||||
{
|
||||
return "군주 및 수뇌부는 불가";
|
||||
}
|
||||
}
|
||||
@@ -59,7 +59,12 @@ class GameUnitDetail implements iAction
|
||||
$this->reqConstraints = [];
|
||||
foreach($reqConstraints as $constraint){
|
||||
$className = Util::getClassNameFromObj($constraint);
|
||||
$this->reqConstraints[$className] = $constraint;
|
||||
if(!key_exists($className, $this->reqConstraints)){
|
||||
$this->reqConstraints[$className] = $constraint;
|
||||
}
|
||||
else{
|
||||
$this->reqConstraints[] = $constraint;
|
||||
}
|
||||
}
|
||||
$this->attackCoef = $attackCoef;
|
||||
$this->defenceCoef = $defenceCoef;
|
||||
@@ -75,6 +80,33 @@ class GameUnitDetail implements iAction
|
||||
}
|
||||
}
|
||||
|
||||
public function reqTech(): int {
|
||||
$reqTechObj = $this->reqConstraints['ReqTech'] ?? null;
|
||||
|
||||
if($reqTechObj === null){
|
||||
return 0;
|
||||
}
|
||||
return $reqTechObj->reqTech;
|
||||
}
|
||||
|
||||
public function reqRegions(): ?array {
|
||||
$reqRegionsObj = $this->reqConstraints['ReqRegions'] ?? null;
|
||||
|
||||
if($reqRegionsObj === null){
|
||||
return null;
|
||||
}
|
||||
return $reqRegionsObj->reqRegions;
|
||||
}
|
||||
|
||||
public function reqCities(): ?array {
|
||||
$reqCitiesObj = $this->reqConstraints['ReqCities'] ?? null;
|
||||
|
||||
if($reqCitiesObj === null){
|
||||
return null;
|
||||
}
|
||||
return $reqCitiesObj->reqCities;
|
||||
}
|
||||
|
||||
public function getInfo(): string
|
||||
{
|
||||
return join("\n<br>", $this->info);
|
||||
@@ -189,7 +221,7 @@ class GameUnitDetail implements iAction
|
||||
return $defaultWar;
|
||||
}
|
||||
|
||||
public function isValid(General $general, $ownCities, $ownRegions, $relativeYear, $tech, $nationAux = [])
|
||||
public function isValid(General $general, $ownCities, $ownRegions, $relativeYear, $tech, $nationAux)
|
||||
{
|
||||
//음수 없음
|
||||
$relativeYear = max(0, $relativeYear);
|
||||
|
||||
+13
-7
@@ -2084,7 +2084,7 @@ class GeneralAI
|
||||
}
|
||||
}
|
||||
|
||||
$finalCityID = Util::array_first_key($cityScoreList);
|
||||
$finalCityID = array_key_first($cityScoreList);
|
||||
$dist = $distanceList[$capital][$finalCityID];
|
||||
$targetCityID = $finalCityID;
|
||||
if ($dist > 1) {
|
||||
@@ -2570,7 +2570,7 @@ class GeneralAI
|
||||
|
||||
$types = [];
|
||||
foreach (GameUnitConst::byType($armType) as $crewtype) {
|
||||
if ($crewtype->isValid($general, $cities, $regions, $relYear, $tech)) {
|
||||
if ($crewtype->isValid($general, $cities, $regions, $relYear, $tech, $this->nation['aux'])) {
|
||||
$score = $crewtype->pickScore($tech);
|
||||
$types[$crewtype->id] = $score;
|
||||
}
|
||||
@@ -2584,10 +2584,10 @@ class GeneralAI
|
||||
|
||||
if ($this->generalPolicy->can고급병종) {
|
||||
$currCrewType = $general->getCrewTypeObj();
|
||||
if ($currCrewType->isValid($general, $cities, $regions, $relYear, $tech)) {
|
||||
$reqTechObj = $currCrewType->reqConstraints['reqTech'] ?? null;
|
||||
if ($currCrewType->isValid($general, $cities, $regions, $relYear, $tech, $this->nation['aux'])) {
|
||||
$reqTechObj = $currCrewType->reqConstraints['ReqTech'] ?? null;
|
||||
if($reqTechObj){
|
||||
$reqTech = $reqTechObj->getValue($tech);
|
||||
$reqTech = $reqTechObj->reqTech;
|
||||
if ($reqTech >= 2000) {
|
||||
$type = $currCrewType->id;
|
||||
} else if ($currCrewType->armType != $armType && $reqTech >= 1000) {
|
||||
@@ -3129,8 +3129,14 @@ class GeneralAI
|
||||
$db = DB::db();
|
||||
|
||||
$dupLord = $db->queryFirstField('SELECT COUNT(*) FROM general WHERE officer_level = 12 AND city = %i', $this->general->getCityID());
|
||||
if($dupLord <= 1 && !in_array($this->general->getRawCity()['level'], [5, 6])) {
|
||||
return null;
|
||||
if($dupLord <= 1) {
|
||||
if ($this->general->getRawCity() === null) {
|
||||
$rawCity = $db->queryFirstRow('SELECT * FROM city WHERE city = %i', $this->general->getCityID());
|
||||
$this->general->setRawCity($rawCity);
|
||||
}
|
||||
if (!in_array($this->general->getRawCity()['level'], [5, 6])) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
$general = $this->general;
|
||||
|
||||
@@ -334,11 +334,19 @@ class InheritancePointManager
|
||||
$inheritStor->setValue($key, [$point, $aux]);
|
||||
}
|
||||
|
||||
$oldInheritStor = KVStorage::getStorage(DB::db(), "inheritance_result");
|
||||
$db = DB::db();
|
||||
$serverID = UniqueConst::$serverID;
|
||||
$year = $gameStor->year;
|
||||
$month = $gameStor->month;
|
||||
$oldInheritStor->setValue("{$serverID}_{$ownerID}_{$general->getID()}_{$year}_{$month}", $inheritStor->getAll(true));
|
||||
|
||||
$db->insert('inheritance_result', [
|
||||
'server_id'=>$serverID,
|
||||
'owner'=>$ownerID,
|
||||
'general_id'=>$general->getID(),
|
||||
'year'=>$year,
|
||||
'month'=>$month,
|
||||
'value'=>Json::encode($inheritStor->getAll(true))
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ abstract class TriggerCaller{
|
||||
return $this;
|
||||
}
|
||||
|
||||
$lastKey = Util::array_last_key($this->triggerListByPriority);
|
||||
$lastKey = array_key_last($this->triggerListByPriority);
|
||||
if($lastKey < $priority){
|
||||
$this->triggerListByPriority[$priority] = [$uniqueID=>$trigger];
|
||||
return $this;
|
||||
|
||||
@@ -422,7 +422,7 @@ class TurnExecutionHelper
|
||||
|
||||
$date = TimeUtil::now(true);
|
||||
// 최종 처리 월턴의 다음 월턴시간 구함
|
||||
$lastExecuted = $gameStor->turntime;
|
||||
//$lastExecuted = $gameStor->turntime;
|
||||
$prevTurn = cutTurn($gameStor->turntime, $gameStor->turnterm);
|
||||
$nextTurn = addTurn($prevTurn, $gameStor->turnterm);
|
||||
|
||||
@@ -455,9 +455,6 @@ class TurnExecutionHelper
|
||||
$gameStor->turntime = $currentTurn;
|
||||
}
|
||||
unlock();
|
||||
if($lastExecuted !== $currentTurn){
|
||||
$executed = true;
|
||||
}
|
||||
return $gameStor->turntime;
|
||||
}
|
||||
|
||||
@@ -516,10 +513,6 @@ class TurnExecutionHelper
|
||||
$gameStor->resetCache();
|
||||
unlock();
|
||||
|
||||
if($lastExecuted !== $currentTurn){
|
||||
$executed = true;
|
||||
}
|
||||
|
||||
return $turntime;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,974 @@
|
||||
{
|
||||
"title":"【역사모드2-2】 반동탁연합 결성(정사)",
|
||||
"startYear":187,
|
||||
"life":1,
|
||||
"fiction":0,
|
||||
"const":{
|
||||
"defaultMaxGeneral":600
|
||||
},
|
||||
"nation":[
|
||||
["동탁", "#A9A9A9", 12000, 80000, "천자를 등에 업은 동탁", 2000, "명가", 5, ["낙양", "호로", "사수", "함곡", "장안", "홍농", "사곡", "안정"]],
|
||||
["조조", "#0000FF", 10000, 40000, "동탁의거의 조조", 1000, "법가", 1, ["진류"]],
|
||||
["유대", "#800000", 10000, 10000, "연주자사 유대, 유요의 형", 1000, "병가", 3, ["복양"]],
|
||||
["공손찬", "#FF00FF", 10000, 10000, "백마의 공손찬", 1000, "병가", 1, ["북평"]],
|
||||
["장양", "#7B68EE", 10000, 10000, "병주자사 장양", 1000, "병가", 3, ["진양"]],
|
||||
["유언", "#483D8B", 10000, 30000, "익주목 유언", 1000, "유가", 4, ["성도", "자동", "면죽"]],
|
||||
["원술", "#FFC0CB", 15000, 40000, "후장군 원술", 1000, "병가", 2, ["완"]],
|
||||
["도겸", "#00FF00", 10000, 10000, "서주목 도겸", 1000, "유가", 4, ["서주", "하비.광릉"]],
|
||||
["진온", "#808000", 10000, 10000, "양주자사 진온", 1000, "유가", 3, ["수춘", "합비"]],
|
||||
["마등", "#808000", 10000, 10000, "서량태수 마등", 1000, "병가", 1, ["서량"]],
|
||||
["공손도", "#A0522D", 10000, 10000, "요동의 왕 공손도", 1000, "덕가", 1, ["안평"]],
|
||||
["한복", "#A0522D", 10000, 10000, "기주자사 한복", 1000, "병가", 3, ["업"]],
|
||||
["유표", "#E0FFFF", 10000, 10000, "형주자사 유표", 1000, "유가", 3, ["양양", "장판", "강하"]],
|
||||
["장로", "#20B2AA", 10000, 10000, "사실 이때 없는 애지만 장로", 1000, "오두미도", 1, ["한중"]],
|
||||
["왕광", "#483D8B", 10000, 10000, "하내태수 왕광", 1000, "유가", 1, ["하내"]],
|
||||
["유우", "#6495ED", 10000, 10000, "유주자사 유우", 1000, "유가", 5, ["계", "역경"]],
|
||||
["원소", "#FFFF00", 10000, 10000, "발해태수 원소", 1000, "병가", 1, ["남피"]],
|
||||
["사섭", "#800000", 10000, 10000, "교주자사 사섭", 1000, "유가", 3, ["교지", "남해"]],
|
||||
["공융", "#800080", 10000, 10000, "북해태수 공융", 1000, "유가", 1, ["북해"]],
|
||||
["한수", "#FFFFFF", 10000, 10000, "서량의 모반자 한수", 1000, "병가", 1, ["천수"]],
|
||||
["공주", "#800080", 10000, 10000, "예주 자사 공주", 1000, "유가", 3, ["초"]],
|
||||
["유총", "#7B68EE", 10000, 10000, "진민왕 유총", 1000, "덕가", 6, ["여남"]]
|
||||
|
||||
],
|
||||
"diplomacy":[
|
||||
[1,2,1,36],
|
||||
[1,3,1,36],
|
||||
[1,5,1,36],
|
||||
[1,6,1,36],
|
||||
[1,7,1,36],
|
||||
[1,8,1,36],
|
||||
[1,9,1,36],
|
||||
[1,10,1,36],
|
||||
[1,11,1,36],
|
||||
[1,12,1,36],
|
||||
[1,13,1,36],
|
||||
[1,14,1,36],
|
||||
[1,15,1,36],
|
||||
[1,16,1,36],
|
||||
[1,17,1,36],
|
||||
[1,18,1,36],
|
||||
[1,19,1,36],
|
||||
[1,20,1,36],
|
||||
[1,21,1,36],
|
||||
[1,22,1,36],
|
||||
|
||||
[2,3,7,24],
|
||||
[2,5,7,24],
|
||||
[2,6,7,24],
|
||||
[2,7,7,24],
|
||||
[2,8,7,24],
|
||||
[2,9,7,24],
|
||||
[2,10,7,24],
|
||||
[2,11,7,24],
|
||||
[2,12,7,24],
|
||||
[2,13,7,24],
|
||||
[2,14,7,24],
|
||||
[2,15,7,24],
|
||||
[2,16,7,24],
|
||||
[2,17,7,24],
|
||||
[2,18,7,24],
|
||||
[2,19,7,24],
|
||||
[2,20,7,24],
|
||||
[2,21,7,24],
|
||||
[2,22,7,24],
|
||||
|
||||
[3,5,7,24],
|
||||
[3,6,7,24],
|
||||
[3,7,7,24],
|
||||
[3,8,7,24],
|
||||
[3,9,7,24],
|
||||
[3,10,7,24],
|
||||
[3,11,7,24],
|
||||
[3,12,7,24],
|
||||
[3,13,7,24],
|
||||
[3,14,7,24],
|
||||
[3,15,7,24],
|
||||
[3,16,7,24],
|
||||
[3,17,7,24],
|
||||
[3,18,7,24],
|
||||
[3,19,7,24],
|
||||
[3,20,7,24],
|
||||
[3,21,7,24],
|
||||
[3,22,7,24],
|
||||
|
||||
[5,6,7,24],
|
||||
[5,7,7,24],
|
||||
[5,8,7,24],
|
||||
[5,9,7,24],
|
||||
[5,10,7,24],
|
||||
[5,11,7,24],
|
||||
[5,12,7,24],
|
||||
[5,13,7,24],
|
||||
[5,14,7,24],
|
||||
[5,15,7,24],
|
||||
[5,16,7,24],
|
||||
[5,17,7,24],
|
||||
[5,18,7,24],
|
||||
[5,19,7,24],
|
||||
[5,20,7,24],
|
||||
[5,21,7,24],
|
||||
[5,22,7,24],
|
||||
|
||||
[6,7,7,24],
|
||||
[6,8,7,24],
|
||||
[6,9,7,24],
|
||||
[6,10,7,24],
|
||||
[6,11,7,24],
|
||||
[6,12,7,24],
|
||||
[6,13,7,24],
|
||||
[6,14,7,24],
|
||||
[6,15,7,24],
|
||||
[6,16,7,24],
|
||||
[6,17,7,24],
|
||||
[6,18,7,24],
|
||||
[6,19,7,24],
|
||||
[6,20,7,24],
|
||||
[6,21,7,24],
|
||||
[6,22,7,24],
|
||||
|
||||
[7,8,7,24],
|
||||
[7,9,7,24],
|
||||
[7,10,7,24],
|
||||
[7,11,7,24],
|
||||
[7,12,7,24],
|
||||
[7,13,7,24],
|
||||
[7,14,7,24],
|
||||
[7,15,7,24],
|
||||
[7,16,7,24],
|
||||
[7,17,7,24],
|
||||
[7,18,7,24],
|
||||
[7,19,7,24],
|
||||
[7,20,7,24],
|
||||
[7,21,7,24],
|
||||
[7,22,7,24],
|
||||
|
||||
[8,9,7,24],
|
||||
[8,10,7,24],
|
||||
[8,11,7,24],
|
||||
[8,12,7,24],
|
||||
[8,13,7,24],
|
||||
[8,14,7,24],
|
||||
[8,15,7,24],
|
||||
[8,16,7,24],
|
||||
[8,17,7,24],
|
||||
[8,18,7,24],
|
||||
[8,19,7,24],
|
||||
[8,20,7,24],
|
||||
[8,21,7,24],
|
||||
[8,22,7,24],
|
||||
[9,10,7,24],
|
||||
[9,11,7,24],
|
||||
[9,12,7,24],
|
||||
[9,13,7,24],
|
||||
[9,14,7,24],
|
||||
[9,15,7,24],
|
||||
[9,16,7,24],
|
||||
[9,17,7,24],
|
||||
[9,18,7,24],
|
||||
[9,19,7,24],
|
||||
[9,20,7,24],
|
||||
[9,21,7,24],
|
||||
[9,22,7,24],
|
||||
[10,11,7,24],
|
||||
[10,12,7,24],
|
||||
[10,13,7,24],
|
||||
[10,14,7,24],
|
||||
[10,15,7,24],
|
||||
[10,16,7,24],
|
||||
[10,17,7,24],
|
||||
[10,18,7,24],
|
||||
[10,19,7,24],
|
||||
[10,20,7,24],
|
||||
[10,21,7,24],
|
||||
[10,22,7,24],
|
||||
[11,12,7,24],
|
||||
[11,13,7,24],
|
||||
[11,14,7,24],
|
||||
[11,15,7,24],
|
||||
[11,16,7,24],
|
||||
[11,17,7,24],
|
||||
[11,18,7,24],
|
||||
[11,19,7,24],
|
||||
[11,20,7,24],
|
||||
[11,21,7,24],
|
||||
[11,22,7,24],
|
||||
[12,13,7,24],
|
||||
[12,14,7,24],
|
||||
[12,15,7,24],
|
||||
[12,16,7,24],
|
||||
[12,17,7,24],
|
||||
[12,18,7,24],
|
||||
[12,19,7,24],
|
||||
[12,20,7,24],
|
||||
[12,21,7,24],
|
||||
[12,22,7,24],
|
||||
[13,14,7,24],
|
||||
[13,15,7,24],
|
||||
[13,16,7,24],
|
||||
[13,17,7,24],
|
||||
[13,18,7,24],
|
||||
[13,19,7,24],
|
||||
[13,20,7,24],
|
||||
[13,21,7,24],
|
||||
[13,22,7,24],
|
||||
[14,15,7,24],
|
||||
[14,16,7,24],
|
||||
[14,17,7,24],
|
||||
[14,18,7,24],
|
||||
[14,19,7,24],
|
||||
[14,20,7,24],
|
||||
[14,21,7,24],
|
||||
[14,22,7,24],
|
||||
[15,16,7,24],
|
||||
[15,17,7,24],
|
||||
[15,18,7,24],
|
||||
[15,19,7,24],
|
||||
[15,20,7,24],
|
||||
[15,21,7,24],
|
||||
[15,22,7,24],
|
||||
[16,17,7,24],
|
||||
[16,18,7,24],
|
||||
[16,19,7,24],
|
||||
[16,20,7,24],
|
||||
[16,21,7,24],
|
||||
[16,22,7,24],
|
||||
[17,18,7,24],
|
||||
[17,19,7,24],
|
||||
[17,20,7,24],
|
||||
[17,21,7,24],
|
||||
[17,22,7,24],
|
||||
[18,19,7,24],
|
||||
[18,20,7,24],
|
||||
[18,21,7,24],
|
||||
[18,22,7,24],
|
||||
[19,20,7,24],
|
||||
[19,21,7,24],
|
||||
[19,22,7,24],
|
||||
[20,21,7,24],
|
||||
[20,22,7,24],
|
||||
[21,22,7,24]
|
||||
],
|
||||
"general":[
|
||||
[0, "아회남", null, 0, null, 65, 74, 26, 0, 190, 225, null, null],
|
||||
[0, "이적", null, 0, null, 29, 24, 84, 0, 162, 273, null, null],
|
||||
[0, "윤상", null, 0, null, 51, 44, 62, 0, 194, 260, null, null],
|
||||
[0, "윤묵", null, 0, null, 26, 15, 66, 0, 183, 239, null, null],
|
||||
[0, "우금1", null, 0, null, 83, 78, 74, 0, 159, 221, null, null],
|
||||
[0, "위관", null, 0, null, 69, 46, 79, 0, 220, 291, null, null],
|
||||
[0, "원윤", null, 7, "완", 15, 14, 39, 1, 150, 199, null, null],
|
||||
[0, "원희", null, 17, "남피", 66, 51, 63, 1, 176, 207, null, null],
|
||||
[0, "염행", null, 20, "천수", 76, 84, 66, 1, 159, 215, null, null],
|
||||
[0, "염유", null, 0, "계", 71, 57, 71, 0, 168, 227, null, null],
|
||||
[0, "원술", null, 7, "완", 44, 65, 65, 12, 155, 199, null, null, "흥 마궁수 주제에 어딜 앞에 나서느냐! 썩 꺼져라!"],
|
||||
[0, "원상", null, 0, null, 63, 75, 42, 0, 179, 207, null, null],
|
||||
[0, "원소", null, 17, "남피", 81, 69, 70, 12, 154, 202, null, null, "안량과 문추만 이곳에 있엇어도…"],
|
||||
[0, "염상", null, 0, null, 30, 27, 71, 0, 158, 199, null, null],
|
||||
[0, "원담", null, 17, "남피", 60, 69, 30, 1, 173, 205, null, null],
|
||||
[0, "염포", null, 14, "한중", 29, 25, 82, 11, 167, 231, null, null],
|
||||
[0, "왕위", null, 0, null, 60, 70, 62, 0, 163, 222, null, null],
|
||||
[0, "왕윤", null, 1, "장안", 26, 6, 68, 1, 137, 192, null, null],
|
||||
[0, "왕항", null, 0, null, 76, 60, 61, 0, 184, 254, null, null],
|
||||
[0, "왕찬", null, 0, null, 15, 3, 79, 0, 177, 217, null, null],
|
||||
[0, "왕수", null, 19, "북해", 54, 27, 77, 11, 168, 218, null, null],
|
||||
[0, "왕숙", null, 0, null, 36, 22, 76, 0, 195, 256, null, null],
|
||||
[0, "왕준", null, 0, null, 81, 73, 77, 0, 206, 286, null, null],
|
||||
[0, "왕쌍", null, 0, null, 67, 88, 19, 0, 195, 228, null, null],
|
||||
[0, "왕창", null, 0, null, 74, 64, 79, 0, 188, 259, null, null],
|
||||
[0, "왕평", null, 0, null, 83, 79, 76, 0, 192, 248, null, null],
|
||||
[0, "왕보", null, 0, null, 62, 41, 79, 0, 171, 219, null, null],
|
||||
[0, "왕문", null, 0, null, 65, 64, 31, 0, 162, 205, null, null],
|
||||
[0, "왕릉", null, 0, null, 74, 64, 71, 0, 172, 251, null, null],
|
||||
[0, "왕루", null, 0, null, 28, 30, 79, 0, 173, 211, null, null],
|
||||
[0, "왕랑", null, 8, "서주", 47, 35, 79, 1, 167, 228, null, null],
|
||||
[0, "온회", null, 0, null, 62, 36, 74, 0, 178, 228, null, null],
|
||||
[0, "하안", null, 0, null, 15, 30, 72, 0, 190, 249, null, null],
|
||||
[0, "괴월", null, 13, "양양", 47, 27, 82, 11, 157, 214, null, null],
|
||||
[0, "괴량", null, 13, "양양", 68, 33, 88, 1, 155, 204, null, null],
|
||||
[0, "가화", null, 0, null, 49, 65, 41, 0, 176, 222, null, null],
|
||||
[0, "가규", null, 0, null, 78, 61, 84, 0, 177, 231, null, null],
|
||||
[0, "하의", null, 0, null, 56, 69, 36, 0, 161, 195, null, null],
|
||||
[0, "화흠", null, 1, "낙양", 33, 33, 82, 1, 157, 231, null, null],
|
||||
[0, "가후", null, 1, "안정", 88, 48, 97, 1, 147, 223, null, null],
|
||||
[0, "곽가", null, 0, null, 88, 15, 96, 0, 170, 207, null, null],
|
||||
[0, "악환", null, 0, null, 65, 82, 42, 0, 196, 251, null, null],
|
||||
[0, "곽사", null, 1, "안정", 64, 76, 13, 1, 146, 197, null, null],
|
||||
[0, "악취", null, 0, null, 53, 66, 61, 0, 157, 195, null, null],
|
||||
[0, "곽준", null, 0, null, 73, 66, 73, 0, 178, 217, null, null],
|
||||
[0, "학소", null, 0, null, 86, 79, 78, 0, 185, 229, null, null],
|
||||
[0, "악진", null, 2, "진류", 80, 84, 56, 1, 159, 218, null, null],
|
||||
[0, "곽도", null, 17, "남피", 52, 50, 82, 1, 157, 205, null, null],
|
||||
[0, "학맹", null, 0, null, 62, 67, 42, 0, 156, 300, null, null],
|
||||
[0, "곽유지", null, 0, null, 28, 9, 69, 0, 190, 259, null, null],
|
||||
[0, "곽익", null, 0, null, 73, 69, 69, 0, 207, 270, null, null],
|
||||
[0, "곽회", null, 0, null, 87, 78, 81, 0, 187, 255, null, null],
|
||||
[0, "하후위", null, 0, null, 71, 73, 49, 0, 204, 253, null, null],
|
||||
[0, "하후연", null, 2, "진류", 90, 91, 68, 1, 162, 219, null, null],
|
||||
[0, "하후은", null, 0, null, 63, 72, 53, 0, 180, 208, null, null],
|
||||
[0, "하후화", null, 0, null, 48, 51, 71, 0, 207, 265, null, null],
|
||||
[0, "하후혜", null, 0, null, 50, 44, 76, 0, 206, 242, null, null],
|
||||
[0, "하후현", null, 0, null, 54, 39, 76, 0, 208, 254, null, null],
|
||||
[0, "하후상", null, 0, null, 79, 72, 75, 0, 181, 225, null, null],
|
||||
[0, "하후덕", null, 0, null, 69, 73, 32, 0, 178, 218, null, null],
|
||||
[0, "하후돈", null, 2, "진류", 92, 90, 63, 1, 156, 220, null, null],
|
||||
[0, "하후패", null, 0, null, 79, 84, 77, 0, 202, 262, null, null],
|
||||
[0, "하후무", null, 0, null, 20, 7, 4, 0, 201, 259, null, null],
|
||||
[0, "가충", null, 0, null, 54, 31, 89, 0, 217, 282, null, null],
|
||||
[0, "하진", null, 0, null, 39, 40, 6, 0, 135, 189, null, null],
|
||||
[0, "화웅", null, 1, "호로", 88, 92, 61, 1, 155, 190, null, null],
|
||||
[0, "한윤", null, 7, "완", 26, 29, 65, 1, 155, 197, null, null],
|
||||
[0, "관우", null, 0, "진류", 97, 97, 79, 0, 162, 219, null, null, "술이 식기 전에 돌아오겠소"],
|
||||
[0, "환계", null, 7, "완", 25, 26, 68, 1, 156, 221, null, null],
|
||||
[0, "관해", null, 0, null, 70, 82, 10, 0, 160, 193, null, null],
|
||||
[0, "관구검", null, 0, null, 78, 74, 55, 0, 202, 255, null, null],
|
||||
[0, "한현", null, 0, null, 22, 33, 62, 0, 163, 220, null, null],
|
||||
[0, "한호", null, 15, "하내", 69, 72, 84, 11, 164, 224, null, null],
|
||||
[0, "관흥", null, 0, null, 76, 86, 67, 0, 199, 234, null, null],
|
||||
[0, "관색", null, 0, null, 74, 88, 56, 0, 200, 239, null, null],
|
||||
[0, "한수", null, 20, "천수", 81, 75, 82, 12, 142, 215, null, null],
|
||||
[0, "한숭", null, 0, null, 25, 15, 71, 0, 154, 210, null, null],
|
||||
[0, "관정", null, 4, "북평", 36, 52, 73, 11, 158, 199, null, null],
|
||||
[0, "한섬", null, 0, null, 69, 66, 36, 0, 159, 196, null, null],
|
||||
[0, "감택", null, 0, null, 43, 49, 83, 0, 182, 243, null, null],
|
||||
[0, "한충", null, 0, null, 64, 67, 18, 0, 151, 184, null, null],
|
||||
[0, "한당", null, 7, "완", 76, 85, 61, 1, 156, 227, null, null],
|
||||
[0, "한덕", null, 0, null, 63, 76, 25, 0, 171, 228, null, null],
|
||||
[0, "감녕", null, 0, null, 93, 94, 76, 0, 174, 219, null, null],
|
||||
[0, "한복", null, 12, "업", 28, 3, 27, 12, 149, 193, null, null],
|
||||
[0, "관평", null, 0, null, 80, 82, 72, 0, 186, 219, null, null],
|
||||
[0, "간옹", null, 0, "진류", 20, 32, 75, 0, 164, 225, null, null],
|
||||
[0, "안량", null, 17, "남피", 88, 94, 21, 1, 160, 200, null, null],
|
||||
[0, "위연", null, 0, null, 85, 92, 72, 0, 175, 234, null, null],
|
||||
[0, "국의", null, 12, "업", 82, 78, 51, 1, 146, 197, null, null],
|
||||
[0, "희지재", null, 0, null, 63, 7, 88, 0, 157, 196, null, null],
|
||||
[0, "위속", null, 0, null, 67, 78, 31, 0, 156, 200, null, null],
|
||||
[0, "위유", null, 16, "계", 46, 29, 74, 11, 151, 193, null, null],
|
||||
[0, "우금2", null, 0, null, 72, 79, 38, 0, 173, 226, null, null],
|
||||
[0, "우보", null, 1, "천수", 38, 60, 21, 1, 159, 192, null, null],
|
||||
[0, "강유", null, 0, null, 92, 89, 90, 0, 202, 264, null, null],
|
||||
[0, "공지", null, 0, null, 43, 53, 62, 0, 178, 197, null, null],
|
||||
[0, "교유", null, 0, null, 64, 69, 38, 0, 143, 195, null, null],
|
||||
[0, "공도", null, 0, null, 59, 70, 23, 0, 164, 200, null, null],
|
||||
[0, "허공", null, 0, null, 44, 66, 64, 0, 155, 200, null, null],
|
||||
[0, "허정", null, 21, "초", 23, 5, 68, 11, 152, 222, null, null],
|
||||
[0, "허저", null, 0, null, 74, 96, 36, 0, 169, 226, null, null],
|
||||
[0, "허유", null, 17, "남피", 36, 21, 80, 1, 155, 204, null, null],
|
||||
[0, "기령", null, 7, "완", 78, 83, 51, 1, 155, 199, null, null],
|
||||
[0, "김의", null, 0, null, 32, 38, 65, 0, 177, 218, null, null],
|
||||
[0, "김배삼결", null, 0, null, 64, 76, 19, 0, 192, 225, null, null],
|
||||
[0, "김선", null, 1, "장안", 52, 68, 13, 1, 155, 220, null, null],
|
||||
[0, "우번", null, 0, null, 43, 46, 86, 0, 164, 233, null, null],
|
||||
[0, "형도영", null, 0, null, 69, 80, 41, 0, 174, 208, null, null],
|
||||
[0, "엄안", null, 6, "자동", 82, 83, 72, 1, 151, 222, null, null],
|
||||
[0, "곽마", null, 0, null, 68, 71, 40, 0, 239, 281, null, null],
|
||||
[0, "엄준", null, 0, null, 28, 2, 71, 0, 169, 246, null, null],
|
||||
[0, "엄정", null, 0, null, 50, 55, 39, 0, 151, 189, null, null],
|
||||
[0, "엄백호", null, 0, null, 67, 70, 23, 0, 142, 198, null, null, "이 몸은 동오의 덕왕 엄백호라고 하오!"],
|
||||
[0, "엄여", null, 0, null, 61, 78, 44, 0, 145, 196, null, null],
|
||||
[0, "오의", null, 0, null, 79, 73, 70, 0, 165, 237, null, null],
|
||||
[0, "황개", null, 7, "완", 80, 83, 70, 1, 154, 218, null, null],
|
||||
[0, "고간", null, 0, null, 74, 56, 48, 0, 168, 206, null, null],
|
||||
[0, "황권", null, 0, null, 75, 59, 82, 0, 167, 240, null, null],
|
||||
[0, "고유", null, 0, null, 57, 43, 72, 0, 174, 263, null, null],
|
||||
[0, "고순", null, 0, null, 85, 86, 60, 0, 162, 198, null, null],
|
||||
[0, "고상", null, 0, null, 68, 68, 53, 0, 194, 252, null, null],
|
||||
[0, "고승", null, 0, null, 67, 73, 41, 0, 145, 184, null, null],
|
||||
[0, "후성", null, 0, null, 74, 75, 68, 0, 158, 199, null, null],
|
||||
[0, "후선", null, 20, "천수", 63, 66, 34, 1, 175, 228, null, null],
|
||||
[0, "황조", null, 13, "강하", 74, 66, 55, 1, 148, 208, null, null],
|
||||
[0, "공손월", null, 4, "북평", 74, 72, 47, 1, 160, 192, null, null],
|
||||
[0, "공손연", null, 0, null, 65, 70, 60, 0, 205, 238, null, null],
|
||||
[0, "공손공", null, 11, "안평", 39, 17, 69, 1, 174, 240, null, null],
|
||||
[0, "공손강", null, 11, "안평", 72, 66, 65, 1, 172, 211, null, null],
|
||||
[0, "공손찬", null, 4, "북평", 84, 83, 75, 12, 152, 199, null, null],
|
||||
[0, "공손속", null, 4, "북평", 63, 68, 57, 1, 176, 199, null, null],
|
||||
[0, "공손도", null, 11, "안평", 67, 71, 66, 12, 154, 204, null, null],
|
||||
[0, "공손범", null, 4, "북평", 73, 69, 66, 1, 158, 199, null, null],
|
||||
[0, "황충", null, 0, null, 90, 93, 65, 0, 154, 220, null, null],
|
||||
[0, "고정", null, 0, null, 55, 63, 43, 0, 190, 251, null, null],
|
||||
[0, "고패", null, 0, null, 66, 61, 69, 0, 170, 212, null, null],
|
||||
[0, "황보숭", null, 1, "홍농", 92, 61, 73, 1, 132, 195, null, null],
|
||||
[0, "공융", null, 19, "북해", 30, 5, 73, 12, 153, 208, null, null],
|
||||
[0, "고람", null, 17, "남피", 76, 82, 68, 1, 159, 201, null, null],
|
||||
[0, "오경", null, 0, null, 69, 66, 52, 0, 151, 211, null, null],
|
||||
[0, "호거아", null, 1, "사곡", 70, 82, 41, 1, 164, 206, null, null],
|
||||
[0, "호진", null, 1, "호로", 65, 74, 12, 1, 148, 190, null, null],
|
||||
[0, "올돌골", null, 0, null, 79, 86, 1, 0, 186, 225, null, null],
|
||||
[0, "호반", null, 0, null, 55, 55, 59, 0, 179, 233, null, null],
|
||||
[0, "오반", null, 0, null, 74, 71, 59, 0, 171, 234, null, null],
|
||||
[0, "고옹", null, 0, null, 43, 18, 80, 0, 168, 243, null, null],
|
||||
[0, "오란", null, 6, "성도", 68, 80, 35, 1, 170, 218, null, null],
|
||||
[0, "채화", null, 13, "장판", 39, 50, 1, 1, 166, 208, null, null],
|
||||
[0, "채중", null, 13, "장판", 40, 54, 2, 1, 168, 208, null, null],
|
||||
[0, "채모", null, 13, "양양", 70, 70, 77, 1, 160, 215, null, null],
|
||||
[0, "착융", null, 0, null, 60, 69, 38, 0, 161, 195, null, null],
|
||||
[0, "사마의", null, 0, "하내", 98, 63, 98, 0, 179, 251, null, null],
|
||||
[0, "사마염", null, 0, null, 69, 59, 77, 0, 238, 290, null, null],
|
||||
[0, "사마사", null, 0, null, 79, 64, 88, 0, 208, 255, null, null],
|
||||
[0, "사마소", null, 0, null, 76, 57, 87, 0, 211, 265, null, null],
|
||||
[0, "사마부", null, 0, "하내", 70, 37, 77, 0, 180, 272, null, null],
|
||||
[0, "사마랑", null, 1, "낙양", 20, 21, 72, 1, 171, 217, null, null],
|
||||
[0, "사마가", null, 0, null, 66, 84, 25, 0, 167, 222, null, null],
|
||||
[0, "주흔", null, 9, "수춘", 65, 62, 73, 11, 159, 196, null, null],
|
||||
[0, "주앙", null, 17, "남피", 74, 65, 65, 1, 162, 195, null, null],
|
||||
[0, "주지", null, 0, null, 65, 85, 41, 0, 233, 295, null, null],
|
||||
[0, "주창", null, 0, "여남", 68, 84, 42, 0, 164, 219, null, null],
|
||||
[0, "주태유평", null, 0, null, 84, 91, 48, 0, 171, 225, null, null],
|
||||
[0, "주방", null, 0, null, 52, 41, 80, 0, 200, 240, null, null],
|
||||
[0, "주유", null, 0, null, 95, 71, 96, 0, 175, 210, null, null],
|
||||
[0, "주환", null, 0, null, 84, 82, 77, 0, 177, 238, null, null],
|
||||
[0, "주거", null, 0, null, 77, 57, 72, 0, 190, 246, null, null],
|
||||
[0, "축융", null, 0, null, 74, 85, 29, 0, 182, 230, null, null],
|
||||
[0, "주준", null, 1, "낙양", 89, 65, 70, 1, 149, 195, null, null],
|
||||
[0, "주연", null, 0, null, 79, 69, 71, 0, 182, 249, null, null],
|
||||
[0, "주치", null, 0, null, 71, 56, 72, 0, 156, 224, null, null],
|
||||
[0, "주포", null, 0, null, 68, 73, 34, 0, 191, 225, null, null],
|
||||
[0, "주령", null, 0, null, 71, 73, 67, 0, 170, 236, null, null],
|
||||
[0, "순욱", null, 0, null, 62, 14, 95, 0, 163, 212, null, null],
|
||||
[0, "순우경", null, 17, "남피", 72, 66, 29, 1, 146, 200, null, null],
|
||||
[0, "순심", null, 0, null, 34, 25, 78, 0, 164, 208, null, null],
|
||||
[0, "순유", null, 0, "낙양", 73, 26, 94, 0, 157, 214, null, null],
|
||||
[0, "장완", null, 0, null, 78, 34, 84, 0, 188, 246, null, null],
|
||||
[0, "종회", null, 0, null, 82, 51, 91, 0, 225, 264, null, null],
|
||||
[0, "장간", null, 0, null, 19, 6, 66, 0, 175, 208, null, null],
|
||||
[0, "장의거", null, 17, "남피", 71, 58, 59, 1, 159, 205, null, null],
|
||||
[0, "장흠", null, 0, null, 78, 84, 54, 0, 159, 208, null, null],
|
||||
[0, "장제3", null, 0, null, 48, 43, 85, 0, 188, 249, null, null],
|
||||
[0, "초주", null, 0, null, 16, 3, 67, 0, 201, 270, null, null],
|
||||
[0, "초촉", null, 0, null, 65, 76, 33, 0, 159, 208, null, null],
|
||||
[0, "상총", null, 0, null, 76, 61, 77, 0, 195, 240, null, null],
|
||||
[0, "종요", null, 0, null, 70, 24, 77, 0, 151, 230, null, null],
|
||||
[0, "상랑", null, 0, null, 28, 18, 74, 0, 167, 247, null, null],
|
||||
[0, "서영", null, 1, "사수", 80, 76, 62, 1, 147, 192, null, null],
|
||||
[0, "제갈각", null, 0, null, 72, 47, 90, 0, 203, 253, null, null],
|
||||
[0, "제갈근", null, 0, null, 75, 34, 81, 0, 174, 241, null, null],
|
||||
[0, "제갈균", null, 0, null, 29, 25, 52, 0, 185, 252, null, null],
|
||||
[0, "제갈탄", null, 0, null, 72, 72, 76, 0, 206, 258, null, null],
|
||||
[0, "제갈량", null, 0, null, 98, 38, 100, 0, 184, 234, null, null],
|
||||
[0, "서황", null, 0, null, 91, 90, 78, 0, 165, 228, null, null],
|
||||
[0, "서서", null, 0, null, 87, 64, 93, 0, 160, 300, null, null],
|
||||
[0, "서성", null, 0, null, 86, 81, 78, 0, 178, 232, null, null],
|
||||
[0, "서막", null, 0, null, 55, 32, 68, 0, 171, 249, null, null],
|
||||
[0, "신의", null, 0, null, 55, 59, 60, 0, 190, 252, null, null],
|
||||
[0, "신탐", null, 0, null, 56, 62, 54, 0, 188, 254, null, null],
|
||||
[0, "심배", null, 12, "업", 80, 60, 83, 1, 156, 204, null, null],
|
||||
[0, "신비", null, 0, null, 39, 24, 79, 0, 171, 240, null, null],
|
||||
[0, "신평", null, 17, "남피", 69, 43, 77, 1, 165, 204, null, null],
|
||||
[0, "진복", null, 0, null, 31, 7, 73, 0, 160, 226, null, null],
|
||||
[0, "진랑", null, 0, null, 58, 70, 35, 0, 192, 234, null, null],
|
||||
[0, "휴고", null, 0, null, 63, 71, 38, 0, 151, 199, null, null],
|
||||
[0, "추단", null, 0, null, 61, 64, 34, 0, 144, 193, null, null],
|
||||
[0, "성의", null, 20, "천수", 74, 72, 41, 1, 168, 211, null, null],
|
||||
[0, "성공영", null, 20, "천수", 73, 71, 80, 11, 171, 220, null, null],
|
||||
[0, "설종", null, 0, null, 34, 16, 73, 0, 187, 243, null, null],
|
||||
[0, "선경", null, 4, "북평", 71, 68, 43, 1, 156, 199, null, null],
|
||||
[0, "전종", null, 0, null, 78, 72, 75, 0, 183, 249, null, null],
|
||||
[0, "조예", null, 0, null, 72, 52, 82, 0, 205, 239, null, null],
|
||||
[0, "조휴", null, 0, null, 74, 75, 62, 0, 174, 228, null, null],
|
||||
[0, "송헌", null, 0, null, 68, 77, 38, 0, 157, 200, null, null],
|
||||
[0, "조앙", null, 2, "진류", 74, 67, 69, 1, 161, 197, null, null],
|
||||
[0, "조홍 자렴", null, 2, "진류", 79, 81, 44, 1, 169, 232, null, null, "좌절감이 사나이를 키우는 것이다!"],
|
||||
[0, "조순", null, 2, "진류", 75, 71, 63, 1, 170, 210, null, null],
|
||||
[0, "조창", null, 0, null, 82, 90, 40, 0, 190, 223, null, null],
|
||||
[0, "조식", null, 0, null, 33, 22, 81, 0, 192, 232, null, null],
|
||||
[0, "조진", null, 0, null, 81, 74, 70, 0, 185, 231, null, null],
|
||||
[0, "조인", null, 2, "진류", 89, 86, 62, 1, 168, 223, null, null],
|
||||
[0, "조성", null, 0, null, 54, 74, 38, 0, 163, 198, null, null],
|
||||
[0, "조조", null, 2, "진류", 99, 72, 91, 12, 151, 220, null, null, "내가 천하 사람들을 저버릴지언정, 천하 사람들이 나를 저버리게 하지는 않을 것이다."],
|
||||
[0, "조충", null, 0, null, 31, 21, 85, 0, 196, 207, null, null],
|
||||
[0, "장패", null, 0, null, 78, 75, 53, 0, 165, 231, null, null],
|
||||
[0, "조비", null, 0, null, 70, 71, 83, 0, 187, 226, null, null],
|
||||
[0, "조표", null, 8, "서주", 66, 69, 32, 1, 151, 196, null, null],
|
||||
[0, "저수", null, 12, "업", 78, 35, 90, 11, 156, 201, null, null],
|
||||
[0, "소비", null, 0, null, 69, 63, 66, 0, 172, 221, null, null],
|
||||
[0, "조무", null, 7, "완", 70, 71, 66, 1, 155, 193, null, null],
|
||||
[0, "손환", null, 0, null, 82, 73, 76, 0, 166, 228, null, null],
|
||||
[0, "손견", null, 7, "완", 94, 90, 79, 11, 156, 192, null, null, "내가 옥새를 가지고 있다면 나는 칼과 화살을 맞아 죽을 것이다."],
|
||||
[0, "손건", null, 0, null, 34, 33, 79, 0, 165, 215, null, null],
|
||||
[0, "손권", null, 0, null, 79, 67, 80, 0, 182, 252, null, null],
|
||||
[0, "손교", null, 0, null, 77, 72, 67, 0, 181, 219, null, null],
|
||||
[0, "손책", null, 0, null, 96, 92, 74, 0, 175, 200, null, null],
|
||||
[0, "손소", null, 0, null, 80, 79, 76, 0, 188, 241, null, null],
|
||||
[0, "손정", null, 7, "완", 66, 53, 73, 1, 160, 206, null, null],
|
||||
[0, "손중", null, 0, null, 62, 71, 36, 0, 154, 184, null, null],
|
||||
[0, "손등", null, 0, null, 62, 37, 79, 0, 209, 241, null, null],
|
||||
[0, "손유", null, 0, null, 77, 70, 68, 0, 177, 215, null, null],
|
||||
[0, "손익", null, 0, null, 67, 78, 27, 0, 184, 204, null, null],
|
||||
[0, "손례", null, 0, null, 78, 81, 67, 0, 180, 250, null, null],
|
||||
[0, "태사자", null, 0, "안평", 90, 93, 69, 0, 166, 206, null, null],
|
||||
[0, "대래동주", null, 0, null, 51, 53, 54, 0, 195, 249, null, null],
|
||||
[0, "대릉", null, 0, null, 70, 75, 39, 0, 199, 258, null, null],
|
||||
[0, "타사대왕", null, 0, null, 62, 59, 70, 0, 186, 225, null, null],
|
||||
[0, "담웅", null, 0, null, 58, 73, 14, 0, 188, 221, null, null],
|
||||
[0, "장윤", null, 13, "양양", 72, 67, 42, 1, 163, 208, null, null],
|
||||
[0, "조운", null, 0, "진양", 96, 96, 77, 0, 168, 229, null, null],
|
||||
[0, "장위", null, 14, "한중", 74, 66, 45, 1, 172, 228, null, null, "쌀 다섯 말만 가지고 오시오~ 모두 고쳐드리리다."],
|
||||
[0, "장영", null, 0, null, 75, 74, 41, 0, 154, 195, null, null],
|
||||
[0, "장연", null, 0, "진양", 76, 81, 57, 0, 153, 210, null, null],
|
||||
[0, "장횡", null, 0, null, 59, 70, 23, 0, 178, 211, null, null],
|
||||
[0, "장온", null, 0, null, 32, 10, 72, 0, 193, 231, null, null],
|
||||
[0, "장개", null, 8, "하비", 34, 66, 8, 1, 155, 194, null, null],
|
||||
[0, "장각", null, 0, null, 87, 25, 86, 0, 140, 184, null, null],
|
||||
[0, "장기", null, 0, null, 74, 35, 76, 0, 170, 223, null, null],
|
||||
[0, "장의", null, 0, null, 79, 72, 75, 0, 153, 215, null, null],
|
||||
[0, "장훈", null, 7, "완", 72, 68, 41, 1, 156, 206, null, null],
|
||||
[0, "장굉", null, 0, null, 24, 22, 86, 0, 153, 212, null, null],
|
||||
[0, "장합", null, 12, "업", 89, 89, 73, 1, 167, 231, null, null],
|
||||
[0, "조홍", null, 0, null, 66, 72, 28, 0, 156, 184, null, null],
|
||||
[0, "장제1", null, 1, "장안", 70, 66, 55, 1, 144, 196, null, null],
|
||||
[0, "장수", null, 1, "함곡", 80, 73, 64, 1, 154, 207, null, null],
|
||||
[0, "장소 자포", null, 0, null, 33, 3, 84, 0, 156, 236, null, null],
|
||||
[0, "장송", null, 0, null, 25, 6, 88, 0, 170, 212, null, null],
|
||||
[0, "장임", null, 6, "성도", 84, 84, 78, 1, 169, 214, null, null],
|
||||
[0, "장제", null, 0, null, 67, 43, 80, 0, 236, 280, null, null],
|
||||
[0, "장막", null, 2, "진류", 52, 53, 71, 1, 155, 195, null, null],
|
||||
[0, "조범", null, 0, null, 28, 21, 32, 0, 168, 218, null, null],
|
||||
[0, "장비", null, 0, "진류", 94, 98, 30, 0, 165, 221, null, null],
|
||||
[0, "장포", null, 0, null, 78, 87, 48, 0, 198, 219, null, null],
|
||||
[0, "장보", null, 0, null, 83, 71, 81, 0, 148, 184, null, null],
|
||||
[0, "장만성", null, 0, null, 75, 81, 45, 0, 143, 184, null, null],
|
||||
[0, "장양", null, 5, "진양", 72, 70, 66, 12, 151, 195, null, null],
|
||||
[0, "장익", null, 0, null, 75, 74, 76, 0, 188, 264, null, null],
|
||||
[0, "장료", null, 1, "사곡", 95, 92, 78, 1, 169, 222, null, null],
|
||||
[0, "장량", null, 0, null, 78, 80, 74, 0, 153, 184, null, null],
|
||||
[0, "조루", null, 0, null, 70, 43, 68, 0, 183, 219, null, null],
|
||||
[0, "장로", null, 14, "한중", 51, 26, 74, 12, 163, 216, null, null],
|
||||
[0, "진횡", null, 0, null, 64, 63, 26, 0, 161, 195, null, null],
|
||||
[0, "진응", null, 0, null, 62, 72, 45, 0, 172, 208, null, null],
|
||||
[0, "진기", null, 0, null, 58, 65, 43, 0, 165, 198, null, null],
|
||||
[0, "진궁", null, 2, "진류", 84, 55, 89, 11, 154, 198, null, null],
|
||||
[0, "진교", null, 0, null, 61, 27, 77, 0, 175, 237, null, null],
|
||||
[0, "진군", null, 0, null, 32, 14, 75, 0, 167, 236, null, null],
|
||||
[0, "진규", null, 8, "서주", 30, 4, 82, 11, 132, 206, null, null],
|
||||
[0, "진식", null, 0, null, 70, 71, 25, 0, 191, 230, null, null],
|
||||
[0, "진진", null, 0, null, 46, 46, 69, 0, 170, 235, null, null],
|
||||
[0, "진태", null, 0, null, 84, 77, 86, 0, 210, 260, null, null],
|
||||
[0, "진등", null, 8, "하비", 79, 64, 81, 1, 169, 208, null, null],
|
||||
[0, "진도", null, 0, null, 76, 71, 67, 0, 171, 237, null, null],
|
||||
[0, "진무", null, 0, null, 76, 87, 43, 0, 176, 215, null, null],
|
||||
[0, "진란", null, 0, null, 66, 69, 40, 0, 157, 204, null, null],
|
||||
[0, "진림", null, 0, null, 25, 9, 75, 0, 160, 217, null, null],
|
||||
[0, "정욱", null, 0, null, 70, 49, 90, 0, 141, 220, null, null],
|
||||
[0, "정원지", null, 0, null, 69, 74, 17, 0, 145, 184, null, null],
|
||||
[0, "정은", null, 0, null, 69, 73, 40, 0, 184, 220, null, null],
|
||||
[0, "정원", null, 0, null, 70, 76, 35, 0, 137, 189, null, null],
|
||||
[0, "정보", null, 7, "완", 84, 79, 79, 1, 151, 216, null, null],
|
||||
[0, "정봉승연", null, 0, null, 81, 80, 75, 0, 190, 271, null, null],
|
||||
[0, "전위", null, 0, null, 72, 95, 35, 0, 160, 197, null, null],
|
||||
[0, "전해", null, 4, "북평", 68, 65, 58, 1, 154, 199, null, null],
|
||||
[0, "전주", null, 0, null, 66, 66, 73, 0, 169, 214, null, null],
|
||||
[0, "전풍", null, 12, "업", 72, 29, 93, 1, 162, 200, null, null],
|
||||
[0, "전예", null, 0, null, 80, 72, 80, 0, 171, 252, null, null],
|
||||
[0, "동윤", null, 0, null, 47, 28, 79, 0, 192, 246, null, null],
|
||||
[0, "동화", null, 0, null, 57, 34, 75, 0, 168, 219, null, null],
|
||||
[0, "등애", null, 0, null, 93, 87, 89, 0, 197, 264, null, null],
|
||||
[0, "도겸", null, 8, "서주", 51, 27, 64, 12, 132, 194, null, null],
|
||||
[0, "등현", null, 0, null, 61, 73, 45, 0, 188, 248, null, null],
|
||||
[0, "등지", null, 0, null, 73, 52, 81, 0, 178, 251, null, null],
|
||||
[0, "동습", null, 0, null, 72, 85, 50, 0, 169, 215, null, null],
|
||||
[0, "동승", null, 1, "낙양", 56, 53, 65, 1, 154, 200, null, null],
|
||||
[0, "동소", null, 0, null, 34, 25, 80, 0, 156, 236, null, null],
|
||||
[0, "동탁", null, 1, "낙양", 85, 87, 73, 12, 139, 192, null, null, "크하하, 천하는 이제 나의 것이다!"],
|
||||
[0, "동도나", null, 0, null, 68, 73, 31, 0, 189, 225, null, null],
|
||||
[0, "동민", null, 1, "장안", 49, 60, 25, 1, 149, 192, null, null],
|
||||
[0, "등무", null, 0, null, 61, 75, 29, 0, 147, 184, null, null],
|
||||
[0, "두기", null, 0, null, 66, 32, 75, 0, 163, 224, null, null],
|
||||
[0, "두예", null, 0, null, 84, 30, 85, 0, 222, 284, null, null],
|
||||
[0, "배원소", null, 0, null, 49, 65, 25, 0, 169, 200, null, null],
|
||||
[0, "마완", null, 0, null, 71, 74, 16, 0, 170, 211, null, null],
|
||||
[0, "마휴", null, 0, null, 68, 73, 48, 0, 178, 212, null, null],
|
||||
[0, "파재", null, 0, null, 74, 74, 55, 0, 145, 184, null, null],
|
||||
[0, "마준", null, 0, null, 38, 52, 31, 0, 196, 230, null, null],
|
||||
[0, "마속", null, 0, null, 61, 67, 87, 0, 190, 228, null, null],
|
||||
[0, "마대", null, 0, null, 79, 85, 62, 0, 183, 246, null, null],
|
||||
[0, "마충", null, 0, null, 78, 72, 68, 0, 187, 249, null, null],
|
||||
[0, "마초", null, 0, null, 93, 97, 44, 0, 176, 222, null, null],
|
||||
[0, "마철", null, 0, null, 70, 62, 58, 0, 179, 212, null, null],
|
||||
[0, "마등", null, 10, "서량", 82, 80, 52, 12, 149, 212, null, null],
|
||||
[0, "마량", null, 0, null, 53, 23, 88, 0, 187, 222, null, null],
|
||||
[0, "반준", null, 0, null, 61, 18, 83, 0, 174, 239, null, null],
|
||||
[0, "반장", null, 0, null, 76, 80, 74, 0, 177, 234, null, null],
|
||||
[0, "번조", null, 1, "안정", 66, 73, 31, 1, 149, 192, null, null],
|
||||
[0, "번능", null, 0, null, 69, 61, 36, 0, 158, 195, null, null],
|
||||
[0, "반봉", null, 12, "업", 56, 77, 4, 1, 155, 190, null, null],
|
||||
[0, "비의", null, 0, null, 77, 30, 83, 0, 193, 253, null, null],
|
||||
[0, "비연", null, 0, null, 60, 66, 21, 0, 196, 238, null, null],
|
||||
[0, "비시", null, 0, null, 18, 28, 65, 0, 176, 240, null, null],
|
||||
[0, "미축", null, 8, "하비", 33, 29, 78, 1, 165, 220, null, null],
|
||||
[0, "미방", null, 8, "광릉", 54, 61, 32, 1, 169, 226, null, null],
|
||||
[0, "비요", null, 0, null, 70, 66, 73, 0, 192, 228, null, null],
|
||||
[0, "무안국", null, 19, "북해", 70, 83, 34, 1, 156, 193, null, null],
|
||||
[0, "풍습", null, 0, null, 72, 71, 39, 0, 182, 222, null, null],
|
||||
[0, "부사인", null, 0, null, 46, 63, 37, 0, 182, 225, null, null],
|
||||
[0, "부첨", null, 0, null, 73, 85, 76, 0, 216, 263, null, null],
|
||||
[0, "부손", null, 0, null, 29, 13, 70, 0, 162, 230, null, null],
|
||||
[0, "문앙", null, 0, null, 76, 93, 65, 0, 238, 291, null, null],
|
||||
[0, "문흠", null, 0, null, 74, 83, 43, 0, 200, 258, null, null],
|
||||
[0, "문추", null, 17, "남피", 89, 93, 47, 1, 169, 200, null, null],
|
||||
[0, "문빙", null, 0, null, 80, 82, 69, 0, 178, 237, null, null],
|
||||
[0, "변희", null, 0, null, 56, 70, 62, 0, 169, 200, null, null],
|
||||
[0, "망아장", null, 0, null, 45, 79, 3, 0, 191, 225, null, null],
|
||||
[0, "봉기", null, 17, "남피", 43, 21, 84, 11, 153, 202, null, null],
|
||||
[0, "방희", null, 0, null, 60, 38, 69, 0, 152, 192, null, null],
|
||||
[0, "법정", null, 0, null, 82, 47, 94, 0, 176, 220, null, null],
|
||||
[0, "방통", null, 0, null, 85, 34, 97, 0, 178, 213, null, null],
|
||||
[0, "방덕", null, 10, "서량", 89, 94, 75, 11, 170, 219, null, null],
|
||||
[0, "포륭", null, 0, null, 58, 76, 49, 0, 174, 208, null, null],
|
||||
[0, "목순", null, 0, null, 52, 77, 11, 0, 157, 190, null, null],
|
||||
[0, "목록대왕", null, 0, null, 65, 71, 39, 0, 184, 225, null, null],
|
||||
[0, "보즐", null, 0, null, 72, 51, 84, 0, 177, 247, null, null],
|
||||
[0, "만총", null, 0, null, 84, 64, 82, 0, 170, 242, null, null],
|
||||
[0, "모개", null, 0, null, 63, 39, 60, 0, 161, 216, null, null],
|
||||
[0, "맹획", null, 0, null, 87, 87, 42, 0, 186, 245, null, null],
|
||||
[0, "맹달", null, 0, null, 75, 73, 75, 0, 172, 228, null, null],
|
||||
[0, "맹우", null, 0, null, 50, 68, 22, 0, 190, 243, null, null],
|
||||
[0, "유섭", null, 7, "완", 62, 79, 24, 1, 158, 190, null, null],
|
||||
[0, "양부2", null, 0, null, 62, 68, 68, 0, 167, 212, null, null],
|
||||
[0, "옹개", null, 0, null, 73, 75, 57, 0, 188, 225, null, null],
|
||||
[0, "양의", null, 0, null, 68, 40, 82, 0, 190, 235, null, null],
|
||||
[0, "양호", null, 0, null, 90, 64, 84, 0, 221, 278, null, null],
|
||||
[0, "양홍", null, 7, "완", 33, 15, 77, 1, 152, 199, null, null],
|
||||
[0, "양앙", null, 0, null, 68, 72, 38, 0, 172, 215, null, null],
|
||||
[0, "양추1", null, 0, null, 52, 65, 40, 0, 159, 199, null, null],
|
||||
[0, "양수", null, 0, null, 25, 4, 83, 0, 175, 219, null, null],
|
||||
[0, "양추2", null, 0, null, 67, 64, 60, 0, 172, 238, null, null],
|
||||
[0, "양송", null, 0, null, 1, 5, 28, 0, 167, 215, null, null],
|
||||
[0, "양임", null, 14, "한중", 70, 78, 56, 1, 170, 215, null, null],
|
||||
[0, "양조", null, 0, null, 53, 61, 36, 0, 223, 286, null, null],
|
||||
[0, "양백", null, 14, "한중", 44, 45, 19, 1, 171, 214, null, null],
|
||||
[0, "양부1", null, 0, null, 67, 50, 83, 0, 178, 239, null, null],
|
||||
[0, "양봉1", null, 0, null, 66, 65, 31, 0, 153, 197, null, null],
|
||||
[0, "양봉2", null, 0, null, 54, 62, 53, 0, 191, 252, null, null],
|
||||
[0, "뇌동", null, 0, null, 69, 78, 51, 0, 172, 218, null, null],
|
||||
[0, "뇌박", null, 0, null, 62, 70, 36, 0, 157, 206, null, null],
|
||||
[0, "이이", null, 0, null, 63, 77, 19, 0, 187, 222, null, null],
|
||||
[0, "이회", null, 0, null, 79, 65, 79, 0, 175, 231, null, null],
|
||||
[0, "이각", null, 1, "낙양", 69, 72, 24, 1, 148, 198, null, null],
|
||||
[0, "육항", null, 0, null, 91, 63, 87, 0, 226, 274, null, null],
|
||||
[0, "육적", null, 0, null, 20, 7, 72, 0, 187, 219, null, null],
|
||||
[0, "육손", null, 0, null, 94, 69, 95, 0, 183, 245, null, null],
|
||||
[0, "이엄", null, 0, null, 83, 84, 76, 0, 172, 234, null, null],
|
||||
[0, "이유", null, 1, "낙양", 61, 26, 93, 11, 150, 192, null, null, "장안으로 천도를 하는것이 어떻겠습니까?"],
|
||||
[0, "이숙", null, 1, "낙양", 46, 69, 61, 1, 156, 192, null, null],
|
||||
[0, "이통", null, 0, "여남", 73, 83, 62, 0, 168, 209, null, null],
|
||||
[0, "이전", null, 0, null, 78, 77, 79, 0, 181, 216, null, null],
|
||||
[0, "이풍", null, 0, null, 69, 74, 50, 0, 158, 199, null, null],
|
||||
[0, "유언", null, 6, "성도", 53, 38, 80, 12, 132, 194, null, null],
|
||||
[0, "유괴", null, 6, "성도", 71, 73, 67, 1, 165, 214, null, null],
|
||||
[0, "유기", null, 13, "양양", 52, 12, 63, 1, 174, 210, null, null],
|
||||
[0, "유우", null, 16, "계", 55, 33, 70, 12, 145, 193, null, null],
|
||||
[0, "유훈", null, 0, null, 47, 63, 35, 0, 163, 216, null, null],
|
||||
[0, "유현", null, 0, null, 54, 66, 51, 0, 188, 252, null, null],
|
||||
[0, "유순", null, 0, null, 63, 46, 41, 0, 172, 255, null, null],
|
||||
[0, "유장", null, 6, "성도", 31, 5, 34, 1, 162, 219, null, null],
|
||||
[0, "유심", null, 0, null, 60, 62, 70, 0, 238, 264, null, null],
|
||||
[0, "유선", null, 0, null, 3, 5, 9, 0, 208, 270, null, null],
|
||||
[0, "유종", null, 0, null, 24, 22, 65, 0, 195, 220, null, null],
|
||||
[0, "유도", null, 0, null, 25, 23, 26, 0, 168, 214, null, null],
|
||||
[0, "유파", null, 0, null, 29, 22, 75, 0, 186, 222, null, null],
|
||||
[0, "유반", null, 0, null, 69, 76, 47, 0, 168, 210, null, null],
|
||||
[0, "유비", null, 0, "진류", 81, 77, 80, 0, 161, 223, null, null],
|
||||
[0, "유표1", null, 13, "양양", 48, 31, 72, 12, 142, 208, null, null, "강하 팔준에서 제일가는 이 유표에게로 오시오!"],
|
||||
[0, "유복", null, 0, null, 64, 49, 74, 0, 164, 208, null, null],
|
||||
[0, "유벽", null, 0, null, 70, 72, 47, 0, 145, 201, null, null],
|
||||
[0, "유봉", null, 0, null, 75, 79, 44, 0, 188, 220, null, null],
|
||||
[0, "유엽", null, 0, null, 56, 32, 92, 0, 176, 235, null, null],
|
||||
[0, "유요", null, 0, null, 62, 67, 46, 0, 156, 198, null, null],
|
||||
[0, "여위황", null, 0, null, 58, 63, 29, 0, 159, 200, null, null],
|
||||
[0, "요화", null, 0, null, 73, 76, 69, 0, 168, 264, null, null],
|
||||
[0, "양흥", null, 10, "서량", 61, 65, 19, 1, 169, 211, null, null],
|
||||
[0, "양습", null, 0, null, 73, 40, 74, 0, 168, 230, null, null],
|
||||
[0, "양서", null, 0, null, 56, 62, 66, 0, 198, 260, null, null],
|
||||
[0, "능조", null, 0, null, 75, 81, 42, 0, 168, 203, null, null],
|
||||
[0, "능통", null, 0, null, 77, 89, 60, 0, 189, 217, null, null],
|
||||
[0, "여개", null, 0, null, 53, 30, 67, 0, 194, 227, null, null],
|
||||
[0, "여건", null, 0, null, 57, 70, 62, 0, 173, 238, null, null],
|
||||
[0, "여광", null, 0, null, 56, 70, 13, 0, 162, 207, null, null],
|
||||
[0, "여상", null, 0, null, 54, 71, 12, 0, 164, 207, null, null],
|
||||
[0, "여대", null, 0, null, 75, 71, 70, 0, 161, 256, null, null],
|
||||
[0, "여범", null, 0, null, 73, 63, 75, 0, 169, 228, null, null],
|
||||
[0, "여포", null, 1, "사수", 97, 100, 26, 1, 156, 198, null, null],
|
||||
[0, "여몽", null, 0, null, 82, 81, 20, 0, 178, 219, null, null],
|
||||
[0, "윤직", null, 0, null, 46, 42, 73, 0, 196, 237, null, null],
|
||||
[0, "냉포", null, 0, null, 71, 82, 61, 0, 176, 214, null, null],
|
||||
[0, "진취", null, 0, null, 56, 63, 45, 0, 174, 208, null, null],
|
||||
[0, "노숙", null, 0, null, 84, 56, 92, 0, 172, 217, null, null],
|
||||
[0, "노식", null, 0, null, 86, 63, 82, 0, 139, 192, null, null],
|
||||
[0, "범강", null, 0, null, 49, 50, 36, 0, 174, 222, null, null],
|
||||
[0, "장달", null, 0, null, 43, 56, 34, 0, 175, 222, null, null],
|
||||
[0, "규람", null, 0, null, 55, 70, 58, 0, 165, 204, null, null],
|
||||
[0, "대원", null, 0, null, 38, 32, 68, 0, 166, 204, null, null],
|
||||
[0, "왕기", null, 0, null, 77, 72, 86, 0, 190, 261, null, null],
|
||||
[0, "왕상", null, 0, null, 23, 19, 68, 0, 180, 268, null, null],
|
||||
[0, "왕돈", null, 0, null, 60, 66, 46, 0, 198, 256, null, null],
|
||||
[0, "악침", null, 0, null, 73, 75, 43, 0, 196, 257, null, null],
|
||||
[0, "하제", null, 0, null, 83, 70, 82, 0, 171, 227, null, null],
|
||||
[0, "환범", null, 0, null, 40, 11, 78, 0, 199, 249, null, null],
|
||||
[0, "견초", null, 0, null, 72, 79, 73, 0, 168, 244, null, null],
|
||||
[0, "고당륭", null, 0, null, 35, 24, 76, 0, 190, 244, null, null],
|
||||
[0, "오찬", null, 0, null, 68, 41, 78, 0, 181, 245, null, null],
|
||||
[0, "호질", null, 0, null, 73, 46, 74, 0, 192, 250, null, null],
|
||||
[0, "오질", null, 0, null, 16, 29, 68, 0, 177, 230, null, null],
|
||||
[0, "호준", null, 0, null, 79, 76, 62, 0, 200, 256, null, null],
|
||||
[0, "고담", null, 0, null, 53, 23, 77, 0, 203, 244, null, null],
|
||||
[0, "최림", null, 0, null, 32, 22, 66, 0, 187, 244, null, null],
|
||||
[0, "사마망", null, 0, null, 78, 58, 83, 0, 205, 271, null, null],
|
||||
[0, "주이", null, 0, null, 70, 73, 61, 0, 201, 257, null, null],
|
||||
[0, "전단", null, 0, null, 67, 64, 39, 0, 204, 261, null, null],
|
||||
[0, "조우", null, 0, null, 50, 43, 37, 0, 199, 278, null, null],
|
||||
[0, "조상", null, 0, null, 39, 33, 30, 0, 207, 249, null, null],
|
||||
[0, "조방", null, 0, null, 20, 14, 27, 0, 232, 274, null, null],
|
||||
[0, "태사향", null, 0, null, 57, 66, 48, 0, 189, 246, null, null],
|
||||
[0, "장휴", null, 0, null, 63, 27, 74, 0, 204, 244, null, null],
|
||||
[0, "장호", null, 0, null, 75, 74, 51, 0, 195, 240, null, null],
|
||||
[0, "조광", null, 0, null, 67, 71, 53, 0, 210, 263, null, null],
|
||||
[0, "장집", null, 0, null, 76, 29, 80, 0, 196, 254, null, null],
|
||||
[0, "장승", null, 0, null, 77, 70, 75, 0, 178, 244, null, null],
|
||||
[0, "장소", null, 0, null, 23, 56, 31, 0, 202, 264, null, null],
|
||||
[0, "조통", null, 0, null, 68, 67, 61, 0, 209, 260, null, null],
|
||||
[0, "진표", null, 0, null, 66, 42, 74, 0, 207, 237, null, null],
|
||||
[0, "정무", null, 0, null, 56, 35, 75, 0, 201, 265, null, null],
|
||||
[0, "정봉", null, 0, null, 66, 66, 53, 0, 198, 266, null, null],
|
||||
[0, "전만", null, 0, null, 51, 73, 39, 0, 181, 235, null, null],
|
||||
[0, "마균", null, 0, null, 22, 17, 71, 0, 200, 259, null, null],
|
||||
[0, "방회", null, 0, null, 69, 75, 49, 0, 205, 272, null, null],
|
||||
[0, "서구", null, 0, null, 69, 42, 70, 0, 149, 208, null, null],
|
||||
[0, "육개", null, 0, null, 65, 61, 79, 0, 198, 269, null, null],
|
||||
[0, "유찬", null, 0, null, 78, 81, 64, 0, 172, 255, null, null],
|
||||
[0, "유소", null, 0, null, 68, 53, 74, 0, 195, 264, null, null],
|
||||
[0, "요립", null, 0, null, 32, 15, 76, 0, 181, 250, null, null],
|
||||
[0, "여거", null, 0, null, 78, 69, 71, 0, 196, 256, null, null],
|
||||
[0, "제갈첨", null, 0, null, 70, 57, 76, 0, 227, 263, null, null],
|
||||
[0, "손휴", null, 0, null, 57, 42, 78, 0, 235, 264, null, null],
|
||||
[0, "극정", null, 0, null, 42, 23, 68, 0, 208, 278, null, null],
|
||||
[0, "호분", null, 0, null, 71, 76, 50, 0, 222, 288, null, null],
|
||||
[0, "손량", null, 0, null, 32, 26, 70, 0, 243, 260, null, null],
|
||||
[0, "마막", null, 0, null, 34, 12, 44, 0, 221, 266, null, null],
|
||||
[0, "손호", null, 0, null, 41, 73, 71, 0, 242, 284, null, null],
|
||||
[0, "조모", null, 0, null, 54, 61, 59, 0, 241, 260, null, null],
|
||||
[0, "조환", null, 0, null, 30, 28, 30, 0, 246, 302, null, null],
|
||||
[0, "사마유", null, 0, null, 71, 68, 75, 0, 248, 283, null, null],
|
||||
[0, "제갈상", null, 0, null, 64, 79, 62, 0, 246, 263, null, null],
|
||||
[0, "손화", null, 0, null, 31, 39, 68, 0, 224, 253, null, null],
|
||||
[0, "염우", null, 0, null, 52, 61, 51, 0, 209, 264, null, null],
|
||||
[0, "왕경", null, 0, null, 67, 63, 71, 0, 206, 260, null, null],
|
||||
[0, "왕혼", null, 0, null, 74, 71, 63, 0, 223, 297, null, null],
|
||||
[0, "곽혁", null, 0, null, 33, 29, 70, 0, 187, 225, null, null],
|
||||
[0, "가범", null, 0, null, 60, 62, 73, 0, 202, 237, null, null],
|
||||
[0, "서질", null, 0, null, 68, 83, 24, 0, 207, 253, null, null],
|
||||
[0, "손준", null, 0, null, 64, 70, 65, 0, 219, 256, null, null],
|
||||
[0, "손침", null, 0, null, 58, 55, 65, 0, 231, 258, null, null],
|
||||
[0, "우사", null, 0, null, 61, 34, 74, 0, 217, 273, null, null],
|
||||
[0, "진건", null, 0, null, 72, 71, 65, 0, 214, 292, null, null],
|
||||
[0, "동궐", null, 0, null, 65, 59, 76, 0, 204, 271, null, null],
|
||||
[0, "당자", null, 0, null, 61, 71, 50, 0, 196, 265, null, null],
|
||||
[0, "등충", null, 0, null, 76, 86, 69, 0, 230, 264, null, null],
|
||||
[0, "황숭", null, 0, null, 67, 63, 72, 0, 208, 263, null, null],
|
||||
[0, "화핵", null, 0, null, 20, 24, 71, 0, 217, 278, null, null],
|
||||
[0, "허의", null, 0, null, 51, 74, 15, 0, 213, 263, null, null],
|
||||
[0, "송겸", null, 0, null, 66, 78, 42, 0, 175, 227, null, null],
|
||||
[0, "호제", null, 0, null, 57, 39, 68, 0, 207, 264, null, null],
|
||||
[0, "나헌", null, 0, null, 85, 70, 77, 0, 218, 270, null, null],
|
||||
[0, "아들노숙", null, 0, null, 73, 53, 74, 0, 217, 272, null, null],
|
||||
[0, "구성", null, 0, null, 63, 70, 38, 0, 157, 187, null, null],
|
||||
[0, "어부라", null, 0, null, 72, 68, 21, 0, 150, 195, null, null],
|
||||
[0, "아하소과", null, 0, null, 61, 76, 13, 0, 204, 253, null, null],
|
||||
[0, "가비능", null, 0, null, 77, 69, 52, 0, 172, 235, null, null],
|
||||
[0, "구력거", null, 0, null, 80, 68, 56, 0, 152, 193, null, null],
|
||||
[0, "강단", null, 0, null, 65, 83, 48, 0, 168, 234, null, null],
|
||||
[0, "황란", null, 0, null, 63, 75, 44, 0, 200, 264, null, null],
|
||||
[0, "호주천", null, 0, null, 70, 71, 40, 0, 169, 230, null, null],
|
||||
[0, "종리목", null, 0, null, 80, 72, 73, 0, 214, 269, null, null],
|
||||
[0, "제갈교", null, 0, null, 62, 27, 75, 0, 204, 228, null, null],
|
||||
[0, "답돈", null, 0, null, 84, 82, 61, 0, 158, 207, null, null],
|
||||
[0, "반임", null, 0, null, 66, 79, 38, 0, 168, 225, null, null],
|
||||
[0, "보도근", null, 0, null, 64, 73, 50, 0, 170, 233, null, null],
|
||||
[0, "미당대왕", null, 0, null, 59, 69, 21, 0, 202, 260, null, null],
|
||||
[0, "유표(흉노)", null, 0, null, 73, 74, 48, 0, 173, 252, null, null],
|
||||
[0, "루반", null, 0, null, 65, 76, 39, 0, 178, 207, null, null],
|
||||
[0, "손관", null, 0, null, 72, 78, 51, 0, 166, 217, null, null],
|
||||
[0, "곽석", null, 0, null, 59, 71, 48, 0, 158, 187, null, null],
|
||||
[0, "주조", null, 0, null, 63, 68, 26, 0, 152, 187, null, null],
|
||||
[0, "장거", null, 0, null, 79, 75, 56, 0, 150, 188, null, null],
|
||||
[0, "장순", null, 0, null, 73, 81, 60, 0, 152, 188, null, null],
|
||||
[0, "해니", null, 0, null, 62, 78, 35, 0, 191, 233, null, null],
|
||||
[0, "토안", null, 0, null, 53, 82, 30, 0, 191, 233, null, null],
|
||||
[0, "유주", null, 0, null, 67, 78, 42, 0, 172, 233, null, null],
|
||||
[0, "비잔", null, 0, null, 60, 71, 51, 0, 181, 216, null, null],
|
||||
[0, "월길", null, 0, null, 81, 88, 26, 0, 190, 227, null, null],
|
||||
[0, "아단", null, 0, null, 72, 65, 78, 0, 186, 259, null, null],
|
||||
[0, "철리길", null, 0, null, 77, 70, 52, 0, 179, 259, null, null],
|
||||
[0, "주삭", null, 0, null, 54, 60, 50, 0, 174, 253, null, null],
|
||||
[0, "왕이", null, 0, null, 87, 59, 77, 0, 171, 230, null, null],
|
||||
[0, "왕원희", null, 0, null, 53, 37, 73, 0, 217, 268, null, null],
|
||||
[0, "곽씨", null, 0, null, 42, 4, 55, 0, 184, 235, null, null],
|
||||
[0, "하후씨", null, 0, null, 34, 13, 42, 0, 188, 243, null, null],
|
||||
[0, "하후령녀", null, 0, null, 22, 33, 60, 0, 207, 257, null, null],
|
||||
[0, "하씨", null, 0, null, 51, 14, 67, 0, 150, 189, null, null],
|
||||
[0, "관은병", null, 0, null, 87, 84, 75, 0, 204, 271, null, null],
|
||||
[0, "감씨", null, 0, null, 14, 10, 44, 0, 175, 210, null, null],
|
||||
[0, "황월영", null, 0, null, 62, 33, 90, 0, 186, 235, null, null],
|
||||
[0, "채염", null, 0, null, 53, 14, 80, 0, 168, 224, null, null],
|
||||
[0, "채씨", null, 0, null, 38, 7, 70, 0, 159, 212, null, null],
|
||||
[0, "소교", null, 0, null, 40, 3, 70, 0, 178, 212, null, null],
|
||||
[0, "서씨", null, 0, null, 48, 16, 80, 0, 183, 232, null, null],
|
||||
[0, "신헌영", null, 0, null, 48, 28, 84, 0, 191, 269, null, null],
|
||||
[0, "견씨", null, 0, null, 42, 18, 74, 0, 182, 221, null, null],
|
||||
[0, "추씨", null, 1, "낙양", 4, 9, 66, 1, 165, 200, null, null],
|
||||
[0, "조절", null, 0, null, 32, 33, 79, 0, 190, 260, null, null],
|
||||
[0, "손씨", null, 0, null, 32, 14, 55, 0, 188, 250, null, null],
|
||||
[0, "손상향", null, 0, null, 77, 82, 55, 0, 193, 222, null, null],
|
||||
[0, "손노육", null, 0, null, 52, 10, 66, 0, 204, 253, null, null],
|
||||
[0, "손노반", null, 0, null, 17, 15, 80, 0, 202, 258, null, null],
|
||||
[0, "대교", null, 0, null, 33, 30, 66, 0, 177, 215, null, null],
|
||||
[0, "장씨", null, 0, null, 55, 35, 66, 0, 207, 237, null, null],
|
||||
[0, "장춘화", null, 0, null, 66, 29, 77, 0, 179, 234, null, null],
|
||||
[0, "초선", null, 0, null, 42, 18, 81, 0, 176, 230, null, null],
|
||||
[0, "번씨", null, 0, null, 6, 12, 50, 0, 183, 225, null, null],
|
||||
[0, "미씨", null, 0, null, 13, 6, 72, 0, 176, 208, null, null],
|
||||
[0, "변씨", null, 0, null, 30, 23, 55, 0, 160, 230, null, null],
|
||||
[0, "보련사", null, 0, null, 45, 30, 77, 0, 198, 248, null, null],
|
||||
[0, "유씨", null, 0, null, 8, 8, 44, 0, 164, 215, null, null],
|
||||
[0, "화만", null, 0, null, 85, 92, 40, 0, 191, 233, null, null],
|
||||
[0, "포삼낭", null, 0, null, 87, 83, 36, 0, 191, 240, null, null],
|
||||
[0, "성렴", null, 1, "사수", 66, 72, 43, 1, 168, 199, null, null],
|
||||
[0, "위월", null, 0, null, 68, 76, 39, 0, 170, 199, null, null],
|
||||
[0, "진의록", null, 0, null, 46, 43, 17, 0, 168, 199, null, null],
|
||||
[0, "채옹", null, 1, "장안", 27, 16, 81, 1, 133, 192, null, null],
|
||||
[0, "지양군", null, 1, "낙양", 13, 8, 55, 1, 103, 192, null, null],
|
||||
[0, "위소", null, 0, null, 21, 23, 65, 0, 204, 273, null, null],
|
||||
[0, "위강", null, 0, null, 58, 35, 56, 0, 168, 213, null, null],
|
||||
[0, "원요", null, 0, null, 28, 41, 50, 0, 177, 206, null, null],
|
||||
[0, "왕기2", null, 0, null, 69, 67, 61, 0, 217, 281, null, null],
|
||||
[0, "원환", null, 0, null, 30, 17, 72, 0, 165, 225, null, null],
|
||||
[0, "우전", null, 0, null, 64, 76, 40, 0, 204, 258, null, null],
|
||||
[0, "왕광", null, 15, "하내", 33, 65, 55, 12, 150, 190, null, null],
|
||||
[0, "왕업", null, 0, null, 33, 6, 66, 0, 220, 280, null, null],
|
||||
[0, "왕융", null, 0, null, 40, 57, 68, 0, 234, 305, null, null],
|
||||
[0, "왕충", null, 0, null, 46, 39, 57, 0, 152, 214, null, null],
|
||||
[0, "위풍", null, 0, null, 52, 23, 72, 0, 182, 219, null, null],
|
||||
[0, "구건", null, 0, null, 39, 52, 65, 0, 239, 272, null, null],
|
||||
[0, "구본", null, 0, null, 50, 41, 67, 0, 232, 269, null, null],
|
||||
[0, "동백", null, 1, "장안", 12, 7, 52, 1, 173, 192, null, null],
|
||||
[0, "마운", null, 0, null, 78, 88, 53, 0, 183, 225, null, null],
|
||||
[0, "사섭", null, 18, "교지", 53, 31, 76, 12, 137, 226, null, null],
|
||||
[0, "사지", null, 18, "교지", 58, 51, 52, 1, 163, 227, null, null],
|
||||
[0, "사휘", null, 18, "남해", 69, 64, 44, 1, 165, 227, null, null],
|
||||
[0, "사일", null, 18, "남해", 48, 36, 67, 1, 153, 230, null, null],
|
||||
[0, "사광", null, 18, "교지", 58, 45, 64, 1, 175, 235, null, null],
|
||||
[0, "후음", null, 0, null, 76, 72, 45, 0, 184, 219, null, null],
|
||||
[0, "공주", null, 21, "초", 26, 16, 68, 12, 151, 191, null, null],
|
||||
[0, "고담륭", null, 0, null, 35, 24, 76, 0, 190, 251, null, null],
|
||||
[0, "국연", null, 0, null, 50, 19, 77, 0, 160, 219, null, null],
|
||||
[0, "오언", null, 0, null, 74, 72, 77, 0, 235, 297, null, null],
|
||||
[0, "오강", null, 0, null, 48, 38, 65, 0, 216, 275, null, null],
|
||||
[0, "최염", null, 0, null, 18, 55, 77, 0, 162, 216, null, null],
|
||||
[0, "좌혁", null, 0, null, 62, 66, 51, 0, 232, 280, null, null],
|
||||
[0, "차주", null, 0, null, 49, 49, 40, 0, 164, 199, null, null],
|
||||
[0, "주태", null, 0, null, 71, 64, 71, 0, 207, 261, null, null],
|
||||
[0, "북궁백옥", null, 0, null, 66, 72, 49, 0, 146, 187, null, null],
|
||||
[0, "변장", null, 0, null, 69, 56, 47, 0, 133, 187, null, null],
|
||||
[0, "순의", null, 0, null, 16, 13, 72, 0, 207, 274, null, null],
|
||||
[0, "서진순욱", null, 0, null, 8, 19, 77, 0, 225, 289, null, null],
|
||||
[0, "사마준", null, 0, null, 85, 82, 80, 0, 232, 286, null, null],
|
||||
[0, "종육", null, 0, null, 32, 12, 71, 0, 223, 263, null, null],
|
||||
[0, "초이", null, 0, null, 62, 69, 63, 0, 219, 266, null, null],
|
||||
[0, "제갈정", null, 0, null, 58, 63, 66, 0, 246, 300, null, null],
|
||||
[0, "보협", null, 0, null, 62, 49, 53, 0, 216, 264, null, null],
|
||||
[0, "복양흥", null, 0, null, 32, 70, 65, 0, 224, 264, null, null],
|
||||
[0, "보천", null, 0, null, 71, 60, 71, 0, 222, 272, null, null],
|
||||
[0, "유대연주", null, 3, "복양", 53, 32, 55, 12, 148, 192, null, null],
|
||||
[0, "유대", null, 0, null, 63, 58, 30, 0, 155, 202, null, null],
|
||||
[0, "유승", null, 0, null, 45, 65, 33, 0, 215, 258, null, null],
|
||||
[0, "여영기", null, 0, null, 79, 88, 37, 0, 182, 198, null, null],
|
||||
[0, "독발수기능", null, 0, null, 89, 93, 77, 0, 232, 279, null, null],
|
||||
[0, "진수", null, 0, null, 12, 22, 68, 0, 233, 297, null, null],
|
||||
[0, "마륭", null, 0, null, 84, 75, 76, 0, 231, 296, null, null],
|
||||
[0, "도황", null, 0, null, 76, 68, 72, 0, 232, 290, null, null],
|
||||
[0, "진온", null, 9, "수춘", 60, 38, 48, 12, 167, 192, null, null],
|
||||
[0, "교모", null, 3, "복양", 54, 45, 69, 11, 137, 190, null, null],
|
||||
[0, "교국로", null, 0, null, 38, 17, 55, 0, 150, 220, null, null],
|
||||
[0, "포신", null, 2, "진류", 77, 67, 81, 1, 152, 192, null, null],
|
||||
[0, "포훈", null, 0, null, 41, 35, 75, 0, 180, 226, null, null],
|
||||
[0, "포도", null, 2, "진류", 57, 70, 43, 1, 159, 190, null, null],
|
||||
[0, "위자", null, 2, "진류", 58, 38, 62, 1, 150, 190, null, null],
|
||||
[0, "유화", null, 16, "계", 21, 16, 59, 1, 165, 216, null, null],
|
||||
[0, "이이자", null, 0, null, 32, 18, 48, 0, 157, 199, null, null],
|
||||
[0, "선우보", null, 16, "계", 74, 69, 65, 1, 161, 229, null, null],
|
||||
[0, "원유", null, 3, "복양", 57, 39, 73, 1, 150, 193, null, null],
|
||||
[0, "사마휘", null, 0, null, 21, 8, 92, 0, 173, 208, "은둔", null, "좋지~좋아"],
|
||||
[0, "화타", null, 0, null, 8, 7, 68, 0, 173, 207, "은둔", "의술"],
|
||||
[0, "관로", null, 0, null, 13, 9, 72, 0, 200, 233, "은둔", null],
|
||||
[0, "예형", null, 0, null, 13, 4, 90, 0, 173, 199, null, null],
|
||||
[0, "원혁", null, 0, null, 18, 18, 18, 0, 180, 246, null, null],
|
||||
[0, "헌제", null, 1, "낙양", 23, 17, 66, 1, 184, 234, null, null, "한 황실은 이대로 끝나는 것인가…"],
|
||||
[0, "황완", null, 1, "낙양", 40, 34, 71, 1, 141, 192, null, null],
|
||||
[0, "마일제", null, 1, "낙양", 43, 25, 70, 1, 130, 194, null, null],
|
||||
[0, "유총", null, 22, "여남", 82, 45, 60, 12, 151, 197, null, null],
|
||||
[0, "낙준", null, 0, null, 51, 37, 66, 0, 152, 197, null, null],
|
||||
[0, "낙통", null, 0, null, 76, 57, 73, 0, 193, 228, null, null],
|
||||
[0, "이리", null, 1, "홍농", 65, 72, 38, 1, 171, 198, null, null],
|
||||
[0, "허소", null, 0, null, 46, 13, 78, 0, 150, 195, null, null, "자네는 치세의 능신, 난세의 간옹이 되겠군."],
|
||||
[0, "허사", null, 0, null, 24, 20, 60, 0, 163, 199, null, null],
|
||||
[0, "장초", null, 0, null, 61, 32, 60, 0, 168, 196, null, null],
|
||||
[0, "양표", null, 1, "낙양", 24, 20, 60, 1, 142, 225, null, null],
|
||||
[0, "왕필", null, 0, null, 53, 44, 59, 0, 170, 228, null, null],
|
||||
[0, "사환", null, 2, "진류", 70, 71, 45, 1, 173, 209, null, null],
|
||||
[0, "정비", null, 0, null, 34, 30, 57, 0, 158, 214, null, null],
|
||||
[0, "두씨", null, 1, "낙양", 26, 41, 52, 1, 172, 236, null, null],
|
||||
[0, "누규", null, 13, "양양", 58, 40, 87, 1, 143, 212, null, null],
|
||||
[0, "단외", null, 1, "장안", 55, 48, 55, 1, 148, 209, null, null],
|
||||
[0, "원사", null, 0, null, 65, 43, 78, 0, 159, 210, null, null],
|
||||
[0, "사의관", null, 0, null, 22, 12, 67, 0, 168, 199, null, null],
|
||||
[0, "송건", null, 0, null, 66, 77, 40, 0, 164, 214, null, null],
|
||||
[0, "곽원", null, 17, "업", 66, 73, 36, 1, 162, 205, null, null],
|
||||
[0, "소유", null, 0, null, 51, 59, 48, 0, 167, 210, null, null],
|
||||
[0, "주한", null, 0, null, 49, 51, 26, 0, 162, 204, null, null],
|
||||
[0, "뇌서", null, 0, null, 68, 65, 34, 0, 170, 212, null, null],
|
||||
[0, "장홍", null, 0, "복양", 72, 81, 65, 0, 164, 196, null, null],
|
||||
[0, "유위대", null, 4, "북평", 53, 44, 62, 1, 152, 199, null, null],
|
||||
[0, "문칙", null, 4, "계", 59, 53, 32, 1, 164, 199, null, null],
|
||||
[0, "습진", null, 0, null, 64, 68, 51, 0, 189, 221, null, null],
|
||||
[0, "습정", null, 0, null, 49, 29, 70, 0, 181, 229, null, null]
|
||||
],
|
||||
"general_ex":[],
|
||||
"cities":[
|
||||
|
||||
],
|
||||
"history":[
|
||||
"<C>●</>190년 1월:<L><b>【역사모드2-2】</b></>반동탁연합 결성(정사)",
|
||||
"<C>●</>190년 1월:<G><b>【연합】</b></>동탁을 토벌하기 위해 18로 제후가 뭉쳤다."
|
||||
],
|
||||
"initialEvents":[
|
||||
[
|
||||
true,
|
||||
["ChangeCity", "free", {
|
||||
"pop":"70%",
|
||||
"agri":"70%",
|
||||
"comm":"70%",
|
||||
"secu":"70%",
|
||||
"trust":80
|
||||
}],
|
||||
["ChangeCity", "occupied", {
|
||||
"pop":"70%",
|
||||
"agri":"70%",
|
||||
"comm":"70%",
|
||||
"secu":"70%",
|
||||
"trust":80,
|
||||
"def":"70%",
|
||||
"wall":"70%"
|
||||
}]
|
||||
]
|
||||
],
|
||||
"events":[
|
||||
[
|
||||
"destroy_nation", 1000,
|
||||
["and",
|
||||
["Date", ">=", 183, 1],
|
||||
["RemainNation", "==", 1]
|
||||
],
|
||||
["BlockScoutAction"],
|
||||
["DeleteEvent"]
|
||||
]
|
||||
]
|
||||
}
|
||||
@@ -31,7 +31,7 @@
|
||||
["여포", "#A9A9A9", 100000, 100000, "조조의 본거지를 빼앗은 당대 최고의 맹장 여포", 1000, "병가", 2, [
|
||||
"복양"
|
||||
]],
|
||||
["손견", "#FF0000", 100000, 100000, "손견의 뒤를 이은 소패왕 손책", 1000, "병가", 2, [
|
||||
["손책", "#FF0000", 100000, 100000, "손견의 뒤를 이은 소패왕 손책", 1000, "병가", 2, [
|
||||
"여강"
|
||||
]],
|
||||
["공손찬", "#FF00FF", 100000, 100000, "북평 태수 공손찬", 1000, "병가", 3, [
|
||||
|
||||
@@ -0,0 +1,766 @@
|
||||
{
|
||||
"title":"【역사모드3-2】 군웅축록",
|
||||
"startYear":192,
|
||||
"life":1,
|
||||
"fiction":0,
|
||||
"const":{
|
||||
"defaultMaxGeneral":600
|
||||
},
|
||||
"nation":[
|
||||
["이각", "#A9A9A9", 100000, 100000, "천자를 등에 업은 이각", 1000, "명가", 5, ["함곡", "장안", "홍농", "사곡", "안정"]],
|
||||
["조조", "#0000FF", 10000, 40000, "위태로운 조조", 1000, "병가", 3, ["진류", "정도", ""]],
|
||||
["여포", "#A9A9A9", 10000, 10000, "조조를 공격하는 여포", 1000, "병가", 1, ["복양"]],
|
||||
["공손찬", "#FF00FF", 10000, 10000, "백마의 공손찬", 1000, "병가", 3, ["북평", "역경", "계"]],
|
||||
["장양", "#7B68EE", 10000, 10000, "병주자사 장양", 1000, "병가", 3, ["하내"]],
|
||||
["유장", "#483D8B", 10000, 30000, "익주목 유장", 1000, "유가", 4, ["성도", "자동", "면죽", "강주"]],
|
||||
["원술", "#FFC0CB", 15000, 40000, "후장군 원술", 1000, "병가", 2, ["수춘"]],
|
||||
["유비", "#008000", 10000, 10000, "서주목 유비", 1000, "유가", 4, ["서주", "하비", "소패"]],
|
||||
["유요", "#808000", 10000, 10000, "양주자사 유요", 1000, "유가", 3, ["합비", "건업"]],
|
||||
["마등", "#808000", 10000, 10000, "서량태수 마등", 1000, "병가", 3, ["서량"]],
|
||||
["공손도", "#A0522D", 10000, 10000, "요동의 왕 공손도", 1000, "덕가", 1, ["안평"]],
|
||||
["엄백호", "#800080", 10000, 10000, "동오의 호족, 엄백호", 1000, "병가", 1, ["오"]],
|
||||
["유표", "#E0FFFF", 10000, 10000, "형주자사 유표", 1000, "유가", 4, ["양양", "장판", "강하"]],
|
||||
["장로", "#20B2AA", 10000, 10000, "오두미도 장로", 1000, "오두미도", 1, ["한중", "양평"]],
|
||||
["장연", "#87CEEB", 10000, 10000, "흑산적 장연", 1000, "도적", 2, ["진양"]],
|
||||
["화흠", "#6495ED", 10000, 10000, "예장태수 화흠", 1000, "유가", 1, ["시상"]],
|
||||
["원소", "#FFFF00", 10000, 10000, "기주목 원소", 1000, "병가", 4, ["남피", "업", "계교", "평원"]],
|
||||
["사섭", "#800000", 10000, 10000, "교주자사 사섭", 1000, "유가", 3, ["교지", "남해"]],
|
||||
["공융", "#800080", 10000, 10000, "북해태수 공융", 1000, "유가", 1, ["북해"]],
|
||||
["한수", "#FFFFFF", 10000, 10000, "서량의 모반자 한수", 1000, "병가", 1, ["천수"]],
|
||||
["왕랑", "#87CEEB", 10000, 10000, "회계태수 왕랑", 1000, "유가", 1, ["회계"]],
|
||||
["유총", "#7B68EE", 10000, 10000, "진민왕 유총", 1000, "덕가", 6, ["초"]],
|
||||
["손책", "#FF0000", 10000, 10000, "원술에게서 벗어나려는 손책", 1000, "병가", 2, ["여강"]],
|
||||
["유벽", "#FFD700", 10000, 10000, "여남 황건적", 1000, "도적", 1, ["여남"]]
|
||||
],
|
||||
"diplomacy":[
|
||||
[4, 17, 1, 36],
|
||||
[23, 9, 1, 36],
|
||||
[4, 8, 7, 48],
|
||||
[17, 2, 7, 48],
|
||||
[7, 23, 7, 48],
|
||||
[3, 2, 1, 36]
|
||||
],
|
||||
"general":[
|
||||
[0, "아회남", null, 0, null, 65, 74, 26, 0, 190, 225, null, null],
|
||||
[0, "이적", null, 0, null, 29, 24, 84, 0, 162, 273, null, null],
|
||||
[0, "윤상", null, 0, null, 51, 44, 62, 0, 194, 260, null, null],
|
||||
[0, "윤묵", null, 0, null, 26, 15, 66, 0, 183, 239, null, null],
|
||||
[0, "우금1", null, 2, "진류", 83, 78, 74, 1, 159, 221, null, null],
|
||||
[0, "위관", null, 0, null, 69, 46, 79, 0, 220, 291, null, null],
|
||||
[0, "원윤", null, 7, "수춘", 15, 14, 39, 1, 150, 199, null, null],
|
||||
[0, "원희", null, 17, "업", 66, 51, 63, 1, 176, 207, null, null],
|
||||
[0, "염행", null, 20, "천수", 76, 84, 66, 1, 159, 215, null, null],
|
||||
[0, "염유", null, 0, "계", 71, 57, 71, 0, 168, 227, null, null],
|
||||
[0, "원술", null, 7, "수춘", 44, 65, 65, 12, 155, 199, null, null, "꿀물~! 꿀을 더 가져 오거라"],
|
||||
[0, "원상", null, 0, null, 63, 75, 42, 0, 179, 207, null, null],
|
||||
[0, "원소", null, 17, "업", 81, 69, 70, 12, 154, 202, null, null, "사세 삼공의 이 원소가 모조리 통일하겠소"],
|
||||
[0, "염상", null, 7, "수춘", 30, 27, 71, 11, 158, 199, null, null],
|
||||
[0, "원담", null, 17, "평원", 60, 69, 30, 1, 173, 205, null, null],
|
||||
[0, "염포", null, 14, "한중", 29, 25, 82, 11, 167, 231, null, null],
|
||||
[0, "왕위", null, 0, null, 60, 70, 62, 0, 163, 222, null, null],
|
||||
[0, "왕윤", null, 0, null, 26, 6, 68, 0, 137, 192, null, null],
|
||||
[0, "왕항", null, 0, null, 76, 60, 61, 0, 184, 254, null, null],
|
||||
[0, "왕찬", null, 13, "양양", 15, 3, 79, 1, 177, 217, null, null],
|
||||
[0, "왕수", null, 19, "북해", 54, 27, 77, 11, 168, 218, null, null],
|
||||
[0, "왕숙", null, 0, null, 36, 22, 76, 0, 195, 256, null, null],
|
||||
[0, "왕준", null, 0, null, 81, 73, 77, 0, 206, 286, null, null],
|
||||
[0, "왕쌍", null, 0, null, 67, 88, 19, 0, 195, 228, null, null],
|
||||
[0, "왕창", null, 0, null, 74, 64, 79, 0, 188, 259, null, null],
|
||||
[0, "왕평", null, 0, null, 83, 79, 76, 0, 192, 248, null, null],
|
||||
[0, "왕보", null, 0, null, 62, 41, 79, 0, 171, 219, null, null],
|
||||
[0, "왕문", null, 17, "남피", 65, 64, 31, 1, 162, 205, null, null],
|
||||
[0, "왕릉", null, 0, null, 74, 64, 71, 0, 172, 251, null, null],
|
||||
[0, "왕루", null, 0, null, 28, 30, 79, 0, 173, 211, null, null],
|
||||
[0, "왕랑", null, 21, "회계", 47, 35, 79, 12, 167, 228, null, null],
|
||||
[0, "온회", null, 0, null, 62, 36, 74, 0, 178, 228, null, null],
|
||||
[0, "하안", null, 0, null, 15, 30, 72, 0, 190, 249, null, null],
|
||||
[0, "괴월", null, 13, "양양", 47, 27, 82, 1, 157, 214, null, null],
|
||||
[0, "괴량", null, 13, "양양", 68, 33, 88, 11, 155, 204, null, null],
|
||||
[0, "가화", null, 0, null, 49, 65, 41, 0, 176, 222, null, null],
|
||||
[0, "가규", null, 0, null, 78, 61, 84, 0, 177, 231, null, null],
|
||||
[0, "하의", null, 7, "수춘", 56, 69, 36, 1, 161, 196, null, null],
|
||||
[0, "화흠", null, 16, "시상", 33, 33, 82, 12, 157, 231, null, null],
|
||||
[0, "가후", null, 1, "장안", 88, 48, 97, 11, 147, 223, null, null],
|
||||
[0, "곽가", null, 2, "진류", 88, 15, 96, 11, 170, 207, null, null],
|
||||
[0, "악환", null, 0, null, 65, 82, 42, 0, 196, 251, null, null],
|
||||
[0, "곽사", null, 1, "안정", 64, 76, 13, 1, 146, 197, null, null],
|
||||
[0, "악취", null, 0, null, 53, 66, 61, 0, 157, 195, null, null],
|
||||
[0, "곽준", null, 0, null, 73, 66, 73, 0, 178, 217, null, null],
|
||||
[0, "학소", null, 0, null, 86, 79, 78, 0, 185, 229, null, null],
|
||||
[0, "악진", null, 2, "진류", 80, 84, 56, 1, 159, 218, null, null],
|
||||
[0, "곽도", null, 17, "업", 52, 50, 82, 1, 157, 205, null, null],
|
||||
[0, "학맹", null, 0, null, 62, 67, 42, 0, 156, 300, null, null],
|
||||
[0, "곽유지", null, 0, null, 28, 9, 69, 0, 190, 259, null, null],
|
||||
[0, "곽익", null, 0, null, 73, 69, 69, 0, 207, 270, null, null],
|
||||
[0, "곽회", null, 0, null, 87, 78, 81, 0, 187, 255, null, null],
|
||||
[0, "하후위", null, 0, null, 71, 73, 49, 0, 204, 253, null, null],
|
||||
[0, "하후연", null, 2, "진류", 90, 91, 68, 1, 162, 219, null, null],
|
||||
[0, "하후은", null, 0, null, 63, 72, 53, 0, 180, 208, null, null],
|
||||
[0, "하후화", null, 0, null, 48, 51, 71, 0, 207, 265, null, null],
|
||||
[0, "하후혜", null, 0, null, 50, 44, 76, 0, 206, 242, null, null],
|
||||
[0, "하후현", null, 0, null, 54, 39, 76, 0, 208, 254, null, null],
|
||||
[0, "하후상", null, 0, null, 79, 72, 75, 0, 181, 225, null, null],
|
||||
[0, "하후덕", null, 0, null, 69, 73, 32, 0, 178, 218, null, null],
|
||||
[0, "하후돈", null, 2, "진류", 92, 90, 63, 1, 156, 220, null, null],
|
||||
[0, "하후패", null, 0, null, 79, 84, 77, 0, 202, 262, null, null],
|
||||
[0, "하후무", null, 0, null, 20, 7, 4, 0, 201, 259, null, null],
|
||||
[0, "가충", null, 0, null, 54, 31, 89, 0, 217, 282, null, null],
|
||||
[0, "하진", null, 0, null, 39, 40, 6, 0, 135, 189, null, null],
|
||||
[0, "화웅", null, 0, null, 88, 92, 61, 0, 155, 190, null, null],
|
||||
[0, "한윤", null, 7, "수춘", 26, 29, 65, 1, 155, 197, null, null],
|
||||
[0, "관우", null, 8, "서주", 97, 97, 79, 1, 162, 219, null, null, "술이 식기 전에 돌아오겠소"],
|
||||
[0, "환계", null, 23, "여강", 25, 26, 68, 1, 156, 221, null, null],
|
||||
[0, "관해", null, 0, null, 70, 82, 10, 0, 160, 193, null, null],
|
||||
[0, "관구검", null, 0, null, 78, 74, 55, 0, 202, 255, null, null],
|
||||
[0, "한현", null, 0, null, 22, 33, 62, 0, 163, 220, null, null],
|
||||
[0, "한호", null, 2, "진류", 69, 72, 84, 1, 164, 224, null, null],
|
||||
[0, "관흥", null, 0, null, 76, 86, 67, 0, 199, 234, null, null],
|
||||
[0, "관색", null, 0, null, 74, 88, 56, 0, 200, 239, null, null],
|
||||
[0, "한수", null, 20, "천수", 81, 75, 82, 12, 142, 215, null, null],
|
||||
[0, "한숭", null, 13, "강하", 25, 15, 71, 1, 154, 210, null, null],
|
||||
[0, "관정", null, 4, "북평", 36, 52, 73, 11, 158, 199, null, null],
|
||||
[0, "한섬", null, 0, null, 69, 66, 36, 0, 159, 196, null, null],
|
||||
[0, "감택", null, 0, null, 43, 49, 83, 0, 182, 243, null, null],
|
||||
[0, "한충", null, 0, null, 64, 67, 18, 0, 151, 184, null, null],
|
||||
[0, "한당", null, 23, "여강", 76, 85, 61, 1, 156, 227, null, null],
|
||||
[0, "한덕", null, 0, null, 63, 76, 25, 0, 171, 228, null, null],
|
||||
[0, "감녕", null, 13, "강하", 93, 94, 76, 1, 174, 219, null, null],
|
||||
[0, "한복", null, 0, null, 28, 3, 27, 0, 149, 193, null, null],
|
||||
[0, "관평", null, 0, null, 80, 82, 72, 0, 186, 219, null, null],
|
||||
[0, "간옹", null, 8, "하비", 20, 32, 75, 1, 164, 225, null, null],
|
||||
[0, "안량", null, 17, "업", 88, 94, 21, 1, 160, 200, null, null],
|
||||
[0, "위연", null, 0, null, 85, 92, 72, 0, 175, 234, null, null],
|
||||
[0, "국의", null, 17, "업", 82, 78, 51, 1, 146, 197, null, null],
|
||||
[0, "희지재", null, 2, "진류", 63, 7, 88, 1, 157, 196, null, null],
|
||||
[0, "위속", null, 3, "복양", 67, 78, 31, 1, 156, 200, null, null],
|
||||
[0, "위유", null, 0, null, 46, 29, 74, 0, 151, 193, null, null],
|
||||
[0, "우금2", null, 0, null, 72, 79, 38, 0, 173, 226, null, null],
|
||||
[0, "우보", null, 0, null, 38, 60, 21, 0, 159, 192, null, null],
|
||||
[0, "강유", null, 0, null, 92, 89, 90, 0, 202, 264, null, null],
|
||||
[0, "공지", null, 0, null, 43, 53, 62, 0, 178, 197, null, null],
|
||||
[0, "교유", null, 7, "수춘", 64, 69, 38, 1, 143, 195, null, null],
|
||||
[0, "공도", null, 24, "여남", 59, 70, 23, 1, 164, 200, null, null],
|
||||
[0, "허공", null, 0, null, 44, 66, 64, 0, 155, 200, null, null],
|
||||
[0, "허정", null, 21, "회계", 23, 5, 68, 1, 152, 222, null, null],
|
||||
[0, "허저", null, 2, "진류", 74, 96, 36, 1, 169, 226, null, null],
|
||||
[0, "허유", null, 17, "업", 36, 21, 80, 1, 155, 204, null, null],
|
||||
[0, "기령", null, 7, "수춘", 78, 83, 51, 1, 155, 199, null, null],
|
||||
[0, "김의", null, 0, null, 32, 38, 65, 0, 177, 218, null, null],
|
||||
[0, "김배삼결", null, 0, null, 64, 76, 19, 0, 192, 225, null, null],
|
||||
[0, "김선", null, 0, null, 52, 68, 13, 0, 155, 220, null, null],
|
||||
[0, "우번", null, 21, "회계", 43, 46, 86, 11, 164, 233, null, null],
|
||||
[0, "형도영", null, 0, null, 69, 80, 41, 0, 174, 208, null, null],
|
||||
[0, "엄안", null, 6, "자동", 82, 83, 72, 1, 151, 222, null, null],
|
||||
[0, "곽마", null, 0, null, 68, 71, 40, 0, 239, 281, null, null],
|
||||
[0, "엄준", null, 0, null, 28, 2, 71, 0, 169, 246, null, null],
|
||||
[0, "엄정", null, 0, null, 50, 55, 39, 0, 151, 189, null, null],
|
||||
[0, "엄백호", null, 12, "오", 67, 70, 23, 12, 142, 198, null, null, "이 몸은 동오의 덕왕 엄백호라고 하오!"],
|
||||
[0, "엄여", null, 12, "오", 61, 78, 44, 1, 145, 196, null, null],
|
||||
[0, "오의", null, 0, null, 79, 73, 70, 0, 165, 237, null, null],
|
||||
[0, "황개", null, 23, "여강", 80, 83, 70, 1, 154, 218, null, null],
|
||||
[0, "고간", null, 17, "업", 74, 56, 48, 1, 168, 206, null, null],
|
||||
[0, "황권", null, 6, "성도", 75, 59, 82, 11, 167, 240, null, null],
|
||||
[0, "고유", null, 17, "업", 57, 43, 72, 1, 174, 263, null, null],
|
||||
[0, "고순", null, 3, "복양", 85, 86, 60, 1, 162, 198, null, null],
|
||||
[0, "고상", null, 0, null, 68, 68, 53, 0, 194, 252, null, null],
|
||||
[0, "고승", null, 0, null, 67, 73, 41, 0, 145, 184, null, null],
|
||||
[0, "후성", null, 3, "복양", 74, 75, 68, 1, 158, 199, null, null],
|
||||
[0, "후선", null, 20, "천수", 63, 66, 34, 1, 175, 228, null, null],
|
||||
[0, "황조", null, 13, "강하", 74, 66, 55, 1, 148, 208, null, null],
|
||||
[0, "공손월", null, 0, null, 74, 72, 47, 0, 160, 192, null, null],
|
||||
[0, "공손연", null, 0, null, 65, 70, 60, 0, 205, 238, null, null],
|
||||
[0, "공손공", null, 11, "안평", 39, 17, 69, 1, 174, 240, null, null],
|
||||
[0, "공손강", null, 11, "안평", 72, 66, 65, 1, 172, 211, null, null],
|
||||
[0, "공손찬", null, 4, "북평", 84, 83, 75, 12, 152, 199, null, null],
|
||||
[0, "공손속", null, 4, "북평", 63, 68, 57, 1, 176, 199, null, null],
|
||||
[0, "공손도", null, 11, "안평", 67, 71, 66, 12, 154, 204, null, null],
|
||||
[0, "공손범", null, 4, "북평", 73, 69, 66, 1, 158, 199, null, null],
|
||||
[0, "황충", null, 0, null, 90, 93, 65, 0, 154, 220, null, null],
|
||||
[0, "고정", null, 0, null, 55, 63, 43, 0, 190, 251, null, null],
|
||||
[0, "고패", null, 0, null, 66, 61, 69, 0, 170, 212, null, null],
|
||||
[0, "황보숭", null, 0, null, 92, 61, 73, 0, 132, 195, null, null],
|
||||
[0, "공융", null, 19, "북해", 30, 5, 73, 12, 153, 208, null, null],
|
||||
[0, "고람", null, 17, "평원", 76, 82, 68, 1, 159, 201, null, null],
|
||||
[0, "오경", null, 0, null, 69, 66, 52, 0, 151, 211, null, null],
|
||||
[0, "호거아", null, 1, "홍농", 70, 82, 41, 1, 164, 206, null, null],
|
||||
[0, "호진", null, 0, null, 65, 74, 12, 0, 148, 190, null, null],
|
||||
[0, "올돌골", null, 0, null, 79, 86, 1, 0, 186, 225, null, null],
|
||||
[0, "호반", null, 0, null, 55, 55, 59, 0, 179, 233, null, null],
|
||||
[0, "오반", null, 0, null, 74, 71, 59, 0, 171, 234, null, null],
|
||||
[0, "고옹", null, 0, null, 43, 18, 80, 0, 168, 243, null, null],
|
||||
[0, "오란", null, 6, "성도", 68, 80, 35, 1, 170, 218, null, null],
|
||||
[0, "채화", null, 13, "장판", 39, 50, 1, 1, 166, 208, null, null],
|
||||
[0, "채중", null, 13, "장판", 40, 54, 2, 1, 168, 208, null, null],
|
||||
[0, "채모", null, 13, "양양", 70, 70, 77, 1, 160, 215, null, null],
|
||||
[0, "착융", null, 9, "건업", 60, 69, 38, 1, 161, 196, null, null],
|
||||
[0, "사마의", null, 0, null, 98, 63, 98, 0, 179, 251, null, null],
|
||||
[0, "사마염", null, 0, null, 69, 59, 77, 0, 238, 290, null, null],
|
||||
[0, "사마사", null, 0, null, 79, 64, 88, 0, 208, 255, null, null],
|
||||
[0, "사마소", null, 0, null, 76, 57, 87, 0, 211, 265, null, null],
|
||||
[0, "사마부", null, 0, null, 70, 37, 77, 0, 180, 272, null, null],
|
||||
[0, "사마랑", null, 0, null, 20, 21, 72, 0, 171, 217, null, null],
|
||||
[0, "사마가", null, 0, null, 66, 84, 25, 0, 167, 222, null, null],
|
||||
[0, "주흔", null, 21, "회계", 65, 62, 73, 1, 159, 196, null, null],
|
||||
[0, "주앙", null, 17, "남피", 74, 65, 65, 1, 162, 195, null, null],
|
||||
[0, "주지", null, 0, null, 65, 85, 41, 0, 233, 295, null, null],
|
||||
[0, "주창", null, 0, null, 68, 84, 42, 0, 164, 219, null, null],
|
||||
[0, "주태유평", null, 23, "여강", 84, 91, 48, 1, 171, 225, null, null],
|
||||
[0, "주방", null, 0, null, 52, 41, 80, 0, 200, 240, null, null],
|
||||
[0, "주유", null, 23, "여강", 95, 71, 96, 11, 175, 210, null, null],
|
||||
[0, "주환", null, 0, null, 84, 82, 77, 0, 177, 238, null, null],
|
||||
[0, "주거", null, 0, null, 77, 57, 72, 0, 190, 246, null, null],
|
||||
[0, "축융", null, 0, null, 74, 85, 29, 0, 182, 230, null, null],
|
||||
[0, "주준", null, 1, "장안", 89, 65, 70, 1, 149, 195, null, null],
|
||||
[0, "주연", null, 0, null, 79, 69, 71, 0, 182, 249, null, null],
|
||||
[0, "주치", null, 0, null, 71, 56, 72, 0, 156, 224, null, null],
|
||||
[0, "주포", null, 0, null, 68, 73, 34, 0, 191, 225, null, null],
|
||||
[0, "주령", null, 2, "진류", 71, 73, 67, 1, 170, 236, null, null],
|
||||
[0, "순욱", null, 2, "진류", 62, 14, 95, 1, 163, 212, null, null],
|
||||
[0, "순우경", null, 17, "남피", 72, 66, 29, 1, 146, 200, null, null],
|
||||
[0, "순심", null, 17, "업", 34, 25, 78, 1, 164, 208, null, null],
|
||||
[0, "순유", null, 2, "진류", 73, 26, 94, 1, 157, 214, null, null],
|
||||
[0, "장완", null, 0, null, 78, 34, 84, 0, 188, 246, null, null],
|
||||
[0, "종회", null, 0, null, 82, 51, 91, 0, 225, 264, null, null],
|
||||
[0, "장간", null, 0, null, 19, 6, 66, 0, 175, 208, null, null],
|
||||
[0, "장의거", null, 17, "업", 71, 58, 59, 1, 159, 205, null, null],
|
||||
[0, "장흠", null, 23, "여강", 78, 84, 54, 1, 159, 208, null, null],
|
||||
[0, "장제3", null, 0, null, 48, 43, 85, 0, 188, 249, null, null],
|
||||
[0, "초주", null, 0, null, 16, 3, 67, 0, 201, 270, null, null],
|
||||
[0, "초촉", null, 17, "업", 65, 76, 33, 1, 159, 208, null, null],
|
||||
[0, "상총", null, 0, null, 76, 61, 77, 0, 195, 240, null, null],
|
||||
[0, "종요", null, 1, "장안", 70, 24, 77, 1, 151, 230, null, null],
|
||||
[0, "상랑", null, 0, null, 28, 18, 74, 0, 167, 247, null, null],
|
||||
[0, "서영", null, 0, null, 80, 76, 62, 0, 147, 192, null, null],
|
||||
[0, "제갈각", null, 0, null, 72, 47, 90, 0, 203, 253, null, null],
|
||||
[0, "제갈근", null, 0, null, 75, 34, 81, 0, 174, 241, null, null],
|
||||
[0, "제갈균", null, 0, null, 29, 25, 52, 0, 185, 252, null, null],
|
||||
[0, "제갈탄", null, 0, null, 72, 72, 76, 0, 206, 258, null, null],
|
||||
[0, "제갈량", null, 0, null, 98, 38, 100, 0, 184, 234, null, null],
|
||||
[0, "서황", null, 1, "사곡", 91, 90, 78, 1, 165, 228, null, null],
|
||||
[0, "서서", null, 0, null, 87, 64, 93, 0, 160, 300, null, null],
|
||||
[0, "서성", null, 0, null, 86, 81, 78, 0, 178, 232, null, null],
|
||||
[0, "서막", null, 0, null, 55, 32, 68, 0, 171, 249, null, null],
|
||||
[0, "신의", null, 0, null, 55, 59, 60, 0, 190, 252, null, null],
|
||||
[0, "신탐", null, 0, null, 56, 62, 54, 0, 188, 254, null, null],
|
||||
[0, "심배", null, 17, "업", 80, 60, 83, 1, 156, 204, null, null],
|
||||
[0, "신비", null, 17, "남피", 39, 24, 79, 1, 171, 240, null, null],
|
||||
[0, "신평", null, 17, "남피", 69, 43, 77, 1, 165, 204, null, null],
|
||||
[0, "진복", null, 0, null, 31, 7, 73, 0, 160, 226, null, null],
|
||||
[0, "진랑", null, 0, null, 58, 70, 35, 0, 192, 234, null, null],
|
||||
[0, "휴고", null, 15, "진양", 63, 71, 38, 1, 151, 199, null, null],
|
||||
[0, "추단", null, 0, null, 61, 64, 34, 0, 144, 193, null, null],
|
||||
[0, "성의", null, 20, "천수", 74, 72, 41, 1, 168, 211, null, null],
|
||||
[0, "성공영", null, 20, "천수", 73, 71, 80, 11, 172, 220, null, null],
|
||||
[0, "설종", null, 0, null, 34, 16, 73, 0, 187, 243, null, null],
|
||||
[0, "선경", null, 4, "북평", 71, 68, 43, 1, 156, 199, null, null],
|
||||
[0, "전종", null, 0, null, 78, 72, 75, 0, 183, 249, null, null],
|
||||
[0, "조예", null, 0, null, 72, 52, 82, 0, 205, 239, null, null],
|
||||
[0, "조휴", null, 2, "진류", 74, 75, 62, 1, 174, 228, null, null],
|
||||
[0, "송헌", null, 3, "복양", 68, 77, 38, 1, 157, 200, null, null],
|
||||
[0, "조앙", null, 2, "진류", 74, 67, 69, 1, 161, 197, null, null],
|
||||
[0, "조홍 자렴", null, 2, "진류", 79, 81, 44, 1, 169, 232, null, null, "좌절감이 사나이를 키우는 것이다!"],
|
||||
[0, "조순", null, 2, "진류", 75, 71, 63, 1, 170, 210, null, null],
|
||||
[0, "조창", null, 0, null, 82, 90, 40, 0, 190, 223, null, null],
|
||||
[0, "조식", null, 0, null, 33, 22, 81, 0, 192, 232, null, null],
|
||||
[0, "조진", null, 0, null, 81, 74, 70, 0, 185, 231, null, null],
|
||||
[0, "조인", null, 2, "진류", 89, 86, 62, 1, 168, 223, null, null],
|
||||
[0, "조성", null, 0, null, 54, 74, 38, 0, 163, 198, null, null],
|
||||
[0, "조조", null, 2, "진류", 99, 72, 91, 12, 151, 220, null, null, "내가 천하 사람들을 저버릴지언정, 천하 사람들이 나를 저버리게 하지는 않을 것이다."],
|
||||
[0, "조충", null, 0, null, 31, 21, 85, 0, 196, 207, null, null],
|
||||
[0, "장패", null, 0, null, 78, 75, 53, 0, 165, 231, null, null],
|
||||
[0, "조비", null, 0, null, 70, 71, 83, 0, 187, 226, null, null],
|
||||
[0, "조표", null, 8, "서주", 66, 69, 32, 1, 151, 196, null, null],
|
||||
[0, "저수", null, 17, "업", 78, 35, 90, 1, 156, 201, null, null],
|
||||
[0, "소비", null, 0, null, 69, 63, 66, 0, 172, 221, null, null],
|
||||
[0, "조무", null, 0, null, 70, 71, 66, 0, 155, 193, null, null],
|
||||
[0, "손환", null, 0, null, 82, 73, 76, 0, 166, 228, null, null],
|
||||
[0, "손견", null, 0, null, 94, 90, 79, 0, 156, 192, null, null, "내가 옥새를 가지고 있다면 나는 칼과 화살을 맞아 죽을 것이다."],
|
||||
[0, "손건", null, 0, null, 34, 33, 79, 0, 165, 215, null, null],
|
||||
[0, "손권", null, 0, null, 79, 67, 80, 0, 182, 252, null, null],
|
||||
[0, "손교", null, 0, null, 77, 72, 67, 0, 181, 219, null, null],
|
||||
[0, "손책", null, 23, "여강", 96, 92, 74, 12, 175, 200, null, null],
|
||||
[0, "손소", null, 0, null, 80, 79, 76, 0, 188, 241, null, null],
|
||||
[0, "손정", null, 23, "여강", 66, 53, 73, 1, 160, 206, null, null],
|
||||
[0, "손중", null, 0, null, 62, 71, 36, 0, 154, 184, null, null],
|
||||
[0, "손등", null, 0, null, 62, 37, 79, 0, 209, 241, null, null],
|
||||
[0, "손유", null, 0, null, 77, 70, 68, 0, 177, 215, null, null],
|
||||
[0, "손익", null, 0, null, 67, 78, 27, 0, 184, 204, null, null],
|
||||
[0, "손례", null, 0, null, 78, 81, 67, 0, 180, 250, null, null],
|
||||
[0, "태사자", null, 9, "건업", 90, 93, 69, 1, 166, 206, null, null],
|
||||
[0, "대래동주", null, 0, null, 51, 53, 54, 0, 195, 249, null, null],
|
||||
[0, "대릉", null, 0, null, 70, 75, 39, 0, 199, 258, null, null],
|
||||
[0, "타사대왕", null, 0, null, 62, 59, 70, 0, 186, 225, null, null],
|
||||
[0, "담웅", null, 0, null, 58, 73, 14, 0, 188, 221, null, null],
|
||||
[0, "장윤", null, 13, "양양", 72, 67, 42, 1, 163, 208, null, null],
|
||||
[0, "조운", null, 4, "북평", 96, 96, 77, 1, 168, 229, null, null],
|
||||
[0, "장위", null, 14, "한중", 74, 66, 45, 1, 172, 228, null, null, "쌀 다섯 말만 가지고 오시오~ 모두 고쳐드리리다."],
|
||||
[0, "장영", null, 9, "건업", 75, 74, 41, 1, 154, 196, null, null],
|
||||
[0, "장연", null, 15, "진양", 76, 81, 57, 12, 153, 210, null, null],
|
||||
[0, "장횡", null, 9, "건업", 59, 70, 23, 1, 178, 211, null, null],
|
||||
[0, "장온", null, 0, null, 32, 10, 72, 0, 193, 231, null, null],
|
||||
[0, "장개", null, 0, null, 34, 66, 8, 0, 155, 194, null, null],
|
||||
[0, "장각", null, 0, null, 87, 25, 86, 0, 140, 184, null, null],
|
||||
[0, "장기", null, 0, null, 74, 35, 76, 0, 170, 223, null, null],
|
||||
[0, "장의", null, 17, "남피", 79, 72, 75, 1, 153, 215, null, null],
|
||||
[0, "장훈", null, 7, "수춘", 72, 68, 41, 1, 156, 206, null, null],
|
||||
[0, "장굉", null, 23, "여강", 24, 22, 86, 1, 153, 212, null, null],
|
||||
[0, "장합", null, 17, "평원", 89, 89, 73, 1, 167, 231, null, null],
|
||||
[0, "조홍", null, 0, null, 66, 72, 28, 0, 156, 184, null, null],
|
||||
[0, "장제1", null, 1, "홍농", 70, 66, 55, 1, 144, 196, null, null],
|
||||
[0, "장수", null, 1, "홍농", 80, 73, 64, 1, 154, 207, null, null],
|
||||
[0, "장소 자포", null, 23, "여강", 33, 3, 84, 1, 156, 236, null, null],
|
||||
[0, "장송", null, 0, null, 25, 6, 88, 0, 170, 212, null, null],
|
||||
[0, "장임", null, 6, "성도", 84, 84, 78, 1, 169, 214, null, null],
|
||||
[0, "장제", null, 0, null, 67, 43, 80, 0, 236, 280, null, null],
|
||||
[0, "장막", null, 3, "복양", 52, 53, 71, 1, 155, 195, null, null],
|
||||
[0, "조범", null, 0, null, 28, 21, 32, 0, 168, 218, null, null],
|
||||
[0, "장비", null, 8, "하비", 94, 98, 30, 1, 165, 221, null, null],
|
||||
[0, "장포", null, 0, null, 78, 87, 48, 0, 198, 219, null, null],
|
||||
[0, "장보", null, 0, null, 83, 71, 81, 0, 148, 184, null, null],
|
||||
[0, "장만성", null, 0, null, 75, 81, 45, 0, 143, 184, null, null],
|
||||
[0, "장양", null, 5, "진양", 72, 70, 66, 12, 151, 195, null, null],
|
||||
[0, "장익", null, 0, null, 75, 74, 76, 0, 188, 264, null, null],
|
||||
[0, "장료", null, 3, "복양", 95, 92, 78, 1, 169, 222, null, null],
|
||||
[0, "장량", null, 0, null, 78, 80, 74, 0, 153, 184, null, null],
|
||||
[0, "조루", null, 0, null, 70, 43, 68, 0, 183, 219, null, null],
|
||||
[0, "장로", null, 14, "한중", 51, 26, 74, 12, 163, 216, null, null],
|
||||
[0, "진횡", null, 9, "건업", 64, 63, 26, 1, 161, 196, null, null],
|
||||
[0, "진응", null, 0, null, 62, 72, 45, 0, 172, 208, null, null],
|
||||
[0, "진기", null, 7, "수춘", 58, 65, 43, 1, 165, 198, null, null],
|
||||
[0, "진궁", null, 3, "복양", 84, 55, 89, 11, 154, 198, null, null, "조조…그자는 더 이상 내가 감당하기 어려워졌다"],
|
||||
[0, "진교", null, 0, null, 61, 27, 77, 0, 175, 237, null, null],
|
||||
[0, "진군", null, 8, "하비", 32, 14, 75, 11, 167, 236, null, null],
|
||||
[0, "진규", null, 8, "서주", 30, 4, 82, 1, 132, 206, null, null],
|
||||
[0, "진식", null, 0, null, 70, 71, 25, 0, 191, 230, null, null],
|
||||
[0, "진진", null, 0, null, 46, 46, 69, 0, 170, 235, null, null],
|
||||
[0, "진태", null, 0, null, 84, 77, 86, 0, 210, 260, null, null],
|
||||
[0, "진등", null, 8, "하비", 79, 64, 81, 1, 169, 208, null, null],
|
||||
[0, "진도", null, 0, null, 76, 71, 67, 0, 171, 237, null, null],
|
||||
[0, "진무", null, 0, null, 76, 87, 43, 0, 176, 215, null, null],
|
||||
[0, "진란", null, 7, "수춘", 66, 69, 40, 1, 157, 204, null, null],
|
||||
[0, "진림", null, 17, "남피", 25, 9, 75, 1, 160, 217, null, null],
|
||||
[0, "정욱", null, 2, "진류", 70, 49, 90, 1, 141, 220, null, null],
|
||||
[0, "정원지", null, 0, null, 69, 74, 17, 0, 145, 184, null, null],
|
||||
[0, "정은", null, 10, "서량", 69, 73, 40, 1, 184, 220, null, null],
|
||||
[0, "정원", null, 0, null, 70, 76, 35, 0, 137, 189, null, null],
|
||||
[0, "정보", null, 23, "여강", 84, 79, 79, 1, 151, 216, null, null],
|
||||
[0, "정봉승연", null, 0, null, 81, 80, 75, 0, 190, 271, null, null],
|
||||
[0, "전위", null, 0, null, 72, 95, 35, 0, 160, 197, null, null],
|
||||
[0, "전해", null, 4, "북평", 68, 65, 58, 1, 154, 199, null, null],
|
||||
[0, "전주", null, 0, null, 66, 66, 73, 0, 169, 214, null, null],
|
||||
[0, "전풍", null, 17, "업", 72, 29, 93, 11, 162, 200, null, null],
|
||||
[0, "전예", null, 4, "계", 80, 72, 80, 1, 171, 252, null, null],
|
||||
[0, "동윤", null, 0, null, 47, 28, 79, 0, 192, 246, null, null],
|
||||
[0, "동화", null, 0, null, 57, 34, 75, 0, 168, 219, null, null],
|
||||
[0, "등애", null, 0, null, 93, 87, 89, 0, 197, 264, null, null],
|
||||
[0, "도겸", null, 0, null, 51, 27, 64, 0, 132, 194, null, null],
|
||||
[0, "등현", null, 0, null, 61, 73, 45, 0, 188, 248, null, null],
|
||||
[0, "등지", null, 0, null, 73, 52, 81, 0, 178, 251, null, null],
|
||||
[0, "동습", null, 0, null, 72, 85, 50, 0, 169, 215, null, null],
|
||||
[0, "동승", null, 1, "장안", 56, 53, 65, 1, 154, 200, null, null],
|
||||
[0, "동소", null, 5, "하내", 34, 25, 80, 11, 156, 236, null, null],
|
||||
[0, "동탁", null, 0, null, 85, 87, 73, 0, 139, 192, null, null],
|
||||
[0, "동도나", null, 0, null, 68, 73, 31, 0, 189, 225, null, null],
|
||||
[0, "동민", null, 0, null, 49, 60, 25, 0, 149, 192, null, null],
|
||||
[0, "등무", null, 0, null, 61, 75, 29, 0, 147, 184, null, null],
|
||||
[0, "두기", null, 0, null, 66, 32, 75, 0, 163, 224, null, null],
|
||||
[0, "두예", null, 0, null, 84, 30, 85, 0, 222, 284, null, null],
|
||||
[0, "배원소", null, 0, null, 49, 65, 25, 0, 169, 200, null, null],
|
||||
[0, "마완", null, 0, null, 71, 74, 16, 0, 170, 211, null, null],
|
||||
[0, "마휴", null, 0, null, 68, 73, 48, 0, 178, 212, null, null],
|
||||
[0, "파재", null, 0, null, 74, 74, 55, 0, 145, 184, null, null],
|
||||
[0, "마준", null, 0, null, 38, 52, 31, 0, 196, 230, null, null],
|
||||
[0, "마속", null, 0, null, 61, 67, 87, 0, 190, 228, null, null],
|
||||
[0, "마대", null, 0, null, 79, 85, 62, 0, 183, 246, null, null],
|
||||
[0, "마충", null, 0, null, 78, 72, 68, 0, 187, 249, null, null],
|
||||
[0, "마초", null, 0, "서량", 93, 97, 44, 0, 176, 222, null, null],
|
||||
[0, "마철", null, 0, null, 70, 62, 58, 0, 179, 212, null, null],
|
||||
[0, "마등", null, 10, "서량", 82, 80, 52, 12, 149, 212, null, null],
|
||||
[0, "마량", null, 0, null, 53, 23, 88, 0, 187, 222, null, null],
|
||||
[0, "반준", null, 0, null, 61, 18, 83, 0, 174, 239, null, null],
|
||||
[0, "반장", null, 0, null, 76, 80, 74, 0, 177, 234, null, null],
|
||||
[0, "번조", null, 0, null, 66, 73, 31, 0, 149, 192, null, null],
|
||||
[0, "번능", null, 0, null, 69, 61, 36, 0, 158, 195, null, null],
|
||||
[0, "반봉", null, 0, null, 56, 77, 4, 0, 155, 190, null, null],
|
||||
[0, "비의", null, 0, null, 77, 30, 83, 0, 193, 253, null, null],
|
||||
[0, "비연", null, 0, null, 60, 66, 21, 0, 196, 238, null, null],
|
||||
[0, "비시", null, 0, null, 18, 28, 65, 0, 176, 240, null, null],
|
||||
[0, "미축", null, 8, "하비", 33, 29, 78, 1, 165, 220, null, null],
|
||||
[0, "미방", null, 8, "하비", 54, 61, 32, 1, 169, 226, null, null],
|
||||
[0, "비요", null, 0, null, 70, 66, 73, 0, 192, 228, null, null],
|
||||
[0, "무안국", null, 19, "북해", 70, 83, 34, 1, 156, 193, null, null],
|
||||
[0, "풍습", null, 0, null, 72, 71, 39, 0, 182, 222, null, null],
|
||||
[0, "부사인", null, 0, null, 46, 63, 37, 0, 182, 225, null, null],
|
||||
[0, "부첨", null, 0, null, 73, 85, 76, 0, 216, 263, null, null],
|
||||
[0, "부손", null, 0, null, 29, 13, 70, 0, 162, 230, null, null],
|
||||
[0, "문앙", null, 0, null, 76, 93, 65, 0, 238, 291, null, null],
|
||||
[0, "문흠", null, 0, null, 74, 83, 43, 0, 200, 258, null, null],
|
||||
[0, "문추", null, 17, "남피", 89, 93, 47, 1, 169, 200, null, null],
|
||||
[0, "문빙", null, 0, null, 80, 82, 69, 0, 178, 237, null, null],
|
||||
[0, "변희", null, 0, null, 56, 70, 62, 0, 169, 200, null, null],
|
||||
[0, "망아장", null, 0, null, 45, 79, 3, 0, 191, 225, null, null],
|
||||
[0, "봉기", null, 17, "남피", 43, 21, 84, 1, 153, 202, null, null],
|
||||
[0, "방희", null, 0, null, 60, 38, 69, 0, 152, 192, null, null],
|
||||
[0, "법정", null, 0, null, 82, 47, 94, 0, 176, 220, null, null],
|
||||
[0, "방통", null, 0, null, 85, 34, 97, 0, 178, 213, null, null],
|
||||
[0, "방덕", null, 10, "서량", 89, 94, 75, 11, 170, 219, null, null],
|
||||
[0, "포륭", null, 0, null, 58, 76, 49, 0, 174, 208, null, null],
|
||||
[0, "목순", null, 0, null, 52, 77, 11, 0, 157, 190, null, null],
|
||||
[0, "목록대왕", null, 0, null, 65, 71, 39, 0, 184, 225, null, null],
|
||||
[0, "보즐", null, 0, null, 72, 51, 84, 0, 177, 247, null, null],
|
||||
[0, "만총", null, 0, null, 84, 64, 82, 0, 170, 242, null, null],
|
||||
[0, "모개", null, 0, null, 63, 39, 60, 0, 161, 216, null, null],
|
||||
[0, "맹획", null, 0, null, 87, 87, 42, 0, 186, 245, null, null],
|
||||
[0, "맹달", null, 0, null, 75, 73, 75, 0, 172, 228, null, null],
|
||||
[0, "맹우", null, 0, null, 50, 68, 22, 0, 190, 243, null, null],
|
||||
[0, "유섭", null, 7, "완", 62, 79, 24, 1, 158, 190, null, null],
|
||||
[0, "양부2", null, 0, null, 62, 68, 68, 0, 167, 212, null, null],
|
||||
[0, "옹개", null, 0, null, 73, 75, 57, 0, 188, 225, null, null],
|
||||
[0, "양의", null, 0, null, 68, 40, 82, 0, 190, 235, null, null],
|
||||
[0, "양호", null, 0, null, 90, 64, 84, 0, 221, 278, null, null],
|
||||
[0, "양홍", null, 7, "완", 33, 15, 77, 1, 152, 199, null, null],
|
||||
[0, "양앙", null, 0, null, 68, 72, 38, 0, 172, 215, null, null],
|
||||
[0, "양추1", null, 0, null, 52, 65, 40, 0, 159, 199, null, null],
|
||||
[0, "양수", null, 0, null, 25, 4, 83, 0, 175, 219, null, null],
|
||||
[0, "양추2", null, 0, null, 67, 64, 60, 0, 172, 238, null, null],
|
||||
[0, "양송", null, 0, null, 1, 5, 28, 0, 167, 215, null, null],
|
||||
[0, "양임", null, 14, "한중", 70, 78, 56, 1, 170, 215, null, null],
|
||||
[0, "양조", null, 0, null, 53, 61, 36, 0, 223, 286, null, null],
|
||||
[0, "양백", null, 14, "한중", 44, 45, 19, 1, 171, 214, null, null],
|
||||
[0, "양부1", null, 0, null, 67, 50, 83, 0, 178, 239, null, null],
|
||||
[0, "양봉1", null, 0, null, 66, 65, 31, 0, 153, 197, null, null],
|
||||
[0, "양봉2", null, 0, null, 54, 62, 53, 0, 191, 252, null, null],
|
||||
[0, "뇌동", null, 0, null, 69, 78, 51, 0, 172, 218, null, null],
|
||||
[0, "뇌박", null, 7, "수춘", 62, 70, 36, 1, 157, 206, null, null],
|
||||
[0, "이이", null, 0, null, 63, 77, 19, 0, 187, 222, null, null],
|
||||
[0, "이회", null, 0, null, 79, 65, 79, 0, 175, 231, null, null],
|
||||
[0, "이각", null, 1, "장안", 69, 72, 24, 12, 148, 198, null, null],
|
||||
[0, "육항", null, 0, null, 91, 63, 87, 0, 226, 274, null, null],
|
||||
[0, "육적", null, 0, null, 20, 7, 72, 0, 187, 219, null, null],
|
||||
[0, "육손", null, 0, null, 94, 69, 95, 0, 183, 245, null, null],
|
||||
[0, "이엄", null, 0, null, 83, 84, 76, 0, 172, 234, null, null],
|
||||
[0, "이유", null, 0, null, 61, 26, 93, 0, 150, 192, null, null, "장안으로 천도를 하는것이 어떻겠습니까?"],
|
||||
[0, "이숙", null, 0, null, 46, 69, 61, 0, 156, 192, null, null],
|
||||
[0, "이통", null, 0, "여남", 73, 83, 62, 0, 168, 209, null, null],
|
||||
[0, "이전", null, 0, null, 78, 77, 79, 0, 181, 216, null, null],
|
||||
[0, "이풍", null, 7, "수춘", 69, 74, 50, 1, 158, 199, null, null],
|
||||
[0, "유언", null, 0, null, 53, 38, 80, 0, 132, 194, null, null],
|
||||
[0, "유괴", null, 6, "성도", 71, 73, 67, 1, 165, 214, null, null],
|
||||
[0, "유기", null, 13, "양양", 52, 12, 63, 1, 174, 210, null, null],
|
||||
[0, "유우", null, 0, null, 55, 33, 70, 0, 145, 193, null, null],
|
||||
[0, "유훈", null, 7, "수춘", 47, 63, 35, 1, 163, 216, null, null],
|
||||
[0, "유현", null, 0, null, 54, 66, 51, 0, 188, 252, null, null],
|
||||
[0, "유순", null, 0, null, 63, 46, 41, 0, 172, 255, null, null],
|
||||
[0, "유장", null, 6, "성도", 31, 5, 34, 12, 162, 219, null, null],
|
||||
[0, "유심", null, 0, null, 60, 62, 70, 0, 238, 264, null, null],
|
||||
[0, "유선", null, 0, null, 3, 5, 9, 0, 208, 270, null, null],
|
||||
[0, "유종", null, 0, null, 24, 22, 65, 0, 195, 220, null, null],
|
||||
[0, "유도", null, 0, null, 25, 23, 26, 0, 168, 214, null, null],
|
||||
[0, "유파", null, 0, null, 29, 22, 75, 0, 186, 222, null, null],
|
||||
[0, "유반", null, 0, null, 69, 76, 47, 0, 168, 210, null, null],
|
||||
[0, "유비", null, 8, "하비", 81, 77, 80, 12, 161, 223, null, null],
|
||||
[0, "유표1", null, 13, "양양", 48, 31, 72, 1, 142, 208, null, null, "강하 팔준에서 제일가는 이 유표에게로 오시오!"],
|
||||
[0, "유복", null, 0, null, 64, 49, 74, 0, 164, 208, null, null],
|
||||
[0, "유벽", null, 24, "여남", 70, 72, 47, 12, 145, 201, null, null],
|
||||
[0, "유봉", null, 0, null, 75, 79, 44, 0, 188, 220, null, null],
|
||||
[0, "유엽", null, 0, null, 56, 32, 92, 0, 176, 235, null, null],
|
||||
[0, "유요", null, 9, "건업", 62, 67, 46, 12, 156, 198, null, null],
|
||||
[0, "여위황", null, 17, "남피", 58, 63, 29, 1, 159, 200, null, null],
|
||||
[0, "요화", null, 0, null, 73, 76, 69, 0, 168, 264, null, null],
|
||||
[0, "양흥", null, 10, "서량", 61, 65, 19, 1, 169, 211, null, null],
|
||||
[0, "양습", null, 0, null, 73, 40, 74, 0, 168, 230, null, null],
|
||||
[0, "양서", null, 0, null, 56, 62, 66, 0, 198, 260, null, null],
|
||||
[0, "능조", null, 0, null, 75, 81, 42, 0, 168, 203, null, null],
|
||||
[0, "능통", null, 0, null, 77, 89, 60, 0, 189, 217, null, null],
|
||||
[0, "여개", null, 0, null, 53, 30, 67, 0, 194, 227, null, null],
|
||||
[0, "여건", null, 2, "진류", 57, 70, 62, 1, 173, 238, null, null],
|
||||
[0, "여광", null, 0, null, 56, 70, 13, 0, 162, 207, null, null],
|
||||
[0, "여상", null, 0, null, 54, 71, 12, 0, 164, 207, null, null],
|
||||
[0, "여대", null, 0, null, 75, 71, 70, 0, 161, 256, null, null],
|
||||
[0, "여범", null, 0, null, 73, 63, 75, 0, 169, 228, null, null],
|
||||
[0, "여포", null, 3, "복양", 97, 100, 26, 12, 156, 198, null, null, "크하하하 다 부숴 버리겠다!"],
|
||||
[0, "여몽", null, 0, null, 82, 81, 20, 0, 178, 219, null, null],
|
||||
[0, "윤직", null, 0, null, 46, 42, 73, 0, 196, 237, null, null],
|
||||
[0, "냉포", null, 0, null, 71, 82, 61, 0, 176, 214, null, null],
|
||||
[0, "진취", null, 13, "강하", 56, 63, 45, 1, 174, 208, null, null],
|
||||
[0, "노숙", null, 0, null, 84, 56, 92, 0, 172, 217, null, null],
|
||||
[0, "노식", null, 0, null, 86, 63, 82, 0, 139, 192, null, null],
|
||||
[0, "범강", null, 0, null, 49, 50, 36, 0, 174, 222, null, null],
|
||||
[0, "장달", null, 0, null, 43, 56, 34, 0, 175, 222, null, null],
|
||||
[0, "규람", null, 0, null, 55, 70, 58, 0, 165, 204, null, null],
|
||||
[0, "대원", null, 0, null, 38, 32, 68, 0, 166, 204, null, null],
|
||||
[0, "왕기", null, 0, null, 77, 72, 86, 0, 190, 261, null, null],
|
||||
[0, "왕상", null, 0, null, 23, 19, 68, 0, 180, 268, null, null],
|
||||
[0, "왕돈", null, 0, null, 60, 66, 46, 0, 198, 256, null, null],
|
||||
[0, "악침", null, 0, null, 73, 75, 43, 0, 196, 257, null, null],
|
||||
[0, "하제", null, 0, null, 83, 70, 82, 0, 171, 227, null, null],
|
||||
[0, "환범", null, 0, null, 40, 11, 78, 0, 199, 249, null, null],
|
||||
[0, "견초", null, 17, "남피", 72, 79, 73, 1, 168, 244, null, null],
|
||||
[0, "강경", null, 0, null, 69, 64, 54, 0, 178, 212, null, null],
|
||||
[0, "오찬", null, 0, null, 68, 41, 78, 0, 181, 245, null, null],
|
||||
[0, "호질", null, 0, null, 73, 46, 74, 0, 192, 250, null, null],
|
||||
[0, "오질", null, 0, null, 16, 29, 68, 0, 177, 230, null, null],
|
||||
[0, "호준", null, 0, null, 79, 76, 62, 0, 200, 256, null, null],
|
||||
[0, "고담", null, 0, null, 53, 23, 77, 0, 203, 244, null, null],
|
||||
[0, "최림", null, 0, null, 32, 22, 66, 0, 187, 244, null, null],
|
||||
[0, "사마망", null, 0, null, 78, 58, 83, 0, 205, 271, null, null],
|
||||
[0, "주이", null, 0, null, 70, 73, 61, 0, 201, 257, null, null],
|
||||
[0, "전단", null, 0, null, 67, 64, 39, 0, 204, 261, null, null],
|
||||
[0, "조우", null, 0, null, 50, 43, 37, 0, 199, 278, null, null],
|
||||
[0, "조상", null, 0, null, 39, 33, 30, 0, 207, 249, null, null],
|
||||
[0, "조방", null, 0, null, 20, 14, 27, 0, 232, 274, null, null],
|
||||
[0, "태사향", null, 0, null, 57, 66, 48, 0, 189, 246, null, null],
|
||||
[0, "장휴", null, 0, null, 63, 27, 74, 0, 204, 244, null, null],
|
||||
[0, "장호", null, 0, null, 75, 74, 51, 0, 195, 240, null, null],
|
||||
[0, "조광", null, 0, null, 67, 71, 53, 0, 210, 263, null, null],
|
||||
[0, "장집", null, 0, null, 76, 29, 80, 0, 196, 254, null, null],
|
||||
[0, "장승", null, 0, null, 77, 70, 75, 0, 178, 244, null, null],
|
||||
[0, "장소", null, 0, null, 23, 56, 31, 0, 202, 264, null, null],
|
||||
[0, "조통", null, 0, null, 68, 67, 61, 0, 209, 260, null, null],
|
||||
[0, "진표", null, 0, null, 66, 42, 74, 0, 207, 237, null, null],
|
||||
[0, "정무", null, 0, null, 56, 35, 75, 0, 201, 265, null, null],
|
||||
[0, "정봉", null, 0, null, 66, 66, 53, 0, 198, 266, null, null],
|
||||
[0, "전만", null, 0, null, 51, 73, 39, 0, 181, 235, null, null],
|
||||
[0, "마균", null, 0, null, 22, 17, 71, 0, 200, 259, null, null],
|
||||
[0, "방회", null, 0, null, 69, 75, 49, 0, 205, 272, null, null],
|
||||
[0, "서구", null, 0, null, 69, 42, 70, 0, 149, 208, null, null],
|
||||
[0, "육개", null, 0, null, 65, 61, 79, 0, 198, 269, null, null],
|
||||
[0, "유찬", null, 0, null, 78, 81, 64, 0, 172, 255, null, null],
|
||||
[0, "유소", null, 0, null, 68, 53, 74, 0, 195, 264, null, null],
|
||||
[0, "요립", null, 0, null, 32, 15, 76, 0, 181, 250, null, null],
|
||||
[0, "여거", null, 0, null, 78, 69, 71, 0, 196, 256, null, null],
|
||||
[0, "제갈첨", null, 0, null, 70, 57, 76, 0, 227, 263, null, null],
|
||||
[0, "손휴", null, 0, null, 57, 42, 78, 0, 235, 264, null, null],
|
||||
[0, "극정", null, 0, null, 42, 23, 68, 0, 208, 278, null, null],
|
||||
[0, "호분", null, 0, null, 71, 76, 50, 0, 222, 288, null, null],
|
||||
[0, "손량", null, 0, null, 32, 26, 70, 0, 243, 260, null, null],
|
||||
[0, "마막", null, 0, null, 34, 12, 44, 0, 221, 266, null, null],
|
||||
[0, "손호", null, 0, null, 41, 73, 71, 0, 242, 284, null, null],
|
||||
[0, "조모", null, 0, null, 54, 61, 59, 0, 241, 260, null, null],
|
||||
[0, "조환", null, 0, null, 30, 28, 30, 0, 246, 302, null, null],
|
||||
[0, "사마유", null, 0, null, 71, 68, 75, 0, 248, 283, null, null],
|
||||
[0, "제갈상", null, 0, null, 64, 79, 62, 0, 246, 263, null, null],
|
||||
[0, "손화", null, 0, null, 31, 39, 68, 0, 224, 253, null, null],
|
||||
[0, "염우", null, 0, null, 52, 61, 51, 0, 209, 264, null, null],
|
||||
[0, "왕경", null, 0, null, 67, 63, 71, 0, 206, 260, null, null],
|
||||
[0, "왕혼", null, 0, null, 74, 71, 63, 0, 223, 297, null, null],
|
||||
[0, "곽혁", null, 0, null, 33, 29, 70, 0, 187, 225, null, null],
|
||||
[0, "가범", null, 0, null, 60, 62, 73, 0, 202, 237, null, null],
|
||||
[0, "서질", null, 0, null, 68, 83, 24, 0, 207, 253, null, null],
|
||||
[0, "손준", null, 0, null, 64, 70, 65, 0, 219, 256, null, null],
|
||||
[0, "손침", null, 0, null, 58, 55, 65, 0, 231, 258, null, null],
|
||||
[0, "우사", null, 0, null, 61, 34, 74, 0, 217, 273, null, null],
|
||||
[0, "진건", null, 0, null, 72, 71, 65, 0, 214, 292, null, null],
|
||||
[0, "동궐", null, 0, null, 65, 59, 76, 0, 204, 271, null, null],
|
||||
[0, "당자", null, 0, null, 61, 71, 50, 0, 196, 265, null, null],
|
||||
[0, "등충", null, 0, null, 76, 86, 69, 0, 230, 264, null, null],
|
||||
[0, "황숭", null, 0, null, 67, 63, 72, 0, 208, 263, null, null],
|
||||
[0, "화핵", null, 0, null, 20, 24, 71, 0, 217, 278, null, null],
|
||||
[0, "허의", null, 0, null, 51, 74, 15, 0, 213, 263, null, null],
|
||||
[0, "송겸", null, 0, null, 66, 78, 42, 0, 175, 227, null, null],
|
||||
[0, "호제", null, 0, null, 57, 39, 68, 0, 207, 264, null, null],
|
||||
[0, "나헌", null, 0, null, 85, 70, 77, 0, 218, 270, null, null],
|
||||
[0, "아들노숙", null, 0, null, 73, 53, 74, 0, 217, 272, null, null],
|
||||
[0, "구성", null, 0, null, 63, 70, 38, 0, 157, 187, null, null],
|
||||
[0, "어부라", null, 0, null, 72, 68, 21, 0, 150, 195, null, null],
|
||||
[0, "아하소과", null, 0, null, 61, 76, 13, 0, 204, 253, null, null],
|
||||
[0, "가비능", null, 0, null, 77, 69, 52, 0, 172, 235, null, null],
|
||||
[0, "구력거", null, 0, null, 80, 68, 56, 0, 152, 193, null, null],
|
||||
[0, "강단", null, 0, null, 65, 83, 48, 0, 168, 234, null, null],
|
||||
[0, "황란", null, 0, null, 63, 75, 44, 0, 200, 264, null, null],
|
||||
[0, "호주천", null, 0, null, 70, 71, 40, 0, 169, 230, null, null],
|
||||
[0, "종리목", null, 0, null, 80, 72, 73, 0, 214, 269, null, null],
|
||||
[0, "제갈교", null, 0, null, 62, 27, 75, 0, 204, 228, null, null],
|
||||
[0, "답돈", null, 0, null, 84, 82, 61, 0, 158, 207, null, null],
|
||||
[0, "반임", null, 0, null, 66, 79, 38, 0, 168, 225, null, null],
|
||||
[0, "보도근", null, 0, null, 64, 73, 50, 0, 170, 233, null, null],
|
||||
[0, "미당대왕", null, 0, null, 59, 69, 21, 0, 202, 260, null, null],
|
||||
[0, "유표(흉노)", null, 0, null, 73, 74, 48, 0, 173, 252, null, null],
|
||||
[0, "루반", null, 0, null, 65, 76, 39, 0, 178, 207, null, null],
|
||||
[0, "손관", null, 0, null, 72, 78, 51, 0, 166, 217, null, null],
|
||||
[0, "곽석", null, 0, null, 59, 71, 48, 0, 158, 187, null, null],
|
||||
[0, "주조", null, 0, null, 63, 68, 26, 0, 152, 187, null, null],
|
||||
[0, "장거", null, 0, null, 79, 75, 56, 0, 150, 188, null, null],
|
||||
[0, "장순", null, 0, null, 73, 81, 60, 0, 152, 188, null, null],
|
||||
[0, "해니", null, 0, null, 62, 78, 35, 0, 191, 233, null, null],
|
||||
[0, "토안", null, 0, null, 53, 82, 30, 0, 191, 233, null, null],
|
||||
[0, "유주", null, 0, null, 67, 78, 42, 0, 172, 233, null, null],
|
||||
[0, "비잔", null, 0, null, 60, 71, 51, 0, 181, 216, null, null],
|
||||
[0, "월길", null, 0, null, 81, 88, 26, 0, 190, 227, null, null],
|
||||
[0, "아단", null, 0, null, 72, 65, 78, 0, 186, 259, null, null],
|
||||
[0, "철리길", null, 0, null, 77, 70, 52, 0, 179, 259, null, null],
|
||||
[0, "주삭", null, 0, null, 54, 60, 50, 0, 174, 253, null, null],
|
||||
[0, "왕이", null, 0, null, 87, 59, 77, 0, 171, 230, null, null],
|
||||
[0, "왕원희", null, 0, null, 53, 37, 73, 0, 217, 268, null, null],
|
||||
[0, "곽씨", null, 0, null, 42, 4, 55, 0, 184, 235, null, null],
|
||||
[0, "하후씨", null, 0, null, 34, 13, 42, 0, 188, 243, null, null],
|
||||
[0, "하후령녀", null, 0, null, 22, 33, 60, 0, 207, 257, null, null],
|
||||
[0, "하씨", null, 0, null, 51, 14, 67, 0, 150, 189, null, null],
|
||||
[0, "관은병", null, 0, null, 87, 84, 75, 0, 204, 271, null, null],
|
||||
[0, "감씨", null, 8, "서주", 14, 10, 44, 1, 175, 210, null, null],
|
||||
[0, "황월영", null, 0, null, 62, 33, 90, 0, 186, 235, null, null],
|
||||
[0, "채염", null, 0, null, 53, 14, 80, 0, 168, 224, null, null],
|
||||
[0, "채씨", null, 13, "양양", 38, 7, 70, 1, 159, 212, null, null],
|
||||
[0, "소교", null, 0, null, 40, 3, 70, 0, 178, 212, null, null],
|
||||
[0, "서씨", null, 0, null, 48, 16, 80, 0, 183, 232, null, null],
|
||||
[0, "신헌영", null, 0, null, 48, 28, 84, 0, 191, 269, null, null],
|
||||
[0, "견씨", null, 0, null, 42, 18, 74, 0, 182, 221, null, null],
|
||||
[0, "추씨", null, 1, "홍농", 4, 9, 66, 1, 165, 200, null, null],
|
||||
[0, "조절", null, 0, null, 32, 33, 79, 0, 190, 260, null, null],
|
||||
[0, "손씨", null, 0, null, 32, 14, 55, 0, 188, 250, null, null],
|
||||
[0, "손상향", null, 0, null, 77, 82, 55, 0, 193, 222, null, null],
|
||||
[0, "손노육", null, 0, null, 52, 10, 66, 0, 204, 253, null, null],
|
||||
[0, "손노반", null, 0, null, 17, 15, 80, 0, 202, 258, null, null],
|
||||
[0, "대교", null, 0, null, 33, 30, 66, 0, 177, 215, null, null],
|
||||
[0, "장씨", null, 0, null, 55, 35, 66, 0, 207, 237, null, null],
|
||||
[0, "장춘화", null, 0, null, 66, 29, 77, 0, 179, 234, null, null],
|
||||
[0, "초선", null, 0, null, 42, 18, 81, 0, 176, 230, null, null],
|
||||
[0, "번씨", null, 0, null, 6, 12, 50, 0, 183, 225, null, null],
|
||||
[0, "미씨", null, 0, null, 13, 6, 72, 0, 176, 208, null, null],
|
||||
[0, "변씨", null, 0, null, 30, 23, 55, 0, 160, 230, null, null],
|
||||
[0, "보련사", null, 0, null, 45, 30, 77, 0, 198, 248, null, null],
|
||||
[0, "유씨", null, 17, "업", 8, 8, 44, 1, 164, 215, null, null],
|
||||
[0, "화만", null, 0, null, 85, 92, 40, 0, 191, 233, null, null],
|
||||
[0, "포삼낭", null, 0, null, 87, 83, 36, 0, 191, 240, null, null],
|
||||
[0, "성렴", null, 3, "복양", 66, 72, 43, 1, 168, 199, null, null],
|
||||
[0, "위월", null, 3, "복양", 68, 76, 39, 1, 170, 199, null, null],
|
||||
[0, "진의록", null, 3, "복양", 46, 43, 17, 1, 168, 199, null, null],
|
||||
[0, "채옹", null, 0, null, 27, 16, 81, 0, 133, 192, null, null],
|
||||
[0, "지양군", null, 0, null, 13, 8, 55, 0, 103, 192, null, null],
|
||||
[0, "위소", null, 0, null, 21, 23, 65, 0, 204, 273, null, null],
|
||||
[0, "위강", null, 0, null, 58, 35, 56, 0, 168, 213, null, null],
|
||||
[0, "원요", null, 0, null, 28, 41, 50, 0, 177, 206, null, null],
|
||||
[0, "왕기2", null, 0, null, 69, 67, 61, 0, 217, 281, null, null],
|
||||
[0, "원환", null, 0, null, 30, 17, 72, 0, 165, 225, null, null],
|
||||
[0, "우전", null, 0, null, 64, 76, 40, 0, 204, 258, null, null],
|
||||
[0, "왕광", null, 0, null, 33, 65, 55, 0, 150, 190, null, null],
|
||||
[0, "왕업", null, 0, null, 33, 6, 66, 0, 220, 280, null, null],
|
||||
[0, "왕융", null, 0, null, 40, 57, 68, 0, 234, 305, null, null],
|
||||
[0, "왕충", null, 0, null, 46, 39, 57, 0, 152, 214, null, null],
|
||||
[0, "위풍", null, 0, null, 52, 23, 72, 0, 182, 219, null, null],
|
||||
[0, "구건", null, 0, null, 39, 52, 65, 0, 239, 272, null, null],
|
||||
[0, "구본", null, 0, null, 50, 41, 67, 0, 232, 269, null, null],
|
||||
[0, "동백", null, 0, null, 12, 7, 52, 0, 173, 192, null, null],
|
||||
[0, "마운", null, 0, null, 78, 88, 53, 0, 183, 225, null, null],
|
||||
[0, "사섭", null, 18, "교지", 53, 31, 76, 12, 137, 226, null, null],
|
||||
[0, "사지", null, 18, "교지", 58, 51, 52, 1, 163, 227, null, null],
|
||||
[0, "사휘", null, 18, "남해", 69, 64, 44, 1, 165, 227, null, null],
|
||||
[0, "사일", null, 18, "남해", 48, 36, 67, 1, 153, 230, null, null],
|
||||
[0, "사광", null, 18, "교지", 58, 45, 64, 1, 175, 235, null, null],
|
||||
[0, "후음", null, 0, null, 76, 72, 45, 0, 184, 219, null, null],
|
||||
[0, "공주", null, 0, null, 26, 16, 68, 0, 151, 191, null, null],
|
||||
[0, "고담륭", null, 0, null, 35, 24, 76, 0, 190, 251, null, null],
|
||||
[0, "국연", null, 0, null, 50, 19, 77, 0, 160, 219, null, null],
|
||||
[0, "오언", null, 0, null, 74, 72, 77, 0, 235, 297, null, null],
|
||||
[0, "오강", null, 0, null, 48, 38, 65, 0, 216, 275, null, null],
|
||||
[0, "최염", null, 0, null, 18, 55, 77, 0, 162, 216, null, null],
|
||||
[0, "좌혁", null, 0, null, 62, 66, 51, 0, 232, 280, null, null],
|
||||
[0, "차주", null, 0, null, 49, 49, 40, 0, 164, 199, null, null],
|
||||
[0, "주태", null, 0, null, 71, 64, 71, 0, 207, 261, null, null],
|
||||
[0, "북궁백옥", null, 0, null, 66, 72, 49, 0, 146, 187, null, null],
|
||||
[0, "변장", null, 0, null, 69, 56, 47, 0, 133, 187, null, null],
|
||||
[0, "순의", null, 0, null, 16, 13, 72, 0, 207, 274, null, null],
|
||||
[0, "서진순욱", null, 0, null, 8, 19, 77, 0, 225, 289, null, null],
|
||||
[0, "사마준", null, 0, null, 85, 82, 80, 0, 232, 286, null, null],
|
||||
[0, "종육", null, 0, null, 32, 12, 71, 0, 223, 263, null, null],
|
||||
[0, "초이", null, 0, null, 62, 69, 63, 0, 219, 266, null, null],
|
||||
[0, "제갈정", null, 0, null, 58, 63, 66, 0, 246, 300, null, null],
|
||||
[0, "보협", null, 0, null, 62, 49, 53, 0, 216, 264, null, null],
|
||||
[0, "복양흥", null, 0, null, 32, 70, 65, 0, 224, 264, null, null],
|
||||
[0, "보천", null, 0, null, 71, 60, 71, 0, 222, 272, null, null],
|
||||
[0, "유대연주", null, 0, null, 53, 32, 55, 0, 148, 192, null, null],
|
||||
[0, "유대", null, 2, "진류", 63, 58, 30, 1, 155, 202, null, null],
|
||||
[0, "유승", null, 0, null, 45, 65, 33, 0, 215, 258, null, null],
|
||||
[0, "여영기", null, 0, null, 79, 88, 37, 0, 182, 198, null, null],
|
||||
[0, "독발수기능", null, 0, null, 89, 93, 77, 0, 232, 279, null, null],
|
||||
[0, "진수", null, 0, null, 12, 22, 68, 0, 233, 297, null, null],
|
||||
[0, "마륭", null, 0, null, 84, 75, 76, 0, 231, 296, null, null],
|
||||
[0, "도황", null, 0, null, 76, 68, 72, 0, 232, 290, null, null],
|
||||
[0, "진온", null, 0, null, 60, 38, 48, 0, 167, 192, null, null],
|
||||
[0, "교모", null, 0, null, 54, 45, 69, 0, 137, 190, null, null],
|
||||
[0, "교국로", null, 0, null, 38, 17, 55, 0, 150, 220, null, null],
|
||||
[0, "포신", null, 0, null, 77, 67, 81, 0, 152, 192, null, null],
|
||||
[0, "포훈", null, 0, null, 41, 35, 75, 0, 180, 226, null, null],
|
||||
[0, "포도", null, 0, null, 57, 70, 43, 0, 159, 190, null, null],
|
||||
[0, "위자", null, 0, null, 58, 38, 62, 0, 150, 190, null, null],
|
||||
[0, "유화", null, 17, "남피", 21, 16, 59, 1, 165, 216, null, null],
|
||||
[0, "이이자", null, 4, "북평", 32, 18, 48, 1, 157, 199, null, null],
|
||||
[0, "선우보", null, 0, null, 74, 69, 65, 0, 161, 229, null, null],
|
||||
[0, "원유", null, 0, null, 57, 39, 73, 0, 150, 193, null, null],
|
||||
[0, "사마휘", null, 0, null, 21, 8, 92, 0, 173, 208, "은둔", null, "좋지~좋아"],
|
||||
[0, "화타", null, 0, null, 8, 7, 68, 0, 173, 207, "은둔", "의술"],
|
||||
[0, "관로", null, 0, null, 13, 9, 72, 0, 200, 233, "은둔", null],
|
||||
[0, "예형", null, 0, null, 13, 4, 90, 0, 173, 199, null, null],
|
||||
[0, "원혁", null, 7, "수춘", 18, 18, 18, 1, 180, 246, null, null],
|
||||
[0, "헌제", null, 1, "장안", 23, 17, 66, 1, 184, 234, null, null, "한 황실은 이대로 끝나는 것인가…"],
|
||||
[0, "황완", null, 0, null, 40, 34, 71, 0, 141, 192, null, null],
|
||||
[0, "마일제", null, 0, "수춘", 43, 25, 70, 0, 130, 194, null, null],
|
||||
[0, "유총", null, 22, "여남", 82, 45, 60, 12, 151, 197, null, null],
|
||||
[0, "낙준", null, 22, "여남", 51, 37, 66, 11, 152, 197, null, null],
|
||||
[0, "낙통", null, 0, null, 76, 57, 73, 0, 193, 228, null, null],
|
||||
[0, "허소", null, 9, "건업", 46, 11, 82, 11, 150, 196, null, null, "태사자는 배신의 상이요! 쓰면 배신을 할것이오"],
|
||||
[0, "허사", null, 3, "복양", 24, 20, 60, 1, 163, 199, null, null],
|
||||
[0, "장초", null, 3, "복양", 61, 32, 60, 1, 168, 196, null, null],
|
||||
[0, "양표", null, 1, "장안", 24, 20, 60, 1, 142, 225, null, null],
|
||||
[0, "왕필", null, 2, "진류", 53, 44, 59, 1, 170, 228, null, null],
|
||||
[0, "사환", null, 2, "진류", 70, 71, 45, 1, 173, 209, null, null],
|
||||
[0, "정비", null, 2, "진류", 34, 30, 57, 1, 158, 214, null, null],
|
||||
[0, "두씨", null, 3, "복양", 26, 41, 52, 1, 172, 236, null, null],
|
||||
[0, "누규", null, 13, "양양", 58, 40, 87, 1, 143, 212, null, null],
|
||||
[0, "단외", null, 1, "장안", 55, 48, 55, 1, 148, 209, null, null],
|
||||
[0, "원사", null, 7, "수춘", 65, 43, 78, 1, 159, 210, null, null],
|
||||
[0, "사의관", null, 7, "수춘", 22, 12, 67, 1, 168, 199, null, null],
|
||||
[0, "송건", null, 0, null, 66, 77, 40, 0, 164, 214, null, null],
|
||||
[0, "곽원", null, 17, "업", 66, 73, 36, 1, 162, 205, null, null],
|
||||
[0, "소유", null, 17, "업", 51, 59, 48, 1, 167, 210, null, null],
|
||||
[0, "주한", null, 17, "남피", 49, 51, 26, 1, 162, 204, null, null],
|
||||
[0, "뇌서", null, 0, null, 68, 65, 34, 0, 170, 212, null, null],
|
||||
[0, "장홍", null, 3, "복양", 72, 81, 65, 1, 164, 196, null, null],
|
||||
[0, "유위대", null, 4, "북평", 53, 44, 62, 1, 152, 199, null, null],
|
||||
[0, "문칙", null, 4, "계", 59, 53, 32, 1, 164, 199, null, null],
|
||||
[0, "습진", null, 0, null, 64, 68, 51, 0, 189, 221, null, null],
|
||||
[0, "습정", null, 0, null, 49, 29, 70, 0, 181, 229, null, null],
|
||||
[0, "이리", null, 1, "장안", 65, 72, 37, 1, 171, 198, null, null]
|
||||
],
|
||||
"general_ex":[
|
||||
],
|
||||
"cities":[
|
||||
|
||||
],
|
||||
"history":[
|
||||
"<C>●</>195년 1월:<L><b>【역사모드3-2】</b>군욱축록</>",
|
||||
"<C>●</>195년 1월:<L><b>【이벤트】</b></>천하는 분열하고 군웅할거가 도래하다"
|
||||
],
|
||||
"initialEvents":[
|
||||
[
|
||||
true,
|
||||
["ChangeCity", "free", {
|
||||
"pop":"70%",
|
||||
"agri":"70%",
|
||||
"comm":"70%",
|
||||
"secu":"70%",
|
||||
"trust":80
|
||||
}],
|
||||
["ChangeCity", "occupied", {
|
||||
"pop":"70%",
|
||||
"agri":"70%",
|
||||
"comm":"70%",
|
||||
"secu":"70%",
|
||||
"trust":80,
|
||||
"def":"70%",
|
||||
"wall":"70%"
|
||||
}]
|
||||
]
|
||||
],
|
||||
"events":[
|
||||
[
|
||||
"destroy_nation", 1000,
|
||||
["and",
|
||||
["Date", ">=", 195, 1],
|
||||
["RemainNation", "==", 1]
|
||||
],
|
||||
["BlockScoutAction"],
|
||||
["DeleteEvent"]
|
||||
]
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,764 @@
|
||||
{
|
||||
"title":"【역사모드4-2】 황제 원술",
|
||||
"startYear":194,
|
||||
"life":1,
|
||||
"fiction":0,
|
||||
"const":{
|
||||
"defaultMaxGeneral":600
|
||||
},
|
||||
"nation":[
|
||||
["이각", "#A9A9A9", 5000, 5000, "바람앞의 등불 이각", 1000, "도적", 5, ["장안", "함곡"]],
|
||||
["조조", "#0000FF", 10000, 40000, "승천하는 조조", 1000, "병가", 3, ["진류", "정도", "복양", "초", "낙양", "사곡", "허창", "사수", "호로"]],
|
||||
["여포", "#A9A9A9", 10000, 10000, "서주를 뺏은 여포", 1000, "병가", 1, ["서주", "하비", "광릉"]],
|
||||
["공손찬", "#FF00FF", 10000, 10000, "히키코모리 공손찬", 1000, "병가", 3, ["북평", "역경"]],
|
||||
["장수", "#7B68EE", 10000, 10000, "동탁의 잔당 장수", 1000, "병가", 3, ["완"]],
|
||||
["유장", "#483D8B", 10000, 30000, "익주목 유장", 1000, "유가", 4, ["성도", "자동", "면죽", "강주"]],
|
||||
["중", "#FFC0CB", 15000, 40000, "중나라 황제 원술", 1000, "병가", 7, ["수춘", "여강", "합비"]],
|
||||
["유비", "#008000", 10000, 10000, "예주자사 좌장군 유비", 1000, "유가", 3, ["패"]],
|
||||
["마등", "#808000", 10000, 10000, "서량태수 마등", 1000, "병가", 3, ["서량"]],
|
||||
["공손도", "#A0522D", 10000, 10000, "요동의 왕 공손도", 1000, "덕가", 1, ["안평"]],
|
||||
["엄백호", "#800080", 10000, 10000, "엄백호의 잔당세력", 1000, "도적", 1, ["산월"]],
|
||||
["유표", "#E0FFFF", 10000, 10000, "형주자사 유표", 1000, "유가", 4, ["양양", "장판", "강하"]],
|
||||
["장로", "#20B2AA", 10000, 10000, "오두미도국 장로", 1000, "오두미도", 2, ["한중", "양평"]],
|
||||
["장연", "#87CEEB", 10000, 10000, "흑산적 장연", 1000, "유가", 2, ["진양"]],
|
||||
["화흠", "#6495ED", 10000, 10000, "예장태수 화흠", 1000, "유가", 1, ["시상"]],
|
||||
["원소", "#FFFF00", 10000, 10000, "대장군 원소", 1000, "병가", 5, ["남피", "업", "계교", "평원", "북해"]],
|
||||
["사섭", "#800000", 10000, 10000, "교주자사 사섭", 1000, "유가", 3, ["교지", "남해"]],
|
||||
["한수", "#FFFFFF", 10000, 10000, "서량의 모반자 한수", 1000, "병가", 1, ["천수"]],
|
||||
["손책", "#FF0000", 10000, 10000, "강동을 제패한 손책", 1000, "병가", 2, ["건업", "오", "회계"]],
|
||||
["유벽", "#FFD700", 10000, 10000, "여남 황건적", 1000, "도적", 1, ["여남"]]
|
||||
],
|
||||
"diplomacy":[
|
||||
[7, 2, 1, 36],
|
||||
[7, 8, 1, 36],
|
||||
[7, 19, 1, 36],
|
||||
[3, 8, 7, 48],
|
||||
[2, 8, 7, 48],
|
||||
[16, 2, 7, 48],
|
||||
[13, 6, 1, 36]
|
||||
],
|
||||
"general":[
|
||||
[0, "아회남", null, 0, null, 65, 74, 26, 0, 190, 225, null, null],
|
||||
[0, "이적", null, 0, null, 29, 24, 84, 0, 162, 273, null, null],
|
||||
[0, "윤상", null, 0, null, 51, 44, 62, 0, 194, 260, null, null],
|
||||
[0, "윤묵", null, 0, null, 26, 15, 66, 0, 183, 239, null, null],
|
||||
[0, "우금1", null, 2, "진류", 83, 78, 74, 1, 159, 221, null, null],
|
||||
[0, "위관", null, 0, null, 69, 46, 79, 0, 220, 291, null, null],
|
||||
[0, "원윤", null, 7, "수춘", 15, 14, 39, 1, 150, 199, null, null],
|
||||
[0, "원희", null, 16, "업", 66, 51, 63, 1, 176, 207, null, null],
|
||||
[0, "염행", null, 18, "천수", 76, 84, 66, 1, 159, 215, null, null],
|
||||
[0, "염유", null, 0, null, 71, 57, 71, 0, 168, 227, null, null],
|
||||
[0, "원술", null, 7, "수춘", 44, 65, 65, 12, 155, 199, null, null, "이몸은 이제부터 중의 황제다!"],
|
||||
[0, "원상", null, 0, null, 63, 75, 42, 0, 179, 207, null, null],
|
||||
[0, "원소", null, 16, "업", 81, 69, 70, 12, 154, 202, null, null, "사세 삼공의 이 원소가 천하를 지배하겠다!"],
|
||||
[0, "염상", null, 7, "수춘", 30, 27, 71, 11, 158, 199, null, null],
|
||||
[0, "원담", null, 16, "북해", 60, 69, 30, 1, 173, 205, null, null],
|
||||
[0, "염포", null, 13, "한중", 29, 25, 82, 11, 167, 231, null, null],
|
||||
[0, "왕위", null, 12, "양양", 60, 70, 62, 1, 163, 222, null, null],
|
||||
[0, "왕윤", null, 0, null, 26, 6, 68, 0, 137, 192, null, null],
|
||||
[0, "왕항", null, 0, null, 76, 60, 61, 0, 184, 254, null, null],
|
||||
[0, "왕찬", null, 12, "양양", 15, 3, 79, 1, 177, 217, null, null],
|
||||
[0, "왕수", null, 16, "북해", 54, 27, 77, 1, 168, 218, null, null],
|
||||
[0, "왕숙", null, 0, null, 36, 22, 76, 0, 195, 256, null, null],
|
||||
[0, "왕준", null, 0, null, 81, 73, 77, 0, 206, 286, null, null],
|
||||
[0, "왕쌍", null, 0, null, 67, 88, 19, 0, 195, 228, null, null],
|
||||
[0, "왕창", null, 0, null, 74, 64, 79, 0, 188, 259, null, null],
|
||||
[0, "왕평", null, 0, null, 83, 79, 76, 0, 192, 248, null, null],
|
||||
[0, "왕보", null, 0, null, 62, 41, 79, 0, 171, 219, null, null],
|
||||
[0, "왕문", null, 16, "남피", 65, 64, 31, 1, 162, 205, null, null],
|
||||
[0, "왕릉", null, 0, null, 74, 64, 71, 0, 172, 251, null, null],
|
||||
[0, "왕루", null, 0, null, 28, 30, 79, 0, 173, 211, null, null],
|
||||
[0, "왕랑", null, 0, null, 47, 35, 79, 0, 167, 228, null, null],
|
||||
[0, "온회", null, 0, null, 62, 36, 74, 0, 178, 228, null, null],
|
||||
[0, "하안", null, 0, null, 15, 30, 72, 0, 190, 249, null, null],
|
||||
[0, "괴월", null, 12, "양양", 47, 27, 82, 1, 157, 214, null, null],
|
||||
[0, "괴량", null, 12, "양양", 68, 33, 88, 11, 155, 204, null, null],
|
||||
[0, "가화", null, 0, null, 49, 65, 41, 0, 176, 222, null, null],
|
||||
[0, "가규", null, 0, null, 78, 61, 84, 0, 177, 231, null, null],
|
||||
[0, "하의", null, 0, null, 56, 69, 36, 0, 161, 196, null, null],
|
||||
[0, "화흠", null, 15, "시상", 33, 33, 82, 12, 157, 231, null, null],
|
||||
[0, "가후", null, 5, "완", 88, 48, 97, 11, 147, 223, null, null],
|
||||
[0, "곽가", null, 2, "진류", 88, 15, 96, 11, 170, 207, null, null],
|
||||
[0, "악환", null, 0, null, 65, 82, 42, 0, 196, 251, null, null],
|
||||
[0, "곽사", null, 1, "장안", 64, 76, 13, 1, 146, 197, null, null],
|
||||
[0, "악취", null, 0, null, 53, 66, 61, 0, 157, 195, null, null],
|
||||
[0, "곽준", null, 0, null, 73, 66, 73, 0, 178, 217, null, null],
|
||||
[0, "학소", null, 0, null, 86, 79, 78, 0, 185, 229, null, null],
|
||||
[0, "악진", null, 2, "진류", 80, 84, 56, 1, 159, 218, null, null],
|
||||
[0, "곽도", null, 16, "업", 52, 50, 82, 1, 157, 205, null, null],
|
||||
[0, "학맹", null, 0, null, 62, 67, 42, 0, 156, 196, null, null],
|
||||
[0, "곽유지", null, 0, null, 28, 9, 69, 0, 190, 259, null, null],
|
||||
[0, "곽익", null, 0, null, 73, 69, 69, 0, 207, 270, null, null],
|
||||
[0, "곽회", null, 0, null, 87, 78, 81, 0, 187, 255, null, null],
|
||||
[0, "하후위", null, 0, null, 71, 73, 49, 0, 204, 253, null, null],
|
||||
[0, "하후연", null, 2, "낙양", 90, 91, 68, 1, 162, 219, null, null],
|
||||
[0, "하후은", null, 2, "복양", 63, 72, 53, 1, 180, 208, null, null],
|
||||
[0, "하후화", null, 0, null, 48, 51, 71, 0, 207, 265, null, null],
|
||||
[0, "하후혜", null, 0, null, 50, 44, 76, 0, 206, 242, null, null],
|
||||
[0, "하후현", null, 0, null, 54, 39, 76, 0, 208, 254, null, null],
|
||||
[0, "하후상", null, 0, null, 79, 72, 75, 0, 181, 225, null, null],
|
||||
[0, "하후덕", null, 0, null, 69, 73, 32, 0, 178, 218, null, null],
|
||||
[0, "하후돈", null, 2, "진류", 92, 90, 63, 1, 156, 220, null, null],
|
||||
[0, "하후패", null, 0, null, 79, 84, 77, 0, 202, 262, null, null],
|
||||
[0, "하후무", null, 0, null, 20, 7, 4, 0, 201, 259, null, null],
|
||||
[0, "가충", null, 0, null, 54, 31, 89, 0, 217, 282, null, null],
|
||||
[0, "하진", null, 0, null, 39, 40, 6, 0, 135, 189, null, null],
|
||||
[0, "화웅", null, 0, null, 88, 92, 61, 0, 155, 190, null, null],
|
||||
[0, "한윤", null, 7, "수춘", 26, 29, 65, 1, 155, 197, null, null],
|
||||
[0, "관우", null, 8, "소패", 97, 97, 79, 1, 162, 219, null, null, "술이 식기 전에 돌아오겠소"],
|
||||
[0, "환계", null, 19, "건업", 25, 26, 68, 1, 156, 221, null, null],
|
||||
[0, "관해", null, 0, null, 70, 82, 10, 0, 160, 193, null, null],
|
||||
[0, "관구검", null, 0, null, 78, 74, 55, 0, 202, 255, null, null],
|
||||
[0, "한현", null, 12, "양양", 22, 33, 62, 1, 163, 220, null, null],
|
||||
[0, "한호", null, 2, "진류", 69, 72, 84, 1, 164, 224, null, null],
|
||||
[0, "관흥", null, 0, null, 76, 86, 67, 0, 199, 234, null, null],
|
||||
[0, "관색", null, 0, null, 74, 88, 56, 0, 200, 239, null, null],
|
||||
[0, "한수", null, 18, "천수", 81, 75, 82, 12, 142, 215, null, null],
|
||||
[0, "한숭", null, 12, "강하", 25, 15, 71, 1, 154, 210, null, null],
|
||||
[0, "관정", null, 4, "북평", 36, 52, 73, 11, 158, 199, null, null],
|
||||
[0, "한섬", null, 7, "수춘", 69, 66, 36, 1, 159, 197, null, null],
|
||||
[0, "감택", null, 0, null, 43, 49, 83, 0, 182, 243, null, null],
|
||||
[0, "한충", null, 0, null, 64, 67, 18, 0, 151, 184, null, null],
|
||||
[0, "한당", null, 19, "건업", 76, 85, 61, 1, 156, 227, null, null],
|
||||
[0, "한덕", null, 0, null, 63, 76, 25, 0, 171, 228, null, null],
|
||||
[0, "감녕", null, 12, "강하", 93, 94, 76, 1, 174, 219, null, null],
|
||||
[0, "한복", null, 0, null, 28, 3, 27, 0, 149, 193, null, null],
|
||||
[0, "관평", null, 0, null, 80, 82, 72, 0, 186, 219, null, null],
|
||||
[0, "간옹", null, 8, "소패", 20, 32, 75, 1, 164, 225, null, null],
|
||||
[0, "안량", null, 16, "업", 88, 94, 21, 1, 160, 200, null, null],
|
||||
[0, "위연", null, 0, null, 85, 92, 72, 0, 175, 234, null, null],
|
||||
[0, "국의", null, 0, null, 82, 78, 51, 0, 146, 197, null, null],
|
||||
[0, "희지재", null, 0, null, 63, 7, 88, 0, 157, 196, null, null],
|
||||
[0, "위속", null, 3, "서주", 67, 78, 31, 1, 156, 200, null, null],
|
||||
[0, "위유", null, 0, null, 46, 29, 74, 0, 151, 193, null, null],
|
||||
[0, "우금2", null, 2, "낙양", 72, 79, 38, 1, 173, 226, null, null],
|
||||
[0, "우보", null, 0, null, 38, 60, 21, 0, 159, 192, null, null],
|
||||
[0, "강유", null, 0, null, 92, 89, 90, 0, 202, 264, null, null],
|
||||
[0, "공지", null, 0, null, 43, 53, 62, 0, 178, 197, null, null],
|
||||
[0, "교유", null, 0, null, 64, 69, 38, 0, 143, 195, null, null],
|
||||
[0, "공도", null, 20, "여남", 59, 70, 23, 1, 164, 200, null, null],
|
||||
[0, "허공", null, 0, null, 44, 66, 64, 0, 155, 200, null, null],
|
||||
[0, "허정", null, 17, "남해", 23, 5, 68, 1, 152, 222, null, null],
|
||||
[0, "허저", null, 2, "낙양", 74, 96, 36, 1, 169, 226, null, null],
|
||||
[0, "허유", null, 16, "업", 36, 21, 80, 1, 155, 204, null, null],
|
||||
[0, "기령", null, 7, "수춘", 78, 83, 51, 1, 155, 199, null, null],
|
||||
[0, "김의", null, 0, null, 32, 38, 65, 0, 177, 218, null, null],
|
||||
[0, "김배삼결", null, 0, null, 64, 76, 19, 0, 192, 225, null, null],
|
||||
[0, "김선", null, 12, "양양", 52, 68, 13, 1, 155, 220, null, null],
|
||||
[0, "우번", null, 19, "회계", 43, 46, 86, 1, 164, 233, null, null],
|
||||
[0, "형도영", null, 0, null, 69, 80, 41, 0, 174, 208, null, null],
|
||||
[0, "엄안", null, 6, "자동", 82, 83, 72, 1, 151, 222, null, null],
|
||||
[0, "곽마", null, 0, null, 68, 71, 40, 0, 239, 281, null, null],
|
||||
[0, "엄준", null, 0, null, 28, 2, 71, 0, 169, 246, null, null],
|
||||
[0, "엄정", null, 0, null, 50, 55, 39, 0, 151, 189, null, null],
|
||||
[0, "엄백호", null, 11, "산월", 67, 70, 23, 12, 142, 198, null, null, "이 몸은 동오의 덕왕 엄백호라고 하오!"],
|
||||
[0, "엄여", null, 0, null, 61, 78, 44, 0, 145, 196, null, null],
|
||||
[0, "오의", null, 0, null, 79, 73, 70, 0, 165, 237, null, null],
|
||||
[0, "황개", null, 19, "건업", 80, 83, 70, 1, 154, 218, null, null],
|
||||
[0, "고간", null, 16, "업", 74, 56, 48, 1, 168, 206, null, null],
|
||||
[0, "황권", null, 6, "성도", 75, 59, 82, 11, 167, 240, null, null],
|
||||
[0, "고유", null, 16, "업", 57, 43, 72, 1, 174, 263, null, null],
|
||||
[0, "고순", null, 3, "하비", 85, 86, 60, 1, 162, 198, null, null],
|
||||
[0, "고상", null, 0, null, 68, 68, 53, 0, 194, 252, null, null],
|
||||
[0, "고승", null, 0, null, 67, 73, 41, 0, 145, 184, null, null],
|
||||
[0, "후성", null, 3, "하비", 74, 75, 68, 1, 158, 199, null, null],
|
||||
[0, "후선", null, 18, "천수", 63, 66, 34, 1, 175, 228, null, null],
|
||||
[0, "황조", null, 12, "강하", 74, 66, 55, 1, 148, 208, null, null],
|
||||
[0, "공손월", null, 0, null, 74, 72, 47, 0, 160, 192, null, null],
|
||||
[0, "공손연", null, 0, null, 65, 70, 60, 0, 205, 238, null, null],
|
||||
[0, "공손공", null, 10, "안평", 39, 17, 69, 1, 174, 240, null, null],
|
||||
[0, "공손강", null, 10, "안평", 72, 66, 65, 1, 172, 211, null, null],
|
||||
[0, "공손찬", null, 4, "북평", 84, 83, 75, 12, 152, 199, null, null],
|
||||
[0, "공손속", null, 4, "북평", 63, 68, 57, 1, 176, 199, null, null],
|
||||
[0, "공손도", null, 10, "안평", 67, 71, 66, 12, 154, 204, null, null],
|
||||
[0, "공손범", null, 4, "북평", 73, 69, 66, 1, 158, 199, null, null],
|
||||
[0, "황충", null, 12, "양양", 90, 93, 65, 1, 154, 220, null, null],
|
||||
[0, "고정", null, 6, "자동", 55, 63, 43, 1, 190, 251, null, null],
|
||||
[0, "고패", null, 0, null, 66, 61, 69, 0, 170, 212, null, null],
|
||||
[0, "황보숭", null, 0, null, 92, 61, 73, 0, 132, 195, null, null],
|
||||
[0, "공융", null, 2, "허창", 30, 5, 73, 1, 153, 208, null, null],
|
||||
[0, "고람", null, 16, "평원", 76, 82, 68, 1, 159, 201, null, null],
|
||||
[0, "오경", null, 0, null, 69, 66, 52, 0, 151, 211, null, null],
|
||||
[0, "호거아", null, 5, "완", 70, 82, 41, 1, 164, 206, null, null],
|
||||
[0, "호진", null, 0, null, 65, 74, 12, 0, 148, 190, null, null],
|
||||
[0, "올돌골", null, 0, null, 79, 86, 1, 0, 186, 225, null, null],
|
||||
[0, "호반", null, 0, null, 55, 55, 59, 0, 179, 233, null, null],
|
||||
[0, "오반", null, 6, "성도", 74, 71, 59, 1, 171, 234, null, null],
|
||||
[0, "고옹", null, 0, null, 43, 18, 80, 0, 168, 243, null, null],
|
||||
[0, "오란", null, 6, "성도", 68, 80, 35, 1, 170, 218, null, null],
|
||||
[0, "채화", null, 12, "장판", 39, 50, 1, 1, 166, 208, null, null],
|
||||
[0, "채중", null, 12, "장판", 40, 54, 2, 1, 168, 208, null, null],
|
||||
[0, "채모", null, 12, "양양", 70, 70, 77, 1, 160, 215, null, null],
|
||||
[0, "착융", null, 0, "건업", 60, 69, 38, 0, 161, 196, null, null],
|
||||
[0, "사마의", null, 0, null, 98, 63, 98, 0, 179, 251, null, null],
|
||||
[0, "사마염", null, 0, null, 69, 59, 77, 0, 238, 290, null, null],
|
||||
[0, "사마사", null, 0, null, 79, 64, 88, 0, 208, 255, null, null],
|
||||
[0, "사마소", null, 0, null, 76, 57, 87, 0, 211, 265, null, null],
|
||||
[0, "사마부", null, 0, null, 70, 37, 77, 0, 180, 272, null, null],
|
||||
[0, "사마랑", null, 0, null, 20, 21, 72, 0, 171, 217, null, null],
|
||||
[0, "사마가", null, 0, null, 66, 84, 25, 0, 167, 222, null, null],
|
||||
[0, "주흔", null, 0, null, 65, 62, 73, 0, 159, 196, null, null],
|
||||
[0, "주앙", null, 0, null, 74, 65, 65, 0, 162, 195, null, null],
|
||||
[0, "주지", null, 0, null, 65, 85, 41, 0, 233, 295, null, null],
|
||||
[0, "주창", null, 0, null, 68, 84, 42, 0, 164, 219, null, null],
|
||||
[0, "주태유평", null, 19, "건업", 84, 91, 48, 1, 171, 225, null, null],
|
||||
[0, "주방", null, 0, null, 52, 41, 80, 0, 200, 240, null, null],
|
||||
[0, "주유", null, 19, "건업", 95, 71, 96, 11, 175, 210, null, null],
|
||||
[0, "주환", null, 0, null, 84, 82, 77, 0, 177, 238, null, null],
|
||||
[0, "주거", null, 0, null, 77, 57, 72, 0, 190, 246, null, null],
|
||||
[0, "축융", null, 0, null, 74, 85, 29, 0, 182, 230, null, null],
|
||||
[0, "주준", null, 0, null, 89, 65, 70, 0, 149, 195, null, null],
|
||||
[0, "주연", null, 0, null, 79, 69, 71, 0, 182, 249, null, null],
|
||||
[0, "주치", null, 0, null, 71, 56, 72, 0, 156, 224, null, null],
|
||||
[0, "주포", null, 0, null, 68, 73, 34, 0, 191, 225, null, null],
|
||||
[0, "주령", null, 2, "진류", 71, 73, 67, 1, 170, 236, null, null],
|
||||
[0, "순욱", null, 2, "진류", 62, 14, 95, 1, 163, 212, null, null],
|
||||
[0, "순우경", null, 16, "남피", 72, 66, 29, 1, 146, 200, null, null],
|
||||
[0, "순심", null, 16, "업", 34, 25, 78, 1, 164, 208, null, null],
|
||||
[0, "순유", null, 2, "진류", 73, 26, 94, 1, 157, 214, null, null],
|
||||
[0, "장완", null, 0, null, 78, 34, 84, 0, 188, 246, null, null],
|
||||
[0, "종회", null, 0, null, 82, 51, 91, 0, 225, 264, null, null],
|
||||
[0, "장간", null, 0, null, 19, 6, 66, 0, 175, 208, null, null],
|
||||
[0, "장의거", null, 16, "업", 71, 58, 59, 1, 159, 205, null, null],
|
||||
[0, "장흠", null, 19, "오", 78, 84, 54, 1, 159, 208, null, null],
|
||||
[0, "장제3", null, 0, null, 48, 43, 85, 0, 188, 249, null, null],
|
||||
[0, "초주", null, 0, null, 16, 3, 67, 0, 201, 270, null, null],
|
||||
[0, "초촉", null, 16, "업", 65, 76, 33, 1, 159, 208, null, null],
|
||||
[0, "상총", null, 0, null, 76, 61, 77, 0, 195, 240, null, null],
|
||||
[0, "종요", null, 2, "낙양", 70, 24, 77, 1, 151, 230, null, null],
|
||||
[0, "상랑", null, 0, null, 28, 18, 74, 0, 167, 247, null, null],
|
||||
[0, "서영", null, 0, null, 80, 76, 62, 0, 147, 192, null, null],
|
||||
[0, "제갈각", null, 0, null, 72, 47, 90, 0, 203, 253, null, null],
|
||||
[0, "제갈근", null, 0, null, 75, 34, 81, 0, 174, 241, null, null],
|
||||
[0, "제갈균", null, 0, null, 29, 25, 52, 0, 185, 252, null, null],
|
||||
[0, "제갈탄", null, 0, null, 72, 72, 76, 0, 206, 258, null, null],
|
||||
[0, "제갈량", null, 0, null, 98, 38, 100, 0, 184, 234, null, null],
|
||||
[0, "서황", null, 2, "낙양", 91, 90, 78, 1, 165, 228, null, null],
|
||||
[0, "서서", null, 0, null, 87, 64, 93, 0, 160, 300, null, null],
|
||||
[0, "서성", null, 0, null, 86, 81, 78, 0, 178, 232, null, null],
|
||||
[0, "서막", null, 0, null, 55, 32, 68, 0, 171, 249, null, null],
|
||||
[0, "신의", null, 0, null, 55, 59, 60, 0, 190, 252, null, null],
|
||||
[0, "신탐", null, 0, null, 56, 62, 54, 0, 188, 254, null, null],
|
||||
[0, "심배", null, 16, "업", 80, 60, 83, 1, 156, 204, null, null],
|
||||
[0, "신비", null, 16, "남피", 39, 24, 79, 1, 171, 240, null, null],
|
||||
[0, "신평", null, 16, "남피", 69, 43, 77, 1, 165, 204, null, null],
|
||||
[0, "진복", null, 0, null, 31, 7, 73, 0, 160, 226, null, null],
|
||||
[0, "진랑", null, 0, null, 58, 70, 35, 0, 192, 234, null, null],
|
||||
[0, "휴고", null, 14, "진양", 63, 71, 38, 1, 151, 199, null, null],
|
||||
[0, "추단", null, 0, null, 61, 64, 34, 0, 144, 193, null, null],
|
||||
[0, "성의", null, 18, "천수", 74, 72, 41, 1, 168, 211, null, null],
|
||||
[0, "성공영", null, 18, "천수", 73, 71, 80, 11, 172, 220, null, null],
|
||||
[0, "설종", null, 0, null, 34, 16, 73, 0, 187, 243, null, null],
|
||||
[0, "선경", null, 4, "북평", 71, 68, 43, 1, 156, 199, null, null],
|
||||
[0, "전종", null, 0, null, 78, 72, 75, 0, 183, 249, null, null],
|
||||
[0, "조예", null, 0, null, 72, 52, 82, 0, 205, 239, null, null],
|
||||
[0, "조휴", null, 2, "진류", 74, 75, 62, 1, 174, 228, null, null],
|
||||
[0, "송헌", null, 3, "하비", 68, 77, 38, 1, 157, 200, null, null],
|
||||
[0, "조앙", null, 2, "진류", 74, 67, 69, 1, 161, 197, null, null],
|
||||
[0, "조홍 자렴", null, 2, "진류", 79, 81, 44, 1, 169, 232, null, null, "좌절감이 사나이를 키우는 것이다!"],
|
||||
[0, "조순", null, 2, "진류", 75, 71, 63, 1, 170, 210, null, null],
|
||||
[0, "조창", null, 0, null, 82, 90, 40, 0, 190, 223, null, null],
|
||||
[0, "조식", null, 0, null, 33, 22, 81, 0, 192, 232, null, null],
|
||||
[0, "조진", null, 0, null, 81, 74, 70, 0, 185, 231, null, null],
|
||||
[0, "조인", null, 2, "진류", 89, 86, 62, 1, 168, 223, null, null],
|
||||
[0, "조성", null, 0, null, 54, 74, 38, 0, 163, 198, null, null],
|
||||
[0, "조조", null, 2, "진류", 99, 72, 91, 12, 151, 220, null, null, "내가 천하 사람들을 저버릴지언정, 천하 사람들이 나를 저버리게 하지는 않을 것이다."],
|
||||
[0, "조충", null, 0, null, 31, 21, 85, 0, 196, 207, null, null],
|
||||
[0, "장패", null, 0, null, 78, 75, 53, 0, 165, 231, null, null],
|
||||
[0, "조비", null, 0, null, 70, 71, 83, 0, 187, 226, null, null],
|
||||
[0, "조표", null, 0, null, 66, 69, 32, 0, 151, 196, null, null],
|
||||
[0, "저수", null, 16, "업", 78, 35, 90, 1, 156, 201, null, null],
|
||||
[0, "소비", null, 0, null, 69, 63, 66, 0, 172, 221, null, null],
|
||||
[0, "조무", null, 0, null, 70, 71, 66, 0, 155, 193, null, null],
|
||||
[0, "손환", null, 0, null, 82, 73, 76, 0, 166, 228, null, null],
|
||||
[0, "손견", null, 0, null, 94, 90, 79, 0, 156, 192, null, null, "내가 옥새를 가지고 있다면 나는 칼과 화살을 맞아 죽을 것이다."],
|
||||
[0, "손건", null, 0, null, 34, 33, 79, 0, 165, 215, null, null],
|
||||
[0, "손권", null, 19, "건업", 79, 67, 80, 1, 182, 252, null, null],
|
||||
[0, "손교", null, 0, null, 77, 72, 67, 0, 181, 219, null, null],
|
||||
[0, "손책", null, 19, "건업", 96, 92, 74, 12, 175, 200, null, null],
|
||||
[0, "손소", null, 0, null, 80, 79, 76, 0, 188, 241, null, null],
|
||||
[0, "손정", null, 19, "오", 66, 53, 73, 1, 160, 206, null, null],
|
||||
[0, "손중", null, 0, null, 62, 71, 36, 0, 154, 184, null, null],
|
||||
[0, "손등", null, 0, null, 62, 37, 79, 0, 209, 241, null, null],
|
||||
[0, "손유", null, 0, null, 77, 70, 68, 0, 177, 215, null, null],
|
||||
[0, "손익", null, 0, null, 67, 78, 27, 0, 184, 204, null, null],
|
||||
[0, "손례", null, 0, null, 78, 81, 67, 0, 180, 250, null, null],
|
||||
[0, "태사자", null, 19, "건업", 90, 93, 69, 1, 166, 206, null, null],
|
||||
[0, "대래동주", null, 0, null, 51, 53, 54, 0, 195, 249, null, null],
|
||||
[0, "대릉", null, 0, null, 70, 75, 39, 0, 199, 258, null, null],
|
||||
[0, "타사대왕", null, 0, null, 62, 59, 70, 0, 186, 225, null, null],
|
||||
[0, "담웅", null, 0, null, 58, 73, 14, 0, 188, 221, null, null],
|
||||
[0, "장윤", null, 12, "양양", 72, 67, 42, 1, 163, 208, null, null],
|
||||
[0, "조운", null, 4, "북평", 96, 96, 77, 1, 168, 229, null, null],
|
||||
[0, "장위", null, 13, "한중", 74, 66, 45, 1, 172, 228, null, null, "쌀 다섯말만 가지고 오시오~ 모두 고쳐드리리다."],
|
||||
[0, "장영", null, 0, null, 75, 74, 41, 0, 154, 196, null, null],
|
||||
[0, "장연", null, 14, "진양", 76, 81, 57, 12, 153, 210, null, null],
|
||||
[0, "장횡", null, 0, null, 59, 70, 23, 0, 178, 211, null, null],
|
||||
[0, "장온", null, 0, null, 32, 10, 72, 0, 193, 231, null, null],
|
||||
[0, "장개", null, 0, null, 34, 66, 8, 0, 155, 194, null, null],
|
||||
[0, "장각", null, 0, null, 87, 25, 86, 0, 140, 184, null, null],
|
||||
[0, "장기", null, 0, null, 74, 35, 76, 0, 170, 223, null, null],
|
||||
[0, "장의", null, 16, "남피", 79, 72, 75, 1, 153, 215, null, null],
|
||||
[0, "장훈", null, 7, "수춘", 72, 68, 41, 1, 156, 206, null, null],
|
||||
[0, "장굉", null, 19, "건업", 24, 22, 86, 1, 153, 212, null, null],
|
||||
[0, "장합", null, 16, "평원", 89, 89, 73, 1, 167, 231, null, null],
|
||||
[0, "조홍", null, 0, null, 66, 72, 28, 0, 156, 184, null, null],
|
||||
[0, "장제1", null, 1, "홍농", 70, 66, 55, 1, 144, 196, null, null],
|
||||
[0, "장수", null, 5, "완", 80, 73, 64, 12, 154, 207, null, null],
|
||||
[0, "장소 자포", null, 19, "건업", 33, 3, 84, 1, 156, 236, null, null],
|
||||
[0, "장송", null, 0, null, 25, 6, 88, 0, 170, 212, null, null],
|
||||
[0, "장임", null, 6, "성도", 84, 84, 78, 1, 169, 214, null, null],
|
||||
[0, "장제", null, 0, null, 67, 43, 80, 0, 236, 280, null, null],
|
||||
[0, "장막", null, 0, null, 52, 53, 71, 0, 155, 195, null, null],
|
||||
[0, "조범", null, 0, null, 28, 21, 32, 0, 168, 218, null, null],
|
||||
[0, "장비", null, 8, "소패", 94, 98, 30, 1, 165, 221, null, null],
|
||||
[0, "장포", null, 0, null, 78, 87, 48, 0, 198, 219, null, null],
|
||||
[0, "장보", null, 0, null, 83, 71, 81, 0, 148, 184, null, null],
|
||||
[0, "장만성", null, 0, null, 75, 81, 45, 0, 143, 184, null, null],
|
||||
[0, "장양", null, 0, null, 72, 70, 66, 0, 151, 195, null, null],
|
||||
[0, "장익", null, 0, null, 75, 74, 76, 0, 188, 264, null, null],
|
||||
[0, "장료", null, 3, "서주", 95, 92, 78, 1, 169, 222, null, null],
|
||||
[0, "장량", null, 0, null, 78, 80, 74, 0, 153, 184, null, null],
|
||||
[0, "조루", null, 0, null, 70, 43, 68, 0, 183, 219, null, null],
|
||||
[0, "장로", null, 13, "한중", 51, 26, 74, 12, 163, 216, null, null],
|
||||
[0, "진횡", null, 0, null, 64, 63, 26, 0, 161, 196, null, null],
|
||||
[0, "진응", null, 0, null, 62, 72, 45, 0, 172, 208, null, null],
|
||||
[0, "진기", null, 7, "수춘", 58, 65, 43, 1, 165, 198, null, null],
|
||||
[0, "진궁", null, 3, "하비", 84, 55, 89, 11, 154, 198, null, null],
|
||||
[0, "진교", null, 0, null, 61, 27, 77, 0, 175, 237, null, null],
|
||||
[0, "진군", null, 2, "진류", 32, 14, 75, 1, 167, 236, null, null],
|
||||
[0, "진규", null, 3, "서주", 30, 4, 82, 1, 132, 206, null, null],
|
||||
[0, "진식", null, 0, null, 70, 71, 25, 0, 191, 230, null, null],
|
||||
[0, "진진", null, 16, "업", 46, 46, 69, 1, 170, 235, null, null],
|
||||
[0, "진태", null, 0, null, 84, 77, 86, 0, 210, 260, null, null],
|
||||
[0, "진등", null, 3, "하비", 79, 64, 81, 1, 169, 208, null, null],
|
||||
[0, "진도", null, 0, null, 76, 71, 67, 0, 171, 237, null, null],
|
||||
[0, "진무", null, 0, null, 76, 87, 43, 0, 176, 215, null, null],
|
||||
[0, "진란", null, 7, "여강", 66, 69, 40, 1, 157, 204, null, null],
|
||||
[0, "진림", null, 16, "남피", 25, 9, 75, 1, 160, 217, null, null],
|
||||
[0, "정욱", null, 2, "진류", 70, 49, 90, 1, 141, 220, null, null],
|
||||
[0, "정원지", null, 0, null, 69, 74, 17, 0, 145, 184, null, null],
|
||||
[0, "정은", null, 9, "서량", 69, 73, 40, 1, 184, 220, null, null],
|
||||
[0, "정원", null, 0, null, 70, 76, 35, 0, 137, 189, null, null],
|
||||
[0, "정보", null, 19, "건업", 84, 79, 79, 1, 151, 216, null, null],
|
||||
[0, "정봉승연", null, 0, null, 81, 80, 75, 0, 190, 271, null, null],
|
||||
[0, "전위", null, 0, null, 72, 95, 35, 0, 160, 197, null, null],
|
||||
[0, "전해", null, 4, "북평", 68, 65, 58, 1, 154, 199, null, null],
|
||||
[0, "전주", null, 0, null, 66, 66, 73, 0, 169, 214, null, null],
|
||||
[0, "전풍", null, 16, "남피", 72, 29, 93, 11, 162, 200, null, null],
|
||||
[0, "전예", null, 4, "역경", 80, 72, 80, 1, 171, 252, null, null],
|
||||
[0, "동윤", null, 0, null, 47, 28, 79, 0, 192, 246, null, null],
|
||||
[0, "동화", null, 0, null, 57, 34, 75, 0, 168, 219, null, null],
|
||||
[0, "등애", null, 0, null, 93, 87, 89, 0, 197, 264, null, null],
|
||||
[0, "도겸", null, 0, null, 51, 27, 64, 0, 132, 194, null, null],
|
||||
[0, "등현", null, 0, null, 61, 73, 45, 0, 188, 248, null, null],
|
||||
[0, "등지", null, 0, null, 73, 52, 81, 0, 178, 251, null, null],
|
||||
[0, "동습", null, 0, null, 72, 85, 50, 0, 169, 215, null, null],
|
||||
[0, "동승", null, 2, "허창", 56, 53, 65, 1, 154, 200, null, null],
|
||||
[0, "동소", null, 0, null, 34, 25, 80, 0, 156, 236, null, null],
|
||||
[0, "동탁", null, 0, null, 85, 87, 73, 0, 139, 192, null, null, "크하하, 천하는 이제 나의 것이다!"],
|
||||
[0, "동도나", null, 0, null, 68, 73, 31, 0, 189, 225, null, null],
|
||||
[0, "동민", null, 0, null, 49, 60, 25, 0, 149, 192, null, null],
|
||||
[0, "등무", null, 0, null, 61, 75, 29, 0, 147, 184, null, null],
|
||||
[0, "두기", null, 0, null, 66, 32, 75, 0, 163, 224, null, null],
|
||||
[0, "두예", null, 0, null, 84, 30, 85, 0, 222, 284, null, null],
|
||||
[0, "배원소", null, 0, null, 49, 65, 25, 0, 169, 200, null, null],
|
||||
[0, "마완", null, 0, null, 71, 74, 16, 0, 170, 211, null, null],
|
||||
[0, "마휴", null, 9, "서량", 68, 73, 48, 1, 178, 212, null, null],
|
||||
[0, "파재", null, 0, null, 74, 74, 55, 0, 145, 184, null, null],
|
||||
[0, "마준", null, 0, null, 38, 52, 31, 0, 196, 230, null, null],
|
||||
[0, "마속", null, 0, null, 61, 67, 87, 0, 190, 228, null, null],
|
||||
[0, "마대", null, 0, null, 79, 85, 62, 0, 183, 246, null, null],
|
||||
[0, "마충", null, 0, null, 78, 72, 68, 0, 187, 249, null, null],
|
||||
[0, "마초", null, 9, "서량", 93, 97, 44, 1, 176, 222, null, null],
|
||||
[0, "마철", null, 9, "서량", 70, 62, 58, 1, 179, 212, null, null],
|
||||
[0, "마등", null, 9, "서량", 82, 80, 52, 12, 149, 212, null, null],
|
||||
[0, "마량", null, 0, null, 53, 23, 88, 0, 187, 222, null, null],
|
||||
[0, "반준", null, 0, null, 61, 18, 83, 0, 174, 239, null, null],
|
||||
[0, "반장", null, 0, null, 76, 80, 74, 0, 177, 234, null, null],
|
||||
[0, "번조", null, 0, null, 66, 73, 31, 0, 149, 192, null, null],
|
||||
[0, "번능", null, 0, null, 69, 61, 36, 0, 158, 195, null, null],
|
||||
[0, "반봉", null, 0, null, 56, 77, 4, 0, 155, 190, null, null],
|
||||
[0, "비의", null, 0, null, 77, 30, 83, 0, 193, 253, null, null],
|
||||
[0, "비연", null, 0, null, 60, 66, 21, 0, 196, 238, null, null],
|
||||
[0, "비시", null, 0, null, 18, 28, 65, 0, 176, 240, null, null],
|
||||
[0, "미축", null, 8, "소패", 33, 29, 78, 1, 165, 220, null, null],
|
||||
[0, "미방", null, 8, "소패", 54, 61, 32, 1, 169, 226, null, null],
|
||||
[0, "비요", null, 0, null, 70, 66, 73, 0, 192, 228, null, null],
|
||||
[0, "무안국", null, 0, null, 70, 83, 34, 0, 156, 193, null, null],
|
||||
[0, "풍습", null, 0, null, 72, 71, 39, 0, 182, 222, null, null],
|
||||
[0, "부사인", null, 0, null, 46, 63, 37, 0, 182, 225, null, null],
|
||||
[0, "부첨", null, 0, null, 73, 85, 76, 0, 216, 263, null, null],
|
||||
[0, "부손", null, 0, null, 29, 13, 70, 0, 162, 230, null, null],
|
||||
[0, "문앙", null, 0, null, 76, 93, 65, 0, 238, 291, null, null],
|
||||
[0, "문흠", null, 0, null, 74, 83, 43, 0, 200, 258, null, null],
|
||||
[0, "문추", null, 16, "남피", 89, 93, 47, 1, 169, 200, null, null],
|
||||
[0, "문빙", null, 0, null, 80, 82, 69, 0, 178, 237, null, null],
|
||||
[0, "변희", null, 0, null, 56, 70, 62, 0, 169, 200, null, null],
|
||||
[0, "망아장", null, 0, null, 45, 79, 3, 0, 191, 225, null, null],
|
||||
[0, "봉기", null, 16, "남피", 43, 21, 84, 1, 153, 202, null, null],
|
||||
[0, "방희", null, 0, null, 60, 38, 69, 0, 152, 192, null, null],
|
||||
[0, "법정", null, 0, null, 82, 47, 94, 0, 176, 220, null, null],
|
||||
[0, "방통", null, 0, null, 85, 34, 97, 0, 178, 213, null, null],
|
||||
[0, "방덕", null, 9, "서량", 89, 94, 75, 11, 170, 219, null, null],
|
||||
[0, "포륭", null, 0, null, 58, 76, 49, 0, 174, 208, null, null],
|
||||
[0, "목순", null, 0, null, 52, 77, 11, 0, 157, 190, null, null],
|
||||
[0, "목록대왕", null, 0, null, 65, 71, 39, 0, 184, 225, null, null],
|
||||
[0, "보즐", null, 0, null, 72, 51, 84, 0, 177, 247, null, null],
|
||||
[0, "만총", null, 0, null, 84, 64, 82, 0, 170, 242, null, null],
|
||||
[0, "모개", null, 0, null, 63, 39, 60, 0, 161, 216, null, null],
|
||||
[0, "맹획", null, 0, null, 87, 87, 42, 0, 186, 245, null, null],
|
||||
[0, "맹달", null, 0, null, 75, 73, 75, 0, 172, 228, null, null],
|
||||
[0, "맹우", null, 0, null, 50, 68, 22, 0, 190, 243, null, null],
|
||||
[0, "유섭", null, 0, null, 62, 79, 24, 0, 158, 190, null, null],
|
||||
[0, "양부2", null, 0, null, 62, 68, 68, 0, 167, 212, null, null],
|
||||
[0, "옹개", null, 0, null, 73, 75, 57, 0, 188, 225, null, null],
|
||||
[0, "양의", null, 0, null, 68, 40, 82, 0, 190, 235, null, null],
|
||||
[0, "양호", null, 0, null, 90, 64, 84, 0, 221, 278, null, null],
|
||||
[0, "양홍", null, 7, "수춘", 33, 15, 77, 1, 152, 199, null, null],
|
||||
[0, "양앙", null, 13, "한중", 68, 72, 38, 1, 172, 215, null, null],
|
||||
[0, "양추1", null, 0, null, 52, 65, 40, 0, 159, 199, null, null],
|
||||
[0, "양수", null, 0, null, 25, 4, 83, 0, 175, 219, null, null],
|
||||
[0, "양추2", null, 0, null, 67, 64, 60, 0, 172, 238, null, null],
|
||||
[0, "양송", null, 0, null, 1, 5, 28, 0, 167, 215, null, null],
|
||||
[0, "양임", null, 13, "한중", 70, 78, 56, 1, 170, 215, null, null],
|
||||
[0, "양조", null, 0, null, 53, 61, 36, 0, 223, 286, null, null],
|
||||
[0, "양백", null, 13, "한중", 44, 45, 19, 1, 171, 214, null, null],
|
||||
[0, "양부1", null, 0, null, 67, 50, 83, 0, 178, 239, null, null],
|
||||
[0, "양봉1", null, 0, null, 66, 65, 31, 0, 153, 197, null, null],
|
||||
[0, "양봉2", null, 0, null, 54, 62, 53, 0, 191, 252, null, null],
|
||||
[0, "뇌동", null, 0, null, 69, 78, 51, 0, 172, 218, null, null],
|
||||
[0, "뇌박", null, 7, "수춘", 62, 70, 36, 1, 157, 206, null, null],
|
||||
[0, "이이", null, 0, null, 63, 77, 19, 0, 187, 222, null, null],
|
||||
[0, "이회", null, 0, null, 79, 65, 79, 0, 175, 231, null, null],
|
||||
[0, "이각", null, 1, "장안", 69, 72, 24, 12, 148, 198, null, null],
|
||||
[0, "육항", null, 0, null, 91, 63, 87, 0, 226, 274, null, null],
|
||||
[0, "육적", null, 0, null, 20, 7, 72, 0, 187, 219, null, null],
|
||||
[0, "육손", null, 0, null, 94, 69, 95, 0, 183, 245, null, null],
|
||||
[0, "이엄", null, 0, null, 83, 84, 76, 0, 172, 234, null, null],
|
||||
[0, "이유", null, 0, null, 61, 26, 93, 0, 150, 192, null, null, "장안으로 천도를 하는것이 어떻겠습니까?"],
|
||||
[0, "이숙", null, 0, null, 46, 69, 61, 0, 156, 192, null, null],
|
||||
[0, "이통", null, 2, "초", 73, 83, 62, 1, 168, 209, null, null],
|
||||
[0, "이전", null, 2, "초", 78, 77, 79, 1, 181, 216, null, null],
|
||||
[0, "이풍", null, 7, "수춘", 69, 74, 50, 1, 158, 199, null, null],
|
||||
[0, "유언", null, 0, null, 53, 38, 80, 0, 132, 194, null, null],
|
||||
[0, "유괴", null, 6, "성도", 71, 73, 67, 1, 165, 214, null, null],
|
||||
[0, "유기", null, 12, "양양", 52, 12, 63, 1, 174, 210, null, null],
|
||||
[0, "유우", null, 0, null, 55, 33, 70, 0, 145, 193, null, null],
|
||||
[0, "유훈", null, 7, "여강", 47, 63, 35, 1, 163, 216, null, null],
|
||||
[0, "유현", null, 0, null, 54, 66, 51, 0, 188, 252, null, null],
|
||||
[0, "유순", null, 0, null, 63, 46, 41, 0, 172, 255, null, null],
|
||||
[0, "유장", null, 6, "성도", 31, 5, 34, 12, 162, 219, null, null],
|
||||
[0, "유심", null, 0, null, 60, 62, 70, 0, 238, 264, null, null],
|
||||
[0, "유선", null, 0, null, 3, 5, 9, 0, 208, 270, null, null],
|
||||
[0, "유종", null, 0, null, 24, 22, 65, 0, 195, 220, null, null],
|
||||
[0, "유도", null, 0, null, 25, 23, 26, 0, 168, 214, null, null],
|
||||
[0, "유파", null, 0, null, 29, 22, 75, 0, 186, 222, null, null],
|
||||
[0, "유반", null, 0, null, 69, 76, 47, 0, 168, 210, null, null],
|
||||
[0, "유비", null, 8, "하비", 81, 77, 80, 12, 161, 223, null, null],
|
||||
[0, "유표1", null, 12, "양양", 48, 31, 72, 12, 142, 208, null, null, "강하 팔준에서 제일가는 이 유표에게로 오시오!"],
|
||||
[0, "유복", null, 0, null, 64, 49, 74, 0, 164, 208, null, null],
|
||||
[0, "유벽", null, 20, "여남", 70, 72, 47, 12, 145, 201, null, null],
|
||||
[0, "유봉", null, 0, null, 75, 79, 44, 0, 188, 220, null, null],
|
||||
[0, "유엽", null, 7, "여강", 56, 32, 92, 1, 176, 235, null, null],
|
||||
[0, "유요", null, 0, null, 62, 67, 46, 0, 156, 198, null, null],
|
||||
[0, "여위황", null, 16, "남피", 58, 63, 29, 1, 159, 200, null, null],
|
||||
[0, "요화", null, 0, null, 73, 76, 69, 0, 168, 264, null, null],
|
||||
[0, "양흥", null, 9, "서량", 61, 65, 19, 1, 169, 211, null, null],
|
||||
[0, "양습", null, 0, null, 73, 40, 74, 0, 168, 230, null, null],
|
||||
[0, "양서", null, 0, null, 56, 62, 66, 0, 198, 260, null, null],
|
||||
[0, "능조", null, 0, null, 75, 81, 42, 0, 168, 203, null, null],
|
||||
[0, "능통", null, 0, null, 77, 89, 60, 0, 189, 217, null, null],
|
||||
[0, "여개", null, 0, null, 53, 30, 67, 0, 194, 227, null, null],
|
||||
[0, "여건", null, 2, "진류", 57, 70, 62, 1, 173, 238, null, null],
|
||||
[0, "여광", null, 16, "북해", 56, 70, 13, 1, 162, 207, null, null],
|
||||
[0, "여상", null, 16, "북해", 54, 71, 12, 1, 164, 207, null, null],
|
||||
[0, "여대", null, 0, null, 75, 71, 70, 0, 161, 256, null, null],
|
||||
[0, "여범", null, 19, "건업", 73, 63, 75, 1, 169, 228, null, null],
|
||||
[0, "여포", null, 3, "하비", 97, 100, 26, 12, 156, 198, null, null, "크하하하 다 부숴 버리겠다!"],
|
||||
[0, "여몽", null, 0, null, 82, 81, 20, 0, 178, 219, null, null],
|
||||
[0, "윤직", null, 0, null, 46, 42, 73, 0, 196, 237, null, null],
|
||||
[0, "냉포", null, 0, null, 71, 82, 61, 0, 176, 214, null, null],
|
||||
[0, "진취", null, 0, null, 56, 65, 48, 0, 174, 208, null, null],
|
||||
[0, "노숙", null, 0, null, 84, 56, 92, 0, 172, 217, null, null],
|
||||
[0, "노식", null, 0, null, 86, 63, 82, 0, 139, 192, null, null],
|
||||
[0, "범강", null, 0, null, 49, 50, 36, 0, 174, 222, null, null],
|
||||
[0, "장달", null, 0, null, 43, 56, 34, 0, 175, 222, null, null],
|
||||
[0, "규람", null, 0, null, 55, 70, 58, 0, 165, 204, null, null],
|
||||
[0, "대원", null, 0, null, 38, 32, 68, 0, 166, 204, null, null],
|
||||
[0, "왕기", null, 0, null, 77, 72, 86, 0, 190, 261, null, null],
|
||||
[0, "왕상", null, 0, null, 23, 19, 68, 0, 180, 268, null, null],
|
||||
[0, "왕돈", null, 0, null, 60, 66, 46, 0, 198, 256, null, null],
|
||||
[0, "악침", null, 0, null, 73, 75, 43, 0, 196, 257, null, null],
|
||||
[0, "하제", null, 19, "회계", 83, 70, 82, 1, 171, 227, null, null],
|
||||
[0, "환범", null, 0, null, 40, 11, 78, 0, 199, 249, null, null],
|
||||
[0, "견초", null, 16, "업", 72, 79, 73, 1, 168, 244, null, null],
|
||||
[0, "고당륭", null, 0, null, 35, 24, 76, 0, 190, 244, null, null],
|
||||
[0, "오찬", null, 0, null, 68, 41, 78, 0, 181, 245, null, null],
|
||||
[0, "호질", null, 0, null, 73, 46, 74, 0, 192, 250, null, null],
|
||||
[0, "오질", null, 0, null, 16, 29, 68, 0, 177, 230, null, null],
|
||||
[0, "호준", null, 0, null, 79, 76, 62, 0, 200, 256, null, null],
|
||||
[0, "고담", null, 0, null, 53, 23, 77, 0, 203, 244, null, null],
|
||||
[0, "최림", null, 0, null, 32, 22, 66, 0, 187, 244, null, null],
|
||||
[0, "사마망", null, 0, null, 78, 58, 83, 0, 205, 271, null, null],
|
||||
[0, "주이", null, 0, null, 70, 73, 61, 0, 201, 257, null, null],
|
||||
[0, "전단", null, 0, null, 67, 64, 39, 0, 204, 261, null, null],
|
||||
[0, "조우", null, 0, null, 50, 43, 37, 0, 199, 278, null, null],
|
||||
[0, "조상", null, 0, null, 39, 33, 30, 0, 207, 249, null, null],
|
||||
[0, "조방", null, 0, null, 20, 14, 27, 0, 232, 274, null, null],
|
||||
[0, "태사향", null, 0, null, 57, 66, 48, 0, 189, 246, null, null],
|
||||
[0, "장휴", null, 0, null, 63, 27, 74, 0, 204, 244, null, null],
|
||||
[0, "장호", null, 0, null, 75, 74, 51, 0, 195, 240, null, null],
|
||||
[0, "조광", null, 0, null, 67, 71, 53, 0, 210, 263, null, null],
|
||||
[0, "장집", null, 0, null, 76, 29, 80, 0, 196, 254, null, null],
|
||||
[0, "장승", null, 0, null, 77, 70, 75, 0, 178, 244, null, null],
|
||||
[0, "장소", null, 0, null, 23, 56, 31, 0, 202, 264, null, null],
|
||||
[0, "조통", null, 0, null, 68, 67, 61, 0, 209, 260, null, null],
|
||||
[0, "진표", null, 0, null, 66, 42, 74, 0, 207, 237, null, null],
|
||||
[0, "정무", null, 0, null, 56, 35, 75, 0, 201, 265, null, null],
|
||||
[0, "정봉", null, 0, null, 66, 66, 53, 0, 198, 266, null, null],
|
||||
[0, "전만", null, 2, "허창", 51, 73, 39, 1, 181, 235, null, null],
|
||||
[0, "마균", null, 0, null, 22, 17, 71, 0, 200, 259, null, null],
|
||||
[0, "방회", null, 0, null, 69, 75, 49, 0, 205, 272, null, null],
|
||||
[0, "서구", null, 0, null, 69, 42, 70, 0, 149, 208, null, null],
|
||||
[0, "육개", null, 0, null, 65, 61, 79, 0, 198, 269, null, null],
|
||||
[0, "유찬", null, 0, null, 78, 81, 64, 0, 172, 255, null, null],
|
||||
[0, "유소", null, 0, null, 68, 53, 74, 0, 195, 264, null, null],
|
||||
[0, "요립", null, 0, null, 32, 15, 76, 0, 181, 250, null, null],
|
||||
[0, "여거", null, 0, null, 78, 69, 71, 0, 196, 256, null, null],
|
||||
[0, "제갈첨", null, 0, null, 70, 57, 76, 0, 227, 263, null, null],
|
||||
[0, "손휴", null, 0, null, 57, 42, 78, 0, 235, 264, null, null],
|
||||
[0, "극정", null, 0, null, 42, 23, 68, 0, 208, 278, null, null],
|
||||
[0, "호분", null, 0, null, 71, 76, 50, 0, 222, 288, null, null],
|
||||
[0, "손량", null, 0, null, 32, 26, 70, 0, 243, 260, null, null],
|
||||
[0, "마막", null, 0, null, 34, 12, 44, 0, 221, 266, null, null],
|
||||
[0, "손호", null, 0, null, 41, 73, 71, 0, 242, 284, null, null],
|
||||
[0, "조모", null, 0, null, 54, 61, 59, 0, 241, 260, null, null],
|
||||
[0, "조환", null, 0, null, 30, 28, 30, 0, 246, 302, null, null],
|
||||
[0, "사마유", null, 0, null, 71, 68, 75, 0, 248, 283, null, null],
|
||||
[0, "제갈상", null, 0, null, 64, 79, 62, 0, 246, 263, null, null],
|
||||
[0, "손화", null, 0, null, 31, 39, 68, 0, 224, 253, null, null],
|
||||
[0, "염우", null, 0, null, 52, 61, 51, 0, 209, 264, null, null],
|
||||
[0, "왕경", null, 0, null, 67, 63, 71, 0, 206, 260, null, null],
|
||||
[0, "왕혼", null, 0, null, 74, 71, 63, 0, 223, 297, null, null],
|
||||
[0, "곽혁", null, 0, null, 33, 29, 70, 0, 187, 225, null, null],
|
||||
[0, "가범", null, 0, null, 60, 62, 73, 0, 202, 237, null, null],
|
||||
[0, "서질", null, 0, null, 68, 83, 24, 0, 207, 253, null, null],
|
||||
[0, "손준", null, 0, null, 64, 70, 65, 0, 219, 256, null, null],
|
||||
[0, "손침", null, 0, null, 58, 55, 65, 0, 231, 258, null, null],
|
||||
[0, "우사", null, 0, null, 61, 34, 74, 0, 217, 273, null, null],
|
||||
[0, "진건", null, 0, null, 72, 71, 65, 0, 214, 292, null, null],
|
||||
[0, "동궐", null, 0, null, 65, 59, 76, 0, 204, 271, null, null],
|
||||
[0, "당자", null, 0, null, 61, 71, 50, 0, 196, 265, null, null],
|
||||
[0, "등충", null, 0, null, 76, 86, 69, 0, 230, 264, null, null],
|
||||
[0, "황숭", null, 0, null, 67, 63, 72, 0, 208, 263, null, null],
|
||||
[0, "화핵", null, 0, null, 20, 24, 71, 0, 217, 278, null, null],
|
||||
[0, "허의", null, 0, null, 51, 74, 15, 0, 213, 263, null, null],
|
||||
[0, "송겸", null, 0, null, 66, 78, 42, 0, 175, 227, null, null],
|
||||
[0, "호제", null, 0, null, 57, 39, 68, 0, 207, 264, null, null],
|
||||
[0, "나헌", null, 0, null, 85, 70, 77, 0, 218, 270, null, null],
|
||||
[0, "아들노숙", null, 0, null, 73, 53, 74, 0, 217, 272, null, null],
|
||||
[0, "구성", null, 0, null, 63, 70, 38, 0, 157, 187, null, null],
|
||||
[0, "어부라", null, 0, null, 72, 68, 21, 0, 150, 195, null, null],
|
||||
[0, "아하소과", null, 0, null, 61, 76, 13, 0, 204, 253, null, null],
|
||||
[0, "가비능", null, 0, null, 77, 69, 52, 0, 172, 235, null, null],
|
||||
[0, "구력거", null, 0, null, 80, 68, 56, 0, 152, 193, null, null],
|
||||
[0, "강단", null, 0, null, 65, 83, 48, 0, 168, 234, null, null],
|
||||
[0, "황란", null, 0, null, 63, 75, 44, 0, 200, 264, null, null],
|
||||
[0, "호주천", null, 0, null, 70, 71, 40, 0, 169, 230, null, null],
|
||||
[0, "종리목", null, 0, null, 80, 72, 73, 0, 214, 269, null, null],
|
||||
[0, "제갈교", null, 0, null, 62, 27, 75, 0, 204, 228, null, null],
|
||||
[0, "답돈", null, 0, null, 84, 82, 61, 0, 158, 207, null, null],
|
||||
[0, "반임", null, 0, null, 66, 79, 38, 0, 168, 225, null, null],
|
||||
[0, "보도근", null, 0, null, 64, 73, 50, 0, 170, 233, null, null],
|
||||
[0, "미당대왕", null, 0, null, 59, 69, 21, 0, 202, 260, null, null],
|
||||
[0, "유표(흉노)", null, 0, null, 73, 74, 48, 0, 173, 252, null, null],
|
||||
[0, "루반", null, 0, null, 65, 76, 39, 0, 178, 207, null, null],
|
||||
[0, "손관", null, 0, null, 72, 78, 51, 0, 166, 217, null, null],
|
||||
[0, "곽석", null, 0, null, 59, 71, 48, 0, 158, 187, null, null],
|
||||
[0, "주조", null, 0, null, 63, 68, 26, 0, 152, 187, null, null],
|
||||
[0, "장거", null, 0, null, 79, 75, 56, 0, 150, 188, null, null],
|
||||
[0, "장순", null, 0, null, 73, 81, 60, 0, 152, 188, null, null],
|
||||
[0, "해니", null, 0, null, 62, 78, 35, 0, 191, 233, null, null],
|
||||
[0, "토안", null, 0, null, 53, 82, 30, 0, 191, 233, null, null],
|
||||
[0, "유주", null, 0, null, 67, 78, 42, 0, 172, 233, null, null],
|
||||
[0, "비잔", null, 0, null, 60, 71, 51, 0, 181, 216, null, null],
|
||||
[0, "월길", null, 0, null, 81, 88, 26, 0, 190, 227, null, null],
|
||||
[0, "아단", null, 0, null, 72, 65, 78, 0, 186, 259, null, null],
|
||||
[0, "철리길", null, 0, null, 77, 70, 52, 0, 179, 259, null, null],
|
||||
[0, "주삭", null, 0, null, 54, 60, 50, 0, 174, 253, null, null],
|
||||
[0, "왕이", null, 0, null, 87, 59, 77, 0, 171, 230, null, null],
|
||||
[0, "왕원희", null, 0, null, 53, 37, 73, 0, 217, 268, null, null],
|
||||
[0, "곽씨", null, 0, null, 42, 4, 55, 0, 184, 235, null, null],
|
||||
[0, "하후씨", null, 0, null, 34, 13, 42, 0, 188, 243, null, null],
|
||||
[0, "하후령녀", null, 0, null, 22, 33, 60, 0, 207, 257, null, null],
|
||||
[0, "하씨", null, 0, null, 51, 14, 67, 0, 150, 189, null, null],
|
||||
[0, "관은병", null, 0, null, 87, 84, 75, 0, 204, 271, null, null],
|
||||
[0, "감씨", null, 8, "소패", 14, 10, 44, 1, 175, 210, null, null],
|
||||
[0, "황월영", null, 0, null, 62, 33, 90, 0, 186, 235, null, null],
|
||||
[0, "채염", null, 0, null, 53, 14, 80, 0, 168, 224, null, null],
|
||||
[0, "채씨", null, 12, "양양", 38, 7, 70, 1, 159, 212, null, null],
|
||||
[0, "소교", null, 0, null, 40, 3, 70, 0, 178, 212, null, null],
|
||||
[0, "서씨", null, 0, null, 48, 16, 80, 0, 183, 232, null, null],
|
||||
[0, "신헌영", null, 0, null, 48, 28, 84, 0, 191, 269, null, null],
|
||||
[0, "견씨", null, 16, "업", 42, 18, 74, 1, 182, 221, null, null],
|
||||
[0, "추씨", null, 5, "완", 4, 9, 66, 1, 165, 200, null, null],
|
||||
[0, "조절", null, 0, null, 32, 33, 79, 0, 190, 260, null, null],
|
||||
[0, "손씨", null, 0, null, 32, 14, 55, 0, 188, 250, null, null],
|
||||
[0, "손상향", null, 0, null, 77, 82, 55, 0, 193, 222, null, null],
|
||||
[0, "손노육", null, 0, null, 52, 10, 66, 0, 204, 253, null, null],
|
||||
[0, "손노반", null, 0, null, 17, 15, 80, 0, 202, 258, null, null],
|
||||
[0, "대교", null, 0, null, 33, 30, 66, 0, 177, 215, null, null],
|
||||
[0, "장씨", null, 0, null, 55, 35, 66, 0, 207, 237, null, null],
|
||||
[0, "장춘화", null, 0, null, 66, 29, 77, 0, 179, 234, null, null],
|
||||
[0, "초선", null, 3, "하비", 42, 18, 81, 1, 176, 230, null, null],
|
||||
[0, "번씨", null, 0, null, 6, 12, 50, 0, 183, 225, null, null],
|
||||
[0, "미씨", null, 8, "소패", 13, 6, 72, 1, 176, 208, null, null],
|
||||
[0, "변씨", null, 2, "허창", 30, 23, 55, 1, 160, 230, null, null],
|
||||
[0, "보련사", null, 0, null, 45, 30, 77, 0, 198, 248, null, null],
|
||||
[0, "유씨", null, 16, "업", 8, 8, 44, 1, 164, 215, null, null],
|
||||
[0, "화만", null, 0, null, 85, 92, 40, 0, 191, 233, null, null],
|
||||
[0, "포삼낭", null, 0, null, 87, 83, 36, 0, 191, 240, null, null],
|
||||
[0, "성렴", null, 3, "서주", 66, 72, 43, 1, 168, 199, null, null],
|
||||
[0, "위월", null, 3, "서주", 68, 76, 39, 1, 170, 199, null, null],
|
||||
[0, "진의록", null, 3, "하비", 46, 43, 17, 1, 168, 199, null, null],
|
||||
[0, "채옹", null, 0, null, 27, 16, 81, 0, 133, 192, null, null],
|
||||
[0, "지양군", null, 0, null, 13, 8, 55, 0, 103, 192, null, null],
|
||||
[0, "위소", null, 0, null, 21, 23, 65, 0, 204, 273, null, null],
|
||||
[0, "위강", null, 0, null, 58, 35, 56, 0, 168, 213, null, null],
|
||||
[0, "원요", null, 0, null, 28, 41, 50, 0, 177, 206, null, null],
|
||||
[0, "왕기2", null, 0, null, 69, 67, 61, 0, 217, 281, null, null],
|
||||
[0, "원환", null, 0, null, 30, 17, 72, 0, 165, 225, null, null],
|
||||
[0, "우전", null, 0, null, 64, 76, 40, 0, 204, 258, null, null],
|
||||
[0, "왕광", null, 0, null, 33, 65, 55, 0, 150, 190, null, null],
|
||||
[0, "왕업", null, 0, null, 33, 6, 66, 0, 220, 280, null, null],
|
||||
[0, "왕융", null, 0, null, 40, 57, 68, 0, 234, 305, null, null],
|
||||
[0, "왕충", null, 2, "진류", 46, 39, 57, 1, 152, 214, null, null],
|
||||
[0, "위풍", null, 0, null, 52, 23, 72, 0, 182, 219, null, null],
|
||||
[0, "구건", null, 0, null, 39, 52, 65, 0, 239, 272, null, null],
|
||||
[0, "구본", null, 0, null, 50, 41, 67, 0, 232, 269, null, null],
|
||||
[0, "동백", null, 0, null, 12, 7, 52, 0, 173, 192, null, null],
|
||||
[0, "마운", null, 0, null, 78, 88, 53, 0, 183, 225, null, null],
|
||||
[0, "사섭", null, 17, "교지", 53, 31, 76, 12, 137, 226, null, null],
|
||||
[0, "사지", null, 17, "교지", 58, 51, 52, 1, 163, 227, null, null],
|
||||
[0, "사휘", null, 17, "남해", 69, 64, 44, 1, 165, 227, null, null],
|
||||
[0, "사일", null, 17, "남해", 48, 36, 67, 1, 153, 230, null, null],
|
||||
[0, "사광", null, 17, "교지", 58, 45, 64, 1, 175, 235, null, null],
|
||||
[0, "후음", null, 0, null, 76, 72, 45, 0, 184, 219, null, null],
|
||||
[0, "공주", null, 0, null, 26, 16, 68, 0, 151, 191, null, null],
|
||||
[0, "고담륭", null, 0, null, 35, 24, 76, 0, 190, 251, null, null],
|
||||
[0, "국연", null, 0, null, 50, 19, 77, 0, 160, 219, null, null],
|
||||
[0, "오언", null, 0, null, 74, 72, 77, 0, 235, 297, null, null],
|
||||
[0, "오강", null, 0, null, 48, 38, 65, 0, 216, 275, null, null],
|
||||
[0, "최염", null, 16, "업", 18, 55, 77, 1, 162, 216, null, null],
|
||||
[0, "좌혁", null, 0, null, 62, 66, 51, 0, 232, 280, null, null],
|
||||
[0, "차주", null, 2, "정도", 49, 49, 40, 1, 164, 199, null, null],
|
||||
[0, "주태", null, 0, null, 71, 64, 71, 0, 207, 261, null, null],
|
||||
[0, "북궁백옥", null, 0, null, 66, 72, 49, 0, 146, 187, null, null],
|
||||
[0, "변장", null, 0, null, 69, 56, 47, 0, 133, 187, null, null],
|
||||
[0, "순의", null, 0, null, 16, 13, 72, 0, 207, 274, null, null],
|
||||
[0, "서진순욱", null, 0, null, 8, 19, 77, 0, 225, 289, null, null],
|
||||
[0, "사마준", null, 0, null, 85, 82, 80, 0, 232, 286, null, null],
|
||||
[0, "종육", null, 0, null, 32, 12, 71, 0, 223, 263, null, null],
|
||||
[0, "초이", null, 0, null, 62, 69, 63, 0, 219, 266, null, null],
|
||||
[0, "제갈정", null, 0, null, 58, 63, 66, 0, 246, 300, null, null],
|
||||
[0, "보협", null, 0, null, 62, 49, 53, 0, 216, 264, null, null],
|
||||
[0, "복양흥", null, 0, null, 32, 70, 65, 0, 224, 264, null, null],
|
||||
[0, "보천", null, 0, null, 71, 60, 71, 0, 222, 272, null, null],
|
||||
[0, "유대연주", null, 0, null, 53, 32, 55, 0, 148, 192, null, null],
|
||||
[0, "유대", null, 2, "진류", 63, 58, 30, 1, 155, 202, null, null],
|
||||
[0, "유승", null, 0, null, 45, 65, 33, 0, 215, 258, null, null],
|
||||
[0, "여영기", null, 3, "하비", 79, 88, 37, 1, 182, 198, null, null],
|
||||
[0, "독발수기능", null, 0, null, 89, 93, 77, 0, 232, 279, null, null],
|
||||
[0, "진수", null, 0, null, 12, 22, 68, 0, 233, 297, null, null],
|
||||
[0, "마륭", null, 0, null, 84, 75, 76, 0, 231, 296, null, null],
|
||||
[0, "도황", null, 0, null, 76, 68, 72, 0, 232, 290, null, null],
|
||||
[0, "진온", null, 0, null, 60, 38, 48, 0, 167, 192, null, null],
|
||||
[0, "교모", null, 0, null, 54, 45, 69, 0, 137, 190, null, null],
|
||||
[0, "교국로", null, 19, "건업", 38, 17, 55, 1, 150, 220, null, null],
|
||||
[0, "포신", null, 0, null, 77, 67, 81, 0, 152, 192, null, null],
|
||||
[0, "포훈", null, 2, "복양", 41, 35, 75, 1, 180, 226, null, null],
|
||||
[0, "포도", null, 0, null, 57, 70, 43, 0, 159, 190, null, null],
|
||||
[0, "위자", null, 0, null, 58, 38, 62, 0, 150, 190, null, null],
|
||||
[0, "유화", null, 16, "남피", 21, 16, 59, 1, 165, 216, null, null],
|
||||
[0, "이이자", null, 4, "북평", 32, 18, 48, 1, 157, 199, null, null],
|
||||
[0, "선우보", null, 0, null, 74, 69, 65, 0, 161, 229, null, null],
|
||||
[0, "원유", null, 0, null, 57, 39, 73, 0, 150, 193, null, null],
|
||||
[0, "사마휘", null, 0, null, 21, 8, 92, 0, 173, 208, "은둔", null, "좋지~좋아"],
|
||||
[0, "화타", null, 0, null, 8, 7, 68, 0, 173, 207, "은둔", "의술"],
|
||||
[0, "관로", null, 0, null, 13, 9, 72, 0, 200, 233, "은둔", null],
|
||||
[0, "예형", null, 0, null, 13, 4, 90, 0, 173, 199, null, null],
|
||||
[0, "원혁", null, 7, "수춘", 52, 18, 18, 1, 180, 246, null, null],
|
||||
[0, "헌제", null, 2, "낙양", 23, 17, 66, 1, 184, 234, null, null, "….."],
|
||||
[0, "황완", null, 0, null, 40, 34, 71, 0, 141, 192, null, null],
|
||||
[0, "마일제", null, 0, null, 43, 25, 70, 0, 130, 194, null, null],
|
||||
[0, "유총", null, 0, null, 82, 45, 60, 0, 151, 197, null, null],
|
||||
[0, "낙준", null, 0, null, 51, 37, 66, 0, 152, 197, null, null],
|
||||
[0, "낙통", null, 0, null, 76, 57, 73, 0, 193, 228, null, null],
|
||||
[0, "허소", null, 0, null, 46, 11, 82, 0, 150, 196, null, null],
|
||||
[0, "허사", null, 3, "하비", 24, 20, 60, 1, 163, 199, null, null],
|
||||
[0, "장초", null, 0, null, 61, 32, 60, 0, 168, 196, null, null],
|
||||
[0, "양표", null, 2, "낙양", 24, 20, 60, 1, 142, 225, null, null],
|
||||
[0, "왕필", null, 2, "낙양", 53, 44, 59, 1, 170, 228, null, null],
|
||||
[0, "사환", null, 2, "진류", 70, 71, 45, 1, 173, 209, null, null],
|
||||
[0, "정비", null, 2, "진류", 34, 30, 57, 1, 158, 214, null, null],
|
||||
[0, "두씨", null, 3, "하비", 26, 41, 52, 1, 172, 236, null, null],
|
||||
[0, "누규", null, 12, "양양", 58, 40, 87, 1, 143, 212, null, null],
|
||||
[0, "단외", null, 1, "장안", 55, 48, 55, 1, 148, 209, null, null],
|
||||
[0, "원사", null, 2, "초", 65, 43, 78, 1, 159, 210, null, null],
|
||||
[0, "사의관", null, 7, "수춘", 22, 12, 67, 1, 168, 199, null, null],
|
||||
[0, "송건", null, 0, null, 66, 77, 40, 0, 164, 214, null, null],
|
||||
[0, "곽원", null, 16, "업", 66, 73, 36, 1, 162, 205, null, null],
|
||||
[0, "소유", null, 16, "업", 51, 59, 48, 1, 167, 210, null, null],
|
||||
[0, "주한", null, 16, "남피", 49, 51, 26, 1, 162, 204, null, null],
|
||||
[0, "뇌서", null, 0, null, 68, 65, 34, 0, 170, 212, null, null],
|
||||
[0, "장홍", null, 3, "복양", 72, 81, 65, 1, 164, 196, null, null],
|
||||
[0, "유위대", null, 4, "북평", 53, 44, 62, 1, 152, 199, null, null],
|
||||
[0, "문칙", null, 4, "계", 59, 53, 32, 1, 164, 199, null, null],
|
||||
[0, "습진", null, 0, null, 64, 68, 51, 0, 189, 221, null, null],
|
||||
[0, "습정", null, 0, null, 49, 29, 70, 0, 181, 229, null, null],
|
||||
[0, "이리", null, 1, "장안", 65, 72, 37, 1, 171, 198, null, null]
|
||||
],
|
||||
"general_ex":[
|
||||
|
||||
],
|
||||
"cities":[
|
||||
|
||||
],
|
||||
"history":[
|
||||
"<C>●</>197년 1월:<L><b>【역사모드4-2】</b>황제 원술</>",
|
||||
"<C>●</>197년 1월:<L><b>【이벤트】</b></>원술이 황제가 되고 반원술 연합이 결성되다"
|
||||
],
|
||||
"initialEvents":[
|
||||
[
|
||||
true,
|
||||
["ChangeCity", "free", {
|
||||
"pop":"70%",
|
||||
"agri":"70%",
|
||||
"comm":"70%",
|
||||
"secu":"70%",
|
||||
"trust":80
|
||||
}],
|
||||
["ChangeCity", "occupied", {
|
||||
"pop":"70%",
|
||||
"agri":"70%",
|
||||
"comm":"70%",
|
||||
"secu":"70%",
|
||||
"trust":80,
|
||||
"def":"70%",
|
||||
"wall":"70%"
|
||||
}]
|
||||
]
|
||||
],
|
||||
"events":[
|
||||
[
|
||||
"destroy_nation", 1000,
|
||||
["and",
|
||||
["Date", ">=", 183, 1],
|
||||
["RemainNation", "==", 1]
|
||||
],
|
||||
["BlockScoutAction"],
|
||||
["DeleteEvent"]
|
||||
]
|
||||
]
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"title": "【가상모드28】 강서유서 소설 월드",
|
||||
"title": "【가상모드28】 강서유서 월드",
|
||||
"startYear": 180,
|
||||
"history": [
|
||||
"<C>●</>180년 1월:<L><b>【가상모드28】</b>강서유서 소설 월드</>",
|
||||
"<C>●</>180년 1월:<L><b>【이벤트】</b></>강서유서의 소설 캐릭터들이 날뛰는곳"
|
||||
"<C>●</>180년 1월:<L><b>【가상모드28】</b>강서유서 월드</>",
|
||||
"<C>●</>180년 1월:<L><b>【이벤트】</b></>강서유서의 세계 속 캐릭터들이 날뛰는곳"
|
||||
],
|
||||
"stat": {
|
||||
"total": 210,
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"title": "【가상모드28-b】 강서유서 소설 월드(비세력)",
|
||||
"title": "【가상모드28-b】 강서유서 월드(비세력)",
|
||||
"startYear": 180,
|
||||
"history": [
|
||||
"<C>●</>180년 1월:<L><b>【가상모드28】</b>강서유서 소설 월드</>",
|
||||
"<C>●</>180년 1월:<L><b>【이벤트】</b></>강서유서의 소설 캐릭터들이 날뛰는곳"
|
||||
"<C>●</>180년 1월:<L><b>【가상모드28】</b>강서유서 월드</>",
|
||||
"<C>●</>180년 1월:<L><b>【이벤트】</b></>강서유서의 세계 속 캐릭터들이 날뛰는곳"
|
||||
],
|
||||
"stat": {
|
||||
"total": 210,
|
||||
@@ -18,10 +18,10 @@
|
||||
"general":[
|
||||
[1, "키타노 유키코", null, 0, null, 95, 31, 95, 0, 160, 300, "대의", "저격", "모든것은 우리들의 꿈을 이루기 위해…"],
|
||||
[1, "키타노 시오리", null, 0, null, 88, 96, 89, 0, 160, 300, "대의", "무쌍", "언니를 지켜보일거야"],
|
||||
[1, "이치가와 아이리", null, 0, null, 87, 73, 94, 0, 160, 300, "대의", null, "유키코를 지킬거야. 내 속죄를 위해"],
|
||||
[1, "이즈카에 에리카", null, 0, null, 77, 93, 72, 0, 160, 300, "의협", "저격"],
|
||||
[1, "이치가와 아이리", null, 0, null, 87, 73, 94, 0, 160, 300, "대의", null, "모두와 함께 세계에 혁명을…."],
|
||||
[1, "이즈카에 에리카", null, 0, null, 77, 93, 72, 0, 160, 300, "의협", "저격", "모두와 함께 그녀를 지키며 혁명을!"],
|
||||
[1, "타에구치 유카리", null, 0, null, 71, 66, 80, 0, 160, 300, "할거", null, "아버지와 어머니를 지키기 위해 미래에서 왓어 난"],
|
||||
[1, "오모타 아미유", null, 0, null, 64, 51, 44, 0, 160, 300, "대의", null],
|
||||
[1, "오모타 아미유", null, 0, null, 64, 51, 44, 0, 160, 300, "유지", null],
|
||||
[1, "소카이 요시나", null, 0, null, 79, 62, 80, 0, 160, 300, "의협", null],
|
||||
[1, "소미타키 코토키", null, 0, null, 86, 79, 55, 0, 160, 300, "재간", null],
|
||||
[1, "타카이시 유키", null, 0, null, 83, 64, 72, 0, 160, 300, "재간", null],
|
||||
@@ -29,11 +29,11 @@
|
||||
[1, "요리시마 사치코", null, 0, null, 51, 81, 70, 0, 160, 300, null, "저격"],
|
||||
[0, "큐어 스플릿", null, 0, null, 80, 90, 56, 0, 160, 300, null, "무쌍"],
|
||||
[0, "큐어 솔크", null, 0, null, 93, 97, 67, 0, 160, 300, null, null, "아버지를 이겨보일거야."],
|
||||
[0, "큐어 샤인", null, 0, null, 89, 75, 99, 0, 160, 300, "패권", "신산", "디지털 월드와 인간세계 모두를 위해"],
|
||||
[0, "큐어 샤인", null, 0, null, 89, 75, 99, 0, 160, 300, "패권", "신산", "아빠를 막겠어. 디지털 월드와 현실세계의 평화를 위해... 내가 선택했으니까"],
|
||||
[0, "큐어 러브", null, 0, null, 77, 86, 54, 0, 160, 300, null, null, "사랑을 추구하는 전사 큐어 러브"],
|
||||
[0, "큐어 프로즌", null, 0, null, 64, 88, 72, 0, 160, 300, null, null],
|
||||
[0, "큐어 바이올렛", null, 0, null, 49, 89, 77, 0, 160, 300, null, "상재"],
|
||||
[0, "큐어 드림", null, 0, null, 97, 99, 71, 0, 160, 300, null, "무쌍"],
|
||||
[0, "큐어 프로즌", null, 0, null, 64, 88, 72, 0, 160, 300, null, null, "얼음처럼 차가운 성격, 큐어 프로즌"],
|
||||
[0, "큐어 바이올렛", null, 0, null, 49, 89, 77, 0, 160, 300, null, "상재", "바이올렛은 조화의 상징 큐어 바이올렛"],
|
||||
[0, "큐어 드림", null, 0, null, 97, 99, 71, 0, 160, 300, null, "무쌍", "희망이 가진 위대한 힘, 큐어 드림!"],
|
||||
[0, "큐어 뮤즈", null, 0, null, 71, 95, 64, 0, 160, 300, null, null],
|
||||
[0, "큐어 플리오네", null, 0, null, 89, 102, 86, 0, 148, 300, null, null],
|
||||
[0, "큐어 리큐브", null, 0, null, 67, 88, 82, 0, 152, 300, null, null],
|
||||
@@ -41,13 +41,13 @@
|
||||
[0, "큐어 뮤직", null, 0, null, 79, 84, 60, 0, 160, 300, null, null],
|
||||
[0, "큐어 포르테", null, 0, null, 72, 77, 55, 0, 160, 300, null, null],
|
||||
[0, "큐어 리스", null, 0, null, 89, 80, 67, 0, 160, 300, null, null],
|
||||
[0, "분비", null, 0, null, 85, 94, 90, 0, 148, 300, null, null],
|
||||
[0, "시비렛타", null, 0, null, 82, 73, 90, 0, 127, 300, null, null],
|
||||
[0, "히토", null, 0, null, 64, 88, 80, 0, 115, 300, null, null],
|
||||
[2, "모요코모 미에카", null, 0, null, 91, 60, 97, 0, 141, 300, "할거", null, "모든것은 분비님이 부활시키려는 그자를 막기 위해서야! 그자는 우리가 죽을뻔한 선택받은 아이들의 적이니까!"],
|
||||
[2, "노자미 미노코", null, 0, null, 80, 77, 80, 0, 143, 300, null, null, "도체 요시미츠님(분비님)은 뭔 생각이신거야…"],
|
||||
[2, "노자미 미에키", null, 0, null, 73, 70, 55, 0, 160, 300, null, null],
|
||||
[999, "리아", null, 0, null, 99, 34, 100, 0, 132, 300, null, "집중", "이 세계를 부디 안정시켜줄 사람이 필요해…."],
|
||||
[0, "분비", null, 0, null, 85, 94, 90, 0, 148, 300, null, null, "세상은 말이지, 강한자가 약한자를 지배하는 법이 당연시 되어 있어"],
|
||||
[0, "시비렛타", null, 0, null, 82, 73, 90, 0, 127, 300, null, null, "싫어….! 이대로 죽고싶진 않단 말이야!"],
|
||||
[0, "히토", null, 0, null, 64, 88, 80, 0, 115, 300, null, null, "이젠 내가 나설 차례인가?"],
|
||||
[2, "모요코모 미에카", null, 0, null, 91, 60, 97, 0, 141, 300, "할거", null, "우리가 이럴수 있는 이유는 디지몬의 독재자 그를 막기 위해서…"],
|
||||
[2, "노자미 미노코", null, 0, null, 80, 77, 80, 0, 143, 300, null, null, "도대체 그분은 무슨 생각을 하는거지?"],
|
||||
[2, "노자미 미에키", null, 0, null, 73, 70, 55, 0, 160, 300, null, null, "우리들은 디지털 월드와 현실세계를 잇는 아이들"],
|
||||
[0, "리아", null, 0, null, 99, 34, 100, 0, 132, 300, null, "집중", "어느새, 두세계의 융합이 코앞으로 다가와 버렸어"],
|
||||
[0, "코구라 아치모토", null, 0, null, 51, 44, 114, 0, 160, 300, null, "발명", "크흐흐…다크 프리큐어여 모습을 드러내라…!"],
|
||||
[0, "다크 프리큐어즈", null, 0, null, 84, 97, 92, 0, 160, 300, null, null, "모든건… 그분의 부활을 위해."],
|
||||
[0, "레톨프", null, 0, null, 87, 88, 64, 0, 160, 300, null, null],
|
||||
@@ -56,7 +56,7 @@
|
||||
[2, "아야토케 나이미", null, 0, null, 76, 44, 88, 0, 151, 300, null, null],
|
||||
[2, "히마즈라 유게키", null, 0, null, 54, 80, 12, 0, 149, 300, null, null],
|
||||
[2, "하루사키 유나", null, 0, null, 77, 44, 91, 0, 150, 300, null, null],
|
||||
[0, "야가미 타이치", null, 0, null, 89, 88, 67, 0, 153, 300, null, null],
|
||||
[0, "야가미 타이치", null, 0, null, 89, 88, 67, 0, 153, 300, null, null, "반드시 돌아올게. 감기, 빨리 나아야해."],
|
||||
[0, "야가미 소라", null, 0, null, 62, 37, 75, 0, 153, 300, null, null],
|
||||
[0, "야가미 유메", null, 0, null, 80, 55, 78, 0, 160, 300, null, null],
|
||||
[0, "이시다 야마토", null, 0, null, 72, 77, 60, 0, 153, 300, null, null],
|
||||
@@ -70,14 +70,15 @@
|
||||
[2, "야카기 츠에루", null, 0, null, 83, 80, 51, 0, 160, 300, null, null, "할머니의 업보… 제가 신 갚아나갈 거에요"],
|
||||
[0, "사이온지 카나타", null, 0, null, 81, 79, 85, 0, 160, 300, null, null, "내가 먼 말할게 좋아해 미유,"],
|
||||
[0, "사이온지 미유", null, 0, null, 78, 64, 82, 0, 160, 300, null, null, "미우… 방금 뭐라고?.....루? 루란 말이야?"],
|
||||
[0, "사이온지 미우", null, 0, null, 85, 91, 33, 0, 160, 300, null, "견고", "크하하… 모두 박살나 버려라, 이딴 세상!"],
|
||||
[0, "사이온지 미우", null, 0, null, 85, 91, 33, 0, 160, 300, null, "견고", "엄마도, 아빠도 우리들도 모두, 모든것은.... 이곳에서 시작됬어"],
|
||||
[0, "오카자키 나기사", null, 0, null, 77, 17, 91, 0, 160, 300, null, null, "경단~ 경단~ 경단~경단 경단 가족~"],
|
||||
[0, "오카자키 토모야", null, 0, null, 79, 82, 51, 0, 160, 300, null, null],
|
||||
[0, "오카자키 우시오", null, 0, null, 67, 77, 68, 0, 160, 300, null, null, "미우를 구하기 위해..! 난 싸울거야 친구니까!"],
|
||||
[0, "오카자키 우시오", null, 0, null, 67, 77, 68, 0, 160, 300, null, null, "이곳은 마을의 마음이니까"],
|
||||
[0, "최산해", null, 0, null, 82, 88, 33, 0, 160, 300, null, null],
|
||||
[0, "모토미야 유지", null, 0, null, 86, 31, 88, 0, 160, 300, null, "상재", "허허…. 이나라가 어찌되련지…"],
|
||||
[0, "유에", null, 0, null, 56, 14, 80, 0, 160, 300, null, null, "백성을 우선시하는게 통치의 근본."],
|
||||
[0, "에이", null, 0, null, 64, 33, 97, 0, 160, 300, null, null, "유에는 소중한 친구이자 주군,"],
|
||||
[0, "견휘", null, 0, null, 85, 44, 92, 0, 160, 300, null, "집중"],
|
||||
[0, "고현", null, 0, null, 52, 37, 81, 0, 160, 300, null, null],
|
||||
[5, "고순", null, 0, null, 88, 86, 66, 0, 160, 300, null, "기병"],
|
||||
[5, "장료", null, 0, null, 85, 92, 78, 0, 160, 300, null, "무쌍"],
|
||||
@@ -96,7 +97,7 @@
|
||||
[3, "유희", null, 0, null, 64, 75, 62, 0, 160, 300, null, null],
|
||||
[3, "나지현", null, 0, null, 64, 33, 71, 0, 160, 300, null, null],
|
||||
[3, "아사쿠라 나오", null, 0, null, 81, 63, 83, 0, 160, 300, null, "저격", "모든건 우리를 싸우게 만들고 서로 죽이게 한 어른들에 한 복수,"],
|
||||
[3, "아오이 타쿠마", null, 0, null, 77, 89, 55, 0, 160, 300, null, null],
|
||||
[3, "아오이 타쿠마", null, 0, null, 77, 89, 55, 0, 160, 300, null, null, "웃기지마!"],
|
||||
[0, "우라베 슈고", null, 0, null, 53, 68, 61, 0, 160, 300, null, null],
|
||||
[0, "카사이 오사무", null, 0, null, 66, 54, 39, 0, 160, 300, null, null],
|
||||
[0, "카케이 쿄코", null, 0, null, 77, 55, 81, 0, 160, 300, null, null],
|
||||
@@ -109,20 +110,20 @@
|
||||
[0, "야기 아야네", null, 0, null, 78, 83, 55, 0, 160, 300, null, "저격"],
|
||||
[0, "야자와 아이", null, 0, null, 67, 89, 57, 0, 160, 300, null, "무쌍"],
|
||||
[0, "유키 카나", null, 0, null, 79, 24, 88, 0, 160, 300, null, "통찰"],
|
||||
[0, "노다 샤토미", null, 0, null, 61, 55, 69, 0, 160, 300, null, null],
|
||||
[0, "노다 샤토미", null, 0, null, 61, 55, 69, 0, 160, 300, null, null, "적어도 내일까진 살수 있을거라 생각했어…."],
|
||||
[0, "사사가와 류헤이", null, 0, null, 66, 58, 66, 0, 160, 300, null, null],
|
||||
[0, "키리야마 카즈오", null, 0, null, 91, 92, 99, 0, 160, 300, "패권", "위압", "뒷면이 나오면…이 게임을 받아들이기로…!"],
|
||||
[0, "이치가와 쥬리", null, 0, null, 34, 32, 91, 0, 160, 300, null, "발명"],
|
||||
[0, "모토무라 아야네", null, 0, null, 77, 67, 55, 0, 163, 300, null, null],
|
||||
[0, "코토히키 카요코", null, 0, null, 78, 33, 78, 0, 160, 300, null, null],
|
||||
[0, "스기무라 히로키", null, 0, null, 67, 90, 45, 0, 160, 300, "유지", null],
|
||||
[0, "코토히키 카요코", null, 0, null, 78, 33, 78, 0, 160, 300, null, null, "나도 널 좋아해 히로키…."],
|
||||
[0, "스기무라 히로키", null, 0, null, 67, 90, 45, 0, 160, 300, "유지", null, "살고싶은 마음은 모두가 다 똑같아, 그런데 왜 자기 혼자만 살려고 하는거지?!"],
|
||||
[0, "민유희", null, 0, null, 89, 55, 81, 0, 163, 300, null, null],
|
||||
[0, "사카키 유코", null, 0, null, 45, 34, 60, 0, 160, 300, null, null],
|
||||
[0, "사카키 유코", null, 0, null, 45, 34, 60, 0, 160, 300, null, null, "그러니까 안돼…. 나혼자만 살아남아선 안되는거야…."],
|
||||
[0, "사쿠라이 사키", null, 0, null, 78, 77, 66, 0, 160, 300, null, "저격"],
|
||||
[0, "마키", null, 0, null, 72, 74, 56, 0, 160, 300, null, null],
|
||||
[0, "마이", null, 0, null, 70, 70, 60, 0, 160, 300, null, null],
|
||||
[0, "소마 미츠코", null, 0, null, 93, 66, 90, 0, 160, 300, null, null, "나는 뺏는쪽에 서서 살아가는 거잖아…?"],
|
||||
[0, "타카구치유이치로", null, 0, null, 77, 54, 79, 0, 160, 300, null, null],
|
||||
[0, "타카구치유이치로", null, 0, null, 77, 54, 79, 0, 160, 300, null, null, "미츠코는 다들 얘기하는 것만큼 나쁜 애가 아니라고… 설령 진짜로 나쁜 짓을 하고 다닌다 해도 그렇게라도 하지 않곤 못 견딜 이유가 있을거라고 분명 그건 미츠코가 나빠서 그러는게 아니라고 생각해"],
|
||||
[0, "스즈키 아야로", null, 0, null, 55, 44, 77, 0, 160, 300, null, null],
|
||||
[0, "아사기 유미", null, 0, null, 84, 56, 66, 0, 160, 300, null, null],
|
||||
[1, "아오조야 하나코", null, 0, null, 89, 66, 94, 0, 160, 300, null, null],
|
||||
@@ -131,7 +132,7 @@
|
||||
[0, "아카타 마야코", null, 0, null, 35, 40, 55, 0, 160, 300, null, null],
|
||||
[0, "아타키 류야", null, 0, null, 64, 12, 80, 0, 160, 300, null, null],
|
||||
[0, "우츠미 유키에", null, 0, null, 71, 44, 82, 0, 160, 300, null, null, "바보야…모두 바보야! 모두 살아돌아갈수도 있엇는데…."],
|
||||
[0, "아제라크", null, 0, null, 81, 89, 68, 0, 160, 300, null, null, "프리큐어…! 모조리 거미밥으로 만들어주마!"],
|
||||
[0, "아제라크", null, 0, null, 81, 89, 68, 0, 160, 300, null, null],
|
||||
[0, "악튜러스 멩스크", null, 0, null, 95, 71, 99, 0, 151, 300, "패권", "집중", "누구도 날 막을 수 없어. 네놈이건, 연합이건, 프로토스건, 그 누구도! 코프룰루를 가질 수 없다면 차라리 잿더미로 만들어 버릴테다!"],
|
||||
[0, "발레리안 멩스크", null, 0, null, 85, 63, 88, 0, 160, 300, null, null, "난 국민의 편이오. 아버지의 죄는 용서받을 수 없다는 걸 알고 있소. 권좌에서… 내려오셔야 한다는 것도."],
|
||||
[10, "호러스 워필드", null, 0, null, 95, 83, 82, 0, 160, 300, "대의", "인덕", "캐리건... 잘 들어라. 지금 왕복선 3엔 부상병들만 타고 있다. 다들 누군가의... 남편이자, 아버지야. 들은 그냥 보내다오. 알겠나? 독한 것. 넌 인간도 아니야. 넌 우릴 배신했어. 뭣 때문에? 그깟 복수 때문에?\n무고한 사람들을 얼마나 죽인 거야? 또 얼마나 더 죽일 셈이야?\n레이너가 널 보면 뭐라고 할까?"],
|
||||
@@ -148,11 +149,11 @@
|
||||
[0, "유리아 베넷", null, 0, null, 76, 41, 55, 0, 160, 300, null, null],
|
||||
[0, "루미 베레스", null, 0, null, 77, 33, 89, 0, 160, 300, null, null],
|
||||
[0, "타이커스", null, 0, null, 61, 85, 40, 0, 160, 300, null, null],
|
||||
[0, "제임스 레이너", null, 0, null, 99, 88, 72, 0, 160, 300, "대의", "돌격", "피닉스! 안돼!!"],
|
||||
[0, "맷 호너", null, 0, null, 87, 64, 95, 0, 160, 300, null, null],
|
||||
[0, "제임스 레이너", null, 0, null, 99, 88, 72, 0, 160, 300, "대의", "돌격", "아크튜러스, 이 나쁜 자식! 그러지 마!"],
|
||||
[0, "맷 호너", null, 0, null, 87, 64, 95, 0, 160, 300, null, null, "멩스크를 끌어내리는 건 시작일 뿐입니다. 우리 목표는 더 밝은 미래라고요. 모르시겠습니까? 우린 멩스크에게 맞선 과학자, 철학자, 자유사상가들을 해방했어요. 그것이 오늘의 가장 큰 승리입니다."],
|
||||
[0, "로리 스완", null, 0, null, 32, 55, 93, 0, 160, 300, null, "발명"],
|
||||
[0, "이곤 스텟먼", null, 0, null, 11, 7, 91, 0, 160, 300, null, "발명"],
|
||||
[0, "가브리엘 토시", null, 0, null, 85, 96, 55, 0, 160, 300, null, null],
|
||||
[0, "가브리엘 토시", null, 0, null, 85, 96, 55, 0, 160, 300, null, null, "순진하기 짝이 없군. 내일 새로운 멩스크가 나타나고 그 후에 또 비슷한 놈이 나타날 겁니다. 밝게 빛나는 미래 따위는...그저 허상일 뿐이지."],
|
||||
[0, "로사 모랄레스", null, 0, null, 51, 44, 67, 0, 160, 300, null, null],
|
||||
[0, "레베카 레이너", null, 0, null, 81, 93, 44, 0, 160, 300, null, null],
|
||||
[0, "케이트 록웰", null, 0, null, 43, 10, 78, 0, 160, 300, null, null],
|
||||
@@ -161,7 +162,7 @@
|
||||
[0, "알렌 세자르", null, 0, null, 85, 61, 82, 0, 160, 300, null, null],
|
||||
[0, "마이클 리버티", null, 0, null, 64, 33, 71, 0, 160, 300, null, null],
|
||||
[0, "시온 크루스", null, 0, null, 51, 14, 85, 0, 160, 300, null, null],
|
||||
[0, "사라 케리건", null, 0, null, 95, 95, 81, 0, 160, 300, null, "무쌍"],
|
||||
[0, "사라 케리건", null, 0, null, 95, 95, 81, 0, 160, 300, null, "무쌍", "지미, 갑옷을 걸친 기사 행세는 그만둬. 그게 어울릴 때도 있지만, 지금은... 지금은 아냐. 난 내가 뭘 해야 하는지 잘 아니까. 프로토스는 저그뿐만 아니라 행성을 통째로 파괴하고 말 거야. 난 알아. 왜냐하면... 그냥 알 수 있어. 난... 유령이잖아. 프로토스를 처리하고 나서, 저그는 그때 생각할 거야. 아크튜러스도 결국 정신을 차릴 테고. 난 알아."],
|
||||
[10, "드랄리스카", null, 0, null, 82, 93, 78, 0, 160, 300, null, null, "케리건님이 죽다니…근데 왜 내가 그 중임을 이어받아야 하는거야?"],
|
||||
[0, "에레니카", null, 0, null, 78, 38, 91, 0, 160, 300, null, null, "곧있으면 위하신 아몬님이 완전히 부활할거야 드랄리스카 언니 후후후…."],
|
||||
[0, "세페니아", null, 0, null, 75, 81, 51, 0, 160, 300, null, null, "에레니카 언니 뭔가 이상해"],
|
||||
@@ -170,24 +171,24 @@
|
||||
[0, "데히카", null, 0, null, 75, 91, 55, 0, 160, 300, null, null],
|
||||
[0, "스투코프 부제독", null, 0, null, 87, 71, 93, 0, 160, 300, null, null],
|
||||
[0, "니아드라", null, 0, null, 80, 83, 52, 0, 160, 300, null, null],
|
||||
[0, "아바투르", null, 0, null, 43, 33, 81, 0, 160, 300, null, "발명"],
|
||||
[0, "아바투르", null, 0, null, 43, 33, 81, 0, 160, 300, null, "발명", "아바투르. 군단 진화 및 유전자 조작. 처음엔 초월체, 이후 칼날 여왕을 섬겼음. 이제 당신을 섬김.."],
|
||||
[0, "다고쓰", null, 0, null, 81, 85, 80, 0, 160, 300, null, null, "휴우… 드랄리스카도 환생자라 다행이야, 죽을일은 없겠네… 근데 케리건이 죽을줄이야…"],
|
||||
[0, "초월체", null, 0, null, 95, 55, 99, 0, 160, 300, null, null],
|
||||
[0, "초월체", null, 0, null, 95, 55, 99, 0, 160, 300, null, null, "일어나라, 내 아이야, 일어나 네 생득의 영광을 보듬어라.\n나는 초월체, 군단의 영원한 의지이며 넌 날 섬기기 위해 창조되었다.\n군락을 섬겨라. 나는 리듬을 지배한다. 군락을 섬겨라. 나는 리듬을 지배한다. 군락을 섬겨라.난 너의 행동을 지배한다. 내 리듬이 어떠한가, 다고스?"],
|
||||
[0, "자츠", null, 0, null, 82, 55, 71, 0, 160, 300, null, null],
|
||||
[0, "곤", null, 0, null, 79, 56, 77, 0, 160, 300, null, null],
|
||||
[0, "카그", null, 0, null, 80, 55, 69, 0, 160, 300, null, null],
|
||||
[0, "아우자", null, 0, null, 64, 71, 86, 0, 160, 300, null, null],
|
||||
[0, "제라드 듀갈", null, 0, null, 87, 51, 80, 0, 160, 300, null, null],
|
||||
[0, "맘스틴 령", null, 0, null, 80, 51, 66, 0, 160, 300, null, null],
|
||||
[0, "스투코프 주니어", null, 0, null, 81, 56, 72, 0, 160, 300, null, null, "ued 2차원정로 우린 아몬과의 결전에 참가할거야."],
|
||||
[0, "레비나 스투코프", null, 0, null, 66, 31, 90, 0, 160, 300, null, null, "근데 우리 병사로 괜찮을까 오빠"],
|
||||
[0, "제라툴", null, 0, null, 85, 90, 82, 0, 160, 300, null, null, "젤나가 맙소사! 누가 이런 끔찍한 혼종을 만들었단 말인가"],
|
||||
[0, "테사다르", "`", 0, null, 82, 77, 86, 0, 160, 300, null, null, "난 죽음을 경험한 적이 없네"],
|
||||
[0, "피닉스", null, 0, null, 79, 80, 65, 0, 160, 300, null, null],
|
||||
[0, "알다리스", null, 0, null, 80, 51, 77, 0, 160, 300, null, null],
|
||||
[0, "제라드 듀갈", null, 0, null, 87, 51, 80, 0, 160, 300, null, null, "다시는 나를 볼 수 없을 거요, 헬레나.\n아이들에게 사랑한다고 전해 주시오. 아버지가 너희들의 미래를 지키다가 죽었다고도 말해 주시오.\n그럼, 안녕히...(Au revoir)."],
|
||||
[0, "맘스틴 대령", null, 0, null, 80, 51, 66, 0, 160, 300, null, null],
|
||||
[0, "스투코프 주니어", null, 0, null, 81, 56, 72, 0, 160, 300, null, null],
|
||||
[0, "레비나 스투코프", null, 0, null, 66, 31, 90, 0, 160, 300, null, null],
|
||||
[0, "제라툴", null, 0, null, 85, 90, 82, 0, 160, 300, null, null, "젤나가 맙소사! 누가 이런 혼종을 만들었단 말인가."],
|
||||
[0, "테사다르", "`", 0, null, 82, 77, 86, 0, 160, 300, null, null, "집행관, 초월체가 약해졌소. 하지만 우리도 심각한 피해를 입었군. 내가 간트리서를 초월체에게 충돌시키겠소. 간트리서의 선체에 암흑 기사단의 힘을 충분히 모은다면, 저 저주받은 흉물에게 죽음을 선사할 수 있을 거요. 우리를 기억해주오, 집행관이여. 오늘 우리가 한 일을 기억하시오. 아둔이 그대를 보살피시길"],
|
||||
[0, "피닉스", null, 0, null, 79, 80, 65, 0, 160, 300, null, null, "칼라가 나를 기다린다, 케리건. 비록 난 운명을 맞이할 준비가 되기는 했지만, 그렇게 쉬운 먹이가 되진 않겠다!"],
|
||||
[0, "알다리스", null, 0, null, 80, 51, 77, 0, 160, 300, null, null, "집행관, 태사다르, 소식이 늦어서 미안하군. 대의회는 그대들이 정신체를 쓰러뜨리는 것을 지켜보았소. 그리고, 그 용감한 행위가 헛되지 않았음을 깨달았지. 그대들을 심판하려 했으나, 그릇된 생각을 한 것은 우리였소. 그대들은 우리의 내면에 존재하는 위대함의 상징이니, 우리 모두의 희망을 걸겠소. 엔 타로 아둔! 용감한 아이어의 후예들이여!"],
|
||||
[0, "탈란다르", null, 0, null, 84, 66, 80, 0, 160, 300, null, null],
|
||||
[0, "아르타니스", null, 0, null, 80, 71, 84, 0, 160, 300, null, null, "모조리 용기병으로 만들어주마!"],
|
||||
[0, "라자갈", null, 0, null, 90, 75, 89, 0, 160, 300, null, null],
|
||||
[0, "아르타니스", null, 0, null, 80, 71, 84, 0, 160, 300, null, null, "모조리 용기병으로 만들어주마"],
|
||||
[0, "라자갈", null, 0, null, 90, 75, 89, 0, 160, 300, null, null, "고맙다, 제라툴... 네가 나를 놈의 추악한 손아귀에서 벗어나게 해주었다. 너는 늘 명예롭게 나를 섬겨주었지... 그러니 부탁하마... 내 부족을 돌봐 다오... 네 손에 미래를 맡기겠다"],
|
||||
[0, "우룬 제독", null, 0, null, 84, 80, 55, 0, 160, 300, null, null],
|
||||
[0, "셀렌디스", null, 0, null, 80, 80, 67, 0, 160, 300, null, null],
|
||||
[0, "보라준", null, 0, null, 87, 51, 91, 0, 160, 300, null, null],
|
||||
@@ -195,7 +196,7 @@
|
||||
[0, "말라쉬", null, 0, null, 80, 96, 65, 0, 160, 300, null, null],
|
||||
[0, "니온", null, 0, null, 62, 73, 43, 0, 160, 300, null, null],
|
||||
[0, "지나라", null, 0, null, 75, 90, 55, 0, 160, 300, null, null],
|
||||
[0, "아리샤", null, 0, null, 51, 81, 50, 0, 160, 300, null, null, "난 XX부르드의 울트라 표 아리샤다!"],
|
||||
[0, "아리샤", null, 0, null, 51, 81, 50, 0, 160, 300, null, null],
|
||||
[0, "아몬", null, 0, null, 97, 107, 85, 0, 160, 300, null, null, "나는 너희들의 시작이었으니 또한 끝이리라….!"],
|
||||
[0, "에밀 나루드", null, 0, null, 85, 92, 96, 0, 160, 300, null, null, "아몬께서 별빛으로 속삭이셨다. 그분은 돌아오신다고 하셨다. 그분은 파괴한다고 하셨다. 멸종. 모든 것이 종말을 맞이할 것이라고"],
|
||||
[0, "오로스", null, 0, null, 80, 79, 55, 0, 160, 300, null, null],
|
||||
@@ -206,14 +207,14 @@
|
||||
[0, "유당찬", null, 0, null, 83, 69, 55, 0, 160, 300, null, null],
|
||||
[0, "유시하", "`", 0, null, 67, 55, 81, 0, 160, 300, null, null],
|
||||
[0, "유미하", null, 0, null, 41, 34, 48, 0, 160, 300, null, null],
|
||||
[0, "유지은", null, 0, null, 55, 78, 64, 0, 160, 300, null, null, "나는 레플리카"],
|
||||
[0, "유혜선", null, 0, null, 78, 89, 55, 0, 160, 300, null, null, "나는"],
|
||||
[0, "유지은", null, 0, null, 55, 78, 64, 0, 160, 300, null, null, "나는 레플리카, 적의 기술을 베껴서 사용 가능하지."],
|
||||
[0, "유혜선", null, 0, null, 78, 89, 55, 0, 160, 300, null, null],
|
||||
[0, "최정윤", null, 0, null, 85, 71, 66, 0, 160, 300, null, null, "우리는 다미키즈, 다미의 친구들이자 다미에 의해 도움을 받은 아이들 거기서도 나는 캔디팝이야"],
|
||||
[0, "이선아", null, 0, null, 83, 88, 56, 0, 160, 300, null, null, "나는 마콧치, 마법나라 감사부문의 부부장이야."],
|
||||
[0, "나서희", null, 0, null, 81, 77, 44, 0, 160, 300, null, null, "다미를 지킬거야"],
|
||||
[0, "나서희", null, 0, null, 81, 77, 44, 0, 160, 300, null, null, "우리는 다미를 지킬거야"],
|
||||
[0, "스노우 화이트", null, 0, null, 71, 80, 66, 0, 160, 300, null, null, "이번에야 말로 친구들을 지켜 보이겠어. 소타도, 아카리도"],
|
||||
[0, "워터 스플렛", null, 0, null, 65, 80, 52, 0, 160, 300, null, null, "이번생에는 그런 셔플린 따위에게 지지 않을거야,"],
|
||||
[0, "스노우 슬러스", null, 0, null, 69, 75, 53, 0, 160, 300, null, null, "번생이랑 달라! 나도 강해졋다고!"],
|
||||
[0, "워터 스플렛", null, 0, null, 65, 80, 52, 0, 160, 300, null, null, "…. 이번에야말로…"],
|
||||
[0, "스노우 슬러스", null, 0, null, 69, 75, 53, 0, 160, 300, null, null, "저번생이랑 달라,… 나도 언니처럼 강해질수 있어"],
|
||||
[0, "리하나", null, 0, null, 79, 70, 65, 0, 160, 300, null, null, "프흐레 언니…"],
|
||||
[0, "블루베리", null, 0, null, 81, 88, 73, 0, 160, 300, null, null],
|
||||
[0, "스윔스윔", null, 0, null, 54, 90, 71, 0, 163, 300, null, null, "룰러가 그랫어 마법소녀는 본모습을 남에게 보여주면 안된다고"],
|
||||
@@ -221,22 +222,22 @@
|
||||
[0, "정혜림", null, 0, null, 91, 88, 80, 0, 160, 300, null, null, "우리 다미키즈는 다미언니에 의해 많은걸 받은 아이들이야,"],
|
||||
[0, "하나조노 아무", null, 0, null, 67, 53, 81, 0, 160, 300, null, null, "캐릭터 변신! 애뮬릿 다이아!"],
|
||||
[0, "하나조노 카렌", null, 0, null, 66, 51, 80, 0, 160, 300, null, null, "나는 하나조노 카렌, 전 이름은 하나무라 카렌이야."],
|
||||
[0, "하나조노 아리스", null, 0, null, 53, 14, 61, 0, 160, 300, null, null],
|
||||
[0, "하나조노 아리스", null, 0, null, 53, 14, 61, 0, 160, 300, null, null, "당신에겐 고민이 있나요? 학교생활, 그리고 친구, 가족과의 관계와 장래의 꿈에 대한 고민, 혼자서는 도저히 해결할수 없는 고민들이 있죠? 바로 그럴떄 내 이야기를 들어줄 누군가가 필요하지 않나요? 그게 누구냐고요? 만나고 싶으면 리루 리루 페어리루라 외치세요!"],
|
||||
[0, "린", null, 0, null, 38, 32, 69, 0, 160, 300, null, null, "난 용담꽃의 페어리루 린이야~"],
|
||||
[0, "하나조노 마츠아", null, 0, null, 44, 40, 55, 0, 160, 300, null, null],
|
||||
[0, "롭프", null, 0, null, 55, 47, 50, 0, 160, 300, null, null],
|
||||
[0, "이정선 황제", null, 0, null, 74, 44, 85, 0, 160, 300, null, null, "감히 우리 제국에 반기를 든자들! 용서하지 않는다! !"],
|
||||
[0, "이양선 공", null, 0, null, 77, 42, 79, 0, 160, 300, null, null, "형님이 리 화를 내시다니 내심 단하구나 그들은"],
|
||||
[0, "이양선 공", null, 0, null, 77, 42, 79, 0, 160, 300, null, null, "형님께서 이리 화를 내시다니, 그들도 강하군"],
|
||||
[0, "이을용 황태자", null, 0, null, 51, 33, 69, 0, 160, 300, null, null],
|
||||
[0, "카라시프 장군", null, 0, null, 75, 69, 71, 0, 160, 300, null, null],
|
||||
[0, "카몬 요네미", null, 0, null, 40, 8, 66, 0, 160, 300, null, null],
|
||||
[0, "키타노 타케시", null, 0, null, 43, 14, 75, 0, 160, 300, null, null, "우리가족의 행복과 안전을 우선시해야지"],
|
||||
[0, "키타노 유리아", null, 0, null, 32, 8, 69, 0, 160, 300, null, null],
|
||||
[0, "후타바 안즈", null, 0, null, 67, 44, 90, 0, 160, 300, null, null, "나도 하메르도 행복하길"],
|
||||
[0, "히나노", null, 0, null, 66, 32, 73, 0, 160, 300, null, null, "이번생에는 행복하고 싶어"],
|
||||
[0, "히나노", null, 0, null, 66, 32, 73, 0, 160, 300, null, null, "히힛"],
|
||||
[0, "나츠세 유우", null, 0, null, 66, 30, 70, 0, 160, 300, null, null],
|
||||
[0, "크로노스 신", null, 0, null, 50, 15, 90, 0, 160, 300, null, null],
|
||||
[0, "프흐레", null, 0, null, 69, 24, 100, 0, 160, 300, null, null, "마법나라가 바라는 마법소녀란 말이지…"],
|
||||
[0, "크로노스 신", null, 0, null, 33, 15, 90, 0, 160, 300, null, null],
|
||||
[0, "프흐레", null, 0, null, 69, 24, 100, 0, 160, 300, null, null, "마법나라'가 원하는 마법소녀다운 마법소녀란 건 말이지. 여차할 때 주저없이 자기 자신을 희생할 수 있는 성인이야. 제대로 돼먹은 정신머리로는 못 해먹을 짓거리지."],
|
||||
[0, "나나하라 슈야", null, 0, null, 73, 72, 62, 0, 160, 300, null, null, "전세계의 어른들에게 선전포고 한다!"],
|
||||
[0, "타에구치유이치로", null, 0, null, 51, 63, 44, 0, 160, 300, null, null],
|
||||
[0, "카와다 소교", null, 0, null, 49, 70, 85, 0, 160, 300, null, null],
|
||||
@@ -246,12 +247,12 @@
|
||||
[0, "큐어 리프렛", null, 0, null, 71, 89, 72, 0, 160, 300, null, null],
|
||||
[0, "큐어 실프", null, 0, null, 83, 92, 88, 0, 160, 300, null, null],
|
||||
[0, "큐어 아네모스", null, 0, null, 69, 80, 55, 0, 160, 300, null, null],
|
||||
[0, "카마디야", null, 0, null, 85, 93, 55, 0, 160, 300, null, null, "크흐흐… 감히 인간 따위가!! 나에게 덤비다니 용서못한다!!"],
|
||||
[0, "카마디야", null, 0, null, 85, 93, 55, 0, 160, 300, null, null, "이번엔 방심하지 않고 인간들을 처리하겟다!"],
|
||||
[0, "토토리몬", null, 0, null, 69, 88, 44, 0, 160, 300, null, null, "모든것은 카마디야님의 부활을 위해서…."],
|
||||
[0, "카와리노", null, 0, null, 73, 91, 80, 0, 160, 300, null, null, "나를 그곳에 꺼내주신 카마디야 님을 위해 난 일한다!"],
|
||||
[0, "가마오", null, 0, null, 41, 65, 13, 0, 160, 300, null, null, "이씨 너무 배고파…"],
|
||||
[0, "밀키 로즈", null, 0, null, 64, 82, 52, 0, 160, 300, null, null],
|
||||
[0, "옐로우 미치", null, 0, null, 61, 80, 80, 0, 160, 300, null, null, "난 마법나라 외교부문의 부문장 옐로우 미치야"],
|
||||
[0, "옐로우 미치", null, 0, null, 61, 80, 80, 0, 160, 300, null, null, "후후… 모든건 모두의 행복을 위해서"],
|
||||
[0, "마왕팜", null, 0, null, 50, 90, 70, 0, 160, 300, null, null, "무지개? 어째서…!"],
|
||||
[0, "그림하트", null, 0, null, 74, 63, 41, 0, 160, 300, null, null, "목을 쳐라!!"],
|
||||
[0, "루다", null, 0, null, 62, 66, 62, 0, 160, 300, null, null, "널 좋아해 미우."],
|
||||
@@ -272,7 +273,7 @@
|
||||
[0, "유해", null, 0, null, 85, 87, 64, 0, 160, 300, null, null],
|
||||
[0, "유채", null, 0, null, 64, 71, 23, 0, 160, 300, null, null],
|
||||
[0, "유창", null, 0, null, 59, 68, 33, 0, 160, 300, null, null],
|
||||
[0, "타카이시 타케루", null, 0, null, 80, 92, 65, 0, 160, 300, null, "무쌍"],
|
||||
[0, "타카이시 타케루", null, 0, null, 80, 92, 65, 0, 160, 300, null, null],
|
||||
[0, "타카이시 히카리", null, 0, null, 31, 11, 90, 0, 160, 300, null, "인덕"],
|
||||
[0, "타카이시 노조미", null, 0, null, 82, 66, 81, 0, 160, 300, null, null],
|
||||
[0, "타카이시 미츠루", null, 0, null, 85, 51, 71, 0, 160, 300, null, null, "이 나라가 왜이리 망가져 버린걸까"],
|
||||
@@ -280,7 +281,7 @@
|
||||
[0, "유상호", null, 0, null, 39, 56, 44, 0, 160, 300, null, null, "쯧. 런애가 내 딸이라니 수치야"],
|
||||
[0, "서유현", null, 0, null, 42, 44, 60, 0, 160, 300, null, null, "하… 내가 교육을 잘못했구나"],
|
||||
[0, "오준", null, 0, null, 69, 12, 84, 0, 160, 300, null, null, "이 지역은 이제부터 내것이다!"],
|
||||
[10, "도니 버밀리언", null, 0, null, 48, 14, 66, 0, 160, 300, null, null],
|
||||
[10, "도니 버밀리언", null, 0, null, 48, 14, 66, 0, 160, 300, null, null, "레이너, 당신은 양심도 없습니까?"],
|
||||
[0, "모한다르", null, 0, null, 68, 81, 45, 0, 160, 300, null, null],
|
||||
[0, "월리엄 와이트", null, 0, null, 55, 64, 88, 0, 160, 300, null, null, "아니 나를 별명으로 부르지 말라고!"],
|
||||
[0, "도미니크 헥터", null, 0, null, 57, 69, 41, 0, 160, 300, null, null],
|
||||
@@ -296,7 +297,7 @@
|
||||
[0, "사야코", null, 0, null, 69, 75, 60, 0, 160, 300, null, null],
|
||||
[0, "미요가타노 나코", null, 0, null, 77, 55, 79, 0, 160, 300, null, null, "fucking doll!"],
|
||||
[0, "첼너 마우스", null, 0, null, 51, 85, 2, 0, 160, 300, null, null, "체르나는 그런거 싫단 말이야! 내꺼라고!"],
|
||||
[0, "페치카", null, 0, null, 68, 8, 80, 0, 160, 300, null, null],
|
||||
[0, "페치카", null, 0, null, 68, 8, 80, 0, 160, 300, null, null, "마법소녀끼리 정정당당하게 싸우면…… 크랑테일은 당신 같은 사람에게 지지 않아."],
|
||||
[0, "기타노 유리코", null, 0, null, 14, 9, 64, 0, 160, 300, null, null, "유키코는 참 의젓한 아이야."],
|
||||
[0, "니얀다 카멘", null, 0, null, 86, 85, 41, 0, 160, 300, null, null, "살려달라고 외치면 그 누구든 구할거야, 설사 적이라 할지라도"],
|
||||
[0, "니얀다 카렌", null, 0, null, 73, 88, 60, 0, 160, 300, null, null],
|
||||
@@ -318,9 +319,9 @@
|
||||
[0, "모노미야 세이나", null, 0, null, 77, 83, 41, 0, 160, 300, null, null, "어떤 유혹에도 빛을 잃지않는 깨끗한 마음 큐어 다이아!"],
|
||||
[0, "모노야마 유이", null, 0, null, 69, 85, 60, 0, 160, 300, null, null, "사랑하는 사람을 지키기 위한 진실한 마음 큐어 실린!"],
|
||||
[0, "루시에르", null, 0, null, 84, 72, 80, 0, 160, 300, null, null, "내 딸들은 행복했으면 좋겟어"],
|
||||
[0, "큐어 루프", null, 0, null, 63, 81, 40, 0, 160, 300, null, null, "감히… 내동생을 어둠의 가면으로 죽였겟다! 복수할거야! 로스쿨"],
|
||||
[0, "가제크", null, 0, null, 55, 79, 51, 0, 160, 300, null, null, "어…언니 사…살려줘!!"],
|
||||
[0, "큐어 가젯", null, 0, null, 67, 81, 55, 0, 160, 300, null, null, "어머니… 어머니의 원수 꼭 갚겠어요.. 우리를 버린 로스쿨에게 복수할 겁니다"],
|
||||
[0, "큐어 루프", null, 0, null, 63, 81, 40, 0, 160, 300, null, null, "우리는 왜 이런 직장에 충성한 걸까"],
|
||||
[0, "가제크", null, 0, null, 55, 79, 51, 0, 160, 300, null, null],
|
||||
[0, "큐어 가젯", null, 0, null, 67, 81, 55, 0, 160, 300, null, null, "어머니… 어머니의 원수 꼭 갚겠어요.. 우리를 버린 그들에게 복수할 겁니다."],
|
||||
[0, "큐어 루비", null, 0, null, 73, 79, 59, 0, 160, 300, null, null, "언니 우리 같이 힘내자"],
|
||||
[0, "루미에르", null, 0, null, 80, 81, 64, 0, 160, 300, null, null],
|
||||
[0, "토모야마 리에리", null, 0, null, 92, 55, 91, 0, 160, 300, null, null],
|
||||
@@ -333,12 +334,12 @@
|
||||
[0, "에트리카 에슈", null, 0, null, 84, 53, 82, 0, 160, 300, null, null, "모든것은, 나를 이렇게 만든 세상에 복수하기 위해!"],
|
||||
[0, "유가을", null, 0, null, 87, 95, 60, 0, 160, 300, null, null],
|
||||
[0, "츠바이 유시", null, 0, null, 43, 63, 77, 0, 160, 300, null, null],
|
||||
[0, "크람베리", null, 0, null, 82, 93, 51, 0, 160, 300, null, null],
|
||||
[0, "파브", null, 0, null, 41, 10, 78, 0, 160, 300, null, null],
|
||||
[0, "파르", null, 0, null, 43, 10, 88, 0, 160, 300, null, null],
|
||||
[0, "크람베리", null, 0, null, 82, 93, 51, 0, 160, 300, null, null, "전 숲의 음악가 크람베리, 마법소녀를 하고 있습니다."],
|
||||
[0, "파브", null, 0, null, 41, 10, 78, 0, 160, 300, null, null, "지금부터 이 마을의 마법소녀를 반으로 줄여야 합니다퐁!"],
|
||||
[0, "파르", null, 0, null, 43, 10, 88, 0, 160, 300, null, null, "역시 스노우화이트는 내가 없으면 안되퐁…"],
|
||||
[0, "타이요 아카리", null, 0, null, 81, 92, 77, 0, 160, 300, null, null, "나 잊지 않을테니까, 후유나에 대해 절대로 잊지않을 테니까"],
|
||||
[0, "신자키 후유나", null, 0, null, 74, 79, 55, 0, 160, 300, null, null, "안녕 아카리, 아카리와 만나 행복했어"],
|
||||
[0, "크랑테일", null, 0, null, 77, 81, 55, 0, 160, 300, null, null],
|
||||
[0, "크랑테일", null, 0, null, 77, 81, 55, 0, 160, 300, null, null, "라즐리느와 페치카가 살려준 난...... 못 죽어"],
|
||||
[0, "타카이시 히모리", null, 0, null, 69, 37, 89, 0, 160, 300, null, null, "내 나라, 부모님의 나라 내가 지킬거야"],
|
||||
[0, "사카나기 아야나", null, 0, null, 73, 89, 53, 0, 160, 300, null, null, "난 스윔스윔, 잘부탁해"],
|
||||
[0, "사카나기 이즈카", null, 0, null, 77, 82, 60, 0, 160, 300, null, null, "난 사야코야"],
|
||||
@@ -359,8 +360,8 @@
|
||||
[0, "히노모토 아카리", null, 0, null, 70, 17, 81, 0, 160, 300, null, null],
|
||||
[0, "아오누마 키리하", null, 0, null, 84, 67, 85, 0, 160, 300, null, null],
|
||||
[0, "츠루기 젠지로", null, 0, null, 56, 69, 40, 0, 160, 300, null, null],
|
||||
[0, "향상성", null, 0, null, 82, 77, 90, 0, 160, 300, null, null],
|
||||
[0, "이그드라실", null, 0, null, 80, 80, 77, 0, 160, 300, null, null, "저는 디지털 월드의 평화를 바라는자,"],
|
||||
[0, "향상성", null, 0, null, 82, 77, 90, 0, 160, 300, null, null, "저는 디지털 월드의 평화를 바라는 자,"],
|
||||
[0, "이그드라실", null, 0, null, 80, 80, 77, 0, 160, 300, null, null, "어머니와 향상성을 이해할수가 없군요"],
|
||||
[0, "렌", null, 0, null, 89, 100, 42, 0, 160, 300, null, "무쌍"],
|
||||
[0, "네네네", null, 0, null, 63, 55, 89, 0, 160, 300, null, null],
|
||||
[0, "이소긴&야도간", null, 0, null, 58, 77, 39, 0, 160, 300, null, null],
|
||||
@@ -377,7 +378,8 @@
|
||||
[0, "큐어 리히트", null, 0, null, 89, 93, 74, 0, 160, 300, null, null],
|
||||
[0, "다크 드림", null, 0, null, 77, 94, 76, 0, 160, 300, null, null],
|
||||
[0, "큐어 프렌디", null, 0, null, 86, 83, 77, 0, 160, 300, null, null],
|
||||
[0, "큐어 릴리안", null, 0, null, 87, 82, 80, 0, 160, 300, null, null]
|
||||
[0, "큐어 릴리안", null, 0, null, 87, 82, 80, 0, 160, 300, null, null],
|
||||
[0, "마시로 리마", null, 0, null, 86, 79, 82, 0, 160, 300, null, null]
|
||||
],
|
||||
"general_ex":[
|
||||
|
||||
|
||||
@@ -0,0 +1,182 @@
|
||||
{
|
||||
"title":"【공백지】 다병종",
|
||||
"startYear":180,
|
||||
"map":{
|
||||
"mapName":"miniche",
|
||||
"unitSet":"event_more_crewtype"
|
||||
},
|
||||
"history":[
|
||||
],
|
||||
"const": {
|
||||
"joinRuinedNPCProp":0,
|
||||
"npcBanMessageProb":1,
|
||||
"availableSpecialWar":[
|
||||
"che_귀병", "che_신산", "che_환술", "che_집중", "che_신중", "che_반계",
|
||||
"che_보병", "che_궁병", "che_기병", "che_공성",
|
||||
"che_돌격", "che_무쌍", "che_위압",
|
||||
"che_저격", "che_필살", "che_징병", "che_의술", "che_격노", "che_척사"
|
||||
],
|
||||
"availableChiefCommand":{
|
||||
"휴식" : [
|
||||
"휴식"
|
||||
],
|
||||
"인사" : [
|
||||
"che_발령",
|
||||
"che_포상",
|
||||
"che_몰수",
|
||||
"che_부대탈퇴지시"
|
||||
],
|
||||
"외교" : [
|
||||
"che_물자원조",
|
||||
"che_불가침제의",
|
||||
"che_선전포고",
|
||||
"che_종전제의",
|
||||
"che_불가침파기제의"
|
||||
],
|
||||
"특수" : [
|
||||
"che_초토화",
|
||||
"che_천도",
|
||||
"che_증축",
|
||||
"che_감축"
|
||||
],
|
||||
"전략" : [
|
||||
"che_필사즉생",
|
||||
"che_백성동원",
|
||||
"che_수몰",
|
||||
"che_허보",
|
||||
"che_의병모집",
|
||||
"che_이호경식",
|
||||
"che_급습",
|
||||
"che_피장파장"
|
||||
],
|
||||
"기타" : [
|
||||
"che_국기변경",
|
||||
"che_국호변경"
|
||||
],
|
||||
"연구": [
|
||||
"event_대검병연구",
|
||||
"event_극병연구",
|
||||
"event_화시병연구",
|
||||
"event_원융노병연구",
|
||||
"event_산저병연구",
|
||||
"event_음귀병연구",
|
||||
"event_무희연구",
|
||||
"event_상병연구",
|
||||
"event_화륜차연구"
|
||||
]
|
||||
},
|
||||
"allItems":{
|
||||
"horse":{
|
||||
"che_명마_01_노기":0, "che_명마_02_조랑":0, "che_명마_03_노새":0,
|
||||
"che_명마_04_나귀":0, "che_명마_05_갈색마":0, "che_명마_06_흑색마":0,
|
||||
|
||||
"che_명마_07_백마" : 2, "che_명마_07_기주마" : 2, "che_명마_07_오환마" : 2, "che_명마_07_백상" : 2,
|
||||
"che_명마_08_양주마" : 2, "che_명마_08_흉노마" : 2, "che_명마_09_과하마" : 2, "che_명마_09_의남백마" : 2,
|
||||
"che_명마_10_대완마" : 2, "che_명마_10_옥추마" : 2, "che_명마_11_서량마" : 2, "che_명마_11_화종마" : 2,
|
||||
"che_명마_12_사륜거" : 2, "che_명마_12_옥란백용구": 2, "che_명마_13_절영" : 2, "che_명마_13_적로" : 2,
|
||||
"che_명마_14_적란마" : 2, "che_명마_14_조황비전" : 2, "che_명마_15_한혈마" : 2, "che_명마_15_적토마" : 2
|
||||
},
|
||||
"weapon":{
|
||||
"che_무기_01_단도":0, "che_무기_02_단궁":0, "che_무기_03_단극":0,
|
||||
"che_무기_04_목검":0, "che_무기_05_죽창":0, "che_무기_06_소부":0,
|
||||
|
||||
"che_무기_07_동추":2, "che_무기_07_철편":2, "che_무기_07_철쇄":2, "che_무기_07_맥궁":2,
|
||||
"che_무기_08_유성추":2, "che_무기_08_철질여골":2, "che_무기_09_쌍철극":2, "che_무기_09_동호비궁":2,
|
||||
"che_무기_10_삼첨도":2, "che_무기_10_대부":2, "che_무기_11_고정도":2, "che_무기_11_이광궁":2,
|
||||
"che_무기_12_철척사모":2, "che_무기_12_칠성검":2, "che_무기_13_사모":2, "che_무기_13_양유기궁":2,
|
||||
"che_무기_14_언월도":2, "che_무기_14_방천화극":2, "che_무기_15_청홍검":2, "che_무기_15_의천검":2
|
||||
},
|
||||
"book":{
|
||||
"che_서적_01_효경전":0, "che_서적_02_회남자":0, "che_서적_03_변도론":0,
|
||||
"che_서적_04_건상역주":0, "che_서적_05_여씨춘추":0, "che_서적_06_사민월령":0,
|
||||
|
||||
"che_서적_07_위료자":2, "che_서적_07_사마법":2, "che_서적_07_한서":2, "che_서적_07_논어":2,
|
||||
"che_서적_08_전론":2, "che_서적_08_사기":2, "che_서적_09_장자":2, "che_서적_09_역경":2,
|
||||
"che_서적_10_시경":2, "che_서적_10_구국론":2, "che_서적_11_상군서":2, "che_서적_11_춘추전":2,
|
||||
"che_서적_12_산해경":2, "che_서적_12_맹덕신서":2, "che_서적_13_관자":2, "che_서적_13_병법24편":2,
|
||||
"che_서적_14_한비자":2, "che_서적_14_오자병법":2, "che_서적_15_노자":2, "che_서적_15_손자병법":2
|
||||
},
|
||||
"item":{
|
||||
"che_치료_환약":0, "che_저격_수극":0, "che_사기_탁주":0,
|
||||
"che_훈련_청주":0, "che_계략_이추":0, "che_계략_향낭":0,
|
||||
|
||||
"event_전투특기_격노":0, "event_전투특기_공성":0, "event_전투특기_궁병":0,
|
||||
"event_전투특기_귀병":0, "event_전투특기_기병":0, "event_전투특기_돌격":0, "event_전투특기_무쌍":0,
|
||||
"event_전투특기_반계":0, "event_전투특기_보병":0, "event_전투특기_신산":0, "event_전투특기_신중":0,
|
||||
"event_전투특기_위압":0, "event_전투특기_의술":0, "event_전투특기_저격":0, "event_전투특기_집중":0,
|
||||
"event_전투특기_징병":0, "event_전투특기_척사":0, "event_전투특기_필살":0, "event_전투특기_환술":0
|
||||
}
|
||||
}
|
||||
},
|
||||
"events":[
|
||||
[
|
||||
"month", 1000,
|
||||
["or", ["Date", "==", null, 12], ["Date", "==", null, 6]],
|
||||
["CreateManyNPC", 10, 10],
|
||||
["DeleteEvent"]
|
||||
],
|
||||
[
|
||||
"month", 1000,
|
||||
["Date", "==", 181, 1],
|
||||
["ChangeCity", "occupied", {
|
||||
"trade":100
|
||||
}],
|
||||
["DeleteEvent"]
|
||||
],
|
||||
[
|
||||
"month", 1000,
|
||||
["Date", "==", 181, 7],
|
||||
["ChangeCity", "occupied", {
|
||||
"trade":100
|
||||
}],
|
||||
["DeleteEvent"]
|
||||
],
|
||||
[
|
||||
"month", 1000,
|
||||
["Date", "==", 182, 1],
|
||||
["ChangeCity", "occupied", {
|
||||
"trade":100
|
||||
}],
|
||||
["DeleteEvent"]
|
||||
],
|
||||
[
|
||||
"month", 1000,
|
||||
["Date", "==", 182, 7],
|
||||
["ChangeCity", "occupied", {
|
||||
"trade":100
|
||||
}],
|
||||
["DeleteEvent"]
|
||||
],
|
||||
[
|
||||
"destroy_nation", 1000,
|
||||
["and",
|
||||
["Date", ">=", 183, 1],
|
||||
["RemainNation", "==", 1]
|
||||
],
|
||||
["BlockScoutAction"],
|
||||
["DeleteEvent"]
|
||||
],
|
||||
[
|
||||
"month", 1000,
|
||||
["Date", "==", 181, 1],
|
||||
["RaiseNPCNation"],
|
||||
["DeleteEvent"]
|
||||
],
|
||||
[
|
||||
"month", 999,
|
||||
["Date", "==", 181, 1],
|
||||
["OpenNationBetting", 4, 5000],
|
||||
["OpenNationBetting", 1, 2000],
|
||||
["DeleteEvent"]
|
||||
],
|
||||
[
|
||||
"month", 999,
|
||||
["and",
|
||||
["Date", ">=", 183, 1],
|
||||
["RemainNation", "<=", 8]
|
||||
],
|
||||
["OpenNationBetting", 1, 1000],
|
||||
["DeleteEvent"]
|
||||
]
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,211 @@
|
||||
{
|
||||
"title":"【공백지】 무한대흥 ",
|
||||
"startYear":180,
|
||||
"map":{
|
||||
"mapName":"miniche"
|
||||
},
|
||||
"history":[
|
||||
"<C>●</>180년 1월:<L><b>【이벤트】</b></>많은 제한치가 더 높게 풀려있습니다."
|
||||
],
|
||||
"stat": {
|
||||
"total": 200,
|
||||
"min": 20,
|
||||
"max": 100,
|
||||
"chiefMin": 20
|
||||
},
|
||||
"const": {
|
||||
"joinRuinedNPCProp":0,
|
||||
"npcBanMessageProb":0.005,
|
||||
"scenarioEffect": "event_MoreEffect",
|
||||
"availableInstantAction": {
|
||||
"instantRetreat": true
|
||||
},
|
||||
"defaultMaxGeneral": 800,
|
||||
"basePopIncreaseAmount": 10000,
|
||||
"maxTechLevel": 15,
|
||||
"upgradeLimit": 20,
|
||||
"initialAllowedTechLevel": 2,
|
||||
"expandCityPopIncreaseAmount": 150000,
|
||||
"expandCityDevelIncreaseAmount": 3000,
|
||||
"expandCityWallIncreaseAmount": 3000,
|
||||
"defaultCityWall": 3000,
|
||||
"maxResourceActionAmount": 30000,
|
||||
"resourceActionAmountGuide": [
|
||||
100, 200, 300, 400, 500, 600, 700, 800, 900, 1000,
|
||||
1200, 1500, 2000, 2500, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000,
|
||||
12000, 15000, 20000, 25000, 30000
|
||||
],
|
||||
"allItems": {
|
||||
"horse" : {
|
||||
"che_명마_01_노기" : 0, "che_명마_02_조랑" : 0, "che_명마_03_노새" : 0,
|
||||
"che_명마_04_나귀" : 0, "che_명마_05_갈색마" : 0, "che_명마_06_흑색마" : 0,
|
||||
|
||||
"che_명마_07_백마" : 4, "che_명마_07_기주마" : 4, "che_명마_07_오환마" : 4, "che_명마_07_백상" : 4,
|
||||
"che_명마_08_양주마" : 4, "che_명마_08_흉노마" : 4, "che_명마_09_과하마" : 4, "che_명마_09_의남백마" : 4,
|
||||
"che_명마_10_대완마" : 4, "che_명마_10_옥추마" : 4, "che_명마_11_서량마" : 4, "che_명마_11_화종마" : 4,
|
||||
"che_명마_12_사륜거" : 4, "che_명마_12_옥란백용구": 4, "che_명마_13_절영" : 4, "che_명마_13_적로" : 4,
|
||||
"che_명마_14_적란마" : 4, "che_명마_14_조황비전" : 4, "che_명마_15_한혈마" : 4, "che_명마_15_적토마" : 4
|
||||
},
|
||||
"weapon" : {
|
||||
"che_무기_01_단도" : 0, "che_무기_02_단궁" : 0, "che_무기_03_단극" : 0,
|
||||
"che_무기_04_목검" : 0, "che_무기_05_죽창" : 0, "che_무기_06_소부" : 0,
|
||||
|
||||
"che_무기_07_동추" : 4, "che_무기_07_철편" : 4, "che_무기_07_철쇄" : 4, "che_무기_07_맥궁" : 4,
|
||||
"che_무기_08_유성추" : 4, "che_무기_08_철질여골" : 4, "che_무기_09_쌍철극" : 4, "che_무기_09_동호비궁" : 4,
|
||||
"che_무기_10_삼첨도" : 4, "che_무기_10_대부" : 4, "che_무기_11_고정도" : 4, "che_무기_11_이광궁" : 4,
|
||||
"che_무기_12_철척사모" : 4, "che_무기_12_칠성검" : 4, "che_무기_13_사모" : 4, "che_무기_13_양유기궁" : 4,
|
||||
"che_무기_14_언월도" : 4, "che_무기_14_방천화극" : 4, "che_무기_15_청홍검" : 4, "che_무기_15_의천검" : 4
|
||||
},
|
||||
"book" : {
|
||||
"che_서적_01_효경전" : 0, "che_서적_02_회남자" : 0, "che_서적_03_변도론" : 0,
|
||||
"che_서적_04_건상역주" : 0, "che_서적_05_여씨춘추" : 0, "che_서적_06_사민월령" : 0,
|
||||
|
||||
"che_서적_07_위료자" : 4, "che_서적_07_사마법" : 4, "che_서적_07_한서" : 4, "che_서적_07_논어" : 4,
|
||||
"che_서적_08_전론" : 4, "che_서적_08_사기" : 4, "che_서적_09_장자" : 4, "che_서적_09_역경" : 4,
|
||||
"che_서적_10_시경" : 4, "che_서적_10_구국론" : 4, "che_서적_11_상군서" : 4, "che_서적_11_춘추전" : 4,
|
||||
"che_서적_12_산해경" : 4, "che_서적_12_맹덕신서" : 4, "che_서적_13_관자" : 4, "che_서적_13_병법24편" : 4,
|
||||
"che_서적_14_한비자" : 4, "che_서적_14_오자병법" : 4, "che_서적_15_노자" : 4, "che_서적_15_손자병법" : 4
|
||||
},
|
||||
"item": {
|
||||
"che_치료_환약": 0,
|
||||
"che_저격_수극": 0,
|
||||
"che_사기_탁주": 0,
|
||||
"che_훈련_청주": 0,
|
||||
"che_계략_이추": 0,
|
||||
"che_계략_향낭": 0,
|
||||
|
||||
"event_전투특기_격노": 0,
|
||||
"event_전투특기_견고": 0,
|
||||
"event_전투특기_공성": 0,
|
||||
"event_전투특기_궁병": 0,
|
||||
"event_전투특기_귀병": 0,
|
||||
"event_전투특기_기병": 0,
|
||||
"event_전투특기_돌격": 0,
|
||||
"event_전투특기_무쌍": 0,
|
||||
"event_전투특기_반계": 0,
|
||||
"event_전투특기_보병": 0,
|
||||
"event_전투특기_신산": 0,
|
||||
"event_전투특기_신중": 0,
|
||||
"event_전투특기_위압": 0,
|
||||
"event_전투특기_의술": 0,
|
||||
"event_전투특기_저격": 0,
|
||||
"event_전투특기_집중": 0,
|
||||
"event_전투특기_징병": 0,
|
||||
"event_전투특기_척사": 0,
|
||||
"event_전투특기_필살": 0,
|
||||
"event_전투특기_환술": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"initialEvents":[
|
||||
[
|
||||
true,
|
||||
["ChangeCity", ["cities", "낙양", "성도", "건업", "업", "장안", "허창", "양양"], {
|
||||
"pop_max": "+300000",
|
||||
"agri_max": "+6000",
|
||||
"comm_max": "+6000",
|
||||
"secu_max": "+5000",
|
||||
"def_max": "+6000",
|
||||
"wall_max": "+6000"
|
||||
}],
|
||||
["ChangeCity", ["cities", "시상", "수춘", "한중", "남피", "위례", "북평", "강릉", "완", "장사"], {
|
||||
"pop_max": "+250000",
|
||||
"agri_max": "+5000",
|
||||
"comm_max": "+5000",
|
||||
"secu_max": "+4000",
|
||||
"def_max": "+5000",
|
||||
"wall_max": "+5000"
|
||||
}],
|
||||
["ChangeCity", ["cities", "오", "하비", "복양", "웅진", "강주", "무도", "국내", "진류", "계양", "계림", "계", "무위", "제남", "남해", "덕양", "하내", "상용"], {
|
||||
"pop_max": "+200000",
|
||||
"agri_max": "+4000",
|
||||
"comm_max": "+4000",
|
||||
"secu_max": "+3000",
|
||||
"def_max": "+4000",
|
||||
"wall_max": "+4000"
|
||||
}],
|
||||
["ChangeCity", ["cities", "초", "운남", "대", "하동", "무릉", "교지", "단양", "영안", "북해", "건녕", "강하", "진양", "평원", "회계", "천수", "평양", "요동", "거록", "여강", "패", "자동", "광릉", "장가", "영릉", "월수", "건안", "신야", "상동", "안정", "여남", "홍농", "주제"], {
|
||||
"pop_max": "+150000",
|
||||
"agri_max": "+3000",
|
||||
"comm_max": "+3000",
|
||||
"secu_max": "+2000",
|
||||
"def_max": "+3000",
|
||||
"wall_max": "+3000"
|
||||
}],
|
||||
["ChangeCity", ["cities", "남만", "산월", "오환", "강", "왜", "흉노"], {
|
||||
"pop_max": "+100000",
|
||||
"agri_max": "+2000",
|
||||
"comm_max": "+2000",
|
||||
"secu_max": "+1000",
|
||||
"def_max": "+2000",
|
||||
"wall_max": "+2000"
|
||||
}],
|
||||
["ChangeCity", ["cities", "합비", "이릉", "오장원", "호로", "탐라", "적벽"], {
|
||||
"pop_max": "+100000",
|
||||
"agri_max": "+1000",
|
||||
"comm_max": "+1000",
|
||||
"secu_max": "+1000",
|
||||
"def_max": "+1000",
|
||||
"wall_max": "+1000"
|
||||
}],
|
||||
["ChangeCity", "free", {
|
||||
"pop":"50%"
|
||||
}]
|
||||
]
|
||||
],
|
||||
"events":[
|
||||
[
|
||||
"month", 1000,
|
||||
["or", ["Date", "==", null, 12], ["Date", "==", null, 6]],
|
||||
["CreateManyNPC", 15, 10],
|
||||
["DeleteEvent"]
|
||||
],
|
||||
[
|
||||
"month", 1000,
|
||||
["Date", "==", 181, 1],
|
||||
["RaiseNPCNation"],
|
||||
["DeleteEvent"]
|
||||
],
|
||||
[
|
||||
"month", 999,
|
||||
["Date", "==", 181, 1],
|
||||
["OpenNationBetting", 4, 5000],
|
||||
["OpenNationBetting", 1, 2000],
|
||||
["DeleteEvent"]
|
||||
],
|
||||
[
|
||||
"month", 1000,
|
||||
["Date", "==", 182, 1],
|
||||
["ChangeCity", "occupied", {
|
||||
"trade":100
|
||||
}],
|
||||
["DeleteEvent"]
|
||||
],
|
||||
[
|
||||
"month", 1000,
|
||||
["Date", "==", 182, 7],
|
||||
["ChangeCity", "occupied", {
|
||||
"trade":100
|
||||
}],
|
||||
["DeleteEvent"]
|
||||
],
|
||||
[
|
||||
"month", 999,
|
||||
["and",
|
||||
["Date", ">=", 183, 1],
|
||||
["RemainNation", "<=", 8]
|
||||
],
|
||||
["OpenNationBetting", 1, 1000],
|
||||
["DeleteEvent"]
|
||||
],
|
||||
[
|
||||
"destroy_nation", 1000,
|
||||
["and",
|
||||
["Date", ">=", 183, 1],
|
||||
["RemainNation", "==", 1]
|
||||
],
|
||||
["BlockScoutAction"],
|
||||
["DeleteEvent"]
|
||||
]
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,451 @@
|
||||
<?php
|
||||
|
||||
namespace sammo;
|
||||
|
||||
use sammo\Enums\NationAuxKey;
|
||||
use sammo\GameUnitConstraint\Impossible;
|
||||
use sammo\GameUnitConstraint\ReqChief;
|
||||
use sammo\GameUnitConstraint\ReqCities;
|
||||
use sammo\GameUnitConstraint\ReqCitiesWithCityLevel;
|
||||
use sammo\GameUnitConstraint\ReqHighLevelCities;
|
||||
use sammo\GameUnitConstraint\ReqMinRelYear;
|
||||
use sammo\GameUnitConstraint\ReqNotChief;
|
||||
use sammo\GameUnitConstraint\ReqRegions;
|
||||
use sammo\GameUnitConstraint\ReqTech;
|
||||
use sammo\GameUnitConstraint\ReqNationAux;
|
||||
|
||||
class GameUnitConst extends GameUnitConstBase
|
||||
{
|
||||
protected static function getBuildData(): array {
|
||||
return [
|
||||
[
|
||||
1000, self::T_CASTLE, '성벽',
|
||||
100, 100, 7, 0, 0, 99, 9,
|
||||
[new Impossible()],
|
||||
[], // 성벽은 공격할 수 없다.
|
||||
[self::T_FOOTMAN=>1.2],
|
||||
['성벽입니다.','생성할 수 없습니다.'],
|
||||
null, ['che_선제사격시도', 'che_선제사격발동'], null
|
||||
],
|
||||
|
||||
[
|
||||
1100, self::T_FOOTMAN, '보병',
|
||||
100, 150, 7, 10, 0, 9, 9,
|
||||
[],
|
||||
[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],
|
||||
['표준적인 보병입니다.','보병은 방어특화이며,','상대가 회피하기 어렵습니다.'],
|
||||
null, ['che_방어력증가5p'], null
|
||||
],
|
||||
[
|
||||
1101, self::T_FOOTMAN, '청주병',
|
||||
100, 200, 7, 10, 0, 10, 11,
|
||||
[new ReqTech(1000), new ReqRegions('중원')],
|
||||
[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],
|
||||
['저렴하고 튼튼합니다.'],
|
||||
null, ['che_방어력증가5p'], null
|
||||
],
|
||||
[
|
||||
1102, self::T_FOOTMAN, '수병',
|
||||
150, 150, 7, 10, 0, 11, 10,
|
||||
[new ReqTech(1000), new ReqRegions('오월')],
|
||||
[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],
|
||||
['저렴하고 강력합니다.'],
|
||||
null, ['che_방어력증가5p'], null
|
||||
],
|
||||
[
|
||||
1103, self::T_FOOTMAN, '자객병',
|
||||
100, 150, 8, 20, 0, 10, 10,
|
||||
[new ReqTech(2000), new ReqCities('저')],
|
||||
[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],
|
||||
['은밀하고 날쌥니다.'],
|
||||
null, ['che_방어력증가5p'], null
|
||||
],
|
||||
[
|
||||
1104, self::T_FOOTMAN, '근위병',
|
||||
150, 200, 7, 10, 0, 12, 12,
|
||||
[new ReqTech(3000), new ReqCities('낙양')],
|
||||
[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],
|
||||
['최강의 보병입니다.'],
|
||||
null, ['che_방어력증가5p'], null
|
||||
],
|
||||
[
|
||||
1105, self::T_FOOTMAN, '등갑병',
|
||||
100, 225, 7, 5, 0, 13, 10,
|
||||
[new ReqTech(1000), new ReqRegions('남중')],
|
||||
[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],
|
||||
['등갑을 두른 보병입니다.'],
|
||||
null, ['che_방어력증가5p'], null
|
||||
],
|
||||
[
|
||||
1106, self::T_FOOTMAN, '백이병',
|
||||
175, 175, 7, 5, 0, 13, 11,
|
||||
[new ReqTech(3000), new ReqCities('성도')],
|
||||
[self::T_ARCHER=>1.1, self::T_CAVALRY=>0.9, self::T_SIEGE=>1.1],
|
||||
[self::T_ARCHER=>0.9, self::T_CAVALRY=>1.1, self::T_SIEGE=>0.9],
|
||||
['정예 보병입니다. 불리한 싸움도 버텨냅니다.'],
|
||||
null, ['che_방어력증가5p'], null
|
||||
],
|
||||
[
|
||||
91100, self::T_FOOTMAN, '대검병',
|
||||
150, 225, 7, 10, 0, 13, 13,
|
||||
[new ReqTech(4000), new ReqCitiesWithCityLevel(8, '완'), new ReqNationAux(NationAuxKey::can_대검병사용, '==', 1)],
|
||||
[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],
|
||||
['대형 검을 사용합니다.'],
|
||||
null, ['che_방어력증가5p'], null
|
||||
],
|
||||
[
|
||||
91101, self::T_FOOTMAN, '강습병',
|
||||
175, 200, 7, 10, 0, 13, 13,
|
||||
[new ReqTech(4000), new ReqCitiesWithCityLevel(8, '북평')],
|
||||
[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],
|
||||
['철퇴를 사용합니다.'],
|
||||
null, ['che_방어력증가5p'], null
|
||||
],
|
||||
[
|
||||
91102, self::T_FOOTMAN, '극병',
|
||||
250, 150, 7, 0, 0, 18, 18,
|
||||
[new ReqTech(5000), new ReqCitiesWithCityLevel(8, '저'), new ReqNationAux(NationAuxKey::can_극병사용, '==', 1)],
|
||||
[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],
|
||||
['긴 극을 사용합니다.'],
|
||||
null, ['che_방어력증가5p'], null
|
||||
],
|
||||
|
||||
[
|
||||
1200, self::T_ARCHER, '궁병',
|
||||
100, 100, 7, 10, 0, 10, 10,
|
||||
[],
|
||||
[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],
|
||||
['표준적인 궁병입니다.','궁병은 선제사격을 하는 병종입니다.'],
|
||||
null, ['che_선제사격시도', 'che_선제사격발동'], null
|
||||
],
|
||||
[
|
||||
1201, self::T_ARCHER, '궁기병',
|
||||
100, 100, 8, 20, 0, 11, 12,
|
||||
[new ReqTech(1000), new ReqRegions('동이')],
|
||||
[self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.9, self::T_SIEGE=>1.2],
|
||||
[self::T_CAVALRY=>0.8, self::T_FOOTMAN=>1.1, self::T_SIEGE=>0.8],
|
||||
['말을 타고 잘 피합니다. 특히 다른 궁병보다 보병에게 조금 더 강합니다.'],
|
||||
null, ['che_선제사격시도', 'che_선제사격발동'], null
|
||||
],
|
||||
[
|
||||
1202, self::T_ARCHER, '연노병',
|
||||
150, 100, 8, 10, 0, 12, 11,
|
||||
[new ReqTech(1000), new ReqRegions('서촉')],
|
||||
[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],
|
||||
['화살을 연사합니다.'],
|
||||
null, ['che_선제사격시도', 'che_선제사격발동'], null
|
||||
],
|
||||
[
|
||||
1203, self::T_ARCHER, '강궁병',
|
||||
150, 150, 7, 10, 0, 13, 13,
|
||||
[new ReqTech(3000), new ReqCities('양양')],
|
||||
[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],
|
||||
['강건한 궁병입니다.'],
|
||||
null, ['che_선제사격시도', 'che_선제사격발동'], null
|
||||
],
|
||||
[
|
||||
1204, self::T_ARCHER, '석궁병',
|
||||
200, 100, 7, 10, 0, 13, 13,
|
||||
[new ReqTech(3000), new ReqCities('건업')],
|
||||
[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],
|
||||
['강력한 화살을 쏩니다.'],
|
||||
null, ['che_선제사격시도', 'che_선제사격발동'], null
|
||||
],
|
||||
[
|
||||
91200, self::T_ARCHER, '화랑',
|
||||
150, 150, 8, 25, 0, 14, 14,
|
||||
[new ReqTech(4000), new ReqCitiesWithCityLevel(8, '위례')],
|
||||
[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],
|
||||
['궁술 실력이 뛰어납니다.'],
|
||||
null, ['che_선제사격시도', 'che_선제사격발동'], null
|
||||
],
|
||||
[
|
||||
91201, self::T_ARCHER, '화시병',
|
||||
225, 100, 7, 10, 0, 14, 14,
|
||||
[new ReqTech(4000), new ReqCitiesWithCityLevel(8, '장사'), new ReqNationAux(NationAuxKey::can_화시병사용, '==', 1)],
|
||||
[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],
|
||||
['불이 붙은 화살을 날립니다.'],
|
||||
null, ['che_선제사격시도', 'che_선제사격발동'], null
|
||||
],
|
||||
[
|
||||
91202, self::T_ARCHER, '원융노병',
|
||||
250, 100, 7, 10, 0, 20, 19,
|
||||
[new ReqTech(5000), new ReqCitiesWithCityLevel(8, '흉노'), new ReqNationAux(NationAuxKey::can_원융노병사용, '==', 1)],
|
||||
[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],
|
||||
['먼 거리에서 적을 제압합니다.'],
|
||||
null, ['che_선제사격시도', 'che_선제사격발동'], null
|
||||
],
|
||||
|
||||
[
|
||||
1300, self::T_CAVALRY, '기병',
|
||||
150, 100, 7, 5, 0, 11, 11,
|
||||
[],
|
||||
[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],
|
||||
['표준적인 기병입니다.','기병은 공격특화입니다.'],
|
||||
null, ['che_기병병종전투'], null
|
||||
],
|
||||
[
|
||||
1301, self::T_CAVALRY, '백마병',
|
||||
200, 100, 7, 5, 0, 12, 13,
|
||||
[new ReqTech(1000), new ReqRegions('하북')],
|
||||
[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],
|
||||
['백마의 위용을 보여줍니다.'],
|
||||
null, ['che_기병병종전투'], null
|
||||
],
|
||||
[
|
||||
1302, self::T_CAVALRY, '중장기병',
|
||||
150, 150, 7, 5, 0, 13, 12,
|
||||
[new ReqTech(1000), new ReqRegions('서북')],
|
||||
[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],
|
||||
['갑주를 두른 기병입니다.'],
|
||||
null, ['che_기병병종전투'], null
|
||||
],
|
||||
[
|
||||
1303, self::T_CAVALRY, '돌격기병',
|
||||
200, 100, 8, 5, 0, 13, 11,
|
||||
[new ReqTech(2000), new ReqCities('흉노')],
|
||||
[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],
|
||||
['저돌적으로 공격합니다.'],
|
||||
null, ['che_기병병종전투'], null
|
||||
],
|
||||
[
|
||||
1304, self::T_CAVALRY, '철기병',
|
||||
100, 250, 7, 5, 0, 11, 13,
|
||||
[new ReqTech(2000), new ReqCities('강')],
|
||||
[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],
|
||||
['철갑을 두른 기병입니다.'],
|
||||
null, ['che_기병병종전투'], null
|
||||
],
|
||||
[
|
||||
1305, self::T_CAVALRY, '수렵기병',
|
||||
150, 100, 8, 15, 0, 12, 12,
|
||||
[new ReqTech(2000), new ReqCities('산월')],
|
||||
[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],
|
||||
['날쎄고 빠른 기병입니다.'],
|
||||
null, ['che_기병병종전투'], null
|
||||
],
|
||||
[
|
||||
1306, self::T_CAVALRY, '맹수병',
|
||||
250, 175, 6, 0, 0, 16, 16,
|
||||
[new ReqTech(2000), new ReqCities('남만')],
|
||||
[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],
|
||||
['어느 누구보다 강력합니다.'],
|
||||
null, ['che_기병병종전투'], null
|
||||
],
|
||||
[
|
||||
1307, self::T_CAVALRY, '호표기병',
|
||||
200, 150, 7, 5, 0, 14, 14,
|
||||
[new ReqTech(3000), new ReqCities('허창')],
|
||||
[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],
|
||||
['정예 기병입니다.'],
|
||||
null, ['che_기병병종전투'], null
|
||||
],
|
||||
[
|
||||
91300, self::T_CAVALRY, '양마기병',
|
||||
200, 175, 7, 5, 0, 15, 15,
|
||||
[new ReqTech(4000), new ReqCitiesWithCityLevel(8, '한중')],
|
||||
[self::T_FOOTMAN=>1.1, self::T_ARCHER=>0.9, self::T_SIEGE=>1.1],
|
||||
[self::T_FOOTMAN=>0.9, self::T_ARCHER=>1.1, self::T_SIEGE=>0.9],
|
||||
['험준한 지형에서 뛰어납니다.', '불리한 싸움도 버텨냅니다.'],
|
||||
null, ['che_기병병종전투'], null
|
||||
],
|
||||
[
|
||||
91301, self::T_CAVALRY, '산저병',
|
||||
225, 150, 7, 5, 0, 15, 15,
|
||||
[new ReqTech(4000), new ReqCitiesWithCityLevel(8, '수춘'), new ReqNationAux(NationAuxKey::can_산저병사용, '==', 1)],
|
||||
[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],
|
||||
['무식할 정도로 전장을 누빕니다.'],
|
||||
null, ['che_기병병종전투'], null
|
||||
],
|
||||
[
|
||||
91302, self::T_CAVALRY, '상병',
|
||||
225, 250, 5, 0, 0, 24, 24,
|
||||
[new ReqTech(5000), new ReqCitiesWithCityLevel(8, '남만'), new ReqNationAux(NationAuxKey::can_상병사용, '==', 1)],
|
||||
[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],
|
||||
['거대한 코끼리와 함께합니다.'],
|
||||
null, ['che_기병병종전투'], null
|
||||
],
|
||||
|
||||
[
|
||||
1400, self::T_WIZARD, '귀병',
|
||||
80, 80, 7, 5, 0.5, 9, 9,
|
||||
[],
|
||||
[self::T_SIEGE=>1.2],
|
||||
[self::T_SIEGE=>0.8],
|
||||
['계략을 사용하는 병종입니다.'],
|
||||
null, null, null
|
||||
],
|
||||
[
|
||||
1401, self::T_WIZARD, '신귀병',
|
||||
80, 80, 7, 20, 0.6, 10, 10,
|
||||
[new ReqTech(1000), new ReqRegions('초')],
|
||||
[self::T_SIEGE=>1.2],
|
||||
[self::T_SIEGE=>0.8],
|
||||
['신출귀몰한 귀병입니다.'],
|
||||
null, null, null
|
||||
],
|
||||
[
|
||||
1402, self::T_WIZARD, '백귀병',
|
||||
80, 130, 7, 5, 0.6, 9, 11,
|
||||
[new ReqTech(2000), new ReqCities('오환')],
|
||||
[self::T_SIEGE=>1.2],
|
||||
[self::T_SIEGE=>0.8],
|
||||
['저렴하고 튼튼합니다.'],
|
||||
null, null, null
|
||||
],
|
||||
[
|
||||
1403, self::T_WIZARD, '흑귀병',
|
||||
130, 80, 7, 5, 0.6, 11, 9,
|
||||
[new ReqTech(2000), new ReqCities('왜')],
|
||||
[self::T_SIEGE=>1.2],
|
||||
[self::T_SIEGE=>0.8],
|
||||
['저렴하고 강력합니다.'],
|
||||
null, null, null
|
||||
],
|
||||
[
|
||||
1404, self::T_WIZARD, '악귀병',
|
||||
130, 130, 7, 0, 0.6, 12, 12,
|
||||
[new ReqTech(3000), new ReqCities('장안')],
|
||||
[self::T_SIEGE=>1.2],
|
||||
[self::T_SIEGE=>0.8],
|
||||
['백병전에도 능숙합니다.'],
|
||||
null, null, null
|
||||
],
|
||||
[
|
||||
1405, self::T_WIZARD, '남귀병',
|
||||
60, 60, 7, 10, 0.8, 8, 8,
|
||||
[new ReqTech(1000)],
|
||||
[self::T_SIEGE=>1.2],
|
||||
[self::T_SIEGE=>0.8],
|
||||
['전투를 포기하고 계략에 몰두합니다.'],
|
||||
null, null, null
|
||||
],
|
||||
[
|
||||
1406, self::T_WIZARD, '황귀병',
|
||||
110, 110, 7, 0, 0.8, 13, 10,
|
||||
[new ReqTech(3000), new ReqCities('낙양')],
|
||||
[self::T_SIEGE=>1.2],
|
||||
[self::T_SIEGE=>0.8],
|
||||
['고도로 훈련된 귀병입니다.'],
|
||||
null, null, null
|
||||
],
|
||||
[
|
||||
1407, self::T_WIZARD, '천귀병',
|
||||
80, 130, 7, 15, 0.6, 11, 12,
|
||||
[new ReqTech(3000), new ReqCities('성도')],
|
||||
[self::T_SIEGE=>1.2],
|
||||
[self::T_SIEGE=>0.8],
|
||||
['갑주를 두른 귀병입니다.'],
|
||||
null, null, null
|
||||
],
|
||||
[
|
||||
1408, self::T_WIZARD, '마귀병',
|
||||
130, 80, 7, 15, 0.6, 12, 11,
|
||||
[new ReqTech(3000), new ReqCities('업')],
|
||||
[self::T_SIEGE=>1.2],
|
||||
[self::T_SIEGE=>0.8],
|
||||
['날카로운 무기를 가진 귀병입니다.'],
|
||||
null, null, null
|
||||
],
|
||||
[
|
||||
91400, self::T_WIZARD, '음귀병',
|
||||
110, 110, 7, 15, 0.7, 13, 11,
|
||||
[new ReqTech(4000), new ReqCitiesWithCityLevel(8, '강릉'), new ReqNationAux(NationAuxKey::can_음귀병사용, '==', 1)],
|
||||
[self::T_SIEGE=>1.2],
|
||||
[self::T_SIEGE=>0.8],
|
||||
['악기를 연주하여 적을 혼란시킵니다.'],
|
||||
null, null, null
|
||||
],
|
||||
[
|
||||
91401, self::T_WIZARD, '향귀병',
|
||||
100, 120, 8, 5, 0.6, 12, 12,
|
||||
[new ReqTech(4000), new ReqHighLevelCities(8, 4), new ReqNotChief()],
|
||||
[self::T_SIEGE=>1.2],
|
||||
[self::T_SIEGE=>0.8],
|
||||
['독특한 향을 피웁니다.'],
|
||||
null, null, null
|
||||
],
|
||||
[
|
||||
91402, self::T_WIZARD, '무희',
|
||||
180, 80, 7, 10, 0.6, 18, 17,
|
||||
[new ReqTech(5000), new ReqCitiesWithCityLevel(8, '왜'), new ReqNationAux(NationAuxKey::can_무희사용, '==', 1)],
|
||||
[self::T_SIEGE=>1.2],
|
||||
[self::T_SIEGE=>0.8],
|
||||
['검무를 추는 귀병입니다.'],
|
||||
null, null, null
|
||||
],
|
||||
|
||||
[
|
||||
1500, self::T_SIEGE, '정란',
|
||||
100, 100, 6, 0, 0, 14, 5,
|
||||
[new ReqMinRelYear(3)],
|
||||
[self::T_FOOTMAN=>1.25, self::T_ARCHER=>1.25, self::T_CAVALRY=>1.25, self::T_WIZARD=>1.25, self::T_CASTLE=>1.8, 1106=>1.112, 91300=>1.112],
|
||||
[self::T_FOOTMAN=>1.2, self::T_ARCHER=>1.2, self::T_CAVALRY=>1.2, self::T_WIZARD=>1.2, 1106=>1.067, 91300=>1.112],
|
||||
['높은 구조물 위에서 공격합니다. 첫 공격은 성벽을 향합니다.'],
|
||||
['che_성벽부상무효'], ['che_선제사격시도', 'che_선제사격발동'], ['che_성벽선제']
|
||||
],
|
||||
[
|
||||
1501, self::T_SIEGE, '충차',
|
||||
150, 100, 6, 0, 0, 18, 5,
|
||||
[new ReqTech(1000), new ReqMinRelYear(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, 1106=>1.112, 91300=>1.112],
|
||||
[self::T_FOOTMAN=>1.2, self::T_ARCHER=>1.2, self::T_CAVALRY=>1.2, self::T_WIZARD=>1.2, 1106=>1.067, 91300=>1.067],
|
||||
['엄청난 위력으로 성벽을 부수어버립니다.'],
|
||||
['che_성벽부상무효'], null, null
|
||||
],
|
||||
[
|
||||
1502, self::T_SIEGE, '벽력거',
|
||||
150, 100, 6, 5, 0, 20, 5,
|
||||
[new ReqTech(3000), new ReqCities('업')],
|
||||
[self::T_FOOTMAN=>1.25, self::T_ARCHER=>1.25, self::T_CAVALRY=>1.25, self::T_WIZARD=>1.25, self::T_CASTLE=>1.8, 1106=>1.112, 91300=>1.112],
|
||||
[self::T_FOOTMAN=>1.2, self::T_ARCHER=>1.2, self::T_CAVALRY=>1.2, self::T_WIZARD=>1.2, 1106=>1.067, 91300=>1.112],
|
||||
['상대에게 돌덩이를 날립니다. 첫 공격은 성벽을 향합니다.'],
|
||||
['che_성벽부상무효'], ['che_선제사격시도', 'che_선제사격발동'], ['che_성벽선제']
|
||||
],
|
||||
[
|
||||
1503, self::T_SIEGE, '목우',
|
||||
50, 200, 5, 0, 0, 15, 5,
|
||||
[new ReqTech(3000), new ReqCities('성도')],
|
||||
[self::T_FOOTMAN=>1, self::T_ARCHER=>1, self::T_CAVALRY=>1, self::T_WIZARD=>1, self::T_CASTLE=>1.8],
|
||||
[self::T_FOOTMAN=>1, self::T_ARCHER=>1, self::T_CAVALRY=>1, self::T_WIZARD=>1],
|
||||
['상대를 저지하는 특수병기입니다.'],
|
||||
['che_성벽부상무효'], ['che_저지시도', 'che_저지발동'], null
|
||||
],
|
||||
[
|
||||
91500, self::T_SIEGE, '화륜차',
|
||||
300, 0, 5, 0, 0, 40, 5,
|
||||
[new ReqTech(5000), new ReqNationAux(NationAuxKey::did_특성초토화, '>=', 1), new ReqChief(), new ReqNationAux(NationAuxKey::can_화륜차사용, '==', 1)],
|
||||
[self::T_FOOTMAN=>1.25, self::T_ARCHER=>1.25, self::T_CAVALRY=>1.25, self::T_WIZARD=>1.25, self::T_CASTLE=>1.25, 1106=>1.112, 91300=>1.112],
|
||||
[self::T_FOOTMAN=>1.2, self::T_ARCHER=>1.2, self::T_CAVALRY=>1.2, self::T_WIZARD=>1.2, 1106=>1.067, 91300=>1.067],
|
||||
['불타는 바퀴로 적진을 붕괴시킵니다.'],
|
||||
['che_성벽부상무효'], null, null
|
||||
]
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -31,29 +31,6 @@
|
||||
font-size: 0;
|
||||
}
|
||||
|
||||
|
||||
.compensatePositive {
|
||||
color: $cyan;
|
||||
display: inline-block;
|
||||
width: 1rem;
|
||||
}
|
||||
|
||||
.compensateNegative {
|
||||
color: $red;
|
||||
display: inline-block;
|
||||
width: 1rem;
|
||||
}
|
||||
|
||||
.compensateNeutral{
|
||||
display: inline-block;
|
||||
width: 1rem;
|
||||
}
|
||||
|
||||
.commandImpossible {
|
||||
color: $red;
|
||||
text-decoration: line-through $red;
|
||||
}
|
||||
|
||||
.t_date {
|
||||
font-size: 0.75em;
|
||||
}
|
||||
|
||||
@@ -583,6 +583,20 @@ CREATE TABLE IF NOT EXISTS `nation_env` (
|
||||
UNIQUE INDEX `key` (`namespace`, `key`),
|
||||
CONSTRAINT `json` CHECK (json_valid(`value`))
|
||||
) COLLATE = 'utf8mb4_bin' ENGINE = Aria;
|
||||
CREATE TABLE IF NOT EXISTS `inheritance_result` (
|
||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||
`server_id` CHAR(20) NOT NULL COLLATE 'utf8mb4_general_ci',
|
||||
`owner` INT(11) NOT NULL,
|
||||
`general_id` INT(11) NOT NULL,
|
||||
`year` INT(11) NOT NULL,
|
||||
`month` INT(11) NOT NULL,
|
||||
`value` LONGTEXT NOT NULL COLLATE 'utf8mb4_bin',
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `by_owner` (`server_id`, `owner`, `general_id`, `year`, `month`)
|
||||
)
|
||||
COLLATE='utf8mb4_general_ci'
|
||||
ENGINE=Aria
|
||||
;
|
||||
|
||||
##############################
|
||||
## 명장일람
|
||||
|
||||
@@ -510,7 +510,7 @@ async function reloadCommandList() {
|
||||
const turnTime = parseTime(result.turnTime);
|
||||
let nextTurnTime = new Date(turnTime);
|
||||
|
||||
const autorunLimitYearMonth = result.autorun_limit ?? yearMonth - 1;
|
||||
const autorunLimitYearMonth = (result.autorun_limit ?? yearMonth) - 1;
|
||||
const [autorunLimitYear, autorunLimitMonth] = parseYearMonth(autorunLimitYearMonth);
|
||||
|
||||
reservedCommandList.value = [];
|
||||
|
||||
@@ -509,7 +509,7 @@ function updateCommandList() {
|
||||
const turnTime = parseTime(props.turnTime);
|
||||
let nextTurnTime = new Date(turnTime);
|
||||
|
||||
const autorunLimitYearMonth = autorun_limit.value ?? yearMonth - 1;
|
||||
const autorunLimitYearMonth = (autorun_limit.value ?? yearMonth) - 1;
|
||||
const [autorunLimitYear, autorunLimitMonth] = parseYearMonth(autorunLimitYearMonth);
|
||||
|
||||
for (const obj of props.turn) {
|
||||
|
||||
@@ -205,7 +205,10 @@ defineExpose({
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
<style scoped lang="scss">
|
||||
@import "@scss/common/variables.scss";
|
||||
@import "@scss/common/bootswatch_custom_variables.scss";
|
||||
|
||||
.commandItem {
|
||||
border: gray 1px solid;
|
||||
border-radius: 0.5em;
|
||||
@@ -219,4 +222,28 @@ defineExpose({
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
|
||||
.compensatePositive {
|
||||
color: $cyan;
|
||||
display: inline-block;
|
||||
width: 1rem;
|
||||
}
|
||||
|
||||
.compensateNegative {
|
||||
color: $red;
|
||||
display: inline-block;
|
||||
width: 1rem;
|
||||
}
|
||||
|
||||
.compensateNeutral{
|
||||
display: inline-block;
|
||||
width: 1rem;
|
||||
}
|
||||
|
||||
.commandImpossible {
|
||||
color: $red;
|
||||
text-decoration: line-through $red;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
|
||||
@@ -170,7 +170,7 @@ import { joinYearMonth } from "@/util/joinYearMonth";
|
||||
import { parseYearMonth } from "@/util/parseYearMonth";
|
||||
import type { GameConstStore } from "@/GameConstStore";
|
||||
import { unwrap_err } from "@/util/unwrap_err";
|
||||
import { getMaxRelativeTechLevel, TECH_LEVEL_YEAR_GAP } from "@/utilGame/techLevel";
|
||||
import { getMaxRelativeTechLevel } from "@/utilGame/techLevel";
|
||||
import { deviceType } from "detect-it";
|
||||
import MapCityBasic from "./MapCityBasic.vue";
|
||||
import MapCityDetail from "./MapCityDetail.vue";
|
||||
@@ -289,12 +289,14 @@ const titleTooltip = computed(()=>{
|
||||
const { startYear, year } = mapData.value;
|
||||
|
||||
const maxTechLevel = gameConstStore.value.gameConst.maxTechLevel;
|
||||
const currentTechLimit = getMaxRelativeTechLevel(startYear, year, maxTechLevel);
|
||||
const initialAllowedTechLevel = gameConstStore.value.gameConst.initialAllowedTechLevel;
|
||||
const techLevelIncYear = gameConstStore.value.gameConst.techLevelIncYear;
|
||||
const currentTechLimit = getMaxRelativeTechLevel(startYear, year, maxTechLevel, initialAllowedTechLevel, techLevelIncYear);
|
||||
|
||||
if (currentTechLimit == maxTechLevel) {
|
||||
result.push(`기술등급 제한 : ${currentTechLimit}등급 (최종)`);
|
||||
} else {
|
||||
const nextTechLimitYear = currentTechLimit * TECH_LEVEL_YEAR_GAP + startYear;
|
||||
const nextTechLimitYear = currentTechLimit * techLevelIncYear + startYear;
|
||||
result.push(`기술등급 제한 : ${currentTechLimit}등급 (${nextTechLimitYear}년 해제)`);
|
||||
}
|
||||
|
||||
|
||||
@@ -124,9 +124,12 @@ watch(
|
||||
(nation) => {
|
||||
const { startyear, year } = global.value;
|
||||
console.log(gameConstStore);
|
||||
maxTechLevel.value = getMaxRelativeTechLevel(startyear, year, gameConstStore.value.gameConst.maxTechLevel);
|
||||
|
||||
const initialAllowedTechLevel = gameConstStore.value.gameConst.initialAllowedTechLevel;
|
||||
const techLevelIncYear = gameConstStore.value.gameConst.techLevelIncYear;
|
||||
maxTechLevel.value = getMaxRelativeTechLevel(startyear, year, gameConstStore.value.gameConst.maxTechLevel, initialAllowedTechLevel, techLevelIncYear);
|
||||
currentTechLevel.value = convTechLevel(nation.tech, maxTechLevel.value);
|
||||
onTechLimit.value = isTechLimited(startyear, year, nation.tech, gameConstStore.value.gameConst.maxTechLevel);
|
||||
onTechLimit.value = isTechLimited(startyear, year, nation.tech, gameConstStore.value.gameConst.maxTechLevel, initialAllowedTechLevel, techLevelIncYear);
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
|
||||
@@ -57,6 +57,9 @@ export type GameConstType = {
|
||||
maxTechLevel: number;
|
||||
maxBetrayCnt: number;
|
||||
|
||||
techLevelIncYear: number;
|
||||
initialAllowedTechLevel: number;
|
||||
|
||||
basePopIncreaseAmount: number;
|
||||
expandCityPopIncreaseAmount: number;
|
||||
expandCityDevelIncreaseAmount: number;
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
|
||||
import { clamp } from "lodash-es";
|
||||
|
||||
export const TECH_LEVEL_YEAR_GAP = 5;
|
||||
export const TECH_LEVEL_STEP = 1000;
|
||||
|
||||
export function isTechLimited(startYear: number, year: number, tech: number, maxTechLevel: number): boolean {
|
||||
const relMaxTech = getMaxRelativeTechLevel(startYear, year, maxTechLevel);
|
||||
export function isTechLimited(startYear: number, year: number, tech: number, maxTechLevel: number, initialAllowedTechLevel: number, techLevelIncYear: number): boolean {
|
||||
const relMaxTech = getMaxRelativeTechLevel(startYear, year, maxTechLevel, initialAllowedTechLevel, techLevelIncYear);
|
||||
const techLevel = convTechLevel(tech, maxTechLevel);
|
||||
|
||||
return techLevel >= relMaxTech;
|
||||
@@ -16,7 +15,7 @@ export function convTechLevel(tech: number, maxTechLevel: number): number{
|
||||
}
|
||||
|
||||
|
||||
export function getMaxRelativeTechLevel(startYear: number, year: number, maxTechLevel: number): number {
|
||||
export function getMaxRelativeTechLevel(startYear: number, year: number, maxTechLevel: number, initialAllowedTechLevel: number, techLevelIncYear: number): number {
|
||||
const relYear = year - startYear;
|
||||
return clamp(Math.floor(relYear / TECH_LEVEL_YEAR_GAP) + 1, 1, maxTechLevel);
|
||||
return clamp(Math.floor(relYear / techLevelIncYear) + initialAllowedTechLevel, 1, maxTechLevel);
|
||||
}
|
||||
@@ -40,9 +40,9 @@ if($userInfo['delete_after']){
|
||||
]);
|
||||
}
|
||||
|
||||
$penaltyList = JSON::decode($userInfo['penalty']??'{}');
|
||||
$penaltyList = Json::decode($userInfo['penalty']??'{}');
|
||||
foreach($penaltyList as $penaltyKey=>$penaltyValue){
|
||||
if($penaltyValue['expire'] ?? 0 > TimeUtil::now()){
|
||||
if(($penaltyValue['expire'] ?? 0) > TimeUtil::now()){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>"징계가 남아있어 탈퇴할 수 없습니다."
|
||||
|
||||
+2
-2
@@ -174,7 +174,7 @@ function tryNpmInstall()
|
||||
|
||||
tryComposerInstall();
|
||||
if (tryNpmInstall()) {
|
||||
genJS(Util::array_last_key(ServConfig::getServerList()));
|
||||
genJS(array_key_last(ServConfig::getServerList()));
|
||||
}
|
||||
$session = Session::requireLogin(null)->setReadOnly();
|
||||
|
||||
@@ -227,7 +227,7 @@ if (!$allowFullUpdate || !$target) {
|
||||
$target = $request['target'];
|
||||
}
|
||||
|
||||
$baseServerName = Util::array_last_key(ServConfig::getServerList());
|
||||
$baseServerName = array_key_last(ServConfig::getServerList());
|
||||
|
||||
if (!$target && $server != $baseServerName) {
|
||||
Json::die([
|
||||
|
||||
@@ -109,16 +109,16 @@ if($expires < $nowDate){
|
||||
$access_token = $result['access_token'];
|
||||
$expires = TimeUtil::nowAddSeconds($result['expires_in']);
|
||||
if(isset($result['refresh_token'])){
|
||||
$refresh_token = Util::array_get($result['refresh_token']);
|
||||
$refresh_token = $result['refresh_token'] ?? null;
|
||||
$refresh_token_expires = TimeUtil::nowAddSeconds($result['refresh_token_expires_in']);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$signupResult = $restAPI->signup();
|
||||
$kakaoID = Util::array_get($signupResult['id']);
|
||||
$kakaoID = $signupResult['id'] ?? null;
|
||||
|
||||
if(!$kakaoID && Util::array_get($signupResult['msg'])!='already registered'){
|
||||
if(!$kakaoID && ($signupResult['msg'] ?? null) !='already registered'){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'카카오 로그인 과정 중 앱 연결 절차를 실패했습니다'.Json::encode($signupResult)
|
||||
@@ -126,7 +126,7 @@ if(!$kakaoID && Util::array_get($signupResult['msg'])!='already registered'){
|
||||
}
|
||||
|
||||
$me = $restAPI->meWithEmail();
|
||||
$me['code'] = Util::array_get($me['code'], 0);
|
||||
$me['code'] = $me['code'] ?? 0;
|
||||
$kakao_account = $me['kakao_account']??[];
|
||||
if ($me['code']< 0) {
|
||||
$restAPI->unlink();
|
||||
|
||||
@@ -133,7 +133,7 @@ $userInfo = $RootDB->queryFirstRow(
|
||||
if (!$userInfo) {
|
||||
if(!$oauthID){
|
||||
$me = $restAPI->meWithEmail();
|
||||
if ($me['code']??0 < 0) {
|
||||
if (($me['code']??0) < 0) {
|
||||
Json::die([
|
||||
'result' => false,
|
||||
'reqOTP' => false,
|
||||
|
||||
+375
@@ -0,0 +1,375 @@
|
||||
#!/usr/bin/env node
|
||||
/* eslint-disable no-console */
|
||||
|
||||
import fs from "node:fs/promises";
|
||||
import path from "node:path";
|
||||
import { setTimeout as delay } from "node:timers/promises";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
//const __dirname = path.dirname(__filename);
|
||||
|
||||
// ============ 환경설정 ============
|
||||
const REQUIRE_PUBLIC = (process.env.REQUIRE_PUBLIC ?? "true").toLowerCase() === "true";
|
||||
const FETCH_TIMEOUT_MS = nenv("FETCH_TIMEOUT_MS", 60_000);
|
||||
const IF_LOCKED_WAIT_MS = nenv("IF_LOCKED_WAIT_MS", 10_000);
|
||||
const IF_UPDATED_WAIT_MS = nenv("IF_UPDATED_WAIT_MS", 1_000);
|
||||
const DEFAULT_WAIT_MS = nenv("DEFAULT_WAIT_MS", 8_000);
|
||||
const BASE_SCAN_DEPTH_ONE = (process.env.BASE_SCAN_DEPTH_ONE ?? "true").toLowerCase() === "true";
|
||||
const RESCAN_INTERVAL_MS = nenv("RESCAN_INTERVAL_MS", 300_000); // 5분
|
||||
const SHUTDOWN_TIMEOUT_MS = nenv("SHUTDOWN_TIMEOUT_MS", 15_000);
|
||||
const AUTO_RESET_JITTER_MS = nenv("AUTO_RESET_JITTER_MS", 0); // 0초 직후 지연(밀리초)
|
||||
|
||||
function nenv(key: string, def: number): number {
|
||||
const v = process.env[key];
|
||||
if (!v) return def;
|
||||
const num = Number(v);
|
||||
return Number.isFinite(num) ? num : def;
|
||||
}
|
||||
|
||||
// ============ 유틸 ============
|
||||
type Json = Record<string, unknown>;
|
||||
type ProcResult = {
|
||||
result: boolean;
|
||||
updated: boolean;
|
||||
locked: boolean;
|
||||
lastExecuted?: string;
|
||||
};
|
||||
|
||||
function nowStr() {
|
||||
const d = new Date();
|
||||
const pad = (n: number) => n.toString().padStart(2, "0");
|
||||
const ms = d.getMilliseconds().toString().padStart(3, "0");
|
||||
return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}.${ms}`;
|
||||
}
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
function log(...args: any[]) { console.log(nowStr(), ...args); }
|
||||
|
||||
async function fileExists(fp: string): Promise<boolean> {
|
||||
try { await fs.access(fp, fs.constants.F_OK); return true; } catch { return false; }
|
||||
}
|
||||
|
||||
async function readFileSafe(fp: string): Promise<string | null> {
|
||||
try { return await fs.readFile(fp, "utf8"); } catch { return null; }
|
||||
}
|
||||
|
||||
async function listDirsOnceAsync(base: string): Promise<string[]> {
|
||||
const out: string[] = [];
|
||||
const names = await fs.readdir(base);
|
||||
for (const name of names) {
|
||||
const p = path.join(base, name);
|
||||
try { if ((await fs.stat(p)).isDirectory()) out.push(p); } catch { /* empty */ }
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
function joinUrl(base: string, suffix: string): string {
|
||||
if (base.endsWith("/") && suffix.startsWith("/")) return base + suffix.slice(1);
|
||||
if (!base.endsWith("/") && !suffix.startsWith("/")) return base + "/" + suffix;
|
||||
return base + suffix;
|
||||
}
|
||||
|
||||
// 분 0초 정렬 대기 시간 계산: 지금 시각에서 다음 분의 0초(+지터)까지 남은 ms
|
||||
function msUntilNextMinuteZero(jitterMs = 0): number {
|
||||
const now = Date.now();
|
||||
const nextMinuteStart = Math.ceil(now / 60_000) * 60_000;
|
||||
const target = nextMinuteStart + Math.max(0, jitterMs);
|
||||
return Math.max(0, target - now);
|
||||
}
|
||||
|
||||
// ============ 경로/루트 URL ============
|
||||
const basepath = path.dirname(path.dirname(path.resolve(__filename)));
|
||||
async function parseWebBaseFromCommonPath(base: string): Promise<string> {
|
||||
const jsPath = path.join(base, "d_shared", "common_path.js");
|
||||
const text = await readFileSafe(jsPath);
|
||||
if (!text) { log("[WARN] common_path.js 읽기 실패 → fallback=http://127.0.0.1"); return "http://127.0.0.1"; }
|
||||
for (const line of text.split(/\r?\n/)) {
|
||||
if (line.includes("root:")) {
|
||||
let v = line.slice(line.indexOf("root:") + 5).trim();
|
||||
v = v.replace(/^[\s,'"`]+/, "").replace(/[\s,'"`,]+$/, "");
|
||||
if (v) return v;
|
||||
}
|
||||
}
|
||||
log("[WARN] root: 항목 없음 → fallback=http://127.0.0.1");
|
||||
return "http://127.0.0.1";
|
||||
}
|
||||
const webBase = process.env.PUBLIC_CHECK_URL || await parseWebBaseFromCommonPath(basepath);
|
||||
log("BASEPATH =", basepath);
|
||||
log("WEBBASE =", webBase);
|
||||
|
||||
// ============ 서버 모델 ============
|
||||
type ServerEntry = {
|
||||
name: string; // servRelPath
|
||||
abs: string; // 절대 경로
|
||||
isHidden: () => Promise<boolean>; // .htaccess 존재 여부
|
||||
procUrl: string;
|
||||
autoresetUrl: string;
|
||||
};
|
||||
|
||||
async function scanOnce(): Promise<ServerEntry[]> {
|
||||
const dirs = await listDirsOnceAsync(basepath); // 깊이는 1단계만
|
||||
const out: ServerEntry[] = [];
|
||||
for (const dir of dirs) {
|
||||
if (BASE_SCAN_DEPTH_ONE === false) {
|
||||
// 필요하면 확장 로직 배치
|
||||
}
|
||||
const dbphp = path.join(dir, "d_setting", "DB.php");
|
||||
if (!await fileExists(dbphp)) continue;
|
||||
|
||||
const name = path.relative(basepath, dir);
|
||||
const isHidden = () => fileExists(path.join(dir, ".htaccess"));
|
||||
|
||||
out.push({
|
||||
name,
|
||||
abs: dir,
|
||||
isHidden,
|
||||
procUrl: joinUrl(webBase, `/${name}/proc.php`),
|
||||
autoresetUrl:joinUrl(webBase, `/${name}/j_autoreset.php`),
|
||||
});
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
// ============ 공개 접근 체크 ============
|
||||
async function isPublicReachable(signal?: AbortSignal): Promise<boolean> {
|
||||
if (!REQUIRE_PUBLIC) return true;
|
||||
const ctrl = new AbortController();
|
||||
const timer = setTimeout(() => ctrl.abort(), Math.min(5_000, FETCH_TIMEOUT_MS));
|
||||
const composite = anySignal([ctrl.signal, signal].filter(Boolean) as AbortSignal[]);
|
||||
try {
|
||||
const res = await fetch(webBase, { method: "GET", signal: composite });
|
||||
if (!res.ok) { log(`[PUBLIC] 응답 ${res.status} → 비공개로 간주`); return false; }
|
||||
return true;
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
} catch (e: any) {
|
||||
if (e?.name !== "AbortError") log(`[PUBLIC] 체크 실패: ${e?.name || e}`);
|
||||
return false;
|
||||
} finally {
|
||||
clearTimeout(timer);
|
||||
}
|
||||
}
|
||||
|
||||
// ============ HTTP ============
|
||||
async function httpGetJson<T extends Json>(url: string, outerSignal?: AbortSignal): Promise<T | null> {
|
||||
const ctrl = new AbortController();
|
||||
const timer = setTimeout(() => ctrl.abort(), FETCH_TIMEOUT_MS);
|
||||
const signal = anySignal([ctrl.signal, outerSignal].filter(Boolean) as AbortSignal[]);
|
||||
|
||||
const t0 = performance.now();
|
||||
try {
|
||||
const res = await fetch(url, { signal, cache: "no-store" });
|
||||
const dt = Math.round(performance.now() - t0);
|
||||
if (!res.ok) { log("HTTPError:", res.status, url); return null; }
|
||||
try {
|
||||
const data = (await res.json()) as T;
|
||||
log(url, `${dt}ms`);
|
||||
return data;
|
||||
} catch {
|
||||
await res.arrayBuffer().catch(() => { /* empty */ });
|
||||
log("ParseError: JSON 변환 실패", url);
|
||||
return null;
|
||||
}
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
} catch (e: any) {
|
||||
if (e?.name !== "AbortError") log(e?.name || "Exception", e?.message || String(e), url);
|
||||
return null;
|
||||
} finally {
|
||||
clearTimeout(timer);
|
||||
}
|
||||
}
|
||||
|
||||
function anySignal(signals: AbortSignal[]): AbortSignal {
|
||||
if (signals.length === 1) return signals[0];
|
||||
const ctrl = new AbortController();
|
||||
for (const s of signals) {
|
||||
if (s.aborted) { ctrl.abort(); break; }
|
||||
s.addEventListener("abort", () => ctrl.abort(), { once: true });
|
||||
}
|
||||
return ctrl.signal;
|
||||
}
|
||||
|
||||
// ============ 서버 러너 ============
|
||||
class ServerRunner {
|
||||
#entry: ServerEntry;
|
||||
#task?: Promise<void>;
|
||||
#stopCtrl = new AbortController();
|
||||
#stopped = false;
|
||||
#lastAutoResetAt = 0;
|
||||
|
||||
constructor(entry: ServerEntry) {
|
||||
this.#entry = entry;
|
||||
}
|
||||
|
||||
name() { return this.#entry.name; }
|
||||
|
||||
start() {
|
||||
if (!this.#task) {
|
||||
log(`[${this.name()}] 루프 시작`);
|
||||
this.#task = this.#run();
|
||||
}
|
||||
return this.#task;
|
||||
}
|
||||
|
||||
async stop(): Promise<void> {
|
||||
if (this.#stopped) return;
|
||||
this.#stopped = true;
|
||||
this.#stopCtrl.abort();
|
||||
try { await this.#task; } catch { /* empty */ }
|
||||
log(`[${this.name()}] 루프 종료`);
|
||||
}
|
||||
|
||||
async #run() {
|
||||
while (!this.#stopCtrl.signal.aborted) {
|
||||
try {
|
||||
// 공개 접근 체크
|
||||
const pub = await isPublicReachable(this.#stopCtrl.signal);
|
||||
if (!pub) { await delay(15_000, undefined, { signal: this.#stopCtrl.signal }).catch(() => { /* empty */ }); continue; }
|
||||
|
||||
const hidden = await this.#entry.isHidden();
|
||||
|
||||
if (hidden) {
|
||||
// ★ 매 분 0초에 맞춰 호출
|
||||
const waitMs = msUntilNextMinuteZero(AUTO_RESET_JITTER_MS);
|
||||
if (waitMs > 0) {
|
||||
// 신호 안전하게 대기
|
||||
await delay(waitMs, undefined, { signal: this.#stopCtrl.signal }).catch(() => { /* empty */ });
|
||||
if (this.#stopCtrl.signal.aborted) break;
|
||||
}
|
||||
log(`[${this.name()}] 닫힘 - (정렬) autoreset 호출 @ mm:00${AUTO_RESET_JITTER_MS ? `+${AUTO_RESET_JITTER_MS}ms` : ""}`);
|
||||
await httpGetJson<Json>(this.#entry.autoresetUrl, this.#stopCtrl.signal);
|
||||
// 같은 분에 중복 호출 방지: 0초 직후 잠깐 쉬고 다음 루프는 자연스럽게 다음 분으로 정렬됨
|
||||
await delay(200, undefined, { signal: this.#stopCtrl.signal }).catch(() => { /* empty */ });
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
// 열림: proc
|
||||
const data = await httpGetJson<ProcResult>(this.#entry.procUrl, this.#stopCtrl.signal);
|
||||
if (!data) {
|
||||
await delay(IF_LOCKED_WAIT_MS, undefined, { signal: this.#stopCtrl.signal }).catch(() => { /* empty */ });
|
||||
continue;
|
||||
}
|
||||
|
||||
if (data.result === false || data.locked === true) {
|
||||
log(`[${this.name()}] result=${data.result} locked=${data.locked} → ${IF_LOCKED_WAIT_MS}ms 대기`);
|
||||
await delay(IF_LOCKED_WAIT_MS, undefined, { signal: this.#stopCtrl.signal }).catch(() => { /* empty */ });
|
||||
continue;
|
||||
}
|
||||
|
||||
if (data.updated === true) {
|
||||
log(`[${this.name()}] updated=true → ${IF_UPDATED_WAIT_MS}ms 후 재호출 (last=${data.lastExecuted ?? "-"})`);
|
||||
await delay(IF_UPDATED_WAIT_MS, undefined, { signal: this.#stopCtrl.signal }).catch(() => { /* empty */ });
|
||||
continue;
|
||||
}
|
||||
|
||||
await delay(DEFAULT_WAIT_MS, undefined, { signal: this.#stopCtrl.signal }).catch(() => { /* empty */ });
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
} catch (e: any) {
|
||||
if (this.#stopCtrl.signal.aborted) break;
|
||||
log(`[${this.name()}] 루프 예외:`, e?.message || String(e));
|
||||
await delay(5_000, undefined, { signal: this.#stopCtrl.signal }).catch(() => { /* empty */ });
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ============ 매니저: 재스캔 & 종료 ============
|
||||
class DaemonManager {
|
||||
#runners = new Map<string, ServerRunner>();
|
||||
#rescanCtrl = new AbortController();
|
||||
|
||||
async start() {
|
||||
log("턴 데몬 시작");
|
||||
await this.#rescanOnce(); // 초기 스캔
|
||||
this.#scheduleRescan(); // 주기적 재스캔
|
||||
}
|
||||
|
||||
async shutdown(timeoutMs = SHUTDOWN_TIMEOUT_MS) {
|
||||
log("[SHUTDOWN] 신호 수신 → 종료 절차 시작");
|
||||
this.#rescanCtrl.abort();
|
||||
|
||||
const stops: Promise<void>[] = [];
|
||||
for (const r of this.#runners.values()) stops.push(r.stop());
|
||||
|
||||
// 타임아웃 대기
|
||||
const done = Promise.allSettled(stops);
|
||||
const timeout = delay(timeoutMs).then(() => { throw new Error("Shutdown timeout"); });
|
||||
try { await Promise.race([done, timeout]); }
|
||||
catch { log("[SHUTDOWN] 타임아웃 도달 → 강제 종료"); }
|
||||
log("[SHUTDOWN] 종료 완료");
|
||||
}
|
||||
|
||||
#scheduleRescan() {
|
||||
// 반복 타이머(AbortSignal과 함께)
|
||||
const loop = async () => {
|
||||
while (!this.#rescanCtrl.signal.aborted) {
|
||||
await delay(RESCAN_INTERVAL_MS, undefined, { signal: this.#rescanCtrl.signal }).catch(() => { /* empty */ });
|
||||
if (this.#rescanCtrl.signal.aborted) break;
|
||||
try { await this.#rescanOnce(); }
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
catch (e: any) { log("[RESCAN] 예외:", e?.message || String(e)); }
|
||||
}
|
||||
};
|
||||
loop().catch(() => { /* empty */ });
|
||||
}
|
||||
|
||||
async #rescanOnce() {
|
||||
const entries = await scanOnce();
|
||||
log(`[RESCAN] 서버 ${entries.length}개 발견`);
|
||||
|
||||
// 추가/갱신/삭제 판정
|
||||
const seen = new Set<string>();
|
||||
|
||||
for (const e of entries) {
|
||||
seen.add(e.name);
|
||||
if (!this.#runners.has(e.name)) {
|
||||
// 신규 서버
|
||||
const runner = new ServerRunner(e);
|
||||
this.#runners.set(e.name, runner);
|
||||
runner.start().catch(() => { /* empty */ });
|
||||
log(`[RESCAN] 추가: ${e.name}`);
|
||||
} else {
|
||||
// 이미 러너 있음 → 경로/URL 변경 가능성 거의 없지만, 필요시 갱신 로직 여기에
|
||||
}
|
||||
}
|
||||
|
||||
// 사라진 서버 중지
|
||||
for (const name of Array.from(this.#runners.keys())) {
|
||||
if (!seen.has(name)) {
|
||||
log(`[RESCAN] 제거: ${name}`);
|
||||
const r = this.#runners.get(name);
|
||||
if (!r) continue;
|
||||
this.#runners.delete(name);
|
||||
r.stop().catch(() => { /* empty */ });
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ============ 메인 ============
|
||||
const manager = new DaemonManager();
|
||||
|
||||
async function main() {
|
||||
// 신호 처리: SIGINT/SIGTERM → graceful shutdown
|
||||
const onSignal = async (sig: NodeJS.Signals) => {
|
||||
log(`[SIGNAL] ${sig} 수신`);
|
||||
// 중복 호출 방지
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
process.off("SIGINT", onSignal as any);
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
process.off("SIGTERM", onSignal as any);
|
||||
await manager.shutdown().catch(() => { /* empty */ });
|
||||
process.exit(0);
|
||||
};
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
process.on("SIGINT", onSignal as any);
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
process.on("SIGTERM", onSignal as any);
|
||||
|
||||
await manager.start();
|
||||
}
|
||||
|
||||
main().catch((e) => {
|
||||
log("치명적 예외:", e);
|
||||
process.exitCode = 1;
|
||||
});
|
||||
+11
-2
@@ -21,8 +21,17 @@ def run(webPath):
|
||||
print(now.strftime("%Y-%m-%d %H:%M:%S"), webPath, flush=True)
|
||||
startTime = getCurrentMillisecTime()
|
||||
|
||||
obj = urllib.request.urlopen(webPath)
|
||||
obj.read()
|
||||
try:
|
||||
obj = urllib.request.urlopen(webPath, timeout=60)
|
||||
obj.read()
|
||||
except urllib.error.HTTPError as e:
|
||||
print('HTTPError:', e.code, webPath)
|
||||
except urllib.error.URLError as e:
|
||||
print('URLError:', e.reason, webPath)
|
||||
except Exception as e:
|
||||
print('Exception:', str(e), webPath)
|
||||
else:
|
||||
pass
|
||||
|
||||
timeGap = getCurrentMillisecTime() - startTime
|
||||
if timeGap < RETRY_SEC * 1000:
|
||||
|
||||
@@ -88,9 +88,9 @@ class Setting
|
||||
$tail = new FileTail($this->versionFile);
|
||||
$version = 'noVersionJson';
|
||||
foreach ($tail->smart(5, 100, true) as $line) {
|
||||
if (Util::starts_with($line, '//{')) {
|
||||
if (str_starts_with($line, '//{')) {
|
||||
$version = Json::decode(substr($line, 2));
|
||||
$version = Util::array_get($version['version'], 'noVersionValue');
|
||||
$version = $version['version'] ?? 'noVersionValue';
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -106,8 +106,8 @@ class Setting
|
||||
$templates = new \League\Plates\Engine(__DIR__.'/templates');
|
||||
//TODO: .htaccess가 서버 오픈에도 사용될 수 있으니 별도의 방법이 필요함
|
||||
$allow_ip = Util::get_client_ip(false);
|
||||
if (Util::starts_with($allow_ip, '192.168.') ||
|
||||
Util::starts_with($allow_ip, '10.')) {
|
||||
if (str_starts_with($allow_ip, '192.168.') ||
|
||||
str_starts_with($allow_ip, '10.')) {
|
||||
//172.16~172.31은 코딩하기 귀찮으니까 안할거다
|
||||
$allow_ip = Util::get_client_ip(true);
|
||||
}
|
||||
|
||||
+107
-1
@@ -3,7 +3,7 @@ namespace sammo;
|
||||
|
||||
use Iterator;
|
||||
|
||||
class Util extends \utilphp\util
|
||||
class Util
|
||||
{
|
||||
|
||||
/**
|
||||
@@ -889,4 +889,110 @@ class Util extends \utilphp\util
|
||||
}
|
||||
return join('|', $result);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* http://github.com/brandonwamboldt/utilphp/ 의 구버전 코드에서 이식함
|
||||
* 일부 코드는 수정
|
||||
* 해당 라이선스: MIT
|
||||
*/
|
||||
|
||||
/**
|
||||
* Returns the first element in an array.
|
||||
* PHP 8.5부터 array_first 사용 가능
|
||||
*
|
||||
* @param array $array
|
||||
* @return mixed
|
||||
*/
|
||||
public static function array_first(array $array)
|
||||
{
|
||||
return $array[array_key_first($array)];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the last element in an array.
|
||||
* PHP 8.5부터 array_last 사용 가능
|
||||
*
|
||||
* @param array $array
|
||||
* @return mixed
|
||||
*/
|
||||
public static function array_last(array $array)
|
||||
{
|
||||
return $array[array_key_last($array)];
|
||||
}
|
||||
|
||||
/**
|
||||
* Flatten a multi-dimensional array into a one dimensional array.
|
||||
*
|
||||
* Contributed by Theodore R. Smith of PHP Experts, Inc. <http://www.phpexperts.pro/>
|
||||
*
|
||||
* @param array $array The array to flatten
|
||||
* @param boolean $preserve_keys Whether or not to preserve array keys.
|
||||
* Keys from deeply nested arrays will
|
||||
* overwrite keys from shallowy nested arrays
|
||||
* @return array
|
||||
*/
|
||||
public static function array_flatten(array $array, $preserve_keys = true)
|
||||
{
|
||||
$flattened = array();
|
||||
|
||||
array_walk_recursive($array, function($value, $key) use (&$flattened, $preserve_keys) {
|
||||
if ($preserve_keys && !is_int($key)) {
|
||||
$flattened[$key] = $value;
|
||||
} else {
|
||||
$flattened[] = $value;
|
||||
}
|
||||
});
|
||||
|
||||
return $flattened;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the IP address of the client.
|
||||
*
|
||||
* @param boolean $trust_proxy_headers Whether or not to trust the
|
||||
* proxy headers HTTP_CLIENT_IP
|
||||
* and HTTP_X_FORWARDED_FOR. ONLY
|
||||
* use if your server is behind a
|
||||
* proxy that sets these values
|
||||
* @return string
|
||||
*/
|
||||
public static function get_client_ip($trust_proxy_headers = false)
|
||||
{
|
||||
if (!$trust_proxy_headers) {
|
||||
return $_SERVER['REMOTE_ADDR'];
|
||||
}
|
||||
|
||||
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
|
||||
$ip = $_SERVER['HTTP_CLIENT_IP'];
|
||||
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
||||
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
||||
} else {
|
||||
$ip = $_SERVER['REMOTE_ADDR'];
|
||||
}
|
||||
|
||||
return $ip;
|
||||
}
|
||||
|
||||
/**
|
||||
* Access an array index, retrieving the value stored there if it
|
||||
* exists or a default if it does not. This function allows you to
|
||||
* concisely access an index which may or may not exist without
|
||||
* raising a warning.
|
||||
*
|
||||
* @deprecated PHP 7.0 이상에서는 null 병합 연산자 사용을 권장
|
||||
*
|
||||
* @param array $var Array value to access
|
||||
* @param mixed $default Default value to return if the key is not
|
||||
* present in the array
|
||||
* @return mixed
|
||||
*/
|
||||
public static function array_get(&$var, $default = null)
|
||||
{
|
||||
if (isset($var)) {
|
||||
return $var;
|
||||
}
|
||||
|
||||
return $default;
|
||||
}
|
||||
};
|
||||
|
||||
+2
-1
@@ -81,7 +81,8 @@
|
||||
},
|
||||
"include": [
|
||||
"hwe/ts/**/*",
|
||||
"hwe/ts/**/*.vue"
|
||||
"hwe/ts/**/*.vue",
|
||||
"src/*.ts",
|
||||
],
|
||||
"exclude": [
|
||||
"**/*.test.ts"
|
||||
|
||||
Reference in New Issue
Block a user