From 0ca7a8ab8aa68c8de53ae73ed537731060a96d91 Mon Sep 17 00:00:00 2001 From: hide_d Date: Fri, 13 Jul 2018 00:12:12 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B3=91=EC=A2=85=20=ED=85=8C=EC=9D=B4?= =?UTF-8?q?=EB=B8=94=EC=97=90=20'=EB=B3=91=EC=A2=85=20=ED=83=80=EC=9E=85'?= =?UTF-8?q?=20=EC=A7=80=EC=A0=95,=20=ED=84=B4=20=EC=BB=A4=EB=A7=A8?= =?UTF-8?q?=EB=93=9C=EB=A5=BC=20json=20array=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/_admin2_submit.php | 8 +- hwe/_admin4_submit.php | 2 +- hwe/func_command.php | 21 +-- hwe/func_npc.php | 8 +- hwe/sammo/GameUnitConstBase.php | 99 ++++++++----- hwe/sammo/GameUnitDetail.php | 3 + hwe/sql/schema.sql | 240 ++++++++++++++++---------------- 7 files changed, 201 insertions(+), 180 deletions(-) diff --git a/hwe/_admin2_submit.php b/hwe/_admin2_submit.php index c0815d36..18e44f84 100644 --- a/hwe/_admin2_submit.php +++ b/hwe/_admin2_submit.php @@ -93,7 +93,7 @@ switch($btn) { case "강제 사망": $date = date('Y-m-d H:i:s'); $db->update('general', [ - 'turn0'=>0, + 'turn0'=>EncodeCommand(0, 0, 0, 0), 'killturn'=>0, 'turntime'=>$date, ], '`no` IN %li', $genlist); @@ -314,13 +314,13 @@ switch($btn) { break; case "하야입력": $db->update('general', [ - 'turn0'=>'00000000000045' + 'turn0'=>EncodeCommand(0, 0, 0, 45) ], '`no` IN %li', $genlist); break; case "방랑해산": $db->update('general', [ - 'turn0'=>'00000000000047', - 'turn1'=>'00000000000056' + 'turn0'=>EncodeCommand(0, 0, 0, 47), + 'turn1'=>EncodeCommand(0, 0, 0, 56) ], '`no` IN %li', $genlist); break; case "NPC설정": diff --git a/hwe/_admin4_submit.php b/hwe/_admin4_submit.php index b6686296..80ba7711 100644 --- a/hwe/_admin4_submit.php +++ b/hwe/_admin4_submit.php @@ -52,7 +52,7 @@ switch($btn) { break; case "강제 사망": $date = date('Y-m-d H:i:s'); - DB::db()->query('update general set turn0=0,killturn=0,turntime=%s where no IN %li',$date, $genlist); + DB::db()->query('update general set turn0=%s,killturn=0,turntime=%s where no IN %li',EncodeCommand(0, 0, 0, 0),$date, $genlist); break; case "메세지 전달": //TODO:새 갠메 시스템으로 변경 diff --git a/hwe/func_command.php b/hwe/func_command.php index b0103006..c10eaf58 100644 --- a/hwe/func_command.php +++ b/hwe/func_command.php @@ -628,7 +628,7 @@ function updateCommand($no, $type=0) { update general set turn0=turn1,turn1=turn2,turn2=turn3,turn3=turn4,turn4=turn5,turn5=turn6,turn6=turn7,turn7=turn8,turn8=turn9, turn9=turn10,turn10=turn11,turn11=turn12,turn12=turn13,turn13=turn14,turn14=turn15,turn15=turn16,turn16=turn17, -turn17=turn18,turn18=turn19,turn19=turn20,turn20=turn21,turn21=turn22,turn22=turn23,turn23='00000000000000' +turn17=turn18,turn18=turn19,turn19=turn20,turn20=turn21,turn21=turn22,turn22=turn23,turn23='".EncodeCommand(0, 0, 0, 0)."' where no='{$general['no']}' "; MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); @@ -642,7 +642,7 @@ update nation set {$turn}4={$turn}5,{$turn}5={$turn}6, {$turn}6={$turn}7,{$turn}7={$turn}8, {$turn}8={$turn}9,{$turn}9={$turn}10, -{$turn}10={$turn}11,{$turn}11='00000000000099' +{$turn}10={$turn}11,{$turn}11='".EncodeCommand(0, 0, 0, 99)."' where nation='{$general['nation']}' "; MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); @@ -672,7 +672,7 @@ turn9=turn8,turn8=turn7, turn7=turn6,turn6=turn5, turn5=turn4,turn4=turn3, turn3=turn2,turn2=turn1, -turn1=turn0,turn0='00000000000000' +turn1=turn0,turn0='".EncodeCommand(0, 0, 0, 0)."' where no='$no' "; MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); @@ -685,7 +685,7 @@ update nation set {$turn}7={$turn}6,{$turn}6={$turn}5, {$turn}5={$turn}4,{$turn}4={$turn}3, {$turn}3={$turn}2,{$turn}2={$turn}1, -{$turn}1={$turn}0,{$turn}0='00000000000099' +{$turn}1={$turn}0,{$turn}0='".EncodeCommand(0, 0, 0, 99)."' where nation='{$general['nation']}' "; MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); @@ -772,19 +772,10 @@ parent.moveProcessing(, ); function EncodeCommand($fourth, $third, $double, $command) { - $str = StringUtil::padStringAlignRight((string)$fourth, 4, "0"); - $str .= StringUtil::padStringAlignRight((string)$third, 4, "0"); - $str .= StringUtil::padStringAlignRight((string)$double, 4, "0"); - $str .= StringUtil::padStringAlignRight((string)$command, 2, "0"); - return $str; + return Json::encode($command, $double, $third, $fourth); } function DecodeCommand($str) { - $command = []; - $command[3] = (int)(substr($str, 0, 4)); - $command[2] = (int)(substr($str, 4, 4)); - $command[1] = (int)(substr($str, 8, 4)); - $command[0] = (int)(substr($str, 12, 2)); - return $command; + return Json::decode($str); } diff --git a/hwe/func_npc.php b/hwe/func_npc.php index 0a52d7c9..9e50decb 100644 --- a/hwe/func_npc.php +++ b/hwe/func_npc.php @@ -107,6 +107,8 @@ function SetCrew($no, $personal, $gold, $leader, $genType, $tech, $region, $city } } + + switch($sel) { case 0: $type = 0; //보병 @@ -181,7 +183,7 @@ function processAI($no) { $general = MYDB_fetch_array($result); // 입력된 턴이 있으면 그것 실행 - if($general['turn0'] != "00000000000000") { + if($general['turn0'] != EncodeCommand(0, 0, 0, 0)) { return; } @@ -824,10 +826,10 @@ function processAI($no) { } switch($command) { - case "00000000000001": //내정 + case EncodeCommand(0, 0, 0, 1): //내정 SetDevelop($genType, $general['no'], $general['city'], $nation['tech']); return; - case "00000000000011": //징병 + case EncodeCommand(0, 0, 0, 11): //징병 $query = "select region from city where nation='{$general['nation']}' order by rand() limit 0,1"; $result = MYDB_query($query, $connect) or Error("processAI16 ".MYDB_error($connect),""); $selRegion = MYDB_fetch_array($result); diff --git a/hwe/sammo/GameUnitConstBase.php b/hwe/sammo/GameUnitConstBase.php index e8037224..dedadc57 100644 --- a/hwe/sammo/GameUnitConstBase.php +++ b/hwe/sammo/GameUnitConstBase.php @@ -6,48 +6,57 @@ class GameUnitConstBase{ } + const T_CASTLE = 0; + const T_FOOTMAN = 1; + const T_ARCHER = 2; + const T_CAVALRY = 3; + const T_WIZARD = 4; + const T_SIEGE = 5; + const T_MISC = 6; + protected static $constID = null; protected static $constName = null; protected static $constCity = null; protected static $constRegion = null; + protected static $constType = null; protected static $_buildData = [ - [ 0, '보병', 100, 150, 7, 10, 9, 9, 0, 0, true, ['표준적인 보병입니다.','보병은 방어특화입니다.']], - [ 1, '청주병', 100, 200, 7, 10, 10, 11, 1, '중원', true, ['저렴하고 튼튼합니다.']], - [ 2, '수병', 150, 150, 7, 10, 11, 10, 1, '오월', true, ['저렴하고 강력합니다.']], - [ 3, '자객병', 100, 150, 7, 20, 10, 10, 2, '저', true, ['은밀하고 날쌥니다.']], - [ 4, '근위병', 150, 200, 7, 10, 12, 12, 2, '낙양', true, ['최강의 보병입니다.']], - [ 5, '등갑병', 100, 250, 7, 5, 13, 10, 1, '남중', true, ['등갑을 두른 보병입니다.']], + [ 0, T_FOOTMAN, '보병', 100, 150, 7, 10, 9, 9, 0, 0, true, ['표준적인 보병입니다.','보병은 방어특화입니다.']], + [ 1, T_FOOTMAN, '청주병', 100, 200, 7, 10, 10, 11, 1, '중원', true, ['저렴하고 튼튼합니다.']], + [ 2, T_FOOTMAN, '수병', 150, 150, 7, 10, 11, 10, 1, '오월', true, ['저렴하고 강력합니다.']], + [ 3, T_FOOTMAN, '자객병', 100, 150, 7, 20, 10, 10, 2, '저', true, ['은밀하고 날쌥니다.']], + [ 4, T_FOOTMAN, '근위병', 150, 200, 7, 10, 12, 12, 2, '낙양', true, ['최강의 보병입니다.']], + [ 5, T_FOOTMAN, '등갑병', 100, 250, 7, 5, 13, 10, 1, '남중', true, ['등갑을 두른 보병입니다.']], - [10, '궁병', 100, 100, 7, 20, 10, 10, 0, 0, true, ['표준적인 궁병입니다.','궁병은 회피특화입니다.']], - [11, '궁기병', 100, 100, 8, 30, 11, 12, 1, '동이', true, ['말을 타고 잘 피합니다.']], - [12, '연노병', 150, 100, 8, 20, 12, 11, 1, '서촉', true, ['화살을 연사합니다.']], - [13, '강궁병', 150, 150, 7, 20, 13, 13, 2, '양양', true, ['강건한 궁병입니다.']], - [14, '석궁병', 200, 100, 7, 20, 13, 13, 2, '건업', true, ['강력한 화살을 쏩니다.']], + [10, T_ARCHER, '궁병', 100, 100, 7, 20, 10, 10, 0, 0, true, ['표준적인 궁병입니다.','궁병은 회피특화입니다.']], + [11, T_ARCHER, '궁기병', 100, 100, 8, 30, 11, 12, 1, '동이', true, ['말을 타고 잘 피합니다.']], + [12, T_ARCHER, '연노병', 150, 100, 8, 20, 12, 11, 1, '서촉', true, ['화살을 연사합니다.']], + [13, T_ARCHER, '강궁병', 150, 150, 7, 20, 13, 13, 2, '양양', true, ['강건한 궁병입니다.']], + [14, T_ARCHER, '석궁병', 200, 100, 7, 20, 13, 13, 2, '건업', true, ['강력한 화살을 쏩니다.']], - [20, '기병', 150, 100, 7, 5, 11, 11, 0, 0, true, ['표준적인 기병입니다.','기병은 공격특화입니다.']], - [21, '백마병', 200, 100, 7, 5, 12, 13, 1, '하북', true, ['백마의 위용을 보여줍니다.']], - [22, '중장기병', 150, 150, 7, 5, 13, 12, 1, '서북', true, ['갑주를 두른 기병입니다.']], - [23, '돌격기병', 200, 100, 8, 5, 13, 11, 2,'흉노', true, ['저돌적으로 공격합니다.']], - [24, '철기병', 100, 200, 7, 5, 11, 13, 2, '강', true, ['철갑을 두른 기병입니다.']], - [25, '수렵기병', 150, 100, 8, 15, 12, 12, 2, '산월', true, ['날쎄고 빠른 기병입니다.']], - [26, '맹수병', 250, 200, 6, 0, 16, 16, 2, '남만', true, ['어느 누구보다 강력합니다.']], - [27, '호표기병', 200, 150, 7, 5, 14, 14, 2, '허창', true, ['정예 기병입니다.']], + [20, T_CAVALRY, '기병', 150, 100, 7, 5, 11, 11, 0, 0, true, ['표준적인 기병입니다.','기병은 공격특화입니다.']], + [21, T_CAVALRY, '백마병', 200, 100, 7, 5, 12, 13, 1, '하북', true, ['백마의 위용을 보여줍니다.']], + [22, T_CAVALRY, '중장기병', 150, 150, 7, 5, 13, 12, 1, '서북', true, ['갑주를 두른 기병입니다.']], + [23, T_CAVALRY, '돌격기병', 200, 100, 8, 5, 13, 11, 2,'흉노', true, ['저돌적으로 공격합니다.']], + [24, T_CAVALRY, '철기병', 100, 200, 7, 5, 11, 13, 2, '강', true, ['철갑을 두른 기병입니다.']], + [25, T_CAVALRY, '수렵기병', 150, 100, 8, 15, 12, 12, 2, '산월', true, ['날쎄고 빠른 기병입니다.']], + [26, T_CAVALRY, '맹수병', 250, 200, 6, 0, 16, 16, 2, '남만', true, ['어느 누구보다 강력합니다.']], + [27, T_CAVALRY, '호표기병', 200, 150, 7, 5, 14, 14, 2, '허창', true, ['정예 기병입니다.']], - [30, '귀병', 80, 80, 7, 5, 9, 9, 0, 0, true, ['계략을 사용하는 병종입니다.']], - [31, '신귀병', 80, 80, 7, 20, 10, 10, 1,'초', true, ['신출귀몰한 귀병입니다.']], - [32, '백귀병', 80, 130, 7, 5, 9, 11, 2, '오환', true, ['저렴하고 튼튼합니다.']], - [33, '흑귀병', 130, 80, 7, 5, 11, 9, 2, '왜', true, ['저렴하고 강력합니다.']], - [34, '악귀병', 130, 130, 7, 0, 12, 12, 2, '장안', true, ['백병전에도 능숙합니다.']], - [35, '남귀병', 60, 60, 7, 10, 8, 8, 0, 1000, false, ['전투를 포기하고 계략에 몰두합니다.']], - [36, '황귀병', 110, 110, 7, 0, 13, 10, 2, '낙양', true, ['고도로 훈련된 귀병입니다.']], - [37, '천귀병', 80, 130, 7, 15, 11, 12, 2, '성도', true, ['갑주를 두른 귀병입니다.']], - [38, '마귀병', 130, 80, 7, 15, 12, 11, 2, '업', true, ['날카로운 무기를 가진 귀병입니다.']], + [30, T_WIZARD, '귀병', 80, 80, 7, 5, 9, 9, 0, 0, true, ['계략을 사용하는 병종입니다.']], + [31, T_WIZARD, '신귀병', 80, 80, 7, 20, 10, 10, 1,'초', true, ['신출귀몰한 귀병입니다.']], + [32, T_WIZARD, '백귀병', 80, 130, 7, 5, 9, 11, 2, '오환', true, ['저렴하고 튼튼합니다.']], + [33, T_WIZARD, '흑귀병', 130, 80, 7, 5, 11, 9, 2, '왜', true, ['저렴하고 강력합니다.']], + [34, T_WIZARD, '악귀병', 130, 130, 7, 0, 12, 12, 2, '장안', true, ['백병전에도 능숙합니다.']], + [35, T_WIZARD, '남귀병', 60, 60, 7, 10, 8, 8, 0, 1000, false, ['전투를 포기하고 계략에 몰두합니다.']], + [36, T_WIZARD, '황귀병', 110, 110, 7, 0, 13, 10, 2, '낙양', true, ['고도로 훈련된 귀병입니다.']], + [37, T_WIZARD, '천귀병', 80, 130, 7, 15, 11, 12, 2, '성도', true, ['갑주를 두른 귀병입니다.']], + [38, T_WIZARD, '마귀병', 130, 80, 7, 15, 12, 11, 2, '업', true, ['날카로운 무기를 가진 귀병입니다.']], - [40, '정란', 100, 100, 6, 0, 15, 5, 0, 0, false, ['높은 구조물 위에서 공격합니다.']], - [41, '충차', 150, 100, 6, 0, 20, 5, 0, 1000, false, ['엄청난 위력으로 성벽을 부수어버립니다.']], - [42, '벽력거', 200, 100, 6, 0, 25, 5, 2, '업', true, ['상대에게 돌덩이를 날립니다.']], - [43, '목우', 50, 200, 5, 0, 30, 5, 2, '성도', true, ['상대를 저지하는 특수병기입니다.']] + [40, T_SIEGE, '정란', 100, 100, 6, 0, 15, 5, 0, 0, false, ['높은 구조물 위에서 공격합니다.']], + [41, T_SIEGE, '충차', 150, 100, 6, 0, 20, 5, 0, 1000, false, ['엄청난 위력으로 성벽을 부수어버립니다.']], + [42, T_SIEGE, '벽력거', 200, 100, 6, 0, 25, 5, 2, '업', true, ['상대에게 돌덩이를 날립니다.']], + [43, T_SIEGE, '목우', 50, 200, 5, 0, 30, 5, 2, '성도', true, ['상대를 저지하는 특수병기입니다.']] ]; /** @@ -68,19 +77,27 @@ class GameUnitConstBase{ return static::$constName[$name]; } - public static function byCity(int $city): GameUnitDetail{ + public static function byCity(int $city): array{ static::_generate(); return static::$constCity[$city]; } - public static function byRegion(int $region): GameUnitDetail{ + public static function byRegion(int $region): array{ static::_generate(); return static::$constRegion[$region]; } + public static function byType(int $type): array{ + if(!key_exists($type, static::$constType)){ + return []; + } + + return static::$constType[$type]; + } + protected static function _generate(){ - if(static::$constID || static::$constName || static::$constCity || static::$constRegion){ + if(static::$constID || static::$constName || static::$constCity || static::$constRegion || static::$constType){ return; } @@ -88,10 +105,12 @@ class GameUnitConstBase{ $constName = []; $constCity = []; $constRegion = []; + $constType = []; foreach(static::$_buildData as $rawUnit){ - list( + [ $id, + $armType, $name, $attack, $defence, @@ -103,7 +122,7 @@ class GameUnitConstBase{ $recruitCondition, $recruitFirst, $info - ) = $rawUnit; + ] = $rawUnit; //0인 경우는 기술치이다. if(!$recruitFirst){ @@ -123,6 +142,7 @@ class GameUnitConstBase{ $unit = new GameUnitDetail( $id, + $armType, $name, $attack, $defence, @@ -138,6 +158,11 @@ class GameUnitConstBase{ $constID[$id] = $unit; $constName[$name] = $unit; + if(!key_exists($armType, $constType)){ + $constType[$armType] = []; + } + $constType[$armType][] = $unit; + if($recruitType == 1){ if(!key_exists($recruitCondition, $constRegion)){ $constRegion[$recruitCondition] = []; diff --git a/hwe/sammo/GameUnitDetail.php b/hwe/sammo/GameUnitDetail.php index c43e65df..975fa4ec 100644 --- a/hwe/sammo/GameUnitDetail.php +++ b/hwe/sammo/GameUnitDetail.php @@ -3,6 +3,7 @@ namespace sammo; class GameUnitDetail{ public $id; + public $armType; public $name; public $attack; public $defence; @@ -17,6 +18,7 @@ class GameUnitDetail{ public function __construct( int $id, + int $armType, string $name, int $attack, int $defence, @@ -30,6 +32,7 @@ class GameUnitDetail{ array $info ){ $this->name = $name; + $this->armType = $armType; $this->attack = $attack; $this->defence = $defence; $this->speed = $speed; diff --git a/hwe/sql/schema.sql b/hwe/sql/schema.sql index 1f6b22fd..83a044fd 100644 --- a/hwe/sql/schema.sql +++ b/hwe/sql/schema.sql @@ -124,30 +124,30 @@ CREATE TABLE `general` ( `betgold` INT(8) NULL DEFAULT '0', `betwingold` INT(8) NULL DEFAULT '0', `term` INT(4) NULL DEFAULT '0', - `turn0` CHAR(14) NULL DEFAULT '00000000000000', - `turn1` CHAR(14) NULL DEFAULT '00000000000000', - `turn2` CHAR(14) NULL DEFAULT '00000000000000', - `turn3` CHAR(14) NULL DEFAULT '00000000000000', - `turn4` CHAR(14) NULL DEFAULT '00000000000000', - `turn5` CHAR(14) NULL DEFAULT '00000000000000', - `turn6` CHAR(14) NULL DEFAULT '00000000000000', - `turn7` CHAR(14) NULL DEFAULT '00000000000000', - `turn8` CHAR(14) NULL DEFAULT '00000000000000', - `turn9` CHAR(14) NULL DEFAULT '00000000000000', - `turn10` CHAR(14) NULL DEFAULT '00000000000000', - `turn11` CHAR(14) NULL DEFAULT '00000000000000', - `turn12` CHAR(14) NULL DEFAULT '00000000000000', - `turn13` CHAR(14) NULL DEFAULT '00000000000000', - `turn14` CHAR(14) NULL DEFAULT '00000000000000', - `turn15` CHAR(14) NULL DEFAULT '00000000000000', - `turn16` CHAR(14) NULL DEFAULT '00000000000000', - `turn17` CHAR(14) NULL DEFAULT '00000000000000', - `turn18` CHAR(14) NULL DEFAULT '00000000000000', - `turn19` CHAR(14) NULL DEFAULT '00000000000000', - `turn20` CHAR(14) NULL DEFAULT '00000000000000', - `turn21` CHAR(14) NULL DEFAULT '00000000000000', - `turn22` CHAR(14) NULL DEFAULT '00000000000000', - `turn23` CHAR(14) NULL DEFAULT '00000000000000', + `turn0` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn1` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn2` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn3` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn4` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn5` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn6` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn7` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn8` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn9` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn10` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn11` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn12` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn13` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn14` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn15` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn16` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn17` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn18` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn19` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn20` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn21` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn22` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', + `turn23` VARCHAR(30) NULL DEFAULT '[0,0,0,0]', `recturn` CHAR(14) NULL DEFAULT '', `resturn` CHAR(14) NULL DEFAULT '', PRIMARY KEY (`no`), @@ -330,106 +330,106 @@ CREATE TABLE `nation` ( `l11term` INT(4) NULL DEFAULT '0', `l10term` INT(4) NULL DEFAULT '0', `l9term` INT(4) NULL DEFAULT '0', - `l12turn0` CHAR(14) NULL DEFAULT '00000000000099', - `l11turn0` CHAR(14) NULL DEFAULT '00000000000099', - `l10turn0` CHAR(14) NULL DEFAULT '00000000000099', - `l9turn0` CHAR(14) NULL DEFAULT '00000000000099', - `l12turn1` CHAR(14) NULL DEFAULT '00000000000099', - `l11turn1` CHAR(14) NULL DEFAULT '00000000000099', - `l10turn1` CHAR(14) NULL DEFAULT '00000000000099', - `l9turn1` CHAR(14) NULL DEFAULT '00000000000099', - `l12turn2` CHAR(14) NULL DEFAULT '00000000000099', - `l11turn2` CHAR(14) NULL DEFAULT '00000000000099', - `l10turn2` CHAR(14) NULL DEFAULT '00000000000099', - `l9turn2` CHAR(14) NULL DEFAULT '00000000000099', - `l12turn3` CHAR(14) NULL DEFAULT '00000000000099', - `l11turn3` CHAR(14) NULL DEFAULT '00000000000099', - `l10turn3` CHAR(14) NULL DEFAULT '00000000000099', - `l9turn3` CHAR(14) NULL DEFAULT '00000000000099', - `l12turn4` CHAR(14) NULL DEFAULT '00000000000099', - `l11turn4` CHAR(14) NULL DEFAULT '00000000000099', - `l10turn4` CHAR(14) NULL DEFAULT '00000000000099', - `l9turn4` CHAR(14) NULL DEFAULT '00000000000099', - `l12turn5` CHAR(14) NULL DEFAULT '00000000000099', - `l11turn5` CHAR(14) NULL DEFAULT '00000000000099', - `l10turn5` CHAR(14) NULL DEFAULT '00000000000099', - `l9turn5` CHAR(14) NULL DEFAULT '00000000000099', - `l12turn6` CHAR(14) NULL DEFAULT '00000000000099', - `l11turn6` CHAR(14) NULL DEFAULT '00000000000099', - `l10turn6` CHAR(14) NULL DEFAULT '00000000000099', - `l9turn6` CHAR(14) NULL DEFAULT '00000000000099', - `l12turn7` CHAR(14) NULL DEFAULT '00000000000099', - `l11turn7` CHAR(14) NULL DEFAULT '00000000000099', - `l10turn7` CHAR(14) NULL DEFAULT '00000000000099', - `l9turn7` CHAR(14) NULL DEFAULT '00000000000099', - `l12turn8` CHAR(14) NULL DEFAULT '00000000000099', - `l11turn8` CHAR(14) NULL DEFAULT '00000000000099', - `l10turn8` CHAR(14) NULL DEFAULT '00000000000099', - `l9turn8` CHAR(14) NULL DEFAULT '00000000000099', - `l12turn9` CHAR(14) NULL DEFAULT '00000000000099', - `l11turn9` CHAR(14) NULL DEFAULT '00000000000099', - `l10turn9` CHAR(14) NULL DEFAULT '00000000000099', - `l9turn9` CHAR(14) NULL DEFAULT '00000000000099', - `l12turn10` CHAR(14) NULL DEFAULT '00000000000099', - `l11turn10` CHAR(14) NULL DEFAULT '00000000000099', - `l10turn10` CHAR(14) NULL DEFAULT '00000000000099', - `l9turn10` CHAR(14) NULL DEFAULT '00000000000099', - `l12turn11` CHAR(14) NULL DEFAULT '00000000000099', - `l11turn11` CHAR(14) NULL DEFAULT '00000000000099', - `l10turn11` CHAR(14) NULL DEFAULT '00000000000099', - `l9turn11` CHAR(14) NULL DEFAULT '00000000000099', + `l12turn0` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l11turn0` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l10turn0` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l9turn0` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l12turn1` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l11turn1` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l10turn1` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l9turn1` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l12turn2` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l11turn2` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l10turn2` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l9turn2` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l12turn3` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l11turn3` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l10turn3` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l9turn3` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l12turn4` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l11turn4` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l10turn4` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l9turn4` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l12turn5` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l11turn5` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l10turn5` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l9turn5` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l12turn6` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l11turn6` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l10turn6` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l9turn6` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l12turn7` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l11turn7` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l10turn7` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l9turn7` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l12turn8` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l11turn8` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l10turn8` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l9turn8` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l12turn9` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l11turn9` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l10turn9` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l9turn9` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l12turn10` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l11turn10` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l10turn10` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l9turn10` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l12turn11` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l11turn11` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l10turn11` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l9turn11` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', `l8term` INT(4) NULL DEFAULT '0', `l7term` INT(4) NULL DEFAULT '0', `l6term` INT(4) NULL DEFAULT '0', `l5term` INT(4) NULL DEFAULT '0', - `l8turn0` CHAR(14) NULL DEFAULT '00000000000099', - `l7turn0` CHAR(14) NULL DEFAULT '00000000000099', - `l6turn0` CHAR(14) NULL DEFAULT '00000000000099', - `l5turn0` CHAR(14) NULL DEFAULT '00000000000099', - `l8turn1` CHAR(14) NULL DEFAULT '00000000000099', - `l7turn1` CHAR(14) NULL DEFAULT '00000000000099', - `l6turn1` CHAR(14) NULL DEFAULT '00000000000099', - `l5turn1` CHAR(14) NULL DEFAULT '00000000000099', - `l8turn2` CHAR(14) NULL DEFAULT '00000000000099', - `l7turn2` CHAR(14) NULL DEFAULT '00000000000099', - `l6turn2` CHAR(14) NULL DEFAULT '00000000000099', - `l5turn2` CHAR(14) NULL DEFAULT '00000000000099', - `l8turn3` CHAR(14) NULL DEFAULT '00000000000099', - `l7turn3` CHAR(14) NULL DEFAULT '00000000000099', - `l6turn3` CHAR(14) NULL DEFAULT '00000000000099', - `l5turn3` CHAR(14) NULL DEFAULT '00000000000099', - `l8turn4` CHAR(14) NULL DEFAULT '00000000000099', - `l7turn4` CHAR(14) NULL DEFAULT '00000000000099', - `l6turn4` CHAR(14) NULL DEFAULT '00000000000099', - `l5turn4` CHAR(14) NULL DEFAULT '00000000000099', - `l8turn5` CHAR(14) NULL DEFAULT '00000000000099', - `l7turn5` CHAR(14) NULL DEFAULT '00000000000099', - `l6turn5` CHAR(14) NULL DEFAULT '00000000000099', - `l5turn5` CHAR(14) NULL DEFAULT '00000000000099', - `l8turn6` CHAR(14) NULL DEFAULT '00000000000099', - `l7turn6` CHAR(14) NULL DEFAULT '00000000000099', - `l6turn6` CHAR(14) NULL DEFAULT '00000000000099', - `l5turn6` CHAR(14) NULL DEFAULT '00000000000099', - `l8turn7` CHAR(14) NULL DEFAULT '00000000000099', - `l7turn7` CHAR(14) NULL DEFAULT '00000000000099', - `l6turn7` CHAR(14) NULL DEFAULT '00000000000099', - `l5turn7` CHAR(14) NULL DEFAULT '00000000000099', - `l8turn8` CHAR(14) NULL DEFAULT '00000000000099', - `l7turn8` CHAR(14) NULL DEFAULT '00000000000099', - `l6turn8` CHAR(14) NULL DEFAULT '00000000000099', - `l5turn8` CHAR(14) NULL DEFAULT '00000000000099', - `l8turn9` CHAR(14) NULL DEFAULT '00000000000099', - `l7turn9` CHAR(14) NULL DEFAULT '00000000000099', - `l6turn9` CHAR(14) NULL DEFAULT '00000000000099', - `l5turn9` CHAR(14) NULL DEFAULT '00000000000099', - `l8turn10` CHAR(14) NULL DEFAULT '00000000000099', - `l7turn10` CHAR(14) NULL DEFAULT '00000000000099', - `l6turn10` CHAR(14) NULL DEFAULT '00000000000099', - `l5turn10` CHAR(14) NULL DEFAULT '00000000000099', - `l8turn11` CHAR(14) NULL DEFAULT '00000000000099', - `l7turn11` CHAR(14) NULL DEFAULT '00000000000099', - `l6turn11` CHAR(14) NULL DEFAULT '00000000000099', - `l5turn11` CHAR(14) NULL DEFAULT '00000000000099', + `l8turn0` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l7turn0` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l6turn0` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l5turn0` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l8turn1` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l7turn1` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l6turn1` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l5turn1` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l8turn2` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l7turn2` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l6turn2` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l5turn2` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l8turn3` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l7turn3` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l6turn3` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l5turn3` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l8turn4` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l7turn4` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l6turn4` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l5turn4` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l8turn5` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l7turn5` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l6turn5` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l5turn5` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l8turn6` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l7turn6` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l6turn6` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l5turn6` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l8turn7` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l7turn7` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l6turn7` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l5turn7` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l8turn8` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l7turn8` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l6turn8` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l5turn8` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l8turn9` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l7turn9` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l6turn9` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l5turn9` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l8turn10` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l7turn10` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l6turn10` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l5turn10` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l8turn11` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l7turn11` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l6turn11` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', + `l5turn11` VARCHAR(30) NULL DEFAULT '[0,0,0,99]', `aux` TEXT NOT NULL DEFAULT '{}', PRIMARY KEY (`nation`) )