병종 코드, 숙련 코드 재설정

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