From 6775c06d3e5064a0d7f0106f82c946efc303626c Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 31 Mar 2018 05:21:47 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B3=91=EC=A2=85=EC=97=90=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=ED=85=8D=EC=8A=A4=ED=8A=B8=20=ED=8F=AC=ED=95=A8.?= =?UTF-8?q?=20=EC=A7=95=EB=B3=91,=20=EB=AA=A8=EB=B3=91=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EB=82=B4=EC=9A=A9=EC=9D=84=20GameUnitCons?= =?UTF-8?q?t,=20GameUnitDetail=EC=97=90=20=EA=B8=B0=EB=B0=98=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD=20-=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=EB=A1=9C=20=EA=B8=88,=EC=8C=80=EC=9D=84=20=EC=86=8C?= =?UTF-8?q?=EC=88=98=EC=A0=90=EC=9D=84=20=20=ED=8F=AC=ED=95=A8=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- twe/processing.php | 833 ++++++++--------------------------- twe/sammo/GameUnitConst.php | 78 ++-- twe/sammo/GameUnitDetail.php | 4 +- 3 files changed, 236 insertions(+), 679 deletions(-) diff --git a/twe/processing.php b/twe/processing.php index 63049316..c3397842 100644 --- a/twe/processing.php +++ b/twe/processing.php @@ -240,11 +240,6 @@ function command_11($connect, $turn, $command) { $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); $me = MYDB_fetch_array($result); - //현재 도시 - $query = "select city,region from city where city='{$me['city']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $curCity = MYDB_fetch_array($result); - $query = "select level,tech from nation where nation='{$me['nation']}'"; $result = MYDB_query($query, $connect) or Error("process53 ".MYDB_error($connect),""); $nation = MYDB_fetch_array($result); @@ -257,80 +252,14 @@ function command_11($connect, $turn, $command) { $lbonus = 0; } - $explain = GetExplain(); + $ownCities = []; + $ownRegions = []; + $relativeYear = $admin['year'] - $admin['startyear']; + $tech = $nation['tech']; - if($admin['year'] < $admin['startyear']+3) { - //그 국가에서 그 병종 가능한지 - $valid[0] = 1; $color[0] = $_basecolor2; - $valid[10] = 1; $color[10] = $_basecolor2; - $valid[20] = 1; $color[20] = $_basecolor2; - $valid[30] = 1; $color[30] = $_basecolor2; - $valid[40] = 1; $color[40] = "red"; // 정란 - $valid[41] = 1; $color[41] = "red"; // 충차 - } else { - // 아국 도시 구분 - $query = "select city,level,region from city where nation='{$me['nation']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $citycount = MYDB_num_rows($result); - - for($i=0; $i < $citycount; $i++) { - $city = MYDB_fetch_array($result); - // 기술 1000 이상부터 지역병 - if($nation['tech'] >= 1000) { - $myregion[$city['region']] = 1; - } - // 기술 2000 이상부터 이민족병 - if($city['level'] == 4 && $nation['tech'] >= 2000) { - $mycity[$city['city']] = 1; - } - // 기술 3000 이상부터 특수병 - if($city['level'] == 8 && $nation['tech'] >= 3000) { - $mycity[$city['city']] = 1; - } - } - - //그 국가에서 그 병종 가능한지 - $valid[0] = 1; $color[0] = $_basecolor2; - $valid[1] = $myregion[2]; $color[1] = "limegreen"; // 청주병(중원) - $valid[2] = $myregion[7]; $color[2] = "limegreen"; // 수병(오월) - $valid[3] = $mycity[64]; $color[3] = "limegreen"; // 자객병(저) - $valid[4] = $mycity[3]; $color[4] = "limegreen"; // 근위병(낙양) - $valid[5] = $myregion[5]; $color[5] = "limegreen"; // 등갑병(남중) - $valid[10] = 1; $color[10] = $_basecolor2; - $valid[11] = $myregion[8]; $color[11] = "limegreen"; // 궁기병(동이) - $valid[12] = $myregion[4]; $color[12] = "limegreen"; // 연노병(서촉) - $valid[13] = $mycity[6]; $color[13] = "limegreen"; // 강궁병(양양) - $valid[14] = $mycity[7]; $color[14] = "limegreen"; // 석궁병(건업) - $valid[20] = 1; $color[20] = $_basecolor2; - $valid[21] = $myregion[1]; $color[21] = "limegreen"; // 백마병(하북) - $valid[22] = $myregion[3]; $color[22] = "limegreen"; // 중장기병(서북) - $valid[23] = $mycity[65]; $color[23] = "limegreen"; // 돌격기병(흉노) - $valid[24] = $mycity[63]; $color[24] = "limegreen"; // 철기병(강) - $valid[25] = $mycity[67]; $color[25] = "limegreen"; // 수렵기병(산월) - $valid[26] = $mycity[66]; $color[26] = "limegreen"; // 맹수병(남만) - $valid[27] = $mycity[2]; $color[27] = "limegreen"; // 호표기병(허창) - $valid[30] = 1; $color[30] = $_basecolor2; - $valid[31] = $myregion[6]; $color[31] = "limegreen"; // 신귀병(초) - $valid[32] = $mycity[68]; $color[32] = "limegreen"; // 백귀병(오환) - $valid[33] = $mycity[69]; $color[33] = "limegreen"; // 흑귀병(왜) - $valid[34] = $mycity[4]; $color[34] = "limegreen"; // 악귀병(장안) - $valid[35] = 1; $color[35] = $_basecolor2;// 남귀병 - $valid[36] = $mycity[3]; $color[36] = "limegreen"; // 황귀병(낙양) - $valid[37] = $mycity[5]; $color[37] = "limegreen"; // 천귀병(성도) - $valid[38] = $mycity[1]; $color[38] = "limegreen"; // 마귀병(업) - $valid[40] = 1; $color[40] = $_basecolor2;// 정란 - $valid[41] = 1; $color[41] = $_basecolor2;// 충차 - $valid[42] = $mycity[1]; $color[42] = "limegreen"; // 벽력거(업) - $valid[43] = $mycity[5]; $color[43] = "limegreen"; // 목우(성도) - - // 남귀병은 기술1등급부터 - if($nation['tech'] < 1000) { - $valid[35] = 0; - } - // 충차는 기술1등급부터 - if($nation['tech'] < 1000) { - $valid[41] = 0; - } + foreach(DB::db()->query('SELECT city, region from city where nation = %i', $me['nation']) as $city){ + $ownCities[$city['city']] = 1; + $ownRegions[$city['region']] = 1; } $leader = floor($me['leader'] * (100 - $me['injury'])/100) + getHorseEff($me['horse']) + $lbonus; @@ -406,254 +335,97 @@ function calc(cost, formnum) { 특징 "; - echo " - 보병 계열"; - - for($i=0; $i <= 5; $i++) { - if($valid[$i] == 1) { - $ric = $admin["ric{$i}"] * $cost; - $cst = $admin["cst{$i}"] * $cost; - //성격 보정 - $cst = CharCost($cst, $me['personal']); - //특기 보정 : 보병, 징병 - if($me['special2'] == 50) { $cst *= 0.9; } - if($me['special2'] == 72) { $cst *= 0.5; } - $att = $admin["att{$i}"] + $abil; - $def = $admin["def{$i}"] + $abil; - $spd = $admin["spd{$i}"]; - $avd = $admin["avd{$i}"]; - $ric = round($ric); - $cst = round($cst); - $l = $color[$i]; - $weapImage = "{$images}/weap{$i}.jpg"; - if($admin['show_img_level'] < 2) { $weapImage = "{$image}/default.jpg"; } - echo " - - - ".getTypename($i)." - {$att} - {$def} - {$spd} - {$avd} - {$ric} - {$cst} -
- - 00명
- - - "; - - for($j=0; $j < sizeof($turn); $j++) { - echo " - "; - } - echo " - -
- $explain[$i] - "; + foreach(GameUnitConst::all() as $i=>$unit) { + if($i == 0){ + echo '보병 계열'; } - } - - echo " - 궁병 계열"; - - for($i=10; $i <= 14; $i++) { - if($valid[$i] == 1) { - $ric = $admin["ric{$i}"] * $cost; - $cst = $admin["cst{$i}"] * $cost; - //성격 보정 - $cst = CharCost($cst, $me['personal']); - //특기 보정 : 궁병, 징병 - if($me['special2'] == 51) { $cst *= 0.9; } - if($me['special2'] == 72) { $cst *= 0.5; } - $att = $admin["att{$i}"] + $abil; - $def = $admin["def{$i}"] + $abil; - $spd = $admin["spd{$i}"]; - $avd = $admin["avd{$i}"]; - $ric = round($ric); - $cst = round($cst); - $l = $color[$i]; - $weapImage = "{$images}/weap{$i}.jpg"; - if($admin['show_img_level'] < 2) { $weapImage = "{$image}/default.jpg"; } - echo " - - - ".getTypename($i)." - {$att} - {$def} - {$spd} - {$avd} - {$ric} - {$cst} -
- - 00명
- - - "; - - for($j=0; $j < sizeof($turn); $j++) { - echo " - "; - } - echo " - -
- $explain[$i] - "; + else if($i == 10){ + echo '궁병 계열'; } - } - - echo " - 기병 계열"; - - for($i=20; $i <= 27; $i++) { - if($valid[$i] == 1) { - $ric = $admin["ric{$i}"] * $cost; - $cst = $admin["cst{$i}"] * $cost; - //성격 보정 - $cst = CharCost($cst, $me['personal']); - //특기 보정 : 기병, 징병 - if($me['special2'] == 52) { $cst *= 0.9; } - if($me['special2'] == 72) { $cst *= 0.5; } - $att = $admin["att{$i}"] + $abil; - $def = $admin["def{$i}"] + $abil; - $spd = $admin["spd{$i}"]; - $avd = $admin["avd{$i}"]; - $ric = round($ric); - $cst = round($cst); - $l = $color[$i]; - $weapImage = "{$images}/weap{$i}.jpg"; - if($admin['show_img_level'] < 2) { $weapImage = "{$image}/default.jpg"; } - echo " - - - ".getTypename($i)." - {$att} - {$def} - {$spd} - {$avd} - {$ric} - {$cst} -
- - 00명
- - - "; - - for($j=0; $j < sizeof($turn); $j++) { - echo " - "; - } - echo " - -
- $explain[$i] - "; + else if($i == 20){ + echo '기병 계열'; } - } - - echo " - 귀병 계열"; - - for($i=30; $i <= 38; $i++) { - if($valid[$i] == 1) { - $ric = $admin["ric{$i}"] * $cost; - $cst = $admin["cst{$i}"] * $cost; - //성격 보정 - $cst = CharCost($cst, $me['personal']); - //특기 보정 : 귀병, 징병 - if($me['special2'] == 40) { $cst *= 0.9; } - if($me['special2'] == 72) { $cst *= 0.5; } - $att = $admin["att{$i}"] + $abil; - $def = $admin["def{$i}"] + $abil; - $spd = $admin["spd{$i}"]; - $avd = $admin["avd{$i}"]; - $ric = round($ric); - $cst = round($cst); - $l = $color[$i]; - $weapImage = "{$images}/weap{$i}.jpg"; - if($admin['show_img_level'] < 2) { $weapImage = "{$image}/default.jpg"; } - echo " - - - ".getTypename($i)." - {$att} - {$def} - {$spd} - {$avd} - {$ric} - {$cst} -
- - 00명
- - - "; - - for($j=0; $j < sizeof($turn); $j++) { - echo " - "; - } - echo " - -
- $explain[$i] - "; + else if($i == 30){ + echo '귀병 계열'; } - } - - echo " - 차 계열"; - - for($i=40; $i <= 43; $i++) { - if($valid[$i] == 1) { - $ric = $admin["ric{$i}"] * $cost; - $cst = $admin["cst{$i}"] * $cost; - //성격 보정 - $cst = CharCost($cst, $me['personal']); - //특기 보정 : 공성, 징병 - if($me['special2'] == 53) { $cst *= 0.9; } - if($me['special2'] == 72) { $cst *= 0.5; } - $att = $admin["att{$i}"] + $abil; - $def = $admin["def{$i}"] + $abil; - $spd = $admin["spd{$i}"]; - $avd = $admin["avd{$i}"]; - $ric = round($ric); - $cst = round($cst); - $l = $color[$i]; - $weapImage = "{$images}/weap{$i}.jpg"; - if($admin['show_img_level'] < 2) { $weapImage = "{$image}/default.jpg"; } - echo " - - - ".getTypename($i)." - {$att} - {$def} - {$spd} - {$avd} - {$ric} - {$cst} -
- - 00명
- - - "; - - for($j=0; $j < sizeof($turn); $j++) { - echo " - "; - } - echo " - -
- $explain[$i] - "; + else if($i == 40){ + echo '차병 계열'; } + + if(!$unit->isValid($ownCities, $ownRegions, $relativeYear, $tech)){ + continue; //TODO: 불가능한 병종도 보여줄 필요가 있음. + } + + if($unit->recruitType == 0){ + $l = 'green'; + } + else{ + $l = 'limegreen'; + } + + $baseRice = $unit->rice * $cost; + $baseCost = $unit->cost * $cost; + $baseCost = CharCost($baseCost, $me['personal']); + + $unitBaseType = intdiv($this->id, 10); + if($me['special2'] == 50 && $unitBaseType == 0){ + $baseCost *= 0.9; + } + else if($me['special2'] == 51 && $unitBaseType == 1){ + $baseCost *= 0.9; + } + else if($me['special2'] == 52 && $unitBaseType == 2){ + $baseCost *= 0.9; + } + else if($me['special2'] == 53 && $unitBaseType == 3){ + $baseCost *= 0.9; + } + else if($me['special2'] == 54 && $unitBaseType == 4){ + $baseCost *= 0.9; + } + else if($me['special2'] == 72) { + $baseCost *= 0.5; + } + + $name = $this->name; + $att = $this->attack + $abil; + $def = $this->defence + $abil; + $spd = $this->speed; + $avd = $this->avoid; + $weapImage = "{$images}/weap{$i}.jpg"; + if($admin['show_img_level'] < 2) { $weapImage = "{$image}/default.jpg"; } + + $baseRiceShort = round($baseRice, 1); + $baseCostShort = round($baseCost, 1); + + $info = join('
', $this->info); + + echo " + + + {$name} + {$att} + {$def} + {$spd} + {$avd} + {$baseRiceShort} + {$baseCostShort} +
+ + 00명
+ + + "; + + for($j=0; $j < sizeof($turn); $j++) { + echo " + "; + } + echo " + +
+ $info + "; } echo " @@ -669,14 +441,9 @@ function command_12($connect, $turn, $command) { $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); $admin = MYDB_fetch_array($result); - $query = "select no,nation,personal,special2,level,city,crew,horse,injury,leader,crewtype,gold from general where owner='{$_SESSION['userID']}'"; - $result = MYDB_query($query, $connect) or Error("command_12 ".MYDB_error($connect),""); - $me = MYDB_fetch_array($result); - - //현재 도시 - $query = "select city,region from city where city='{$me['city']}'"; + $query = "select no,nation,level,personal,special2,level,city,crew,horse,injury,leader,crewtype,gold from general where owner='{$_SESSION['userID']}'"; $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $curCity = MYDB_fetch_array($result); + $me = MYDB_fetch_array($result); $query = "select level,tech from nation where nation='{$me['nation']}'"; $result = MYDB_query($query, $connect) or Error("process53 ".MYDB_error($connect),""); @@ -690,80 +457,14 @@ function command_12($connect, $turn, $command) { $lbonus = 0; } - $explain = GetExplain(); + $ownCities = []; + $ownRegions = []; + $relativeYear = $admin['year'] - $admin['startyear']; + $tech = $nation['tech']; - if($admin['year'] < $admin['startyear']+3) { - //그 국가에서 그 병종 가능한지 - $valid[0] = 1; $color[0] = $_basecolor2; - $valid[10] = 1; $color[10] = $_basecolor2; - $valid[20] = 1; $color[20] = $_basecolor2; - $valid[30] = 1; $color[30] = $_basecolor2; - $valid[40] = 1; $color[40] = "red"; // 정란 - $valid[41] = 1; $color[41] = "red"; // 충차 - } else { - // 아국 도시 구분 - $query = "select city,level,region from city where nation='{$me['nation']}'"; - $result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),""); - $citycount = MYDB_num_rows($result); - - for($i=0; $i < $citycount; $i++) { - $city = MYDB_fetch_array($result); - // 기술 1000 이상부터 지역병 - if($nation['tech'] >= 1000) { - $myregion[$city['region']] = 1; - } - // 기술 2000 이상부터 이민족병 - if($city['level'] == 4 && $nation['tech'] >= 2000) { - $mycity[$city['city']] = 1; - } - // 기술 3000 이상부터 특수병 - if($city['level'] == 8 && $nation['tech'] >= 3000) { - $mycity[$city['city']] = 1; - } - } - - //그 국가에서 그 병종 가능한지 - $valid[0] = 1; $color[0] = $_basecolor2; - $valid[1] = $myregion[2]; $color[1] = "limegreen"; // 청주병(중원) - $valid[2] = $myregion[7]; $color[2] = "limegreen"; // 수병(오월) - $valid[3] = $mycity[64]; $color[3] = "limegreen"; // 자객병(저) - $valid[4] = $mycity[3]; $color[4] = "limegreen"; // 근위병(낙양) - $valid[5] = $myregion[5]; $color[5] = "limegreen"; // 등갑병(남중) - $valid[10] = 1; $color[10] = $_basecolor2; - $valid[11] = $myregion[8]; $color[11] = "limegreen"; // 궁기병(동이) - $valid[12] = $myregion[4]; $color[12] = "limegreen"; // 연노병(서촉) - $valid[13] = $mycity[6]; $color[13] = "limegreen"; // 강궁병(양양) - $valid[14] = $mycity[7]; $color[14] = "limegreen"; // 석궁병(건업) - $valid[20] = 1; $color[20] = $_basecolor2; - $valid[21] = $myregion[1]; $color[21] = "limegreen"; // 백마병(하북) - $valid[22] = $myregion[3]; $color[22] = "limegreen"; // 중장기병(서북) - $valid[23] = $mycity[65]; $color[23] = "limegreen"; // 돌격기병(흉노) - $valid[24] = $mycity[63]; $color[24] = "limegreen"; // 철기병(강) - $valid[25] = $mycity[67]; $color[25] = "limegreen"; // 수렵기병(산월) - $valid[26] = $mycity[66]; $color[26] = "limegreen"; // 맹수병(남만) - $valid[27] = $mycity[2]; $color[27] = "limegreen"; // 호표기병(허창) - $valid[30] = 1; $color[30] = $_basecolor2; - $valid[31] = $myregion[6]; $color[31] = "limegreen"; // 신귀병(초) - $valid[32] = $mycity[68]; $color[32] = "limegreen"; // 백귀병(오환) - $valid[33] = $mycity[69]; $color[33] = "limegreen"; // 흑귀병(왜) - $valid[34] = $mycity[4]; $color[34] = "limegreen"; // 악귀병(장안) - $valid[35] = 1; $color[35] = $_basecolor2;// 남귀병 - $valid[36] = $mycity[3]; $color[36] = "limegreen"; // 황귀병(낙양) - $valid[37] = $mycity[5]; $color[37] = "limegreen"; // 천귀병(성도) - $valid[38] = $mycity[1]; $color[38] = "limegreen"; // 마귀병(업) - $valid[40] = 1; $color[40] = $_basecolor2;// 정란 - $valid[41] = 1; $color[41] = $_basecolor2;// 충차 - $valid[42] = $mycity[1]; $color[42] = "limegreen"; // 벽력거(업) - $valid[43] = $mycity[5]; $color[43] = "limegreen"; // 목우(성도) - - // 남귀병은 기술1등급부터 - if($nation['tech'] < 1000) { - $valid[35] = 0; - } - // 충차는 기술1등급부터 - if($nation['tech'] < 1000) { - $valid[41] = 0; - } + foreach(DB::db()->query('SELECT city, region from city where nation = %i', $me['nation']) as $city){ + $ownCities[$city['city']] = 1; + $ownRegions[$city['region']] = 1; } $leader = floor($me['leader'] * (100 - $me['injury'])/100) + getHorseEff($me['horse']) + $lbonus; @@ -840,254 +541,98 @@ function calc(cost, formnum) { 특징 "; - echo " - 보병 계열"; - - for($i=0; $i <= 5; $i++) { - if($valid[$i] == 1) { - $ric = $admin["ric{$i}"] * $cost; - $cst = $admin["cst{$i}"] * $cost; - //성격 보정 - $cst = CharCost($cst, $me['personal']); - //특기 보정 : 보병, 징병 - if($me['special2'] == 50) { $cst *= 0.9; } - if($me['special2'] == 72) { $cst *= 0.5; } - $att = $admin["att{$i}"] + $abil; - $def = $admin["def{$i}"] + $abil; - $spd = $admin["spd{$i}"]; - $avd = $admin["avd{$i}"]; - $ric = round($ric); - $cst = round($cst); - $l = $color[$i]; - $weapImage = "{$images}/weap{$i}.jpg"; - if($admin['show_img_level'] < 2) { $weapImage = "{$image}/default.jpg"; } - echo " - - - ".getTypename($i)." - {$att} - {$def} - {$spd} - {$avd} - {$ric} - {$cst} -
- - 00명
- - - "; - - for($j=0; $j < sizeof($turn); $j++) { - echo " - "; - } - echo " - -
- $explain[$i] - "; + + foreach(GameUnitConst::all() as $i=>$unit) { + if($i == 0){ + echo '보병 계열'; } - } - - echo " - 궁병 계열"; - - for($i=10; $i <= 14; $i++) { - if($valid[$i] == 1) { - $ric = $admin["ric{$i}"] * $cost; - $cst = $admin["cst{$i}"] * $cost; - //성격 보정 - $cst = CharCost($cst, $me['personal']); - //특기 보정 : 궁병, 징병 - if($me['special2'] == 51) { $cst *= 0.9; } - if($me['special2'] == 72) { $cst *= 0.5; } - $att = $admin["att{$i}"] + $abil; - $def = $admin["def{$i}"] + $abil; - $spd = $admin["spd{$i}"]; - $avd = $admin["avd{$i}"]; - $ric = round($ric); - $cst = round($cst); - $l = $color[$i]; - $weapImage = "{$images}/weap{$i}.jpg"; - if($admin['show_img_level'] < 2) { $weapImage = "{$image}/default.jpg"; } - echo " - - - ".getTypename($i)." - {$att} - {$def} - {$spd} - {$avd} - {$ric} - {$cst} -
- - 00명
- - - "; - - for($j=0; $j < sizeof($turn); $j++) { - echo " - "; - } - echo " - -
- $explain[$i] - "; + else if($i == 10){ + echo '궁병 계열'; } - } - - echo " - 기병 계열"; - - for($i=20; $i <= 27; $i++) { - if($valid[$i] == 1) { - $ric = $admin["ric{$i}"] * $cost; - $cst = $admin["cst{$i}"] * $cost; - //성격 보정 - $cst = CharCost($cst, $me['personal']); - //특기 보정 : 기병, 징병 - if($me['special2'] == 52) { $cst *= 0.9; } - if($me['special2'] == 72) { $cst *= 0.5; } - $att = $admin["att{$i}"] + $abil; - $def = $admin["def{$i}"] + $abil; - $spd = $admin["spd{$i}"]; - $avd = $admin["avd{$i}"]; - $ric = round($ric); - $cst = round($cst); - $l = $color[$i]; - $weapImage = "{$images}/weap{$i}.jpg"; - if($admin['show_img_level'] < 2) { $weapImage = "{$image}/default.jpg"; } - echo " - - - ".getTypename($i)." - {$att} - {$def} - {$spd} - {$avd} - {$ric} - {$cst} -
- - 00명
- - - "; - - for($j=0; $j < sizeof($turn); $j++) { - echo " - "; - } - echo " - -
- $explain[$i] - "; + else if($i == 20){ + echo '기병 계열'; } - } - - echo " - 귀병 계열"; - - for($i=30; $i <= 38; $i++) { - if($valid[$i] == 1) { - $ric = $admin["ric{$i}"] * $cost; - $cst = $admin["cst{$i}"] * $cost; - //성격 보정 - $cst = CharCost($cst, $me['personal']); - //특기 보정 : 귀병, 징병 - if($me['special2'] == 40) { $cst *= 0.9; } - if($me['special2'] == 72) { $cst *= 0.5; } - $att = $admin["att{$i}"] + $abil; - $def = $admin["def{$i}"] + $abil; - $spd = $admin["spd{$i}"]; - $avd = $admin["avd{$i}"]; - $ric = round($ric); - $cst = round($cst); - $l = $color[$i]; - $weapImage = "{$images}/weap{$i}.jpg"; - if($admin['show_img_level'] < 2) { $weapImage = "{$image}/default.jpg"; } - echo " - - - ".getTypename($i)." - {$att} - {$def} - {$spd} - {$avd} - {$ric} - {$cst} -
- - 00명
- - - "; - - for($j=0; $j < sizeof($turn); $j++) { - echo " - "; - } - echo " - -
- $explain[$i] - "; + else if($i == 30){ + echo '귀병 계열'; } - } - - echo " - 차 계열"; - - for($i=40; $i <= 43; $i++) { - if($valid[$i] == 1) { - $ric = $admin["ric{$i}"] * $cost; - $cst = $admin["cst{$i}"] * $cost; - //성격 보정 - $cst = CharCost($cst, $me['personal']); - //특기 보정 : 공성, 징병 - if($me['special2'] == 53) { $cst *= 0.9; } - if($me['special2'] == 72) { $cst *= 0.5; } - $att = $admin["att{$i}"] + $abil; - $def = $admin["def{$i}"] + $abil; - $spd = $admin["spd{$i}"]; - $avd = $admin["avd{$i}"]; - $ric = round($ric); - $cst = round($cst); - $l = $color[$i]; - $weapImage = "{$images}/weap{$i}.jpg"; - if($admin['show_img_level'] < 2) { $weapImage = "{$image}/default.jpg"; } - echo " - - - ".getTypename($i)." - {$att} - {$def} - {$spd} - {$avd} - {$ric} - {$cst} -
- - 00명
- - - "; - - for($j=0; $j < sizeof($turn); $j++) { - echo " - "; - } - echo " - -
- $explain[$i] - "; + else if($i == 40){ + echo '차병 계열'; } + + if(!$unit->isValid($ownCities, $ownRegions, $relativeYear, $tech)){ + continue; //TODO: 불가능한 병종도 보여줄 필요가 있음. + } + + if($unit->recruitType == 0){ + $l = 'green'; + } + else{ + $l = 'limegreen'; + } + + $baseRice = $unit->rice * $cost; + $baseCost = $unit->cost * $cost; + $baseCost = CharCost($baseCost, $me['personal']); + + $unitBaseType = intdiv($this->id, 10); + if($me['special2'] == 50 && $unitBaseType == 0){ + $baseCost *= 0.9; + } + else if($me['special2'] == 51 && $unitBaseType == 1){ + $baseCost *= 0.9; + } + else if($me['special2'] == 52 && $unitBaseType == 2){ + $baseCost *= 0.9; + } + else if($me['special2'] == 53 && $unitBaseType == 3){ + $baseCost *= 0.9; + } + else if($me['special2'] == 54 && $unitBaseType == 4){ + $baseCost *= 0.9; + } + else if($me['special2'] == 72) { + $baseCost *= 0.5; + } + + $name = $this->name; + $att = $this->attack + $abil; + $def = $this->defence + $abil; + $spd = $this->speed; + $avd = $this->avoid; + $weapImage = "{$images}/weap{$i}.jpg"; + if($admin['show_img_level'] < 2) { $weapImage = "{$image}/default.jpg"; } + + $baseRiceShort = round($baseRice, 1); + $baseCostShort = round($baseCost, 1); + + $info = join('
', $this->info); + + echo " + + + {$name} + {$att} + {$def} + {$spd} + {$avd} + {$baseRiceShort} + {$baseCostShort} +
+ + 00명
+ + + "; + + for($j=0; $j < sizeof($turn); $j++) { + echo " + "; + } + echo " + +
+ $info + "; } echo " diff --git a/twe/sammo/GameUnitConst.php b/twe/sammo/GameUnitConst.php index 0b1de144..972f914b 100644 --- a/twe/sammo/GameUnitConst.php +++ b/twe/sammo/GameUnitConst.php @@ -45,42 +45,42 @@ class GameUnitConst{ } $list = [ - [ 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, '보병', 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, ['등갑을 두른 보병입니다.']], - [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, '궁병', 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, ['강력한 화살을 쏩니다.']], - [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, '기병', 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, ['정예 기병입니다.']], - [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, 0, 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, '귀병', 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, 0, 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, ['날카로운 무기를 가진 귀병입니다.']], - [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, '업', false], - [43, '목우', 50, 200, 5, 0, 30, 5, 2, '성도', false] + [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, ['상대를 저지하는 특수병기입니다.']] ]; $constID = []; @@ -100,17 +100,26 @@ class GameUnitConst{ $rice, $recruitType, $recruitCondition, - $recruitFirst + $recruitFirst, + $info ) = $rawUnit; //0인 경우는 기술치이다. + if(!$recruitFirst){ + $info[] = "일정 시간이 지나야 사용 가능"; + } + if($recruitType == 1){ + $info[] = "{$recruitCondition}지역 소유시 가능"; $recruitCondition = CityConst::byName($recruitCondition)->id; } else if($recruitType == 2){ + $info[] = "{$recruitCondition} 소유시 가능"; $recruitCondition = CityConst::$regionMap[$recruitCondition]->id; } + + $unit = new GameUnitDetail( $id, $name, @@ -122,7 +131,8 @@ class GameUnitConst{ $rice, $recruitType, $recruitCondition, - $recruitFirst + $recruitFirst, + $info ); $constID[$id] = $unit; diff --git a/twe/sammo/GameUnitDetail.php b/twe/sammo/GameUnitDetail.php index 7d03c042..215f48de 100644 --- a/twe/sammo/GameUnitDetail.php +++ b/twe/sammo/GameUnitDetail.php @@ -25,7 +25,8 @@ class GameUnitDetail{ int $rice, int $recruitType, int $recruitCondition, - bool $recruitFirst + bool $recruitFirst, + array $info ){ $this->name = $name; $this->attack = $attack; @@ -37,6 +38,7 @@ class GameUnitDetail{ $this->recruitType = $recruitType; $this->recruitCondition = $recruitCondition; $this->recruitFirst = $recruitFirst; + $this->info = $info; } public function isValid($ownCities, $ownRegions, $relativeYear, $tech){