From e6ea5824f09d50f01eebf4243fbf1f03d3300cf3 Mon Sep 17 00:00:00 2001 From: hide_d Date: Fri, 3 Apr 2020 23:54:26 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B3=91=EC=A2=85=20=EC=BD=94=EB=93=9C,=20?= =?UTF-8?q?=EC=88=99=EB=A0=A8=20=EC=BD=94=EB=93=9C=20=EC=9E=AC=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EB=B3=91=EC=A2=85=20=EC=83=81=EC=84=B1=20=EC=A7=80?= =?UTF-8?q?=EC=A0=95=EC=8B=9C=20=EB=B3=91=EC=A2=85=20=EB=8B=A8=EC=9C=84?= =?UTF-8?q?=EA=B0=80=20=EC=95=84=EB=8B=88=EB=9D=BC=20=EB=B3=91=EC=A2=85=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=9E=90=EC=B2=B4=EB=A1=9C=20=EC=A7=80?= =?UTF-8?q?=EC=A0=95=20=EA=B0=80=EB=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/_admin2_submit.php | 12 +- hwe/_admin5.php | 30 +-- hwe/_admin7.php | 4 +- hwe/a_bestGeneral.php | 12 +- hwe/b_battleCenter.php | 4 +- hwe/func.php | 82 ++++---- hwe/func_gamerule.php | 10 +- hwe/func_process_chief.php | 6 +- hwe/j_simulate_battle.php | 16 +- hwe/join_post.php | 10 +- hwe/js/battle_simulator.js | 22 +-- hwe/sammo/Command/General/che_인재탐색.php | 4 +- hwe/sammo/Command/Nation/che_의병모집.php | 4 +- hwe/sammo/Event/Action/RaiseInvader.php | 2 +- hwe/sammo/GameUnitConstBase.php | 83 ++++---- hwe/sammo/GameUnitDetail.php | 22 ++- hwe/sammo/General.php | 17 +- hwe/sammo/Scenario/NPC.php | 30 +-- hwe/sammo/SpecialityConst.php | 10 +- hwe/sammo/WarUnitGeneral.php | 28 +-- hwe/scenario/unit/basic.php | 16 +- hwe/scenario/unit/ludo_rathowm.php | 212 ++++++++++----------- hwe/scenario/unit/siegetank.php | 20 +- hwe/sql/schema.sql | 12 +- 24 files changed, 325 insertions(+), 343 deletions(-) diff --git a/hwe/_admin2_submit.php b/hwe/_admin2_submit.php index c0726bd4..eb1faacb 100644 --- a/hwe/_admin2_submit.php +++ b/hwe/_admin2_submit.php @@ -111,7 +111,7 @@ switch($btn) { [$year, $month] = $gameStor->getValuesAsArray(['year', 'month']); $text = "특기 부여!"; - foreach($db->query("SELECT `no`,leadership,strength,intel,dex0,dex10,dex20,dex30,dex40 FROM general WHERE `no` IN %li", $genlist) as $general){ + foreach($db->query("SELECT `no`,leadership,strength,intel,dex1,dex2,dex3,dex4,dex5 FROM general WHERE `no` IN %li", $genlist) as $general){ $msg = new Message(Message::MSGTYPE_PRIVATE, $src, MessageTarget::buildQuick($general['no']), $text, new \DateTime(), new \DateTime('9999-12-31'), []); $msg->send(true); @@ -156,7 +156,7 @@ switch($btn) { $msg->send(true); } $db->update('general',[ - 'dex0'=>$db->sqleval('dex0+10000') + 'dex1'=>$db->sqleval('dex1+10000') ], '`no` IN %li', $genlist); break; case "궁숙10000": @@ -166,7 +166,7 @@ switch($btn) { $msg->send(true); } $db->update('general',[ - 'dex10'=>$db->sqleval('dex10+10000') + 'dex2'=>$db->sqleval('dex2+10000') ], '`no` IN %li', $genlist); break; case "기숙10000": @@ -177,7 +177,7 @@ switch($btn) { $msg->send(true); } $db->update('general',[ - 'dex20'=>$db->sqleval('dex20+10000') + 'dex3'=>$db->sqleval('dex3+10000') ], '`no` IN %li', $genlist); break; case "귀숙10000": @@ -188,7 +188,7 @@ switch($btn) { $msg->send(true); } $db->update('general',[ - 'dex30'=>$db->sqleval('dex30+10000') + 'dex4'=>$db->sqleval('dex4+10000') ], '`no` IN %li', $genlist); break; case "차숙10000": @@ -199,7 +199,7 @@ switch($btn) { $msg->send(true); } $db->update('general',[ - 'dex40'=>$db->sqleval('dex40+10000') + 'dex5'=>$db->sqleval('dex5+10000') ], '`no` IN %li', $genlist); break; case "접속 허용": diff --git a/hwe/_admin5.php b/hwe/_admin5.php index 0ca12e81..ecbc1053 100644 --- a/hwe/_admin5.php +++ b/hwe/_admin5.php @@ -160,11 +160,11 @@ SELECT COUNT(B.nation) AS gennum, ROUND(AVG(B.connect), 1) AS connect, ROUND(AVG(B.con), 1) AS con, - ROUND(AVG(B.dex0)) AS dex0, - ROUND(AVG(B.dex10)) AS dex10, - ROUND(AVG(B.dex20)) AS dex20, - ROUND(AVG(B.dex30)) AS dex30, - ROUND(AVG(B.dex40)) AS dex40 + ROUND(AVG(B.dex1)) AS dex1, + ROUND(AVG(B.dex2)) AS dex2, + ROUND(AVG(B.dex3)) AS dex3, + ROUND(AVG(B.dex4)) AS dex4, + ROUND(AVG(B.dex5)) AS dex5 FROM nation A, general B WHERE A.nation=B.nation GROUP BY B.nation @@ -184,11 +184,11 @@ switch($type) { case 10: $query .= " order by avg(B.explevel) desc"; break; case 11: $query .= " order by avg(B.connect) desc"; break; case 12: $query .= " order by avg(B.con) desc"; break; - case 13: $query .= " order by avg(B.dex0) desc"; break; - case 14: $query .= " order by avg(B.dex10) desc"; break; - case 15: $query .= " order by avg(B.dex20) desc"; break; - case 16: $query .= " order by avg(B.dex30) desc"; break; - case 17: $query .= " order by avg(B.dex40) desc"; break; + case 13: $query .= " order by avg(B.dex1) desc"; break; + case 14: $query .= " order by avg(B.dex2) desc"; break; + case 15: $query .= " order by avg(B.dex3) desc"; break; + case 16: $query .= " order by avg(B.dex4) desc"; break; + case 17: $query .= " order by avg(B.dex5) desc"; break; } $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); $nationCount = MYDB_num_rows($result); @@ -238,11 +238,11 @@ for($i=0; $i < $nationCount; $i++) {  {$gen['avgs']}   {$gen['avgi']}   {$gen['avge']}  -  {$nation['dex0']}  -  {$nation['dex10']}  -  {$nation['dex20']}  -  {$nation['dex30']}  -  {$nation['dex40']}  +  {$nation['dex1']}  +  {$nation['dex2']}  +  {$nation['dex3']}  +  {$nation['dex4']}  +  {$nation['dex5']}   {$gen['crew']}/{$gen['leadership']}00   {$city['pop']}/{$city['pop_max']}   ".sprintf('%.1f',$city['pop']/$city['pop_max']*100)."%  diff --git a/hwe/_admin7.php b/hwe/_admin7.php index d29cade9..f46838cd 100644 --- a/hwe/_admin7.php +++ b/hwe/_admin7.php @@ -13,8 +13,8 @@ $queryMap = [ 'turntime' => ['최근턴', 0, function($lhs, $rhs){ return -($lhs['turntime']<=>$rhs['turntime']); }], - 'recwar' => ['최근전투', 1, function($lhs, $rhs){ - return -($lhs['recwar']<=>$rhs['recwar']); + 'recent_war' => ['최근전투', 1, function($lhs, $rhs){ + return -($lhs['recent_war']<=>$rhs['recent_war']); }], 'name' => ['장수명', 0, function($lhs, $rhs){ if($lhs['npc'] !== $rhs['npc']){ diff --git a/hwe/a_bestGeneral.php b/hwe/a_bestGeneral.php index 98852212..5d3c818d 100644 --- a/hwe/a_bestGeneral.php +++ b/hwe/a_bestGeneral.php @@ -101,11 +101,11 @@ $types = [ } return $v; }], - ["보 병 숙 련 도", "int", function($v){$v['value'] = $v['dex0']; return $v; }], - ["궁 병 숙 련 도", "int", function($v){$v['value'] = $v['dex10']; return $v; }], - ["기 병 숙 련 도", "int", function($v){$v['value'] = $v['dex20']; return $v; }], - ["귀 병 숙 련 도", "int", function($v){$v['value'] = $v['dex30']; return $v; }], - ["차 병 숙 련 도", "int", function($v){$v['value'] = $v['dex40']; return $v; }], + ["보 병 숙 련 도", "int", function($v){$v['value'] = $v['dex1']; return $v; }], + ["궁 병 숙 련 도", "int", function($v){$v['value'] = $v['dex2']; return $v; }], + ["기 병 숙 련 도", "int", function($v){$v['value'] = $v['dex3']; return $v; }], + ["귀 병 숙 련 도", "int", function($v){$v['value'] = $v['dex4']; return $v; }], + ["차 병 숙 련 도", "int", function($v){$v['value'] = $v['dex5']; return $v; }], ["전 력 전 승 률", "percent", function($v){ $totalCnt = $v['ttw']+$v['ttd']+$v['ttl']; if($totalCnt < 50){ @@ -165,7 +165,7 @@ $generals = []; foreach($db->query( "SELECT nation,no,name,name2 as owner_name, owner, picture, imgsvr, experience, dedication, - dex0, dex10, dex20, dex30, dex40, + dex1, dex2, dex3, dex4, dex5, horse, weapon, book, item FROM general WHERE %l", $btn == "NPC 보기"?"npc>=2":"npc<2") as $general ){ diff --git a/hwe/b_battleCenter.php b/hwe/b_battleCenter.php index c0e0cf02..fff48a97 100644 --- a/hwe/b_battleCenter.php +++ b/hwe/b_battleCenter.php @@ -17,8 +17,8 @@ $queryMap = [ 'turntime' => ['최근턴', 0, function($lhs, $rhs){ return -($lhs['turntime']<=>$rhs['turntime']); }], - 'recwar' => ['최근전투', 1, function($lhs, $rhs){ - return -($lhs['recwar']<=>$rhs['recwar']); + 'recent_war' => ['최근전투', 1, function($lhs, $rhs){ + return -($lhs['recent_war']<=>$rhs['recent_war']); }], 'name' => ['장수명', 0, function($lhs, $rhs){ if($lhs['npc'] !== $rhs['npc']){ diff --git a/hwe/func.php b/hwe/func.php index 104f8f59..8e46e9d0 100644 --- a/hwe/func.php +++ b/hwe/func.php @@ -819,29 +819,29 @@ function generalInfo2(General $generalObj) { $dedication = getHonor($general['dedication'])." ({$general['dedication']})"; } - $dex0 = $general['dex0'] / GameConst::$dexLimit * 100; - $dex10 = $general['dex10'] / GameConst::$dexLimit * 100; - $dex20 = $general['dex20'] / GameConst::$dexLimit * 100; - $dex30 = $general['dex30'] / GameConst::$dexLimit * 100; - $dex40 = $general['dex40'] / GameConst::$dexLimit * 100; + $dex1 = $general['dex1'] / GameConst::$dexLimit * 100; + $dex2 = $general['dex2'] / GameConst::$dexLimit * 100; + $dex3 = $general['dex3'] / GameConst::$dexLimit * 100; + $dex4 = $general['dex4'] / GameConst::$dexLimit * 100; + $dex5 = $general['dex5'] / GameConst::$dexLimit * 100; - if($dex0 > 100) { $dex0 = 100; } - if($dex10 > 100) { $dex10 = 100; } - if($dex20 > 100) { $dex20 = 100; } - if($dex30 > 100) { $dex30 = 100; } - if($dex40 > 100) { $dex40 = 100; } + if($dex1 > 100) { $dex1 = 100; } + if($dex2 > 100) { $dex2 = 100; } + if($dex3 > 100) { $dex3 = 100; } + if($dex4 > 100) { $dex4 = 100; } + if($dex5 > 100) { $dex5 = 100; } - $general['dex0_text'] = getDexCall($general['dex0']); - $general['dex10_text'] = getDexCall($general['dex10']); - $general['dex20_text'] = getDexCall($general['dex20']); - $general['dex30_text'] = getDexCall($general['dex30']); - $general['dex40_text'] = getDexCall($general['dex40']); + $general['dex1_text'] = getDexCall($general['dex1']); + $general['dex2_text'] = getDexCall($general['dex2']); + $general['dex3_text'] = getDexCall($general['dex3']); + $general['dex4_text'] = getDexCall($general['dex4']); + $general['dex5_text'] = getDexCall($general['dex5']); - $general['dex0_short'] = sprintf('%.1fK', $general['dex0']/1000); - $general['dex10_short'] = sprintf('%.1fK', $general['dex10']/1000); - $general['dex20_short'] = sprintf('%.1fK', $general['dex20']/1000); - $general['dex30_short'] = sprintf('%.1fK', $general['dex30']/1000); - $general['dex40_short'] = sprintf('%.1fK', $general['dex40']/1000); + $general['dex1_short'] = sprintf('%.1fK', $general['dex1']/1000); + $general['dex2_short'] = sprintf('%.1fK', $general['dex2']/1000); + $general['dex3_short'] = sprintf('%.1fK', $general['dex3']/1000); + $general['dex4_short'] = sprintf('%.1fK', $general['dex4']/1000); + $general['dex5_short'] = sprintf('%.1fK', $general['dex5']/1000); echo " @@ -880,33 +880,33 @@ function generalInfo2(General $generalObj) { - - - + + + - - - + + + - - - + + + - - - + + + - - - + + +
추 가 정 보
숙 련 도
보병 {$general['dex0_text']}{$general['dex0_short']} ".bar($dex0, 16)." {$general['dex1_text']}{$general['dex1_short']} ".bar($dex1, 16)."
궁병 {$general['dex10_text']}{$general['dex10_short']} ".bar($dex10, 16)." {$general['dex2_text']}{$general['dex2_short']} ".bar($dex2, 16)."
기병 {$general['dex20_text']}{$general['dex20_short']} ".bar($dex20, 16)." {$general['dex3_text']}{$general['dex3_short']} ".bar($dex3, 16)."
귀병 {$general['dex30_text']}{$general['dex30_short']} ".bar($dex30, 16)." {$general['dex4_text']}{$general['dex4_short']} ".bar($dex4, 16)."
차병 {$general['dex40_text']}{$general['dex40_short']} ".bar($dex40, 16)." {$general['dex5_text']}{$general['dex5_short']} ".bar($dex5, 16)."
"; } @@ -1300,7 +1300,7 @@ function addAge() { pushGenLog($general, "●특기 【{$specialText}】{$josaUl} 익혔습니다!"); } - foreach($db->query('SELECT no,name,nation,leadership,strength,intel,npc,dex0,dex10,dex20,dex30,dex40 from general where specage2<=age and special2=%s', GameConst::$defaultSpecialWar) as $general){ + foreach($db->query('SELECT no,name,nation,leadership,strength,intel,npc,dex1,dex2,dex3,dex4,dex5 from general where specage2<=age and special2=%s', GameConst::$defaultSpecialWar) as $general){ $special2 = SpecialityConst::pickSpecialWar($general); $specialClass = buildGeneralSpecialWarClass($special2); $specialText = $specialClass->getName(); @@ -1371,11 +1371,11 @@ function CheckHall($no) { ["winrate", 'rank'], ["killcrew", 'rank'], ["killrate", 'calc'], - ["dex0", 'natural'], - ["dex10", 'natural'], - ["dex20", 'natural'], - ["dex30", 'natural'], - ["dex40", 'natural'], + ["dex1", 'natural'], + ["dex2", 'natural'], + ["dex3", 'natural'], + ["dex4", 'natural'], + ["dex5", 'natural'], ["ttrate", 'calc'], ["tlrate", 'calc'], ["tprate", 'calc'], diff --git a/hwe/func_gamerule.php b/hwe/func_gamerule.php index 5aea070a..7fba9fcf 100644 --- a/hwe/func_gamerule.php +++ b/hwe/func_gamerule.php @@ -409,7 +409,7 @@ function postUpdateMonthly() { ) from city where nation=A.nation and supply=1 )) +(select sum(leadership+strength+intel) from general where nation=A.nation) - +(select round(sum(dex0+dex10+dex20+dex30+dex40)/1000) from general where nation=A.nation) + +(select round(sum(dex1+dex2+dex3+dex4+dex5)/1000) from general where nation=A.nation) +(select round(sum(experience+dedication)/100) from general where nation=A.nation) +(select round(avg(connect)) from general where nation=A.nation) )/10) @@ -1009,8 +1009,8 @@ function checkStatistic() { ]; $avgGeneral = $db->queryFirstRow( - 'SELECT avg(gold) as avggold, avg(rice) as avgrice, avg(dex0+dex10+dex20+dex30) as avgdex, - max(dex0+dex10+dex20+dex30) as maxdex, avg(experience+dedication) as avgexpded, max(experience+dedication) as maxexpded + 'SELECT avg(gold) as avggold, avg(rice) as avgrice, avg(dex1+dex2+dex3+dex4) as avgdex, + max(dex1+dex2+dex3+dex4) as maxdex, avg(experience+dedication) as avgexpded, max(experience+dedication) as maxexpded FROM general' ); $auxData['generals']['avg'] = $avgGeneral; @@ -1047,7 +1047,7 @@ function checkStatistic() { $nationGeneralInfos = Util::convertArrayToDict( $db->query( 'SELECT nation, sum(leadership+strength+intel) as abil,sum(gold+rice) as goldrice, - sum(dex0+dex10+dex20+dex30) as dex,sum(experience+dedication) as expded + sum(dex1+dex2+dex3+dex4) as dex,sum(experience+dedication) as expded from general GROUP BY nation' ), 'nation' @@ -1114,7 +1114,7 @@ function checkStatistic() { } foreach($db->queryAllLists( - 'SELECT crewtype, count(crewtype) AS cnt FROM general WHERE recwar != NULL GROUP BY crewtype' + 'SELECT crewtype, count(crewtype) AS cnt FROM general WHERE recent_war != NULL GROUP BY crewtype' ) as [$crewtype, $cnt] ){ $crewtypeHists[$crewtype] = $cnt; diff --git a/hwe/func_process_chief.php b/hwe/func_process_chief.php index fbbbacec..857e9f31 100644 --- a/hwe/func_process_chief.php +++ b/hwe/func_process_chief.php @@ -1494,7 +1494,7 @@ function process_76(&$general) { $avgGenNum = $db->queryFirstField('SELECT avg(gennum) FROM nation'); $addGenCount = 5 + Util::round($avgGenNum / 10); - $avgGen = $db->queryFirstRow('SELECT max(leadership+strength+intel) as stat_sum, avg(dedication) as ded,avg(experience) as exp, avg(dex0+dex10+dex20+dex30) as dex_t, avg(age) as age, avg(dex40) as dex40 from general where npc < 5 and nation = %i', $general['nation']); + $avgGen = $db->queryFirstRow('SELECT max(leadership+strength+intel) as stat_sum, avg(dedication) as ded,avg(experience) as exp, avg(dex1+dex2+dex3+dex4) as dex_t, avg(age) as age, avg(dex5) as dex5 from general where npc < 5 and nation = %i', $general['nation']); $dexTotal = $avgGen['dex_t']; @@ -1608,14 +1608,14 @@ function process_76(&$general) { level,gold,rice,crew,crewtype,train,atmos,tnmt, weapon,book,horse,turntime,killturn,age,belong,personal,special,specage,special2,specage2,npcmsg, makelimit,bornyear,deadyear, - dex0, dex10, dex20, dex30, dex40 + dex1, dex2, dex3, dex4, dex5 ) values ( '$npc','$npc','$affinity','$name','$picture','{$nation['nation']}', '{$general['city']}','$leadership','$strength','$intel','{$avgGen['exp']}','{$avgGen['ded']}', '1','100','100','0','".GameUnitConst::DEFAULT_CREWTYPE."','0','0','0', '0','0','0','$turntime','$killturn','{$avgGen['age']}','1','$personal','0','0','0','0','', '0','$bornyear','$deadyear', - '{$dexVal[0]}','{$dexVal[1]}','{$dexVal[2]}','{$dexVal[3]}','{$avgGen['dex40']}' + '{$dexVal[0]}','{$dexVal[1]}','{$dexVal[2]}','{$dexVal[3]}','{$avgGen['dex5']}' )", $connect ) or Error(__LINE__.MYDB_error($connect),""); diff --git a/hwe/j_simulate_battle.php b/hwe/j_simulate_battle.php index 05b06b35..bacd2da9 100644 --- a/hwe/j_simulate_battle.php +++ b/hwe/j_simulate_battle.php @@ -83,13 +83,13 @@ $generalCheck = [ 'required'=>[ 'no', 'name', 'nation', 'turntime', 'personal', 'special2', 'crew', 'crewtype', 'atmos', 'train', 'intel', 'intel_exp', 'book', 'strength', 'strength_exp', 'weapon', 'injury', 'leadership', 'leadership_exp', 'horse', 'item', - 'explevel', 'experience', 'dedication', 'level', 'gold', 'rice', 'dex0', 'dex10', 'dex20', 'dex30', 'dex40', - 'recwar' + 'explevel', 'experience', 'dedication', 'level', 'gold', 'rice', 'dex1', 'dex2', 'dex3', 'dex4', 'dex5', + 'recent_war' ], 'integer'=>[ 'no', 'nation', 'personal', 'special2', 'crew', 'crewtype', 'atmos', 'train', 'intel', 'intel_exp', 'book', 'strength', 'strength_exp', 'weapon', 'injury', 'leadership', 'leadership_exp', 'horse', 'item', - 'explevel', 'experience', 'dedication', 'level', 'gold', 'rice', 'dex0', 'dex10', 'dex20', 'dex30', 'dex40', + 'explevel', 'experience', 'dedication', 'level', 'gold', 'rice', 'dex1', 'dex2', 'dex3', 'dex4', 'dex5', ], 'min'=>[ ['no', 1], @@ -101,11 +101,11 @@ $generalCheck = [ ['experience', 0], ['gold', 0], ['rice', 0], - ['dex0', 0], - ['dex10', 0], - ['dex20', 0], - ['dex30', 0], - ['dex40', 0], + ['dex1', 0], + ['dex2', 0], + ['dex3', 0], + ['dex4', 0], + ['dex5', 0], ], 'between'=>[ ['train', [40, GameConst::$maxTrainByWar]], diff --git a/hwe/join_post.php b/hwe/join_post.php index 2214eee5..dc28a022 100644 --- a/hwe/join_post.php +++ b/hwe/join_post.php @@ -162,11 +162,11 @@ if ($genius) { 'leadership'=>$leadership, 'strength'=>$strength, 'intel'=>$intel, - 'dex0'=>0, - 'dex10'=>0, - 'dex20'=>0, - 'dex30'=>0, - 'dex40'=>0 + 'dex1'=>0, + 'dex2'=>0, + 'dex3'=>0, + 'dex4'=>0, + 'dex5'=>0 ]); } else { $specage2 = Util::valueFit(Util::round((GameConst::$retirementYear - $age)/4 - $relYear / 2), 3) + $age; diff --git a/hwe/js/battle_simulator.js b/hwe/js/battle_simulator.js index 1025fefd..e473cc5c 100644 --- a/hwe/js/battle_simulator.js +++ b/hwe/js/battle_simulator.js @@ -176,11 +176,11 @@ jQuery(function($){ setVal('.form_atmos', data.atmos); setVal('.form_train', data.train); - setVal('.form_dex0', data.dex0); - setVal('.form_dex10', data.dex10); - setVal('.form_dex20', data.dex20); - setVal('.form_dex30', data.dex30); - setVal('.form_dex40', data.dex40); + setVal('.form_dex0', data.dex1); + setVal('.form_dex10', data.dex2); + setVal('.form_dex20', data.dex3); + setVal('.form_dex30', data.dex4); + setVal('.form_dex40', data.dex5); setVal('.form_defence_train', data.defence_train); if(!setGeneralNo($general, data.no)){ @@ -223,11 +223,11 @@ jQuery(function($){ atmos:getInt('.form_atmos'), train:getInt('.form_train'), - dex0:getInt('.form_dex0'), - dex10:getInt('.form_dex10'), - dex20:getInt('.form_dex20'), - dex30:getInt('.form_dex30'), - dex40:getInt('.form_dex40'), + dex1:getInt('.form_dex0'), + dex2:getInt('.form_dex10'), + dex3:getInt('.form_dex20'), + dex4:getInt('.form_dex30'), + dex5:getInt('.form_dex40'), defence_train:getInt('.form_defence_train'), }; } @@ -373,7 +373,7 @@ jQuery(function($){ dedication:0, - recwar:'2018-08-26 12:00', + recent_war:'2018-08-26 12:00', experience:Math.pow(generalData.explevel, 2), }; diff --git a/hwe/sammo/Command/General/che_인재탐색.php b/hwe/sammo/Command/General/che_인재탐색.php index c0e9c9d1..034675a2 100644 --- a/hwe/sammo/Command/General/che_인재탐색.php +++ b/hwe/sammo/Command/General/che_인재탐색.php @@ -175,7 +175,7 @@ class che_인재탐색 extends Command\GeneralCommand{ $avgGen = $db->queryFirstRow( 'SELECT max(leadership+strength+intel) as stat_sum, avg(dedication) as ded,avg(experience) as exp, - avg(dex0+dex10+dex20+dex30) as dex_t, avg(age) as age, avg(dex40) as dex40 + avg(dex1+dex2+dex3+dex4) as dex_t, avg(age) as age, avg(dex5) as dex5 from general where nation=%i', $nationID ); @@ -275,7 +275,7 @@ class che_인재탐색 extends Command\GeneralCommand{ $dexVal[1], $dexVal[2], $dexVal[3], - $avgGen['dex40'] + $avgGen['dex5'] ); $newNPC->build($this->env); diff --git a/hwe/sammo/Command/Nation/che_의병모집.php b/hwe/sammo/Command/Nation/che_의병모집.php index ccc26331..3e65542f 100644 --- a/hwe/sammo/Command/Nation/che_의병모집.php +++ b/hwe/sammo/Command/Nation/che_의병모집.php @@ -153,7 +153,7 @@ class che_의병모집 extends Command\NationCommand{ $avgGen = $db->queryFirstRow( 'SELECT max(leadership+strength+intel) as stat_sum, avg(dedication) as ded,avg(experience) as exp, - avg(dex0+dex10+dex20+dex30) as dex_t, avg(age) as age, avg(dex40) as dex40 + avg(dex1+dex2+dex3+dex4) as dex_t, avg(age) as age, avg(dex5) as dex5 from general where nation=%i', $nationID ); @@ -242,7 +242,7 @@ class che_의병모집 extends Command\NationCommand{ $dexVal[1], $dexVal[2], $dexVal[3], - $avgGen['dex40'] + $avgGen['dex5'] ); $newNPC->build($this->env); diff --git a/hwe/sammo/Event/Action/RaiseInvader.php b/hwe/sammo/Event/Action/RaiseInvader.php index c7ed4d7d..f853481c 100644 --- a/hwe/sammo/Event/Action/RaiseInvader.php +++ b/hwe/sammo/Event/Action/RaiseInvader.php @@ -110,7 +110,7 @@ class RaiseInvader extends \sammo\Event\Action{ $dex = $this->dex; if($dex < 0){ - $dex = $db->queryFirstField("SELECT avg(dex0 + dex10 + dex20 + dex30 + dex40)/5 from nation where `level`>0"); + $dex = $db->queryFirstField("SELECT avg(dex1 + dex2 + dex3 + dex4 + dex5)/5 from nation where `level`>0"); $dex /= -1 * $this->dex; } diff --git a/hwe/sammo/GameUnitConstBase.php b/hwe/sammo/GameUnitConstBase.php index 41a2982c..341af7e5 100644 --- a/hwe/sammo/GameUnitConstBase.php +++ b/hwe/sammo/GameUnitConstBase.php @@ -6,13 +6,13 @@ class GameUnitConstBase{ } - const T_CASTLE = -1; - const T_MISC = -2; - const T_FOOTMAN = 0; - const T_ARCHER = 1; - const T_CAVALRY = 2; - const T_WIZARD = 3; - const T_SIEGE = 4; + 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; const DEFAULT_CREWTYPE = 0; @@ -34,7 +34,7 @@ class GameUnitConstBase{ protected static $_buildData = [ [ - -1, self::T_CASTLE, '성벽', + 1000, self::T_CASTLE, '성벽', 100, 100, 7, 0, 0, 99, 9, 999999, null, null, 999999, [],//성벽은 공격할 수 없다. @@ -44,7 +44,7 @@ class GameUnitConstBase{ ], [ - 0, self::T_FOOTMAN, '보병', + 1100, self::T_FOOTMAN, '보병', 100, 150, 7, 10, 0, 9, 9, 0, null, null, 0, [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2], @@ -53,7 +53,7 @@ class GameUnitConstBase{ null, null ], [ - 1, self::T_FOOTMAN, '청주병', + 1101, self::T_FOOTMAN, '청주병', 100, 200, 7, 10, 0, 10, 11, 1000, null, ['중원'], 0, [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2], @@ -62,7 +62,7 @@ class GameUnitConstBase{ null, null ], [ - 2, self::T_FOOTMAN, '수병', + 1102, self::T_FOOTMAN, '수병', 150, 150, 7, 10, 0, 11, 10, 1000, null, ['오월'], 0, [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2], @@ -71,7 +71,7 @@ class GameUnitConstBase{ null, null ], [ - 3, self::T_FOOTMAN, '자객병', + 1103, self::T_FOOTMAN, '자객병', 100, 150, 8, 20, 0, 10, 10, 2000, ['저'], null, 0, [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2], @@ -80,7 +80,7 @@ class GameUnitConstBase{ null, null ], [ - 4, self::T_FOOTMAN, '근위병', + 1104, self::T_FOOTMAN, '근위병', 150, 200, 7, 10, 0, 12, 12, 3000, ['낙양'], null, 0, [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2], @@ -89,7 +89,7 @@ class GameUnitConstBase{ null, null ], [ - 5, self::T_FOOTMAN, '등갑병', + 1105, self::T_FOOTMAN, '등갑병', 100, 225, 7, 5, 0, 13, 10, 1000, null, ['남중'], 0, [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2], @@ -99,7 +99,7 @@ class GameUnitConstBase{ ], [ - 10, self::T_ARCHER, '궁병', + 1200, self::T_ARCHER, '궁병', 100, 100, 7, 20, 0, 10, 10, 0, null, null, 0, [self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8, self::T_SIEGE=>1.2], @@ -108,7 +108,7 @@ class GameUnitConstBase{ null, null ], [ - 11, self::T_ARCHER, '궁기병', + 1201, self::T_ARCHER, '궁기병', 100, 100, 8, 30, 0, 11, 12, 1000, null, ['동이'], 0, [self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8, self::T_SIEGE=>1.2], @@ -117,7 +117,7 @@ class GameUnitConstBase{ null, null ], [ - 12, self::T_ARCHER, '연노병', + 1202, self::T_ARCHER, '연노병', 150, 100, 8, 20, 0, 12, 11, 1000, null, ['서촉'], 0, [self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8, self::T_SIEGE=>1.2], @@ -126,7 +126,7 @@ class GameUnitConstBase{ null, null ], [ - 13, self::T_ARCHER, '강궁병', + 1203, self::T_ARCHER, '강궁병', 150, 150, 7, 20, 0, 13, 13, 3000, ['양양'], null, 0, [self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8, self::T_SIEGE=>1.2], @@ -135,7 +135,7 @@ class GameUnitConstBase{ null, null ], [ - 14, self::T_ARCHER, '석궁병', + 1204, self::T_ARCHER, '석궁병', 200, 100, 7, 20, 0, 13, 13, 3000, ['건업'], null, 0, [self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8, self::T_SIEGE=>1.2], @@ -145,7 +145,7 @@ class GameUnitConstBase{ ], [ - 20, self::T_CAVALRY, '기병', + 1300, self::T_CAVALRY, '기병', 150, 100, 7, 5, 0, 11, 11, 0, null, null, 0, [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2], @@ -154,7 +154,7 @@ class GameUnitConstBase{ null, null ], [ - 21, self::T_CAVALRY, '백마병', + 1301, self::T_CAVALRY, '백마병', 200, 100, 7, 5, 0, 12, 13, 1000, null, ['하북'], 0, [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2], @@ -163,7 +163,7 @@ class GameUnitConstBase{ null, null ], [ - 22, self::T_CAVALRY, '중장기병', + 1302, self::T_CAVALRY, '중장기병', 150, 150, 7, 5, 0, 13, 12, 1000, null, ['서북'], 0, [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2], @@ -172,7 +172,7 @@ class GameUnitConstBase{ null, null ], [ - 23, self::T_CAVALRY, '돌격기병', + 1303, self::T_CAVALRY, '돌격기병', 200, 100, 8, 5, 0, 13, 11, 2000, ['흉노'], null, 0, [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2], @@ -181,7 +181,7 @@ class GameUnitConstBase{ null, null ], [ - 24, self::T_CAVALRY, '철기병', + 1304, self::T_CAVALRY, '철기병', 100, 200, 7, 5, 0, 11, 13, 2000, ['강'], null, 0, [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2], @@ -190,7 +190,7 @@ class GameUnitConstBase{ null, null ], [ - 25, self::T_CAVALRY, '수렵기병', + 1305, self::T_CAVALRY, '수렵기병', 150, 100, 8, 15, 0, 12, 12, 2000, ['산월'], null, 0, [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2], @@ -199,7 +199,7 @@ class GameUnitConstBase{ null, null ], [ - 26, self::T_CAVALRY, '맹수병', + 1306, self::T_CAVALRY, '맹수병', 250, 175, 6, 0, 0, 16, 16, 2000, ['남만'], null, 0, [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2], @@ -208,7 +208,7 @@ class GameUnitConstBase{ null, null ], [ - 27, self::T_CAVALRY, '호표기병', + 1307, self::T_CAVALRY, '호표기병', 200, 150, 7, 5, 0, 14, 14, 3000, ['허창'], null, 0, [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2], @@ -218,7 +218,7 @@ class GameUnitConstBase{ ], [ - 30, self::T_WIZARD, '귀병', + 1400, self::T_WIZARD, '귀병', 80, 80, 7, 5, 0.5, 9, 9, 0, null, null, 0, [self::T_SIEGE=>1.2], @@ -227,7 +227,7 @@ class GameUnitConstBase{ null, null ], [ - 31, self::T_WIZARD, '신귀병', + 1401, self::T_WIZARD, '신귀병', 80, 80, 7, 20, 0.6, 10, 10, 1000, null, ['초'], 0, [self::T_SIEGE=>1.2], @@ -236,7 +236,7 @@ class GameUnitConstBase{ null, null ], [ - 32, self::T_WIZARD, '백귀병', + 1402, self::T_WIZARD, '백귀병', 80, 130, 7, 5, 0.6, 9, 11, 2000, ['오환'], null, 0, [self::T_SIEGE=>1.2], @@ -245,7 +245,7 @@ class GameUnitConstBase{ null, null ], [ - 33, self::T_WIZARD, '흑귀병', + 1403, self::T_WIZARD, '흑귀병', 130, 80, 7, 5, 0.6, 11, 9, 2000, ['왜'], null, 0, [self::T_SIEGE=>1.2], @@ -254,7 +254,7 @@ class GameUnitConstBase{ null, null ], [ - 34, self::T_WIZARD, '악귀병', + 1404, self::T_WIZARD, '악귀병', 130, 130, 7, 0, 0.6, 12, 12, 3000, ['장안'], null, 0, [self::T_SIEGE=>1.2], @@ -263,7 +263,7 @@ class GameUnitConstBase{ null, null ], [ - 35, self::T_WIZARD, '남귀병', + 1405, self::T_WIZARD, '남귀병', 60, 60, 7, 10, 0.8, 8, 8, 1000, null, null, 0, [self::T_SIEGE=>1.2], @@ -272,7 +272,7 @@ class GameUnitConstBase{ null, null ], [ - 36, self::T_WIZARD, '황귀병', + 1406, self::T_WIZARD, '황귀병', 110, 110, 7, 0, 0.8, 13, 10, 3000, ['낙양'], null, 0, [self::T_SIEGE=>1.2], @@ -281,7 +281,7 @@ class GameUnitConstBase{ null, null ], [ - 37, self::T_WIZARD, '천귀병', + 1407, self::T_WIZARD, '천귀병', 80, 130, 7, 15, 0.6, 11, 12, 3000, ['성도'], null, 0, [self::T_SIEGE=>1.2], @@ -290,7 +290,7 @@ class GameUnitConstBase{ null, null ], [ - 38, self::T_WIZARD, '마귀병', + 1408, self::T_WIZARD, '마귀병', 130, 80, 7, 15, 0.6, 12, 11, 3000, ['업'], null, 0, [self::T_SIEGE=>1.2], @@ -300,7 +300,7 @@ class GameUnitConstBase{ ], [ - 40, self::T_SIEGE, '정란', + 1500, self::T_SIEGE, '정란', 100, 100, 6, 0, 0, 15, 5, 0, null, null, 3, [self::T_FOOTMAN=>0.8, self::T_ARCHER=>0.8, self::T_CAVALRY=>0.8, self::T_WIZARD=>0.8, self::T_CASTLE=>1.8], @@ -309,7 +309,7 @@ class GameUnitConstBase{ ['che_성벽부상무효'], null ], [ - 41, self::T_SIEGE, '충차', + 1501, self::T_SIEGE, '충차', 150, 100, 6, 0, 0, 20, 5, 1000, null, null, 3, [self::T_FOOTMAN=>0.8, self::T_ARCHER=>0.8, self::T_CAVALRY=>0.8, self::T_WIZARD=>0.8, self::T_CASTLE=>2.4], @@ -318,7 +318,7 @@ class GameUnitConstBase{ ['che_성벽부상무효'], null ], [ - 42, self::T_SIEGE, '벽력거', + 1502, self::T_SIEGE, '벽력거', 200, 100, 6, 0, 0, 25, 5, 3000, ['업'], null, 0, [self::T_FOOTMAN=>0.8, self::T_ARCHER=>0.8, self::T_CAVALRY=>0.8, self::T_WIZARD=>0.8, self::T_CASTLE=>1.8], @@ -327,7 +327,7 @@ class GameUnitConstBase{ ['che_성벽부상무효'], null ], [ - 43, self::T_SIEGE, '목우', + 1503, self::T_SIEGE, '목우', 50, 200, 5, 0, 0, 30, 5, 3000, ['성도'], null, 0, [self::T_FOOTMAN=>0.8, self::T_ARCHER=>0.8, self::T_CAVALRY=>0.8, self::T_WIZARD=>0.8], @@ -378,6 +378,9 @@ class GameUnitConstBase{ } public static function byID(int $id): ?GameUnitDetail{ + if($id < 1000){ + throw new \InvalidArgumentException('적절한 id는 1000이상이어야합니다:'.$id); + } static::_generate(); return static::$constID[$id]??null; } diff --git a/hwe/sammo/GameUnitDetail.php b/hwe/sammo/GameUnitDetail.php index 0c6b9c2e..94ca47d6 100644 --- a/hwe/sammo/GameUnitDetail.php +++ b/hwe/sammo/GameUnitDetail.php @@ -83,20 +83,22 @@ class GameUnitDetail implements iAction{ return $this->cost * getTechCost($tech) * $crew / 100; } - public function getAttackCoef($armType):float{ - if($armType instanceof GameUnitDetail){ - $armType = $armType->armType; + public function getAttackCoef(GameUnitDetail $opposeCrewType):float{ + $opposeCrewTypeID = $opposeCrewType->id; + if(key_exists($opposeCrewTypeID, $this->attackCoef)){ + return $this->attackCoef[$opposeCrewTypeID]; } - assert(is_numeric($armType), '$armType should be int or GameUnitDetail'); - return $this->attackCoef[$armType]??1; + $opposeArmType = $opposeCrewType->armType; + return $this->attackCoef[$opposeArmType]??1; } - public function getDefenceCoef($armType):float{ - if($armType instanceof GameUnitDetail){ - $armType = $armType->armType; + public function getDefenceCoef(GameUnitDetail $opposeCrewType):float{ + $opposeCrewTypeID = $opposeCrewType->id; + if(key_exists($opposeCrewTypeID, $this->defenceCoef)){ + return $this->defenceCoef[$opposeCrewTypeID]; } - assert(is_numeric($armType), '$armType should be int or GameUnitDetail'); - return $this->defenceCoef[$armType]??1; + $opposeArmType = $opposeCrewType->armType; + return $this->defenceCoef[$opposeArmType]??1; } public function getComputedAttack(General $general, int $tech){ diff --git a/hwe/sammo/General.php b/hwe/sammo/General.php index e59ee39a..78aee85f 100644 --- a/hwe/sammo/General.php +++ b/hwe/sammo/General.php @@ -366,8 +366,7 @@ class General implements iAction{ $exp *= ($this->getVar('train') + $this->getVar('atmos')) / 200; } - $ntype = $armType*10; - $dexType = "dex{$ntype}"; + $dexType = "dex{$armType}"; $this->increaseVar($dexType, $exp); } @@ -446,11 +445,11 @@ class General implements iAction{ $this->setVar('age', 20); $this->setVar('specage', 0); $this->setVar('specage2', 0); - $this->multiplyVar('dex0', 0.5); - $this->multiplyVar('dex10', 0.5); - $this->multiplyVar('dex20', 0.5); - $this->multiplyVar('dex30', 0.5); - $this->multiplyVar('dex40', 0.5); + $this->multiplyVar('dex1', 0.5); + $this->multiplyVar('dex2', 0.5); + $this->multiplyVar('dex3', 0.5); + $this->multiplyVar('dex4', 0.5); + $this->multiplyVar('dex5', 0.5); $this->setRankVar('firenum', 0); $this->setRankVar('warnum', 0); @@ -769,8 +768,8 @@ class General implements iAction{ 'experience', 'dedication', 'level', 'gold', 'rice', 'crew', 'crewtype', 'train', 'atmos', 'turntime', 'makelimit', 'killturn', 'block', 'dedlevel', 'explevel', 'age', 'startage', 'belong', 'personal', 'special', 'special2', 'defence_train', 'tnmt', 'npc', 'npc_org', 'deadyear', 'npcmsg', - 'dex0', 'dex10', 'dex20', 'dex30', 'dex40', - 'recwar', 'last_turn', 'myset', + 'dex1', 'dex2', 'dex3', 'dex4', 'dex5', + 'recent_war', 'last_turn', 'myset', 'specage', 'specage2', 'con', 'connect', 'owner', 'aux' ]; diff --git a/hwe/sammo/Scenario/NPC.php b/hwe/sammo/Scenario/NPC.php index 123bfdad..f9ce0d74 100644 --- a/hwe/sammo/Scenario/NPC.php +++ b/hwe/sammo/Scenario/NPC.php @@ -52,11 +52,11 @@ class NPC{ public $killturn = null; //XXX: 코드 못 바꾸나? - protected $dex0 = 0; - protected $dex10 = 0; - protected $dex20 = 0; - protected $dex30 = 0; - protected $dex40 = 0; + protected $dex1 = 0; + protected $dex2 = 0; + protected $dex3 = 0; + protected $dex4 = 0; + protected $dex5 = 0; public function __construct( int $affinity, @@ -149,11 +149,11 @@ class NPC{ } public function setDex(int $footman, int $archer, int $cavalry, int $wizard, int $siege):self{ - $this->dex0 = $footman; - $this->dex10 = $archer; - $this->dex20 = $cavalry; - $this->dex30 = $wizard; - $this->dex40 = $siege; + $this->dex1 = $footman; + $this->dex2 = $archer; + $this->dex3 = $cavalry; + $this->dex4 = $wizard; + $this->dex5 = $siege; return $this; } @@ -339,11 +339,11 @@ class NPC{ 'makelimit'=>0, 'bornyear'=>$this->birth, 'deadyear'=>$this->death, - 'dex0'=>$this->dex0, - 'dex10'=>$this->dex10, - 'dex20'=>$this->dex20, - 'dex30'=>$this->dex30, - 'dex40'=>$this->dex40, + 'dex1'=>$this->dex1, + 'dex2'=>$this->dex2, + 'dex3'=>$this->dex3, + 'dex4'=>$this->dex4, + 'dex5'=>$this->dex5, ]); $this->generalID = $db->insertId(); $turnRows = []; diff --git a/hwe/sammo/SpecialityConst.php b/hwe/sammo/SpecialityConst.php index aede893b..0e458633 100644 --- a/hwe/sammo/SpecialityConst.php +++ b/hwe/sammo/SpecialityConst.php @@ -136,11 +136,11 @@ class SpecialityConst{ private static function calcCondDexterity(array $general) : int { $dex = [ - static::ARMY_FOOTMAN => $general['dex0']??0, - static::ARMY_ARCHER => $general['dex10']??0, - static::ARMY_CAVALRY => $general['dex20']??0, - static::ARMY_WIZARD => $general['dex30']??0, - static::ARMY_SIEGE => $general['dex40']??0, + static::ARMY_FOOTMAN => $general['dex1']??0, + static::ARMY_ARCHER => $general['dex2']??0, + static::ARMY_CAVALRY => $general['dex3']??0, + static::ARMY_WIZARD => $general['dex4']??0, + static::ARMY_SIEGE => $general['dex5']??0, ]; $dexSum = array_sum($dex); diff --git a/hwe/sammo/WarUnitGeneral.php b/hwe/sammo/WarUnitGeneral.php index ecf95e4a..fe519b94 100644 --- a/hwe/sammo/WarUnitGeneral.php +++ b/hwe/sammo/WarUnitGeneral.php @@ -49,10 +49,10 @@ class WarUnitGeneral extends WarUnit{ $this->general->increaseVar('warnum', 1); if($this->isAttacker){ - $general->updateVar('recwar', $general->getTurnTime()); + $general->updateVar('recent_war', $general->getTurnTime()); } else if($oppose !== null){ - $general->updateVar('recwar', $oppose->getGeneral()->getTurnTime()); + $general->updateVar('recent_war', $oppose->getGeneral()->getTurnTime()); } } @@ -203,29 +203,7 @@ class WarUnitGeneral extends WarUnit{ } function addDex(GameUnitDetail $crewType, float $exp){ - $general = $this->general; - $armType = $crewType->armType; - - if($armType == GameUnitConst::T_CASTLE){ - $armType = GameUnitConst::T_SIEGE; - } - - if($armType < 0){ - return; - } - - if($armType == GameUnitConst::T_WIZARD) { - $exp *= 0.9; - } - else if($armType == GameUnitConst::T_SIEGE) { - $exp *= 0.9; - } - $exp *= ($this->getComputedTrain() + $this->getComputedAtmos()) / 200; - - $ntype = $armType*10; - $dexType = "dex{$ntype}"; - - $general->increaseVar($dexType, $exp); + $this->general->addDex($crewType, $exp, false); } function decreaseHP(int $damage):int{ diff --git a/hwe/scenario/unit/basic.php b/hwe/scenario/unit/basic.php index c7c3e61e..f3a3acfb 100644 --- a/hwe/scenario/unit/basic.php +++ b/hwe/scenario/unit/basic.php @@ -7,7 +7,7 @@ class GameUnitConst extends GameUnitConstBase protected static $_buildData = [ [ - -1, self::T_CASTLE, '성벽', + 1000, self::T_CASTLE, '성벽', 100, 100, 7, 0, 0, 99, 9, 999999, null, null, 999999, [],//성벽은 공격할 수 없다. @@ -17,7 +17,7 @@ class GameUnitConst extends GameUnitConstBase ], [ - 0, self::T_FOOTMAN, '보병', + 1100, self::T_FOOTMAN, '보병', 100, 150, 7, 10, 0, 9, 9, 0, null, null, 0, [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2], @@ -27,7 +27,7 @@ class GameUnitConst extends GameUnitConstBase ], [ - 10, self::T_ARCHER, '궁병', + 1200, self::T_ARCHER, '궁병', 100, 100, 7, 20, 0, 10, 10, 0, null, null, 0, [self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8, self::T_SIEGE=>1.2], @@ -37,7 +37,7 @@ class GameUnitConst extends GameUnitConstBase ], [ - 20, self::T_CAVALRY, '기병', + 1300, self::T_CAVALRY, '기병', 150, 100, 7, 5, 0, 11, 11, 0, null, null, 0, [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2], @@ -47,7 +47,7 @@ class GameUnitConst extends GameUnitConstBase ], [ - 30, self::T_WIZARD, '귀병', + 1400, self::T_WIZARD, '귀병', 80, 80, 7, 5, 0.5, 9, 9, 0, null, null, 0, [self::T_SIEGE=>1.2], @@ -56,7 +56,7 @@ class GameUnitConst extends GameUnitConstBase null, null ], [ - 35, self::T_WIZARD, '남귀병', + 1405, self::T_WIZARD, '남귀병', 60, 60, 7, 10, 0.8, 8, 8, 1000, null, null, 0, [self::T_SIEGE=>1.2], @@ -66,7 +66,7 @@ class GameUnitConst extends GameUnitConstBase ], [ - 40, self::T_SIEGE, '정란', + 1500, self::T_SIEGE, '정란', 100, 100, 6, 0, 0, 15, 5, 0, null, null, 3, [self::T_FOOTMAN=>0.8, self::T_ARCHER=>0.8, self::T_CAVALRY=>0.8, self::T_WIZARD=>0.8, self::T_CASTLE=>1.8], @@ -75,7 +75,7 @@ class GameUnitConst extends GameUnitConstBase ['che_성벽부상무효'], null ], [ - 41, self::T_SIEGE, '충차', + 1501, self::T_SIEGE, '충차', 150, 100, 6, 0, 0, 20, 5, 1000, null, null, 3, [self::T_FOOTMAN=>0.8, self::T_ARCHER=>0.8, self::T_CAVALRY=>0.8, self::T_WIZARD=>0.8, self::T_CASTLE=>2.4], diff --git a/hwe/scenario/unit/ludo_rathowm.php b/hwe/scenario/unit/ludo_rathowm.php index 5eb8040d..825059e3 100644 --- a/hwe/scenario/unit/ludo_rathowm.php +++ b/hwe/scenario/unit/ludo_rathowm.php @@ -15,7 +15,7 @@ class GameUnitConst extends GameUnitConstBase protected static $_buildData = [ [ - -1, self::T_CASTLE, '성벽', + 1000, self::T_CASTLE, '성벽', 100, 100, 7, 0, 0, 99, 9, 999999, null, null, 999999, [],//성벽은 공격할 수 없다. @@ -25,280 +25,280 @@ class GameUnitConst extends GameUnitConstBase ], [ - 217001, self::T_FOOTMAN, '보병', + 217100, self::T_FOOTMAN, '보병', 100, 150, 7, 10, 0, 9, 9, 0, null, null, 0, - [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2], - [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8], + [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2, 217502=>1], + [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8, 217502=>1], ["표준적인 보병입니다. 보병은 방어특화입니다."], null, null ], [ - 217002, self::T_FOOTMAN, '마물병', + 217101, self::T_FOOTMAN, '마물병', 110, 160, 7, 10, 0, 9, 10, 0, null, ["호넷 마인령","케이브리스 마인령"], 0, - [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2], - [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8], + [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2, 217502=>1], + [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8, 217502=>1], ["마군 지역 기본병종입니다. 조금더 강하지만 쌀을 많이 소비합니다."], null, null ], [ - 217003, self::T_FOOTMAN, '중장보병', + 217102, self::T_FOOTMAN, '중장보병', 100, 250, 7, 5, 0, 13, 10, 1000, null, ["헬만 동부"], 0, - [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2], - [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8], + [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2, 217502=>1], + [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8, 217502=>1], ["헬만 특유의 견고한 보병입니다."], null, null ], [ - 217004, self::T_FOOTMAN, '흑의 군 보병', + 217103, self::T_FOOTMAN, '흑의 군 보병', 150, 150, 7, 10, 0, 12, 11, 1000, null, ["리자스 남부","리자스 북부"], 0, - [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2], - [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8], + [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2, 217502=>1], + [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8, 217502=>1], ["흑의 군 전통의 체계적인 훈련으로 공격력을 보완했습니다."], null, null ], [ - 217005, self::T_FOOTMAN, '용병', + 217104, self::T_FOOTMAN, '용병', 125, 175, 7, 10, 0, 12, 11, 1000, null, ["자유도시 동부"], 0, - [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2], - [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8], + [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2, 217502=>1], + [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8, 217502=>1], ["일반 보병보다 비싸지만 받은 만큼은 일해줍니다."], null, null ], [ - 217006, self::T_FOOTMAN, '사메라이', + 217105, self::T_FOOTMAN, '사메라이', 175, 150, 7, 0, 0, 11, 10, 1000, null, ["제스 남부"], 0, - [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2], - [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8], + [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2, 217502=>1], + [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8, 217502=>1], ["검으로 난무를 가하는 몬스터 보병입니다."], null, null ], [ - 217007, self::T_FOOTMAN, '템플나이트병', + 217106, self::T_FOOTMAN, '템플나이트병', 75, 275, 7, 0, 0, 11, 12, 1000, null, ["AL교"], 0, - [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2], - [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8], + [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2, 217502=>1], + [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8, 217502=>1], ["공격을 포기하고 오직 방어에만 집중합니다."], null, null ], [ - 217008, self::T_FOOTMAN, '메이드병', + 217107, self::T_FOOTMAN, '메이드병', 150, 150, 7, 20, 0, 13, 11, 2000, ["메이드의 묘지"], null, 0, - [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2], - [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8], + [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2, 217502=>1], + [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8, 217502=>1], ["켓셀링크 휘하의 날렵한 전투메이드입니다."], null, null ], [ - 217009, self::T_FOOTMAN, '요괴병', + 217108, self::T_FOOTMAN, '요괴병', 150, 150, 8, 0, 0, 11, 13, 2000, ["오슈"], null, 0, - [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2], - [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8], + [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2, 217502=>1], + [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8, 217502=>1], ["단단한 육체를 믿고 적진을 돌파합니다."], null, null ], [ - 217010, self::T_FOOTMAN, '리자스 친위병', + 217109, self::T_FOOTMAN, '리자스 친위병', 150, 200, 7, 10, 0, 12, 12, 3000, ["리자스성"], null, 0, - [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2], - [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8], + [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2, 217502=>1], + [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8, 217502=>1], ["여왕을 수호하는 리자스 최강의 보병 정예보병입니다."], null, null ], [ - 217011, self::T_FOOTMAN, '케이브리스 마물병', + 217110, self::T_FOOTMAN, '케이브리스 마물병', 200, 150, 7, 5, 0, 13, 14, 3000, ["케이브리스의 성"], null, 0, - [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2], - [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8], + [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2, 217502=>1], + [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8, 217502=>1], ["케이브리스 직속의 마물 정예 전투보병입니다."], null, null ], [ - 217012, self::T_FOOTMAN, '투신', + 217111, self::T_FOOTMAN, '투신', 200, 300, 7, 5, 0, 28, 23, 5000, ["투신도시"], null, 0, - [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2], - [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8], + [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2, 217502=>1], + [self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8, 217502=>1], ["성마교단 유적에서 발굴된 사상 최강의 보병입니다."], null, null ], [ - 217101, self::T_ARCHER, '궁병', + 217200, self::T_ARCHER, '궁병', 100, 100, 7, 20, 0, 10, 10, 0, null, null, 0, - [ self::T_FOOTMAN=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>1.2], - [ self::T_FOOTMAN=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>0.8], + [ self::T_FOOTMAN=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>1.2, 217502=>1], + [ self::T_FOOTMAN=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>0.8, 217502=>1], ["표준적인 궁병입니다. 궁병은 회피특화입니다."], null, null ], [ - 217102, self::T_ARCHER, '투척마물병', + 217201, self::T_ARCHER, '투척마물병', 150, 100, 7, 10, 0, 11, 12, 1000, null, ["호넷 마인령"], 0, - [ self::T_FOOTMAN=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>1.2], - [ self::T_FOOTMAN=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>0.8], + [ self::T_FOOTMAN=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>1.2, 217502=>1], + [ self::T_FOOTMAN=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>0.8, 217502=>1], ["날렵함을 포기하고 도끼를 투척합니다."], null, null ], [ - 217103, self::T_ARCHER, '백의 군 궁병', + 217202, self::T_ARCHER, '백의 군 궁병', 100, 100, 8, 30, 0, 11, 11, 1000, null, ["리자스 남부"], 0, - [ self::T_FOOTMAN=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>1.2], - [ self::T_FOOTMAN=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>0.8], + [ self::T_FOOTMAN=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>1.2, 217502=>1], + [ self::T_FOOTMAN=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>0.8, 217502=>1], ["전략을 활용하여 치고 빠지기에 능합니다."], null, null ], [ - 217104, self::T_ARCHER, '벌레술사병', + 217203, self::T_ARCHER, '벌레술사병', 100, 150, 7, 20, 0, 12, 12, 2000, ["호박성"], null, 0, - [ self::T_FOOTMAN=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>1.2], - [ self::T_FOOTMAN=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>0.8], + [ self::T_FOOTMAN=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>1.2, 217502=>1], + [ self::T_FOOTMAN=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>0.8, 217502=>1], ["벌레들을 부려 몸을 보호하는 궁병입니다."], null, null ], [ - 217105, self::T_ARCHER, '저격암살병', + 217204, self::T_ARCHER, '저격암살병', 225, 75, 5, 10, 0, 14, 11, 2000, ["블라디보스토크"], null, 0, - [ self::T_FOOTMAN=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>1.2], - [ self::T_FOOTMAN=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>0.8], + [ self::T_FOOTMAN=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>1.2, 217502=>1], + [ self::T_FOOTMAN=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>0.8, 217502=>1], ["독을 바른 탄환으로 적의 목숨을 앗아갑니다."], null, null ], [ - 217106, self::T_ARCHER, '호루스병', + 217205, self::T_ARCHER, '호루스병', 150, 100, 8, 20, 0, 11, 12, 2000, ["거대전함"], null, 0, - [ self::T_FOOTMAN=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>1.2], - [ self::T_FOOTMAN=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>0.8], + [ self::T_FOOTMAN=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>1.2, 217502=>1], + [ self::T_FOOTMAN=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>0.8, 217502=>1], ["민첩하게 파고드는 호루스족 궁병입니다."], null, null ], [ - 217107, self::T_ARCHER, '튤립병', + 217206, self::T_ARCHER, '튤립병', 200, 100, 7, 20, 0, 13, 13, 3000, ["커스텀"], null, 0, - [ self::T_FOOTMAN=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>1.2], - [ self::T_FOOTMAN=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>0.8], + [ self::T_FOOTMAN=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>1.2, 217502=>1], + [ self::T_FOOTMAN=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>0.8, 217502=>1], ["최첨단병기 튤립으로 적을 폭격합니다."], null, null ], [ - 217108, self::T_ARCHER, '아이스플레임 궁병', + 217207, self::T_ARCHER, '아이스플레임 궁병', 150, 150, 7, 20, 0, 13, 13, 3000, ["라그나로크 아크"], null, 0, - [ self::T_FOOTMAN=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>1.2], - [ self::T_FOOTMAN=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>0.8], + [ self::T_FOOTMAN=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>1.2, 217502=>1], + [ self::T_FOOTMAN=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>0.8, 217502=>1], ["혁명을 성공으로 이끈 정예 게릴라 궁병입니다."], null, null ], [ - 217109, self::T_ARCHER, '카라 궁병', + 217208, self::T_ARCHER, '카라 궁병', 225, 225, 7, 30, 0, 25, 25, 5000, ["펜실 카우"], null, 0, - [ self::T_FOOTMAN=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>1.2], - [ self::T_FOOTMAN=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>0.8], + [ self::T_FOOTMAN=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>1.2, 217502=>1], + [ self::T_FOOTMAN=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>0.8, 217502=>1], ["선조의 힘을 이어받은 최강의 카라 정예 궁병입니다."], null, null ], [ - 217201, self::T_CAVALRY, '기동병', + 217300, self::T_CAVALRY, '기동병', 150, 100, 7, 5, 0, 11, 11, 0, null, null, 0, - [ self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2], - [ self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2, self::T_SIEGE=>0.8], + [ self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2, 217502=>1], + [ self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2, self::T_SIEGE=>0.8, 217502=>1], ["표준적인 기동병입니다. 기동병은 공격특화입니다."], null, null ], [ - 217202, self::T_CAVALRY, '하치온나', + 217301, self::T_CAVALRY, '하치온나', 175, 100, 7, 15, 0, 12, 12, 1000, null, ["자유도시 서부"], 0, - [ self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2], - [ self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2, self::T_SIEGE=>0.8], + [ self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2, 217502=>1], + [ self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2, self::T_SIEGE=>0.8, 217502=>1], ["작은 몸으로 회피하며 따끔한 일격을 먹이는 몬스터 기동병입니다."], null, null ], [ - 217203, self::T_CAVALRY, '적의 군 기동병', + 217302, self::T_CAVALRY, '적의 군 기동병', 200, 100, 7, 5, 0, 12, 13, 1000, null, ["리자스 북부"], 0, - [ self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2], - [ self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2, self::T_SIEGE=>0.8], + [ self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2, 217502=>1], + [ self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2, self::T_SIEGE=>0.8, 217502=>1], ["리자스군의 자랑인 기동부대입니다."], null, null ], [ - 217204, self::T_CAVALRY, '안드로이드 기동병', + 217303, self::T_CAVALRY, '안드로이드 기동병', 175, 150, 7, 10, 0, 13, 12, 2000, ["악의 탑"], null, 0, - [ self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2], - [ self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2, self::T_SIEGE=>0.8], + [ self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2, 217502=>1], + [ self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2, self::T_SIEGE=>0.8, 217502=>1], ["파이아르가 개발한 최첨단 안드로이드 기동병입니다."], null, null ], [ - 217205, self::T_CAVALRY, '파란쵸 기동병', + 217304, self::T_CAVALRY, '파란쵸 기동병', 200, 100, 8, 5, 0, 13, 11, 2000, ["파란쵸 왕국"], null, 0, - [ self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2], - [ self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2, self::T_SIEGE=>0.8], + [ self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2, 217502=>1], + [ self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2, self::T_SIEGE=>0.8, 217502=>1], ["적진을 일점돌파하는 파란쵸왕국의 돌격 기동병입니다. "], null, null ], [ - 217206, self::T_CAVALRY, '비행마물병', + 217305, self::T_CAVALRY, '비행마물병', 150, 100, 8, 15, 0, 12, 12, 2000, ["죽음의 대지"], null, 0, - [ self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2], - [ self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2, self::T_SIEGE=>0.8], + [ self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2, 217502=>1], + [ self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2, self::T_SIEGE=>0.8, 217502=>1], ["비행마물에 올라탄 기동마물병입니다."], null, null ], [ - 217207, self::T_CAVALRY, '마물조련사병', + 217306, self::T_CAVALRY, '마물조련사병', 250, 200, 6, 0, 0, 16, 16, 3000, ["랑그바우"], null, 0, - [ self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2], - [ self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2, self::T_SIEGE=>0.8], + [ self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2, 217502=>1], + [ self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2, self::T_SIEGE=>0.8, 217502=>1], ["무시무시한 몬스터에 올라타서 싸우는 극강의 기동병입니다."], null, null ], [ - 217208, self::T_CAVALRY, '기마병', + 217307, self::T_CAVALRY, '기마병', 200, 150, 7, 5, 0, 14, 14, 3000, ["오와리"], null, 0, - [ self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2], - [ self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2, self::T_SIEGE=>0.8], + [ self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2, 217502=>1], + [ self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2, self::T_SIEGE=>0.8, 217502=>1], ["JAPAN 특유의 기마에 올라타 적을 짓밟는 기동병입니다."], null, null ], [ - 217209, self::T_CAVALRY, '엔젤나이트', + 217308, self::T_CAVALRY, '엔젤나이트', 300, 200, 7, 5, 0, 25, 25, 5000, ["떨어진 궁도"], null, 0, - [ self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2], - [ self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2, self::T_SIEGE=>0.8], + [ self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2, 217502=>1], + [ self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2, self::T_SIEGE=>0.8, 217502=>1], ["신의 명령으로 파멸을 내리기 위해 강림했습니다."], null, null ], [ - 217301, self::T_WIZARD, '마법병', + 217400, self::T_WIZARD, '마법병', 80, 80, 7, 5, 0.6, 9, 9, 0, null, null, 0, [self::T_SIEGE=>1.2], @@ -307,7 +307,7 @@ class GameUnitConst extends GameUnitConstBase null, null ], [ - 217302, self::T_WIZARD, '마물 마법병', + 217401, self::T_WIZARD, '마물 마법병', 90, 90, 7, 0, 0.6, 11, 9, 0, null, ["호넷 마인령","케이브리스 마인령"], 0, [self::T_SIEGE=>1.2], @@ -316,7 +316,7 @@ class GameUnitConst extends GameUnitConstBase null, null ], [ - 217303, self::T_WIZARD, '카라 마법병', + 217402, self::T_WIZARD, '카라 마법병', 80, 80, 7, 20, 0.6, 10, 10, 1000, null, ["카라의 숲"], 0, [self::T_SIEGE=>1.2], @@ -325,7 +325,7 @@ class GameUnitConst extends GameUnitConstBase null, null ], [ - 217304, self::T_WIZARD, '제스 마법병', + 217403, self::T_WIZARD, '제스 마법병', 100, 100, 7, 0, 0.6, 10, 10, 1000, null, ["제스 북부"], 0, [self::T_SIEGE=>1.2], @@ -334,7 +334,7 @@ class GameUnitConst extends GameUnitConstBase null, null ], [ - 217305, self::T_WIZARD, '무녀', + 217404, self::T_WIZARD, '무녀', 80, 80, 8, 10, 0.6, 10, 10, 1000, null, ["JAPAN"], 0, [self::T_SIEGE=>1.2], @@ -343,7 +343,7 @@ class GameUnitConst extends GameUnitConstBase null, null ], [ - 217306, self::T_WIZARD, '프로즌', + 217405, self::T_WIZARD, '프로즌', 90, 70, 7, 10, 0.8, 10, 10, 1000, null, ["헬만 서부"], 0, [self::T_SIEGE=>1.2], @@ -352,7 +352,7 @@ class GameUnitConst extends GameUnitConstBase null, null ], [ - 217307, self::T_WIZARD, '마소한 마법병', + 217406, self::T_WIZARD, '마소한 마법병', 70, 90, 7, 10, 0.8, 11, 10, 1000, null, ["케이브리스 마인령"], 0, [self::T_SIEGE=>1.2], @@ -361,7 +361,7 @@ class GameUnitConst extends GameUnitConstBase null, null ], [ - 217308, self::T_WIZARD, '신관병', + 217407, self::T_WIZARD, '신관병', 80, 130, 7, 5, 0.6, 9, 11, 2000, ["카이즈"], null, 0, [self::T_SIEGE=>1.2], @@ -370,7 +370,7 @@ class GameUnitConst extends GameUnitConstBase null, null ], [ - 217309, self::T_WIZARD, '중장마법병', + 217408, self::T_WIZARD, '중장마법병', 80, 130, 7, 15, 0.6, 11, 12, 3000, ["로제스그라드"], null, 0, [self::T_SIEGE=>1.2], @@ -379,7 +379,7 @@ class GameUnitConst extends GameUnitConstBase null, null ], [ - 217310, self::T_WIZARD, '악마병', + 217409, self::T_WIZARD, '악마병', 130, 80, 7, 15, 0.6, 11, 12, 3000, ["올드제스"], null, 0, [self::T_SIEGE=>1.2], @@ -388,7 +388,7 @@ class GameUnitConst extends GameUnitConstBase null, null ], [ - 217311, self::T_WIZARD, '호넷 마물병', + 217410, self::T_WIZARD, '호넷 마물병', 130, 130, 7, 0, 0.6, 12, 12, 3000, ["구 마왕성"], null, 0, [self::T_SIEGE=>1.2], @@ -397,7 +397,7 @@ class GameUnitConst extends GameUnitConstBase null, null ], [ - 217312, self::T_WIZARD, 'Z가디언', + 217411, self::T_WIZARD, 'Z가디언', 180, 180, 7, 0, 0.7, 28, 20, 5000, ["라그나로크 아크"], null, 0, [self::T_SIEGE=>1.2], @@ -407,7 +407,7 @@ class GameUnitConst extends GameUnitConstBase ], [ - 217401, self::T_SIEGE, '정란', + 217500, self::T_SIEGE, '정란', 150, 150, 6, 0, 0, 15, 5, 0, null, null, 3, [ self::T_FOOTMAN=>0.8, self::T_ARCHER=>0.8, self::T_CAVALRY=>0.8, self::T_WIZARD=>0.8, self::T_CASTLE=>1.8], @@ -416,7 +416,7 @@ class GameUnitConst extends GameUnitConstBase ['che_성벽부상무효'], null ], [ - 217402, self::T_SIEGE, '충차', + 217501, self::T_SIEGE, '충차', 150, 100, 6, 0, 0, 20, 5, 1000, null, null, 3, [ self::T_FOOTMAN=>0.8, self::T_ARCHER=>0.8, self::T_CAVALRY=>0.8, self::T_WIZARD=>0.8, self::T_CASTLE=>2.4], @@ -425,7 +425,7 @@ class GameUnitConst extends GameUnitConstBase ['che_성벽부상무효'], null ], [ - 217403, self::T_SIEGE, '튤립3호', + 217502, self::T_SIEGE, '튤립3호', 275, 300, 6, 0, 0, 35, 15, 5000, ["커스텀"], null, 0, [ ], diff --git a/hwe/scenario/unit/siegetank.php b/hwe/scenario/unit/siegetank.php index cb9bfb33..805a1543 100644 --- a/hwe/scenario/unit/siegetank.php +++ b/hwe/scenario/unit/siegetank.php @@ -7,7 +7,7 @@ class GameUnitConst extends GameUnitConstBase protected static $_buildData = [ [ - -1, self::T_CASTLE, '성벽', + 1000, self::T_CASTLE, '성벽', 100, 100, 7, 0, 0, 99, 9, 999999, null, null, 999999, [],//성벽은 공격할 수 없다. @@ -16,7 +16,7 @@ class GameUnitConst extends GameUnitConstBase null, null ], [ - 0, self::T_FOOTMAN, '보병', + 1100, self::T_FOOTMAN, '보병', 100, 150, 7, 10, 0, 18, 18, 0, null, null, 0, [self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8], @@ -26,7 +26,7 @@ class GameUnitConst extends GameUnitConstBase ], [ - 10, self::T_ARCHER, '궁병', + 1200, self::T_ARCHER, '궁병', 100, 100, 7, 20, 0, 20, 20, 0, null, null, 0, [self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8], @@ -36,7 +36,7 @@ class GameUnitConst extends GameUnitConstBase ], [ - 20, self::T_CAVALRY, '기병', + 1300, self::T_CAVALRY, '기병', 150, 100, 7, 5, 0, 22, 22, 0, null, null, 0, [self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8], @@ -46,7 +46,7 @@ class GameUnitConst extends GameUnitConstBase ], [ - 30, self::T_WIZARD, '귀병', + 1400, self::T_WIZARD, '귀병', 80, 80, 7, 5, 0.5, 18, 18, 0, null, null, 0, [], @@ -55,7 +55,7 @@ class GameUnitConst extends GameUnitConstBase null, null ], [ - 35, self::T_WIZARD, '남귀병', + 1405, self::T_WIZARD, '남귀병', 60, 60, 7, 10, 0.8, 16, 16, 1000, null, null, 0, [], @@ -65,7 +65,7 @@ class GameUnitConst extends GameUnitConstBase ], [ - 40, self::T_SIEGE, '정란', + 1500, self::T_SIEGE, '정란', 100, 100, 6, 0, 0, 7, 3, 0, null, null, 0, [self::T_CASTLE=>1.8], @@ -74,7 +74,7 @@ class GameUnitConst extends GameUnitConstBase ['che_성벽부상무효'], null ], [ - 41, self::T_SIEGE, '충차', + 1501, self::T_SIEGE, '충차', 150, 100, 6, 0, 0, 10, 3, 1000, null, null, 3, [self::T_CASTLE=>2.4], @@ -83,7 +83,7 @@ class GameUnitConst extends GameUnitConstBase ['che_성벽부상무효'], null ], [ - 42, self::T_SIEGE, '벽력거', + 1502, self::T_SIEGE, '벽력거', 200, 100, 6, 0, 0, 20, 4, 3000, ['업'], null, 0, [self::T_CASTLE=>1.8], @@ -92,7 +92,7 @@ class GameUnitConst extends GameUnitConstBase ['che_성벽부상무효'], null ], [ - 43, self::T_SIEGE, '목우', + 1503, self::T_SIEGE, '목우', 50, 200, 5, 0, 0, 15, 3, 3000, ['성도'], null, 0, [], diff --git a/hwe/sql/schema.sql b/hwe/sql/schema.sql index 6b289896..72c6b471 100644 --- a/hwe/sql/schema.sql +++ b/hwe/sql/schema.sql @@ -33,11 +33,11 @@ CREATE TABLE `general` ( `injury` INT(2) NOT NULL DEFAULT '0', `experience` INT(6) NOT NULL DEFAULT '0', `dedication` INT(6) NOT NULL DEFAULT '0', - `dex0` INT(8) NOT NULL DEFAULT '0', - `dex10` INT(8) NOT NULL DEFAULT '0', - `dex20` INT(8) NOT NULL DEFAULT '0', - `dex30` INT(8) NOT NULL DEFAULT '0', - `dex40` INT(8) NOT NULL DEFAULT '0', + `dex1` INT(8) NOT NULL DEFAULT '0', + `dex2` INT(8) NOT NULL DEFAULT '0', + `dex3` INT(8) NOT NULL DEFAULT '0', + `dex4` INT(8) NOT NULL DEFAULT '0', + `dex5` INT(8) NOT NULL DEFAULT '0', `level` INT(2) NOT NULL DEFAULT '0', `permission` ENUM('normal','auditor','ambassador') NULL DEFAULT 'normal', `gold` INT(6) NOT NULL DEFAULT '1000', @@ -51,7 +51,7 @@ CREATE TABLE `general` ( `horse` VARCHAR(20) NOT NULL DEFAULT 'None', `item` VARCHAR(20) NOT NULL DEFAULT 'None', `turntime` DATETIME(6) NOT NULL, - `recwar` DATETIME(6) NULL DEFAULT NULL, + `recent_war` DATETIME(6) NULL DEFAULT NULL, `makelimit` INT(2) NULL DEFAULT '0', `killturn` INT(3) NULL DEFAULT NULL, `lastconnect` DATETIME NULL DEFAULT NULL,