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

병종 상성 지정시 병종 단위가 아니라 병종 코드 자체로 지정 가능
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']);
$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 "접속 허용":
+15 -15
View File
@@ -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++) {
<td align=right>&nbsp;{$gen['avgs']}&nbsp;</td>
<td align=right>&nbsp;{$gen['avgi']}&nbsp;</td>
<td align=right>&nbsp;{$gen['avge']}&nbsp;</td>
<td align=right>&nbsp;{$nation['dex0']}&nbsp;</td>
<td align=right>&nbsp;{$nation['dex10']}&nbsp;</td>
<td align=right>&nbsp;{$nation['dex20']}&nbsp;</td>
<td align=right>&nbsp;{$nation['dex30']}&nbsp;</td>
<td align=right>&nbsp;{$nation['dex40']}&nbsp;</td>
<td align=right>&nbsp;{$nation['dex1']}&nbsp;</td>
<td align=right>&nbsp;{$nation['dex2']}&nbsp;</td>
<td align=right>&nbsp;{$nation['dex3']}&nbsp;</td>
<td align=right>&nbsp;{$nation['dex4']}&nbsp;</td>
<td align=right>&nbsp;{$nation['dex5']}&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;".sprintf('%.1f',$city['pop']/$city['pop_max']*100)."%&nbsp;</td>
+2 -2
View File
@@ -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']){
+6 -6
View File
@@ -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
){
+2 -2
View File
@@ -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']){
+41 -41
View File
@@ -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 "<table width=498 class='tb_layout bg2'>
<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 height=16>
<td width=64 style='text-align:center;' class='bg1'><b>보병</b></td>
<td width=40> {$general['dex0_text']}</td>
<td width=60 align=right>{$general['dex0_short']}&nbsp;</td>
<td width=330 style='text-align:center;'>".bar($dex0, 16)."</td>
<td width=40> {$general['dex1_text']}</td>
<td width=60 align=right>{$general['dex1_short']}&nbsp;</td>
<td width=330 style='text-align:center;'>".bar($dex1, 16)."</td>
</tr>
<tr height=16>
<td style='text-align:center;' class='bg1'><b>궁병</b></td>
<td> {$general['dex10_text']}</td>
<td align=right>{$general['dex10_short']}&nbsp;</td>
<td style='text-align:center;'>".bar($dex10, 16)."</td>
<td> {$general['dex2_text']}</td>
<td align=right>{$general['dex2_short']}&nbsp;</td>
<td style='text-align:center;'>".bar($dex2, 16)."</td>
</tr>
<tr height=16>
<td style='text-align:center;' class='bg1'><b>기병</b></td>
<td> {$general['dex20_text']}</td>
<td align=right>{$general['dex20_short']}&nbsp;</td>
<td style='text-align:center;'>".bar($dex20, 16)."</td>
<td> {$general['dex3_text']}</td>
<td align=right>{$general['dex3_short']}&nbsp;</td>
<td style='text-align:center;'>".bar($dex3, 16)."</td>
</tr>
<tr height=16>
<td style='text-align:center;' class='bg1'><b>귀병</b></td>
<td> {$general['dex30_text']}</td>
<td align=right>{$general['dex30_short']}&nbsp;</td>
<td style='text-align:center;'>".bar($dex30, 16)."</td>
<td> {$general['dex4_text']}</td>
<td align=right>{$general['dex4_short']}&nbsp;</td>
<td style='text-align:center;'>".bar($dex4, 16)."</td>
</tr>
<tr height=16>
<td style='text-align:center;' class='bg1'><b>차병</b></td>
<td> {$general['dex40_text']}</td>
<td align=right>{$general['dex40_short']}&nbsp;</td>
<td style='text-align:center;'>".bar($dex40, 16)."</td>
<td> {$general['dex5_text']}</td>
<td align=right>{$general['dex5_short']}&nbsp;</td>
<td style='text-align:center;'>".bar($dex5, 16)."</td>
</tr>
</table>";
}
@@ -1300,7 +1300,7 @@ function addAge() {
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);
$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'],
+5 -5
View File
@@ -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;
+3 -3
View File
@@ -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),"");
+8 -8
View File
@@ -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]],
+5 -5
View File
@@ -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;
+11 -11
View File
@@ -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),
};
@@ -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);
@@ -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);
+1 -1
View File
@@ -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;
}
+43 -40
View File
@@ -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;
}
+12 -10
View File
@@ -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){
+8 -9
View File
@@ -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'
];
+15 -15
View File
@@ -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 = [];
+5 -5
View File
@@ -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);
+3 -25
View File
@@ -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{
+8 -8
View File
@@ -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],
+106 -106
View File
@@ -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,
[ ],
+10 -10
View File
@@ -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,
[],
+6 -6
View File
@@ -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,