Compare commits

...
33 Commits
Author SHA1 Message Date
Hide_D f33e645113 초반 m장 스탯 관련 문제 해결, 장수 선택 term 해결 2021-01-01 21:09:43 +09:00
Hide_D 528d30c317 의병모집 버그 수정 2021-01-01 19:56:29 +09:00
Hide_D 7f0a3d320c 버그 수정
- 의병 모집
- 장수 변경 시 생성 폼 남음
2021-01-01 19:54:28 +09:00
Hide_D 8e940aeb65 버그 수정. 시간 변경 2020-12-31 16:21:57 +09:00
Hide_D a77ee60809 버그.. 2020-12-31 13:34:37 +09:00
Hide_D 83383c29cd 버그 수정2 2020-12-31 13:33:45 +09:00
Hide_D b6393141e8 버그 수정 2020-12-31 13:29:57 +09:00
Hide_D 10ce1827d8 버그 수정 2020-12-31 13:27:11 +09:00
Hide_D 605f3a12ff select pool 수 증가 2020-12-31 13:24:33 +09:00
Hide_D a33539e75f 턴 변경을 합리적으로 변경 2020-12-31 08:09:23 +09:00
Hide_D b2cca3687a 버그 수정 2020-12-31 07:49:33 +09:00
Hide_D 628c54044f general_pool 에서 장수 선택 기능 추가 2020-12-31 07:43:56 +09:00
Hide_D c0e7a3eece readme 수정 2020-12-27 19:49:39 +09:00
Hide_D c7c13c19c1 일부 수정
composer update, README.md 업데이트
2020-12-27 02:11:53 +09:00
Hide_D d5f71b5878 DummySession 준비 2020-12-26 15:48:05 +09:00
Hide_D cb589e9e26 종전수락 버그 수정 2020-12-13 22:05:07 +09:00
Hide_D eaeed47297 도시 정보 출력 순서 변경 2020-11-11 23:34:53 +09:00
Hide_D e00e5c5cd7 이벤트 빼빼로 추가 2020-11-11 23:04:08 +09:00
Hide_D b3719f7166 수극 연속 사용 버그 수정 2020-09-09 14:20:15 +09:00
Hide_D 337896974b 피장파장 로그 버그 수정 2020-09-09 14:20:15 +09:00
Hide_D bb7d1fc9ab 수몰을 아무 국가에나 쓸 수 있는 버그 수정 2020-09-09 14:20:15 +09:00
Hide_D 07765c8d44 훈사 제한 버그 2020-08-17 09:21:37 +09:00
Hide_D 85cb91071e 기본 도시 정보 데이터 대폭 추가 2020-08-15 03:46:43 +09:00
Hide_D d41839845a 귀병 첫 페이즈 매우 높은 확률로 계략 시도 2020-08-11 22:43:45 +09:00
Hide_D c3d12aa55f 전쟁/선포 중인 국가에 선포 확률 대폭 감소 2020-08-11 22:36:26 +09:00
Hide_D a781e4b84c 인탐 성공 시 확률따라 추가 보정, 인탐/의병 지장 버그 수정 2020-08-11 22:33:50 +09:00
Hide_D 1fc0989fd2 계략 강화, 탈취량 시간에 따라 증가 2020-08-11 22:33:00 +09:00
Hide_D 14752260d3 회피 필살 중첩 가능 2020-07-24 14:19:05 +09:00
Hide_D 84675c874f 이호경식 버그 수정 2020-07-21 22:38:53 +09:00
Hide_D f30e6057be 버그 테스트 2020-07-21 22:34:10 +09:00
Hide_D ba8b629f0e 격노비급 버그 수정 2020-07-21 03:41:27 +09:00
Hide_D a0a45ff2aa 격노 비급 버그 수정 2020-07-21 03:32:37 +09:00
Hide_D 325f890a0b 방랑시 버그 수정 2020-07-20 23:24:15 +09:00
89 changed files with 6542 additions and 1842 deletions
+1
View File
@@ -29,6 +29,7 @@ d_shared
d_pic/*.jpg d_pic/*.jpg
d_pic/*.gif d_pic/*.gif
d_pic/*.png d_pic/*.png
d_pic/*.webp
d_pic/uploaded_image d_pic/uploaded_image
d_setting/*.php d_setting/*.php
+5 -5
View File
@@ -9,18 +9,18 @@
* <code>mpm_event</code> 권장 * <code>mpm_event</code> 권장
* PHP 7.3 이상 * PHP 7.3 이상
* <code>php-fpm</code> 권장 * <code>php-fpm</code> 권장
* php에서 curl, pdo-sqlite을 실행가능해야 합니다. (기본값: 지원) * php에서 curl, pdo-sqlite을 실행가능해야 합니다.
* mysqlnd가 지원되어야합니다. (기본값: 지원) * mysqli, mysqlnd
* mysqli
* gd * gd
* mbstring
* MariaDB 10.2.1 이상 * MariaDB 10.2.1 이상
* 현재 MySQL은 지원하지 않습니다. * 현재 MySQL은 지원하지 않습니다.
* <code>git</code> * <code>git</code>
* <code>curl</code> * <code>curl</code>
Linux는 Ubuntu 16.04, 18.04, Windows는 Windows 10에서 XAMPP를 사용한 환경에서 테스트되었습니다. Linux는 Ubuntu 18.04, 20.04, Windows는 Windows 10에서 XAMPP, WSL2를 사용한 환경에서 테스트되었습니다.
Docker를 이용한 설치는 계획중입니다. Docker를 이용한 설치는 테스트버전만 제공됩니다.
## Docker를 이용한 설치 ## Docker를 이용한 설치
Regular → Executable
BIN
View File
Binary file not shown.
+240 -181
View File
@@ -1,182 +1,241 @@
@charset "utf-8"; @charset "utf-8";
body {
body { color: white;
color:white; background-color:black; font-family: '맑은 고딕'; background-color: black;
} font-family: '맑은 고딕';
}
table {
border: solid 1px; border-spacing: 0px; border-collapse: separate; border-top-color: gray; border-left-color: gray; border-right-color: black; border-bottom-color: black; table {
padding: 0px; border: solid 1px;
font-size: 13px; border-spacing: 0px;
word-break: break-all; border-collapse: separate;
text-align: center; border-top-color: gray;
font-family: '맑은 고딕'; border-left-color: gray;
} border-right-color: black;
th, td { border-bottom-color: black;
border: solid 1px; border-spacing: 0px; border-collapse: separate; border-top-color: gray; border-left-color: gray; border-right-color: black; border-bottom-color: black; padding: 0px;
padding: 0px; font-size: 13px;
font-size: 13px; word-break: break-all;
word-break: break-all; text-align: center;
text-align: center; font-family: '맑은 고딕';
font-family: '맑은 고딕'; }
}
th,
a.just_link { td {
text-decoration: none; border: solid 1px;
} border-spacing: 0px;
border-collapse: separate;
.with_border{ border-top-color: gray;
margin:0; border-left-color: gray;
border: solid 1px; border-right-color: black;
border-spacing: 0px; border-bottom-color: black;
border-collapse: separate; padding: 0px;
border-top-color: gray; font-size: 13px;
border-left-color: gray; word-break: break-all;
border-right-color: black; text-align: center;
border-bottom-color: black; font-family: '맑은 고딕';
} }
.section_title { a.just_link {
height:50px; text-decoration: none;
line-height:50px; }
font-size: 30px; font-weight: bold;
text-align: center; .with_border {
color:white; margin: 0;
padding:0; border: solid 1px;
} border-spacing: 0px;
border-collapse: separate;
.legacy_layout div { border-top-color: gray;
border: solid 1px; border-spacing: 0px; border-collapse: separate; border-top-color: gray; border-left-color: gray; border-right-color: black; border-bottom-color: black; border-left-color: gray;
padding: 0px; border-right-color: black;
font-size: 13px; border-bottom-color: black;
word-break: break-all; }
text-align: center;
font-family: '맑은 고딕';; .section_title {
} height: 50px;
line-height: 50px;
.obj_fill{ font-size: 30px;
display:block; font-weight: bold;
width:100%; text-align: center;
height:100%; color: white;
} padding: 0;
}
button.with_skin {
padding:0 4px; .legacy_layout div {
background-color: black; color: white; border: solid 1px;
font-family: '맑은 고딕'; border-spacing: 0px;
font-size: 13px; border-collapse: separate;
} border-top-color: gray;
border-left-color: gray;
button.with_skin:disabled { border-right-color: black;
background-color:#333333; border-bottom-color: black;
} padding: 0px;
font-size: 13px;
input.with_skin { word-break: break-all;
background-color: black; color: white; text-align: center;
font-family: '맑은 고딕'; font-family: '맑은 고딕';
font-size: 13px; ;
} }
input.with_skin:disabled { .obj_fill {
background-color: #333333; display: block;
} width: 100%;
height: 100%;
.font0 { font-size: 10px; } }
.font1 { font-size: 13px; }
.font2 { font-size: 15px; } button.with_skin {
.font3 { font-size: 20px; } padding: 0 4px;
.font4 { font-size: 30px; } background-color: black;
.font5 { font-size: 50px; } color: white;
font-family: '맑은 고딕';
caption.section_title { font-size: 13px;
caption-side:top; }
}
button.with_skin:disabled {
background-color: #333333;
.samButton{ }
float:left;
display:block; input.with_skin {
padding:0; background-color: black;
margin:0; color: white;
text-decoration: none; font-family: '맑은 고딕';
position:relative; font-size: 13px;
} }
a.samButton.disabled { input.with_skin:disabled {
pointer-events: none; background-color: #333333;
cursor: default; }
}
.font0 {
.samButtonOuter{ font-size: 10px;
display: table; }
border: outset 2px white;
box-sizing: border-box; .font1 {
font-weight:bold; font-size: 13px;
padding: 1px 6px; }
width:125px;
height:30px; .font2 {
background-color:#000000; font-size: 15px;
color:#ffffff; }
}
.font3 {
.samButtonOuter:active{ font-size: 20px;
border: inset 2px white; }
}
.font4 {
font-size: 30px;
.samButtonInner{ }
display: table-cell;
vertical-align: middle; .font5 {
width: 100%; font-size: 50px;
margin: 0 auto; }
text-align: center;
user-select: none; caption.section_title {
} caption-side: top;
}
.samToolbarButton > .samButtonOuter{
width:125px; .samButton {
height:30px; float: left;
background-color:#225500; display: block;
color:white; padding: 0;
} margin: 0;
text-decoration: none;
.samToolbarButton2 > .samButtonOuter{ position: relative;
width:125px; }
height:30px;
background-color:#225500; a.samButton.disabled {
color:magenta; pointer-events: none;
} cursor: default;
}
.samCommandButton > .samButtonOuter{
width:111px; .samButtonOuter {
height:30px; display: table;
} border: outset 2px white;
box-sizing: border-box;
.samCommandButton.disabled > .samButtonOuter{ font-weight: bold;
background-color:transparent !important; padding: 1px 6px;
color:gray !important; width: 125px;
border-color:transparent !important; height: 30px;
} background-color: #000000;
color: #ffffff;
.samCommandButton.disabled > .samButtonOuter > .samButtonInner::before{ }
content:'【'
} .samButtonOuter:active {
border: inset 2px white;
.samCommandButton.disabled > .samButtonOuter > .samButtonInner::after{ }
content:'】'
} .samButtonInner {
display: table-cell;
.tooltip_copyable_info .tooltiptext{ vertical-align: middle;
display: inline; width: 100%;
color: rgba(0,0,0,0); margin: 0 auto;
font-size: 0; text-align: center;
} user-select: none;
}
.tooltiptext {
display: none; .samToolbarButton>.samButtonOuter {
} width: 125px;
height: 30px;
.hidden_but_copyable{ background-color: #225500;
color: rgba(0,0,0,0); color: white;
font-size: 0; }
.samToolbarButton2>.samButtonOuter {
width: 125px;
height: 30px;
background-color: #225500;
color: magenta;
}
.samCommandButton>.samButtonOuter {
width: 111px;
height: 30px;
}
.samCommandButton.disabled>.samButtonOuter {
background-color: transparent !important;
color: gray !important;
border-color: transparent !important;
}
.samCommandButton.disabled>.samButtonOuter>.samButtonInner::before {
content: '【'
}
.samCommandButton.disabled>.samButtonOuter>.samButtonInner::after {
content: '】'
}
.tooltip_copyable_info .tooltiptext {
display: inline;
color: rgba(0, 0, 0, 0);
font-size: 0;
}
.tooltiptext {
display: none;
}
.hidden_but_copyable {
color: rgba(0, 0, 0, 0);
font-size: 0;
}
.vertical_flex {
height: 100%;
display: flex;
align-content: center;
flex-direction: column;
align-items: stretch;
}
.vertical_flex .item {
display: block;
flex-grow: 1;
}
.fill_box {
display: block;
width: 100%;
height: 100%;
} }
+155 -140
View File
@@ -1,141 +1,156 @@
@charset "utf-8"; @charset "utf-8";
body {
body{ line-height: 1.3;
line-height: 1.3; }
}
#server_notice {
#server_notice { margin: 10px 0;
margin:10px 0; border: none;
border: none; text-align: center;
text-align:center; }
}
#server_list_container {
#server_list_container{ width: 800px;
width:800px; position: absolute;
position:absolute; left: 50%;
left:50%; margin-left: -400px;
margin-left:-400px; }
}
#server_list_table {
#server_list_table{ width: 100%;
width:100%; }
}
#server_list tr {
#server_list tr{ height: 66px;
height:66px; }
}
.ignore_border {
#server_list .server_create_and_select .general_create, border: 0;
#server_list .server_create_and_select .general_select { margin: 0;
width: 120px; height: 33px; padding: 0;
float: left; }
}
#user_info {
#server_list .general_create, margin-top: 20px;
#server_list .general_login { width: 800px;
width: 120px; height: 66px; height: 130px;
float: left; }
}
#user_info button {
.ignore_border{ width: 200px;
border:0; height: 50px;
margin:0; margin: 10px 50px;
padding:0; }
}
.center_ordered_items {
#user_info { text-align: center;
margin-top:20px; }
width: 800px; height: 130px;
} .Entrance_ServerList {
width: 800px;
height: 64px;
#user_info button{ border: none;
width: 200px; float: left;
height: 50px; }
margin: 10px 50px;
} .Entrance_ServerListServer {
width: 98px;
.center_ordered_items{ height: 64px;
text-align:center; float: left;
} }
.Entrance_ServerList { .Entrance_ServerListDown {
width: 800px; height: 64px; width: 698px;
border: none; height: 64px;
float: left; float: left;
} }
.Entrance_ServerListServer { .Entrance_ServerListInfo {
width: 98px; height: 64px; width: 398px;
float: left; height: 64px;
} float: left;
}
.Entrance_ServerListDown {
width: 698px; height: 64px; .Entrance_ServerListBlock {
float: left; width: 298px;
} height: 64px;
float: left;
.Entrance_ServerListInfo { line-height: 64px;
width: 398px; height: 64px; }
float: left;
} .Entrance_ServerListCharacter {
width: 64px;
.Entrance_ServerListBlock { height: 64px;
width: 298px; height: 64px; float: left;
float: left; }
line-height: 64px;
} .Entrance_ServerListName {
width: 112px;
.Entrance_ServerListCharacter { height: 64px;
width: 64px; height: 64px; float: left;
float: left; line-height: 64px;
} }
.Entrance_ServerListName { .Entrance_ServerListSelect {
width: 112px; height: 64px; width: 120px;
float: left; height: 32px;
line-height: 64px; float: left;
} }
#Entrance_000003 {
.Entrance_ServerListSelect { width: 798px;
width: 120px; height: 32px; height: 155px;
float: left; text-align: left;
} }
#Entrance_000003 { .Entrance_Alert {
width: 798px; height: 155px; color: red;
text-align: left; font-size: 15px;
} font-weight: bold;
}
.Entrance_Alert {
color: red; font-size: 15px; font-weight: bold; .Entrance_Che {
} color: white;
font-size: 15px;
.Entrance_Che { font-weight: bold;
color: white; font-size: 15px; font-weight: bold; }
}
.Entrance_Kwe {
.Entrance_Kwe { color: yellow;
color: yellow; font-size: 15px; font-weight: bold; font-size: 15px;
} font-weight: bold;
}
.Entrance_Pwe {
color: orange; font-size: 15px; font-weight: bold; .Entrance_Pwe {
} color: orange;
font-size: 15px;
.Entrance_Twe { font-weight: bold;
color: magenta; font-size: 15px; font-weight: bold; }
}
.Entrance_Twe {
.Entrance_Nya { color: magenta;
color: #e67e22; font-size: 15px; font-weight: bold; font-size: 15px;
} font-weight: bold;
}
.Entrance_Pya {
color: #9b59b6; font-size: 15px; font-weight: bold; .Entrance_Nya {
} color: #e67e22;
font-size: 15px;
.Entrance_Hwe { font-weight: bold;
color: red; font-size: 15px; font-weight: bold; }
.Entrance_Pya {
color: #9b59b6;
font-size: 15px;
font-weight: bold;
}
.Entrance_Hwe {
color: red;
font-size: 15px;
font-weight: bold;
}
.BtnPlate {
height: inherit;
} }
+64 -11
View File
@@ -148,8 +148,30 @@ echo "
unset($city); unset($city);
// 첩보된 도시까지만 허용 // 첩보된 도시까지만 허용
if($valid == 0 && $userGrade < 5) {
$showDetailedInfo = false;
if($valid){
$showDetailedInfo = true;
}
if(!key_exists($citylist, CityConst::all())){
$citylist = $me['city']; $citylist = $me['city'];
$showDetailedInfo = true;
$valid = 1;
}
if($userGrade >= 5){
$valid = true;
}
if(!$valid) {
$ownCities = Util::convertArrayToSetLike($db->queryFirstColumn('SELECT city FROM city WHERE nation = %i AND nation != 0', $me['nation']));
foreach(array_keys(CityConst::byID($citylist)->path) as $pathID){
if(key_exists($pathID, $ownCities)){
$showDetailedInfo = true;
break;
}
}
} }
@@ -172,11 +194,35 @@ if($city['trade'] === null) {
} }
$dbColumns = General::mergeQueryColumn(['npc', 'defence_train', 'no', 'picture', 'imgsvr', 'name', 'injury', 'leadership', 'strength', 'intel', 'officer_level', 'nation', 'crewtype', 'crew', 'train', 'atmos'], 2)[0]; $dbColumns = General::mergeQueryColumn(['npc', 'defence_train', 'no', 'picture', 'imgsvr', 'name', 'injury', 'leadership', 'strength', 'intel', 'officer_level', 'nation', 'crewtype', 'crew', 'train', 'atmos'], 2)[0];
$generals = $db->query( if($showDetailedInfo){
'SELECT %l from general where city=%i order by name', $generals = $db->query(
Util::formatListOfBackticks($dbColumns), 'SELECT %l from general where city=%i order by turntime',
$city['city'] Util::formatListOfBackticks($dbColumns),
); $city['city']
);
}
else{
$generals = [];
}
if($valid){
$city['trustText'] = round($city['trust'], 1);
$city['popRateText'] = round($city['pop']/$city['pop_max']*100, 2);
}
else{
$city['agri'] = '?';
$city['comm'] = '?';
$city['pop'] = '?';
$city['secu'] = '?';
$city['trustText'] = '?';
$city['popRateText'] = '?';
if($city['nation'] != 0){
$city['def'] = '?';
$city['wall'] = '?';
}
}
$generalTurnList = []; $generalTurnList = [];
@@ -257,6 +303,10 @@ foreach($generals as $general){
$crew = $general['crew']; $crew = $general['crew'];
$train = -1; $train = -1;
$atmos = -1; $atmos = -1;
if(!$valid){
$crew = -1;
}
} }
$nation = $general['nation']; $nation = $general['nation'];
@@ -331,7 +381,9 @@ foreach($generalsFormat as $general){
} }
if($general['nation'] != $myNation['nation']){ if($general['nation'] != $myNation['nation']){
$enemyCnt += 1; $enemyCnt += 1;
$enemyCrew += $general['crew']; if($general['crew'] >= 0){
$enemyCrew += $general['crew'];
}
if($general['crew'] > 0){ if($general['crew'] > 0){
$enemyArmedCnt += 1; $enemyArmedCnt += 1;
} }
@@ -402,11 +454,11 @@ foreach($generalsFormat as $general){
</tr> </tr>
<tr> <tr>
<td align=center class=bg1>민심</td> <td align=center class=bg1>민심</td>
<td align=center><?=round($city['trust'], 1)?></td> <td align=center><?=$city['trustText']?></td>
<td align=center class=bg1>시세</td> <td align=center class=bg1>시세</td>
<td align=center><?=$city['trade']?>%</td> <td align=center><?=$city['trade']?>%</td>
<td align=center class=bg1>인구</td> <td align=center class=bg1>인구</td>
<td align=center><?=round($city['pop']/$city['pop_max']*100, 2)?>%</td> <td align=center><?=$city['popRateText']?>%</td>
<td align=center class=bg1>태수</td> <td align=center class=bg1>태수</td>
<td align=center><?=$officer[4]['name']?></td> <td align=center><?=$officer[4]['name']?></td>
<td align=center class=bg1>군사</td> <td align=center class=bg1>군사</td>
@@ -430,11 +482,12 @@ foreach($generalsFormat as $general){
</tr> </tr>
<tr> <tr>
<td align=center class=bg1>장수</td> <td align=center class=bg1>장수</td>
<td colspan=11><?=join(', ', $generalsName)?></td> <td colspan=11><?=$showDetailedInfo?join(', ', $generalsName):'<span style="color:gray">알 수 없음</span>'?></td>
</tr> </tr>
</table> </table>
<br> <br>
<?php if($showDetailedInfo): ?>
<table align=center class='tb_layout bg0'> <table align=center class='tb_layout bg0'>
<thead> <thead>
<tr> <tr>
@@ -459,7 +512,7 @@ foreach($generalsFormat as $general){
?> ?>
</tbody> </tbody>
</table> </table>
<?php endif; ?>
<table align=center width=1000 class='tb_layout bg0'> <table align=center width=1000 class='tb_layout bg0'>
<tr><td><?=backButton()?></td></tr> <tr><td><?=backButton()?></td></tr>
<tr><td><?=banner()?> </td></tr> <tr><td><?=banner()?> </td></tr>
+6 -1
View File
@@ -14,7 +14,7 @@ $generalID = $session->generalID;
$db = DB::db(); $db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env'); $gameStor = KVStorage::getStorage($db, 'game_env');
$gameStor->cacheValues(['turntime', 'opentime', 'autorun_user']); $gameStor->cacheValues(['turntime', 'opentime', 'autorun_user', 'npcmode']);
increaseRefresh("내정보", 1); increaseRefresh("내정보", 1);
@@ -113,6 +113,11 @@ var availableDieImmediately = <?=$availableDieImmediately?'true':'false'?>;
<a href="c_die_immediately.php" id='die_immediately'><button type="button" style=background-color:<?=GameConst::$basecolor2?>;color:white;width:160px;height:30px;font-size:13px;>장수 삭제</button></a><br><br> <a href="c_die_immediately.php" id='die_immediately'><button type="button" style=background-color:<?=GameConst::$basecolor2?>;color:white;width:160px;height:30px;font-size:13px;>장수 삭제</button></a><br><br>
<?php endif; ?> <?php endif; ?>
<?php if($gameStor->npcmode==2 && $me->getNPCType()==0): ?>
다른 장수 선택 (<?=substr($me->getAuxVar('next_change')??TimeUtil::now(), 0, 19)?> 부터)<br>
<a href="select_general_from_pool.php" id='select_general_from_pool'><button type="button" style=background-color:<?=GameConst::$basecolor2?>;color:white;width:160px;height:30px;font-size:13px;>다른 장수 선택</button></a><br><br>
<?php endif; ?>
개인용 CSS<br> 개인용 CSS<br>
<textarea id='custom_css' style='color:white;background-color:black;width:420px;height:150px;'></textarea> <textarea id='custom_css' style='color:white;background-color:black;width:420px;height:150px;'></textarea>
</td> </td>
+155 -135
View File
@@ -1,40 +1,56 @@
@charset "UTF-8"; @charset "UTF-8";
/* font-boostring Block */ /* font-boostring Block */
html * {max-height:1000000px;}
html * {
html, body{ max-height: 1000000px;
background-color:black;
color:white;
line-height:1.3;
font-family:'맑은 고딕';
font-size:13px;
} }
table { font-family:'맑은 고딕'; } html,
font { font-family:'맑은 고딕'; } body {
input { font-family:'맑은 고딕'; font-size:13px; } background-color: black;
select { font-family:'굴림'; line-height:100%; } color: white;
line-height: 1.3;
.center{ font-family: '맑은 고딕';
text-align:center; font-size: 13px;
} }
table.mimic_flex{ table {
font-family: '맑은 고딕';
}
font {
font-family: '맑은 고딕';
}
input {
font-family: '맑은 고딕';
font-size: 13px;
}
select {
font-family: '굴림';
line-height: 100%;
}
.center {
text-align: center;
}
table.mimic_flex {
border-collapse: collapse; border-collapse: collapse;
border:none; border: none;
padding:0; padding: 0;
} }
.mimic_flex td, .mimic_flex th { .mimic_flex td,
border:none !important; .mimic_flex th {
border: none !important;
padding: 0px; padding: 0px;
word-break: break-all; word-break: break-all;
} }
table.tb_layout {
table.tb_layout {
border-collapse: collapse; border-collapse: collapse;
padding: 0px; padding: 0px;
font-size: 13px; font-size: 13px;
@@ -42,159 +58,161 @@ table.tb_layout {
font-family: '맑은 고딕'; font-family: '맑은 고딕';
} }
.tb_layout td, .tb_layout th { .tb_layout td,
border:solid 1px gray; .tb_layout th {
border: solid 1px gray;
padding: 0px; padding: 0px;
word-break: break-all; word-break: break-all;
font-family: '맑은 고딕';; font-family: '맑은 고딕';
;
} }
div.bar_out{ div.bar_out {
position:relative; position: relative;
border-top:solid 1px #888888; border-top: solid 1px #888888;
border-bottom:solid 1px #333333; border-bottom: solid 1px #333333;
padding:0; padding: 0;
margin:0; margin: 0;
width:100%; width: 100%;
overflow: hidden; overflow: hidden;
} }
div.bar_out div{ div.bar_out div {
position:absolute; position: absolute;
left:0; left: 0;
top:0; top: 0;
height:100%; height: 100%;
} }
div.bar_out div.bar_in{ div.bar_out div.bar_in {
width:100%; width: 100%;
} }
/* */ /* */
.ev_warning{ .ev_warning {
color:orangered; color: orangered;
} }
.ev_notice{ .ev_notice {
color:orangered; color: orangered;
} }
.ev_succes{ .ev_succes {
color:lightgreen; color: lightgreen;
} }
.ev_sell{ .ev_sell {
color:orange; color: orange;
} }
.ev_failed{ .ev_failed {
color:orangered; color: orangered;
} }
.ev_highlight{ .ev_highlight {
color:orangered; color: orangered;
} }
/* TODO: 색상값이 아니라 의미에 따라 클래스 지정 */ /* TODO: 색상값이 아니라 의미에 따라 클래스 지정 */
.o_bullet::before{ .o_bullet::before {
color:cyan; color: cyan;
content:"●"; content: "●";
} }
.o_diamond::before{ .o_diamond::before {
color:orangered; color: orangered;
content:"◆"; content: "◆";
} }
.small_war_log{ .small_war_log {
display:inline-block; display: inline-block;
} }
.small_war_log .war_type_attack{ .small_war_log .war_type_attack {
color:cyan; color: cyan;
} }
.small_war_log .war_type_defense{ .small_war_log .war_type_defense {
color:magenta; color: magenta;
} }
.small_war_log .war_type_siege{ .small_war_log .war_type_siege {
color:white; color: white;
} }
.small_war_log .name_plate {
.small_war_log .name_plate{
font-size: 0.75em; font-size: 0.75em;
} }
.small_war_log .name_plate_cover{ .small_war_log .name_plate_cover {
color:yellow; color: yellow;
} }
.small_war_log .crew_plate{ .small_war_log .crew_plate {
color:orangered; color: orangered;
font-size:90%; font-size: 90%;
} }
.t_date{ .t_date {
font-size: 0.75em; font-size: 0.75em;
} }
.t_red{ .t_red {
color:red; color: red;
} }
.t_blue{ .t_blue {
color:blue; color: blue;
} }
.t_green{ .t_green {
color:green; color: green;
} }
.t_magenta{ .t_magenta {
color:magenta; color: magenta;
} }
.t_cyan{ .t_cyan {
color:cyan; color: cyan;
} }
.t_limegreen{ .t_limegreen {
color:limegreen; color: limegreen;
} }
.t_skyblue{ .t_skyblue {
color:skyblue; color: skyblue;
} }
.t_orangered{ .t_orangered {
color:orangered; color: orangered;
} }
.t_yellow{ .t_yellow {
color:yellow; color: yellow;
} }
.t_white{ .t_white {
color:white; color: white;
} }
.float_left{ .float_left {
float:left; float: left;
} }
.tooltip{ .tooltip {
font-size:12px; font-size: 12px;
font-family: '맑은 고딕'; font-family: '맑은 고딕';
} }
.tooltip_copyable_info .tooltiptext{ .tooltip_copyable_info .tooltiptext {
display: inline; display: inline;
color: rgba(0,0,0,0); color: rgba(0, 0, 0, 0);
font-size: 0; font-size: 0;
} }
@@ -202,67 +220,69 @@ div.bar_out div.bar_in{
display: none; display: none;
} }
.hidden_but_copyable{ .hidden_but_copyable {
color: rgba(0,0,0,0); color: rgba(0, 0, 0, 0);
font-size: 0; font-size: 0;
} }
.btn-group-xs > .btn, .btn-xs { .btn-group-xs>.btn,
padding : .25rem .4rem; .btn-xs {
font-size : .875rem; padding: .25rem .4rem;
line-height : .5; font-size: .875rem;
border-radius : .2rem; line-height: .5;
border-radius: .2rem;
} }
.edit_form.viewer{ .edit_form.viewer {
max-height:200px; max-height: 200px;
overflow-y:auto; overflow-y: auto;
} }
.trumbowyg-box{ .trumbowyg-box {
margin:0; margin: 0;
border-left:none; border-left: none;
border-right:none; border-right: none;
} }
.edit_form.trumbowyg-editor{ .edit_form.trumbowyg-editor {
margin:0; margin: 0;
padding:0; padding: 0;
} }
.commandBasic{ .commandBasic {
background-color:black; background-color: black;
color:white; color: white;
} }
.compensatePositive{ .compensatePositive {
color:skyblue; color: skyblue;
} }
.compensateNegative{ .compensateNegative {
color:orange; color: orange;
} }
.compensateNeutral{ .compensateNeutral {
color:white; color: white;
} }
.commandBasic.commandImpossible{ .commandBasic.commandImpossible {
background-color:red; background-color: red;
color:white; color: white;
} }
.select2-selection--single.simple-select2-align-center .select2-selection__rendered { .select2-selection--single.simple-select2-align-center .select2-selection__rendered {
text-align: center; text-align: center;
} }
.select2-dropdown.simple-select2-align-center li.select2-results__option{ .select2-dropdown.simple-select2-align-center li.select2-results__option {
text-align: center; text-align: center;
} }
.select2-container--bootstrap4 .select2-selection--single.text-secondary .select2-selection__rendered{ .select2-container--bootstrap4 .select2-selection--single.text-secondary .select2-selection__rendered {
color:white; color: white;
} }
.select2-container--bootstrap4 .text-secondary .select2-results__option[aria-selected=false]{ .select2-container--bootstrap4 .text-secondary .select2-results__option[aria-selected=false] {
color:white; color: white;
} }
+64
View File
@@ -0,0 +1,64 @@
@charset "UTF-8";
.container {
width: 1000px;
margin: 0 auto;
}
.card_holder {
text-align: center;
}
.general_card {
width: 125px;
display: inline-block;
}
.general_card h4 {
margin: 0;
}
.general_card p {
margin: 0;
}
.general_card .select_btn {
width: 100%;
}
.general_card label {
display: block;
padding-left: 15px;
text-indent: -15px;
}
.general_card input {
width: 13px;
height: 13px;
padding: 0;
margin: 0;
vertical-align: bottom;
position: relative;
top: -1px;
*overflow: hidden;
}
#outdate_token {
color: red;
display: none;
}
#left_pad button {
display: none;
}
.custom_picture {
display: none;
}
.custom_personality {
display: none;
}
.custom_stat {
display: none;
}
+24
View File
@@ -378,6 +378,30 @@ function buildWarUnitTriggerClass(?string $type, WarUnit $unit, ?array $args = n
return $class->newInstanceArgs(array_merge([$unit], $args)); return $class->newInstanceArgs(array_merge([$unit], $args));
} }
function getGeneralPoolClass(string $type){
static $basePath = __NAMESPACE__.'\\GeneralPool\\';
$classPath = ($basePath.$type);
if(class_exists($classPath)){
return $classPath;
}
throw new \InvalidArgumentException("{$type}은 GeneralPool이 아님");
}
/**
* @param \MeekroDB $db
* @param int $owner
* @param int $pickCnt
* @param null|string $prefix
* @return AbsGeneralPool[]
*/
function pickGeneralFromPool(\MeekroDB $db, int $owner, int $pickCnt, ?string $prefix=null):array{
/** @var AbsGeneralPool */
$class = getGeneralPoolClass(GameConst::$targetGeneralPool);
return $class::pickGeneralFromPool($db, $owner, $pickCnt, $prefix);
}
function countPureGeneralFromRawList(?array $rawGeneralList=null):int{ function countPureGeneralFromRawList(?array $rawGeneralList=null):int{
if(!$rawGeneralList){ if(!$rawGeneralList){
return 0; return 0;
+9 -18
View File
@@ -680,31 +680,22 @@ function updateNationState()
while ($assemblerCnt < $maxAssemblerCnt) { while ($assemblerCnt < $maxAssemblerCnt) {
$lastAssemblerID += 1; $lastAssemblerID += 1;
$npcObj = new Scenario\NPC( $npcObj = new Scenario\GeneralBuilder(
999,
sprintf('부대장%4d', $lastAssemblerID), sprintf('부대장%4d', $lastAssemblerID),
0,
null, null,
$nation['nation'], $nation['nation']
null,
10,
10,
10,
1,
$admin['year'] - 15,
$admin['year'] + 15,
'은둔',
'척사'
); );
$npcObj->killturn = 70; $npcObj->setAffinity(999)->setStat(10, 10, 10)
$npcObj->gold = 0; ->setSpecialSingle('척사')->setEgo('che_은둔')
$npcObj->rice = 0; ->setKillturn(70)->setGoldRice(0, 0)
$npcObj->npc = 5; ->setNPCType(5)->fillRemainSpecAsZero($admin);
$npcObj->build($admin); $npcObj->build($admin);
$npcID = $npcObj->generalID; $npcID = $npcObj->getGeneralID();
$db->insert('troop', [ $db->insert('troop', [
'troop_leader' => $npcID, 'troop_leader' => $npcID,
'name' => $npcObj->realName, 'name' => $npcObj->getGeneralName(),
'nation' => $nation['nation'], 'nation' => $nation['nation'],
]); ]);
$db->update('general', [ $db->update('general', [
+6 -4
View File
@@ -79,9 +79,11 @@ if ($gameStor->fiction == 0) {
} }
if ($gameStor->npcmode == 0) { if ($gameStor->npcmode == 0) {
$npcmode = "불가능"; $npcmode = "불가능";
} else { } else if($gameStor->npcmode == 1){
$npcmode = "가능"; $npcmode = "가능";
$valid = 1; $valid = 1;
} else {
$npcmode = "선택 생성";
} }
$color = "cyan"; $color = "cyan";
$mapTheme = $gameStor->map_theme; $mapTheme = $gameStor->map_theme;
@@ -134,7 +136,7 @@ $(function(){
<body class="img_back"> <body class="img_back">
<div id="container"> <div id="container">
<div><?=allButton($gameStor->npcmode!=0)?></div> <div><?=allButton($gameStor->npcmode==1)?></div>
<table class="tb_layout bg0" style="width:1000px;"> <table class="tb_layout bg0" style="width:1000px;">
<tr height=50> <tr height=50>
<td colspan=5 id="server_title" align=center><font size=4>삼국지 모의전투 HiDCHe <?=$serverName.$serverCnt?>기 (<font color=cyan><?=$scenario?></font>)</font></td> <td colspan=5 id="server_title" align=center><font size=4>삼국지 모의전투 HiDCHe <?=$serverName.$serverCnt?>기 (<font color=cyan><?=$scenario?></font>)</font></td>
@@ -341,7 +343,7 @@ else if($session->userGrade == 4){
<button id="msg_submit">서신전달&amp;갱신</button><br> <button id="msg_submit">서신전달&amp;갱신</button><br>
내용 없이 '서신전달&amp;갱신'을 누르면 메세지창이 갱신됩니다. 내용 없이 '서신전달&amp;갱신'을 누르면 메세지창이 갱신됩니다.
</div> </div>
<div><?=allButton($gameStor->npcmode!=0)?></div> <div><?=allButton($gameStor->npcmode==1)?></div>
<div id="message_board"><div style="left:0;" class="board_side bg0"> <div id="message_board"><div style="left:0;" class="board_side bg0">
<div class="board_header bg0" id='public_talk_position'>전체 메시지(최고99자)</div> <div class="board_header bg0" id='public_talk_position'>전체 메시지(최고99자)</div>
<section class="public_message"> <section class="public_message">
@@ -361,7 +363,7 @@ else if($session->userGrade == 4){
<button type="button" class="load_old_message btn btn-secondary btn-block" data-msg_type="diplomacy">이전 메시지 불러오기</button> <button type="button" class="load_old_message btn btn-secondary btn-block" data-msg_type="diplomacy">이전 메시지 불러오기</button>
</section> </section>
</div></div> </div></div>
<div style="clear:left;"><?=allButton($gameStor->npcmode!=0)?><?=banner()?></div> <div style="clear:left;"><?=allButton($gameStor->npcmode==1)?><?=banner()?></div>
</div> </div>
<?php <?php
if ($con == 1) { if ($con == 1) {
+18 -1
View File
@@ -102,7 +102,7 @@ if($session->userGrade < 5 && !$allowReset){
</div> </div>
<div class="form-group row"> <div class="form-group row">
<label for="confirm_password" class="col-sm-3 col-form-label">시나리오 선택</label> <label for="scenario_sel" class="col-sm-3 col-form-label">시나리오 선택</label>
<div class="col-sm-9"> <div class="col-sm-9">
<select class="form-control" name="scenario" size="1" id="scenario_sel"> <select class="form-control" name="scenario" size="1" id="scenario_sel">
</select> </select>
@@ -138,6 +138,20 @@ if($session->userGrade < 5 && !$allowReset){
</div> </div>
</div> </div>
<div class="form-group row">
<label for="block_general_create" class="col-sm-3 col-form-label">장수 임의 생성</label>
<div class="col-sm-9">
<div id="block_general_create" class="btn-group btn-group-toggle" data-toggle="buttons">
<label class="btn btn-secondary">
<input type="radio" name="block_general_create" value="0" checked>가능
</label>
<label class="btn btn-secondary active">
<input type="radio" name="block_general_create" value="1">불가
</label>
</div>
</div>
</div>
<div class="form-group row"> <div class="form-group row">
<label for="npcmode" class="col-sm-3 col-form-label">NPC 빙의</label> <label for="npcmode" class="col-sm-3 col-form-label">NPC 빙의</label>
<div class="col-sm-9"> <div class="col-sm-9">
@@ -148,6 +162,9 @@ if($session->userGrade < 5 && !$allowReset){
<label class="btn btn-secondary active"> <label class="btn btn-secondary active">
<input type="radio" name="npcmode" value="0" checked>불가 <input type="radio" name="npcmode" value="0" checked>불가
</label> </label>
<label class="btn btn-secondary">
<input type="radio" name="npcmode" value="2">선택 생성 가능
</label>
</div> </div>
</div> </div>
</div> </div>
+1
View File
@@ -85,6 +85,7 @@ $result = ResetHelper::buildScenario(
$options['scenario'], $options['scenario'],
$options['fiction'], $options['fiction'],
$options['extend'], $options['extend'],
$options['block_general_create'],
$options['npcmode'], $options['npcmode'],
$options['show_img_level'], $options['show_img_level'],
$options['tournament_trig'], $options['tournament_trig'],
+1 -1
View File
@@ -37,7 +37,7 @@ list(
$npcmode $npcmode
) = $gameStor->getValuesAsArray(['maxgeneral', 'turnterm', 'npcmode']); ) = $gameStor->getValuesAsArray(['maxgeneral', 'turnterm', 'npcmode']);
if(!$npcmode){ if($npcmode!=1){
Json::die([ Json::die([
'result'=>false, 'result'=>false,
'reason'=>'빙의 가능한 서버가 아닙니다' 'reason'=>'빙의 가능한 서버가 아닙니다'
+90
View File
@@ -0,0 +1,90 @@
<?php
namespace sammo;
include "lib.php";
include "func.php";
function sortTokens(&$tokens){
usort($tokens, function($lhs, $rhs){
return array_sum($lhs['dex'])<=>array_sum($rhs['dex']);
});
}
function putInfoText(&$info){
if(key_exists('specialDomestic', $info)){
$class = buildGeneralSpecialDomesticClass($info['specialDomestic']);
$info['specialDomesticName'] = $class->getName();
$info['specialDomesticInfo'] = $class->getInfo();
}
if(key_exists('specialWar', $info)){
$class = buildGeneralSpecialDomesticClass($info['specialWar']);
$info['specialWarName'] = $class->getName();
$info['specialWarInfo'] = $class->getInfo();
}
}
$session = Session::requireLogin([])->setReadOnly();
$userID = Session::getUserID();
$oNow = new \DateTimeImmutable();
$now = $oNow->format('Y-m-d H:i:s');
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$npcmode = $gameStor->getValue('npcmode');
if($npcmode!=2){
Json::die([
'result'=>false,
'reason'=>'선택 가능한 서버가 아닙니다'
]);
}
$rawGeneral = $db->queryFirstRow('SELECT no, aux FROM general WHERE `owner` = %i', $userID);
if($rawGeneral){
$generalAux = Json::decode($rawGeneral['aux']);
if(key_exists('next_change', $generalAux)&& $generalAux['next_change'] > $now){
Json::die([
'result'=>false,
'reason'=>'아직 다시 고를 수 없습니다'
]);
}
}
$tokens = $db->query('SELECT unique_name, reserved_until, info FROM `select_pool` WHERE `owner`=%i AND `reserved_until`>=%s', $userID, $now);
if($tokens){
$pick = [];
$valid_until = null;
$specialInfo = [];
foreach($tokens as $token){
$valid_until = $token['reserved_until'];
$info = Json::decode($token['info']);
putInfoText($info);
$info['uniqueName'] = $token['unique_name'];
$pick[] = $info;
}
sortTokens($pick);//좀 무식하지만..
Json::die([
'result'=>true,
'pick'=>$pick,
'validUntil'=>$valid_until
]);
}
$pick = [];
$valid_until = null;
foreach(pickGeneralFromPool($db, $userID, 14) as $pickObj){
$valid_until = $pickObj->getValidUntil();
$info = $pickObj->getInfo();
putInfoText($info);
$pick[] = $info;
}
sortTokens($pick);//좀 무식하지만..
Json::die([
'result'=>true,
'pick'=>$pick,
'validUntil'=>$valid_until
]);
+6
View File
@@ -57,6 +57,7 @@ $v->rule('required', [
'scenario', 'scenario',
'fiction', 'fiction',
'extend', 'extend',
'block_general_create',
'join_mode', 'join_mode',
'npcmode', 'npcmode',
'show_img_level', 'show_img_level',
@@ -67,6 +68,7 @@ $v->rule('required', [
'scenario', 'scenario',
'fiction', 'fiction',
'extend', 'extend',
'block_general_create',
'npcmode', 'npcmode',
'show_img_level', 'show_img_level',
'tournament_trig', 'tournament_trig',
@@ -109,11 +111,13 @@ $scenario = (int)$_POST['scenario'];
$fiction = (int)$_POST['fiction']; $fiction = (int)$_POST['fiction'];
$extend = (int)$_POST['extend']; $extend = (int)$_POST['extend'];
$npcmode = (int)$_POST['npcmode']; $npcmode = (int)$_POST['npcmode'];
$block_general_create = (bool)$_POST['block_general_create'];
$show_img_level = (int)$_POST['show_img_level']; $show_img_level = (int)$_POST['show_img_level'];
$tournament_trig = (int)$_POST['tournament_trig']; $tournament_trig = (int)$_POST['tournament_trig'];
$join_mode = $_POST['join_mode']; $join_mode = $_POST['join_mode'];
$autorun_user_minutes = (int)$_POST['autorun_user_minutes']; $autorun_user_minutes = (int)$_POST['autorun_user_minutes'];
$autorun_user_options = []; $autorun_user_options = [];
foreach(Util::getPost('autorun_user', 'array_string', []) as $autorun_option){ foreach(Util::getPost('autorun_user', 'array_string', []) as $autorun_option){
$autorun_user_options[$autorun_option] = 1; $autorun_user_options[$autorun_option] = 1;
} }
@@ -165,6 +169,7 @@ if($reserve_open){
'scenarioName'=>$scenarioObj->getTitle(), 'scenarioName'=>$scenarioObj->getTitle(),
'fiction'=>$fiction, 'fiction'=>$fiction,
'extend'=>$extend, 'extend'=>$extend,
'block_general_create'=>$block_general_create,
'npcmode'=>$npcmode, 'npcmode'=>$npcmode,
'show_img_level'=>$show_img_level, 'show_img_level'=>$show_img_level,
'tournament_trig'=>$tournament_trig, 'tournament_trig'=>$tournament_trig,
@@ -200,6 +205,7 @@ Json::die(ResetHelper::buildScenario(
$scenario, $scenario,
$fiction, $fiction,
$extend, $extend,
$block_general_create,
$npcmode, $npcmode,
$show_img_level, $show_img_level,
$tournament_trig, $tournament_trig,
+1 -1
View File
@@ -59,7 +59,7 @@ list(
$npcmode $npcmode
) = $gameStor->getValuesAsArray(['year', 'month', 'maxgeneral', 'npcmode']); ) = $gameStor->getValuesAsArray(['year', 'month', 'maxgeneral', 'npcmode']);
if(!$npcmode){ if($npcmode!=1){
Json::die([ Json::die([
'result'=>false, 'result'=>false,
'reason'=>'빙의 가능한 서버가 아닙니다' 'reason'=>'빙의 가능한 서버가 아닙니다'
+167
View File
@@ -0,0 +1,167 @@
<?php
namespace sammo;
include "lib.php";
include "func.php";
WebUtil::requireAJAX();
$pick = Util::getPost('pick');
$leadership = Util::getPost('leadership', 'int', GameConst::$defaultStatMin);
$strength = Util::getPost('leadership', 'int', GameConst::$defaultStatMin);
$intel = Util::getPost('leadership', 'int', GameConst::$defaultStatMin);
$personal = Util::getPost('personal', 'string', null);
$use_own_picture = Util::getPost('use_own_picture', 'bool', false);
if(!$pick){
Json::die([
'result'=>false,
'reason'=>'장수를 선택하지 않았습니다'
]);
}
$session = Session::requireLogin([])->setReadOnly();
$userID = Session::getUserID();
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$rootDB = RootDB::db();
$oNow = new \DateTimeImmutable();
$now = $oNow->format('Y-m-d H:i:s');
$hasGeneralID = $db->queryFirstField('SELECT no FROM general WHERE owner = %i', $userID);
if($hasGeneralID){
Json::die([
'result'=>false,
'reason'=>'이미 장수를 생성했습니다.'
]);
}
$env = $gameStor->getValues(['startyear', 'year', 'month', 'maxgeneral', 'npcmode', 'show_img_level', 'icon_path', 'turnterm', 'turntime']);
$env['fiction'] = false;
$npcmode = $env['npcmode'];
$maxgeneral = $env['maxgeneral'];
if($npcmode!=2){
Json::die([
'result'=>false,
'reason'=>'선택 가능한 서버가 아닙니다'
]);
}
$selectInfo = $db->queryFirstField('SELECT info FROM select_pool WHERE `owner` = %i AND `reserved_until`>=%s AND `unique_name`=%s', $userID, $now, $pick);
if(!$selectInfo){
Json::die([
'result'=>false,
'reason'=>'유효한 장수 목록이 없습니다.'
]);
}
$selectInfo = Json::decode($selectInfo);
$ownerInfo = RootDB::db()->queryFirstRow('SELECT `name`,`picture`,`imgsvr` FROM member WHERE `NO`=%i',$userID);
if(!$ownerInfo){
Json::die([
'result'=>false,
'reason'=>'멤버 정보를 가져오지 못했습니다.'
]);
}
$gencount = $db->queryFirstField('SELECT count(`no`) FROM general WHERE npc<2');
if ($gencount >= $maxgeneral) {
Json::die([
'result'=>false,
'reason'=>'더 이상 등록 할 수 없습니다.'
]);
}
$poolClass = getGeneralPoolClass(GameConst::$targetGeneralPool);
/** @var AbsGeneralPool */
$pickedGeneral = new $poolClass($db, $selectInfo, $now);
$builder = $pickedGeneral->getGeneralBuilder();
foreach(GameConst::$generalPoolAllowOption as $allowOption){
if($allowOption == 'stat'){
$leadership = Util::valueFit($leadership, GameConst::$defaultStatMin, GameConst::$defaultStatMax);
$strength = Util::valueFit($strength, GameConst::$defaultStatMin, GameConst::$defaultStatMax);
$intel = Util::valueFit($intel, GameConst::$defaultStatMin, GameConst::$defaultStatMax);
if($leadership + $strength + $intel > GameConst::$defaultStatTotal){
Json::die([
'result'=>false,
'reason'=>'스탯의 총 합이 올바르지 않습니다.'
]);
}
$builder->setStat($leadership, $strength, $intel);
}
else if($allowOption == 'picture' && $use_own_picture){
$builder->setPicture($ownerInfo['imgsvr'], $ownerInfo['picture']);
}
else if($allowOption == 'ego'){
if(!$personal || $personal == 'Random'){
$personal = Util::choiceRandom(GameConst::$availablePersonality);
}
if(!array_search($personal, GameConst::$availablePersonality)){
Json::die([
'result'=>false,
'reason'=>'올바르지 않은 성격입니다.'
]);
}
$builder->setEgo($personal);
}
}
$builder->setOwner($userID);
$builder->setKillturn(5);
$builder->setNPCType(0);
$builder->setAuxVar('next_change', TimeUtil::nowAddMinutes(12 * $env['turnterm']));
$builder->fillRemainSpecAsZero($env);
$builder->build($env);
$generalID = $builder->getGeneralID();
if(!$generalID){
Json::die([
'result'=>false,
'reason'=>'장수 등록에 실패했습니다.'
]);
}
$pickedGeneral->occupyGeneralName();
$db->update('select_pool',[
'owner'=>null,
'reserved_until'=>null,
], '(owner=%i or reserved_until < %s) AND general_id is NULL', $userID, $now);
$userNick = $ownerInfo['name'];
$josaYi = JosaUtil::pick($userNick, '이');
$generalName = $builder->getGeneralName();
$josaRo = JosaUtil::pick($generalName, '로');
$cityName = CityConst::byID($builder->getCityID())->name;
$logger = new ActionLogger($generalID, 0, $env['year'], $env['month']);
$logger->pushGeneralHistoryLog("<Y>{$generalName}</>, <G>{$cityName}</>에서 등장");
$logger->pushGlobalActionLog("<G><b>{$cityName}</b></>에서 <Y>{$userNick}</>{$josaYi} <Y>{$generalName}</>{$josaRo} 등장합니다.");
$logger->flush();
pushAdminLog(["가입 : {$userID} // {$session->userName} // {$pick} // ".getenv("REMOTE_ADDR")]);
$rootDB->insert('member_log', [
'member_no' => $userID,
'date'=>TimeUtil::now(),
'action_type'=>'make_general',
'action'=>Json::encode([
'server'=>DB::prefix(),
'type'=>'select',
'generalID'=>$generalID,
'generalName'=>$generalName
])
]);
Json::die([
'result'=>true,
'reason'=>'success'
]);
+6 -5
View File
@@ -43,7 +43,7 @@ $session = Session::requireLogin([
'game'=>null, 'game'=>null,
'me'=>null 'me'=>null
])->setReadOnly(); ])->setReadOnly();
$userID = Session::getUserID(); $userID = $session->userID;
if(!class_exists('\\sammo\\DB')){ if(!class_exists('\\sammo\\DB')){
Json::die([ Json::die([
@@ -91,7 +91,8 @@ if(file_exists(__DIR__.'/.htaccess')){
'scenarioName'=>$options['scenarioName'], 'scenarioName'=>$options['scenarioName'],
'turnterm'=>$options['turnterm'], 'turnterm'=>$options['turnterm'],
'fictionMode'=>($options['fiction']?'가상':'사실'), 'fictionMode'=>($options['fiction']?'가상':'사실'),
'npcMode'=>($options['npcmode']?'가능':'불가'), 'block_general_create'=>(!!$options['block_general_create']),
'npcMode'=>([0=>'불가',1=>'가능',2=>'선택 생성'][$options['npcmode']]),
'openDatetime'=>$reserved['date'], 'openDatetime'=>$reserved['date'],
'starttime'=>$options['starttime'], 'starttime'=>$options['starttime'],
'gameConf'=>$options['gameConf'], 'gameConf'=>$options['gameConf'],
@@ -104,7 +105,7 @@ if(file_exists(__DIR__.'/.htaccess')){
//TODO: 천통시에도 예약 오픈 알림이 필요..? //TODO: 천통시에도 예약 오픈 알림이 필요..?
$admin = $gameStor->getValues(['isunited', 'npcmode', 'year', 'month', 'scenario', 'scenario_text', 'maxgeneral', 'turnterm', 'opentime', 'turntime', 'join_mode', 'fiction', 'autorun_user']); $admin = $gameStor->getValues(['isunited', 'npcmode', 'year', 'month', 'scenario', 'scenario_text', 'maxgeneral', 'turnterm', 'opentime', 'turntime', 'join_mode', 'fiction', 'block_general_create', 'autorun_user']);
$admin['maxUserCnt'] = $admin['maxgeneral']; $admin['maxUserCnt'] = $admin['maxgeneral'];
$admin['npcMode'] = $admin['npcmode']; $admin['npcMode'] = $admin['npcmode'];
$admin['turnTerm'] = $admin['turnterm']; $admin['turnTerm'] = $admin['turnterm'];
@@ -124,8 +125,8 @@ $admin['scenario'] = $admin['scenario_text'];
$admin['userCnt'] = $genCnt; $admin['userCnt'] = $genCnt;
$admin['npcCnt'] = $npcCnt; $admin['npcCnt'] = $npcCnt;
$admin['nationCnt'] = $nationCnt; $admin['nationCnt'] = $nationCnt;
$admin['block_general_create'] = !!$admin['block_general_create'];
$admin['npcMode'] = $admin['npcMode']?'가능':'불가'; $admin['npcMode'] = [0=>'불가',1=>'가능',2=>'선택 생성'][$admin['npcMode']];
$admin['fictionMode'] = $admin['fiction']?'가상':'사실'; $admin['fictionMode'] = $admin['fiction']?'가상':'사실';
$otherTextInfo = []; $otherTextInfo = [];
+2 -2
View File
@@ -43,8 +43,8 @@ if($defence_train != $me->getVar('defence_train')){
if($defence_train == 999){ if($defence_train == 999){
$me->increaseVar('myset', -1); $me->increaseVar('myset', -1);
$me->setVar('defence_train', $defence_train); $me->setVar('defence_train', $defence_train);
$me->increaseVar('train', -3); $me->increaseVarWithLimit('train', -3, 20);
$me->increaseVar('atmos', -3); $me->increaseVarWithLimit('atmos', -3, 20);
} }
else{ else{
$me->increaseVar('myset', -1); $me->increaseVar('myset', -1);
+150
View File
@@ -0,0 +1,150 @@
<?php
namespace sammo;
include "lib.php";
include "func.php";
WebUtil::requireAJAX();
$pick = Util::getPost('pick');
if(!$pick){
Json::die([
'result'=>false,
'reason'=>'장수를 선택하지 않았습니다'
]);
}
$session = Session::requireLogin([])->setReadOnly();
$userID = Session::getUserID();
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$rootDB = RootDB::db();
$oNow = new \DateTimeImmutable();
$now = $oNow->format('Y-m-d H:i:s');
$generalID = $db->queryFirstField('SELECT no FROM general WHERE owner = %i', $userID);
if(!$generalID){
Json::die([
'result'=>false,
'reason'=>'장수가 생성하지 않았습니다. 이미 사망하지 않았는지 확인해보세요.'
]);
}
list(
$year,
$month,
$maxgeneral,
$npcmode,
$turnterm
) = $gameStor->getValuesAsArray(['year', 'month', 'maxgeneral', 'npcmode', 'turnterm']);
if($npcmode!=2){
Json::die([
'result'=>false,
'reason'=>'선택 가능한 서버가 아닙니다'
]);
}
$info = $db->queryFirstField('SELECT info FROM select_pool WHERE `owner` = %i AND `reserved_until`>=%s AND `unique_name`=%s', $userID, $now, $pick);
if(!$info){
Json::die([
'result'=>false,
'reason'=>'유효한 장수 목록이 없습니다.'
]);
}
$ownerInfo = RootDB::db()->queryFirstRow('SELECT `name`,`picture`,`imgsvr` FROM member WHERE `NO`=%i',$userID);
if(!$ownerInfo){
Json::die([
'result'=>false,
'reason'=>'멤버 정보를 가져오지 못했습니다.'
]);
}
$info = Json::decode($info);
$generalObj = General::createGeneralObjFromDB($generalID);
$oldGeneralName = $generalObj->getName();
$db->update('select_pool', [
'general_id'=>-$generalID,
'owner'=>null,
'reserved_until'=>null
], 'unique_name=%s AND `reserved_until` IS NOT NULL AND owner = %i', $info['uniqueName'], $userID);
if($db->affectedRows()==0){
Json::die([
'result'=>false,
'reason'=>'동시성 제어에 문제가 발생했습니다. 버그 제보를 부탁드립니다.'
]);
}
$db->update('select_pool', [
'general_id'=>null,
'owner'=>null,
'reserved_until'=>null,
], 'unique_name != %s AND general_id = %i', $info['uniqueName'], $generalID);
$db->update('select_pool', [
'general_id'=>$generalID,
], 'general_id=%i', -$generalID);
if($db->affectedRows()==0){
Json::die([
'result'=>false,
'reason'=>'장수 선택 과정에 문제가 발생했습니다.. 버그 제보를 부탁드립니다.'
]);
}
$db->update('select_pool',[
'owner'=>null,
'reserved_until'=>null,
], '(owner=%i or reserved_until < %s) AND general_id is NULL', $userID, $now);
if(key_exists('leadership', $info)){
$generalObj->updateVar('leadership', $info['leadership']);
$generalObj->updateVar('strength', $info['strength']);
$generalObj->updateVar('intel', $info['intel']);
}
if(key_exists('picture', $info)){
$generalObj->updateVar('imgsvr', $info['imgsvr']);
$generalObj->updateVar('picture', $info['picture']);
}
if(key_exists('generalName', $info)){
$generalObj->updateVar('name', $info['generalName']);
}
if(key_exists('dex', $info)){
$generalObj->updateVar('dex1', $info['dex'][0]);
$generalObj->updateVar('dex2', $info['dex'][1]);
$generalObj->updateVar('dex3', $info['dex'][2]);
$generalObj->updateVar('dex4', $info['dex'][3]);
$generalObj->updateVar('dex5', $info['dex'][4]);
}
if(key_exists('ego', $info)){
$generalObj->updateVar('personal', $info['ego']);
}
if(key_exists('specialDomestic', $info)){
$generalObj->updateVar('special', $info['specialDomestic']);
}
if(key_exists('specialWar', $info)){
$generalObj->updateVar('special2', $info['specialWar']);
}
$generalObj->setAuxVar('next_change', TimeUtil::nowAddMinutes(12 * $turnterm));
$userNick = $ownerInfo['name'];
$josaYi = JosaUtil::pick($userNick, '이');
$generalName = $info['generalName'];
$josaRo = JosaUtil::pick($generalName, '로');
$logger = $generalObj->getLogger();
$logger->pushGeneralHistoryLog("장수를 <Y>{$oldGeneralName}</>에서 <Y>{$generalName}</>{$josaRo} 변경");
$logger->pushGlobalActionLog("<Y>{$userNick}</>{$josaYi} 장수를 <Y>{$oldGeneralName}</>에서 <Y>{$generalName}</>{$josaRo} 변경합니다.");
$generalObj->applyDB($db);
Json::die([
'result'=>true,
'reason'=>'success'
]);
+6 -2
View File
@@ -24,7 +24,12 @@ if (!$member) {
$db = DB::db(); $db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env'); $gameStor = KVStorage::getStorage($db, 'game_env');
$admin = $gameStor->getValues(['block_general_create','show_img_level','maxgeneral']);
if($admin['block_general_create']){
MessageBox("잘못된 접근입니다!!!");
echo "<script>history.go(-1);</script>";
exit(1);
}
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
@@ -66,7 +71,6 @@ echo Json::encode((object)$charInfoText);
<tr><td align=center><?=info(0)?></td></tr> <tr><td align=center><?=info(0)?></td></tr>
</table> </table>
<?php <?php
$admin = $gameStor->getValues(['show_img_level','maxgeneral']);
$gencount = $db->queryFirstField('SELECT count(no) FROM general WHERE npc<2'); $gencount = $db->queryFirstField('SELECT count(no) FROM general WHERE npc<2');
+42
View File
@@ -372,4 +372,46 @@ function getNpcColor(npcType) {
return 'skyblue'; return 'skyblue';
} }
return null; return null;
}
function initTooltip($obj) {
if ($obj === undefined) {
$obj = $('.obj_tooltip');
} else if (!$obj.hasClass('obj_tooltip')) {
$obj = $obj.find('.obj_tooltip');
}
console.log($obj);
$obj.each(function() {
$target = $(this);
if ($target.data('installHandler')) {
return true;
}
$target.data('installHandler', true);
$target.mouseover(function() {
var $objTooltip = $(this);
if ($objTooltip.data('setObjTooltip')) {
return true;
}
var tooltipClassText = $objTooltip.data('tooltip-class');
if (!tooltipClassText) {
tooltipClassText = '';
}
var template = '<div class="tooltip {0}" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>'
.format(tooltipClassText);
$objTooltip.tooltip({
title: function() {
return $.trim($(this).find('.tooltiptext').html());
},
template: template,
html: true
}).tooltip('show');
$objTooltip.data('setObjTooltip', true);
});
});
} }
+74 -76
View File
@@ -1,4 +1,3 @@
/* /*
function showCityGeneral(cityIdx){ function showCityGeneral(cityIdx){
@@ -21,13 +20,13 @@ function loadScenarioPreview(scenarioIdx){
function loadScenarios(){ function loadScenarios() {
$.ajax({ $.ajax({
method:'post', method: 'post',
url:'j_load_scenarios.php', url: 'j_load_scenarios.php',
dataType:'json' dataType: 'json'
}).then(function(result){ }).then(function(result) {
if(!result.result){ if (!result.result) {
var deferred = $.Deferred(); var deferred = $.Deferred();
deferred.reject('fail'); deferred.reject('fail');
return deferred.promise(); return deferred.promise();
@@ -37,18 +36,18 @@ function loadScenarios(){
var list = {}; var list = {};
$.each(result.scenario, function(idx, value){ $.each(result.scenario, function(idx, value) {
var title = value.title || "-"; var title = value.title || "-";
var pat = /【(.*?)[0-9\-_\.a-zA-Z]*】/; var pat = /【(.*?)[0-9\-_\.a-zA-Z]*】/;
var category = pat.exec(title); var category = pat.exec(title);
category = category?category[1]:'-'; category = category ? category[1] : '-';
value.title = title; value.title = title;
value.category = category; value.category = category;
value.idx = idx; value.idx = idx;
value.year = value.year || 180; value.year = value.year || 180;
if(!(category in list)){ if (!(category in list)) {
list[category] = {}; list[category] = {};
} }
@@ -56,12 +55,12 @@ function loadScenarios(){
}); });
var $select = $('#scenario_sel'); var $select = $('#scenario_sel');
$.each(list, function(category, items){ $.each(list, function(category, items) {
var $optgroup = $('<optgroup>').attr('label', category); var $optgroup = $('<optgroup>').attr('label', category);
$.each(items, function(idx, scenario){ $.each(items, function(idx, scenario) {
var $option = $('<option>') var $option = $('<option>')
.data('scenario',scenario) .data('scenario', scenario)
.val(idx) .val(idx)
.html(scenario.title); .html(scenario.title);
$optgroup.append($option); $optgroup.append($option);
@@ -75,7 +74,7 @@ function loadScenarios(){
}); });
} }
function scenarioPreview(){ function scenarioPreview() {
var $select = $(this); var $select = $(this);
var $option = $select.find('option:selected'); var $option = $select.find('option:selected');
@@ -89,125 +88,124 @@ function scenarioPreview(){
$year.html('{0}년'.format(scenario.year)); $year.html('{0}년'.format(scenario.year));
$npc.html('{0}명'.format(scenario.npc_cnt)); $npc.html('{0}명'.format(scenario.npc_cnt));
if(scenario.npcEx_cnt == 0){ if (scenario.npcEx_cnt == 0) {
$npcEx.html(''); $npcEx.html('');
} } else {
else{
$npcEx.html('+{0}명'.format(scenario.npcEx_cnt)); $npcEx.html('+{0}명'.format(scenario.npcEx_cnt));
} }
$nation.html(''); $nation.html('');
$.each(scenario.nation, function(idx, nation){ $.each(scenario.nation, function(idx, nation) {
$nation.append('<span style="color:{0}">{1}</span> {2}명. {3}<br>'.format( $nation.append('<span style="color:{0}">{1}</span> {2}명. {3}<br>'.format(
nation.color, nation.name, nation.generals, nation.cities.join(', ') nation.color, nation.name, nation.generals, nation.cities.join(', ')
)); ));
}); });
} }
function formSetup(){ function formSetup() {
$.validator.addMethod("autorun_user", function(value,element){ $.validator.addMethod("autorun_user", function(value, element) {
var parent = $(element).parent('.input-group'); var parent = $(element).parent('.input-group');
var checkCnt = parent.find('input:checked').length; var checkCnt = parent.find('input:checked').length;
if(value <= 0){ if (value <= 0) {
if(checkCnt > 0){ if (checkCnt > 0) {
return false; return false;
} }
return true; return true;
} }
if(checkCnt == 0){ if (checkCnt == 0) {
return false; return false;
} }
return true; return true;
}, "유효 시간과 옵션은 동시에 설정해야합니다."); }, "유효 시간과 옵션은 동시에 설정해야합니다.");
$('#game_form').validate({ $('#game_form').validate({
rules:{ rules: {
turnterm:"required", turnterm: "required",
sync:"required", sync: "required",
scenario:"required", scenario: "required",
fiction:"required", fiction: "required",
extend:"required", extend: "required",
npcmode:"required", npcmode: "required",
show_img_level:"required", show_img_level: "required",
tournament_trig:"required", tournament_trig: "required",
join_mode:'required', join_mode: 'required',
autorun_user_minutes:{required: true, autorun_user: true, min:0} autorun_user_minutes: { required: true, autorun_user: true, min: 0 }
}, },
errorElement: "div", errorElement: "div",
errorPlacement: function ( error, element ) { errorPlacement: function(error, element) {
// Add the `help-block` class to the error element // Add the `help-block` class to the error element
error.addClass( "invalid-feedback" ); error.addClass("invalid-feedback");
if ( element.prop( "type" ) === "checkbox" ) { if (element.prop("type") === "checkbox") {
error.insertAfter( element.parent( "label" ) ); error.insertAfter(element.parent("label"));
} else { } else {
error.insertAfter( element ); error.insertAfter(element);
} }
}, },
highlight: function ( element, errorClass, validClass ) { highlight: function(element, errorClass, validClass) {
$( element ).addClass( "is-invalid" ).removeClass( "is-valid" ); $(element).addClass("is-invalid").removeClass("is-valid");
}, },
unhighlight: function (element, errorClass, validClass) { unhighlight: function(element, errorClass, validClass) {
$( element ).addClass( "is-valid" ).removeClass( "is-invalid" ); $(element).addClass("is-valid").removeClass("is-invalid");
} }
}); });
$('#game_form').submit(function(e){ $('#game_form').submit(function(e) {
e.preventDefault(); e.preventDefault();
if(!$("#game_form").valid()){ if (!$("#game_form").valid()) {
return; return;
} }
var autorun_user_minutes = parseInt($('#autorun_user_minutes').val()); var autorun_user_minutes = parseInt($('#autorun_user_minutes').val());
var autorun_user = []; var autorun_user = [];
if(autorun_user_minutes > 0){ if (autorun_user_minutes > 0) {
$('.autorun_user_chk:checked').each(function(){ $('.autorun_user_chk:checked').each(function() {
autorun_user.push($(this).data('key')); autorun_user.push($(this).data('key'));
}); });
} }
$.ajax({ $.ajax({
cache:false, cache: false,
type:'post', type: 'post',
url:'j_install.php', url: 'j_install.php',
dataType:'json', dataType: 'json',
data:{ data: {
turnterm:$('#turnterm input:radio:checked').val(), turnterm: $('#turnterm input:radio:checked').val(),
sync:$('#sync input:radio:checked').val(), sync: $('#sync input:radio:checked').val(),
scenario:$('#scenario_sel').val(), scenario: $('#scenario_sel').val(),
fiction:$('#fiction input:radio:checked').val(), fiction: $('#fiction input:radio:checked').val(),
extend:$('#extend input:radio:checked').val(), extend: $('#extend input:radio:checked').val(),
npcmode:$('#npcmode input:radio:checked').val(), block_general_create: $('#block_general_create input:radio:checked').val(),
show_img_level:$('#show_img_level input:radio:checked').val(), npcmode: $('#npcmode input:radio:checked').val(),
tournament_trig:$('#tournament_trig input:radio:checked').val(), show_img_level: $('#show_img_level input:radio:checked').val(),
reserve_open:$('#reserve_open').val(), tournament_trig: $('#tournament_trig input:radio:checked').val(),
pre_reserve_open:$('#pre_reserve_open').val(), reserve_open: $('#reserve_open').val(),
join_mode:$('#join_mode input:radio:checked').val(), pre_reserve_open: $('#pre_reserve_open').val(),
autorun_user_minutes:autorun_user_minutes, join_mode: $('#join_mode input:radio:checked').val(),
autorun_user:autorun_user autorun_user_minutes: autorun_user_minutes,
autorun_user: autorun_user
} }
}).then(function(result){ }).then(function(result) {
var deferred = $.Deferred(); var deferred = $.Deferred();
if(!result.result){ if (!result.result) {
alert(result.reason); alert(result.reason);
deferred.reject('fail'); deferred.reject('fail');
} } else {
else{
alert('게임이 리셋되었습니다.'); alert('게임이 리셋되었습니다.');
deferred.resolve(); deferred.resolve();
} }
return deferred.promise(); return deferred.promise();
}).then(function(){ }).then(function() {
location.href = '..'; location.href = '..';
}); });
}); });
} }
$(function(){ $(function() {
loadScenarios(); loadScenarios();
$('#scenario_sel').change(scenarioPreview); $('#scenario_sel').change(scenarioPreview);
formSetup(); formSetup();
}) })
+2 -2
View File
@@ -235,10 +235,10 @@ function reloadWorldMap(option, drawTarget) {
} }
function mergeClickable(city) { function mergeClickable(city) {
//clickable = (remainSpy << 3) | (ourCity << 2) | (shownByGeneral << 1) | clickableAll //clickable = (defaultCity << 4 ) | (remainSpy << 3) | (ourCity << 2) | (shownByGeneral << 1) | clickableAll
var id = city.id; var id = city.id;
var nationId = city.nationId; var nationId = city.nationId;
var clickable = 0; var clickable = 16;
if (id in spyList) { if (id in spyList) {
clickable |= spyList[id] << 3; clickable |= spyList[id] << 3;
} }
+210
View File
@@ -0,0 +1,210 @@
var templateGeneralCard = '<div class="general_card">\
<h4 class="bg1 with_border"><%generalName%></h4>\
<h4><img src="<%iconPath%>" height=64 width=64></h4><p>\
<%if(leadership){%>\
<%leadership%> / <%strength%> / <%intel%><br>\
<%}%>\
<%if(personalText){%><%personalText%><br><%}%>\
<%if(specialDomesticText||specialWarText){%>\
<%specialDomesticText%> / <%specialWarText%><br>\
<%}%>\
<%if(dex){%><br>\
보병: <%parseInt(dex[0]/1000)%>K<br>\
궁병: <%parseInt(dex[1]/1000)%>K<br>\
기병: <%parseInt(dex[2]/1000)%>K<br>\
귀병: <%parseInt(dex[3]/1000)%>K<br>\
차병: <%parseInt(dex[4]/1000)%>K<br>\
<%}%>\
</p>\
<button type="subject" class="with_skin with_border select_btn" data-name="<%generalName%>" value="<%uniqueName%>" name="pick">선택하기</button>\
</div>';
var templateSpecial =
'<span class="obj_tooltip" data-toggle="tooltip" data-placement="top"><%text%>\
<span class="tooltiptext">\
<%info%>\
</span>\
</span>\
';
function pickGeneral() {
$btn = $(this);
if (hasGeneralID) {
if (!confirm('이 장수를 선택할까요? : {0}'.format($btn.data('name')))) {
return false;
}
$.post({
url: 'j_update_picked_general.php',
dataType: 'json',
data: {
pick: $btn.val()
}
}).then(function(result) {
if (!result.result) {
alert(result.reason);
location.refresh();
}
alert('선택한 장수로 변경했습니다.');
location.href = './';
});
return false;
}
currentGeneralInfo = cards[$btn.val()];
var $card = $btn.closest('.general_card');
var $leftPad = $('#left_pad');
$leftPad.empty();
$card.clone().appendTo($leftPad);
initTooltip($leftPad);
return false;
}
function buildGeneral() {
if (!currentGeneralInfo) {
alert('장수를 선택해주세요!');
return false;
}
if (!confirm('이 장수로 생성할까요?')) {
return false;
}
$.post({
url: 'j_select_picked_general.php',
dataType: 'json',
data: {
pick: currentGeneralInfo.uniqueName,
use_own_picture: $('#use_own_picture').is(':checked'),
leadership: parseInt($('#leadership').val()),
strength: parseInt($('#leadership').val()),
intel: parseInt($('#leadership').val()),
personal: $('#selChar').val()
}
}).then(function(result) {
if (!result.result) {
alert(result.reason);
location.refresh();
}
alert('선택한 장수로 생성했습니다.');
location.href = './';
});
return false;
}
function updateOutdateTimer() {
var $validUntilText = $('#valid_until_text');
var now = Date.now();
var validUntil = $validUntilText.data('until');
if (validUntil <= 0) {
return;
} else if (validUntil < now) {
$validUntilText.data('until', 0);
$('#valid_until').hide();
$('#outdate_token').show();
return;
} else if (validUntil - now <= 30000) {
$validUntilText.css('color', "rgb(255, {0}, {0})".format(255 * (validUntil - now) / 30000));
}
setTimeout(updateOutdateTimer, 1000);
}
function printGenerals(value) {
$('.card_holder').empty();
$('#valid_until').show();
$('#valid_until_text').html(value.validUntil).data('until', (new Date(value.validUntil)).getTime()).css('color', 'white');
$('#outdate_token').hide();
var pick = $.map(value.pick, function(value, key) {
return value;
});
var emptyCard = {
'leadership': null,
'strength': null,
'intel': null,
'personalText': null,
'specialDomesticText': null,
'specialWarText': null,
'dex': null
};
$.each(pick, function(idx, cardData) {
cardData.iconPath = getIconPath(cardData.imgsvr, cardData.picture);
if (cardData.specialDomestic !== undefined) {
cardData.specialDomesticText = TemplateEngine(templateSpecial, {
text: cardData.specialDomesticName,
info: cardData.specialDomesticInfo
});
cardData.specialWarText = '-';
}
if (cardData.specialWar !== undefined) {
cardData.specialWarText = TemplateEngine(templateSpecial, {
text: cardData.specialWarName,
info: cardData.specialWarInfo
});
if (cardData.specialDomesticText === undefined) {
cardData.specialDomesticText = '-';
}
}
//FIXME: ego로 적었던것 같음!
if (cardData.personal in characterInfo) {
cardData.personalText = TemplateEngine(templateSpecial, {
text: characterInfo[cardData.personal].name,
info: characterInfo[cardData.personal].info
});
} else {
cardData.personalText = cardData.personal;
}
cards[cardData.uniqueName] = cardData;
var $card = $(TemplateEngine(templateGeneralCard, $.extend({}, emptyCard, cardData)));
$('.card_holder').append($card);
$card.find('.select_btn').click(pickGeneral);
$card.find('.obj_tooltip').tooltip({
title: function() {
return $.trim($(this).find('.tooltiptext').html());
},
html: true
});
});
updateOutdateTimer();
}
$(function($) {
$.post('j_get_select_pool.php').then(function(value) {
if (!value.result) {
alert(value.reason);
return;
}
console.log(value);
printGenerals(value);
});
if (hasGeneralID) {
$('#create_plate').hide();
}
$('#build_general').on('click', buildGeneral);
$.each(validCustomOption, function(idx, value) {
if (value == 'picture') {
$('.custom_picture').show();
} else if (value == 'ego') {
$('.custom_personality').show();
} else if (value == 'stat') {
$('.custom_stat').show();
}
});
});
+72
View File
@@ -0,0 +1,72 @@
<?php
namespace sammo;
use sammo\AbsGeneralPool;
use sammo\GameConst;
use sammo\Json;
use sammo\Util;
abstract class AbsFromUserPool extends AbsGeneralPool{
public function occupyGeneralName(): bool
{
$generalID = $this->getGeneralBuilder()->getGeneralID();
if($generalID === null){
throw new \RuntimeException('build되지 않음');
}
$db= $this->db;
$db->update('select_pool', [
'general_id'=>$generalID,
'owner'=>null,
'reserved_until'=>null,
], 'unique_name = %s AND owner IS NOT NULL', $this->uniqueName);
return $db->affectedRows()!=0;
}
static public function pickGeneralFromPool(\MeekroDB $db, int $owner, int $pickCnt, ?string $prefix=null):array{
$oNow = new \DateTimeImmutable();
$now = $oNow->format('Y-m-d H:i:s');
$db->update('select_pool', [
'reserved_until'=>null,
'owner'=>null,
],'reserved_until < %s AND general_id IS NULL', $now);
$pool = [];
foreach($db->query('SELECT id, unique_name, info FROM select_pool WHERE reserved_until IS NULL AND general_id IS NULL', $pickCnt) as $cand){
$cand['info'] = Json::decode($cand['info']);
$dexTotal = array_sum($cand['info']['dex']);
$pool[] = [$cand, $dexTotal];
}
if(count($pool) < $pickCnt){
throw new \RuntimeException('pool 부족');
}
$gameStor = KVStorage::getStorage($db, 'game_env');
$result = [];
$validUntil = TimeUtil::nowAddMinutes(2 * $gameStor->turnterm);
while(count($result) < $pickCnt){
$cand = Util::choiceRandomUsingWeightPair($pool);
$poolID = $cand['id'];
if(key_exists($poolID, $result)){
continue;
}
$candInfo = $cand['info'];
$candInfo['uniqueName'] = $cand['unique_name'];
//하나씩 한다.
$db->update('select_pool', [
'owner'=>$owner,
'reserved_until'=>$validUntil,
], 'id = %i AND reserved_until IS NULL AND owner IS NULL and general_id IS NULL', $poolID);
if($db->affectedRows()==0){
continue;
}
$result[$poolID] = new static($db, $candInfo, $validUntil);
}
return array_values($result);
}
}
+111
View File
@@ -0,0 +1,111 @@
<?php
namespace sammo;
use MeekroDB;
use sammo\GameConst;
use sammo\Scenario\GeneralBuilder;
use sammo\Util;
abstract class AbsGeneralPool{
protected $builder;
protected $info;
protected $db=null;
protected $uniqueName;
protected $generalName;
protected $validUntil;
/*
* info = [
* uniqueName
* generalName
* imgsvr
* picture
*
* leadership
* strength
* intel
*
* experience
* dedication
*
* dex[5]
*
* specialDomestic
* specialWar
*/
public function __construct(\MeekroDB $db, array $info, string $validUntil)
{
$this->db = $db;
$this->info = $info;
$this->uniqueName = $info['uniqueName'];
$this->generalName = $info['generalName'];
$this->builder = new GeneralBuilder(
$info['generalName'],
$info['imgsvr'],
$info['picture'],
0
);
$this->validUntil = $validUntil;
$builder = $this->builder;
if(key_exists('leadership', $info)){
$builder->setStat($info['leadership'], $info['strength'], $info['intel']);
}
if(key_exists('experience', $info)){
$builder->setExpDed($info['experience'], $info['dedication']);
}
if(key_exists('dex', $info)){
$builder->setDex($info['dex'][0], $info['dex'][1], $info['dex'][2], $info['dex'][3], $info['dex'][4]);
}
if(key_exists('specialDomestic', $info) || key_exists('specialWar', $info)){
$builder->setSpecial($info['specialDomestic']??GameConst::$defaultSpecialDomestic, $info['specialWar']??GameConst::$defaultSpecialWar);
}
}
public function getUniqueName():string{
return $this->uniqueName;
}
public function getInfo():array{
return $this->info;
}
static protected function checkDuplicatedCnt(\MeekroDB $db, string $name):int{
$duplicateCnt = 0;
foreach(GeneralBuilder::$prefixList as $npcPrefix){
$testName = "{$npcPrefix}{$name}";
$duplicateCnt += $db->queryFirstField('SELECT count(no) FROM general WHERE name LIKE %s', $testName.'%');
}
return $duplicateCnt;
}
public function getGeneralBuilder():GeneralBuilder{
if(!$this->generalName){
throw new \RuntimeException('generalName not picked');
}
return $this->builder;
}
public function getValidUntil():string{
return $this->validUntil;
}
/**
* @param \MeekroDB $db
* @param int $owner
* @param int $pickCnt
* @param null|string $prefix
* @return AbsGeneralPool[]
*/
static abstract public function pickGeneralFromPool(\MeekroDB $db, int $owner, int $pickCnt, ?string $prefix=null):array;
abstract public function occupyGeneralName():bool;
abstract public static function getPoolName():string;
abstract public static function initPool(\MeekroDB $db);
}
+8 -1
View File
@@ -22,7 +22,14 @@ class che_저격_수극 extends \sammo\BaseItem{
public function getBattleInitSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{ public function getBattleInitSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
return new WarUnitTriggerCaller( return new WarUnitTriggerCaller(
new che_저격시도($unit, BaseWarUnitTrigger::TYPE_CONSUMABLE_ITEM, 0.5, 20, 40), new che_저격시도($unit, BaseWarUnitTrigger::TYPE_CONSUMABLE_ITEM, 0.5, 20, 40),
new che_저격발동($unit) new che_저격발동($unit, BaseWarUnitTrigger::TYPE_CONSUMABLE_ITEM)
); );
} }
function isConsumableNow(string $actionType, string $command):bool{
if($actionType == 'GeneralTrigger' && $command == 'che_아이템치료'){
return true;
}
return false;
}
} }
+29
View File
@@ -0,0 +1,29 @@
<?php
namespace sammo\ActionItem;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
use sammo\WarUnitTriggerCaller;
use sammo\WarUnitTrigger\che_격노시도;
use sammo\WarUnitTrigger\che_격노발동;
class event_빼빼로 extends \sammo\BaseItem{
protected $id = 75;
protected $rawName = '빼빼로';
protected $name = '빼빼로';
protected $info = '1의 상징입니다.<br>통솔 +1, 무력 +1, 지력 +1';
protected $cost = 1500;
protected $buyable = true;
protected $consumable = false;
protected $reqSecu = 12000;
public function onCalcStat(General $general, string $statName, $value, $aux=null){
if(in_array($statName, ['leadership', 'strength', 'intel'] )){
return $value + 1;
}
return $value;
}
}
@@ -18,12 +18,16 @@ class event_전투특기_격노 extends \sammo\BaseItem{
protected $buyable = true; protected $buyable = true;
protected $consumable = false; protected $consumable = false;
protected $reqSecu = 3000; protected $reqSecu = 3000;
public function getWarPowerMultiplier(WarUnit $unit):array{
$activatedCnt = $unit->hasActivatedSkillOnLog('격노');
return [1 + 0.2*$activatedCnt, 1];
}
public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{ public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
return new WarUnitTriggerCaller( return new WarUnitTriggerCaller(
new che_격노시도($unit), new che_격노시도($unit, che_격노시도::TYPE_ITEM),
new che_격노발동($unit) new che_격노발동($unit, che_격노발동::TYPE_ITEM)
); );
} }
} }
@@ -0,0 +1,34 @@
<?php
namespace sammo\ActionSpecialDomestic;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
use sammo\WarUnitTriggerCaller;
use sammo\WarUnitTrigger\che_격노시도;
use sammo\WarUnitTrigger\che_격노발동;
class che_event_격노 extends \sammo\BaseSpecial{
protected $id = 74;
protected $name = '격노';
protected $info = '[전투] 상대방 필살 시 격노(필살) 발동, 회피 시도시 25% 확률로 격노 발동, 공격 시 일정 확률로 진노(1페이즈 추가), 격노마다 대미지 20% 추가 중첩';
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityHelper::STAT_STRENGTH,
];
public function getWarPowerMultiplier(WarUnit $unit):array{
$activatedCnt = $unit->hasActivatedSkillOnLog('격노');
return [1 + 0.2*$activatedCnt, 1];
}
public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
return new WarUnitTriggerCaller(
new che_격노시도($unit),
new che_격노발동($unit)
);
}
}
@@ -0,0 +1,40 @@
<?php
namespace sammo\ActionSpecialDomestic;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
use sammo\WarUnitTriggerCaller;
use sammo\BaseWarUnitTrigger;
use sammo\WarUnitTrigger\che_부상무효;
use sammo\WarUnitTrigger\WarActivateSkills;
class che_event_견고 extends \sammo\BaseSpecial{
protected $id = 62;
protected $name = '견고';
protected $info = '[전투] 상대 필살, 저격 불가, 상대 계략 시도시 성공 확률 -10%p, 부상 없음, 아군 피해 -10%';
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityHelper::STAT_STRENGTH
];
public function getBattleInitSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
return new WarUnitTriggerCaller(
new che_부상무효($unit, BaseWarUnitTrigger::TYPE_NONE),
new WarActivateSkills($unit, BaseWarUnitTrigger::TYPE_NONE, false, '저격불가')
);
}
public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
return new WarUnitTriggerCaller(
new WarActivateSkills($unit, BaseWarUnitTrigger::TYPE_NONE, false, '필살불가', '계략약화', '저격불가')
);
}
public function getWarPowerMultiplier(WarUnit $unit):array{
return [1, 0.9];
}
}
@@ -0,0 +1,50 @@
<?php
namespace sammo\ActionSpecialDomestic;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityHelper;
use \sammo\GameUnitConst;
use \sammo\WarUnit;
use \sammo\WarUnitCity;
class che_event_공성 extends \sammo\BaseSpecial{
protected $id = 53;
protected $name = '공성';
protected $info = '[군사] 차병 계통 징·모병비 -10%<br>[전투] 성벽 공격 시 대미지 +100%,<br>공격시 상대 병종에/수비시 자신 병종 숙련에 차병 숙련을 가산';
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityHelper::STAT_LEADERSHIP | SpecialityHelper::REQ_DEXTERITY | SpecialityHelper::ARMY_SIEGE,
];
public function onCalcDomestic(string $turnType, string $varType, float $value, $aux=null):float{
if(in_array($turnType, ['징병', '모병'])){
if($varType == 'cost' && $aux['armType'] == GameUnitConst::T_SIEGE) return $value * 0.9;
}
return $value;
}
public function getWarPowerMultiplier(WarUnit $unit):array{
if($unit->getOppose() instanceof WarUnitCity){
return [2, 1];
}
return [1, 1];
}
public function onCalcStat(General $general, string $statName, $value, $aux=null){
if(\sammo\Util::starts_with($statName, 'dex')){
$myArmType = 'dex'.GameUnitConst::T_SIEGE;
$opposeArmType = 'dex'.$aux['opposeType']->armType;;
if($aux['isAttacker'] && $opposeArmType === $statName){
return $value + $general->getVar($myArmType);
}
if(!$aux['isAttacker'] && $myArmType === $statName){
return $value + $general->getVar($myArmType);
}
}
return $value;
}
}
@@ -0,0 +1,46 @@
<?php
namespace sammo\ActionSpecialDomestic;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityHelper;
use \sammo\GameUnitConst;
class che_event_궁병 extends \sammo\BaseSpecial{
protected $id = 51;
protected $name = '궁병';
protected $info = '[군사] 궁병 계통 징·모병비 -10%<br>[전투] 회피 확률 +20%p,<br>공격시 상대 병종에/수비시 자신 병종 숙련에 궁병 숙련을 가산';
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityHelper::STAT_LEADERSHIP | SpecialityHelper::REQ_DEXTERITY | SpecialityHelper::ARMY_ARCHER | SpecialityHelper::STAT_NOT_INTEL,
SpecialityHelper::STAT_STRENGTH | SpecialityHelper::REQ_DEXTERITY | SpecialityHelper::ARMY_ARCHER
];
public function onCalcDomestic(string $turnType, string $varType, float $value, $aux=null):float{
if(in_array($turnType, ['징병', '모병'])){
if($varType == 'cost' && $aux['armType'] == GameUnitConst::T_ARCHER) return $value * 0.9;
}
return $value;
}
public function onCalcStat(General $general, string $statName, $value, $aux=null){
if($statName === 'warAvoidRatio'){
return $value + 0.2;
}
if(\sammo\Util::starts_with($statName, 'dex')){
$myArmType = 'dex'.GameUnitConst::T_ARCHER;
$opposeArmType = 'dex'.$aux['opposeType']->armType;;
if($aux['isAttacker'] && $opposeArmType === $statName){
return $value + $general->getVar($myArmType);
}
if(!$aux['isAttacker'] && $myArmType === $statName){
return $value + $general->getVar($myArmType);
}
}
return $value;
}
}
@@ -0,0 +1,45 @@
<?php
namespace sammo\ActionSpecialDomestic;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityHelper;
use \sammo\GameUnitConst;
use \sammo\WarUnit;
class che_event_귀병 extends \sammo\BaseSpecial{
protected $id = 40;
protected $name = '귀병';
protected $info = '[군사] 귀병 계통 징·모병비 -10%<br>[전투] 계략 성공 확률 +20%p,<br>공격시 상대 병종에/수비시 자신 병종 숙련에 귀병 숙련을 가산';
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityHelper::STAT_INTEL | SpecialityHelper::ARMY_WIZARD | SpecialityHelper::REQ_DEXTERITY | SpecialityHelper::STAT_NOT_STRENGTH
];
public function onCalcDomestic(string $turnType, string $varType, float $value, $aux=null):float{
if(in_array($turnType, ['징병', '모병'])){
if($varType == 'cost' && $aux['armType'] == GameUnitConst::T_WIZARD) return $value * 0.9;
}
return $value;
}
public function onCalcStat(General $general, string $statName, $value, $aux=null){
if($statName === 'warMagicSuccessProb'){
return $value + 0.2;
}
if(\sammo\Util::starts_with($statName, 'dex')){
$myArmType = 'dex'.GameUnitConst::T_WIZARD;
$opposeArmType = 'dex'.$aux['opposeType']->armType;;
if($aux['isAttacker'] && $opposeArmType === $statName){
return $value + $general->getVar($myArmType);
}
if(!$aux['isAttacker'] && $myArmType === $statName){
return $value + $general->getVar($myArmType);
}
}
return $value;
}
}
@@ -0,0 +1,50 @@
<?php
namespace sammo\ActionSpecialDomestic;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityHelper;
use \sammo\GameUnitConst;
use \sammo\WarUnit;
class che_event_기병 extends \sammo\BaseSpecial{
protected $id = 52;
protected $name = '기병';
protected $info = '[군사] 기병 계통 징·모병비 -10%<br>[전투] 수비 시 대미지 +10%, 공격 시 대미지 +20%,<br>공격시 상대 병종에/수비시 자신 병종 숙련에 기병 숙련을 가산';
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityHelper::STAT_LEADERSHIP | SpecialityHelper::REQ_DEXTERITY | SpecialityHelper::ARMY_CAVALRY | SpecialityHelper::STAT_NOT_INTEL,
SpecialityHelper::STAT_STRENGTH | SpecialityHelper::REQ_DEXTERITY | SpecialityHelper::ARMY_CAVALRY
];
public function onCalcDomestic(string $turnType, string $varType, float $value, $aux=null):float{
if(in_array($turnType, ['징병', '모병'])){
if($varType == 'cost' && $aux['armType'] == GameUnitConst::T_CAVALRY) return $value * 0.9;
}
return $value;
}
public function getWarPowerMultiplier(WarUnit $unit):array{
if($unit->isAttacker()){
return [1.2, 1];
}
return [1.1, 1];
}
public function onCalcStat(General $general, string $statName, $value, $aux=null){
if(\sammo\Util::starts_with($statName, 'dex')){
$myArmType = 'dex'.GameUnitConst::T_CAVALRY;
$opposeArmType = 'dex'.$aux['opposeType']->armType;;
if($aux['isAttacker'] && $opposeArmType === $statName){
return $value + $general->getVar($myArmType);
}
if(!$aux['isAttacker'] && $myArmType === $statName){
return $value + $general->getVar($myArmType);
}
}
return $value;
}
}
@@ -0,0 +1,42 @@
<?php
namespace sammo\ActionSpecialDomestic;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
use \sammo\BaseWarUnitTrigger;
use \sammo\WarUnitTriggerCaller;
use sammo\WarUnitTrigger\WarActivateSkills;
use \sammo\WarUnitTrigger\che_돌격지속;
class che_event_돌격 extends \sammo\BaseSpecial{
protected $id = 60;
protected $name = '돌격';
protected $info = '[전투] 공격 시 대등/유리한 병종에게는 퇴각 전까지 전투, 공격 시 페이즈 + 2, 공격 시 대미지 +5%';
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityHelper::STAT_STRENGTH
];
public function onCalcStat(General $general, string $statName, $value, $aux=null){
if($statName === 'initWarPhase'){
return $value + 2;
}
return $value;
}
public function getWarPowerMultiplier(WarUnit $unit):array{
if($unit->isAttacker()){
return [1.05, 1];
}
return [1, 1];
}
public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
return new WarUnitTriggerCaller(
new che_돌격지속($unit)
);
}
}
@@ -0,0 +1,36 @@
<?php
namespace sammo\ActionSpecialDomestic;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
use \sammo\Util;
class che_event_무쌍 extends \sammo\BaseSpecial{
protected $id = 61;
protected $name = '무쌍';
protected $info = '[전투] 대미지 +10%, 공격 시 필살 확률 +10%p, <br>승리 수만큼 대미지 0.20%씩 추가 상승(최대40%)<br>승리 수만큼 피해 0.05%씩 감소(최대50%)';
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityHelper::STAT_STRENGTH
];
public function onCalcStat(General $general, string $statName, $value, $aux=null){
if($statName === 'warCriticalRatio' && $aux['isAttacker']??false){
return $value += 0.1;
}
return $value;
}
public function getWarPowerMultiplier(WarUnit $unit):array{
$attackMultiplier = 1.1;
$defenceMultiplier = 1;
$killnum = $unit->getGeneral()->getRankVar('killnum');
$attackMultiplier += Util::valueFit($killnum * 0.01 * 0.2, null, 0.4);
$defenceMultiplier -= Util::valueFit($killnum * 0.01 * 0.05, null, 0.5);
return [$attackMultiplier, $defenceMultiplier];
}
}
@@ -0,0 +1,39 @@
<?php
namespace sammo\ActionSpecialDomestic;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
use sammo\WarUnitTriggerCaller;
use \sammo\BaseWarUnitTrigger;
use \sammo\WarUnitTrigger\WarActivateSkills;
use \sammo\WarUnitTrigger\che_반계시도;
use \sammo\WarUnitTrigger\che_반계발동;
class che_event_반계 extends \sammo\BaseSpecial{
protected $id = 45;
protected $name = '반계';
protected $info = '[전투] 상대의 계략 성공 확률 -10%p, 상대의 계략을 40% 확률로 되돌림, 반목 성공시 대미지 추가(+60% → +150%)';
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityHelper::STAT_INTEL,
];
public function onCalcStat(General $general, string $statName, $value, $aux=null){
if($statName === 'warMagicSuccessDamage' && $aux === '반목'){
return $value + 0.9;
}
return $value;
}
public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
return new WarUnitTriggerCaller(
new WarActivateSkills($unit, BaseWarUnitTrigger::TYPE_NONE, false, '계략약화'),
new che_반계시도($unit),
new che_반계발동($unit)
);
}
}
@@ -0,0 +1,50 @@
<?php
namespace sammo\ActionSpecialDomestic;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityHelper;
use \sammo\GameUnitConst;
use \sammo\WarUnit;
class che_event_보병 extends \sammo\BaseSpecial{
protected $id = 50;
protected $name = '보병';
protected $info = '[군사] 보병 계통 징·모병비 -10%<br>[전투] 공격 시 아군 피해 -10%, 수비 시 아군 피해 -20%,<br>공격시 상대 병종에/수비시 자신 병종 숙련에 보병 숙련을 가산';
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityHelper::STAT_LEADERSHIP | SpecialityHelper::REQ_DEXTERITY | SpecialityHelper::ARMY_FOOTMAN | SpecialityHelper::STAT_NOT_INTEL,
SpecialityHelper::STAT_STRENGTH | SpecialityHelper::REQ_DEXTERITY | SpecialityHelper::ARMY_FOOTMAN
];
public function onCalcDomestic(string $turnType, string $varType, float $value, $aux=null):float{
if(in_array($turnType, ['징병', '모병'])){
if($varType == 'cost' && $aux['armType'] == GameUnitConst::T_FOOTMAN) return $value * 0.9;
}
return $value;
}
public function getWarPowerMultiplier(WarUnit $unit):array{
if($unit->isAttacker()){
return [1, 0.9];
}
return [1, 0.8];
}
public function onCalcStat(General $general, string $statName, $value, $aux=null){
if(\sammo\Util::starts_with($statName, 'dex')){
$myArmType = 'dex'.GameUnitConst::T_FOOTMAN;
$opposeArmType = 'dex'.$aux['opposeType']->armType;;
if($aux['isAttacker'] && $opposeArmType === $statName){
return $value + $general->getVar($myArmType);
}
if(!$aux['isAttacker'] && $myArmType === $statName){
return $value + $general->getVar($myArmType);
}
}
return $value;
}
}
@@ -0,0 +1,37 @@
<?php
namespace sammo\ActionSpecialDomestic;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
class che_event_신산 extends \sammo\BaseSpecial{
protected $id = 41;
protected $name = '신산';
protected $info = '[계략] 화계·탈취·파괴·선동 : 성공률 +10%p<br>[전투] 계략 시도 확률 +20%p, 계략 성공 확률 +20%p';
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityHelper::STAT_INTEL,
];
public function onCalcDomestic(string $turnType, string $varType, float $value, $aux=null):float{
if($turnType == '계략'){
if($varType == 'success') return $value + 0.1;
}
return $value;
}
public function onCalcStat(General $general, string $statName, $value, $aux=null){
if($statName === 'warMagicTrialProb'){
return $value + 0.2;
}
if($statName === 'warMagicSuccessProb'){
return $value + 0.2;
}
return $value;
}
}
@@ -0,0 +1,26 @@
<?php
namespace sammo\ActionSpecialDomestic;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
class che_event_신중 extends \sammo\BaseSpecial{
protected $id = 44;
protected $name = '신중';
protected $info = '[전투] 계략 성공 확률 100%';
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityHelper::STAT_INTEL,
];
public function onCalcStat(General $general, string $statName, $value, $aux=null){
if($statName === 'warMagicSuccessProb'){
return $value + 1;
}
return $value;
}
}
@@ -0,0 +1,29 @@
<?php
namespace sammo\ActionSpecialDomestic;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
use sammo\WarUnitTriggerCaller;
use \sammo\WarUnitTrigger\che_위압시도;
use \sammo\WarUnitTrigger\che_위압발동;
class che_event_위압 extends \sammo\BaseSpecial{
protected $id = 63;
protected $name = '위압';
protected $info = '[전투] 첫 페이즈 위압 발동(적 공격, 회피 불가, 사기 5 감소)';
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityHelper::STAT_STRENGTH
];
public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
return new WarUnitTriggerCaller(
new che_위압시도($unit),
new che_위압발동($unit)
);
}
}
@@ -0,0 +1,41 @@
<?php
namespace sammo\ActionSpecialDomestic;
use \sammo\iAction;
use sammo\BaseGeneralTrigger;
use sammo\SpecialityHelper;
use \sammo\General;
use \sammo\GeneralTrigger;
use \sammo\GeneralTriggerCaller;
use \sammo\WarUnit;
use sammo\WarUnitTrigger\che_전투치료발동;
use sammo\WarUnitTrigger\che_전투치료시도;
use sammo\WarUnitTriggerCaller;
class che_event_의술 extends \sammo\BaseSpecial{
protected $id = 73;
protected $name = '의술';
protected $info = '[군사] 매 턴마다 자신(100%)과 소속 도시 장수(적 포함 50%) 부상 회복<br>[전투] 페이즈마다 40% 확률로 치료 발동(아군 피해 1/3 감소, 부상 회복)';
static $selectWeightType = SpecialityHelper::WEIGHT_PERCENT;
static $selectWeight = 2;
static $type = [
SpecialityHelper::STAT_LEADERSHIP,
SpecialityHelper::STAT_STRENGTH,
SpecialityHelper::STAT_INTEL
];
public function getPreTurnExecuteTriggerList(General $general):?GeneralTriggerCaller{
return new GeneralTriggerCaller(
new GeneralTrigger\che_도시치료($general)
);
}
public function getBattlePhaseSkillTriggerList(\sammo\WarUnit $unit): ?WarUnitTriggerCaller
{
return new WarUnitTriggerCaller(
new che_전투치료시도($unit),
new che_전투치료발동($unit)
);
}
}
@@ -0,0 +1,31 @@
<?php
namespace sammo\ActionSpecialDomestic;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
use sammo\WarUnitTriggerCaller;
use \sammo\WarUnitTrigger\che_저격시도;
use \sammo\WarUnitTrigger\che_저격발동;
class che_event_저격 extends \sammo\BaseSpecial{
protected $id = 70;
protected $name = '저격';
protected $info = '[전투] 새로운 상대와 전투 시 50% 확률로 저격 발동, 성공 시 사기+10';
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityHelper::STAT_LEADERSHIP,
SpecialityHelper::STAT_STRENGTH,
SpecialityHelper::STAT_INTEL
];
public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
return new WarUnitTriggerCaller(
new che_저격시도($unit, che_저격시도::TYPE_NONE, 0.5, 20, 40),
new che_저격발동($unit)
);
}
}
@@ -0,0 +1,26 @@
<?php
namespace sammo\ActionSpecialDomestic;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
class che_event_집중 extends \sammo\BaseSpecial{
protected $id = 43;
protected $name = '집중';
protected $info = '[전투] 계략 성공 시 대미지 +50%';
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityHelper::STAT_INTEL,
];
public function onCalcStat(General $general, string $statName, $value, $aux=null){
if($statName === 'warMagicSuccessDamage'){
return $value * 1.5;
}
return $value;
}
}
@@ -0,0 +1,36 @@
<?php
namespace sammo\ActionSpecialDomestic;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
class che_event_징병 extends \sammo\BaseSpecial{
protected $id = 72;
protected $name = '징병';
protected $info = '[군사] 징·모병비 -50%, 통솔 순수 능력치 보정 +25%';
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityHelper::STAT_LEADERSHIP,
SpecialityHelper::STAT_STRENGTH,
SpecialityHelper::STAT_INTEL
];
public function onCalcDomestic(string $turnType, string $varType, float $value, $aux=null):float{
if(in_array($turnType, ['징병', '모병'])){
if($varType == 'cost') return $value * 0.5;
}
return $value;
}
public function onCalcStat(General $general, string $statName, $value, $aux=null){
if($statName === 'leadership'){
return $value + $general->getVar('leadership') * 0.25;
}
return $value;
}
}
@@ -0,0 +1,29 @@
<?php
namespace sammo\ActionSpecialDomestic;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
class che_event_척사 extends \sammo\BaseSpecial{
protected $id = 75;
protected $name = '척사';
protected $info = '[전투] 지역·도시 병종 상대로 대미지 +15%, 아군 피해 -15%';
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityHelper::STAT_LEADERSHIP,
SpecialityHelper::STAT_STRENGTH,
SpecialityHelper::STAT_INTEL
];
public function getWarPowerMultiplier(WarUnit $unit):array{
$opposeCrewType = $unit->getOppose()->getCrewType();
if($opposeCrewType->reqCities || $opposeCrewType->reqRegions){
return [1.15, 0.85];
}
return [1, 1];
}
}
@@ -0,0 +1,36 @@
<?php
namespace sammo\ActionSpecialDomestic;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
use sammo\WarUnitTriggerCaller;
use sammo\WarUnitTrigger\che_필살강화_회피불가;
class che_event_필살 extends \sammo\BaseSpecial{
protected $id = 71;
protected $name = '필살';
protected $info = '[전투] 필살 확률 +30%p, 필살 발동시 대상 회피 불가';
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityHelper::STAT_LEADERSHIP,
SpecialityHelper::STAT_STRENGTH,
SpecialityHelper::STAT_INTEL
];
public function onCalcStat(General $general, string $statName, $value, $aux=null){
if($statName === 'warCriticalRatio'){
return $value + 0.30;
}
return $value;
}
public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
return new WarUnitTriggerCaller(
new che_필살강화_회피불가($unit)
);
}
}
@@ -0,0 +1,29 @@
<?php
namespace sammo\ActionSpecialDomestic;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
class che_event_환술 extends \sammo\BaseSpecial{
protected $id = 42;
protected $name = '환술';
protected $info = '[전투] 계략 성공 확률 +10%p, 계략 성공 시 대미지 +30%';
static $selectWeightType = SpecialityHelper::WEIGHT_PERCENT;
static $selectWeight = 5;
static $type = [
SpecialityHelper::STAT_INTEL,
];
public function onCalcStat(General $general, string $statName, $value, $aux=null){
if($statName === 'warMagicSuccessProb'){
return $value + 0.1;
}
if($statName === 'warMagicSuccessDamage'){
return $value * 1.3;
}
return $value;
}
}
+134 -134
View File
@@ -1,135 +1,135 @@
<?php <?php
namespace sammo\Command\General; namespace sammo\Command\General;
use \sammo\{ use \sammo\{
DB, Util, JosaUtil, DB, Util, JosaUtil,
General, General,
ActionLogger, ActionLogger,
GameConst, GameUnitConst, GameConst, GameUnitConst,
LastTurn, LastTurn,
Command Command
}; };
use function \sammo\{ use function \sammo\{
tryUniqueItemLottery tryUniqueItemLottery
}; };
use \sammo\Constraint\Constraint; use \sammo\Constraint\Constraint;
use \sammo\Constraint\ConstraintHelper; use \sammo\Constraint\ConstraintHelper;
use sammo\CityConst; use sammo\CityConst;
use function sammo\DeleteConflict; use function sammo\DeleteConflict;
use function sammo\refreshNationStaticInfo; use function sammo\refreshNationStaticInfo;
class che_방랑 extends Command\GeneralCommand{ class che_방랑 extends Command\GeneralCommand{
static protected $actionName = '방랑'; static protected $actionName = '방랑';
protected function argTest():bool{ protected function argTest():bool{
$this->arg = null; $this->arg = null;
return true; return true;
} }
protected function init(){ protected function init(){
$general = $this->generalObj; $general = $this->generalObj;
$env = $this->env; $env = $this->env;
$this->setCity(); $this->setCity();
$this->setNation(); $this->setNation();
$relYear = $env['year'] - $env['startyear']; $relYear = $env['year'] - $env['startyear'];
$this->fullConditionConstraints=[ $this->fullConditionConstraints=[
ConstraintHelper::BeLord(), ConstraintHelper::BeLord(),
ConstraintHelper::NotWanderingNation(), ConstraintHelper::NotWanderingNation(),
ConstraintHelper::NotOpeningPart($relYear), ConstraintHelper::NotOpeningPart($relYear),
ConstraintHelper::AllowDiplomacyStatus($this->generalObj->getNationID(), [ ConstraintHelper::AllowDiplomacyStatus($this->generalObj->getNationID(), [
2, 7 2, 7
], '방랑할 수 없는 외교상태입니다.'), ], '방랑할 수 없는 외교상태입니다.'),
]; ];
} }
public function getCost():array{ public function getCost():array{
return [0, 0]; return [0, 0];
} }
public function getPreReqTurn():int{ public function getPreReqTurn():int{
return 0; return 0;
} }
public function getPostReqTurn():int{ public function getPostReqTurn():int{
return 0; return 0;
} }
public function run():bool{ public function run():bool{
if(!$this->hasFullConditionMet()){ if(!$this->hasFullConditionMet()){
throw new \RuntimeException('불가능한 커맨드를 강제로 실행 시도'); throw new \RuntimeException('불가능한 커맨드를 강제로 실행 시도');
} }
$db = DB::db(); $db = DB::db();
$env = $this->env; $env = $this->env;
$general = $this->generalObj; $general = $this->generalObj;
$date = $general->getTurnTime($general::TURNTIME_HM); $date = $general->getTurnTime($general::TURNTIME_HM);
$generalName = $general->getName(); $generalName = $general->getName();
$josaYi = JosaUtil::pick($generalName, '이'); $josaYi = JosaUtil::pick($generalName, '이');
$josaUn = JosaUtil::pick($generalName, '은'); $josaUn = JosaUtil::pick($generalName, '은');
$nationID = $general->getNationID(); $nationID = $general->getNationID();
$nationName = $this->nation['name']; $nationName = $this->nation['name'];
$josaUl = JosaUtil::pick($nationName, '을'); $josaUl = JosaUtil::pick($nationName, '을');
$logger = $general->getLogger(); $logger = $general->getLogger();
$logger->pushGeneralActionLog("영토를 버리고 방랑의 길을 떠납니다. <1>$date</>"); $logger->pushGeneralActionLog("영토를 버리고 방랑의 길을 떠납니다. <1>$date</>");
$logger->pushGlobalActionLog("<Y>{$generalName}</>{$josaYi} 방랑의 길을 떠납니다."); $logger->pushGlobalActionLog("<Y>{$generalName}</>{$josaYi} 방랑의 길을 떠납니다.");
$logger->pushGlobalHistoryLog("<R><b>【방랑】</b></><D><b>{$generalName}</b></>{$josaUn} <R>방랑</>의 길을 떠납니다."); $logger->pushGlobalHistoryLog("<R><b>【방랑】</b></><D><b>{$generalName}</b></>{$josaUn} <R>방랑</>의 길을 떠납니다.");
$logger->pushGeneralHistoryLog("<D><b>{$nationName}</b></>{$josaUl} 버리고 방랑"); $logger->pushGeneralHistoryLog("<D><b>{$nationName}</b></>{$josaUl} 버리고 방랑");
//분쟁기록 모두 지움 //분쟁기록 모두 지움
DeleteConflict($nationID); DeleteConflict($nationID);
// 국명, 색깔 바꿈 국가 레벨 0, 성향리셋, 기술0 // 국명, 색깔 바꿈 국가 레벨 0, 성향리셋, 기술0
$db->update('nation', [ $db->update('nation', [
'name'=>$generalName, 'name'=>$generalName,
'color'=>'#330000', //TODO: 기본 방랑군색 별도 지정 'color'=>'#330000', //TODO: 기본 방랑군색 별도 지정
'level'=>0, 'level'=>0,
'type'=>0, 'type'=>'None',
'tech'=>0, 'tech'=>0,
'capital'=>0 'capital'=>0
], 'nation=%i', $nationID); ], 'nation=%i', $nationID);
$db->update('general', [ $db->update('general', [
'makelimit'=>12 'makelimit'=>12
], 'nation=%i', $nationID); ], 'nation=%i', $nationID);
$general->setVar('makelimit', 12); $general->setVar('makelimit', 12);
$general->setVar('officer_city', 0); $general->setVar('officer_city', 0);
$db->update('general', [ $db->update('general', [
'officer_level'=>1, 'officer_level'=>1,
'officer_city'=>0, 'officer_city'=>0,
], 'nation=%i AND officer_level < 12', $nationID); ], 'nation=%i AND officer_level < 12', $nationID);
$db->update('city', [ $db->update('city', [
'nation'=>0, 'nation'=>0,
'front'=>0, 'front'=>0,
'conflict'=>'{}' 'conflict'=>'{}'
], 'nation=%i', $nationID); ], 'nation=%i', $nationID);
$db->update('diplomacy', [ $db->update('diplomacy', [
'state'=>2, 'state'=>2,
'term'=>0, 'term'=>0,
], 'me=%i OR you=%i', $nationID, $nationID); ], 'me=%i OR you=%i', $nationID, $nationID);
refreshNationStaticInfo(); refreshNationStaticInfo();
$this->setResultTurn(new LastTurn(static::getName(), $this->arg)); $this->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->applyDB($db); $general->applyDB($db);
return true; return true;
} }
} }
+23 -83
View File
@@ -19,7 +19,8 @@ use function\sammo\{
CriticalRatioDomestic, CriticalRatioDomestic,
CriticalScoreEx, CriticalScoreEx,
tryUniqueItemLottery, tryUniqueItemLottery,
getAllNationStaticInfo getAllNationStaticInfo,
pickGeneralFromPool,
}; };
use \sammo\Constraint\Constraint; use \sammo\Constraint\Constraint;
@@ -134,7 +135,8 @@ class che_인재탐색 extends Command\GeneralCommand
$totalGenCnt = $db->queryFirstField('SELECT count(no) FROM general WHERE npc <= 2'); $totalGenCnt = $db->queryFirstField('SELECT count(no) FROM general WHERE npc <= 2');
$totalNpcCnt = $db->queryFirstField('SELECT count(`no`) FROM general WHERE 3 <= npc AND npc <= 4'); $totalNpcCnt = $db->queryFirstField('SELECT count(`no`) FROM general WHERE 3 <= npc AND npc <= 4');
$foundNpc = Util::randBool($this->calcFoundProp($env['maxgeneral'], $totalGenCnt, $totalNpcCnt)); $foundProp = $this->calcFoundProp($env['maxgeneral'], $totalGenCnt, $totalNpcCnt);
$foundNpc = Util::randBool($foundProp);
$logger = $general->getLogger(); $logger = $general->getLogger();
@@ -164,101 +166,39 @@ class che_인재탐색 extends Command\GeneralCommand
} }
//인간적으로 너무 길어서 끊었다! //인간적으로 너무 길어서 끊었다!
$exp = 200; $exp = 100 * (sqrt(1 / $foundProp) + 1);
$ded = 300; $ded = 150 * (sqrt(1 / $foundProp) + 1);
$pickTypeList = ['무' => 6, '지' => 6, '무지' => 3];
$pickType = Util::choiceRandomUsingWeight($pickTypeList);
$totalStat = GameConst::$defaultStatNPCTotal;
$minStat = GameConst::$defaultStatNPCMin;
$mainStat = GameConst::$defaultStatNPCMax - Util::randRangeInt(0, GameConst::$defaultStatNPCMin);
$otherStat = $minStat + Util::randRangeInt(0, Util::toInt(GameConst::$defaultStatNPCMin/2));
$subStat = $totalStat - $mainStat - $otherStat;
if ($subStat < $minStat) {
$subStat = $otherStat;
$otherStat = $minStat;
$mainStat = $totalStat - $subStat - $otherStat;
if ($mainStat) {
throw new \LogicException('기본 스탯 설정값이 잘못되어 있음');
}
}
$avgGen = $db->queryFirstRow(
'SELECT 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',
$nationID
);
$dexTotal = $avgGen['dex_t'];
if ($pickType == '무') {
$leadership = $subStat;
$strength = $mainStat;
$intel = $otherStat;
$dexVal = Util::choiceRandom([
[$dexTotal * 5 / 8, $dexTotal / 8, $dexTotal / 8, $dexTotal / 8],
[$dexTotal / 8, $dexTotal * 5 / 8, $dexTotal / 8, $dexTotal / 8],
[$dexTotal / 8, $dexTotal / 8, $dexTotal * 5 / 8, $dexTotal / 8],
]);
} else if ($pickType == '지') {
$leadership = $subStat;
$strength = $otherStat;
$intel = $mainStat;
$dexVal = [$dexTotal / 8, $dexTotal / 8, $dexTotal * 5 / 8, $dexTotal / 8];
} else {
$leadership = $otherStat;
$strength = $subStat;
$intel = $mainStat;
$dexVal = [$dexTotal / 4, $dexTotal / 4, $dexTotal / 4, $dexTotal / 4];
}
$leadership = Util::round($leadership);
$strength = Util::round($strength);
$intel = Util::round($intel);
$scoutType = "발견"; $scoutType = "발견";
$scoutLevel = 0;
$scoutNation = 0;
$age = Util::randRangeInt(20, 25); $age = Util::randRangeInt(20, 25);
$birthYear = $env['year'] - $age; $birthYear = $env['year'] - $age;
$deathYear = $env['year'] + Util::randRangeInt(10, 50); $deathYear = $env['year'] + Util::randRangeInt(10, 50);
$cityID = Util::choiceRandom(array_keys(\sammo\CityConst::all())); $avgGen = $db->queryFirstRow(
$newNPC = new \sammo\Scenario\NPC( 'SELECT avg(dedication) as ded,avg(experience) as exp,
Util::randRangeInt(1, 150), avg(dex1+dex2+dex3+dex4) as dex_t, avg(age) as age, avg(dex5) as dex5
\sammo\getRandGenName(), from general where npc < 5'
null,
$scoutNation,
$cityID,
$leadership,
$strength,
$intel,
$scoutLevel,
$birthYear,
$deathYear,
null,
null
); );
$newNPC->npc = 3;
$pickTypeList = ['무' => 6, '지' => 6, '무지' => 3];
$pickedNPC = pickGeneralFromPool($db, 0, 1)[0];
$newNPC = $pickedNPC->getGeneralBuilder();
$newNPC->setSpecial('None', 'None');
$newNPC->setNPCType(3);
$newNPC->setMoney(1000, 1000); $newNPC->setMoney(1000, 1000);
$newNPC->setExpDed($avgGen['exp'], $avgGen['ded']); $newNPC->setLifeSpan($birthYear, $deathYear);
$newNPC->setSpecYear( $newNPC->setSpecYear(
Util::round((GameConst::$retirementYear - $age) / 12) + $age, Util::round((GameConst::$retirementYear - $age) / 12) + $age,
Util::round((GameConst::$retirementYear - $age) / 6) + $age Util::round((GameConst::$retirementYear - $age) / 6) + $age
); );
$newNPC->setDex( $newNPC->fillRemainSpecAsRandom($pickTypeList, $avgGen, $env);
$dexVal[0],
$dexVal[1],
$dexVal[2],
$dexVal[3],
$avgGen['dex5']
);
$newNPC->build($this->env); $newNPC->build($this->env);
$npcName = $newNPC->realName; $pickedNPC->occupyGeneralName();
$npcName = $newNPC->getGeneralName();
$josaRa = JosaUtil::pick($npcName, '라'); $josaRa = JosaUtil::pick($npcName, '라');
$generalName = $general->getName(); $generalName = $general->getName();
+99 -98
View File
@@ -1,99 +1,100 @@
<?php <?php
namespace sammo\Command\General; namespace sammo\Command\General;
use \sammo\{ use \sammo\{
DB, Util, JosaUtil, DB, Util, JosaUtil,
General, General,
ActionLogger, ActionLogger,
GameConst, GameUnitConst, GameConst, GameUnitConst,
Command Command
}; };
class che_탈취 extends che_화계{ class che_탈취 extends che_화계{
static protected $actionName = '탈취'; static protected $actionName = '탈취';
static protected $statType = 'strength'; static protected $statType = 'strength';
static protected $injuryGeneral = false; static protected $injuryGeneral = false;
protected function affectDestCity(int $injuryCount){ protected function affectDestCity(int $injuryCount){
$general = $this->generalObj; $general = $this->generalObj;
$nationID = $general->getNationID(); $nationID = $general->getNationID();
$date = $general->getTurnTime($general::TURNTIME_HM); $date = $general->getTurnTime($general::TURNTIME_HM);
$logger = $general->getLogger(); $logger = $general->getLogger();
$destCity = $this->destCity; $destCity = $this->destCity;
$destCityName = $destCity['name']; $destCityName = $destCity['name'];
$destCityID = $destCity['city']; $destCityID = $destCity['city'];
$destNationID = $destCity['nation']; $destNationID = $destCity['nation'];
$commandName = $this->getName(); $commandName = $this->getName();
$db = DB::db(); $db = DB::db();
// 탈취 최대 400 * 8 // 탈취 최대 800 * 8 * sqrt(1 + (year - startyear) / 5) / 2
$gold = Util::randRangeInt(GameConst::$sabotageDamageMin, GameConst::$sabotageDamageMax) * $destCity['level']; $yearCoef = sqrt(1 + ($this->env['year'] - $this->env['startyear']) / 5) / 2;
$rice = Util::randRangeInt(GameConst::$sabotageDamageMin, GameConst::$sabotageDamageMax) * $destCity['level']; $gold = Util::randRangeInt(GameConst::$sabotageDamageMin, GameConst::$sabotageDamageMax) * $destCity['level'] * $yearCoef;
$rice = Util::randRangeInt(GameConst::$sabotageDamageMin, GameConst::$sabotageDamageMax) * $destCity['level'] * $yearCoef;
if($destCity['supply']){
[$destNationGold, $destNationRice] = $db->queryFirstList('SELECT gold,rice FROM nation WHERE nation=%i', $destNationID); if($destCity['supply']){
[$destNationGold, $destNationRice] = $db->queryFirstList('SELECT gold,rice FROM nation WHERE nation=%i', $destNationID);
$destNationGold -= $gold;
$destNationRice -= $rice; $destNationGold -= $gold;
$destNationRice -= $rice;
if($destNationGold < GameConst::$minNationalGold) {
$gold += $destNationGold - GameConst::$minNationalGold; if($destNationGold < GameConst::$minNationalGold) {
$destNationGold = GameConst::$minNationalGold; $gold += $destNationGold - GameConst::$minNationalGold;
} $destNationGold = GameConst::$minNationalGold;
if($destNationRice < GameConst::$minNationalRice) { }
$rice += $destNationRice - GameConst::$minNationalRice; if($destNationRice < GameConst::$minNationalRice) {
$destNationRice = GameConst::$minNationalRice; $rice += $destNationRice - GameConst::$minNationalRice;
} $destNationRice = GameConst::$minNationalRice;
}
$db->update('nation', [
'gold'=>$destNationGold, $db->update('nation', [
'rice'=>$destNationRice 'gold'=>$destNationGold,
], 'nation=%i', $destNationID); 'rice'=>$destNationRice
$db->update('city', [ ], 'nation=%i', $destNationID);
'state'=>34 $db->update('city', [
], 'city=%i', $destCityID); 'state'=>34
} ], 'city=%i', $destCityID);
else{ }
$db->update('city', [ else{
'comm'=>Util::valueFit($destCity['comm'] - $gold / 12, 0), $db->update('city', [
'agri'=>Util::valueFit($destCity['agri'] - $rice / 12, 0), 'comm'=>Util::valueFit($destCity['comm'] - $gold / 12, 0),
'state'=>34 'agri'=>Util::valueFit($destCity['agri'] - $rice / 12, 0),
], 'city=%i', $destCityID); 'state'=>34
} ], 'city=%i', $destCityID);
}
// 본국으로 일부 회수, 재야이면 본인이 전량 소유
if($nationID != 0) { // 본국으로 일부 회수, 재야이면 본인이 전량 소유
$db->update('nation', [ if($nationID != 0) {
'gold' => $db->sqleval('gold + %i', Util::round($gold * 0.7)), $db->update('nation', [
'rice' => $db->sqleval('rice + %i', Util::round($rice * 0.7)) 'gold' => $db->sqleval('gold + %i', Util::round($gold * 0.7)),
], 'nation=%i', $nationID); 'rice' => $db->sqleval('rice + %i', Util::round($rice * 0.7))
$general->increaseVar('gold', $gold - Util::round($gold * 0.7)); ], 'nation=%i', $nationID);
$general->increaseVar('rice', $rice - Util::round($rice * 0.7)); $general->increaseVar('gold', $gold - Util::round($gold * 0.7));
} else { $general->increaseVar('rice', $rice - Util::round($rice * 0.7));
$general->increaseVar('gold', $gold); } else {
$general->increaseVar('rice', $rice); $general->increaseVar('gold', $gold);
} $general->increaseVar('rice', $rice);
}
$db->update('city', [
'state'=>32, $db->update('city', [
'agri'=>$destCity['agri'], 'state'=>32,
'comm'=>$destCity['comm'] 'agri'=>$destCity['agri'],
], 'city=%i', $destCityID); 'comm'=>$destCity['comm']
], 'city=%i', $destCityID);
$goldText = number_format($gold);
$riceText = number_format($rice); $goldText = number_format($gold);
$riceText = number_format($rice);
$josaYi = JosaUtil::pick($destCityName, '이');
$logger->pushGlobalActionLog("<G><b>{$destCityName}</b></>에서 금과 쌀을 도둑맞았습니다."); $josaYi = JosaUtil::pick($destCityName, '이');
$josaYi = JosaUtil::pick($commandName, '이'); $logger->pushGlobalActionLog("<G><b>{$destCityName}</b></>에서 금과 쌀을 도둑맞았습니다.");
$logger->pushGeneralActionLog("<G><b>{$destCityName}</b></>에 {$commandName}{$josaYi} 성공했습니다. <1>$date</>"); $josaYi = JosaUtil::pick($commandName, '이');
$logger->pushGeneralActionLog("<G><b>{$destCityName}</b></>에 {$commandName}{$josaYi} 성공했습니다. <1>$date</>");
$logger->pushGeneralActionLog("금<C>{$goldText}</> 쌀<C>{$riceText}</>을 획득했습니다.", ActionLogger::PLAIN);
} $logger->pushGeneralActionLog("금<C>{$goldText}</> 쌀<C>{$riceText}</>을 획득했습니다.", ActionLogger::PLAIN);
}
} }
+13 -71
View File
@@ -152,81 +152,23 @@ class che_의병모집 extends Command\NationCommand
from general where nation=%i', from general where nation=%i',
$nationID $nationID
); );
$dexTotal = $avgGen['dex_t']; foreach(\sammo\pickGeneralFromPool($db, 0, $createGenCnt) as $pickedNPC){
$newNPC = $pickedNPC->getGeneralBuilder();
for (; $createGenIdx <= $lastCreatGenIdx; $createGenIdx++) { $newNPC->setCityID($general->getCityID());
$pickType = Util::choiceRandomUsingWeight($pickTypeList); $newNPC->setNationID($general->getNationID());
$totalStat = GameConst::$defaultStatNPCMax * 2 + 10; $newNPC->setSpecial('None', 'None');
$minStat = 10; $newNPC->setLifeSpan($env['year']-20, $env['year']+10);
$mainStat = GameConst::$defaultStatNPCMax - Util::randRangeInt(0, 10); $newNPC->setKillturn(Util::randRangeInt(64, 70));
//TODO: defaultStatNPCTotal, defaultStatNPCMin 추가 $newNPC->setNPCType(4);
$otherStat = $minStat + Util::randRangeInt(0, 5);
$subStat = $totalStat - $mainStat - $otherStat;
if ($subStat < $minStat) {
$subStat = $otherStat;
$otherStat = $minStat;
$mainStat = $totalStat - $subStat - $otherStat;
if ($mainStat) {
throw new \LogicException('기본 스탯 설정값이 잘못되어 있음');
}
}
if ($pickType == '무') {
$leadership = $subStat;
$strength = $mainStat;
$intel = $otherStat;
$dexVal = Util::choiceRandom([
[$dexTotal * 5 / 8, $dexTotal / 8, $dexTotal / 8, $dexTotal / 8],
[$dexTotal / 8, $dexTotal * 5 / 8, $dexTotal / 8, $dexTotal / 8],
[$dexTotal / 8, $dexTotal / 8, $dexTotal * 5 / 8, $dexTotal / 8],
]);
} else if ($pickType == '지') {
$leadership = $subStat;
$strength = $otherStat;
$intel = $mainStat;
$dexVal = [$dexTotal / 8, $dexTotal / 8, $dexTotal * 5 / 8, $dexTotal / 8];
} else {
$leadership = $otherStat;
$strength = $subStat;
$intel = $mainStat;
$dexVal = [$dexTotal / 4, $dexTotal / 4, $dexTotal / 4, $dexTotal / 4];
}
$leadership = Util::round($leadership);
$strength = Util::round($strength);
$intel = Util::round($intel);
$age = $avgGen['age'];
$newNPC = new \sammo\Scenario\NPC(
Util::randRangeInt(1, 150),
"의병장{$createGenIdx}",
null,
$nationID,
$general->getCityID(),
$leadership,
$strength,
$intel,
1,
$env['year'] - 20,
$env['year'] + 6,
null,
null
);
$newNPC->killturn = Util::randRangeInt(64, 70);
$newNPC->npc = 4;
$newNPC->setMoney(1000, 1000); $newNPC->setMoney(1000, 1000);
$newNPC->setExpDed($avgGen['exp'], $avgGen['ded']); $newNPC->setSpecYear(19, 19);
$newNPC->setDex( $newNPC->fillRemainSpecAsRandom($pickTypeList, $avgGen, $env);
$dexVal[0],
$dexVal[1],
$dexVal[2],
$dexVal[3],
$avgGen['dex5']
);
$newNPC->build($this->env); $newNPC->build($this->env);
$pickedNPC->occupyGeneralName();
} }
$gameStor->npccount = $lastCreatGenIdx; $gameStor->npccount = $lastCreatGenIdx;
@@ -176,7 +176,7 @@ class che_이호경식 extends Command\NationCommand
$broadcastMessage = "아국에 <M>{$commandName}</>{$josaYiCommand} 발동되었습니다."; $broadcastMessage = "아국에 <M>{$commandName}</>{$josaYiCommand} 발동되었습니다.";
$destNationGeneralList = $db->queryFirstColumn('SELECT no FROM general WHERE nation=%i AND no != %i', $nationID, $generalID); $destNationGeneralList = $db->queryFirstColumn('SELECT no FROM general WHERE nation=%i AND no != %i', $destNationID, $generalID);
foreach ($destNationGeneralList as $destNationGeneralID) { foreach ($destNationGeneralList as $destNationGeneralID) {
$destNationGeneralLogger = new ActionLogger($destNationGeneralID, $destNationID, $year, $month); $destNationGeneralLogger = new ActionLogger($destNationGeneralID, $destNationID, $year, $month);
$destNationGeneralLogger->pushGeneralActionLog($broadcastMessage, ActionLogger::PLAIN); $destNationGeneralLogger->pushGeneralActionLog($broadcastMessage, ActionLogger::PLAIN);
@@ -197,6 +197,10 @@ class che_이호경식 extends Command\NationCommand
'state' => 1, 'state' => 1,
], '(me = %i AND you = %i) OR (you = %i AND me = %i)', $nationID, $destNationID, $nationID, $destNationID); ], '(me = %i AND you = %i) OR (you = %i AND me = %i)', $nationID, $destNationID, $nationID, $destNationID);
\sammo\SetNationFront($nationID);
\sammo\SetNationFront($destNationID);
$this->setResultTurn(new LastTurn(static::getName(), $this->arg)); $this->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->applyDB($db); $general->applyDB($db);
+198 -195
View File
@@ -1,195 +1,198 @@
<?php <?php
namespace sammo\Command\Nation; namespace sammo\Command\Nation;
use\sammo\{ use\sammo\{
DB, DB,
Util, Util,
JosaUtil, JosaUtil,
General, General,
DummyGeneral, DummyGeneral,
ActionLogger, ActionLogger,
GameConst, GameConst,
LastTurn, LastTurn,
GameUnitConst, GameUnitConst,
Command, Command,
MessageTarget, MessageTarget,
DiplomaticMessage, DiplomaticMessage,
Message, Message,
}; };
use function\sammo\{ use function\sammo\{
getDomesticExpLevelBonus, getDomesticExpLevelBonus,
CriticalRatioDomestic, CriticalRatioDomestic,
CriticalScoreEx, CriticalScoreEx,
getAllNationStaticInfo, getAllNationStaticInfo,
getNationStaticInfo, getNationStaticInfo,
GetImageURL GetImageURL
}; };
use \sammo\Constraint\Constraint; use \sammo\Constraint\Constraint;
use \sammo\Constraint\ConstraintHelper; use \sammo\Constraint\ConstraintHelper;
class che_종전수락 extends Command\NationCommand class che_종전수락 extends Command\NationCommand
{ {
static protected $actionName = '종전 수락'; static protected $actionName = '종전 수락';
static public $reqArg = true; static public $reqArg = true;
protected function argTest(): bool protected function argTest(): bool
{ {
if ($this->arg === null) { if ($this->arg === null) {
return false; return false;
} }
if (!key_exists('destNationID', $this->arg)) { if (!key_exists('destNationID', $this->arg)) {
return false; return false;
} }
$destNationID = $this->arg['destNationID']; $destNationID = $this->arg['destNationID'];
if (!is_int($destNationID)) { if (!is_int($destNationID)) {
return false; return false;
} }
if ($destNationID < 1) { if ($destNationID < 1) {
return false; return false;
} }
if (!key_exists('destGeneralID', $this->arg)) { if (!key_exists('destGeneralID', $this->arg)) {
return false; return false;
} }
$destGeneralID = $this->arg['destGeneralID']; $destGeneralID = $this->arg['destGeneralID'];
if (!is_int($destGeneralID)) { if (!is_int($destGeneralID)) {
return false; return false;
} }
if ($destGeneralID <= 0) { if ($destGeneralID <= 0) {
return false; return false;
} }
if ($destGeneralID == $this->generalObj->getID()) { if ($destGeneralID == $this->generalObj->getID()) {
return false; return false;
} }
$this->arg = [ $this->arg = [
'destNationID' => $destNationID, 'destNationID' => $destNationID,
'destGeneralID' => $destGeneralID, 'destGeneralID' => $destGeneralID,
]; ];
return true; return true;
} }
protected function init() protected function init()
{ {
$general = $this->generalObj; $general = $this->generalObj;
$env = $this->env; $env = $this->env;
$relYear = $env['year'] - $env['startyear']; $relYear = $env['year'] - $env['startyear'];
$this->setCity(); $this->setCity();
$this->setNation(); $this->setNation();
$nationID = $this->nation['nation']; $nationID = $this->nation['nation'];
$this->permissionConstraints = [ $this->permissionConstraints = [
ConstraintHelper::AlwaysFail('예약 불가능 커맨드') ConstraintHelper::AlwaysFail('예약 불가능 커맨드')
]; ];
} }
protected function initWithArg() protected function initWithArg()
{ {
$destGeneral = General::createGeneralObjFromDB($this->arg['destGeneralID'], [], 1); $destGeneral = General::createGeneralObjFromDB($this->arg['destGeneralID'], [], 1);
$this->setDestGeneral($destGeneral); $this->setDestGeneral($destGeneral);
$this->setDestNation($this->arg['destNationID']); $this->setDestNation($this->arg['destNationID']);
$this->fullConditionConstraints = [ $this->fullConditionConstraints = [
ConstraintHelper::BeChief(), ConstraintHelper::BeChief(),
ConstraintHelper::NotBeNeutral(), ConstraintHelper::NotBeNeutral(),
ConstraintHelper::ExistsDestNation(), ConstraintHelper::ExistsDestNation(),
ConstraintHelper::ExistsDestGeneral(), ConstraintHelper::ExistsDestGeneral(),
ConstraintHelper::ReqDestNationValue('nation', '소속', '==', $this->destGeneralObj->getNationID(), '제의 장수가 국가 소속이 아닙니다'), ConstraintHelper::ReqDestNationValue('nation', '소속', '==', $this->destGeneralObj->getNationID(), '제의 장수가 국가 소속이 아닙니다'),
ConstraintHelper::AllowDiplomacyBetweenStatus( ConstraintHelper::AllowDiplomacyBetweenStatus(
[0, 1], [0, 1],
'상대국과 선포, 전쟁중이지 않습니다.' '상대국과 선포, 전쟁중이지 않습니다.'
), ),
]; ];
} }
public function canDisplay():bool{ public function canDisplay():bool{
return false; return false;
} }
public function getCost(): array public function getCost(): array
{ {
return [0, 0]; return [0, 0];
} }
public function getPreReqTurn(): int public function getPreReqTurn(): int
{ {
return 0; return 0;
} }
public function getPostReqTurn(): int public function getPostReqTurn(): int
{ {
return 0; return 0;
} }
public function getBrief(): string public function getBrief(): string
{ {
$commandName = $this->getName(); $commandName = $this->getName();
$destNationName = getNationStaticInfo($this->arg['destNationID'])['name']; $destNationName = getNationStaticInfo($this->arg['destNationID'])['name'];
return "{$destNationName}국과 종전 합의"; return "{$destNationName}국과 종전 합의";
} }
public function run(): bool public function run(): bool
{ {
if (!$this->hasFullConditionMet()) { if (!$this->hasFullConditionMet()) {
throw new \RuntimeException('불가능한 커맨드를 강제로 실행 시도'); throw new \RuntimeException('불가능한 커맨드를 강제로 실행 시도');
} }
$db = DB::db(); $db = DB::db();
$env = $this->env; $env = $this->env;
$general = $this->generalObj; $general = $this->generalObj;
$generalName = $general->getName(); $generalName = $general->getName();
$nation = $this->nation; $nation = $this->nation;
$nationID = $nation['nation']; $nationID = $nation['nation'];
$nationName = $nation['name']; $nationName = $nation['name'];
$destNation = $this->destNation; $destNation = $this->destNation;
$destNationID = $destNation['nation']; $destNationID = $destNation['nation'];
$destNationName = $destNation['name']; $destNationName = $destNation['name'];
$logger = $general->getLogger(); $logger = $general->getLogger();
$destLogger = $this->destGeneralObj->getLogger(); $destLogger = $this->destGeneralObj->getLogger();
$db->update( $db->update(
'diplomacy', 'diplomacy',
[ [
'state' => 2, 'state' => 2,
'term' => 0 'term' => 0
], ],
'(me=%i AND you=%i) OR (you=%i AND me=%i)', '(me=%i AND you=%i) OR (you=%i AND me=%i)',
$nationID, $nationID,
$destNationID, $destNationID,
$nationID, $nationID,
$destNationID $destNationID
); );
$josaYiGeneral = JosaUtil::pick($generalName, '이'); \sammo\SetNationFront($nationID);
$josaYiNation = JosaUtil::pick($nationName, '이'); \sammo\SetNationFront($destNationID);
$josaWa = JosaUtil::pick($destNationName, ''); $josaYiGeneral = JosaUtil::pick($generalName, '');
$logger->pushGeneralActionLog("<D><b>{$destNationName}</b></>{$josaWa} 종전에 합의했습니다.", ActionLogger::PLAIN); $josaYiNation = JosaUtil::pick($nationName, '이');
$logger->pushGeneralHistoryLog("<D><b>{$destNationName}</b></>{$josaWa} 종전 수락");
$josaWa = JosaUtil::pick($destNationName, '와');
$logger->pushGlobalActionLog("<Y>{$generalName}</>{$josaYiGeneral} <D><b>{$destNationName}</b></>{$josaWa} <M>종전 합의</> 하였습니다."); $logger->pushGeneralActionLog("<D><b>{$destNationName}</b></>{$josaWa} 종전 합의습니다.", ActionLogger::PLAIN);
$logger->pushGlobalHistoryLog("<Y><b>【종전】</b></><D><b>{$nationName}</b></>{$josaYiNation} <D><b>{$destNationName}</b></>{$josaWa} <M>종전 합의</> 하였습니다."); $logger->pushGeneralHistoryLog("<D><b>{$destNationName}</b></>{$josaWa} 종전 수락");
$logger->pushGlobalActionLog("<Y>{$generalName}</>{$josaYiGeneral} <D><b>{$destNationName}</b></>{$josaWa} <M>종전 합의</> 하였습니다.");
$josaWa = JosaUtil::pick($nationName, '와'); $logger->pushGlobalHistoryLog("<Y><b>【종전】</b></><D><b>{$nationName}</b></>{$josaYiNation} <D><b>{$destNationName}</b></>{$josaWa} <M>종전 합의</> 하였습니다.");
$destLogger->pushGeneralActionLog("<D><b>{$nationName}</b></>{$josaWa} 종전에 성공했습니다.", ActionLogger::PLAIN);
$destLogger->pushGeneralHistoryLog("<D><b>{$nationName}</b></>{$josaWa} 종전 성공");
$josaWa = JosaUtil::pick($nationName, '와');
$general->applyDB($db); $destLogger->pushGeneralActionLog("<D><b>{$nationName}</b></>{$josaWa} 종전에 성공했습니다.", ActionLogger::PLAIN);
$destLogger->flush(); $destLogger->pushGeneralHistoryLog("<D><b>{$nationName}</b></>{$josaWa} 종전 성공");
return true; $general->applyDB($db);
} $destLogger->flush();
}
return true;
}
}
@@ -199,7 +199,7 @@ class che_피장파장 extends Command\NationCommand{
$broadcastMessage = "아국에 <G><b>{$cmd->getName()}</b></> 전략의 <M>{$commandName}</>{$josaYiCommand} 발동되었습니다."; $broadcastMessage = "아국에 <G><b>{$cmd->getName()}</b></> 전략의 <M>{$commandName}</>{$josaYiCommand} 발동되었습니다.";
$destNationGeneralList = $db->queryFirstColumn('SELECT no FROM general WHERE nation=%i AND no != %i', $nationID, $generalID); $destNationGeneralList = $db->queryFirstColumn('SELECT no FROM general WHERE nation=%i AND no != %i', $destNationID, $generalID);
foreach($destNationGeneralList as $destNationGeneralID){ foreach($destNationGeneralList as $destNationGeneralID){
$destNationGeneralLogger = new ActionLogger($destNationGeneralID, $destNationID, $year, $month); $destNationGeneralLogger = new ActionLogger($destNationGeneralID, $destNationID, $year, $month);
$destNationGeneralLogger->pushGeneralActionLog($broadcastMessage, ActionLogger::PLAIN); $destNationGeneralLogger->pushGeneralActionLog($broadcastMessage, ActionLogger::PLAIN);
+2 -6
View File
@@ -29,18 +29,14 @@ class BattleGroundCity extends Constraint{
$this->tested = true; $this->tested = true;
$nationID = $this->general['nation']; $nationID = $this->general['nation'];
$destNationID = $this->city['nation']; $destNationID = $this->destCity['nation'];
if($destNationID == 0){ if($destNationID == 0){
return true; return true;
} }
if($this->arg && $destNationID == $nationID){
return true;
}
$db = DB::db(); $db = DB::db();
$diplomacy = $db->queryFirstField('SELECT state FROM diplomacy WHERE me = %i AND you = %i', $nationID, $destNationID); $diplomacy = $db->queryFirstField('SELECT state FROM diplomacy WHERE me = %i AND you = %i', $nationID, $destNationID);
if($diplomacy === 0){ if($diplomacy == 0){
return true; return true;
} }
+1 -1
View File
@@ -126,7 +126,7 @@ class ChangeCity extends \sammo\Event\Action{
if($op == '/' && $value == 0){ if($op == '/' && $value == 0){
throw new \InvalidArgumentException('0으로 나눌 수 없습니다.'); throw new \InvalidArgumentException('0으로 나눌 수 없습니다.');
} }
return DB::db()->sqleval('least(%b, greatest(0, ROUND($b %l %d, 0)))', $keyMax, $key, $op, $value); return DB::db()->sqleval('least(%b, greatest(0, ROUND(%b '.$op.' %i, 0)))', $keyMax, $key, $value);
} }
throw new \InvalidArgumentException('알 수 없는 패턴입니다.'); throw new \InvalidArgumentException('알 수 없는 패턴입니다.');
+25 -67
View File
@@ -2,6 +2,10 @@
namespace sammo\Event\Action; namespace sammo\Event\Action;
use \sammo\GameConst; use \sammo\GameConst;
use \sammo\Util; use \sammo\Util;
use \sammo\DB;
use function sammo\pickGeneralFromPool;
//기존 event_3.php //기존 event_3.php
class CreateManyNPC extends \sammo\Event\Action{ class CreateManyNPC extends \sammo\Event\Action{
protected $npcCount; protected $npcCount;
@@ -10,75 +14,32 @@ class CreateManyNPC extends \sammo\Event\Action{
$this->npcCount = $npcCount; $this->npcCount = $npcCount;
} }
protected function generateNPC($env){ protected function generateNPC($env, int $cnt){
$pickTypeList = ['무'=>1, '지'=>1]; $pickTypeList = ['무'=>1, '지'=>1];
$pickType = Util::choiceRandomUsingWeight($pickTypeList);
$totalStat = GameConst::$defaultStatNPCTotal;
$minStat = GameConst::$defaultStatNPCMin;
$mainStat = GameConst::$defaultStatNPCMax - Util::randRangeInt(0, GameConst::$defaultStatNPCMin);
$otherStat = $minStat + Util::randRangeInt(0, Util::toInt(GameConst::$defaultStatNPCMin/2));
$subStat = $totalStat - $mainStat - $otherStat;
if ($subStat < $minStat) {
$subStat = $otherStat;
$otherStat = $minStat;
$mainStat = $totalStat - $subStat - $otherStat;
if ($mainStat) {
throw new \LogicException('기본 스탯 설정값이 잘못되어 있음');
}
}
if($pickType == '무'){
$leadership = $subStat;
$strength = $mainStat;
$intel = $otherStat;
}
else if($pickType == '지'){
$leadership = $subStat;
$strength = $otherStat;
$intel = $mainStat;
}
else{
$leadership = $otherStat;
$strength = $subStat;
$intel = $mainStat;
}
$leadership = Util::round($leadership);
$strength = Util::round($strength);
$intel = Util::round($intel);
$age = Util::randRangeInt(20, 25); $age = Util::randRangeInt(20, 25);
$birthYear = $env['year'] - $age; $birthYear = $env['year'] - $age;
$deathYear = $env['year'] + Util::randRangeInt(10, 50); $deathYear = $env['year'] + Util::randRangeInt(10, 50);
$cityID = Util::choiceRandom(array_keys(\sammo\CityConst::all())); $result = [];
$newNPC = new \sammo\Scenario\NPC( foreach(pickGeneralFromPool(DB::db(), 0, $cnt) as $pickedNPC){
Util::randRangeInt(1, 150), $newNPC = $pickedNPC->getGeneralBuilder();
\sammo\getRandGenName(), $newNPC->setNationID(0)
null, ->setNPCType(3)
0, ->setMoney(1000, 1000)
$cityID, ->setExpDed(0, 0)
$leadership, ->setLifeSpan($birthYear, $deathYear);
$strength, if($newNPC->getStat()[0]===null){
$intel, $newNPC->fillRandomStat($pickTypeList);
0, }
$birthYear, $newNPC->fillRemainSpecAsZero($env);
$deathYear, $newNPC->build($env);
null, $pickedNPC->occupyGeneralName();
null $result[] = [
); $newNPC->getGeneralName(), $newNPC->getGeneralID()
$newNPC->npc = 3; ];
$newNPC->setMoney(1000, 1000); }
$newNPC->setExpDed(0, 0); return $result;
$newNPC->setSpecYear(
Util::round((GameConst::$retirementYear - $age) / 12) + $age,
Util::round((GameConst::$retirementYear - $age) / 6) + $age
);
$newNPC->build($env);
return [$newNPC->realName, $newNPC->generalID];
} }
@@ -86,10 +47,7 @@ class CreateManyNPC extends \sammo\Event\Action{
if($this->npcCount <= 0){ if($this->npcCount <= 0){
return [__CLASS__, []]; return [__CLASS__, []];
} }
$result = []; $result = $this->generateNPC($env, $this->npcCount);
foreach(Util::range($this->npcCount) as $idx){
$result[] = $this->generateNPC($env);
}
$logger = new \sammo\ActionLogger(0, 0, $env['year'], $env['month']); $logger = new \sammo\ActionLogger(0, 0, $env['year'], $env['month']);
$genCnt = count($result); $genCnt = count($result);
+13 -14
View File
@@ -3,7 +3,6 @@ namespace sammo\Event\Action;
//이전 RegNPC 함수를 EventAction으로 재구성 //이전 RegNPC 함수를 EventAction으로 재구성
class RegNPC extends \sammo\Event\Action{ class RegNPC extends \sammo\Event\Action{
private $npc; private $npc;
public function __construct( public function __construct(
@@ -21,21 +20,21 @@ class RegNPC extends \sammo\Event\Action{
$char = '', $char = '',
$text = '' $text = ''
){ ){
$this->npc = new \sammo\Scenario\NPC(
$affinity, return (new \sammo\Scenario\GeneralBuilder(
$name, $name,
0,
$picturePath, $picturePath,
$nationID, $nationID
$locatedCity, ))
$leadership, ->setCity($locatedCity)
$strength, ->setStat($leadership, $strength, $intel)
$intel, ->setEgo($ego)
$birth, ->setSpecialSingle($char)
$death, ->setNPCText($text?:'')
$ego, ->setAffinity($affinity)
$char, ->setLifeSpan($birth, $death)
$text?:'' ->fillRemainSpecAsZero();
);
} }
public function run($env=null){ public function run($env=null){
+13 -14
View File
@@ -20,22 +20,21 @@ class RegNeutralNPC extends \sammo\Event\Action{
$char = '', $char = '',
$text = '' $text = ''
){ ){
$this->npc = new \sammo\Scenario\NPC( return (new \sammo\Scenario\GeneralBuilder(
$affinity,
$name, $name,
0,
$picturePath, $picturePath,
$nationID, $nationID
$locatedCity, ))
$leadership, ->setCity($locatedCity)
$strength, ->setStat($leadership, $strength, $intel)
$intel, ->setEgo($ego)
$birth, ->setSpecialSingle($char)
$death, ->setNPCText($text?:'')
$ego, ->setAffinity($affinity)
$char, ->setLifeSpan($birth, $death)
$text?:'' ->setNPCType(6)
); ->fillRemainSpecAsZero();
$this->npc = 6;
} }
public function run($env=null){ public function run($env=null){
+4 -1
View File
@@ -48,7 +48,7 @@ class GameConstBase
/** @var int 계략시 최소 수치 감소량*/ /** @var int 계략시 최소 수치 감소량*/
public static $sabotageDamageMin = 100; public static $sabotageDamageMin = 100;
/** @var int 계략시 최대 수치 감소량*/ /** @var int 계략시 최대 수치 감소량*/
public static $sabotageDamageMax = 500; public static $sabotageDamageMax = 800;
/** @var string 기본 배경색깔 푸른색*/ /** @var string 기본 배경색깔 푸른색*/
public static $basecolor = "#000044"; public static $basecolor = "#000044";
/** @var string 기본 배경색깔 초록색*/ /** @var string 기본 배경색깔 초록색*/
@@ -339,6 +339,9 @@ class GameConstBase
]; ];
public static $retirementYear = 80; public static $retirementYear = 80;
public static $targetGeneralPool = 'RandomNameGeneral';
public static $generalPoolAllowOption = ['stat', 'ego', 'picture'];
public static $randGenFirstName = [ public static $randGenFirstName = [
'가', '간', '감', '강', '고', '공', '공손', '곽', '관', '괴', '교', '금', '노', '뇌', '능', '도', '동', '두', '가', '간', '감', '강', '고', '공', '공손', '곽', '관', '괴', '교', '금', '노', '뇌', '능', '도', '동', '두',
'등', '마', '맹', '문', '미', '반', '방', '부', '비', '사', '사마', '서', '설', '성', '소', '손', '송', '순', '등', '마', '맹', '문', '미', '반', '방', '부', '비', '사', '사마', '서', '설', '성', '소', '손', '송', '순',
+6 -1
View File
@@ -569,7 +569,12 @@ class General implements iAction{
} }
$logger->flush(); $logger->flush();
} }
$db->update('select_pool', [
'general_id'=>null,
'owner'=>null,
'reserved_until'=>null,
], 'general_id=%i', $generalID);
$db->delete('general', 'no=%i', $generalID); $db->delete('general', 'no=%i', $generalID);
$db->delete('general_turn', 'general_id=%i', $generalID); $db->delete('general_turn', 'general_id=%i', $generalID);
+26 -2
View File
@@ -1723,7 +1723,15 @@ class GeneralAI
return null; return null;
} }
$db = DB::db();
$lowTargetNations = Util::convertArrayToSetLike($db->queryFirstColumn(
'SELECT DISTINCT(me) FROM diplomacy WHERE me != %i AND state IN %li',
$nationID,
[0, 1]
));
$nations = []; $nations = [];
$warNations = [];
foreach(getAllNationStaticInfo() as $destNation){ foreach(getAllNationStaticInfo() as $destNation){
if($destNation['level'] == 0){ if($destNation['level'] == 0){
continue; continue;
@@ -1733,10 +1741,26 @@ class GeneralAI
if (!isNeighbor($nationID, $destNationID)) { if (!isNeighbor($nationID, $destNationID)) {
continue; continue;
} }
$nations[$destNationID] = 1 / sqrt($destNationPower + 1);
if(!key_exists($destNationID, $lowTargetNations)){
$nations[$destNationID] = 1 / sqrt($destNationPower + 1);
}
else{
$warNations[$destNationID] = 1 / sqrt($destNationPower + 1);
}
} }
if (!$nations) { if (!$nations) {
return null; if(!$warNations){
return null;
}
if(!$lowTargetNations){
return null;
}
if(Util::randBool(1/count($lowTargetNations))){
return null;
}
$nations = $warNations;
} }
$cmd = buildNationCommandClass('che_선전포고', $this->general, $this->env, $lastTurn, [ $cmd = buildNationCommandClass('che_선전포고', $this->general, $this->env, $lastTurn, [
+1849
View File
@@ -0,0 +1,1849 @@
{
"columns": ["generalName", "leadership", "strength", "intel", "specialDomestic", "dex", "imgsvr", "picture"],
"data": [
["⑨탈곡기", 69, 12, 80, "che_event_징병", [12066, 27302, 29463, 307356, 16448], 1, "9ed8be6.gif?=20190417"],
["⑤사토미나미", 64, 76, 9, "che_event_격노", [120294, 394511, 53112, 109495, 14523], 1, "dc6174a.jpg?=20181111"],
["⑮제노에이지", 70, 10, 88, "che_event_척사", [30833, 35100, 26918, 322818, 26489], 1, "ddd1fd7.jpg?=20190320"],
["㉖병리학적자세", 72, 15, 93, "che_event_집중", [2670, 3953, 12338, 193185, 16524], 1, "3679089.jpg?=20180629"],
["㉖진충 장창영", 73, 15, 88, "che_event_신중", [3425, 0, 25734, 132488, 10355], 0, "default.jpg"],
["⑨수장", 77, 81, 10, "che_event_무쌍", [30407, 48709, 527680, 124849, 30458], 1, "897dde2.png?=20190411"],
["⑧미아뇌미아", 73, 88, 10, "che_event_견고", [19423, 37715, 328893, 86796, 3955], 0, "default.jpg"],
["⑬오징어", 72, 83, 10, "che_event_척사", [44553, 271485, 26964, 40191, 24728], 1, "8cab968.png?=20190826"],
["㉖돼지", 78, 88, 15, "che_event_위압", [343248, 7128, 29621, 56379, 28202], 1, "b0ce79d.png?=20200721"],
["⑬만샘", 69, 82, 10, "che_event_견고", [4997, 2422, 120127, 21479, 31194], 1, "4a206a1.jpg?=20181122"],
["③건전한촉수병사", 75, 82, 10, "che_event_척사", [70841, 763849, 52226, 120536, 34635], 1, "438ec73.png?=20180827"],
["㉒바보", 70, 10, 83, "che_event_집중", [13844, 26294, 21207, 381343, 41219], 1, "3efe080.gif?=20200425"],
["㉕건방진노예", 66, 10, 78, "che_event_신중", [71873, 46075, 31281, 645604, 28140], 0, "default.jpg"],
["⑥지용갓", 79, 71, 10, "che_event_무쌍", [67819, 8353, 8991, 16235, 2242], 1, "1f3a6e6.png?=20180926"],
["⑥기술머신", 68, 10, 84, "che_event_징병", [2566, 33904, 19642, 113599, 12616], 0, "default.jpg"],
["⑩다유", 78, 57, 9, "che_event_저격", [0, 0, 0, 0, 382659], 1, "f489a2a.jpg?=20181226"],
["⑲카오스피닉스", 69, 10, 85, "che_event_집중", [19178, 5186, 32314, 199666, 14066], 1, "7f80b2f.jpg?=20190715"],
["⑬광삼이", 75, 10, 80, "che_event_척사", [0, 12441, 16502, 101363, 6710], 1, "69fc07c.jpg?=20180926"],
["⑦김채원", 71, 9, 80, "che_event_환술", [78132, 91448, 149393, 850221, 17856], 1, "6e10dd5.png?=20190126"],
["④취한 말랑말", 71, 86, 10, "che_event_무쌍", [3685, 5291, 376679, 93323, 14462], 1, "6094d05.jpg?=20180823"],
["④나아가다", 70, 86, 11, "che_event_무쌍", [7959, 34075, 262397, 48795, 30785], 0, "default.jpg"],
["㉖프레이이시스", 88, 76, 15, "che_event_궁병", [44142, 199714, 8520, 36716, 21812], 1, "b723845.jpg?=20200716"],
["⑦당나귀", 70, 68, 9, "che_event_견고", [227160, 8034, 34626, 151813, 7032], 1, "27e9dc8.jpg?=20190126"],
["⑦태극권", 78, 80, 10, "che_event_위압", [19166, 58452, 452711, 85597, 13187], 1, "e7183a7.jpg?=20181101"],
["⑤레이널드", 66, 75, 9, "che_event_징병", [470721, 39021, 110384, 139118, 20949], 1, "39784e5.jpg?=20181119"],
["㉕rwitch", 70, 10, 78, "che_event_신중", [49944, 27761, 14294, 225622, 10598], 1, "dcc638d.jpg?=20190725"],
["㉕쿠로", 80, 62, 10, "che_event_척사", [109136, 754022, 27120, 118731, 8779], 1, "55dc7c0.gif?=20200604"],
["⑤아유", 63, 9, 76, "che_event_징병", [71632, 13272, 57668, 353287, 20061], 1, "13333bf.jpg?=20181025"],
["⑤사로나이트광산노예", 64, 9, 75, "che_event_신중", [51428, 22312, 83340, 409816, 16341], 1, "3b864b.jpg?=20181029"],
["④헨젤과 그레텔", 70, 86, 11, "che_event_위압", [24800, 205402, 14520, 27234, 24838], 0, "default.jpg"],
["⑳리무루", 70, 10, 83, "che_event_반계", [11891, 64290, 28360, 221298, 20815], 1, "c40f9f7.jpg?=20200222"],
["⑨고통의가시", 84, 10, 73, "che_event_필살", [44271, 19457, 28877, 350600, 23753], 1, "f554ad6.gif?=20190402"],
["⑧오로라", 72, 88, 11, "che_event_척사", [14496, 153379, 13494, 50367, 9522], 1, "2c42d8a.jpg?=20190314"],
["㉙카이스트", 73, 15, 85, "che_event_척사", [7111, 4589, 2954, 99781, 12445], 1, "9361ef8.jpg?=20180907"],
["③페이트", 81, 42, 41, "che_event_무쌍", [1907, 9788, 7036, 14153, 830532], 1, "6b8a0d8.jpg?=20180807"],
["②조조", 74, 10, 87, "che_event_저격", [51367, 84856, 85836, 416202, 32660], 1, "20c3e40.jpg?=20180723"],
["⑦하야함", 64, 9, 82, "che_event_신산", [66175, 18423, 61422, 555881, 20891], 0, "default.jpg"],
["㉔만샘", 71, 10, 83, "che_event_신중", [15125, 16130, 10306, 211417, 29217], 1, "4a206a1.jpg?=20181122"],
["⑬아오바", 68, 10, 86, "che_event_저격", [21221, 8291, 20955, 293615, 25369], 1, "3651a80.jpg?=20190815"],
["④네이미", 83, 72, 11, "che_event_징병", [80581, 72327, 97231, 100303, 6604], 0, "default.jpg"],
["⑩양양", 83, 57, 9, "che_event_저격", [0, 0, 0, 0, 825914], 0, "default.jpg"],
["⑩카니아", 81, 10, 9, "che_event_저격", [0, 0, 0, 0, 382507], 1, "ff65ff7.jpg?=20190520"],
["⑭아메스", 71, 11, 84, "che_event_필살", [49869, 25555, 17450, 495585, 43482], 1, "a889885.jpg?=20190905"],
["②시타오 미우", 86, 75, 10, "che_event_격노", [30707, 123520, 586021, 216726, 21916], 1, "ca834c3.jpg?=20180723"],
["⑰보스곰", 70, 11, 82, "che_event_집중", [18515, 19364, 6689, 182243, 8353], 1, "773556e.gif?=20190822"],
["㉙마왕", 71, 85, 17, "che_event_저격", [0, 10033, 112335, 25714, 14310], 1, "f7358b.jpg?=20200822"],
["⑨콧코로", 87, 71, 10, "che_event_척사", [75273, 403453, 16584, 114760, 21249], 1, "1c20687.png?=20190410"],
["⑳돌아온너구리", 72, 11, 87, "che_event_반계", [16455, 19708, 23120, 961863, 25311], 1, "b90cb6f.jpg?=20200307"],
["⑨이수", 70, 85, 10, "che_event_징병", [18047, 34335, 384104, 139097, 16896], 0, "default.jpg"],
["③장수는랜덤", 82, 72, 10, "che_event_저격", [34971, 139642, 51909, 44252, 3833], 0, "default.jpg"],
["⑦우양우", 69, 81, 9, "che_event_위압", [123772, 1053319, 85606, 223038, 50266], 1, "2381a44.jpg?=20190227"],
["⑩수장", 82, 59, 9, "che_event_저격", [0, 0, 4352, 369, 566867], 1, "5dca65b.jpg?=20190510"],
["㉒메리레녹스", 15, 82, 67, "che_event_필살", [2114, 15028, 125743, 36260, 4538], 1, "cf65bb3.jpg?=20200418"],
["⑨의리", 72, 84, 10, "che_event_돌격", [67642, 38794, 417181, 115711, 24007], 1, "ec56615.png?=20190412"],
["①망포", 77, 77, 10, "che_event_징병", [54497, 12612, 280281, 74044, 40149], 1, "bc427b1.jpg?=20180713"],
["⑬작은달", 74, 11, 81, "che_event_신중", [14904, 7585, 13167, 185480, 2421], 0, "default.jpg"],
["㉖개미호랑2", 73, 90, 15, "che_event_견고", [288, 0, 93742, 6059, 5087], 1, "9e0429e.jpg?=20200313"],
["⑪오야코돈", 84, 10, 66, "che_event_징병", [24370, 25967, 16362, 245597, 7436], 0, "default.jpg"],
["⑬장손신희", 69, 10, 86, "che_event_귀병", [10741, 10967, 22591, 126547, 6602], 1, "e7a5bde.jpg?=20190329"],
["①돌려돌려돌림판", 73, 10, 84, "che_event_필살", [45091, 105611, 63987, 669570, 23342], 0, "default.jpg"],
["②그저늅늅", 73, 10, 89, "che_event_저격", [37299, 99655, 134493, 511159, 27544], 1, "6d750a7.jpg?=20180727"],
["㉗DDDD", 86, 15, 79, "che_event_신산", [7092, 17438, 43824, 429534, 6462], 1, "a1ad420.jpg?=20200425"],
["④오니즈카", 70, 85, 11, "che_event_무쌍", [32187, 49027, 623233, 132977, 47681], 1, "ca0b15e.gif?=20181003"],
["④늘모", 72, 82, 11, "che_event_필살", [41572, 19959, 280942, 60726, 26062], 1, "e7c163.png?=20180801"],
["㉖창모", 76, 15, 89, "che_event_집중", [40734, 7540, 9892, 203633, 18165], 1, "43193f0.jpg?=20200716"],
["⑨밀리아 레이지", 71, 11, 85, "che_event_저격", [35676, 50476, 34660, 284472, 13483], 1, "d30881.jpg?=20190430"],
["㉙빼빼로", 74, 86, 15, "che_event_돌격", [62472, 49336, 102711, 34245, 39102], 1, "5d0c1e1.png?=20201111"],
["⑥행복했으면좋겠어", 71, 10, 83, "che_event_필살", [47597, 42923, 33901, 346748, 14100], 0, "default.jpg"],
["㉓평민킬러", 73, 10, 89, "che_event_집중", [63098, 43476, 29417, 844603, 47081], 1, "fb23a32.jpg?=20190904"],
["⑥캐로", 83, 67, 10, "che_event_격노", [56226, 8253, 20368, 23984, 2074], 0, "default.jpg"],
["⑤랜덤맛달팽이", 69, 88, 10, "che_event_격노", [42778, 68822, 2045, 21277, 4591], 1, "fb0d354.jpg?=20180629"],
["⑦심심", 68, 79, 9, "che_event_무쌍", [41316, 43117, 538329, 221739, 22335], 0, "default.jpg"],
["㉑평민킬러", 69, 10, 86, "che_event_신산", [17249, 10020, 17188, 244496, 21336], 1, "fb23a32.jpg?=20190904"],
["⑤기술만딴거시킴하야", 62, 9, 77, "che_event_징병", [35186, 31487, 40931, 229698, 385], 0, "default.jpg"],
["㉗아리아", 73, 15, 86, "che_event_집중", [13320, 10692, 7100, 166331, 2240], 1, "f7358b.jpg?=20200822"],
["⑪수장", 70, 10, 86, "che_event_집중", [11534, 31540, 10081, 251307, 14906], 1, "b9b784a.jpg?=20190521"],
["⑬아르르 나쟈", 67, 10, 86, "che_event_척사", [18958, 26620, 11302, 310352, 35137], 1, "fc45711.jpg?=20190813"],
["⑥미아", 81, 73, 10, "che_event_무쌍", [7429, 24293, 233314, 36299, 26380], 1, "19ebd2b.jpg?=20181127"],
["⑫네이미", 86, 10, 73, "che_event_저격", [64624, 50349, 38151, 437873, 73914], 0, "default.jpg"],
["㉘그저늅늅", 74, 16, 94, "che_event_집중", [29189, 40126, 16335, 207133, 26108], 1, "5cedbb3.jpg?=20190817"],
["⑦한서진", 75, 79, 9, "che_event_돌격", [82482, 152047, 1950450, 330586, 67134], 1, "53f1ebd.jpg?=20190221"],
["⑰외심장", 68, 11, 81, "che_event_저격", [0, 16392, 17309, 143792, 18492], 1, "36110cd.jpg?=20180826"],
["⑪Radon", 87, 70, 10, "che_event_위압", [34067, 69241, 430748, 164549, 10316], 1, "55ad2a4.png?=20190703"],
["⑱지바", 87, 72, 11, "che_event_의술", [12719, 58657, 855054, 128490, 72336], 1, "6b57eee.gif?=20191225"],
["⑳정채연", 69, 83, 10, "che_event_견고", [11469, 42765, 298862, 33741, 33835], 1, "9705097.jpg?=20191001"],
["⑮사스케", 71, 87, 10, "che_event_저격", [563427, 18874, 76929, 97725, 32075], 1, "986348a.jpg?=20190815"],
["㉓카오스피닉스", 76, 10, 86, "che_event_반계", [70496, 92823, 46881, 670985, 21305], 1, "7f80b2f.jpg?=20190715"],
["⑫꼬리주세요", 68, 83, 10, "che_event_격노", [42603, 100423, 4058, 51466, 1350], 1, "e068502.jpg?=20190725"],
["①물자조달쟁이", 71, 10, 83, "che_event_필살", [16354, 49134, 67257, 316348, 34250], 1, "3679089.jpg?=20180629"],
["⑪이시리스", 72, 11, 86, "che_event_신산", [60260, 73608, 37067, 627605, 24308], 0, "default.jpg"],
["③코시미즈 사치코", 72, 10, 85, "che_event_징병", [13834, 59966, 63614, 426330, 33482], 1, "9e501a.jpg?=20180908"],
["⑩병리학적자세", 64, 9, 78, "che_event_저격", [0, 0, 0, 41371, 630303], 1, "3679089.jpg?=20180629"],
["⑭라피스라쥴리", 71, 10, 85, "che_event_환술", [16954, 4260, 14882, 147116, 18215], 0, "default.jpg"],
["㉗카이스트", 77, 15, 88, "che_event_귀병", [44185, 31197, 24729, 378695, 18448], 1, "9361ef8.jpg?=20180907"],
["⑦자무카", 63, 9, 75, "che_event_필살", [19541, 9842, 45793, 414027, 14627], 0, "default.jpg"],
["⑭구미호", 86, 67, 10, "che_event_무쌍", [0, 0, 17413, 6313, 207000], 1, "8bb1f0e.gif?=20190920"],
["㉒마검", 69, 10, 81, "che_event_신중", [0, 17799, 31869, 254581, 3714], 0, "default.jpg"],
["⑭독타맨", 71, 12, 81, "che_event_저격", [46531, 28118, 39184, 259310, 7580], 1, "8a7c8cb.png?=20190908"],
["⑭화신주유", 71, 86, 10, "che_event_징병", [31448, 73215, 480282, 116607, 41044], 1, "15d60d3.jpg?=20190902"],
["㉒문중", 83, 69, 10, "che_event_징병", [11130, 44446, 55949, 45412, 289305], 1, "47d367b.jpg?=20200423"],
["⑨미야와키 사쿠라", 72, 10, 87, "che_event_격노", [48886, 51927, 21151, 374378, 19392], 1, "34cff5.png?=20190411"],
["⑨잔느얼터", 75, 10, 78, "che_event_징병", [23336, 33119, 77850, 365223, 2547], 1, "6a00940.jpg?=20190416"],
["①리안", 70, 10, 84, "che_event_집중", [9269, 21474, 5739, 112015, 24221], 1, "ee5bdbe.jpg?=20180701"],
["④몬스터볼", 80, 10, 73, "che_event_귀병", [73965, 30754, 34570, 147996, 11187], 1, "5249d93.jpg?=20180920"],
["⑱땅땅이", 84, 75, 10, "che_event_척사", [83217, 914271, 42441, 178821, 140063], 1, "99cd27f.gif?=20190606"],
["⑦갓드오브갓크", 68, 9, 78, "che_event_징병", [103404, 81444, 51333, 895043, 28267], 0, "default.jpg"],
["①네겝", 80, 74, 10, "che_event_위압", [20766, 151448, 110818, 53177, 14122], 1, "734cbaf.jpg?=20180629"],
["①이빌라이져", 69, 84, 10, "che_event_징병", [32806, 208458, 7833, 39657, 24775], 0, "default.jpg"],
["③천괴금", 87, 70, 10, "che_event_돌격", [521270, 33837, 123408, 112940, 52119], 1, "f10e3d9.png?=20180702"],
["㉕김 신", 65, 10, 79, "che_event_집중", [104056, 39683, 38908, 578257, 12852], 1, "9fd757a.gif?=20200602"],
["⑤뭐지", 62, 9, 78, "che_event_환술", [62280, 8354, 46707, 334569, 22150], 0, "default.jpg"],
["③BB", 73, 9, 82, "che_event_징병", [72223, 38600, 142453, 308997, 9039], 1, "2bf3a09.jpg?=20180823"],
["⑰짜냥이은하", 68, 10, 83, "che_event_저격", [0, 17237, 6965, 121973, 20673], 1, "f1ae17a.jpg?=20191121"],
["㉙껄룩", 74, 85, 16, "che_event_저격", [106366, 5100, 0, 21741, 20446], 0, "default.jpg"],
["③으앙쥬금", 69, 10, 82, "che_event_저격", [12098, 6366, 54111, 114435, 0], 0, "default.jpg"],
["⑪북오더", 70, 84, 10, "che_event_필살", [26481, 204763, 2980, 51762, 19395], 1, "4939af6.gif?=20190609"],
["③모라스", 72, 82, 11, "che_event_위압", [110373, 496492, 104955, 112526, 37253], 0, "default.jpg"],
["⑦진리", 76, 9, 71, "che_event_신산", [41450, 29904, 81247, 596107, 11971], 1, "ac7abfd.jpg?=20190304"],
["⑩김기사", 77, 9, 57, "che_event_저격", [0, 1440, 1331, 0, 227796], 1, "8996332.jpg?=20190315"],
["⑩땅땅이", 84, 32, 33, "che_event_저격", [0, 0, 0, 0, 755483], 1, "99cd27f.gif?=20190606"],
["⑱임사영", 69, 10, 85, "che_event_환술", [10512, 10675, 19954, 167913, 6599], 1, "d5dc381.gif?=20190719"],
["④아노리엔", 69, 83, 10, "che_event_돌격", [145314, 6307, 19575, 57695, 8624], 0, "default.jpg"],
["④삼남매엄마", 72, 10, 81, "che_event_신산", [43189, 22613, 16437, 140446, 8310], 0, "default.jpg"],
["⑫USB", 73, 10, 90, "che_event_환술", [7103, 19575, 7369, 235149, 13518], 1, "ee1c9bb.png?=20190724"],
["㉗민토의속마음", 75, 16, 91, "che_event_신중", [16200, 23263, 5382, 401151, 4961], 1, "e610ff7.gif?=20200813"],
["㉓슬라임", 85, 11, 76, "che_event_신산", [42817, 45770, 28685, 298605, 6343], 0, "default.jpg"],
["④미아", 84, 72, 10, "che_event_격노", [31525, 56587, 464741, 122044, 21784], 1, "4bc280.jpg?=20180928"],
["⑤꿀잠", 66, 9, 75, "che_event_척사", [21658, 43997, 52341, 294593, 21948], 0, "default.jpg"],
["⑦삼남매엄마", 68, 80, 9, "che_event_저격", [107623, 600187, 65903, 187226, 18331], 0, "default.jpg"],
["②천괴금", 18, 84, 66, "che_event_견고", [50749, 57903, 106604, 23124, 9462], 1, "f10e3d9.png?=20180702"],
["⑧後唐 이존욱", 71, 87, 11, "che_event_징병", [185604, 12082, 57933, 65980, 4613], 1, "d6243ee.png?=20190318"],
["①마르", 72, 11, 81, "che_event_신중", [6329, 26749, 54384, 277444, 31517], 1, "3da8a49.jpg?=20180417"],
["⑬베이비소울", 82, 73, 10, "che_event_견고", [230121, 7083, 12067, 49111, 24169], 1, "7081d76.jpg?=20190815"],
["㉕너튜브", 66, 74, 10, "che_event_위압", [52091, 403138, 51218, 98799, 11904], 1, "758baa7.png?=20200604"],
["④아스톨포", 85, 69, 10, "che_event_격노", [36712, 58521, 302369, 60007, 30688], 1, "e4187ba.png?=20180921"],
["②삼남매엄마", 78, 86, 10, "che_event_위압", [42973, 1314344, 92685, 185252, 69135], 0, "default.jpg"],
["⑨knot", 70, 10, 83, "che_event_척사", [5900, 16468, 50574, 272492, 31237], 0, "default.jpg"],
["⑫타나고", 71, 10, 88, "che_event_척사", [28707, 28597, 13419, 410646, 27977], 0, "default.jpg"],
["⑩코코로", 81, 9, 59, "che_event_저격", [0, 0, 0, 0, 649435], 1, "cd05b08.jpg?=20190405"],
["⑧의리", 72, 83, 10, "che_event_보병", [69696, 193146, 73782, 63784, 5145], 1, "7781b99.jpg?=20190208"],
["⑤제노에이지", 64, 9, 77, "che_event_척사", [36402, 20985, 55806, 466946, 23361], 1, "af4fec8.png?=20180818"],
["⑪륜", 91, 11, 11, "che_event_필살", [5759, 4925, 3378, 22723, 268931], 1, "8c97e55.jpg?=20190627"],
["⑧다유", 82, 76, 10, "che_event_격노", [25375, 17820, 99509, 14090, 0], 1, "f489a2a.jpg?=20181226"],
["⑤나레이터킬러", 76, 85, 10, "che_event_무쌍", [472558, 101666, 138447, 207689, 14561], 0, "default.jpg"],
["⑤코우치 카에데", 69, 10, 80, "che_event_필살", [22084, 20595, 15855, 155083, 13891], 0, "default.jpg"],
["⑤마헤", 66, 9, 74, "che_event_저격", [52441, 38100, 72327, 335229, 2858], 1, "b763c2b.jpg?=20181030"],
["⑪개꿀", 68, 82, 10, "che_event_격노", [19641, 112569, 4288, 33032, 566], 1, "5b0cf23.jpg?=20190625"],
["㉙수장", 84, 76, 15, "che_event_필살", [40848, 170042, 5282, 36200, 36530], 1, "2a0afd0.jpg?=20201116"],
["㉓카이스트", 74, 10, 90, "che_event_신산", [91890, 65253, 43139, 1103338, 46718], 1, "9361ef8.jpg?=20180907"],
["⑦くま", 69, 9, 78, "che_event_신산", [48593, 87456, 110447, 792291, 27094], 1, "7c91370.jpg?=20190125"],
["⑧포트리스3패왕전", 72, 10, 88, "che_event_신산", [47334, 57935, 76625, 542159, 60865], 1, "e32fd7f.jpg?=20190314"],
["④사무엘", 71, 84, 10, "che_event_무쌍", [48137, 373281, 38488, 106864, 48046], 1, "63dc452.gif?=20181007"],
["⑰카오스피닉스", 68, 10, 85, "che_event_격노", [7023, 5005, 37197, 305666, 40237], 1, "7f80b2f.jpg?=20190715"],
["⑨∵∴∵∴∵∴∵∴∵", 71, 86, 10, "che_event_돌격", [363918, 18088, 46544, 69087, 67576], 1, "6eeb68b.jpg?=20190426"],
["⑭카이스트", 69, 10, 82, "che_event_징병", [27264, 28439, 17789, 299287, 25189], 1, "9361ef8.jpg?=20180907"],
["⑦이드", 69, 79, 9, "che_event_궁병", [96782, 903159, 65095, 225631, 22495], 1, "5e36874.jpg?=20190126"],
["㉘Akaya", 75, 15, 92, "che_event_신중", [13763, 17503, 14681, 228950, 11775], 0, "default.jpg"],
["⑮모기", 79, 11, 78, "che_event_집중", [13922, 26086, 44434, 247837, 14501], 1, "e5ab704.jpg?=20190926"],
["⑫광삼이", 77, 10, 81, "che_event_저격", [41662, 26088, 57286, 399158, 22107], 1, "69fc07c.jpg?=20180926"],
["④사이토", 69, 82, 10, "che_event_보병", [232961, 15823, 38083, 55895, 13744], 1, "55bc1af.png?=20180923"],
["②만샘", 81, 66, 11, "che_event_격노", [17847, 165, 95616, 10808, 11331], 1, "37d189c.jpg?=20180420"],
["⑮ㄹㅇ카오스피닉스", 70, 10, 86, "che_event_신산", [36799, 11400, 47821, 376753, 31452], 1, "7f80b2f.jpg?=20190715"],
["⑤공돌이푸", 65, 9, 74, "che_event_저격", [26189, 39718, 105060, 408632, 13614], 0, "default.jpg"],
["⑪쒸익쒸익", 84, 73, 11, "che_event_견고", [10684, 35883, 195196, 43139, 31175], 1, "dbeeb0d.jpg?=20190620"],
["⑥북오더", 85, 39, 39, "che_event_징병", [5116, 33377, 3025, 8620, 217779], 1, "c0276e1.gif?=20180917"],
["④미스트 뱀파이어", 74, 10, 83, "che_event_신산", [39692, 37650, 88767, 550379, 19224], 0, "default.jpg"],
["④리안", 73, 10, 84, "che_event_저격", [33341, 71461, 47493, 347034, 3226], 1, "2347b5d.png?=20180929"],
["㉓킹구", 85, 70, 10, "che_event_무쌍", [9273, 166633, 8086, 26783, 18799], 1, "fb3c625.gif?=20190428"],
["⑨박초롱", 73, 86, 10, "che_event_필살", [110735, 426298, 28849, 103873, 24173], 1, "95c959e.gif?=20190423"],
["④쉬원찮은남자", 81, 74, 11, "che_event_징병", [116387, 388862, 62044, 104735, 42207], 0, "default.jpg"],
["④앙 로리로리띵", 72, 10, 83, "che_event_징병", [52524, 72230, 58483, 334355, 2515], 1, "7b880bc.jpg?=20181003"],
["④모라스", 75, 10, 82, "che_event_저격", [95531, 33656, 52433, 379296, 23626], 1, "383cea4.jpg?=20180919"],
["⑱Eman", 83, 73, 11, "che_event_견고", [524297, 16805, 65673, 86185, 78182], 1, "4358ef.png?=20191212"],
["②ㅊㅂ", 69, 86, 11, "che_event_무쌍", [46323, 245706, 45031, 61371, 7224], 1, "fd20d5d.png?=20180724"],
["③카미야 나오", 86, 70, 10, "che_event_위압", [492919, 28506, 73738, 100671, 28939], 1, "df23b15.jpg?=20180823"],
["⑳쒸익쒸익", 70, 10, 85, "che_event_척사", [22360, 73290, 21091, 433104, 26204], 1, "dbeeb0d.jpg?=20190620"],
["㉗임사영", 72, 15, 91, "che_event_신중", [8874, 10068, 10408, 64188, 9078], 1, "7f9473e.gif?=20200211"],
["⑥성산동피주먹", 79, 70, 11, "che_event_저격", [13286, 79622, 99744, 36991, 2711], 1, "50ac5f9.jpg?=20180922"],
["④타마모노마에2", 69, 11, 86, "che_event_척사", [25790, 20738, 8685, 223927, 11530], 1, "1d37633.png?=20181002"],
["⑳소리", 70, 10, 82, "che_event_신산", [18201, 24368, 8029, 182878, 14390], 0, "default.jpg"],
["⑲외심장", 70, 10, 83, "che_event_신산", [27620, 7809, 12829, 236951, 14985], 1, "36110cd.jpg?=20180826"],
["⑳병리학적자세", 71, 13, 85, "che_event_격노", [49347, 69493, 29432, 577911, 35546], 1, "3679089.jpg?=20180629"],
["⑬병리학적자세", 69, 11, 86, "che_event_집중", [20788, 27119, 17218, 430245, 31586], 1, "3679089.jpg?=20180629"],
["⑫나폴레옹", 82, 79, 10, "che_event_돌격", [25797, 512433, 4289, 37028, 39345], 1, "86e6b9f.jpg?=20190719"],
["⑦바젤기우스", 68, 77, 9, "che_event_척사", [122333, 632620, 56502, 177462, 26641], 1, "7668f10.jpg?=20190224"],
["㉖늦엇따당", 88, 75, 15, "che_event_무쌍", [124422, 7894, 38306, 38130, 7684], 1, "99cd27f.gif?=20190606"],
["⑥소환된민심러", 88, 65, 10, "che_event_필살", [201574, 17252, 30411, 69617, 50974], 1, "da319ad.jpg?=20181202"],
["⑩양대가리", 82, 60, 9, "che_event_저격", [0, 0, 0, 0, 832628], 1, "3f6d349.png?=20190611"],
["⑦이수임", 68, 9, 79, "che_event_필살", [101117, 65138, 86227, 844329, 44984], 1, "555823.jpg?=20190223"],
["⑥나나야 시키", 86, 69, 11, "che_event_징병", [46158, 358868, 59307, 72490, 18654], 1, "c19b6b4.jpg?=20181129"],
["①하루", 77, 77, 10, "che_event_견고", [49781, 447666, 81863, 89704, 170291], 1, "3aa501a.jpg?=20180710"],
["⑩킹유신", 81, 59, 9, "che_event_저격", [0, 0, 0, 0, 312096], 0, "default.jpg"],
["⑭오리온자리", 83, 10, 74, "che_event_징병", [47618, 57455, 63919, 394671, 22354], 1, "71c0d1f.jpg?=20190718"],
["④도롱", 69, 86, 10, "che_event_저격", [17265, 40914, 186054, 35840, 20720], 0, "default.jpg"],
["⑰아유", 68, 10, 82, "che_event_집중", [7734, 8572, 10520, 80613, 7195], 1, "ba186bf.gif?=20181220"],
["⑦M950", 66, 81, 9, "che_event_기병", [27724, 58882, 635964, 174216, 24974], 1, "a0ffece.jpg?=20190222"],
["⑬도추", 68, 10, 80, "che_event_반계", [11515, 6747, 28055, 118253, 6832], 0, "default.jpg"],
["⑩물타오르네", 86, 10, 70, "che_event_저격", [0, 0, 0, 0, 677948], 0, "default.jpg"],
["⑦이시리스", 79, 71, 9, "che_event_필살", [61227, 239908, 982438, 205558, 39449], 1, "c82f6e9.jpg?=20190219"],
["⑤브베", 63, 76, 9, "che_event_격노", [27816, 57873, 358679, 154777, 13518], 1, "6ad3375.gif?=20181111"],
["⑮말살하라!", 70, 11, 88, "che_event_필살", [11960, 20293, 38107, 204967, 9763], 1, "7c8c92c.png?=20190926"],
["⑫꼬리원자력발전소", 83, 11, 78, "che_event_징병", [77866, 73785, 28477, 543106, 14279], 1, "daf6db8.gif?=20190728"],
["③사무엘", 76, 10, 75, "che_event_필살", [7031, 45315, 27985, 174012, 8240], 1, "4dc6165.jpg?=20180907"],
["㉘호두농구왕왕쌍", 89, 75, 15, "che_event_위압", [13559, 31626, 243416, 44992, 84661], 1, "889056.jpg?=20200910"],
["⑫くま", 71, 10, 86, "che_event_격노", [31791, 41890, 2891, 305708, 29838], 1, "770f53.jpg?=20190718"],
["⑪광삼이", 75, 11, 81, "che_event_필살", [36088, 12976, 13658, 128236, 12846], 1, "69fc07c.jpg?=20180926"],
["㉗Oz Vessalius", 75, 16, 92, "che_event_신산", [25935, 10913, 24946, 422082, 46168], 1, "21780f2.jpg?=20200812"],
["⑧이시리스", 70, 10, 92, "che_event_환술", [4224, 13911, 20364, 87313, 12026], 1, "71ddb79.jpg?=20190326"],
["㉔돌아온너구리", 83, 68, 10, "che_event_필살", [10038, 91922, 75801, 14335, 19033], 0, "default.jpg"],
["⑪미스티", 69, 10, 83, "che_event_필살", [19934, 26442, 12818, 190245, 2521], 1, "1aadcba.png?=20180908"],
["⑲팬지", 69, 10, 83, "che_event_귀병", [29259, 13912, 9221, 252237, 11550], 1, "2091b86.gif?=20200112"],
["㉖크류", 83, 15, 81, "che_event_신중", [22567, 0, 2181, 140933, 9623], 1, "51540ea.jpg?=20200425"],
["⑬외심장", 67, 10, 88, "che_event_궁병", [35429, 27914, 21938, 176344, 3636], 1, "36110cd.jpg?=20180826"],
["⑦란카", 66, 80, 10, "che_event_척사", [18859, 80142, 639802, 202527, 21643], 1, "b62fa50.png?=20190125"],
["②물조명성너프필수", 87, 78, 10, "che_event_무쌍", [39205, 177529, 1298420, 161286, 84310], 0, "default.jpg"],
["⑲DDDD", 69, 10, 84, "che_event_신중", [9856, 19505, 20360, 140278, 76359], 1, "a5c75e7.jpg?=20191223"],
["㉖민트토끼", 72, 16, 94, "che_event_저격", [0, 7112, 0, 130793, 8075], 1, "3d9efb2.gif?=20200717"],
["㉙이즈미", 74, 15, 86, "che_event_신중", [7309, 4430, 4873, 129565, 22800], 1, "5d37b46.jpg?=20201105"],
["⑩SARS", 83, 59, 9, "che_event_저격", [0, 328, 3234, 0, 755372], 1, "b84944.jpg?=20180829"],
["㉘하루1분", 73, 15, 93, "che_event_신중", [9558, 17184, 15922, 222769, 22134], 0, "default.jpg"],
["⑦멘헤라짱", 67, 79, 9, "che_event_필살", [83422, 589437, 53954, 245165, 23338], 1, "18c3b09.gif?=20190212"],
["①하우젤", 83, 73, 10, "che_event_견고", [9640, 282753, 32486, 46108, 48603], 1, "edb7b8f.jpg?=20180628"],
["⑨카오스피닉스", 71, 11, 86, "che_event_저격", [16280, 47355, 44860, 409190, 27873], 1, "2af0641.jpg?=20180706"],
["⑮SARS", 72, 88, 10, "che_event_필살", [21664, 41907, 455807, 83835, 16117], 1, "b84944.jpg?=20180829"],
["㉒정채연", 72, 78, 10, "che_event_저격", [13635, 8336, 228418, 54829, 2030], 1, "9705097.jpg?=20191001"],
["⑲박일아", 86, 68, 10, "che_event_의술", [472187, 20600, 50311, 90313, 33568], 1, "8608979.gif?=20191024"],
["⑧샹그릴라", 90, 65, 10, "che_event_저격", [4194, 11660, 3717, 20398, 201660], 1, "4c1ded2.jpg?=20190315"],
["⑲하와와", 70, 10, 80, "che_event_의술", [10472, 14586, 32496, 224165, 3473], 0, "default.jpg"],
["㉙나타", 74, 15, 88, "che_event_집중", [36198, 2357, 3981, 246405, 32928], 1, "c17b4b2.jpg?=20201111"],
["⑦나데코", 74, 9, 67, "che_event_격노", [36133, 45948, 64671, 548665, 15763], 0, "default.jpg"],
["⑪꽃냥", 69, 10, 87, "che_event_척사", [31586, 38835, 8777, 348707, 22640], 1, "3447fa.jpg?=20190620"],
["⑫미나토 유키나", 67, 12, 89, "che_event_신중", [10753, 0, 0, 78068, 25787], 1, "dfbfdef.jpg?=20190718"],
["⑤로스트아크", 65, 9, 76, "che_event_신중", [25200, 35103, 54330, 348951, 9350], 1, "ae8cbdd.gif?=20181114"],
["⑩킬러조", 86, 10, 70, "che_event_저격", [0, 0, 2560, 0, 667723], 1, "cd43ea0.jpg?=20190509"],
["⑥아범", 72, 83, 10, "che_event_저격", [44487, 67379, 284123, 84323, 11329], 0, "default.jpg"],
["⑤알카서스", 62, 9, 76, "che_event_신산", [43771, 34833, 59350, 260207, 12641], 1, "c540130.png?=20181025"],
["①무장", 72, 10, 83, "che_event_징병", [9269, 30696, 26088, 296119, 30616], 0, "default.jpg"],
["⑮미스티", 70, 11, 86, "che_event_신중", [22069, 26853, 20110, 225012, 12403], 1, "1aadcba.png?=20180908"],
["⑧솬수123", 74, 10, 84, "che_event_격노", [21442, 34717, 50146, 343042, 13138], 0, "default.jpg"],
["⑥일반장푸", 55, 55, 55, "che_event_위압", [211052, 24547, 54442, 62236, 11215], 0, "default.jpg"],
["⑭킹구없이는못살아", 83, 71, 10, "che_event_척사", [71050, 389547, 13480, 84486, 24910], 1, "fb3c625.gif?=20190428"],
["㉓Crow", 84, 10, 79, "che_event_집중", [126408, 60376, 55452, 852899, 49764], 1, "44d980a.png?=20200130"],
["⑳카오스피닉스", 68, 10, 85, "che_event_신중", [9873, 34390, 16220, 207908, 6158], 1, "7f80b2f.jpg?=20190715"],
["⑧지나가는뉴비", 77, 81, 10, "che_event_징병", [67964, 569025, 57216, 107022, 32017], 0, "default.jpg"],
["①Tiasse", 79, 74, 10, "che_event_척사", [0, 32371, 21087, 0, 126195], 1, "7ebcf8a.jpg?=20180713"],
["③태극권", 84, 68, 10, "che_event_척사", [45600, 30105, 434387, 78535, 10418], 0, "default.jpg"],
["㉒돌아온너구리", 71, 10, 84, "che_event_환술", [28251, 37813, 40168, 489498, 18502], 0, "default.jpg"],
["④ㅅㅂㅅㅌ", 68, 10, 86, "che_event_신산", [26880, 28657, 13333, 237541, 10287], 0, "default.jpg"],
["③5분장멍펫", 78, 79, 10, "che_event_견고", [519553, 39580, 68995, 110004, 38426], 1, "6d750a7.jpg?=20180727"],
["㉓치카", 88, 75, 11, "che_event_견고", [59691, 412283, 20674, 113450, 10538], 1, "890b253.jpg?=20191024"],
["⑩트수", 76, 83, 10, "che_event_저격", [0, 0, 0, 0, 792011], 1, "483e099.png?=20190608"],
["⑦다유", 74, 71, 9, "che_event_위압", [430265, 53205, 141991, 172907, 6422], 1, "f489a2a.jpg?=20181226"],
["㉖불랑기 화승총병", 72, 15, 88, "che_event_척사", [8991, 14612, 19908, 110377, 9626], 0, "default.jpg"],
["⑥G11", 88, 39, 38, "che_event_공성", [0, 0, 5233, 5684, 685600], 1, "acd69c.jpg?=20181217"],
["⑬민트토끼", 68, 11, 86, "che_event_저격", [6148, 35368, 11119, 285649, 49994], 1, "85cdfc4.gif?=20190816"],
["④아소", 79, 10, 73, "che_event_반계", [27199, 35368, 11270, 186085, 11353], 1, "3d22492.jpg?=20180417"],
["㉘플라", 90, 77, 16, "che_event_돌격", [37546, 45018, 197291, 45059, 24196], 1, "816bde9.jpg?=20200716"],
["⑧아유", 70, 10, 89, "che_event_필살", [218, 27987, 31365, 157038, 14991], 1, "ba186bf.gif?=20181220"],
["㉗만샘", 76, 15, 91, "che_event_의술", [6157, 31823, 34012, 367505, 30094], 1, "4a206a1.jpg?=20181122"],
["⑥진리", 86, 69, 11, "che_event_격노", [36439, 94821, 614861, 171342, 55636], 1, "d286702.jpg?=20181210"],
["④낙지꾸미", 71, 11, 81, "che_event_반계", [22422, 20670, 27673, 182196, 2200], 0, "default.jpg"],
["⑤어린이", 69, 67, 9, "che_event_보병", [198235, 5722, 47605, 87111, 4298], 0, "default.jpg"],
["⑬함병선입니다", 85, 10, 71, "che_event_집중", [5299, 8700, 5919, 180926, 42624], 1, "cf49f01.png?=20190815"],
["⑳개미호랑이", 88, 66, 11, "che_event_기병", [20770, 93715, 371211, 111363, 17549], 1, "9e0429e.jpg?=20200313"],
["⑫분노의꼬리", 70, 10, 91, "che_event_신산", [31635, 4564, 11118, 263932, 37081], 1, "d5dc381.gif?=20190719"],
["㉗시뉴카린", 75, 16, 90, "che_event_환술", [12433, 27173, 41403, 367167, 25788], 1, "4d0310a.gif?=20200814"],
["⑥삼남매아빠", 86, 68, 10, "che_event_돌격", [32331, 203325, 24993, 20871, 26702], 0, "default.jpg"],
["④반지전쟁", 73, 11, 83, "che_event_필살", [50374, 34214, 56396, 293089, 6166], 1, "aaa8f40.jpg?=20180921"],
["⑫사마의", 69, 10, 85, "che_event_신산", [21375, 45978, 7392, 253606, 9454], 1, "a8a606f.png?=20190718"],
["⑥귀요미아", 70, 10, 85, "che_event_징병", [2135, 6844, 22413, 139699, 27634], 0, "default.jpg"],
["⑤여행중인규일", 71, 9, 71, "che_event_저격", [17754, 38769, 38741, 326399, 14612], 0, "default.jpg"],
["㉙그저늅늅", 73, 87, 15, "che_event_무쌍", [24005, 18846, 104901, 19928, 20662], 1, "5cedbb3.jpg?=20190817"],
["①삼남매엄마", 71, 82, 10, "che_event_위압", [17014, 104979, 80972, 30229, 18935], 0, "default.jpg"],
["①소마", 73, 81, 10, "che_event_견고", [456171, 41579, 99061, 122518, 38878], 0, "default.jpg"],
["①밥알요정", 77, 77, 10, "che_event_위압", [28076, 54221, 319263, 61411, 48289], 1, "cf505d0.png?=20180630"],
["⑮유산슬", 70, 10, 87, "che_event_척사", [46162, 19807, 63717, 381651, 16287], 1, "ea9648d.png?=20190922"],
["㉑독구", 67, 10, 86, "che_event_신산", [24010, 16507, 15159, 197802, 24127], 1, "f6d2724.png?=20200405"],
["⑮보스곰", 68, 10, 88, "che_event_척사", [18291, 20014, 20890, 466974, 19230], 1, "773556e.gif?=20190822"],
["⑬슬라임", 82, 71, 11, "che_event_필살", [216026, 23994, 60126, 45284, 24173], 1, "b1c4193.jpg?=20190815"],
["②모라스", 71, 11, 89, "che_event_반계", [34004, 84004, 71256, 328734, 26015], 0, "default.jpg"],
["㉔정채연", 72, 80, 10, "che_event_척사", [34, 77053, 8489, 12061, 9739], 1, "9705097.jpg?=20191001"],
["①사서고생함", 71, 10, 83, "che_event_신산", [11473, 12217, 7075, 90081, 16414], 0, "default.jpg"],
["④하우젤", 88, 68, 10, "che_event_위압", [20159, 38333, 431831, 93542, 17783], 1, "dcff9fd.jpg?=20180823"],
["㉗킹구", 78, 87, 15, "che_event_척사", [7824, 16063, 426658, 25495, 23824], 1, "fb3c625.gif?=20190428"],
["㉒평민킬러", 71, 84, 10, "che_event_견고", [463509, 20230, 45383, 94311, 26646], 1, "fb23a32.jpg?=20190904"],
["⑬샴", 71, 10, 84, "che_event_저격", [21982, 11782, 11700, 173334, 21517], 1, "b3a530b.jpg?=20190813"],
["㉔죽음의검", 68, 10, 85, "che_event_집중", [7103, 12435, 25654, 116850, 19841], 0, "default.jpg"],
["⑮작업DB레코드작성", 69, 83, 10, "che_event_저격", [19064, 14467, 184235, 44727, 39148], 0, "default.jpg"],
["⑮으내배고파", 70, 10, 79, "che_event_신중", [10469, 102, 10738, 95680, 14171], 1, "3137ad5.jpg?=20190928"],
["⑫호무새", 77, 10, 82, "che_event_신산", [52590, 48055, 14950, 441744, 18624], 1, "6cb46de.png?=20190719"],
["④오늘의시", 75, 10, 81, "che_event_신산", [39140, 36691, 77924, 277429, 4382], 1, "97e5890.jpg?=20180921"],
["⑥솔라", 68, 10, 88, "che_event_저격", [8111, 23457, 23190, 181106, 20785], 1, "bf39f5b.jpg?=20181129"],
["⑨드류", 70, 10, 87, "che_event_척사", [24454, 61025, 30717, 412103, 23796], 1, "507327d.png?=20181001"],
["⑨아유", 72, 10, 87, "che_event_귀병", [49094, 31810, 25388, 304121, 21048], 1, "ba186bf.gif?=20181220"],
["⑫이초홍", 72, 10, 87, "che_event_척사", [24368, 17926, 16179, 374429, 15483], 1, "f2eb713.jpg?=20190725"],
["⑧프론트라인", 85, 74, 10, "che_event_견고", [10577, 58347, 437741, 113767, 31575], 0, "default.jpg"],
["⑦이쓰미", 74, 9, 80, "che_event_집중", [119264, 171778, 140776, 937683, 22379], 1, "fd6a0fd.jpg?=20181212"],
["⑩뾰루퉁", 66, 66, 9, "che_event_저격", [0, 0, 0, 0, 283777], 1, "8565afb.jpg?=20190516"],
["⑫이해고", 84, 75, 10, "che_event_징병", [35015, 41263, 488453, 144773, 40520], 1, "f332b13.jpg?=20190718"],
["⑧주", 75, 10, 85, "che_event_저격", [37271, 45911, 59793, 373759, 24692], 1, "4b1ac40.jpg?=20190314"],
["⑪핥짝", 68, 11, 89, "che_event_척사", [9799, 18998, 19026, 169985, 11730], 0, "default.jpg"],
["⑧치카", 89, 71, 10, "che_event_저격", [5121, 106719, 322316, 102085, 23643], 1, "764d882.png?=20190328"],
["①칸자키 란코", 69, 11, 85, "che_event_격노", [31239, 23167, 14054, 322927, 44759], 1, "ad53ac0.jpg?=20180708"],
["②뉴 호라이즌", 70, 11, 81, "che_event_반계", [9810, 48984, 42004, 244641, 21509], 1, "d9cd4b9.jpg?=20180726"],
["④체셔 고양이", 71, 10, 83, "che_event_신중", [26473, 56190, 46547, 278807, 20649], 1, "147130f.jpg?=20180919"],
["③외심장", 72, 10, 81, "che_event_징병", [39575, 63598, 51536, 281240, 18768], 1, "36110cd.jpg?=20180826"],
["④카이스트", 71, 9, 83, "che_event_환술", [23800, 9744, 88692, 423257, 18339], 1, "9361ef8.jpg?=20180907"],
["⑤나나야 시키", 73, 67, 9, "che_event_척사", [14326, 47834, 288028, 66027, 17713], 1, "9a3937c.gif?=20181025"],
["㉔킹구갓구", 84, 68, 10, "che_event_위압", [9360, 41905, 238478, 34531, 29359], 1, "fb3c625.gif?=20190428"],
["㉗Hide_D", 76, 16, 87, "che_event_저격", [21081, 17905, 1664, 264773, 31872], 1, "9f0a2a8.png?=20200106"],
["⑤세미", 79, 62, 9, "che_event_무쌍", [153468, 302113, 65001, 123718, 27836], 1, "32b7fdd.jpg?=20181115"],
["⑬무한파워안경", 79, 71, 10, "che_event_척사", [1674, 12511, 155750, 41617, 12934], 1, "b7e1a1f.jpg?=20180525"],
["②삼남매아빠", 90, 74, 10, "che_event_돌격", [1191995, 118931, 143223, 200158, 69313], 0, "default.jpg"],
["⑦시즈", 66, 74, 9, "che_event_위압", [16998, 68128, 492139, 179190, 16752], 1, "1b650f4.png?=20190125"],
["⑫탐욕의 꼬리", 70, 10, 88, "che_event_반계", [38919, 32335, 3161, 279227, 33822], 1, "563530e.gif?=20190718"],
["㉕료우기시키", 80, 63, 10, "che_event_보병", [833050, 35969, 111901, 202125, 11973], 1, "559083f.jpg?=20190905"],
["㉗asdf", 88, 78, 15, "che_event_무쌍", [23286, 81912, 18007, 45249, 2397], 0, "default.jpg"],
["⑥병리학적자세", 67, 11, 88, "che_event_귀병", [6584, 10186, 3922, 117751, 20404], 1, "3679089.jpg?=20180629"],
["㉗[진]배틀메이지", 75, 15, 90, "che_event_신중", [33585, 14363, 2670, 127250, 6480], 1, "a795726.jpg?=20200813"],
["⑦으아앙으아", 68, 9, 78, "che_event_필살", [69443, 53046, 67386, 491997, 6881], 1, "d5186a7.jpg?=20190221"],
["②아소", 80, 10, 71, "che_event_환술", [5648, 34720, 17499, 154226, 2429], 1, "3d22492.jpg?=20180417"],
["⑩성벽킬러", 83, 57, 9, "che_event_저격", [0, 0, 0, 0, 1030193], 1, "9bf4880.png?=20190601"],
["㉕김갑환", 71, 80, 10, "che_event_징병", [43859, 46941, 440670, 132634, 8075], 1, "dcff9fd.jpg?=20180823"],
["⑤사스케", 76, 62, 9, "che_event_무쌍", [175522, 8297, 37318, 90551, 6779], 1, "4c58102.jpg?=20180927"],
["⑧병리학적자세", 68, 10, 92, "che_event_격노", [6678, 20844, 27831, 239390, 16689], 1, "3679089.jpg?=20180629"],
["⑳엘사", 72, 86, 10, "che_event_징병", [25913, 336804, 10527, 50218, 29056], 1, "45d0270.jpg?=20200305"],
["㉑마을주민", 72, 82, 10, "che_event_견고", [18109, 5167, 217098, 41508, 16615], 1, "70c3a0c.jpg?=20200402"],
["⑲땅땅이", 78, 73, 10, "che_event_저격", [95387, 291628, 11819, 46427, 35673], 1, "99cd27f.gif?=20190606"],
["⑤whan", 65, 76, 9, "che_event_격노", [266868, 25411, 53288, 112882, 29615], 1, "68aacd2.jpg?=20180929"],
["⑭지장", 69, 10, 85, "che_event_귀병", [26425, 20784, 16703, 119589, 4307], 0, "default.jpg"],
["⑭메로나광팬486번", 70, 85, 10, "che_event_위압", [46820, 276167, 11080, 56776, 18037], 0, "default.jpg"],
["⑨맹수", 72, 10, 87, "che_event_신산", [53942, 56966, 71198, 393899, 31399], 1, "4383ce5.jpg?=20190411"],
["⑯극대노초홍", 68, 10, 89, "che_event_귀병", [4065, 7900, 343, 127230, 16640], 1, "82a5a70.jpg?=20191024"],
["⑭연채홍", 69, 11, 85, "che_event_징병", [32359, 36578, 16365, 464843, 37703], 1, "a12d463.jpg?=20190905"],
["⑳박일도", 66, 16, 85, "che_event_격노", [17887, 35636, 18792, 316640, 25348], 0, "default.jpg"],
["㉖레벤", 73, 15, 91, "che_event_반계", [4430, 3734, 10545, 160291, 14480], 0, "default.jpg"],
["③성산동피주먹", 79, 10, 68, "che_event_저격", [65739, 25051, 23440, 135202, 6580], 0, "default.jpg"],
["⑲KOSPI", 71, 84, 10, "che_event_척사", [8367, 162879, 8247, 53554, 2289], 0, "default.jpg"],
["⑫꼬리조아♥", 70, 11, 88, "che_event_징병", [39364, 19097, 20618, 360367, 27894], 1, "f3a2c6c.gif?=20190718"],
["⑨경국지색소교", 70, 10, 85, "che_event_필살", [8501, 27452, 39856, 199412, 2328], 0, "default.jpg"],
["㉗연채홍", 75, 15, 90, "che_event_집중", [32340, 5375, 24321, 262482, 36315], 1, "773556e.gif?=20190822"],
["㉙민트토끼", 73, 16, 87, "che_event_신중", [11797, 19044, 4646, 251880, 13077], 1, "e04b397.gif?=20201119"],
["⑨황약사", 90, 68, 10, "che_event_의술", [23121, 116700, 297522, 146101, 310045], 1, "437813e.jpg?=20190408"],
["③커피", 74, 83, 10, "che_event_무쌍", [23743, 47980, 490257, 71293, 37683], 1, "f4e0e1e.jpg?=20180831"],
["㉒철별", 70, 10, 83, "che_event_집중", [20629, 23019, 33232, 338959, 52732], 0, "default.jpg"],
["㉑냐옹", 69, 84, 10, "che_event_견고", [930, 118947, 3147, 40362, 8218], 1, "23ba519.jpg?=20190318"],
["㉓나데코", 74, 89, 10, "che_event_견고", [516777, 18931, 45398, 135108, 14663], 1, "9705097.jpg?=20191001"],
["⑩사이다라떼", 68, 10, 78, "che_event_저격", [0, 0, 0, 0, 159778], 0, "default.jpg"],
["⑫집나간파이", 84, 72, 10, "che_event_척사", [241768, 10221, 30656, 82470, 14006], 1, "f76fa74.jpg?=20190629"],
["⑫바밀리오", 69, 10, 93, "che_event_척사", [11265, 5326, 0, 114450, 8013], 1, "6979928.jpg?=20190713"],
["⑩갓트라브", 81, 57, 9, "che_event_저격", [0, 0, 0, 0, 216548], 0, "default.jpg"],
["⑨북오더", 71, 85, 10, "che_event_보병", [345488, 27073, 59009, 84979, 20740], 1, "c0276e1.gif?=20180917"],
["㉔호시이 미키", 81, 73, 10, "che_event_돌격", [3492, 30132, 295674, 41506, 38362], 1, "4c1e8c4.jpg?=20200515"],
["⑧내말내나라", 69, 11, 84, "che_event_환술", [24618, 28517, 36777, 214686, 11299], 1, "643224f.gif?=20190314"],
["①신태용", 83, 69, 10, "che_event_견고", [5727, 46946, 59215, 21735, 11359], 0, "default.jpg"],
["③제노에이지", 72, 11, 82, "che_event_척사", [69979, 20905, 59075, 272240, 23002], 1, "af4fec8.png?=20180818"],
["⑧마비노기", 73, 88, 10, "che_event_격노", [61414, 65906, 430638, 98369, 28638], 1, "4b78ef3.png?=20190314"],
["㉔개미호랑이블린", 68, 10, 83, "che_event_집중", [17332, 9170, 7337, 174876, 24439], 1, "9e0429e.jpg?=20200313"],
["③♂", 88, 69, 10, "che_event_필살", [101047, 392165, 53609, 110187, 21354], 1, "6f11fd5.jpg?=20180908"],
["②휘뚜루마뚜루코코밍", 64, 48, 47, "che_event_필살", [6232, 37680, 92653, 19943, 11263], 1, "c4d2567.jpg?=20180801"],
["⑤삼남매아빠", 77, 66, 9, "che_event_징병", [43427, 62336, 649154, 162123, 17930], 0, "default.jpg"],
["㉗파워에이드", 75, 15, 90, "che_event_집중", [14697, 26762, 45820, 288257, 38236], 1, "7cde6c8.jpg?=20200813"],
["②미리안느", 73, 11, 82, "che_event_척사", [26597, 62757, 48307, 347272, 22933], 1, "1f1c8ae.jpg?=20180804"],
["㉖팀쿡", 90, 77, 15, "che_event_견고", [22014, 211466, 11573, 55566, 24781], 0, "default.jpg"],
["⑧료우기시키", 69, 11, 89, "che_event_귀병", [3139, 23017, 12181, 57842, 3943], 1, "f1d936e.jpg?=20190217"],
["④성산동피주먹", 81, 72, 10, "che_event_징병", [40028, 332014, 19912, 74292, 34827], 1, "50ac5f9.jpg?=20180922"],
["㉙갈근", 74, 16, 87, "che_event_신중", [11696, 7548, 11825, 163198, 37843], 0, "default.jpg"],
["⑧리플", 71, 90, 10, "che_event_위압", [48892, 526250, 33767, 114495, 13117], 1, "fbe44ca.jpg?=20181207"],
["⑬아이린", 70, 85, 11, "che_event_돌격", [14001, 364900, 14622, 67165, 15973], 1, "8dac73c.jpg?=20180922"],
["⑨세리카", 69, 10, 82, "che_event_반계", [17232, 51043, 35663, 274179, 17434], 1, "58b4689.jpg?=20180607"],
["⑦에이다", 80, 79, 10, "che_event_필살", [552743, 70661, 125163, 121463, 3754], 0, "default.jpg"],
["⑪료우기시키", 82, 76, 10, "che_event_무쌍", [58091, 391277, 10916, 123158, 25056], 1, "f1d936e.jpg?=20190217"],
["⑫보스곰", 69, 11, 89, "che_event_신산", [31497, 36831, 5917, 271843, 17167], 1, "398e96e.gif?=20190719"],
["⑬체리맛농약", 68, 10, 85, "che_event_집중", [9478, 8554, 16493, 186045, 14890], 1, "2dc4058.jpg?=20190816"],
["③Lenn", 86, 69, 10, "che_event_위압", [4054, 16088, 954, 11775, 646951], 1, "fb2c85e.jpg?=20180825"],
["⑪이초홍", 71, 10, 86, "che_event_필살", [11443, 64213, 47527, 392635, 12294], 1, "8d5e5ae.jpg?=20190619"],
["㉗개미호랑이", 74, 16, 90, "che_event_신중", [5946, 21933, 38387, 290896, 20432], 1, "9e0429e.jpg?=20200313"],
["⑥ⓟ피카츄", 74, 80, 11, "che_event_격노", [94017, 512262, 70646, 140405, 24945], 1, "4178de2.gif?=20181216"],
["③보리", 69, 10, 86, "che_event_격노", [9193, 12245, 32244, 168746, 23275], 0, "default.jpg"],
["⑩나카노 니노", 81, 35, 35, "che_event_저격", [0, 0, 0, 0, 284738], 1, "bee3096.jpg?=20190607"],
["㉕푸린", 65, 10, 80, "che_event_집중", [56792, 32471, 84344, 817450, 11776], 1, "d3c25f2.jpg?=20200604"],
["⑭강서유서", 79, 12, 74, "che_event_신산", [26367, 14057, 15839, 234235, 7314], 1, "66b9506.png?=20180830"],
["⑦엘사", 67, 80, 9, "che_event_저격", [109578, 621099, 181391, 147403, 22900], 1, "a9361f3.jpg?=20190216"],
["㉗따당따당", 86, 79, 15, "che_event_돌격", [33281, 22170, 169360, 46034, 29983], 1, "99cd27f.gif?=20190606"],
["③버그", 74, 82, 10, "che_event_필살", [21080, 95436, 461525, 102087, 19127], 1, "d85ebbb.jpg?=20180828"],
["⑰박일아", 71, 10, 84, "che_event_신산", [27111, 30262, 68620, 549278, 28962], 1, "8608979.gif?=20191024"],
["②인간 사냥꾼", 86, 76, 12, "che_event_견고", [837722, 97147, 163548, 183617, 53832], 1, "bc6b556.jpg?=20180807"],
["⑦노루야캐요", 71, 9, 79, "che_event_신산", [73481, 89326, 139455, 640098, 14188], 1, "8212a8.jpg?=20190207"],
["⑬고먐미", 72, 11, 82, "che_event_집중", [17898, 24555, 9780, 100383, 6341], 1, "3832b08.jpg?=20190816"],
["㉔독구", 69, 10, 85, "che_event_저격", [30082, 30706, 17351, 383652, 27441], 1, "a7388f.png?=20200424"],
["④랜슬롯", 69, 12, 85, "che_event_신중", [24888, 24360, 12387, 266151, 11751], 1, "c6b18a7.jpg?=20180920"],
["㉗평민킬러", 93, 74, 15, "che_event_견고", [328375, 19870, 72127, 73179, 28622], 1, "fb23a32.jpg?=20190904"],
["⑥whan", 70, 10, 85, "che_event_환술", [69303, 60730, 59751, 424941, 18374], 1, "68aacd2.jpg?=20180929"],
["⑳길냥이", 88, 70, 10, "che_event_돌격", [58332, 1147833, 29817, 49163, 73191], 1, "eed811e.jpg?=20200305"],
["㉖김갑환", 87, 78, 15, "che_event_돌격", [346524, 20951, 20680, 47837, 27193], 1, "dcff9fd.jpg?=20180823"],
["①아유", 83, 73, 10, "che_event_척사", [45035, 53813, 347280, 112550, 44124], 1, "bf8e3b6.jpg?=20180630"],
["㉓くま", 79, 82, 10, "che_event_견고", [134416, 872336, 31536, 176686, 39790], 1, "770f53.jpg?=20190718"],
["⑰강희정", 69, 10, 80, "che_event_필살", [5176, 3177, 13554, 96984, 6566], 0, "default.jpg"],
["㉕평민킬러", 82, 64, 10, "che_event_징병", [71985, 87732, 907056, 207533, 22096], 1, "fb23a32.jpg?=20190904"],
["④나레이터킬러", 69, 83, 10, "che_event_돌격", [39369, 201201, 15393, 38859, 8826], 0, "default.jpg"],
["①오다에리나", 75, 77, 12, "che_event_격노", [14744, 282180, 13513, 60424, 38930], 1, "37df877.jpg?=20180628"],
["④김나영", 74, 82, 11, "che_event_징병", [627412, 66791, 123809, 168420, 40471], 1, "2e8d570.jpg?=20180823"],
["③강서유서", 70, 10, 81, "che_event_신중", [3727, 31580, 3151, 192153, 12428], 1, "66b9506.png?=20180830"],
["⑪장손신희", 71, 85, 11, "che_event_돌격", [271136, 11573, 24245, 98125, 14353], 1, "e7a5bde.jpg?=20190329"],
["⑯카이스트", 67, 12, 88, "che_event_집중", [0, 8331, 3443, 112322, 23572], 1, "9361ef8.jpg?=20180907"],
["⑧구스", 83, 78, 10, "che_event_격노", [24175, 106086, 390664, 106907, 23754], 1, "ab6bca8.jpg?=20190314"],
["②다니엘레메로시", 89, 73, 10, "che_event_위압", [20232, 493247, 48439, 114876, 12879], 1, "b22d7e2.jpg?=20180719"],
["④SARS죽어라", 81, 72, 10, "che_event_격노", [456673, 16672, 56076, 182918, 10976], 0, "default.jpg"],
["⑪무당벌레", 86, 10, 72, "che_event_신중", [70603, 57301, 22890, 393328, 18909], 0, "default.jpg"],
["⑬유닠주세요", 69, 84, 10, "che_event_보병", [284593, 13309, 24316, 53190, 15918], 0, "default.jpg"],
["⑦제갈여포", 78, 9, 70, "che_event_신산", [50824, 106658, 94434, 640028, 8782], 1, "e8e8adc.jpg?=20180419"],
["④아비그네일", 81, 76, 10, "che_event_저격", [703575, 28205, 59804, 154355, 53862], 1, "6ac8d24.jpg?=20180922"],
["⑬카이스트", 79, 11, 70, "che_event_반계", [20038, 14423, 10433, 247657, 18057], 1, "9361ef8.jpg?=20180907"],
["②미이케 나에코", 70, 12, 83, "che_event_반계", [13081, 42253, 0, 71878, 481], 1, "275eac4.jpg?=20180719"],
["⑥엘레나", 80, 10, 74, "che_event_저격", [16534, 40965, 76651, 513623, 125427], 1, "a3ff40d.gif?=20181130"],
["②평민킬러", 76, 86, 10, "che_event_필살", [13032, 114838, 491599, 128087, 28161], 1, "6add0f.jpg?=20180515"],
["㉑시즈", 67, 83, 10, "che_event_궁병", [0, 172722, 19227, 22465, 10309], 0, "default.jpg"],
["⑦하우젤", 82, 63, 9, "che_event_격노", [51778, 110841, 687062, 277802, 9156], 1, "dcff9fd.jpg?=20180823"],
["㉒바보카린", 12, 78, 74, "che_event_공성", [0, 0, 0, 4979, 105255], 1, "56538b1.gif?=20200423"],
["⑳연채홍", 71, 10, 87, "che_event_반계", [20796, 46280, 29340, 308056, 15651], 1, "773556e.gif?=20190822"],
["⑩시그마", 81, 9, 57, "che_event_저격", [0, 0, 0, 0, 384254], 1, "6a2c77.png?=20190509"],
["⑤김나영", 64, 78, 9, "che_event_무쌍", [39651, 56408, 664139, 105312, 49958], 1, "2e8d570.jpg?=20180823"],
["㉑나루토", 69, 10, 84, "che_event_신산", [14556, 21833, 49278, 320953, 52099], 1, "20daf9a.jpg?=20200412"],
["㉘로리", 79, 88, 15, "che_event_견고", [55755, 376241, 31380, 72421, 54233], 1, "50794a6.jpg?=20190923"],
["⑩진산월", 79, 41, 26, "che_event_저격", [0, 0, 0, 0, 530788], 0, "default.jpg"],
["⑤콘", 67, 9, 75, "che_event_집중", [38829, 34815, 65177, 349753, 19354], 1, "78a5139.jpg?=20181025"],
["⑨아루지사마", 67, 89, 12, "che_event_격노", [69655, 2651, 18650, 27009, 6205], 1, "3d319b5.png?=20190422"],
["①SARS", 52, 30, 83, "che_event_신산", [13983, 51943, 16887, 272296, 24209], 0, "default.jpg"],
["⑨갓갓갓갓갓갓갓갓갓", 81, 12, 74, "che_event_척사", [22697, 32256, 40896, 225407, 7946], 0, "default.jpg"],
["㉕개미호람머스", 69, 74, 10, "che_event_궁병", [84791, 458427, 27411, 140321, 9241], 1, "9e0429e.jpg?=20200313"],
["⑦빨간망토", 67, 9, 82, "che_event_필살", [39744, 80838, 114714, 491886, 17876], 1, "862bd8e.gif?=20181028"],
["⑩장수", 82, 58, 9, "che_event_저격", [0, 2186, 993, 0, 613617], 1, "f8c3037.png?=20190510"],
["④사슴초밥", 75, 75, 10, "che_event_징병", [102922, 17437, 6036, 58513, 0], 0, "default.jpg"],
["④처리오빠", 91, 11, 65, "che_event_징병", [17661, 23306, 10243, 206302, 82133], 1, "589d020.jpg?=20180911"],
["⑱외심장", 74, 10, 85, "che_event_격노", [38743, 25546, 77584, 789121, 32975], 1, "36110cd.jpg?=20180826"],
["⑫노란멍충이", 70, 88, 11, "che_event_격노", [35591, 157802, 965, 27862, 25253], 1, "3666aa6.png?=20190621"],
["⑳뉴턴", 74, 83, 10, "che_event_견고", [12269, 12093, 610061, 15602, 16881], 1, "3d166a8.jpg?=20200313"],
["③삼남매아빠", 86, 70, 10, "che_event_위압", [55808, 45866, 370360, 107655, 17687], 0, "default.jpg"],
["⑧그랜드체이스", 72, 89, 11, "che_event_무쌍", [23952, 66298, 531825, 100342, 34197], 1, "68492ea.png?=20190322"],
["⑬사스케", 71, 82, 10, "che_event_무쌍", [188505, 9542, 49633, 30420, 13319], 1, "986348a.jpg?=20190815"],
["⑭광삼이", 76, 11, 76, "che_event_보병", [21468, 16917, 21536, 172885, 14604], 1, "69fc07c.jpg?=20180926"],
["⑦난세", 69, 80, 9, "che_event_무쌍", [83022, 952009, 71208, 256930, 28036], 1, "43adc65.png?=20190125"],
["⑮로리", 86, 74, 10, "che_event_저격", [27690, 35965, 378072, 91087, 7640], 1, "50794a6.jpg?=20190923"],
["①덕장", 70, 83, 10, "che_event_필살", [7822, 44706, 180343, 44938, 30984], 0, "default.jpg"],
["⑤이블린", 63, 9, 77, "che_event_신중", [41156, 35238, 49522, 310521, 12249], 0, "default.jpg"],
["㉑정채연", 69, 10, 83, "che_event_집중", [11570, 6004, 10179, 112286, 7241], 1, "9705097.jpg?=20191001"],
["⑰료우기시키", 83, 70, 10, "che_event_징병", [23231, 264555, 25084, 67976, 30971], 1, "559083f.jpg?=20190905"],
["㉗독구", 77, 15, 90, "che_event_신산", [13756, 39987, 36335, 519343, 19490], 1, "b769004.png?=20200726"],
["⑪먹튀", 69, 11, 82, "che_event_의술", [36140, 29015, 10634, 283666, 13675], 0, "default.jpg"],
["⑧사스케", 74, 86, 10, "che_event_무쌍", [908375, 67876, 37480, 137638, 48849], 1, "e9a3054.jpg?=20190315"],
["⑩무당벌레", 89, 10, 67, "che_event_저격", [0, 0, 0, 0, 638842], 0, "default.jpg"],
["①견고", 73, 81, 11, "che_event_필살", [315554, 37306, 106669, 60814, 36308], 0, "default.jpg"],
["㉔Hide_D", 67, 12, 83, "che_event_신중", [2455, 8108, 0, 127077, 31017], 1, "9f0a2a8.png?=20200106"],
["⑪파이", 68, 10, 88, "che_event_저격", [3904, 18236, 13663, 172482, 30437], 1, "f76fa74.jpg?=20190629"],
["㉔smile", 73, 81, 10, "che_event_필살", [21651, 46701, 13805, 9823, 44002], 0, "default.jpg"],
["⑳마티아스", 74, 85, 10, "che_event_돌격", [55552, 621174, 9929, 183007, 19129], 1, "acb1a64.jpg?=20200305"],
["㉒무공요정", 71, 10, 82, "che_event_저격", [17338, 4521, 34150, 267043, 36848], 1, "a6cba65.jpg?=20200426"],
["②아유", 67, 10, 88, "che_event_격노", [77457, 134449, 58064, 367649, 26674], 1, "337e79.gif?=20180810"],
["⑤리나 인버스", 61, 9, 76, "che_event_신중", [14351, 18919, 19595, 193212, 6067], 1, "edea22f.jpg?=20181109"],
["㉓ㅁㄴㅇ", 71, 11, 90, "che_event_환술", [28425, 49919, 43282, 379771, 27489], 1, "99e4505.jpg?=20200110"],
["⑫개미호랑이", 71, 11, 88, "che_event_필살", [33821, 55291, 13340, 434325, 17702], 1, "fccc37e.jpg?=20190718"],
["④삭턴전문가", 82, 74, 10, "che_event_징병", [62474, 244552, 34576, 64241, 12855], 0, "default.jpg"],
["⑦삼남매아빠", 66, 9, 81, "che_event_징병", [48188, 88624, 121403, 575709, 26406], 0, "default.jpg"],
["⑫콜오브듀티모던워페", 67, 10, 84, "che_event_집중", [26962, 17161, 10166, 162451, 4866], 0, "default.jpg"],
["㉔천무군사육백언", 69, 10, 84, "che_event_신중", [2691, 24634, 23579, 152708, 15548], 1, "9cc7bf4.jpg?=20200514"],
["⑦지각생", 70, 9, 78, "che_event_징병", [56118, 100258, 166732, 700840, 12866], 0, "default.jpg"],
["⑦강준상", 81, 63, 9, "che_event_저격", [39959, 89426, 895211, 222298, 38418], 1, "6e146a6.jpg?=20190208"],
["⑨클로제린츠", 72, 10, 87, "che_event_집중", [27280, 35134, 38566, 423035, 29805], 1, "3333f22.png?=20190421"],
["④리자", 90, 11, 11, "che_event_견고", [1624, 0, 0, 3270, 106626], 1, "3347525.jpg?=20180923"],
["⑤내정관리", 64, 9, 75, "che_event_환술", [20933, 13179, 31599, 255307, 6447], 0, "default.jpg"],
["⑩할머니가타고있어요", 79, 9, 60, "che_event_저격", [0, 0, 0, 0, 451820], 1, "d44d197.jpg?=20190511"],
["⑤쒸프트키까안빠쪄요", 75, 65, 9, "che_event_돌격", [27314, 54053, 502008, 102585, 34047], 1, "df1edd9.jpg?=20181112"],
["⑪아이린", 69, 88, 10, "che_event_의술", [38847, 302361, 10787, 108187, 15091], 1, "8dac73c.jpg?=20180922"],
["①숨질래", 72, 10, 82, "che_event_신중", [26125, 51576, 13806, 143839, 12059], 1, "14451e7.jpg?=20180628"],
["⑰아무생각이없다", 82, 71, 11, "che_event_저격", [77665, 534847, 42515, 88850, 83144], 1, "b205386.png?=20191121"],
["⑩카이스트", 86, 31, 33, "che_event_저격", [0, 0, 0, 0, 1223236], 1, "9361ef8.jpg?=20180907"],
["②ㄹㅇㅇㄷ", 81, 70, 10, "che_event_필살", [14492, 94130, 12818, 27543, 2501], 0, "default.jpg"],
["⑫카오스피닉스", 74, 10, 87, "che_event_격노", [43498, 45060, 17716, 492016, 52704], 1, "7f80b2f.jpg?=20190715"],
["③료우기시키", 73, 83, 10, "che_event_돌격", [12205, 81805, 567176, 112020, 39996], 1, "21b50f8.jpg?=20180628"],
["⑥rm", 68, 85, 10, "che_event_필살", [154644, 8568, 16381, 30634, 20576], 0, "default.jpg"],
["㉔세미얼터", 81, 71, 11, "che_event_기병", [2742, 0, 146616, 38088, 28427], 1, "5b8a3a2.png?=20200515"],
["㉒펭수크류", 71, 10, 81, "che_event_신산", [33213, 26177, 39027, 176741, 8993], 1, "51540ea.jpg?=20200425"],
["⑤수장", 71, 69, 9, "che_event_징병", [393819, 14573, 99500, 192367, 10696], 1, "d74c9d2.png?=20181115"],
["㉑너굴", 69, 10, 85, "che_event_신중", [16178, 7887, 20527, 160398, 32499], 1, "66117f6.jpg?=20200326"],
["④에스프레소", 71, 10, 85, "che_event_척사", [16033, 19220, 34154, 301057, 18160], 1, "414450a.jpg?=20180920"],
["⑨만샘", 70, 10, 90, "che_event_척사", [46471, 30711, 39646, 423223, 17614], 1, "4a206a1.jpg?=20181122"],
["⑥낙지꾸미", 70, 10, 86, "che_event_집중", [25236, 39355, 54994, 269065, 12632], 0, "default.jpg"],
["②의의동망", 73, 11, 83, "che_event_징병", [23486, 79302, 65582, 263157, 10248], 0, "default.jpg"],
["⑦엘레나", 76, 66, 9, "che_event_저격", [20447, 91942, 651419, 217481, 17384], 0, "default.jpg"],
["⑥하더놈", 79, 77, 10, "che_event_격노", [47846, 173265, 27062, 45012, 8575], 0, "default.jpg"],
["⑩무면허음주졸음운전", 84, 57, 9, "che_event_저격", [0, 4964, 0, 3633, 918989], 1, "b31ef66.png?=20190509"],
["㉗레벤", 90, 76, 15, "che_event_척사", [120441, 235217, 47229, 94905, 17168], 0, "default.jpg"],
["⑩H2O", 70, 69, 10, "che_event_저격", [34, 0, 0, 0, 269246], 0, "default.jpg"],
["㉓급식왕스쿨뱅킹", 72, 10, 89, "che_event_환술", [37907, 9906, 9511, 244230, 0], 1, "6337f32.jpg?=20200130"],
["⑬낙지꿈", 67, 12, 83, "che_event_필살", [2892, 9475, 26566, 156253, 14355], 0, "default.jpg"],
["⑧강서유서", 77, 10, 71, "che_event_필살", [14075, 2897, 24731, 108732, 11313], 1, "66b9506.png?=20180830"],
["⑤ㅂ", 74, 10, 87, "che_event_귀병", [80206, 28401, 91962, 456778, 15910], 0, "default.jpg"],
["⑥사키", 71, 83, 11, "che_event_척사", [11373, 30497, 275111, 89443, 17809], 1, "e43844d.gif?=20181113"],
["⑧죽창(+5)", 71, 10, 83, "che_event_척사", [17568, 11968, 27215, 238804, 8117], 1, "1aca7f8.gif?=20190315"],
["②안함", 94, 66, 11, "che_event_돌격", [0, 8139, 60828, 37158, 71639], 0, "default.jpg"],
["①이드", 71, 86, 10, "che_event_위압", [31794, 771290, 45847, 120990, 34428], 1, "7cbc70f.jpg?=20180708"],
["⑨레프 트로츠키", 71, 10, 87, "che_event_저격", [28923, 67108, 56415, 311092, 16486], 0, "default.jpg"],
["⑫평민킬러", 75, 85, 10, "che_event_격노", [821464, 28148, 28488, 50811, 41345], 1, "fba3a6f.jpg?=20190620"],
["⑭베이비소울", 81, 74, 10, "che_event_돌격", [232065, 13137, 19322, 48172, 19217], 1, "7081d76.jpg?=20190815"],
["㉒아유", 68, 10, 84, "che_event_격노", [11833, 16785, 26012, 117790, 9230], 1, "ba186bf.gif?=20181220"],
["⑥군사", 70, 87, 10, "che_event_척사", [60174, 211670, 25411, 40467, 21897], 1, "c3ab9cf.gif?=20181214"],
["⑭RDiceR", 68, 10, 85, "che_event_귀병", [15255, 8952, 9137, 211907, 19706], 1, "52f8628.gif?=20190906"],
["㉒프린세스 라라", 69, 10, 85, "che_event_척사", [49749, 16153, 31945, 312008, 17412], 1, "74c06d5.jpg?=20200426"],
["㉑만샘", 71, 10, 83, "che_event_환술", [44529, 32519, 18408, 392858, 28775], 1, "4a206a1.jpg?=20181122"],
["⑭삼겹살", 69, 12, 84, "che_event_필살", [29349, 28857, 27566, 493233, 29115], 0, "default.jpg"],
["⑳뼈다구", 70, 10, 80, "che_event_징병", [10699, 15715, 16446, 192094, 26719], 1, "3a5cefc.jpg?=20200305"],
["⑨료우기시키", 89, 70, 10, "che_event_징병", [63515, 646751, 85636, 274417, 11284], 1, "f1d936e.jpg?=20190217"],
["③XIV", 70, 11, 84, "che_event_집중", [64494, 5167, 35960, 389298, 21709], 0, "default.jpg"],
["②라스트오더", 89, 72, 10, "che_event_징병", [68419, 352418, 128029, 126673, 20134], 1, "54eec56.jpg?=20180719"],
["⑧베스", 69, 10, 89, "che_event_징병", [31597, 9786, 44001, 196109, 173740], 1, "d06809.gif?=20190331"],
["㉕모기", 67, 10, 77, "che_event_집중", [80108, 51064, 91634, 699115, 12937], 0, "default.jpg"],
["㉓꼬리구이", 78, 10, 89, "che_event_집중", [92707, 65943, 72371, 1497580, 45820], 1, "8429eeb.jpg?=20200129"],
["④연애는글렀다", 68, 11, 87, "che_event_척사", [22244, 4444, 13810, 81458, 3146], 0, "default.jpg"],
["⑤나님짱짱맨", 62, 9, 77, "che_event_환술", [10217, 16335, 33484, 245139, 10266], 0, "default.jpg"],
["⑰테러범A", 71, 83, 10, "che_event_돌격", [5207, 31776, 380523, 65349, 40883], 1, "85ec285.jpg?=20191121"],
["⑱료우기시키", 87, 70, 10, "che_event_필살", [23567, 57578, 349644, 88587, 6442], 1, "559083f.jpg?=20190905"],
["④삼뚝배기", 74, 84, 10, "che_event_필살", [486388, 32180, 66450, 169517, 26048], 1, "b83b5ec.jpg?=20180920"],
["⑧조유리", 71, 10, 88, "che_event_환술", [17168, 49908, 57551, 419852, 24774], 1, "3c34e54.png?=20190319"],
["㉔카이스트", 67, 10, 84, "che_event_집중", [14063, 3225, 17634, 179188, 22413], 1, "9361ef8.jpg?=20180907"],
["⑨카리야건국좀", 72, 10, 85, "che_event_신중", [27807, 18047, 51723, 365393, 25330], 1, "b09d01a.jpg?=20190412"],
["㉗티와즈", 76, 88, 16, "che_event_견고", [556071, 10300, 11065, 10215, 14337], 1, "b033007.jpg?=20200813"],
["④댄스러시 스타덤", 70, 10, 87, "che_event_저격", [14825, 23016, 29737, 312419, 33446], 1, "595e059.png?=20180920"],
["⑳킹구", 89, 69, 10, "che_event_척사", [45029, 715848, 14603, 30270, 26022], 1, "fb3c625.gif?=20190428"],
["③도롱", 70, 86, 10, "che_event_징병", [10979, 73507, 235528, 63495, 3587], 0, "default.jpg"],
["⑫n아텐 누", 77, 11, 85, "che_event_의술", [52920, 72334, 38899, 871059, 38895], 1, "862bd8e.gif?=20181028"],
["①죽음의 별", 72, 10, 85, "che_event_신중", [37180, 29723, 96050, 353137, 25977], 1, "6532f29.jpg?=20180628"],
["㉒외심장", 70, 10, 85, "che_event_격노", [16952, 23301, 48755, 332118, 20076], 1, "36110cd.jpg?=20180826"],
["⑨하우젤", 86, 74, 10, "che_event_저격", [104661, 794153, 41042, 258603, 19995], 1, "dcff9fd.jpg?=20180823"],
["①니노미야아스카", 72, 82, 10, "che_event_견고", [34935, 31645, 475305, 84914, 66071], 1, "59bc7e3.jpg?=20180628"],
["⑦의리", 73, 10, 80, "che_event_환술", [0, 0, 20310, 131251, 6122], 1, "7781b99.jpg?=20190208"],
["㉓시부야 린", 89, 73, 10, "che_event_견고", [662468, 34698, 103205, 155208, 20254], 1, "4c2d759.jpg?=20200130"],
["㉑Hide_D", 70, 10, 85, "che_event_집중", [74756, 45847, 48208, 571922, 25386], 1, "9f0a2a8.png?=20200106"],
["②천사소녀네티", 78, 82, 11, "che_event_견고", [29293, 82635, 310168, 36313, 18853], 0, "default.jpg"],
["⑤야옹", 65, 9, 74, "che_event_집중", [40373, 21972, 60115, 476301, 21049], 1, "a2e5934.png?=20181005"],
["㉑동백", 78, 10, 75, "che_event_격노", [11642, 15113, 13534, 75242, 2143], 1, "77a930e.jpg?=20200403"],
["③죽창", 83, 72, 10, "che_event_징병", [20266, 91290, 428298, 89633, 23241], 1, "2bb1aa1.gif?=20180906"],
["⑦Samo", 69, 9, 78, "che_event_필살", [39017, 98992, 124392, 686942, 22982], 1, "c66b383.png?=20190128"],
["③카이스트", 80, 10, 67, "che_event_견고", [26313, 16984, 0, 113812, 1394], 1, "9361ef8.jpg?=20180907"],
["⑳하우젤", 70, 10, 82, "che_event_의술", [37358, 46474, 35833, 349428, 14200], 1, "dcff9fd.jpg?=20180823"],
["⑩쿠요", 70, 65, 9, "che_event_저격", [0, 0, 4792, 0, 176027], 1, "140a6b7.jpg?=20190425"],
["㉔료우기시키", 83, 69, 10, "che_event_위압", [4196, 20407, 121174, 15290, 16666], 1, "559083f.jpg?=20190905"],
["⑪사이다라떼", 68, 10, 88, "che_event_신산", [1262, 14488, 8803, 183807, 33362], 0, "default.jpg"],
["⑧삼남매엄마", 73, 10, 86, "che_event_필살", [59623, 21062, 54817, 450548, 43016], 0, "default.jpg"],
["⑧슈뢰딩거의컨셉", 71, 82, 11, "che_event_필살", [5959, 59489, 200209, 27348, 12419], 1, "25d2aee.png?=20190313"],
["㉙보스곰", 74, 16, 86, "che_event_징병", [5773, 10638, 9569, 140241, 12532], 1, "773556e.gif?=20190822"],
["⑬제갈여포", 68, 10, 86, "che_event_신중", [5095, 6254, 16106, 70183, 11630], 1, "e8e8adc.jpg?=20180419"],
["㉓강지", 93, 73, 10, "che_event_견고", [44477, 49136, 1025530, 49369, 60884], 1, "3a967d1.jpg?=20200129"],
["⑤쿠요", 67, 74, 9, "che_event_저격", [19103, 47276, 401889, 99063, 13258], 0, "default.jpg"],
["⑮엔야스", 71, 10, 86, "che_event_징병", [35183, 25203, 22806, 346819, 23894], 0, "default.jpg"],
["㉑뼈다구", 67, 10, 84, "che_event_척사", [2311, 11660, 18063, 100074, 10072], 1, "3a5cefc.jpg?=20200305"],
["⑩줄리엣", 83, 57, 9, "che_event_저격", [0, 0, 10522, 0, 521782], 1, "175639b.png?=20181025"],
["㉒천괴금", 82, 69, 10, "che_event_무쌍", [385643, 51874, 62500, 68081, 47300], 1, "2b239af.png?=20190824"],
["⑦ˇ˘ˇ", 82, 66, 9, "che_event_돌격", [273855, 377825, 240016, 251220, 41016], 1, "c759d44.gif?=20190304"],
["⑱카이스트", 72, 10, 88, "che_event_징병", [68073, 97291, 35977, 759031, 59509], 1, "9361ef8.jpg?=20180907"],
["⑤주사위논리학", 72, 64, 9, "che_event_저격", [12697, 53881, 270265, 117372, 7477], 0, "default.jpg"],
["㉒나주리", 68, 11, 76, "che_event_반계", [20116, 17173, 9485, 109636, 1108], 1, "f6034cb.jpg?=20200501"],
["④소열제유비", 72, 84, 10, "che_event_견고", [11387, 28409, 266302, 77049, 10257], 1, "a3b1bbb.png?=20180927"],
["㉕브라움", 70, 79, 10, "che_event_의술", [1148187, 46919, 102756, 197653, 11925], 1, "fe1f2b2.jpg?=20200604"],
["⑥ⓐ자비스", 85, 69, 10, "che_event_징병", [801593, 44873, 112364, 150904, 50588], 1, "472cf86.gif?=20181129"],
["⑦필터링", 68, 9, 80, "che_event_징병", [55599, 67493, 89094, 902284, 42323], 1, "726e55b.gif?=20190201"],
["⑧크리스토프", 69, 12, 79, "che_event_격노", [0, 19481, 12723, 169969, 10954], 1, "db80797.png?=20190319"],
["⑨이쓰미", 71, 10, 89, "che_event_격노", [23062, 44401, 88401, 493861, 28436], 1, "fd6a0fd.jpg?=20181212"],
["⑤김민주", 72, 65, 9, "che_event_척사", [319408, 14538, 73075, 90368, 16276], 1, "77f63a8.png?=20181115"],
["⑲독구", 69, 11, 82, "che_event_집중", [45070, 34467, 39750, 507842, 69412], 1, "ac701b0.jpg?=20180625"],
["⑫장손신희", 78, 83, 10, "che_event_위압", [93781, 450836, 8658, 77456, 25492], 1, "e7a5bde.jpg?=20190329"],
["㉘나누기", 75, 15, 89, "che_event_집중", [29650, 15283, 15334, 269656, 42610], 1, "913a59.png?=20200910"],
["⑲수장고기후레쉬", 80, 10, 68, "che_event_필살", [15200, 28897, 15378, 231527, 11432], 1, "1b8a3df.jpg?=20190620"],
["⑳くま", 70, 10, 85, "che_event_귀병", [44813, 44680, 27564, 545724, 32703], 1, "770f53.jpg?=20190718"],
["⑨이드", 71, 10, 88, "che_event_반계", [36788, 47153, 48086, 490883, 25385], 1, "94635d.jpg?=20190412"],
["⑲유다치", 69, 81, 10, "che_event_격노", [62138, 6372, 27245, 18063, 35289], 1, "b137f72.jpg?=20200109"],
["⑨n아텐 누", 72, 11, 85, "che_event_척사", [49309, 22980, 47358, 476320, 16007], 1, "862bd8e.gif?=20181028"],
["④제갈여포", 68, 9, 86, "che_event_반계", [30055, 19046, 18503, 259977, 30194], 1, "e8e8adc.jpg?=20180419"],
["㉑외심장", 68, 10, 86, "che_event_신산", [6561, 18117, 13756, 172785, 11193], 1, "36110cd.jpg?=20180826"],
["⑩둥근해가떡썹니다", 72, 9, 64, "che_event_저격", [0, 0, 1271, 0, 402331], 0, "default.jpg"],
["⑱Hide_D", 82, 10, 79, "che_event_반계", [23677, 64299, 101032, 1075276, 110262], 1, "ee5accd.jpg?=20190411"],
["⑦미스티", 78, 9, 66, "che_event_저격", [33389, 48563, 103132, 427364, 5118], 1, "1aadcba.png?=20180908"],
["⑬푸딩", 82, 70, 10, "che_event_무쌍", [10924, 141604, 12277, 22350, 12141], 1, "b50d01.png?=20190813"],
["⑥줄리엣 페르시아", 74, 10, 81, "che_event_저격", [52298, 54294, 52226, 477404, 31437], 1, "8c1432f.gif?=20181130"],
["⑫시뉴카린해명해", 91, 70, 10, "che_event_위압", [387404, 32960, 26004, 113309, 7305], 1, "25dd670.png?=20190718"],
["⑪사스케", 71, 84, 10, "che_event_돌격", [37570, 241466, 21685, 65233, 21668], 1, "bab8446.jpg?=20190607"],
["㉑카이스트", 71, 10, 83, "che_event_집중", [15916, 3103, 52042, 338498, 39722], 1, "9361ef8.jpg?=20180907"],
["⑯제노에이지", 69, 10, 87, "che_event_척사", [16571, 5402, 7313, 130992, 30501], 1, "ddd1fd7.jpg?=20190320"],
["㉔혜미", 86, 67, 10, "che_event_척사", [27610, 0, 16615, 320, 235800], 1, "699a977.jpg?=20200516"],
["⑯카오스피닉스", 69, 10, 87, "che_event_신중", [2923, 0, 1143, 102034, 48779], 1, "7f80b2f.jpg?=20190715"],
["①노이어", 81, 72, 11, "che_event_견고", [26847, 141906, 31976, 49329, 11615], 0, "default.jpg"],
["③미쿠", 70, 10, 82, "che_event_격노", [3236, 28883, 26843, 205329, 10790], 1, "a606d84.jpg?=20180906"],
["㉙배규리", 74, 15, 84, "che_event_징병", [0, 3898, 4601, 150071, 23672], 1, "74dec00.png?=20201114"],
["⑦Rei", 68, 76, 9, "che_event_징병", [406414, 46243, 39348, 224137, 55618], 1, "e7d55b1.jpg?=20190305"],
["⑩힐드", 85, 10, 9, "che_event_저격", [0, 0, 0, 0, 721701], 1, "af3224d.gif?=20190608"],
["⑮혜낭", 90, 70, 10, "che_event_격노", [39320, 65587, 554941, 56519, 25250], 1, "20f2421.gif?=20191007"],
["⑤이곽", 65, 75, 9, "che_event_척사", [15365, 28237, 253654, 122823, 7441], 1, "2fe54e6.jpg?=20181026"],
["㉑아키라의노예", 70, 10, 85, "che_event_척사", [7927, 3398, 11368, 185220, 10395], 1, "773556e.gif?=20190822"],
["④에드나", 72, 83, 10, "che_event_돌격", [32525, 447053, 35207, 149488, 23531], 1, "7c39fe8.gif?=20181007"],
["⑨보만다", 72, 85, 10, "che_event_위압", [15320, 19270, 451860, 95652, 29799], 1, "987059d.png?=20190416"],
["⑪비스마르크", 69, 85, 11, "che_event_견고", [59569, 350127, 4276, 106365, 19326], 0, "default.jpg"],
["⑫킹구갓구", 67, 87, 10, "che_event_격노", [683, 438, 87969, 16238, 14758], 1, "fb3c625.gif?=20190428"],
["⑦내정하면서구경", 78, 68, 11, "che_event_견고", [15879, 79061, 9283, 34178, 0], 0, "default.jpg"],
["⑩다시용", 85, 55, 21, "che_event_저격", [0, 0, 0, 0, 442376], 1, "224e088.jpg?=20190210"],
["⑧조밧", 67, 11, 89, "che_event_격노", [5925, 9749, 13547, 124949, 1988], 1, "f2d4b4.jpg?=20180629"],
["㉕치카", 74, 10, 67, "che_event_집중", [68769, 37400, 55441, 480780, 5910], 1, "890b253.jpg?=20191024"],
["㉘하우젤", 75, 15, 93, "che_event_필살", [12922, 34062, 17431, 324008, 21805], 1, "dcff9fd.jpg?=20180823"],
["⑫사이다라떼", 71, 11, 87, "che_event_반계", [32848, 38480, 21271, 270165, 26294], 0, "default.jpg"],
["⑧제노에이지", 73, 10, 89, "che_event_징병", [15693, 77469, 55024, 486598, 42597], 1, "ddd1fd7.jpg?=20190320"],
["②백순대먹고싶다정말", 73, 87, 10, "che_event_징병", [404116, 106854, 104632, 72717, 34280], 1, "745f44.png?=20180801"],
["④긴토키", 73, 83, 10, "che_event_위압", [7322, 36684, 270663, 84802, 12648], 1, "4f652ac.jpg?=20180920"],
["⑥아리아", 90, 12, 10, "che_event_척사", [0, 0, 0, 0, 103155], 1, "810c706.jpg?=20181204"],
["②갓오브블랙필드", 76, 87, 10, "che_event_척사", [8902, 127122, 1167401, 175493, 73242], 1, "51d1f77.jpg?=20180719"],
["⑨갓게이밍", 73, 10, 85, "che_event_귀병", [8031, 27721, 14522, 196166, 7523], 0, "default.jpg"],
["⑪고챱챱", 70, 10, 79, "che_event_귀병", [12080, 19902, 23658, 148494, 78], 1, "a036f8d.jpg?=20190625"],
["⑥마시멜로", 71, 85, 10, "che_event_척사", [156893, 79591, 61931, 39027, 9034], 1, "50102de.jpg?=20181129"],
["㉘불반도", 77, 15, 90, "che_event_환술", [48158, 28371, 34182, 367456, 8475], 0, "default.jpg"],
["⑦하치쿠지 마요이", 63, 9, 76, "che_event_반계", [11230, 8229, 32794, 329634, 10963], 1, "5ae23b6.png?=20190125"],
["㉖????", 85, 16, 79, "che_event_신산", [10110, 46523, 17083, 203641, 24701], 1, "c32df1b.png?=20200716"],
["⑳ㅇㄷㄷㄷㄷ", 86, 65, 10, "che_event_위압", [20920, 3639, 9650, 5776, 217267], 0, "default.jpg"],
["⑤토르", 70, 70, 9, "che_event_위압", [13891, 78002, 475486, 166609, 20564], 1, "5dc81c4.jpg?=20181025"],
["⑩오빠차뽑았다", 81, 56, 9, "che_event_저격", [0, 4052, 6894, 0, 808342], 0, "default.jpg"],
["⑫엔야스", 75, 79, 10, "che_event_필살", [279613, 20674, 50420, 83533, 5610], 0, "default.jpg"],
["⑨이거뭔겜임", 74, 82, 10, "che_event_궁병", [75422, 301634, 7768, 97862, 19755], 0, "default.jpg"],
["⑬개미호랑이", 73, 10, 83, "che_event_반계", [31732, 21205, 25759, 251836, 17704], 1, "fccc37e.jpg?=20190718"],
["⑦새장속의이상향", 67, 78, 10, "che_event_무쌍", [568342, 21286, 106013, 176015, 19470], 1, "83e3447.png?=20181025"],
["④제노에이지", 69, 10, 87, "che_event_반계", [16309, 18458, 42793, 308218, 32981], 1, "af4fec8.png?=20180818"],
["㉒12팩에2전설뜸", 71, 10, 81, "che_event_귀병", [24968, 20532, 26863, 320559, 15379], 0, "default.jpg"],
["②얍얍", 68, 11, 78, "che_event_격노", [911, 17228, 37991, 113521, 7690], 1, "e2ab4cc.png?=20180724"],
["⑮쀼웃", 70, 10, 83, "che_event_척사", [5396, 15250, 24483, 262781, 22067], 1, "8996332.jpg?=20190315"],
["⑤트리스 메리골드", 65, 9, 68, "che_event_척사", [30314, 11343, 4416, 168082, 11425], 1, "b319a52.gif?=20181102"],
["③악의천신", 70, 10, 83, "che_event_격노", [19282, 18707, 61114, 227276, 19514], 1, "15c55ee.jpg?=20180825"],
["⑦차민혁", 69, 9, 77, "che_event_반계", [57604, 58738, 99923, 560756, 45646], 1, "d618d9e.jpg?=20190125"],
["⑮메디브", 83, 75, 10, "che_event_저격", [37969, 64460, 532907, 107707, 32703], 1, "def2895.jpg?=20190719"],
["①카미라", 71, 82, 10, "che_event_필살", [13821, 171873, 64693, 51931, 16330], 1, "1acd89b.jpg?=20180711"],
["②미친오징어", 74, 10, 87, "che_event_격노", [10486, 56901, 91793, 322275, 29785], 1, "3257ac8.jpg?=20180702"],
["⑭보스곰", 69, 12, 84, "che_event_신중", [20892, 20619, 11898, 373761, 36358], 1, "773556e.gif?=20190822"],
["⑫꼬리", 72, 10, 91, "che_event_신산", [34317, 33432, 27660, 414807, 74294], 1, "33d4b88.jpg?=20190718"],
["⑭외심장", 71, 10, 85, "che_event_징병", [29197, 17856, 22532, 344942, 23220], 1, "36110cd.jpg?=20180826"],
["㉔평민킬러", 68, 10, 85, "che_event_신산", [1018, 5217, 15551, 136102, 9997], 1, "fb23a32.jpg?=20190904"],
["⑩런닝머신", 83, 55, 14, "che_event_저격", [0, 0, 0, 0, 1373421], 1, "92484bf.gif?=20190530"],
["⑫이한결", 74, 86, 10, "che_event_징병", [50723, 399206, 46192, 125802, 26769], 1, "63c4de9.jpg?=20190718"],
["⑰보부상", 83, 70, 10, "che_event_저격", [13971, 53677, 255336, 78844, 8343], 0, "default.jpg"],
["②미야노", 75, 87, 10, "che_event_견고", [51123, 578755, 94523, 120407, 50140], 1, "c0ee2d4.gif?=20180810"],
["㉕Hide_D", 64, 10, 82, "che_event_환술", [78921, 28116, 98282, 962494, 25927], 1, "9f0a2a8.png?=20200106"],
["⑤안젤리카", 64, 9, 78, "che_event_징병", [44868, 39118, 49174, 362569, 5650], 1, "21ed85a.jpg?=20181027"],
["㉓삼모몰라요", 75, 10, 88, "che_event_신중", [81146, 70702, 58908, 917107, 33321], 0, "default.jpg"],
["⑮멘헤라쨩", 78, 65, 15, "che_event_필살", [94766, 0, 10645, 17443, 11433], 1, "9e75693.gif?=20190908"],
["⑭모가미 시즈카", 87, 67, 10, "che_event_무쌍", [615372, 54021, 69462, 78953, 21642], 1, "5106f38.jpg?=20190905"],
["⑳임사영", 71, 10, 86, "che_event_집중", [38044, 46007, 22761, 356390, 61435], 1, "7f9473e.gif?=20200211"],
["④힝힝", 69, 85, 10, "che_event_저격", [389589, 10243, 26616, 42848, 44706], 1, "298293e.jpg?=20181006"],
["㉗플라", 90, 75, 15, "che_event_돌격", [37185, 273841, 127436, 98723, 19487], 1, "816bde9.jpg?=20200716"],
["②SARS", 64, 24, 85, "che_event_척사", [25531, 83930, 84949, 328883, 57640], 0, "default.jpg"],
["⑭평민킬러", 71, 85, 10, "che_event_징병", [466787, 17528, 56192, 82285, 38700], 1, "fb23a32.jpg?=20190904"],
["⑯크람푸스", 69, 10, 87, "che_event_신중", [1, 7058, 5433, 182682, 24958], 1, "8eb225b.gif?=20191104"],
["⑩고차비", 84, 9, 58, "che_event_저격", [0, 0, 0, 0, 817410], 1, "9a2b7ec.jpg?=20190511"],
["⑧수장", 76, 84, 10, "che_event_격노", [14890, 40335, 300427, 86584, 30832], 1, "20ada6f.png?=20190311"],
["③아오바 모카", 80, 72, 10, "che_event_위압", [35988, 165861, 25417, 55446, 6622], 1, "8e5030a.gif?=20180830"],
["③SARS", 58, 27, 83, "che_event_저격", [69179, 84867, 44979, 562722, 42208], 1, "b84944.jpg?=20180829"],
["⑮외심장", 73, 85, 10, "che_event_무쌍", [18163, 41883, 335313, 111011, 40531], 1, "36110cd.jpg?=20180826"],
["④박일아", 76, 10, 82, "che_event_격노", [36629, 45610, 75787, 324790, 3124], 1, "94d1ccd.gif?=20180830"],
["③시나", 80, 76, 10, "che_event_돌격", [109774, 335579, 26438, 84316, 19197], 1, "1216034.jpg?=20180901"],
["⑭비스마르크", 66, 10, 80, "che_event_징병", [8841, 5927, 2837, 72663, 14522], 0, "default.jpg"],
["⑦김주영", 76, 9, 73, "che_event_반계", [89339, 72214, 133312, 1112264, 36168], 1, "ecadeaf.png?=20190221"],
["⑦논암", 67, 12, 82, "che_event_집중", [0, 1973, 19227, 91194, 4098], 1, "cb0f7bc.jpg?=20190222"],
["⑤공주", 73, 65, 9, "che_event_징병", [89159, 330430, 37518, 95746, 12310], 1, "d5bbf17.jpg?=20181122"],
["⑥뭐지", 69, 87, 10, "che_event_격노", [25777, 186271, 6404, 54235, 5505], 0, "default.jpg"],
["⑤태극권", 86, 74, 11, "che_event_저격", [145719, 155059, 525887, 210483, 9137], 1, "e7183a7.jpg?=20181101"],
["⑥냐옹", 69, 10, 82, "che_event_신중", [0, 38119, 25027, 163919, 6220], 1, "1cfe7a.jpg?=20181204"],
["㉕강미정", 82, 59, 10, "che_event_징병", [1833, 5798, 17483, 4995, 109147], 1, "4794a22.jpg?=20200630"],
["㉖금위요동중갑대", 73, 16, 88, "che_event_반계", [14857, 25065, 4688, 115732, 10704], 0, "default.jpg"],
["⑧프로야구매니저", 72, 89, 10, "che_event_견고", [86067, 799568, 43017, 114030, 58358], 1, "2f51d31.jpg?=20190318"],
["②마츠자카 사토", 77, 10, 86, "che_event_신중", [48092, 110325, 118787, 835733, 46144], 1, "47260a1.jpg?=20180813"],
["⑭밀리언라이브", 81, 71, 10, "che_event_돌격", [17600, 20272, 270284, 102876, 8527], 0, "default.jpg"],
["⑧NoA", 71, 10, 90, "che_event_격노", [6112, 27636, 29525, 289306, 21273], 0, "default.jpg"],
["㉔닭둘기", 84, 67, 11, "che_event_필살", [15965, 173400, 37401, 38961, 28590], 1, "dcf6070.jpg?=20200514"],
["④각영의풍수사린네", 69, 10, 85, "che_event_신산", [22484, 11786, 14991, 78915, 5267], 1, "ec8b09d.jpg?=20181005"],
["⑥김나영", 71, 84, 10, "che_event_위압", [334671, 16092, 77932, 51721, 24046], 1, "2e8d570.jpg?=20180823"],
["⑭개미호랑이", 70, 10, 84, "che_event_필살", [13639, 16468, 44999, 337391, 63892], 1, "fccc37e.jpg?=20190718"],
["⑩Dynamix", 81, 63, 9, "che_event_저격", [0, 0, 0, 0, 253848], 1, "aafaa29.jpg?=20190509"],
["④페이트", 84, 68, 10, "che_event_기병", [31169, 68619, 59211, 64190, 19858], 1, "31f2522.jpg?=20180922"],
["⑬서새봄", 84, 70, 11, "che_event_징병", [11401, 62444, 368968, 66871, 27382], 1, "b5add3a.jpg?=20190815"],
["㉓아유", 76, 10, 87, "che_event_집중", [61104, 57942, 56480, 828942, 26841], 1, "ba186bf.gif?=20181220"],
["㉕펭수", 66, 10, 76, "che_event_척사", [38254, 31013, 31044, 584532, 20208], 1, "51540ea.jpg?=20200425"],
["⑨망나뇽", 70, 84, 12, "che_event_척사", [104938, 202890, 30644, 81780, 0], 0, "default.jpg"],
["⑨김불꽃", 70, 10, 88, "che_event_징병", [16304, 47170, 27329, 171851, 5404], 0, "default.jpg"],
["㉖수장", 84, 81, 15, "che_event_위압", [275020, 9883, 12463, 43924, 26502], 1, "190d7ff.jpg?=20200312"],
["⑪철푸덕", 70, 10, 88, "che_event_신중", [16840, 11570, 10514, 226394, 20204], 1, "dbe0759.jpg?=20190708"],
["①미스티", 87, 67, 10, "che_event_위압", [378651, 68043, 59721, 96238, 23956], 0, "default.jpg"],
["⑪반역의루돌프", 82, 66, 13, "che_event_무쌍", [190460, 21059, 34520, 61975, 3668], 0, "default.jpg"],
["⑤랜임살인마", 76, 63, 9, "che_event_궁병", [62454, 70517, 441757, 105519, 9895], 0, "default.jpg"],
["⑨개미호랑이", 72, 10, 88, "che_event_귀병", [52982, 45959, 84663, 774816, 28873], 1, "81a1d5f.jpg?=20190501"],
["⑪평민킬러", 71, 87, 10, "che_event_격노", [451835, 14094, 19512, 79452, 22849], 1, "fba3a6f.jpg?=20190620"],
["③후타바 안즈", 71, 11, 84, "che_event_환술", [29316, 44125, 41520, 383093, 34577], 1, "75c78e2.jpg?=20180907"],
["⑤아미노", 66, 72, 9, "che_event_견고", [81769, 261462, 29042, 83248, 15730], 1, "597abe5.png?=20181111"],
["①아소", 82, 10, 72, "che_event_징병", [14824, 66603, 34577, 274537, 17255], 1, "3d22492.jpg?=20180417"],
["⑥새장속의이상향", 73, 82, 10, "che_event_견고", [75684, 677918, 41624, 173500, 24281], 1, "83e3447.png?=20181025"],
["⑩미스티", 85, 57, 9, "che_event_저격", [0, 0, 0, 0, 362123], 1, "1aadcba.png?=20180908"],
["③EMP", 73, 10, 84, "che_event_격노", [25568, 91687, 11185, 650072, 47161], 0, "default.jpg"],
["①카오스피닉스", 71, 10, 83, "che_event_신중", [44331, 48376, 19179, 385408, 34139], 1, "2af0641.jpg?=20180706"],
["㉗김갑환", 84, 81, 16, "che_event_견고", [103424, 21271, 295071, 105466, 19801], 1, "dcff9fd.jpg?=20180823"],
["⑬템", 69, 11, 83, "che_event_신산", [23431, 14671, 35115, 270986, 3503], 0, "default.jpg"],
["①먹고튄다", 81, 72, 11, "che_event_돌격", [21814, 369560, 15221, 74569, 36015], 1, "c096284.jpg?=20180629"],
["④Card", 87, 69, 10, "che_event_필살", [26268, 337804, 19074, 85932, 19302], 1, "1dcceff.gif?=20180920"],
["㉖Nunsense", 84, 77, 15, "che_event_징병", [21737, 121669, 7073, 50092, 2716], 1, "8b9b041.jpg?=20200721"],
["⑬규일", 69, 10, 85, "che_event_귀병", [5417, 13795, 15760, 191640, 11158], 1, "a5022a1.jpg?=20190816"],
["㉕광순이", 63, 10, 81, "che_event_환술", [63771, 27976, 27041, 399189, 27199], 1, "9babce2.jpg?=20200616"],
["⑨퍼즐앤드래곤", 69, 10, 88, "che_event_척사", [39428, 21497, 29941, 285457, 25634], 0, "default.jpg"],
["⑨리플", 73, 84, 10, "che_event_의술", [345042, 37101, 130088, 93855, 20830], 1, "fb3c625.gif?=20190428"],
["㉕연기처럼", 80, 10, 68, "che_event_신산", [47388, 4723, 10459, 179074, 2474], 0, "default.jpg"],
["㉔펭수", 68, 11, 83, "che_event_필살", [8290, 5150, 3316, 134253, 17116], 1, "51540ea.jpg?=20200425"],
["㉖평민킬러", 75, 92, 15, "che_event_무쌍", [425157, 4564, 31773, 77457, 36426], 1, "fb23a32.jpg?=20190904"],
["④n아텐 누", 86, 72, 10, "che_event_격노", [368263, 44015, 127536, 120706, 11910], 1, "f52b563.png?=20180914"],
["⑬천통해서출세한삐약", 67, 84, 10, "che_event_필살", [7618, 17067, 67890, 13685, 2335], 1, "419b281.png?=20190816"],
["⑨노네임", 88, 72, 10, "che_event_척사", [39814, 296789, 25358, 134299, 5472], 0, "default.jpg"],
["㉗불반도", 74, 17, 92, "che_event_신중", [40918, 14960, 26391, 211317, 10188], 0, "default.jpg"],
["③새벽공방", 71, 10, 84, "che_event_필살", [22487, 25116, 49590, 316421, 25480], 1, "4d11903.jpg?=20180825"],
["㉖현피1을위하여", 73, 16, 83, "che_event_집중", [7590, 9754, 0, 82219, 6348], 0, "default.jpg"],
["⑥Pretty레아", 70, 84, 11, "che_event_필살", [17266, 61082, 270444, 92327, 16896], 0, "default.jpg"],
["⑩북오더", 85, 58, 9, "che_event_저격", [0, 0, 0, 0, 1496612], 1, "4939af6.gif?=20190609"],
["⑥하우젤", 87, 70, 10, "che_event_징병", [18556, 134909, 350604, 68436, 17448], 1, "dcff9fd.jpg?=20180823"],
["②홍재", 78, 10, 71, "che_event_필살", [0, 27863, 24031, 62919, 564], 1, "42a2b81.png?=20180724"],
["①호시노 루리", 85, 70, 11, "che_event_척사", [27525, 590785, 47483, 117144, 146758], 1, "e728603.jpg?=20180713"],
["⑰시그", 72, 84, 10, "che_event_격노", [361479, 3309, 49312, 40914, 46558], 1, "e397de6.jpg?=20191120"],
["㉒개장수", 82, 69, 10, "che_event_무쌍", [16732, 358774, 25853, 76195, 12038], 1, "df79d1c.jpg?=20200428"],
["③만샘", 86, 69, 10, "che_event_징병", [26947, 87453, 405727, 96793, 28901], 1, "37d189c.jpg?=20180420"],
["⑰제노에이지", 67, 12, 82, "che_event_징병", [1109, 23572, 0, 131049, 18895], 1, "ddd1fd7.jpg?=20190320"],
["⑮미야노", 75, 84, 10, "che_event_돌격", [39199, 433325, 32155, 53052, 19503], 1, "ab9cd7d.gif?=20190926"],
["⑦이피스", 90, 9, 9, "che_event_위압", [0, 0, 16459, 16126, 465934], 1, "9e64c3b.jpg?=20190201"],
["⑧카라", 76, 11, 83, "che_event_집중", [20418, 73928, 54682, 629102, 41595], 1, "64170a1.jpg?=20190406"],
["⑮카이스트", 72, 11, 84, "che_event_척사", [20818, 13317, 17376, 304792, 21070], 1, "9361ef8.jpg?=20180907"],
["④광삼이", 76, 10, 80, "che_event_저격", [31122, 54275, 38528, 198861, 12359], 1, "69fc07c.jpg?=20180926"],
["⑪유튜브친구들", 69, 10, 87, "che_event_징병", [31651, 35996, 26865, 232785, 7071], 1, "c213511.jpg?=20190628"],
["㉔카나리아", 69, 10, 84, "che_event_신중", [27037, 20893, 25685, 360770, 35575], 1, "2a52361.jpg?=20200514"],
["⑥해피너스", 72, 10, 84, "che_event_징병", [41029, 47386, 64024, 301987, 15478], 1, "ec883eb.jpg?=20181130"],
["⑥농장소녀", 69, 85, 10, "che_event_척사", [300279, 25273, 36052, 38969, 30195], 1, "d367ca5.jpg?=20181201"],
["⑰Navy마초", 71, 82, 10, "che_event_무쌍", [57935, 62932, 192921, 78948, 3194], 0, "default.jpg"],
["⑤앵서벌서", 76, 66, 9, "che_event_징병", [368363, 77168, 94439, 172024, 10765], 1, "4a0ff8e.gif?=20181117"],
["㉒네티", 83, 70, 11, "che_event_돌격", [20840, 62661, 437362, 63003, 30100], 1, "ac91b73.jpg?=20200423"],
["⑤WA2000", 60, 76, 9, "che_event_위압", [46281, 103947, 4803, 41325, 9234], 1, "786a5da.png?=20181026"],
["②다다", 80, 11, 81, "che_event_징병", [0, 12314, 22911, 106972, 7236], 0, "default.jpg"],
["㉒료우기시키", 82, 69, 10, "che_event_돌격", [26414, 293380, 31786, 83961, 25899], 1, "559083f.jpg?=20190905"],
["㉔행복했으면좋겠어", 69, 10, 83, "che_event_저격", [0, 4680, 3987, 79087, 17716], 0, "default.jpg"],
["⑱우웅...", 73, 10, 87, "che_event_척사", [42145, 49425, 75640, 748505, 70358], 1, "3fb3ee0.jpg?=20191211"],
["⑧쉐도우 핀드", 71, 10, 91, "che_event_집중", [21284, 30636, 28389, 333227, 17077], 1, "18dc25d.jpg?=20190405"],
["⑧광삼이", 73, 11, 80, "che_event_신산", [17853, 2489, 55595, 236139, 12880], 1, "69fc07c.jpg?=20180926"],
["⑧천괴금", 70, 88, 10, "che_event_위압", [9044, 5648, 93306, 20431, 5073], 1, "e15f4b5.png?=20181216"],
["①등갑병", 82, 67, 10, "che_event_돌격", [85376, 7149, 0, 46100, 11418], 1, "97aba2f.gif?=20180628"],
["⑦늘모", 66, 80, 9, "che_event_무쌍", [26031, 85563, 522279, 177658, 18222], 1, "e7c163.png?=20180801"],
["㉒카이스트", 71, 10, 84, "che_event_징병", [39400, 41549, 62758, 438213, 19053], 1, "9361ef8.jpg?=20180907"],
["㉒칸나", 83, 71, 10, "che_event_견고", [44524, 253186, 14678, 39692, 19215], 0, "default.jpg"],
["①뽀빠이", 68, 83, 10, "che_event_저격", [7460, 65561, 57381, 28194, 16111], 1, "2eb5589.png?=20180702"],
["⑨sifmd", 71, 10, 86, "che_event_신중", [29311, 26218, 78883, 341939, 20436], 1, "4d82adb.jpg?=20190325"],
["⑪극새ㅅ사이브ㄹ", 67, 10, 90, "che_event_신중", [10771, 10616, 14553, 202092, 36147], 1, "6e009d9.jpg?=20190620"],
["③신형만", 82, 71, 10, "che_event_징병", [20930, 76782, 325605, 113977, 16035], 1, "b46c3e1.jpg?=20180901"],
["⑱병리학적자세", 71, 10, 89, "che_event_귀병", [21659, 36277, 69559, 925284, 59133], 1, "3679089.jpg?=20180629"],
["③큰가슴의요정", 72, 86, 10, "che_event_위압", [439634, 20784, 35678, 82477, 33598], 0, "default.jpg"],
["④살수묵랑", 75, 80, 10, "che_event_무쌍", [14110, 49444, 295360, 64506, 3643], 1, "a9298fc.png?=20180628"],
["㉖언스", 73, 15, 89, "che_event_신산", [7236, 10797, 7100, 114171, 14910], 0, "default.jpg"],
["⑦노승혜", 79, 69, 9, "che_event_위압", [1222635, 50959, 133840, 216062, 61786], 1, "b3b0886.jpg?=20190219"],
["③제갈여포", 73, 11, 82, "che_event_신산", [58372, 65706, 106074, 587072, 22847], 1, "e8e8adc.jpg?=20180419"],
["⑨권은비", 71, 10, 86, "che_event_반계", [22858, 41805, 16289, 187804, 11011], 1, "65bff5e.jpg?=20190422"],
["⑨무흐흐경찰", 72, 10, 86, "che_event_신산", [23058, 30460, 62228, 435549, 13792], 1, "b2f7938.jpg?=20190315"],
["㉗평온의온도", 75, 15, 91, "che_event_신산", [11622, 21107, 35073, 496002, 24237], 1, "7a86b2f.webp?=20200826"],
["⑯샤를 드 골", 80, 10, 76, "che_event_환술", [6589, 5329, 4012, 96905, 17209], 1, "1386e61.jpg?=20191025"],
["⑮마왕", 72, 87, 11, "che_event_무쌍", [65490, 48577, 497774, 94481, 39755], 1, "eaa25e5.png?=20190910"],
["⑨늅늅", 72, 87, 10, "che_event_돌격", [44614, 44765, 489085, 125401, 18272], 0, "default.jpg"],
["⑧빠른폭탄", 69, 10, 92, "che_event_의술", [6992, 10388, 23628, 64442, 6521], 0, "default.jpg"],
["②니쉬", 64, 10, 83, "che_event_필살", [6119, 14553, 5864, 142135, 21461], 1, "aef78f7.jpg?=20180628"],
["④사운드볼텍스", 71, 84, 10, "che_event_무쌍", [15019, 14896, 276156, 48971, 31531], 1, "13a2ed0.png?=20180920"],
["㉑료우기시키", 81, 70, 10, "che_event_필살", [37897, 53513, 3116, 23685, 7194], 1, "559083f.jpg?=20190905"],
["⑩개미호랑이", 88, 9, 56, "che_event_저격", [0, 0, 0, 0, 1624312], 1, "ba5b648.jpg?=20190610"],
["④rwitch", 78, 10, 77, "che_event_격노", [19441, 41464, 56485, 244304, 12155], 1, "7b3330b.jpg?=20180920"],
["㉑김나영", 69, 86, 10, "che_event_필살", [11974, 40080, 343685, 89224, 15880], 1, "c90a3d4.jpg?=20190905"],
["⑦광삼이", 68, 9, 77, "che_event_귀병", [26255, 37934, 60910, 319547, 8750], 1, "69fc07c.jpg?=20180926"],
["㉓개미호랑이", 90, 10, 68, "che_event_징병", [24005, 37186, 41993, 87944, 134797], 1, "6ee69e8.jpg?=20191227"],
["㉕레벤", 75, 11, 83, "che_event_집중", [54256, 19340, 27550, 546810, 3674], 0, "default.jpg"],
["⑬충차아님", 87, 41, 35, "che_event_저격", [0, 0, 0, 16136, 181093], 1, "39ab9b2.jpg?=20190819"],
["㉕외심장", 67, 10, 80, "che_event_신산", [73815, 54819, 49480, 874449, 16360], 1, "36110cd.jpg?=20180826"],
["㉘킹구", 90, 78, 15, "che_event_위압", [12717, 412793, 13330, 30416, 6219], 1, "fb3c625.gif?=20190428"],
["⑧삼남매아빠", 71, 10, 92, "che_event_집중", [69023, 65980, 73118, 815914, 56232], 0, "default.jpg"],
["㉔춘몽", 67, 10, 86, "che_event_척사", [7441, 10288, 9545, 84376, 7837], 0, "default.jpg"],
["⑨이시리스", 70, 10, 89, "che_event_필살", [19121, 32305, 14316, 205254, 2988], 1, "d51af2d.jpg?=20190411"],
["㉖아르노 화포보병", 73, 15, 90, "che_event_귀병", [3277, 7431, 821, 112098, 8337], 0, "default.jpg"],
["⑦미나", 67, 9, 84, "che_event_징병", [86043, 110806, 97942, 866713, 35725], 1, "6d3a238.jpg?=20190213"],
["㉕킹구", 75, 10, 69, "che_event_신산", [66481, 24853, 38550, 894017, 12077], 1, "fb3c625.gif?=20190428"],
["④드림캐쳐", 68, 9, 88, "che_event_의술", [22724, 23998, 6663, 167555, 15471], 1, "dd09952.png?=20180920"],
["①김소정넘나이쁜것", 69, 11, 81, "che_event_징병", [16254, 39125, 4767, 122728, 23430], 1, "90d437a.jpg?=20180606"],
["②아라쉬", 85, 65, 11, "che_event_저격", [17356, 151274, 45140, 44126, 8993], 1, "6ee4951.jpg?=20180719"],
["⑩이드", 87, 57, 9, "che_event_저격", [0, 0, 0, 0, 1373926], 1, "94635d.jpg?=20190412"],
["②시타", 82, 69, 10, "che_event_돌격", [20852, 153098, 3751, 31836, 2657], 1, "3e9a72e.jpg?=20180719"],
["㉒smile", 70, 10, 84, "che_event_징병", [19418, 26454, 44611, 337945, 22507], 0, "default.jpg"],
["㉓독구", 76, 11, 88, "che_event_환술", [90929, 50662, 52549, 799878, 29052], 1, "ac701b0.jpg?=20180625"],
["⑮연우", 71, 10, 86, "che_event_징병", [26533, 26975, 93587, 344490, 24977], 0, "default.jpg"],
["③진실의 심연", 74, 83, 11, "che_event_돌격", [56662, 99503, 1119895, 181724, 53649], 0, "default.jpg"],
["㉑김갑환", 79, 72, 10, "che_event_돌격", [5165, 6397, 113326, 39268, 7284], 1, "dcff9fd.jpg?=20180823"],
["⑲개미호랑이", 82, 70, 11, "che_event_위압", [23725, 71821, 562276, 73460, 28186], 1, "6ee69e8.jpg?=20191227"],
["㉙낙지꿈", 71, 15, 87, "che_event_신중", [10409, 2823, 3628, 145487, 30121], 0, "default.jpg"],
["⑥만샘", 72, 83, 11, "che_event_돌격", [37015, 374296, 36656, 60899, 32807], 1, "4a206a1.jpg?=20181122"],
["㉕레오루", 75, 68, 10, "che_event_돌격", [54464, 91712, 333212, 113693, 21329], 1, "ed5f2c2.jpg?=20200604"],
["㉕뜨뜨뜨뜨", 70, 10, 74, "che_event_집중", [41344, 34023, 34073, 650064, 12677], 1, "a1ad420.jpg?=20200425"],
["㉕보스곰", 65, 10, 79, "che_event_반계", [61643, 30317, 33826, 553095, 11439], 1, "773556e.gif?=20190822"],
["③くま", 73, 11, 83, "che_event_필살", [113543, 46422, 129400, 604810, 25853], 0, "default.jpg"],
["⑨외심장", 70, 10, 88, "che_event_저격", [16895, 25101, 20493, 256737, 14980], 1, "36110cd.jpg?=20180826"],
["⑧캐서린", 70, 10, 89, "che_event_신산", [37269, 25685, 56910, 368524, 25667], 0, "default.jpg"],
["㉖Hide_D", 74, 15, 92, "che_event_척사", [32339, 30842, 12613, 323136, 30963], 1, "9f0a2a8.png?=20200106"],
["⑧김나영", 72, 87, 10, "che_event_척사", [46077, 39762, 435883, 92282, 13809], 1, "2e8d570.jpg?=20180823"],
["⑩료우기시키", 82, 59, 9, "che_event_저격", [0, 0, 0, 0, 893965], 1, "f1d936e.jpg?=20190217"],
["⑩Hide_D", 88, 9, 56, "che_event_저격", [0, 1516, 8616, 0, 1486882], 1, "ee5accd.jpg?=20190411"],
["⑳AP샤코", 71, 10, 87, "che_event_필살", [34077, 41068, 34664, 509392, 50481], 0, "default.jpg"],
["⑦개미호랑이", 67, 9, 83, "che_event_반계", [82018, 88841, 114731, 647083, 20661], 1, "e1d9077.png?=20190218"],
["③타케우치P", 72, 82, 11, "che_event_격노", [28009, 48039, 489550, 73789, 50493], 1, "abf3658.jpg?=20180910"],
["④나가토 유키", 71, 10, 83, "che_event_반계", [32533, 16472, 21878, 222186, 17906], 1, "1b4d5a9.jpg?=20180922"],
["㉖보스곰", 74, 15, 91, "che_event_집중", [49, 23974, 13619, 316891, 23608], 1, "773556e.gif?=20190822"],
["⑩교통경찰", 83, 57, 9, "che_event_저격", [0, 0, 0, 0, 248443], 1, "579af6f.jpg?=20190510"],
["⑥긴토키", 86, 68, 11, "che_event_척사", [67708, 327058, 28720, 96922, 10584], 1, "1336ea.jpg?=20181025"],
["㉑이드", 71, 83, 10, "che_event_위압", [93925, 127735, 47554, 43226, 16949], 1, "ee26023.jpg?=20200402"],
["⑧Rwitch", 69, 10, 90, "che_event_징병", [20740, 22425, 39676, 266463, 19117], 1, "4d82adb.jpg?=20190325"],
["⑧베니엔마", 86, 72, 11, "che_event_돌격", [295425, 14278, 52491, 93844, 26633], 1, "b5a5e4e.jpg?=20190405"],
["⑲삼모몰라요", 83, 70, 10, "che_event_돌격", [22100, 30046, 388989, 57810, 32699], 0, "default.jpg"],
["④눈의소리", 67, 10, 85, "che_event_격노", [7133, 21070, 15591, 135939, 10696], 0, "default.jpg"],
["⑨카이스트", 71, 10, 88, "che_event_신산", [11329, 15008, 16703, 273114, 26484], 1, "9361ef8.jpg?=20180907"],
["㉖연", 89, 76, 15, "che_event_필살", [0, 14, 20901, 5923, 189277], 1, "574aa5f.png?=20200802"],
["⑦카이스트", 69, 9, 78, "che_event_징병", [98286, 132555, 125719, 673684, 13393], 1, "9361ef8.jpg?=20180907"],
["③ㅇㄷㄷㄷ", 73, 82, 10, "che_event_무쌍", [78723, 322171, 50117, 104444, 12602], 0, "default.jpg"],
["⑦히카와 사요", 67, 82, 10, "che_event_무쌍", [1367, 9882, 117106, 16550, 0], 1, "574cb8d.png?=20190126"],
["㉘낙지꿈", 75, 16, 91, "che_event_환술", [49689, 24687, 49890, 372449, 4668], 0, "default.jpg"],
["⑦황우주", 73, 9, 73, "che_event_저격", [70906, 58833, 121731, 965893, 64148], 1, "f79fd07.gif?=20190224"],
["㉗김나영", 73, 92, 16, "che_event_위압", [59501, 279824, 20812, 68418, 87778], 1, "c90a3d4.jpg?=20190905"],
["㉙조승상", 87, 72, 16, "che_event_척사", [205872, 5254, 26663, 31698, 18211], 1, "bda7d37.jpg?=20200606"],
["⑲금사향", 70, 11, 83, "che_event_격노", [50385, 16064, 26920, 427418, 39780], 1, "4deb6fb.jpg?=20191229"],
["⑪Samo", 71, 85, 10, "che_event_저격", [263737, 8497, 45554, 58067, 17063], 1, "25449b0.png?=20190626"],
["⑨비올레타", 70, 85, 10, "che_event_필살", [45145, 193144, 10076, 60515, 10950], 1, "fe0c1d2.gif?=20190422"],
["⑩아리사", 84, 67, 10, "che_event_저격", [0, 0, 0, 0, 370368], 1, "5c5b7f.jpg?=20190509"],
["⑨제노에이지", 69, 10, 87, "che_event_징병", [20627, 23470, 63776, 279270, 3888], 1, "ddd1fd7.jpg?=20190320"],
["㉘숨질래", 75, 15, 94, "che_event_반계", [6674, 11915, 20850, 167781, 21523], 1, "7a86b2f.webp?=20200826"],
["㉘ZL", 83, 15, 76, "che_event_집중", [16143, 11560, 13934, 100111, 6971], 0, "default.jpg"],
["⑮오리온자리", 85, 74, 10, "che_event_필살", [18166, 246895, 30523, 58132, 7454], 1, "71c0d1f.jpg?=20190718"],
["①시이", 71, 9, 83, "che_event_저격", [15488, 55658, 62704, 272046, 17343], 1, "296c2e3.jpg?=20180711"],
["⑤랜덤is느낌표", 72, 9, 67, "che_event_환술", [70456, 23632, 67615, 380714, 18608], 1, "c15a1aa.jpg?=20181025"],
["㉖낙지꿈", 76, 16, 88, "che_event_신중", [17289, 23226, 23261, 258449, 23656], 0, "default.jpg"],
["①민트토끼", 72, 83, 10, "che_event_돌격", [48062, 337919, 28934, 77427, 29525], 1, "6f87652.jpg?=20180630"],
["㉒くま", 83, 68, 10, "che_event_위압", [29164, 3148, 5368, 19215, 299020], 1, "770f53.jpg?=20190718"],
["㉓딱 고정도", 76, 88, 10, "che_event_견고", [34333, 85930, 841701, 209968, 29277], 1, "ebd1bce.jpg?=20200130"],
["㉗미즈하라 치즈루", 93, 75, 15, "che_event_저격", [24606, 14798, 382590, 109486, 26909], 1, "29b7b6e.gif?=20200814"],
["⑬한동숙", 72, 84, 10, "che_event_저격", [494984, 14486, 34189, 63535, 30610], 1, "4718e6.jpg?=20190814"],
["⑥치카", 87, 67, 10, "che_event_징병", [80535, 370972, 34142, 60488, 17108], 1, "3e9a72e.jpg?=20180719"],
["④맥크리", 74, 82, 10, "che_event_의술", [24840, 59369, 248969, 77578, 6798], 1, "1565b7f.jpg?=20180920"],
["⑧카이스트", 72, 10, 88, "che_event_저격", [5220, 21659, 18515, 135336, 7131], 1, "9361ef8.jpg?=20180907"],
["⑥케이", 70, 87, 10, "che_event_돌격", [10479, 73808, 450815, 51107, 30857], 1, "d797798.jpg?=20181216"],
["⑦대천사하야미", 69, 9, 79, "che_event_징병", [106080, 86719, 144498, 965266, 29305], 1, "a72bf95.jpg?=20190221"],
["⑮아유", 68, 11, 89, "che_event_신산", [20127, 12574, 41074, 157816, 7139], 1, "ba186bf.gif?=20181220"],
["㉓아이즈원내놔", 91, 73, 11, "che_event_돌격", [73856, 132246, 1605504, 382781, 29452], 1, "99cd27f.gif?=20190606"],
["⑲Hide_D", 69, 12, 83, "che_event_필살", [39392, 30865, 9240, 261155, 14354], 1, "9f0a2a8.png?=20200106"],
["㉕독구", 82, 60, 10, "che_event_돌격", [10509, 17612, 10320, 28656, 733732], 1, "a7388f.png?=20200424"],
["⑭우주대스타나나양", 80, 76, 11, "che_event_저격", [537361, 32295, 74636, 120363, 28821], 1, "106e0d2.jpg?=20190918"],
["⑤드류", 62, 77, 9, "che_event_징병", [18350, 133925, 14123, 82371, 6921], 1, "507327d.png?=20181001"],
["⑭치약토끼", 71, 84, 10, "che_event_격노", [53358, 396148, 9361, 60086, 45003], 1, "6227d22.jpg?=20190905"],
["㉖건방진노예", 76, 90, 16, "che_event_무쌍", [23369, 239255, 17766, 38137, 33372], 1, "e1d250.png?=20200719"],
["⑧빵에건포도", 85, 76, 11, "che_event_견고", [4516, 25828, 295716, 66445, 19014], 1, "9e3f1c5.jpg?=20190313"],
["⑭스오우", 72, 10, 85, "che_event_신산", [50435, 28816, 32335, 457562, 22442], 1, "828a91e.jpg?=20190904"],
["⑤블루좀주세요", 64, 9, 77, "che_event_의술", [25799, 43944, 76290, 485586, 21028], 1, "bb7b3c6.jpg?=20181105"],
["⑦강예서", 81, 68, 9, "che_event_무쌍", [163897, 409545, 117136, 195025, 938815], 1, "431f85.png?=20190228"],
["①개발살", 69, 84, 10, "che_event_저격", [3555, 74423, 19016, 28167, 2612], 0, "default.jpg"],
["⑫반역의루돌프", 78, 74, 12, "che_event_척사", [203002, 16060, 10404, 46509, 10693], 0, "default.jpg"],
["④죽창", 85, 69, 11, "che_event_격노", [109441, 60768, 216413, 87920, 6109], 1, "1978b2c.jpg?=20180924"],
["⑪H2O", 79, 10, 74, "che_event_격노", [1214, 14059, 5289, 97232, 13343], 0, "default.jpg"],
["㉕엘사", 64, 80, 10, "che_event_위압", [622649, 45018, 48247, 102993, 23342], 1, "ee26023.jpg?=20200402"],
["⑥노이즈", 67, 11, 87, "che_event_집중", [6495, 7387, 2223, 100300, 7521], 1, "5ad5212.gif?=20181127"],
["⑰로리", 71, 10, 83, "che_event_집중", [17727, 7383, 24982, 317077, 34807], 1, "50794a6.jpg?=20190923"],
["⑩드류", 81, 35, 33, "che_event_저격", [0, 0, 0, 0, 724774], 1, "507327d.png?=20181001"],
["⑬카오스피닉스", 70, 10, 86, "che_event_집중", [18254, 15357, 23458, 244506, 27262], 1, "7f80b2f.jpg?=20190715"],
["③삼남매엄마", 72, 84, 10, "che_event_견고", [243893, 67510, 68501, 93681, 16285], 0, "default.jpg"],
["①소금ㄴㄴ염", 88, 68, 10, "che_event_격노", [14255, 33412, 198801, 39121, 243290], 1, "fb0d354.jpg?=20180629"],
["⑫외심장", 68, 10, 91, "che_event_척사", [21042, 20412, 2754, 118718, 9084], 1, "36110cd.jpg?=20180826"],
["⑩신호등", 81, 56, 9, "che_event_저격", [0, 0, 4756, 0, 408973], 1, "2959525.gif?=20190511"],
["①황제모니카", 70, 10, 86, "che_event_격노", [18951, 26179, 38251, 197419, 26191], 1, "f2d4b4.jpg?=20180629"],
["⑤줄리엣", 63, 77, 9, "che_event_필살", [24721, 174426, 26410, 63979, 7668], 1, "175639b.png?=20181025"],
["㉗슬라임", 87, 79, 15, "che_event_격노", [21520, 37308, 305010, 39429, 55017], 0, "default.jpg"],
["⑧아이린", 71, 89, 10, "che_event_돌격", [83939, 446705, 26572, 87511, 23890], 1, "8dac73c.jpg?=20180922"],
["⑬오버이지", 86, 68, 10, "che_event_저격", [6858, 22030, 289872, 35740, 15463], 1, "4a290e4.png?=20190815"],
["㉔김갑환", 81, 69, 10, "che_event_돌격", [7536, 40387, 145098, 33592, 14972], 1, "dcff9fd.jpg?=20180823"],
["④D.va", 69, 87, 10, "che_event_척사", [374470, 9464, 62295, 60333, 23264], 1, "d8ca176.jpg?=20180919"],
["㉒수장", 82, 70, 10, "che_event_의술", [362536, 15026, 65653, 105385, 20234], 1, "190d7ff.jpg?=20200312"],
["㉑야근요정헹이", 80, 10, 74, "che_event_집중", [13108, 15908, 25246, 187869, 16219], 1, "3db84f2.jpg?=20200405"],
["㉓료우기시키", 90, 75, 10, "che_event_척사", [74465, 507148, 24784, 184921, 21846], 1, "559083f.jpg?=20190905"],
["④니시키노 마키", 70, 10, 85, "che_event_반계", [19810, 14485, 24888, 149081, 4624], 1, "480aa7e.jpg?=20180919"],
["⑦외심장", 70, 9, 78, "che_event_격노", [59247, 80254, 73310, 572424, 27365], 1, "36110cd.jpg?=20180826"],
["⑥숨진사람", 68, 11, 81, "che_event_반계", [2243, 35303, 43827, 131885, 4405], 1, "bf4bcbf.jpg?=20180823"],
["㉕의협왕척신", 77, 74, 11, "che_event_격노", [65192, 12720, 85123, 57418, 5011], 0, "default.jpg"],
["④쿈", 69, 83, 10, "che_event_징병", [8740, 32514, 108713, 46967, 10238], 1, "7cdc752.jpg?=20180920"],
["⑧마법소녀매지컬모모", 75, 85, 10, "che_event_필살", [13025, 153114, 202856, 85880, 19029], 1, "ba6bfc5.jpg?=20190314"],
["④더깨끗해진참이슬", 69, 10, 81, "che_event_격노", [34585, 29646, 11430, 134968, 5943], 0, "default.jpg"],
["㉙잭프로스트", 75, 15, 86, "che_event_척사", [14350, 5835, 3653, 73127, 62457], 1, "733f3b9.jpg?=20201111"],
["⑩김여사", 83, 58, 9, "che_event_저격", [0, 2022, 1890, 0, 542604], 1, "bab8446.jpg?=20190607"],
["⑧란마 12", 74, 86, 10, "che_event_척사", [17450, 30753, 245817, 93589, 20808], 1, "2a88f2a.png?=20190318"],
["⑩무쇠다리사람", 69, 10, 78, "che_event_저격", [0, 0, 0, 0, 319561], 1, "1b4b6f7.jpg?=20190608"],
["㉑피에스타", 81, 73, 10, "che_event_무쌍", [5251, 18155, 215837, 45048, 6918], 1, "99cd27f.gif?=20190606"],
["⑧서든어택2", 72, 10, 88, "che_event_징병", [49923, 58641, 68806, 389356, 29018], 1, "22d133c.jpg?=20190317"],
["⑥아노리엔", 70, 84, 10, "che_event_격노", [16163, 10311, 233386, 79499, 9824], 0, "default.jpg"],
["③시마무라 우즈키", 71, 83, 10, "che_event_필살", [68247, 373352, 36736, 44526, 27060], 1, "11b6f0f.jpg?=20180829"],
["㉒데보라", 85, 68, 10, "che_event_견고", [47724, 452452, 29458, 79232, 33047], 1, "799e90c.jpg?=20200423"],
["㉘하루10분영어야나두", 76, 15, 90, "che_event_집중", [4293, 37851, 3682, 123181, 11194], 1, "c300801.jpg?=20200910"],
["⑲DRX Deft", 79, 72, 10, "che_event_돌격", [117502, 8118, 30454, 26519, 2219], 1, "c0c766b.jpg?=20190815"],
["⑤무지장", 65, 74, 9, "che_event_격노", [47632, 25974, 488333, 103368, 16886], 1, "6c2bf3f.jpg?=20181122"],
["①뒈코뭐리", 70, 10, 84, "che_event_신산", [44689, 36359, 28357, 313820, 41801], 1, "97ec8a1.png?=20180628"],
["⑩심심2", 85, 56, 9, "che_event_저격", [0, 0, 0, 0, 754724], 0, "default.jpg"],
["③♥女神소원♥", 74, 10, 73, "che_event_견고", [6102, 12457, 0, 86695, 0], 1, "6060a6c.jpg?=20180904"],
["⑩카라멜", 88, 9, 9, "che_event_저격", [0, 0, 0, 0, 318633], 1, "9739f48.png?=20190510"],
["④누누하라 캐비지", 70, 10, 82, "che_event_격노", [49090, 26284, 42547, 270649, 16572], 1, "30656e2.png?=20180920"],
["①코사카우미", 76, 10, 80, "che_event_신중", [13115, 14190, 4337, 61830, 357074], 1, "ccc7692.jpg?=20180628"],
["③트런들장인", 72, 79, 11, "che_event_징병", [125653, 13743, 58843, 35809, 6185], 1, "dbede87.png?=20180425"],
["⑤로키", 65, 9, 75, "che_event_징병", [80615, 12769, 74443, 314896, 17839], 1, "d95dd1d.jpg?=20181025"],
["⑯외심장", 67, 10, 88, "che_event_환술", [3948, 0, 2058, 109005, 25085], 1, "36110cd.jpg?=20180826"],
["㉒땅땅", 80, 72, 10, "che_event_저격", [10704, 77264, 216151, 57692, 27618], 1, "99cd27f.gif?=20190606"],
["③감흥", 73, 84, 10, "che_event_필살", [63621, 88372, 607386, 144303, 8012], 1, "eb2cf45.jpg?=20180805"],
["⑥리플", 70, 10, 85, "che_event_신중", [20314, 40644, 24757, 319229, 25505], 1, "fbe44ca.jpg?=20181207"],
["⑲보스곰", 70, 10, 84, "che_event_집중", [8795, 33311, 14253, 280835, 14748], 1, "773556e.gif?=20190822"],
["③쟈이젠 토키코", 78, 9, 78, "che_event_필살", [16208, 26047, 26985, 293544, 14426], 1, "30bafb0.jpg?=20180823"],
["⑩SSS급페라르기니", 83, 10, 59, "che_event_저격", [0, 3867, 10944, 2294, 1211752], 0, "default.jpg"],
["㉗외심장", 76, 15, 91, "che_event_집중", [26982, 17222, 17164, 403788, 16445], 1, "36110cd.jpg?=20180826"],
["㉕륜", 63, 10, 80, "che_event_환술", [71120, 34275, 32861, 476732, 20942], 1, "25c0eb.jpg?=20200607"],
["⑪개촐ㄹ랒필거야 ?", 81, 75, 10, "che_event_격노", [43710, 4749, 0, 18360, 48021], 1, "1b8a3df.jpg?=20190620"],
["⑤뫄뫄", 63, 77, 9, "che_event_징병", [168985, 33880, 273144, 91062, 23927], 1, "9f034b.jpg?=20181030"],
["③인기리", 81, 10, 69, "che_event_신산", [21182, 10179, 50046, 143587, 5778], 0, "default.jpg"],
["⑨다유", 71, 86, 10, "che_event_필살", [47995, 58088, 330058, 111502, 11977], 1, "f489a2a.jpg?=20181226"],
["③카오스피닉스", 72, 10, 85, "che_event_신중", [81854, 50759, 66916, 403873, 30301], 1, "2af0641.jpg?=20180706"],
["②카오스피닉스", 76, 85, 10, "che_event_견고", [30925, 124061, 542844, 92328, 36481], 1, "2af0641.jpg?=20180706"],
["⑧나마즈오", 71, 10, 88, "che_event_신중", [36479, 20869, 74232, 340024, 10479], 1, "b86fc4c.jpg?=20190314"],
["④くま", 72, 10, 83, "che_event_반계", [45619, 49464, 47425, 437741, 22690], 1, "73d75c2.jpg?=20180923"],
["②Hide_D", 75, 10, 86, "che_event_집중", [33038, 129250, 102881, 409778, 20624], 1, "21d378f.jpg?=20180630"],
["⑦★女神소원★", 70, 9, 72, "che_event_반계", [36272, 51928, 58967, 277019, 2763], 1, "6060a6c.jpg?=20180904"],
["⑨파이", 79, 81, 10, "che_event_격노", [40333, 49825, 483081, 128506, 30387], 1, "da3bc86.jpg?=20190318"],
["⑤삼남매엄마", 64, 9, 73, "che_event_귀병", [45545, 24700, 21758, 338849, 9439], 0, "default.jpg"],
["④화난용", 88, 65, 13, "che_event_저격", [24951, 7279, 22790, 29047, 407099], 1, "8b16622.jpg?=20180921"],
["⑤지용갓", 65, 9, 74, "che_event_반계", [29833, 35963, 48671, 328830, 15074], 1, "1f3a6e6.png?=20180926"],
["㉕아벤느채연", 67, 75, 10, "che_event_무쌍", [33562, 23970, 813284, 102045, 15434], 1, "7e512d4.jpg?=20200605"],
["⑦RFB", 68, 9, 79, "che_event_귀병", [62346, 23889, 43049, 598267, 35610], 1, "d0d2db1.jpg?=20190203"],
["⑥메르시", 68, 10, 86, "che_event_신중", [2825, 28774, 38382, 182999, 9831], 1, "8f27f31.jpg?=20181129"],
["②모하지맨", 77, 86, 10, "che_event_무쌍", [11076, 1205715, 121716, 246889, 55700], 0, "default.jpg"],
["⑫스카디", 74, 86, 10, "che_event_견고", [641266, 24147, 31764, 147351, 19158], 1, "112eb1b.jpg?=20190719"],
["⑬오리온자리", 81, 72, 10, "che_event_견고", [30079, 212423, 14163, 41093, 19533], 1, "71c0d1f.jpg?=20190718"],
["⑤객체지향", 75, 66, 9, "che_event_무쌍", [527294, 24804, 96714, 119528, 32968], 1, "bc26a2c.png?=20181121"],
["⑥30초장", 67, 10, 86, "che_event_신중", [12503, 29176, 16675, 87106, 0], 0, "default.jpg"],
["㉖요동중갑대", 73, 15, 88, "che_event_반계", [590, 28842, 14593, 147346, 13927], 0, "default.jpg"],
["⑱사스케", 71, 10, 84, "che_event_격노", [16574, 13483, 11953, 159780, 23209], 1, "986348a.jpg?=20190815"],
["⑨심심", 70, 86, 11, "che_event_저격", [21467, 69808, 318577, 86261, 15195], 0, "default.jpg"],
["⑱DDDD", 69, 11, 80, "che_event_징병", [43052, 16985, 44625, 295243, 24102], 1, "a5c75e7.jpg?=20191223"],
["㉘광성자", 94, 73, 15, "che_event_견고", [17184, 38044, 170768, 46389, 127582], 1, "1c59b40.jpg?=20200929"],
["③진리", 71, 10, 85, "che_event_집중", [80271, 40644, 82521, 322505, 18306], 1, "2055a9d.jpg?=20180828"],
["⑤외심장", 64, 9, 76, "che_event_반계", [36551, 32920, 59862, 345185, 26241], 1, "36110cd.jpg?=20180826"],
["⑮바늘", 70, 12, 82, "che_event_신산", [24864, 18515, 46770, 151469, 0], 0, "default.jpg"],
["⑮병리학적자세", 70, 10, 88, "che_event_징병", [42981, 24141, 22065, 487563, 49719], 1, "3679089.jpg?=20180629"],
["⑪줄리엣", 70, 10, 86, "che_event_환술", [9486, 9392, 8991, 263816, 23308], 1, "70f470f.png?=20190620"],
["⑫여중생", 84, 66, 10, "che_event_무쌍", [3360, 0, 70005, 43002, 6620], 1, "ad8b295.gif?=20190724"],
["㉓등화", 95, 66, 11, "che_event_공성", [6320, 2735, 10597, 47686, 1468280], 1, "f11922a.png?=20200218"],
["㉕헹지", 64, 10, 84, "che_event_신산", [117500, 62426, 46691, 949200, 25920], 1, "ff77e01.jpg?=20200704"],
["③오이치노카타", 71, 10, 85, "che_event_필살", [81889, 26780, 72198, 276316, 13843], 0, "default.jpg"],
["⑳독구", 68, 11, 83, "che_event_신산", [746, 15118, 7000, 229242, 20329], 1, "ac701b0.jpg?=20180625"],
["④보스곰", 78, 10, 79, "che_event_격노", [31668, 58588, 59586, 495181, 22887], 1, "76bf7f6.jpg?=20181007"],
["⑥임사영", 72, 84, 11, "che_event_저격", [453787, 131689, 60736, 154219, 11121], 1, "a0bc4b2.jpg?=20180628"],
["㉒김갑환", 83, 70, 10, "che_event_위압", [27152, 34572, 288182, 78367, 15344], 1, "dcff9fd.jpg?=20180823"],
["⑬강찬밥", 70, 83, 10, "che_event_위압", [247009, 13139, 44297, 49940, 6243], 1, "4b9e4bf.jpg?=20190815"],
["⑩조승상", 75, 61, 9, "che_event_저격", [0, 0, 0, 1978, 242428], 1, "9842c07.jpg?=20190420"],
["⑥Lenn", 87, 67, 11, "che_event_돌격", [27376, 0, 2114, 17210, 149846], 1, "81b73bc.jpg?=20181130"],
["⑤박일아", 66, 74, 9, "che_event_위압", [45084, 46785, 538337, 76826, 21607], 1, "461add7.gif?=20181022"],
["⑳피에스타", 83, 73, 11, "che_event_위압", [649019, 50416, 43493, 129140, 29805], 1, "99cd27f.gif?=20190606"],
["⑪댕찌율", 74, 10, 83, "che_event_집중", [44779, 74127, 29893, 633958, 27449], 1, "99cd27f.gif?=20190606"],
["⑯개미호랑이", 70, 10, 86, "che_event_환술", [6243, 5774, 6185, 119857, 71213], 1, "fccc37e.jpg?=20190718"],
["⑪이쓰미", 73, 10, 84, "che_event_신중", [38767, 30673, 9890, 436618, 19295], 1, "fd6a0fd.jpg?=20181212"],
["⑤라이트유저", 62, 9, 77, "che_event_척사", [40748, 18147, 63785, 240724, 8400], 1, "f546e30.jpg?=20181028"],
["③잉잉", 69, 88, 10, "che_event_돌격", [27436, 24503, 371526, 95074, 25887], 1, "6cfa7ae.jpg?=20180909"],
["⑤SARS", 68, 10, 79, "che_event_신중", [11573, 3397, 13072, 65999, 7509], 1, "b84944.jpg?=20180829"],
["⑨죽창", 67, 87, 10, "che_event_위압", [80117, 25708, 30919, 35669, 10267], 1, "2491818.jpg?=20190411"],
["③미야와키 사쿠라", 82, 71, 11, "che_event_위압", [130054, 515248, 42059, 100575, 18117], 1, "ca1b72d.png?=20180827"],
["㉗네시", 75, 15, 89, "che_event_공성", [6498, 11184, 23694, 186586, 95806], 0, "default.jpg"],
["㉘평민킬러", 78, 90, 15, "che_event_위압", [384279, 9522, 26489, 71101, 38383], 1, "fb23a32.jpg?=20190904"],
["⑤늘모", 66, 9, 75, "che_event_집중", [38156, 31129, 95327, 437701, 14748], 1, "e7c163.png?=20180801"],
["①Card", 83, 70, 10, "che_event_무쌍", [0, 217788, 26117, 41134, 24765], 1, "30f386f.jpg?=20180629"],
["⑧류다희", 72, 87, 11, "che_event_무쌍", [8234, 365821, 6935, 70268, 27470], 1, "781ef76.jpg?=20190317"],
["④실링", 69, 10, 83, "che_event_척사", [38180, 17524, 13330, 117898, 1780], 0, "default.jpg"],
["⑥에스테반 공작", 70, 85, 11, "che_event_저격", [355574, 39777, 71318, 102171, 1225], 1, "d5a955e.jpg?=20181130"],
["⑪외심장", 72, 11, 84, "che_event_의술", [61498, 53874, 39951, 651861, 35599], 1, "36110cd.jpg?=20180826"],
["⑨죽창(+5)", 69, 11, 89, "che_event_격노", [20804, 50624, 42309, 353331, 37462], 1, "1aca7f8.gif?=20190315"],
["㉑리에", 88, 10, 11, "che_event_저격", [14405, 3558, 16877, 43867, 151156], 0, "default.jpg"],
["⑥레이첼가드너", 68, 11, 85, "che_event_필살", [0, 22201, 21582, 83369, 0], 1, "b4bd1a6.png?=20181129"],
["㉓윤세리", 73, 10, 87, "che_event_신중", [63220, 65027, 50981, 570634, 40325], 1, "7753703.png?=20200131"],
["③Body", 77, 10, 80, "che_event_필살", [31681, 51808, 20458, 343215, 21437], 1, "b223c26.gif?=20180830"],
["⑨임사영", 71, 10, 88, "che_event_격노", [27007, 27902, 32753, 476546, 44815], 1, "643224f.gif?=20190314"],
["①제노에이지", 69, 10, 87, "che_event_반계", [6970, 66356, 31132, 249008, 37834], 1, "e90f675.jpg?=20180713"],
["⑫나나", 68, 11, 91, "che_event_귀병", [10737, 13858, 12857, 128824, 24926], 1, "fd86da.jpg?=20190718"],
["⑭천괴금", 85, 68, 10, "che_event_필살", [129422, 18357, 255904, 93132, 41365], 1, "2b239af.png?=20190824"],
["⑥아이린", 72, 84, 10, "che_event_척사", [27803, 76774, 414839, 144309, 16917], 1, "8dac73c.jpg?=20180922"],
["⑨아이린", 71, 87, 10, "che_event_격노", [36892, 325798, 32259, 69414, 12842], 1, "8dac73c.jpg?=20180922"],
["⑭제노에이지", 71, 10, 87, "che_event_반계", [57722, 61231, 21598, 406558, 18736], 1, "ddd1fd7.jpg?=20190320"],
["⑲기", 84, 69, 10, "che_event_무쌍", [19225, 11674, 0, 6389, 206616], 1, "2cf4b70.jpg?=20200120"],
["⑨미도라시", 68, 82, 10, "che_event_무쌍", [6896, 4321, 122388, 23299, 5246], 0, "default.jpg"],
["③플스4수리함", 70, 12, 82, "che_event_필살", [56407, 14933, 45814, 393607, 25664], 0, "default.jpg"],
["⑲rwitch", 71, 10, 83, "che_event_격노", [29318, 23210, 18618, 267372, 11428], 1, "dcc638d.jpg?=20190725"],
["⑧색무새호무새망무새", 80, 10, 76, "che_event_척사", [31525, 30791, 65605, 206908, 12987], 1, "4bc0d69.png?=20190327"],
["㉖다람쥐", 92, 74, 16, "che_event_견고", [48907, 185871, 19335, 52775, 22066], 1, "1161424.gif?=20200718"],
["㉑천조장호무새", 77, 69, 12, "che_event_기병", [11516, 7667, 130823, 14884, 4184], 1, "3649856.png?=20190815"],
["⑬니케", 68, 10, 86, "che_event_귀병", [0, 7275, 26040, 107223, 11850], 1, "fb7addd.jpg?=20190816"],
["⑭Satan", 71, 82, 10, "che_event_징병", [9665, 10441, 204323, 92751, 5284], 1, "eaa25e5.png?=20190910"],
["③테라포밍마스", 71, 13, 83, "che_event_저격", [15572, 64212, 88229, 571580, 21017], 1, "a02d500.jpg?=20180828"],
["③고먐미", 79, 77, 10, "che_event_징병", [456486, 34566, 238111, 68589, 62524], 1, "c353891.jpg?=20180828"],
["㉙둘리", 74, 15, 87, "che_event_집중", [14960, 17290, 17739, 141582, 21609], 1, "df25f02.jpg?=20201114"],
["㉕땅땅이", 77, 66, 10, "che_event_격노", [720463, 28468, 66597, 190037, 30796], 1, "99cd27f.gif?=20190606"],
["㉔레아실비아", 71, 83, 10, "che_event_무쌍", [20636, 0, 106424, 20319, 28302], 1, "3b13bb3.jpg?=20200515"],
["⑩v무광v", 85, 56, 9, "che_event_저격", [0, 0, 0, 0, 690965], 1, "181fefa.jpg?=20190414"],
["②도리도리반도리도리", 83, 83, 10, "che_event_무쌍", [28706, 144837, 1653358, 196769, 88686], 1, "79cffda.png?=20180805"],
["②황금요정", 98, 10, 66, "che_event_신중", [8468, 11651, 18740, 36830, 203763], 1, "d8b3178.jpg?=20180719"],
["㉙게르티카", 82, 75, 17, "che_event_격노", [0, 77819, 720, 20825, 6208], 0, "default.jpg"],
["④인공지능미사일", 71, 12, 83, "che_event_격노", [39981, 34586, 49048, 443571, 33676], 0, "default.jpg"],
["⑤스노우화이트", 66, 9, 75, "che_event_징병", [82923, 27480, 131878, 513649, 26700], 1, "ef55d2c.jpg?=20181115"],
["⑳오비도비", 69, 10, 78, "che_event_저격", [7083, 19452, 0, 98337, 1640], 1, "decc791.jpg?=20200310"],
["⑳네반", 73, 10, 83, "che_event_징병", [28193, 31215, 29802, 695096, 22066], 1, "74df23f.jpg?=20200314"],
["⑫늙고병든활쟁이", 74, 83, 10, "che_event_격노", [356225, 38109, 18885, 95317, 21965], 0, "default.jpg"],
["⑬적벽대전", 69, 10, 80, "che_event_집중", [14189, 0, 7777, 81812, 6477], 0, "default.jpg"],
["⑧이리스 유마", 90, 10, 68, "che_event_저격", [9396, 0, 25842, 35904, 371388], 1, "c46a5b8.jpg?=20190401"],
["⑬애니", 87, 67, 11, "che_event_위압", [27097, 540228, 16576, 48074, 12900], 1, "78c51c9.jpg?=20190818"],
["①조민", 85, 69, 12, "che_event_무쌍", [54691, 398024, 31027, 89301, 24687], 1, "55617fd.png?=20180630"],
["④악동", 86, 71, 10, "che_event_징병", [125889, 193423, 137441, 80164, 12568], 1, "227b2fc.jpg?=20180920"],
["⑨밥벌레", 71, 11, 88, "che_event_반계", [38954, 32856, 60051, 501882, 97392], 1, "297847c.gif?=20190428"],
["⑦북오더", 83, 38, 39, "che_event_집중", [7249, 10603, 3342, 6660, 181084], 1, "c0276e1.gif?=20180917"],
["⑧삼겹살", 83, 11, 77, "che_event_징병", [17715, 80338, 56255, 435695, 17447], 1, "6796cf4.gif?=20190314"],
["③아소", 80, 10, 75, "che_event_반계", [31365, 18211, 58737, 352058, 26051], 1, "3d22492.jpg?=20180417"],
["㉖rwitch", 74, 15, 92, "che_event_신산", [24905, 18221, 25429, 311908, 25534], 1, "dcc638d.jpg?=20190725"],
["⑧후지와라 치카", 92, 67, 10, "che_event_무쌍", [10484, 137314, 23353, 19702, 13417], 1, "5485ec4.gif?=20190319"],
["④아나", 72, 9, 83, "che_event_신산", [20790, 49714, 55572, 298812, 22823], 1, "1216a23.jpg?=20180920"],
["③센", 71, 10, 84, "che_event_의술", [51427, 86980, 59749, 424655, 12064], 1, "d26a001.png?=20180902"],
["①독고다이", 70, 84, 10, "che_event_징병", [7805, 52596, 264410, 79684, 23412], 0, "default.jpg"],
["⑪협동전 하고싶다", 73, 10, 86, "che_event_척사", [69376, 76252, 56149, 716566, 35042], 1, "a2215be.png?=20190625"],
["⑲파크헤트", 84, 69, 10, "che_event_돌격", [36866, 256143, 8644, 55229, 12676], 1, "a18c11b.jpg?=20200109"],
["③김나영", 78, 77, 10, "che_event_무쌍", [47434, 375495, 18135, 111235, 25663], 1, "2e8d570.jpg?=20180823"],
["⑫낙지꿈", 75, 10, 86, "che_event_저격", [62642, 42823, 35801, 500075, 25085], 0, "default.jpg"],
["㉗10068", 75, 15, 90, "che_event_환술", [6406, 18783, 34572, 302122, 39794], 0, "default.jpg"],
["⑨정근", 70, 10, 88, "che_event_신산", [38194, 72460, 30069, 446034, 23656], 1, "f4474c0.jpg?=20190422"],
["⑬치ㅋㄹ타", 85, 69, 11, "che_event_돌격", [5750, 37860, 240155, 53294, 21034], 1, "4188f16.jpg?=20190823"],
["⑬퇴물조승상", 68, 11, 84, "che_event_반계", [24392, 22532, 19322, 173077, 1775], 1, "bf1f881.jpg?=20190707"],
["⑥에르제", 70, 86, 10, "che_event_격노", [14194, 39191, 248560, 84299, 21649], 1, "73c4134.png?=20181130"],
["㉒프로야구개막한다", 70, 11, 82, "che_event_반계", [11776, 0, 15153, 109867, 19282], 1, "ff65fbb.png?=20200423"],
["③빨간망토", 81, 67, 10, "che_event_견고", [34251, 214170, 37906, 50037, 10711], 0, "default.jpg"],
["⑧모니카MK.2", 70, 88, 10, "che_event_징병", [35717, 42019, 45077, 27710, 10968], 1, "250c1a.jpg?=20190312"],
["⑨아시나 겐이치로", 85, 71, 10, "che_event_공성", [22398, 6701, 7811, 17538, 168756], 1, "9842c07.jpg?=20190420"],
["㉑이즈미 쿄카", 71, 10, 83, "che_event_집중", [35839, 3927, 32670, 388117, 43917], 1, "51d4831.jpg?=20200408"],
["③달", 74, 10, 84, "che_event_집중", [68123, 29604, 149395, 506294, 25165], 1, "131b8fd.jpg?=20180824"],
["⑬KZ Deft", 71, 10, 83, "che_event_환술", [12191, 42044, 7441, 266477, 26508], 1, "c0c766b.jpg?=20190815"],
["㉖카이스트", 74, 16, 91, "che_event_징병", [8190, 4741, 13118, 87470, 10919], 1, "9361ef8.jpg?=20180907"],
["⑬견자희", 69, 85, 10, "che_event_격노", [14079, 16931, 358285, 59450, 26994], 1, "316e4e2.jpg?=20190815"],
["④DZTO", 79, 10, 74, "che_event_반계", [39972, 23486, 29842, 333054, 7626], 0, "default.jpg"],
["⑥쉬원찮은남자", 79, 10, 71, "che_event_필살", [27720, 13209, 36067, 245856, 38958], 0, "default.jpg"],
["①불꽃", 68, 10, 84, "che_event_집중", [5796, 40106, 10953, 67198, 2456], 0, "default.jpg"],
["①삼남매아빠", 87, 68, 10, "che_event_견고", [3011, 57971, 168061, 51030, 28879], 0, "default.jpg"],
["④최$ 지존맨 $강", 72, 83, 10, "che_event_척사", [22495, 43959, 362156, 91567, 21610], 1, "2e31c25.jpg?=20181006"],
["④네로", 72, 83, 10, "che_event_견고", [422829, 24798, 49723, 44665, 28785], 1, "b2decfe.png?=20180927"],
["㉓랜덤박스", 84, 80, 10, "che_event_견고", [669433, 26630, 39784, 28854, 23232], 1, "b00a07b.gif?=20200130"],
["⑤스켈레톤", 78, 65, 9, "che_event_위압", [25874, 54281, 781840, 142038, 26036], 1, "50454b0.png?=20181119"],
["⑩이시리스", 85, 55, 9, "che_event_저격", [0, 0, 0, 0, 773039], 0, "default.jpg"],
["④343", 85, 70, 10, "che_event_무쌍", [39943, 52285, 308148, 84021, 140610], 0, "default.jpg"],
["④카이", 83, 71, 10, "che_event_척사", [40798, 263812, 39221, 58508, 9028], 0, "default.jpg"],
["⑯로리", 69, 10, 87, "che_event_저격", [452, 6693, 3634, 222854, 41580], 1, "50794a6.jpg?=20190923"],
["⑲하우젤", 71, 82, 10, "che_event_궁병", [21407, 172082, 2448, 55796, 2828], 1, "dcff9fd.jpg?=20180823"],
["⑤쉬원찮은남자", 64, 10, 75, "che_event_척사", [50767, 18231, 76602, 321282, 17227], 0, "default.jpg"],
["②승우", 70, 79, 11, "che_event_무쌍", [205793, 38430, 31151, 59231, 6872], 1, "af48e72.jpg?=20180721"],
["⑩추레라", 84, 58, 9, "che_event_저격", [0, 2797, 1948, 0, 1199554], 1, "5011028.jpg?=20190515"],
["①꽁치", 69, 86, 10, "che_event_돌격", [8159, 57830, 144615, 32030, 17901], 1, "ca6391e.jpg?=20180711"],
["⑦료우기시키", 73, 77, 9, "che_event_징병", [50710, 183331, 733831, 257065, 13445], 1, "f1d936e.jpg?=20190217"],
["⑫메디브", 83, 78, 10, "che_event_저격", [4560, 3486, 151198, 47860, 18120], 1, "def2895.jpg?=20190719"],
["⑱보스곰", 72, 10, 86, "che_event_신중", [34109, 44140, 26164, 459541, 20593], 1, "773556e.gif?=20190822"],
["㉕아자젤", 65, 10, 79, "che_event_환술", [36772, 50933, 35054, 732544, 5960], 1, "fef67ff.jpg?=20200604"],
["㉔외심장", 71, 10, 82, "che_event_척사", [12208, 24165, 18013, 266992, 15865], 1, "36110cd.jpg?=20180826"],
["㉑킹구", 68, 10, 85, "che_event_징병", [9469, 23365, 15061, 213345, 18004], 1, "fb3c625.gif?=20190428"],
["⑦우수한", 69, 10, 77, "che_event_징병", [83847, 79541, 122440, 965570, 50153], 1, "5dbfd3e.png?=20190125"],
["⑰오포이스", 70, 82, 10, "che_event_필살", [14949, 560068, 24674, 43531, 38159], 1, "c112237.jpg?=20191201"],
["⑨HAL 9000", 71, 10, 88, "che_event_격노", [19845, 42025, 32166, 312439, 22452], 1, "7be52e4.gif?=20190430"],
["㉖루시드", 75, 16, 90, "che_event_집중", [34893, 4052, 20235, 198230, 17599], 1, "c0a402b.jpg?=20200716"],
["㉘전각 9글자", 79, 15, 91, "che_event_집중", [40738, 23533, 54122, 555877, 16563], 0, "default.jpg"],
["⑳차비씨", 71, 10, 86, "che_event_저격", [48941, 44962, 36968, 543977, 34113], 1, "7f3203a.jpg?=20200302"],
["⑯땅땅이", 67, 11, 87, "che_event_집중", [4695, 9101, 4197, 103974, 16629], 1, "99cd27f.gif?=20190606"],
["④호야미야자야", 78, 69, 10, "che_event_저격", [5288, 14058, 92003, 13529, 15310], 1, "fa57127.jpg?=20180926"],
["⑫나나야 시키", 73, 10, 78, "che_event_필살", [11961, 14403, 6858, 117752, 2945], 1, "5e5263e.jpg?=20190314"],
["⑱우대주스나타나양", 72, 10, 87, "che_event_신중", [40102, 69621, 82773, 888404, 73100], 1, "14889af.jpg?=20191221"],
["⑳천괴금", 15, 84, 67, "che_event_견고", [9781, 44346, 179944, 28254, 11020], 1, "2b239af.png?=20190824"],
["⑨돼지바베큐", 72, 10, 85, "che_event_격노", [37411, 16307, 63997, 493576, 22347], 1, "cd72025.png?=20190411"],
["㉘1", 85, 80, 16, "che_event_위압", [21956, 52106, 129707, 47076, 8879], 0, "default.jpg"],
["④곰돌이푸", 69, 10, 87, "che_event_저격", [10531, 38201, 44673, 266221, 21410], 0, "default.jpg"],
["⑤쿠로", 90, 70, 10, "che_event_견고", [30730, 92691, 538411, 97540, 15791], 1, "4154997.jpg?=20181025"],
["⑲평민킬러", 70, 10, 85, "che_event_징병", [16379, 44459, 36106, 424448, 31811], 1, "fb23a32.jpg?=20190904"],
["③whan", 73, 82, 10, "che_event_척사", [76846, 443383, 49310, 87172, 39968], 0, "default.jpg"],
["㉘smile", 75, 15, 92, "che_event_신산", [8491, 27827, 14724, 146641, 6234], 0, "default.jpg"],
["⑤아이린", 64, 75, 9, "che_event_견고", [26936, 54688, 348801, 69258, 13273], 1, "8dac73c.jpg?=20180922"],
["⑪손인", 71, 87, 10, "che_event_무쌍", [30019, 55845, 346588, 137689, 11577], 1, "9382fb7.png?=20190620"],
["⑦돈까스", 68, 84, 9, "che_event_격노", [92530, 791025, 80473, 205908, 22070], 0, "default.jpg"],
["⑬스타킹", 76, 78, 10, "che_event_기병", [6083, 38681, 215713, 55303, 18230], 1, "c995144.png?=20190815"],
["⑯사스케", 81, 10, 10, "che_event_필살", [0, 0, 0, 0, 139769], 1, "986348a.jpg?=20190815"],
["⑭사스케", 89, 10, 10, "che_event_격노", [3241, 5953, 5711, 13410, 306554], 1, "986348a.jpg?=20190815"],
["⑮실", 68, 10, 83, "che_event_귀병", [11627, 6686, 10912, 117722, 3003], 0, "default.jpg"],
["①피피미", 80, 73, 10, "che_event_견고", [33230, 77710, 232993, 54304, 42731], 1, "aeb592.png?=20180629"],
["⑥안가면", 68, 11, 85, "che_event_집중", [14956, 20064, 21876, 146525, 14499], 1, "f0c755.jpg?=20181129"],
["㉖플라", 69, 20, 92, "che_event_집중", [18861, 19765, 15628, 224742, 15548], 1, "816bde9.jpg?=20200716"],
["③라피나", 71, 84, 10, "che_event_척사", [124576, 418214, 41289, 50646, 46622], 1, "cce4134.jpg?=20180823"],
["㉘레벤", 87, 80, 15, "che_event_저격", [16579, 48214, 462530, 89288, 23546], 0, "default.jpg"],
["③리체", 72, 10, 79, "che_event_필살", [30485, 38529, 27709, 313912, 22388], 1, "65f364d.gif?=20180904"],
["⑳수장", 70, 82, 10, "che_event_위압", [17799, 46820, 253293, 106371, 8450], 1, "190d7ff.jpg?=20200312"],
["⑤한국시리즈", 74, 84, 10, "che_event_무쌍", [118574, 549111, 36776, 243158, 15202], 1, "be3b157.jpg?=20181112"],
["⑦마법소년", 81, 67, 9, "che_event_징병", [1186065, 116003, 99628, 209861, 60678], 1, "8c54e0e.jpg?=20190304"],
["①김참치", 57, 25, 83, "che_event_격노", [7096, 26770, 44472, 248922, 15995], 0, "default.jpg"],
["⑧즐라트코", 81, 78, 10, "che_event_저격", [2600, 29273, 166343, 59856, 7804], 1, "4ee6d0c.jpg?=20190318"],
["④민토트끼", 83, 72, 10, "che_event_무쌍", [27848, 48733, 429545, 135358, 14754], 1, "3465a26.jpg?=20181007"],
["⑮실접못하는평킬", 70, 83, 10, "che_event_필살", [353508, 3047, 35475, 54777, 31918], 1, "fb23a32.jpg?=20190904"],
["②시이", 78, 84, 11, "che_event_돌격", [19131, 183642, 1018943, 144288, 55133], 1, "296c2e3.jpg?=20180711"],
["②여고생쨩", 80, 80, 10, "che_event_무쌍", [47843, 132489, 396254, 53683, 45789], 1, "ebd8fab.jpg?=20180728"],
["⑤랜덤의지배자", 64, 9, 76, "che_event_반계", [58094, 33217, 108516, 495066, 40260], 1, "2816ad.jpg?=20181118"],
["①마검", 69, 82, 10, "che_event_저격", [4734, 179503, 20491, 15979, 36975], 0, "default.jpg"],
["⑭돌아온파이", 71, 81, 10, "che_event_견고", [45066, 155344, 2405, 20122, 22247], 1, "f76fa74.jpg?=20190629"],
["⑥아유", 69, 10, 86, "che_event_신산", [4270, 53467, 53560, 289571, 23364], 1, "a8dfd2a.gif?=20181218"],
["㉕아유", 74, 10, 85, "che_event_신산", [47627, 68864, 56976, 887918, 17872], 1, "ba186bf.gif?=20181220"],
["③피카츄", 72, 10, 84, "che_event_필살", [64752, 32178, 43290, 410480, 33542], 0, "default.jpg"],
["⑮료우기시키", 86, 73, 10, "che_event_저격", [91683, 131511, 44904, 53821, 10432], 1, "559083f.jpg?=20190905"],
["③하우젤", 86, 70, 10, "che_event_위압", [576062, 45623, 151100, 112698, 33882], 1, "dcff9fd.jpg?=20180823"],
["㉙외심장", 75, 16, 86, "che_event_징병", [34513, 24662, 17991, 176754, 16421], 1, "36110cd.jpg?=20180826"],
["⑲정채연", 72, 81, 10, "che_event_무쌍", [21345, 303015, 14380, 71163, 23601], 1, "9705097.jpg?=20191001"],
["⑥꾸러기수비대", 70, 11, 80, "che_event_신산", [29277, 10735, 39806, 196613, 7700], 1, "683a086.jpg?=20181204"],
["⑩음주단속", 86, 57, 9, "che_event_저격", [0, 1828, 0, 0, 770309], 1, "71e9cfe.jpg?=20190510"],
["⑨소열제유비", 71, 87, 10, "che_event_척사", [8028, 41684, 306780, 74420, 17002], 1, "a3b1bbb.png?=20180927"],
["⑭낙지꿈", 69, 10, 84, "che_event_저격", [40117, 16579, 31305, 304913, 12195], 0, "default.jpg"],
["④개미", 75, 80, 12, "che_event_돌격", [60996, 446177, 34714, 118909, 20454], 0, "default.jpg"],
["㉙코브라", 75, 15, 87, "che_event_저격", [16519, 4181, 8506, 208875, 17207], 1, "1102963.jpg?=20201112"],
["㉖바넬로피", 88, 78, 15, "che_event_척사", [8120, 31088, 388876, 61107, 28456], 1, "1aef988.jpg?=20200717"],
["⑥심심", 72, 10, 84, "che_event_신산", [26809, 44036, 88607, 498135, 115572], 0, "default.jpg"],
["⑧와이파이", 70, 11, 86, "che_event_징병", [6344, 20753, 9263, 169502, 5044], 1, "da3bc86.jpg?=20190318"],
["⑫정채연", 73, 83, 10, "che_event_격노", [53425, 367655, 10095, 52426, 9710], 1, "bdf89f5.jpg?=20190722"],
["④멀린", 85, 71, 11, "che_event_견고", [23882, 53211, 326979, 84335, 23714], 1, "3451bfb.jpg?=20180920"],
["⑤오펠리아", 64, 9, 76, "che_event_집중", [39501, 6665, 25601, 333480, 9405], 1, "dc83434.jpg?=20181103"],
["㉕카이스트", 66, 10, 82, "che_event_집중", [87729, 60765, 52202, 992377, 25594], 1, "9361ef8.jpg?=20180907"],
["⑪임사영", 68, 10, 89, "che_event_신산", [12085, 26669, 1671, 172397, 7362], 1, "e08aca7.jpg?=20190512"],
["③평민킬러", 74, 82, 10, "che_event_돌격", [758887, 79866, 66446, 170759, 25109], 1, "6add0f.jpg?=20180515"],
["⑤장수는랜덤", 65, 9, 71, "che_event_의술", [45721, 16497, 46701, 265329, 8018], 0, "default.jpg"],
["②모리야 스와코", 70, 10, 91, "che_event_필살", [26582, 59174, 36283, 158109, 12491], 1, "2f1c0c9.gif?=20180718"],
["⑱KOSPI", 74, 86, 10, "che_event_필살", [23897, 461349, 30162, 117749, 15187], 0, "default.jpg"],
["⑧주인장", 73, 85, 10, "che_event_무쌍", [19718, 184736, 83325, 99873, 5162], 0, "default.jpg"],
["①니쉬", 70, 84, 10, "che_event_저격", [58525, 40543, 122529, 31799, 27288], 1, "aef78f7.jpg?=20180628"],
["⑧서른즈음에", 72, 10, 87, "che_event_신중", [51983, 38427, 54410, 367637, 26358], 1, "beb642e.jpg?=20190327"],
["⑤살수묵랑", 67, 73, 9, "che_event_저격", [33956, 358487, 35804, 136415, 9525], 1, "a9298fc.png?=20180628"],
["㉙로리", 73, 15, 88, "che_event_집중", [0, 6291, 2373, 186549, 35041], 1, "50794a6.jpg?=20190923"],
["㉖검호매의눈미호크", 85, 79, 16, "che_event_무쌍", [353639, 0, 26849, 68746, 21657], 1, "284e288.jpg?=20200716"],
["④스타킹", 85, 71, 11, "che_event_궁병", [58425, 260325, 39493, 101338, 17065], 1, "a7d4ef2.png?=20180920"],
["⑨니콜라스 퓨리", 79, 11, 80, "che_event_반계", [68853, 52328, 82188, 613604, 24223], 1, "9cca522.jpg?=20190412"],
["⑪늘모", 64, 82, 18, "che_event_필살", [12380, 65266, 289182, 99172, 10579], 1, "e7c163.png?=20180801"],
["⑬미스티", 68, 11, 83, "che_event_반계", [2621, 15744, 19374, 163340, 8854], 1, "1aadcba.png?=20180908"],
["②갓토갓구미", 70, 77, 10, "che_event_견고", [39635, 128411, 12654, 26474, 6574], 1, "47adc85.jpg?=20180725"],
["㉑아유", 73, 10, 80, "che_event_격노", [17393, 7835, 17966, 117053, 5992], 1, "ba186bf.gif?=20181220"],
["③이드", 73, 84, 10, "che_event_필살", [11360, 97115, 463605, 115796, 30269], 1, "91ca696.jpg?=20180825"],
["⑮스즈나", 71, 88, 10, "che_event_저격", [857144, 15171, 35963, 32322, 33807], 1, "d89ad53.png?=20190925"],
["⑥삐부띵", 69, 10, 80, "che_event_필살", [4733, 4610, 33243, 91410, 6147], 1, "427de4f.jpg?=20181129"],
["④만샘", 70, 11, 84, "che_event_집중", [34403, 32371, 29022, 379080, 16770], 1, "37d189c.jpg?=20180420"],
["⑤참새", 66, 10, 84, "che_event_징병", [373, 17959, 3292, 107285, 17097], 0, "default.jpg"],
["⑩江Yeah서", 85, 66, 10, "che_event_저격", [0, 0, 0, 0, 331990], 0, "default.jpg"],
["⑤북오더", 63, 74, 10, "che_event_징병", [169217, 25652, 100926, 70500, 5765], 1, "c0276e1.gif?=20180917"],
["㉒임사영", 84, 68, 10, "che_event_징병", [185808, 38525, 79234, 47655, 8275], 1, "7f9473e.gif?=20200211"],
["⑮Hide_D", 71, 10, 88, "che_event_격노", [38894, 18427, 54896, 217536, 15474], 1, "ee5accd.jpg?=20190411"],
["⑬짭벌스", 72, 11, 76, "che_event_척사", [14703, 11222, 1337, 102347, 6671], 0, "default.jpg"],
["②제노에이지", 74, 10, 90, "che_event_반계", [61581, 159259, 137652, 602992, 24288], 1, "f80e777.jpg?=20180811"],
["⑥안유진", 68, 10, 87, "che_event_반계", [45338, 37770, 41650, 227356, 9753], 1, "b81ece5.jpg?=20181130"],
["③다비", 72, 85, 10, "che_event_무쌍", [17826, 86197, 325383, 81229, 20807], 1, "2a49cb.jpg?=20180906"],
["⑨싸우지말고삼모해", 70, 10, 87, "che_event_신산", [12208, 24947, 23451, 334364, 18004], 0, "default.jpg"],
["③도트조아", 87, 70, 10, "che_event_필살", [162469, 381037, 58151, 42061, 21131], 1, "61a436c.gif?=20180830"],
["①살수묵랑", 71, 85, 10, "che_event_징병", [17803, 62496, 303653, 88778, 29276], 1, "a9298fc.png?=20180628"],
["⑧유나", 81, 78, 11, "che_event_격노", [56454, 37455, 175917, 65818, 21514], 1, "ed77ad2.jpg?=20190404"],
["㉔ㅇㄷㄷㄷㄷㄷㄷ", 68, 84, 11, "che_event_위압", [47947, 5960, 77638, 20699, 19562], 0, "default.jpg"],
["⑤가라샤", 62, 9, 75, "che_event_격노", [33550, 14210, 35966, 161720, 15502], 1, "7985767.jpg?=20181025"],
["⑯멘헤라짱", 80, 75, 10, "che_event_격노", [137417, 4251, 6085, 6924, 39388], 1, "9e75693.gif?=20190908"],
["⑧무흐흐경찰", 71, 10, 86, "che_event_척사", [6245, 43674, 14905, 165377, 6296], 1, "b2f7938.jpg?=20190315"],
["⑩로드킬", 82, 9, 57, "che_event_저격", [0, 0, 1475, 0, 689089], 1, "4c5a1ed.jpg?=20190510"],
["㉙Vicpie", 72, 16, 87, "che_event_신중", [0, 11476, 10520, 155774, 24653], 1, "c4a956e.png?=20201120"],
["③슈롭셔", 71, 10, 82, "che_event_척사", [35989, 48501, 93463, 250673, 2633], 1, "dcc6251.jpg?=20180825"],
["⑦차기준", 69, 9, 75, "che_event_신중", [69256, 34073, 104499, 688675, 55871], 1, "224e088.jpg?=20190210"],
["②덕장", 85, 75, 10, "che_event_무쌍", [23265, 90235, 366352, 99925, 20239], 0, "default.jpg"],
["㉕치킨조아", 78, 65, 10, "che_event_돌격", [633941, 33282, 117676, 139227, 8707], 1, "798476b.jpg?=20200604"],
["㉗시뉴카린스택계산기", 78, 15, 89, "che_event_저격", [28753, 22731, 42592, 361818, 40488], 1, "59fd00.png?=20200717"],
["②긴토키", 78, 82, 11, "che_event_저격", [14475, 123674, 523310, 122490, 22883], 1, "e2aac86.jpg?=20180719"],
["㉑죄악의 안젤리카", 70, 83, 10, "che_event_돌격", [79, 12424, 248474, 42158, 29102], 1, "7196fd9.jpg?=20200402"],
["⑬귀찮", 67, 84, 10, "che_event_척사", [7460, 6455, 238534, 37280, 16915], 0, "default.jpg"],
["④수비강화", 69, 80, 10, "che_event_필살", [28878, 96940, 12902, 62974, 7189], 0, "default.jpg"],
["⑨광삼이", 76, 10, 79, "che_event_귀병", [14774, 28090, 19856, 158459, 10895], 1, "69fc07c.jpg?=20180926"],
["⑩녹차병", 58, 47, 47, "che_event_저격", [0, 0, 0, 0, 224041], 1, "38960cb.jpg?=20190511"],
["⑤대충함", 87, 69, 10, "che_event_보병", [377167, 65924, 53304, 232141, 5255], 0, "default.jpg"],
["㉔땅땅땅땅", 83, 70, 10, "che_event_격노", [8162, 60987, 278719, 21921, 46219], 1, "99cd27f.gif?=20190606"],
["②whan", 94, 68, 11, "che_event_징병", [97824, 521689, 154313, 109751, 21372], 0, "default.jpg"],
["⑫장수명", 71, 16, 86, "che_event_의술", [21468, 17550, 9632, 164528, 30997], 0, "default.jpg"],
["㉘카이스트", 75, 15, 91, "che_event_신중", [13005, 10025, 31132, 243434, 26760], 1, "9361ef8.jpg?=20180907"],
["⑦꾸드", 78, 10, 70, "che_event_귀병", [13671, 29276, 33355, 120964, 0], 0, "default.jpg"],
["⑪치요", 87, 67, 10, "che_event_격노", [23831, 165268, 0, 81230, 15362], 1, "61db7ca.jpg?=20190620"],
["②IDW", 85, 74, 10, "che_event_필살", [18880, 89425, 380762, 75768, 21020], 1, "e9924eb.gif?=20180720"],
["⑲엔딩요정", 69, 83, 10, "che_event_징병", [8624, 34146, 318730, 54793, 26595], 1, "b568f56.jpg?=20200106"],
["⑫태양탄", 78, 80, 11, "che_event_궁병", [36449, 375355, 16129, 56424, 19445], 0, "default.jpg"],
["㉔유메미 리아무", 74, 79, 10, "che_event_저격", [8690, 76733, 28599, 16019, 28974], 1, "30d9ff0.jpg?=20200514"],
["④타마모노마에", 73, 10, 83, "che_event_격노", [17017, 51116, 82061, 314769, 12197], 1, "4ea7385.jpg?=20181007"],
["③서버열린지모른달팽", 67, 10, 84, "che_event_집중", [17058, 12474, 10035, 105428, 1974], 1, "fb0d354.jpg?=20180629"],
["⑮진짜뉴비", 79, 11, 76, "che_event_반계", [20088, 25510, 5186, 97690, 2411], 0, "default.jpg"],
["㉓병리학적자세", 76, 10, 88, "che_event_귀병", [79534, 68624, 59571, 1156513, 49205], 1, "3679089.jpg?=20180629"],
["⑧G41", 70, 11, 90, "che_event_격노", [4090, 3953, 20278, 71465, 10855], 1, "273580b.gif?=20190402"],
["⑫료우기시키", 71, 10, 88, "che_event_의술", [25047, 22269, 15994, 480555, 22925], 1, "f1d936e.jpg?=20190217"],
["㉘Hide_D", 75, 16, 90, "che_event_척사", [3714, 16503, 9420, 133889, 58423], 1, "9f0a2a8.png?=20200106"],
["⑮아들", 72, 90, 10, "che_event_징병", [53211, 71629, 1058140, 50643, 40919], 1, "97d501f.jpg?=20190926"],
["⑪꽃삔", 71, 11, 86, "che_event_격노", [50429, 60535, 46173, 489285, 28523], 1, "fc715bf.jpg?=20190620"],
["⑪조용히해주실래요?", 81, 68, 10, "che_event_저격", [34935, 259917, 26321, 82577, 6010], 1, "bf1f881.jpg?=20190707"],
["②민트토끼", 77, 11, 87, "che_event_필살", [28684, 108898, 163577, 1255037, 61469], 1, "976f3f5.gif?=20180809"],
["②Card", 91, 67, 10, "che_event_징병", [75236, 481508, 110116, 119890, 36199], 1, "416a697.jpg?=20180720"],
["⑦사키", 70, 76, 9, "che_event_저격", [25748, 113840, 532850, 204611, 14626], 1, "e43844d.gif?=20181113"],
["⑪리안", 69, 10, 87, "che_event_필살", [13785, 19145, 14669, 153616, 13975], 0, "default.jpg"],
["㉘클로토", 76, 91, 15, "che_event_견고", [22608, 17732, 418884, 64188, 16802], 1, "c0a2d90.jpg?=20200910"],
["⑪병리학적자세", 70, 10, 88, "che_event_저격", [31215, 27626, 29999, 309583, 14674], 1, "3679089.jpg?=20180629"],
["㉕smile", 66, 10, 79, "che_event_집중", [56287, 39419, 47404, 604863, 11707], 0, "default.jpg"],
["①평민킬러", 71, 83, 11, "che_event_돌격", [399767, 36713, 64437, 81230, 20257], 1, "6add0f.jpg?=20180515"],
["㉑트리니티", 85, 68, 10, "che_event_무쌍", [802, 23235, 144392, 34851, 93154], 0, "default.jpg"],
["⑯정채연", 67, 85, 10, "che_event_척사", [8858, 95151, 4068, 7657, 12249], 1, "9705097.jpg?=20191001"],
["⑩스즈나", 85, 57, 9, "che_event_저격", [0, 0, 0, 0, 889347], 1, "1945e60.jpg?=20190513"],
["㉔연채홍", 68, 10, 84, "che_event_척사", [0, 6658, 18873, 101277, 26492], 0, "default.jpg"],
["㉑수장", 82, 71, 12, "che_event_격노", [21861, 209481, 4810, 20593, 40147], 1, "190d7ff.jpg?=20200312"],
["⑥모코코", 70, 11, 85, "che_event_신산", [34225, 30063, 32596, 288053, 18890], 1, "7d0a397.jpg?=20181218"],
["㉘시뉴카린임포스터", 76, 90, 15, "che_event_돌격", [243109, 19191, 21407, 75205, 30235], 1, "59fd00.png?=20200717"],
["⑤슬라임", 64, 76, 9, "che_event_척사", [22637, 46018, 221505, 75650, 15658], 1, "f061c0e.jpg?=20181105"],
["⑨병리학적자세", 72, 10, 88, "che_event_저격", [20646, 69902, 45518, 382993, 11007], 1, "3679089.jpg?=20180629"],
["㉘제로원", 75, 86, 15, "che_event_무쌍", [39183, 135884, 18796, 67457, 5973], 1, "64b105a.jpg?=20200921"],
["②아저씨쨩", 78, 10, 85, "che_event_집중", [16085, 170462, 111393, 1062153, 54363], 1, "dff1ae6.jpg?=20180729"],
["㉕한국전력공사", 60, 10, 82, "che_event_신산", [34672, 25221, 14248, 424199, 21471], 1, "48ea511.jpg?=20200607"],
["㉔경계의 거주자", 86, 68, 10, "che_event_돌격", [7501, 144604, 6967, 33641, 11209], 1, "7c6608.jpg?=20200514"],
["⑲올때메로나", 80, 10, 72, "che_event_징병", [31626, 11884, 40946, 310670, 16965], 0, "default.jpg"],
["③도적", 71, 84, 10, "che_event_저격", [13924, 67488, 444614, 114951, 25573], 0, "default.jpg"],
["⑳박일아", 74, 86, 10, "che_event_돌격", [1052480, 17654, 15193, 20597, 18727], 1, "8608979.gif?=20191024"],
["③아유", 72, 84, 10, "che_event_돌격", [83293, 544334, 37522, 173364, 42717], 1, "8645fa9.gif?=20180906"],
["⑩삽가면", 86, 66, 11, "che_event_저격", [0, 0, 9135, 0, 761899], 1, "f0c755.jpg?=20181129"],
["⑩숨질래", 73, 9, 60, "che_event_저격", [0, 0, 0, 0, 409488], 1, "b2f7938.jpg?=20190315"],
["⑪드류", 70, 10, 83, "che_event_신중", [16000, 21348, 10760, 123265, 5447], 1, "507327d.png?=20181001"],
["④진리", 82, 72, 10, "che_event_위압", [12470, 32238, 230186, 76320, 20857], 1, "7d6190a.jpg?=20180926"],
["⑮장손신희", 66, 11, 85, "che_event_반계", [15890, 2858, 6680, 79399, 10993], 1, "e7a5bde.jpg?=20190329"],
["⑫뒹굴뒹굴", 70, 10, 84, "che_event_귀병", [33960, 3235, 22837, 184288, 2221], 0, "default.jpg"],
["⑮륜", 70, 10, 90, "che_event_징병", [19534, 19688, 7029, 201790, 2672], 1, "6561977.jpg?=20190904"],
["㉗낙지꿈", 74, 16, 91, "che_event_신산", [45995, 10026, 20324, 258916, 10631], 0, "default.jpg"],
["④병리학적자세", 81, 10, 76, "che_event_집중", [19719, 43710, 35952, 368533, 31949], 1, "3679089.jpg?=20180629"],
["⑬얀핀", 77, 79, 10, "che_event_위압", [55131, 362929, 31351, 65031, 24738], 1, "c25ad46.jpg?=20190816"],
["⑰개미호랑이", 69, 10, 83, "che_event_격노", [13306, 10700, 19979, 153411, 94562], 1, "fccc37e.jpg?=20190718"],
["②Google", 74, 10, 86, "che_event_환술", [23750, 61822, 156962, 496477, 35361], 1, "7ee028e.gif?=20180721"],
["⑤아노리엔", 73, 88, 10, "che_event_위압", [38676, 45064, 560901, 163416, 23959], 0, "default.jpg"],
["①새장속의 이상향", 71, 10, 83, "che_event_신중", [36541, 68008, 106667, 616052, 54180], 0, "default.jpg"],
["⑤거베라", 65, 73, 9, "che_event_척사", [93382, 580590, 71425, 118121, 24082], 1, "e826340.jpg?=20181115"],
["⑭메디브", 83, 75, 10, "che_event_의술", [27646, 49106, 449314, 53533, 18439], 1, "def2895.jpg?=20190719"],
["⑤영원한랜임", 60, 9, 79, "che_event_격노", [36277, 32636, 9351, 190876, 7650], 0, "default.jpg"],
["⑥로리", 73, 10, 84, "che_event_필살", [51453, 33727, 28591, 372598, 18141], 1, "445a7f4.jpg?=20181129"],
["⑧외심장", 71, 10, 87, "che_event_척사", [16060, 41612, 41494, 352823, 21193], 1, "36110cd.jpg?=20180826"],
["①무한파워안경", 85, 70, 10, "che_event_위압", [41570, 28860, 303636, 71899, 39164], 1, "b7e1a1f.jpg?=20180525"],
["⑮덕장", 72, 10, 87, "che_event_집중", [60279, 37048, 48083, 478787, 29076], 0, "default.jpg"],
["㉘외심장", 76, 15, 90, "che_event_신중", [16021, 6026, 21154, 177875, 16952], 1, "36110cd.jpg?=20180826"],
["⑭룬레이", 86, 66, 11, "che_event_저격", [48674, 308432, 13523, 95716, 14939], 1, "bd6cc98.png?=20190905"],
["⑪아유", 71, 10, 82, "che_event_징병", [59952, 16393, 27530, 293398, 15155], 1, "ba186bf.gif?=20181220"],
["⑥휘인", 86, 68, 10, "che_event_견고", [3960, 17805, 230997, 29824, 38750], 1, "8bec25d.jpg?=20181129"],
["⑪쀼웃", 70, 10, 82, "che_event_필살", [36225, 14104, 11461, 210431, 9964], 1, "8996332.jpg?=20190315"],
["⑭나루호도", 79, 76, 10, "che_event_저격", [225616, 13935, 20803, 72916, 9349], 1, "e9b556b.png?=20190905"],
["④이바라키도지", 75, 78, 11, "che_event_저격", [58062, 275499, 13534, 77392, 12635], 1, "6735612.png?=20180920"],
["⑦경국지색소교", 64, 81, 9, "che_event_필살", [4009, 16739, 236415, 153934, 10254], 0, "default.jpg"],
["⑤황약사", 66, 80, 12, "che_event_기병", [5739, 0, 106579, 33299, 5129], 1, "189adc9.jpg?=20181115"],
["⑨쌀벌레", 69, 11, 87, "che_event_신중", [14989, 7754, 10289, 216518, 25579], 1, "e9a3054.jpg?=20190315"],
["③유미", 71, 10, 84, "che_event_집중", [18734, 49532, 51115, 382886, 25317], 1, "bf4bcbf.jpg?=20180823"],
["㉘병리학적자세", 75, 15, 93, "che_event_집중", [33042, 13166, 8892, 229034, 32235], 1, "3679089.jpg?=20180629"],
["⑦김나영", 68, 77, 9, "che_event_징병", [490784, 39405, 166629, 221483, 11314], 1, "2e8d570.jpg?=20180823"],
["③오펠리아", 74, 10, 82, "che_event_척사", [62649, 52183, 137323, 423634, 29394], 1, "c20959.jpg?=20180906"],
["⑤호도르", 63, 9, 77, "che_event_의술", [51745, 10578, 71204, 367610, 25425], 1, "4a206a1.jpg?=20181122"],
["⑫로 리", 71, 10, 89, "che_event_필살", [72041, 48050, 34209, 599557, 36300], 1, "1ec690f.jpg?=20190720"],
["⑥궁Yeah!", 80, 10, 76, "che_event_저격", [2261, 29859, 13428, 138751, 8782], 1, "cc5e216.jpg?=20181129"],
["④Barista", 70, 10, 86, "che_event_귀병", [26275, 10925, 43265, 269277, 13386], 1, "9c445c8.gif?=20180921"],
["③아이돌도서관협회장", 72, 84, 10, "che_event_필살", [410570, 38607, 72735, 95230, 31749], 1, "76b0000.gif?=20180909"],
["⑮PA15", 76, 82, 11, "che_event_필살", [20647, 62275, 485064, 88074, 31181], 1, "415b256.png?=20190927"],
["⑨줄리엣", 71, 84, 10, "che_event_척사", [46512, 359054, 37499, 85767, 17706], 1, "175639b.png?=20181025"],
["⑧두나", 72, 10, 88, "che_event_신중", [9198, 32485, 49266, 372136, 6485], 1, "bf0c572.png?=20181114"],
["⑭KZ Deft", 81, 72, 10, "che_event_견고", [165500, 2408, 18711, 58319, 9120], 1, "c0c766b.jpg?=20190815"],
["㉗코드블루", 75, 15, 90, "che_event_집중", [3436, 23852, 39886, 465912, 42245], 1, "5c60836.jpg?=20200813"],
["⑪학식대장", 82, 74, 10, "che_event_저격", [94798, 49581, 20829, 31553, 15007], 1, "49f13e6.png?=20190520"],
["⑳평민킬러", 77, 81, 10, "che_event_무쌍", [598943, 23647, 54300, 175331, 24829], 1, "fb23a32.jpg?=20190904"],
["①홈", 71, 10, 84, "che_event_반계", [63332, 52361, 18238, 258378, 22237], 1, "fc4c099.jpg?=20180630"],
["⑲퀸안나", 75, 10, 77, "che_event_신산", [18595, 16646, 10793, 147830, 12837], 1, "99e4505.jpg?=20200110"],
["④5분장", 71, 10, 86, "che_event_저격", [43685, 31600, 35551, 391767, 25294], 0, "default.jpg"],
["⑦힝힝", 63, 72, 9, "che_event_돌격", [211569, 4705, 22236, 126718, 10296], 1, "c5ca50e.jpg?=20190130"],
["⑫사스케", 92, 10, 10, "che_event_위압", [7623, 3550, 5654, 5813, 430100], 1, "bab8446.jpg?=20190607"],
["㉒탈모카린", 68, 12, 80, "che_event_반계", [6717, 11861, 47508, 203607, 19801], 1, "aaacec4.jpg?=20200427"],
["⑧Rumi", 71, 89, 10, "che_event_무쌍", [40825, 66807, 482496, 97742, 29745], 1, "84fb262.png?=20190314"],
["⑩마요이", 72, 77, 10, "che_event_저격", [0, 0, 0, 0, 254812], 1, "3d319b5.png?=20190422"],
["⑬유리빠돌이", 68, 10, 80, "che_event_환술", [12077, 28522, 24466, 132326, 4504], 0, "default.jpg"],
["⑮조말론", 72, 10, 85, "che_event_집중", [13503, 6726, 52720, 211475, 3670], 1, "e12bfb7.jpg?=20191001"],
["②밤비에타", 75, 78, 14, "che_event_돌격", [235193, 44649, 43754, 65854, 16736], 1, "2840769.jpg?=20180730"],
["①고긔가먹고싶", 70, 10, 86, "che_event_징병", [52092, 20109, 7138, 239333, 16712], 1, "70c5cf6.jpg?=20180623"],
["㉘아리아", 74, 93, 15, "che_event_척사", [221784, 5449, 32195, 72028, 16420], 1, "f7358b.jpg?=20200822"],
["⑥복숭아좋아", 71, 10, 85, "che_event_격노", [15127, 12876, 23291, 165544, 14204], 0, "default.jpg"],
["㉓이초홍", 80, 83, 10, "che_event_견고", [117853, 925037, 44641, 215616, 25081], 1, "670e1e3.jpg?=20200130"],
["⑧슬라임", 82, 78, 10, "che_event_저격", [83530, 17089, 36823, 18948, 5846], 1, "3408568.jpg?=20190317"],
["⑭짹짹이", 71, 11, 85, "che_event_반계", [34498, 32833, 41851, 437972, 20612], 1, "4cabf8f.png?=20190905"],
["⑦조밧", 79, 64, 9, "che_event_필살", [47533, 219940, 24251, 121558, 6468], 1, "f2d4b4.jpg?=20180629"],
["⑦평민킬러", 69, 80, 9, "che_event_격노", [871962, 81066, 132754, 251904, 21580], 1, "2816ad.jpg?=20181118"],
["⑧치자피즈", 71, 84, 10, "che_event_저격", [51019, 227855, 31933, 60646, 21474], 1, "6103eff.png?=20190316"],
["㉖시라이", 76, 89, 15, "che_event_척사", [240284, 6177, 33912, 39817, 18943], 1, "9f7aca2.jpg?=20200718"],
["⑧박초롱", 68, 91, 10, "che_event_징병", [115639, 1707, 13001, 22302, 11315], 1, "4cb21c1.gif?=20190318"],
["⑲yapyap30", 70, 11, 83, "che_event_신산", [20455, 17279, 18888, 303560, 40713], 0, "default.jpg"],
["④SARS", 71, 11, 83, "che_event_저격", [18250, 5782, 8007, 119595, 21967], 1, "b84944.jpg?=20180829"],
["⑰카이스트", 70, 10, 83, "che_event_징병", [29383, 31445, 41054, 455449, 40166], 1, "9361ef8.jpg?=20180907"],
["⑲료우기시키", 81, 72, 10, "che_event_척사", [24607, 86986, 6449, 25518, 56464], 1, "559083f.jpg?=20190905"],
["⑦우동게", 67, 9, 81, "che_event_환술", [23513, 24340, 76353, 409890, 21438], 1, "6eb775f.jpg?=20190125"],
["⑦잠입", 62, 14, 77, "che_event_신중", [7407, 5962, 38798, 90749, 932], 0, "default.jpg"],
["㉕ㅇ", 66, 79, 10, "che_event_저격", [39814, 59167, 549078, 83500, 21298], 0, "default.jpg"],
["④현랑호로", 72, 83, 10, "che_event_저격", [44807, 154200, 35108, 73324, 4977], 1, "eeb3cdb.jpg?=20180807"],
["⑤쭀", 62, 9, 76, "che_event_척사", [48317, 31939, 28204, 293075, 15064], 0, "default.jpg"],
["②미래의얼굴", 73, 11, 89, "che_event_격노", [29279, 108903, 115516, 434119, 37203], 1, "fcd3a25.jpg?=20180720"],
["⑥제갈여포", 74, 10, 82, "che_event_필살", [50285, 39362, 42881, 519681, 27609], 1, "e8e8adc.jpg?=20180419"],
["㉗일이석우", 74, 15, 90, "che_event_신산", [22677, 3107, 22321, 169066, 21499], 1, "9c2026b.jpg?=20200527"],
["㉕멸망을 노래하는 자", 80, 64, 10, "che_event_돌격", [614171, 40420, 68970, 136172, 14291], 1, "179a0e6.jpg?=20200606"],
["⑨장손신희", 72, 84, 10, "che_event_격노", [499965, 41999, 118131, 143615, 14149], 1, "e7a5bde.jpg?=20190329"],
["㉒타임머신", 81, 71, 10, "che_event_위압", [32266, 297661, 24425, 82058, 32824], 1, "75f9605.png?=20200423"],
["⑦소열제유비", 65, 77, 11, "che_event_기병", [18517, 21523, 314133, 151096, 13824], 1, "a3b1bbb.png?=20180927"],
["⑥빙글빙글", 83, 70, 10, "che_event_돌격", [72217, 188944, 147171, 115643, 8365], 1, "6550a50.gif?=20181129"],
["③타카가키 카에데", 80, 9, 75, "che_event_격노", [46938, 63264, 24115, 351906, 82507], 1, "22f307c.jpg?=20180825"],
["㉘Per", 87, 81, 15, "che_event_위압", [31187, 494344, 3253, 110288, 24963], 1, "2fa4389.jpg?=20200910"],
["④미스티", 72, 10, 83, "che_event_집중", [21473, 41944, 28143, 213512, 14562], 1, "1aadcba.png?=20180908"],
["㉓Mihimaru", 71, 88, 10, "che_event_견고", [49075, 36022, 327879, 72023, 16446], 0, "default.jpg"],
["⑧모니카", 72, 10, 85, "che_event_신중", [0, 15212, 19800, 132450, 10780], 1, "def3814.jpg?=20190314"],
["③올턴휴식", 70, 10, 81, "che_event_집중", [20583, 43380, 43612, 225552, 16872], 0, "default.jpg"],
["⑦하하", 86, 71, 11, "che_event_척사", [30726, 41020, 124894, 108334, 8266], 0, "default.jpg"],
["③뇨와킨", 79, 72, 10, "che_event_돌격", [83406, 49598, 108612, 26937, 438], 1, "f3f2f.png?=20180830"],
["㉗크류", 75, 89, 17, "che_event_척사", [6631, 27238, 154457, 40746, 48676], 1, "51540ea.jpg?=20200425"],
["⑥늘모", 70, 84, 11, "che_event_저격", [28753, 192603, 19107, 42129, 15068], 1, "e7c163.png?=20180801"],
["②신포", 90, 70, 10, "che_event_필살", [282732, 113659, 57028, 72492, 7779], 0, "default.jpg"],
["⑮김나영", 73, 85, 10, "che_event_저격", [315693, 11806, 41408, 69215, 16465], 1, "c90a3d4.jpg?=20190905"],
["㉑개미호랑이렐리아", 86, 66, 10, "che_event_격노", [14878, 23905, 151410, 56369, 5684], 1, "9e0429e.jpg?=20200313"],
["④(9글자 이내)", 71, 82, 10, "che_event_격노", [151173, 26297, 45329, 46550, 1978], 0, "default.jpg"],
["⑯병리학적자세", 67, 10, 90, "che_event_집중", [6833, 3988, 0, 92463, 20098], 1, "3679089.jpg?=20180629"],
["⑫아바브와", 75, 86, 10, "che_event_격노", [6173, 21407, 151848, 49781, 13133], 0, "default.jpg"],
["④체비", 67, 11, 86, "che_event_징병", [25005, 27745, 12597, 199998, 0], 1, "fd20d5d.png?=20180724"],
["⑭로리", 72, 11, 84, "che_event_집중", [45950, 43822, 39507, 685740, 32444], 1, "e1e175f.jpg?=20190921"],
["③ㅊㅂ", 88, 62, 15, "che_event_저격", [215952, 9669, 67013, 60043, 6176], 1, "fd20d5d.png?=20180724"],
["㉓ㅇㄷ", 75, 88, 10, "che_event_견고", [38610, 110956, 783518, 158714, 35048], 0, "default.jpg"],
["⑮나도 모르겠다", 70, 10, 88, "che_event_집중", [5670, 10089, 16154, 145569, 4204], 0, "default.jpg"],
["⑩과학 5호", 86, 10, 57, "che_event_저격", [0, 0, 0, 0, 1695198], 0, "default.jpg"],
["㉗건방진노예", 75, 15, 89, "che_event_신중", [27021, 12661, 21393, 286784, 10487], 0, "default.jpg"],
["㉙I", 74, 88, 15, "che_event_보병", [113568, 3852, 31882, 12954, 7743], 0, "default.jpg"],
["⑨두나", 70, 10, 87, "che_event_환술", [142, 19581, 6691, 130481, 6677], 1, "bf0c572.png?=20181114"],
["④뇽", 77, 9, 79, "che_event_반계", [12627, 29940, 63638, 234693, 12687], 0, "default.jpg"],
["㉕김나영", 68, 77, 10, "che_event_돌격", [35094, 69704, 739190, 96183, 14499], 1, "c90a3d4.jpg?=20190905"],
["㉒사이언스베슬", 68, 10, 84, "che_event_집중", [42415, 44878, 38642, 306662, 10603], 1, "58d2ea1.jpg?=20200425"],
["⑱기절중...zzZ", 91, 11, 10, "che_event_돌격", [0, 0, 17379, 15434, 394838], 0, "default.jpg"],
["⑨아노리엔", 73, 81, 10, "che_event_저격", [34286, 308787, 18993, 117144, 8219], 1, "99d6aca.png?=20190320"],
["⑩카오스피닉스", 82, 34, 33, "che_event_저격", [0, 1231, 2677, 2398, 507552], 1, "2af0641.jpg?=20180706"],
["⑥캐릭캐릭체인지", 71, 11, 83, "che_event_격노", [47781, 22334, 68661, 324566, 17359], 1, "27c35d6.jpg?=20181214"],
["⑥황약사", 77, 80, 10, "che_event_징병", [28633, 364869, 147731, 159828, 18197], 1, "189adc9.jpg?=20181115"],
["②커피", 77, 86, 10, "che_event_격노", [18743, 85671, 834631, 182915, 40817], 1, "1c44e87.png?=20180723"],
["㉙Hide_D", 74, 16, 85, "che_event_필살", [12332, 7552, 7410, 104948, 22629], 1, "9f0a2a8.png?=20200106"],
["⑬망나뇽", 81, 69, 10, "che_event_척사", [113772, 16450, 22026, 32283, 393], 1, "d879a26.png?=20190427"],
["㉑KOSPI", 71, 84, 10, "che_event_척사", [382638, 19921, 31751, 99042, 14992], 0, "default.jpg"],
["⑳슬라임", 83, 10, 75, "che_event_환술", [46881, 90041, 38303, 460956, 16917], 1, "2fd8b5.png?=20191222"],
["㉖외심장", 73, 16, 93, "che_event_신산", [22637, 8581, 19454, 231309, 29120], 1, "36110cd.jpg?=20180826"],
["⑤G41", 64, 9, 74, "che_event_저격", [65903, 13670, 51029, 298740, 22131], 1, "363358d.jpg?=20181114"],
["⑭로또", 73, 82, 10, "che_event_징병", [362999, 29258, 44191, 150706, 15492], 1, "db84779.jpg?=20190906"],
["②농다리", 77, 89, 10, "che_event_척사", [13872, 1432650, 138020, 178094, 84040], 1, "eb2cf45.jpg?=20180805"],
["⑨버즈", 88, 71, 10, "che_event_척사", [655070, 17681, 103562, 120047, 36401], 1, "1168f40.jpg?=20190415"],
["⑪아련그자체", 70, 10, 87, "che_event_신산", [14597, 12254, 16162, 168069, 37863], 1, "57e4a39.jpg?=20190620"],
["②륜", 69, 10, 82, "che_event_반계", [9465, 65135, 21658, 174995, 24232], 1, "96061d5.jpg?=20180708"],
["⑧아노리엔", 87, 70, 11, "che_event_저격", [169509, 165658, 57039, 96205, 18393], 1, "99d6aca.png?=20190320"],
["⑱개미호랑이", 90, 10, 66, "che_event_신산", [43580, 55879, 26226, 77467, 242248], 1, "6ee69e8.jpg?=20191227"],
["⑨5분장", 71, 10, 86, "che_event_신중", [9133, 75389, 76279, 562259, 18920], 0, "default.jpg"],
["⑧동백쨔응", 73, 11, 88, "che_event_척사", [33009, 51680, 51617, 471256, 25827], 1, "c07de23.jpg?=20190314"],
["⑮개미호랑이", 69, 10, 88, "che_event_징병", [45439, 38894, 26057, 483691, 40161], 1, "fccc37e.jpg?=20190718"],
["⑥라이토", 74, 78, 11, "che_event_무쌍", [4988, 43961, 107676, 32400, 11792], 1, "876997e.png?=20181210"],
["⑫꽃핀", 75, 10, 89, "che_event_격노", [36802, 34787, 39921, 764517, 28955], 1, "587c5f5.jpg?=20190808"],
["㉑임사영", 69, 11, 86, "che_event_의술", [2685, 5472, 22873, 138521, 21509], 1, "7f9473e.gif?=20200211"],
["④꼬기", 69, 10, 85, "che_event_척사", [86146, 30092, 14847, 297025, 35395], 1, "507327d.png?=20181001"],
["㉖사뉴카린시등분", 74, 15, 92, "che_event_집중", [12029, 16754, 14228, 338646, 8933], 1, "326e427.jpg?=20200723"],
["㉘임사영", 74, 15, 93, "che_event_척사", [1197, 9238, 13259, 117696, 7349], 1, "7f9473e.gif?=20200211"],
["㉒로리", 69, 11, 83, "che_event_격노", [25181, 28815, 30911, 302016, 30085], 1, "50794a6.jpg?=20190923"],
["⑪BAKBAK", 68, 10, 88, "che_event_귀병", [14349, 18743, 13345, 217520, 25666], 0, "default.jpg"],
["⑳카이스트", 71, 10, 87, "che_event_저격", [31142, 60635, 21934, 454495, 28863], 1, "9361ef8.jpg?=20180907"],
["③조밧", 69, 87, 10, "che_event_무쌍", [13843, 48487, 362135, 100164, 19893], 0, "default.jpg"],
["⑤두나", 65, 9, 75, "che_event_필살", [23003, 30467, 47824, 373566, 15048], 1, "bf0c572.png?=20181114"],
["②참치김치볶음밥", 71, 10, 88, "che_event_격노", [21811, 88823, 45531, 257006, 18713], 1, "6372946.gif?=20180721"],
["⑩내사랑미아누나", 80, 68, 10, "che_event_저격", [23694, 0, 0, 1507, 250180], 1, "90cb92c.jpg?=20190509"],
["⑮유지장", 84, 10, 74, "che_event_필살", [14624, 9108, 20946, 310070, 11803], 0, "default.jpg"],
["⑩과속방지턱", 92, 56, 9, "che_event_저격", [0, 0, 0, 0, 1390908], 1, "d092f20.jpg?=20190511"],
["④장수는랜덤", 80, 72, 10, "che_event_징병", [35957, 64864, 9254, 36779, 1713], 0, "default.jpg"],
["⑥광삼이", 73, 11, 80, "che_event_필살", [3867, 18504, 3970, 105291, 2892], 1, "69fc07c.jpg?=20180926"],
["⑫아이린", 70, 88, 11, "che_event_견고", [38283, 282325, 11817, 92874, 4907], 1, "8dac73c.jpg?=20180922"],
["⑧단비", 71, 10, 91, "che_event_신중", [38793, 35317, 109465, 494629, 13140], 1, "851c59d.jpg?=20190314"],
["⑦강서유서", 69, 10, 68, "che_event_척사", [9400, 8643, 23642, 74193, 2291], 1, "66b9506.png?=20180830"],
["⑤국밥공주", 73, 65, 9, "che_event_돌격", [407270, 65686, 113947, 98671, 20582], 1, "e4be574.gif?=20181030"],
["⑪김바보", 68, 10, 84, "che_event_반계", [17268, 6821, 11879, 134061, 16116], 1, "3a195b8.jpg?=20190619"],
["⑤기업형페이트", 72, 10, 85, "che_event_신중", [42696, 19270, 97397, 508628, 15738], 1, "812ee4a.jpg?=20181024"],
["⑪만샘", 69, 10, 85, "che_event_필살", [8908, 8446, 6166, 124244, 10448], 1, "4a206a1.jpg?=20181122"],
["⑨아무것도안함", 85, 74, 10, "che_event_돌격", [42228, 41862, 374326, 102631, 26438], 0, "default.jpg"],
["⑩蟲茶", 89, 38, 38, "che_event_저격", [0, 0, 0, 0, 789148], 0, "default.jpg"],
["⑨포모나", 85, 72, 10, "che_event_위압", [12399, 31416, 244093, 72763, 8748], 1, "dd71cf2.png?=20190419"],
["⑤마작왕", 63, 9, 76, "che_event_저격", [27123, 17881, 55490, 181274, 6913], 1, "e43844d.gif?=20181113"],
["⑧노진구", 87, 74, 10, "che_event_위압", [49603, 99857, 550127, 167534, 54584], 1, "ce1319d.jpg?=20190317"],
["⑨미스티", 70, 10, 87, "che_event_귀병", [17866, 21578, 61771, 244374, 8006], 1, "1aadcba.png?=20180908"],
["②광삼이", 78, 10, 79, "che_event_척사", [75688, 132949, 110908, 326694, 8949], 1, "bcdfa8.jpg?=20180630"],
["④아이린", 72, 84, 10, "che_event_위압", [8217, 35068, 257484, 49860, 26662], 1, "8dac73c.jpg?=20180922"],
["⑰병리학적자세", 69, 10, 83, "che_event_반계", [34669, 26393, 44197, 444149, 38031], 1, "3679089.jpg?=20180629"],
["⑬비스마르크", 68, 85, 11, "che_event_궁병", [22648, 309742, 10454, 46404, 14676], 0, "default.jpg"],
["⑮정채연", 70, 84, 10, "che_event_징병", [13973, 19417, 182561, 89692, 2873], 1, "9705097.jpg?=20191001"],
["⑧분위기갑자기소전", 75, 87, 10, "che_event_필살", [379006, 37780, 88218, 138232, 11145], 1, "fb2dc0b.gif?=20190403"],
["④머핀", 70, 10, 84, "che_event_척사", [39961, 25048, 35221, 413026, 19237], 1, "b2fcd42.jpg?=20180924"],
["⑳KF94", 73, 84, 10, "che_event_저격", [59787, 635335, 34870, 117677, 38682], 1, "577e1ee.png?=20200305"],
["④민트 초코 칩", 71, 11, 85, "che_event_반계", [42486, 70935, 64600, 411450, 15692], 1, "50a2a41.jpg?=20180929"],
["③블랙말랑카우", 74, 83, 10, "che_event_위압", [378803, 19414, 39915, 108153, 21918], 1, "4c98466.jpg?=20180829"],
["⑦위즐튼 공작", 70, 9, 77, "che_event_환술", [74751, 84870, 102534, 732669, 16567], 1, "d2dac4.jpg?=20190126"],
["④666", 83, 10, 72, "che_event_신중", [31198, 29394, 52062, 426875, 32534], 1, "382883b.jpg?=20181004"],
["㉒펭수병", 71, 83, 10, "che_event_의술", [63310, 83480, 367912, 71061, 24302], 1, "c364f77.png?=20200423"],
["⑰정채연", 69, 10, 82, "che_event_집중", [6033, 5938, 4945, 99986, 2771], 1, "9705097.jpg?=20191001"],
["④개노잼놀아라", 80, 9, 78, "che_event_격노", [40121, 50294, 32375, 226732, 29318], 0, "default.jpg"],
["⑦마검", 69, 10, 81, "che_event_필살", [17350, 14250, 17497, 210401, 5460], 0, "default.jpg"],
["⑤엉엉", 65, 75, 9, "che_event_척사", [420738, 25425, 55150, 134625, 17382], 1, "e6d276a.jpg?=20181115"],
["②월척", 74, 10, 86, "che_event_필살", [73531, 90553, 105078, 314674, 6039], 0, "default.jpg"],
["⑤메브", 82, 9, 9, "che_event_위압", [2431, 3211, 7090, 7353, 168984], 1, "eece100.jpg?=20181117"],
["⑩킹구갓구", 83, 67, 11, "che_event_저격", [0, 0, 0, 0, 239757], 1, "fb3c625.gif?=20190428"],
["⑨미친과학", 70, 84, 10, "che_event_돌격", [285082, 12813, 54280, 78370, 15688], 0, "default.jpg"],
["⑪카이스트", 71, 10, 87, "che_event_신중", [45950, 29151, 48395, 462648, 17053], 1, "9361ef8.jpg?=20180907"],
["⑧하우젤", 87, 73, 10, "che_event_돌격", [9862, 59705, 252234, 84529, 14100], 1, "dcff9fd.jpg?=20180823"],
["③sifmd", 69, 10, 79, "che_event_신중", [53200, 6685, 49759, 111012, 2297], 0, "default.jpg"],
["㉕갈근", 69, 76, 10, "che_event_격노", [82489, 768170, 41695, 154426, 14217], 0, "default.jpg"],
["⑦양복을입은아저씨", 83, 63, 9, "che_event_돌격", [28774, 80517, 729490, 262923, 31777], 1, "4da7fe2.jpg?=20190225"],
["⑧등갑병", 89, 67, 10, "che_event_무쌍", [156041, 10152, 30691, 6481, 8628], 1, "97aba2f.gif?=20180628"],
["⑬랜임맨", 74, 10, 82, "che_event_격노", [16402, 19235, 33672, 242417, 23437], 1, "1fc6462.jpg?=20190816"],
["⑬메디브", 69, 10, 86, "che_event_반계", [12775, 16148, 24006, 220874, 15032], 1, "def2895.jpg?=20190719"],
["⑮땅땅이", 68, 10, 80, "che_event_신중", [13491, 1728, 30861, 101347, 5165], 1, "99cd27f.gif?=20190606"],
["⑮임사영", 67, 10, 81, "che_event_징병", [4514, 4290, 2148, 87652, 2744], 1, "d5dc381.gif?=20190719"],
["②주사위논리학", 91, 69, 11, "che_event_돌격", [17548, 189620, 32739, 48952, 13972], 0, "default.jpg"],
["⑨그루트", 72, 10, 86, "che_event_척사", [61332, 47538, 56486, 524399, 40000], 1, "10265d3.png?=20190422"],
["⑬연초봄", 69, 83, 10, "che_event_돌격", [21589, 20116, 308862, 61105, 23434], 1, "2bfad16.jpg?=20190815"],
["㉔Already", 69, 10, 84, "che_event_반계", [12230, 3497, 0, 101675, 18386], 0, "default.jpg"],
["⑤くま", 63, 9, 76, "che_event_척사", [36871, 14634, 77483, 336560, 26839], 1, "73d75c2.jpg?=20180923"],
["⑩연두는말안드뤄", 82, 60, 9, "che_event_저격", [0, 48125, 0, 0, 859020], 1, "892fca8.jpg?=20190509"],
["①월척", 70, 10, 85, "che_event_저격", [0, 9940, 11445, 102947, 13740], 0, "default.jpg"],
["②리안", 73, 11, 87, "che_event_필살", [47566, 123130, 72468, 344925, 50693], 0, "default.jpg"],
["㉖이초홍", 74, 16, 91, "che_event_반계", [7995, 32637, 25701, 268670, 73323], 1, "ac758a0.jpg?=20200716"],
["⑮휴식이드", 71, 10, 88, "che_event_필살", [19986, 33521, 41345, 246607, 8612], 1, "1503444.jpg?=20190926"],
["⑦안나", 76, 9, 73, "che_event_신산", [84551, 79684, 137728, 674656, 22848], 1, "1593d39.gif?=20190129"],
["①whan", 85, 69, 10, "che_event_필살", [20271, 311096, 38315, 50035, 20590], 0, "default.jpg"],
["④평민킬러", 72, 83, 11, "che_event_척사", [550555, 17547, 55128, 133675, 29418], 1, "6add0f.jpg?=20180515"],
["⑤민트 초코 칩", 66, 9, 72, "che_event_저격", [43273, 10727, 56284, 260973, 274258], 1, "50a2a41.jpg?=20180929"],
["⑳두꺼비", 87, 69, 10, "che_event_견고", [467683, 20432, 46133, 122117, 27681], 1, "cc0eb9d.jpg?=20200305"],
["㉓랜갈덤근", 75, 10, 90, "che_event_집중", [49776, 47364, 62258, 1567830, 62682], 0, "default.jpg"],
["⑫뽀짝이", 71, 10, 87, "che_event_격노", [20676, 17333, 2013, 221014, 23172], 1, "99cd27f.gif?=20190606"],
["②아사이 나나미", 75, 10, 85, "che_event_집중", [26285, 139731, 125010, 702859, 34369], 1, "364468c.jpg?=20180813"],
["㉒보스곰", 69, 10, 83, "che_event_신산", [38667, 17481, 18532, 212359, 8174], 1, "773556e.gif?=20190822"],
["⑥쿠요", 68, 87, 10, "che_event_의술", [0, 19555, 117974, 23292, 16011], 1, "13a2ed0.png?=20180920"],
["⑨무팡", 72, 10, 85, "che_event_반계", [51618, 45671, 19445, 453861, 7872], 1, "181fefa.jpg?=20190414"],
["⑥소열제유비", 71, 84, 11, "che_event_기병", [20238, 81932, 337663, 51541, 24300], 1, "a3b1bbb.png?=20180927"],
["⑩Defender", 86, 57, 9, "che_event_저격", [0, 0, 389, 0, 1035933], 1, "622da6b.jpg?=20190511"],
["⑯Samo", 70, 77, 10, "che_event_저격", [0, 62448, 992, 7962, 33864], 1, "25449b0.png?=20190626"],
["⑥Lupia", 73, 10, 82, "che_event_신산", [48730, 114337, 97992, 654997, 27183], 0, "default.jpg"],
["⑭김나영", 70, 85, 10, "che_event_필살", [15203, 18707, 202373, 61922, 9885], 1, "c90a3d4.jpg?=20190905"],
["⑬로리", 81, 11, 71, "che_event_필살", [20555, 11529, 13800, 237232, 20171], 1, "1ec690f.jpg?=20190720"],
["⑧n아텐 누", 68, 11, 89, "che_event_집중", [6671, 27291, 23215, 156747, 8632], 1, "862bd8e.gif?=20181028"],
["⑩S9100", 81, 69, 11, "che_event_저격", [0, 0, 0, 0, 187535], 0, "default.jpg"],
["③병리학적자세", 71, 9, 86, "che_event_집중", [79770, 44334, 72236, 375876, 24444], 1, "3679089.jpg?=20180629"],
["⑫김나영", 70, 89, 10, "che_event_징병", [455057, 15416, 39763, 39666, 45299], 1, "aa2d228.jpg?=20190718"],
["㉑슬라임", 70, 10, 83, "che_event_신중", [46096, 20731, 31052, 284182, 10074], 1, "c40f9f7.jpg?=20200222"],
["㉙시딱마! 옥끼토끼!", 75, 15, 87, "che_event_징병", [18865, 19779, 8284, 120765, 17694], 1, "c4e8391.gif?=20201111"],
["⑩이쓰미", 68, 9, 73, "che_event_저격", [0, 0, 0, 0, 618683], 1, "fd6a0fd.jpg?=20181212"],
["㉗구독독구해주세요", 75, 15, 90, "che_event_신중", [5145, 8560, 35205, 203873, 35600], 0, "default.jpg"],
["⑥n아텐 누", 71, 10, 86, "che_event_저격", [54786, 22938, 44900, 329477, 9925], 1, "862bd8e.gif?=20181028"],
["㉖.", 88, 72, 17, "che_event_무쌍", [9135, 5495, 96509, 36569, 43690], 0, "default.jpg"],
["④가로쉬 헬스크림", 71, 85, 10, "che_event_척사", [222758, 34960, 65948, 47798, 25852], 1, "d8828c4.jpg?=20181004"],
["⑭ㅇㄷ", 69, 86, 10, "che_event_필살", [24924, 29465, 467317, 91384, 34258], 0, "default.jpg"],
["㉗.", 89, 76, 16, "che_event_척사", [381657, 27108, 30955, 88955, 28368], 0, "default.jpg"],
["⑥두땅크", 86, 70, 10, "che_event_견고", [356622, 26933, 63360, 74019, 10610], 0, "default.jpg"],
["⑤카이스트", 63, 9, 76, "che_event_신중", [55518, 15320, 85546, 468666, 30792], 1, "9361ef8.jpg?=20180907"],
["③요리타 요시노", 71, 11, 81, "che_event_반계", [6318, 13459, 23813, 240649, 25776], 1, "e15d37e.png?=20180828"],
["⑧갈색마(+5)", 76, 81, 10, "che_event_무쌍", [17917, 41769, 350794, 108527, 21423], 1, "88598ee.jpg?=20190321"],
["⑭Myo", 70, 82, 10, "che_event_의술", [8903, 132955, 0, 22766, 18222], 1, "7072487.jpg?=20190905"],
["㉕임사영", 65, 10, 79, "che_event_신중", [40061, 45278, 27016, 456215, 19157], 1, "7f9473e.gif?=20200211"],
["②연휘령", 76, 10, 85, "che_event_징병", [10659, 121889, 133504, 818722, 69286], 0, "default.jpg"],
["⑧hoopeh T", 70, 10, 88, "che_event_척사", [52458, 53500, 69228, 322424, 7765], 0, "default.jpg"],
["⑭미스티", 69, 10, 86, "che_event_신산", [16443, 19713, 27689, 225456, 2076], 1, "1aadcba.png?=20180908"],
["⑪이리시스", 72, 10, 86, "che_event_필살", [53487, 59065, 13263, 554253, 26487], 0, "default.jpg"],
["②이드", 88, 73, 10, "che_event_무쌍", [24372, 145423, 345963, 83233, 32665], 1, "e3835ee.jpg?=20180720"],
["㉔코리안코커", 81, 71, 10, "che_event_척사", [9640, 36774, 137952, 59674, 11942], 1, "f44d79c.png?=20200503"],
["⑨나랑", 90, 41, 37, "che_event_저격", [24055, 5348, 4407, 9933, 464917], 1, "8ee3feb.png?=20190501"],
["⑭엔야스", 58, 23, 86, "che_event_집중", [34502, 38573, 20294, 274472, 7465], 0, "default.jpg"],
["①늘모", 82, 72, 10, "che_event_무쌍", [0, 82347, 145492, 28974, 45695], 0, "default.jpg"],
["⑬배박수양아지", 78, 74, 10, "che_event_견고", [4984, 54145, 210891, 31778, 14156], 1, "d572e5f.jpg?=20190815"],
["⑥규이르", 73, 83, 10, "che_event_위압", [66364, 266420, 221194, 123622, 19922], 1, "bc45418.jpg?=20181214"],
["⑥먀삼거리에서먀된먀", 69, 10, 86, "che_event_반계", [4419, 42658, 22179, 218223, 16095], 0, "default.jpg"],
["⑲말걸지마라", 85, 69, 10, "che_event_저격", [350581, 22056, 40768, 58089, 43213], 1, "e465f23.gif?=20200109"],
["㉖페이트", 75, 16, 87, "che_event_신중", [10917, 33823, 4849, 155197, 7651], 1, "65f1662.jpg?=20200721"],
["⑭닥터유", 76, 77, 10, "che_event_견고", [14182, 350375, 14952, 85605, 20607], 1, "6b371ec.jpg?=20190909"],
["⑫질투의꼬리", 69, 10, 83, "che_event_신중", [17509, 38845, 3523, 144261, 4892], 0, "default.jpg"],
["⑲병리학적자세", 68, 11, 84, "che_event_격노", [53626, 35180, 33899, 476134, 24310], 1, "3679089.jpg?=20180629"],
["⑩아유", 87, 56, 9, "che_event_저격", [0, 0, 0, 0, 1201097], 1, "ba186bf.gif?=20181220"],
["㉙이드", 74, 86, 15, "che_event_견고", [9274, 9709, 200170, 31005, 20057], 1, "641883f.jpg?=20200910"],
["①야포", 69, 11, 83, "che_event_반계", [4541, 25297, 18959, 190505, 33514], 0, "default.jpg"],
["⑥ARES군주", 69, 88, 10, "che_event_돌격", [14205, 38414, 182708, 36323, 24505], 1, "ca0b15e.gif?=20181003"],
["㉕병리학적자세", 63, 10, 79, "che_event_필살", [60017, 40019, 45362, 462049, 14087], 1, "3679089.jpg?=20180629"],
["①춤추는곰돌이강슬기", 71, 85, 10, "che_event_돌격", [14623, 44238, 364737, 71354, 52162], 1, "214e682.jpg?=20180709"],
["②바리", 95, 12, 11, "che_event_격노", [0, 0, 0, 11173, 158671], 1, "e4e2524.gif?=20180803"],
["⑪드림캐쳐", 73, 84, 10, "che_event_견고", [780295, 42451, 44529, 59837, 28091], 1, "6bca7d1.jpg?=20190620"],
["⑫모건", 93, 13, 10, "che_event_필살", [0, 245, 0, 0, 127902], 1, "b023aa0.jpg?=20190731"],
["⑩송강", 79, 36, 37, "che_event_저격", [0, 0, 323, 0, 291417], 1, "e7a5bde.jpg?=20190329"],
["⑮그저늅늅", 68, 10, 91, "che_event_집중", [28798, 17683, 39254, 258926, 11547], 1, "5cedbb3.jpg?=20190817"],
["①갓갓갓", 71, 11, 82, "che_event_신산", [17059, 77159, 7063, 220467, 33070], 0, "default.jpg"],
["⑤스타킹", 72, 67, 9, "che_event_돌격", [30286, 21658, 498047, 103640, 30440], 1, "a7d4ef2.png?=20180920"],
["④화계장터마스코트", 72, 10, 85, "che_event_신산", [59486, 61241, 19399, 507079, 36389], 1, "24cd9f7.gif?=20180927"],
["⑬악의", 71, 10, 82, "che_event_의술", [22978, 21176, 8118, 174097, 16142], 0, "default.jpg"],
["⑥평민킬러", 72, 84, 10, "che_event_척사", [479800, 21874, 115333, 90822, 28351], 1, "2816ad.jpg?=20181118"],
["④호랑나비", 72, 10, 84, "che_event_격노", [24118, 44226, 39462, 302726, 16729], 1, "6afbac.gif?=20180927"],
["㉘Dok2", 76, 15, 92, "che_event_신산", [15645, 18476, 29407, 458343, 22932], 1, "41f83a4.jpg?=20200910"],
["⑫만샘", 71, 10, 88, "che_event_신중", [54581, 47171, 18478, 493039, 12480], 1, "4a206a1.jpg?=20181122"],
["⑬묘", 68, 81, 11, "che_event_무쌍", [10448, 9412, 132952, 45874, 1649], 0, "default.jpg"],
["㉙기", 89, 72, 15, "che_event_필살", [11265, 12229, 159370, 39591, 20039], 0, "default.jpg"],
["⑨타마키", 87, 71, 11, "che_event_필살", [9600, 21828, 325212, 59128, 31101], 1, "91ddaa3.jpg?=20190411"],
["⑩장수는랜덤", 81, 10, 69, "che_event_저격", [0, 0, 0, 69, 161506], 0, "default.jpg"],
["⑯료우기시키", 82, 74, 11, "che_event_무쌍", [147053, 1652, 2956, 15505, 21748], 1, "559083f.jpg?=20190905"],
["⑨로키", 74, 87, 10, "che_event_견고", [36243, 67776, 652322, 135848, 24967], 1, "a90d1e5.jpg?=20190411"],
["⑥카오스피닉스", 71, 10, 83, "che_event_의술", [9628, 18400, 9802, 166715, 25921], 1, "2af0641.jpg?=20180706"],
["⑧경국지색소교", 66, 15, 89, "che_event_필살", [59600, 21149, 51649, 315626, 16613], 0, "default.jpg"],
["㉖카린", 87, 77, 16, "che_event_위압", [26763, 505723, 16575, 15005, 19076], 1, "fb3c625.gif?=20190428"],
["㉒킹구", 79, 68, 12, "che_event_징병", [3313, 7816, 95991, 26196, 13158], 1, "fb3c625.gif?=20190428"],
["⑳료우기시키", 84, 71, 10, "che_event_무쌍", [61730, 186941, 2328, 51745, 24916], 1, "559083f.jpg?=20190905"],
["⑫비스마르크", 68, 83, 10, "che_event_격노", [7859, 30790, 165023, 66664, 9657], 0, "default.jpg"],
["㉒돌격", 85, 67, 11, "che_event_견고", [30917, 43421, 478831, 118418, 31757], 0, "default.jpg"],
["①くま", 69, 10, 83, "che_event_격노", [1553, 27232, 36544, 166497, 18822], 0, "default.jpg"],
["⑯낙지꾸미", 70, 10, 83, "che_event_필살", [0, 6343, 0, 108740, 24196], 0, "default.jpg"],
["③ARES군주", 77, 78, 11, "che_event_징병", [66167, 36648, 596058, 114620, 32974], 1, "68432f1.jpg?=20180811"],
["⑤리플", 65, 74, 9, "che_event_견고", [389791, 12682, 131145, 125222, 19270], 1, "cb8bb48.jpg?=20181026"],
["⑬달이차오른다", 81, 70, 12, "che_event_의술", [11268, 167974, 11018, 24398, 15801], 0, "default.jpg"],
["⑨착한아이", 70, 85, 10, "che_event_필살", [239192, 30787, 48133, 40099, 16394], 1, "f2d4b4.jpg?=20180629"],
["⑦줄리엣", 64, 9, 85, "che_event_격노", [41429, 23665, 44175, 431802, 16734], 1, "175639b.png?=20181025"],
["㉗좌우쌍욍검유비", 88, 76, 15, "che_event_공성", [1930, 49445, 350730, 51476, 127117], 1, "b9cb94e.jpg?=20200805"],
["⑦뉴비는아님암튼아님", 66, 81, 10, "che_event_징병", [45342, 88158, 461180, 141536, 15817], 1, "3168f43.jpg?=20190304"],
["㉙도우너", 75, 85, 15, "che_event_돌격", [126988, 10011, 1820, 27450, 13133], 1, "55b37a2.jpg?=20201111"],
["⑭국영꾼", 66, 79, 11, "che_event_기병", [35630, 11809, 25456, 32327, 472], 0, "default.jpg"],
["㉕학계의 정설", 69, 77, 10, "che_event_공성", [0, 6129, 18229, 14241, 216508], 0, "default.jpg"],
["①사이키쿠스오", 69, 85, 10, "che_event_격노", [30845, 277427, 23274, 46460, 20044], 1, "76bcc11.jpg?=20180628"],
["⑬엔야스", 71, 80, 10, "che_event_필살", [25798, 88115, 4837, 15831, 13802], 0, "default.jpg"],
["②띵호잉루", 70, 84, 10, "che_event_견고", [30958, 318139, 28499, 73436, 14548], 1, "4f071f2.jpg?=20180719"],
["③민트초코칩", 71, 11, 84, "che_event_척사", [40969, 61338, 60004, 518999, 46093], 1, "f53316b.jpg?=20180903"],
["⑧에바", 73, 10, 83, "che_event_척사", [8489, 11233, 19493, 191543, 13372], 0, "default.jpg"],
["⑤긴토키", 63, 73, 10, "che_event_돌격", [10654, 40895, 325308, 98362, 17484], 1, "1336ea.jpg?=20181025"],
["⑭톡없음", 72, 11, 82, "che_event_집중", [43225, 22229, 47813, 368082, 17573], 0, "default.jpg"],
["⑥모로코", 85, 69, 10, "che_event_돌격", [17144, 66049, 258186, 55494, 13071], 1, "75ca81d.jpg?=20181130"],
["④사스케", 83, 72, 10, "che_event_위압", [182798, 8687, 43431, 73283, 6055], 1, "4c58102.jpg?=20180927"],
["⑤집요정", 62, 9, 78, "che_event_필살", [37830, 19696, 54110, 312879, 14940], 1, "2e01216.jpg?=20181117"],
["⑧무한파워안경", 87, 73, 10, "che_event_저격", [7612, 38039, 319500, 125980, 16469], 1, "b7e1a1f.jpg?=20180525"],
["⑧만샘", 74, 10, 88, "che_event_격노", [54133, 62113, 69298, 461122, 46887], 1, "4a206a1.jpg?=20181122"],
["④요정", 70, 85, 11, "che_event_격노", [25374, 44461, 480161, 117902, 26024], 1, "a2e5934.png?=20181005"],
["⑨치카", 71, 11, 86, "che_event_반계", [36669, 52152, 42682, 556462, 37493], 1, "3e3566c.png?=20190411"],
["⑬제노에이지", 67, 10, 87, "che_event_신산", [6120, 22097, 23220, 142690, 13093], 1, "ddd1fd7.jpg?=20190320"],
["⑭모망삼다했", 69, 10, 82, "che_event_신산", [7268, 30557, 5025, 163972, 0], 0, "default.jpg"],
["⑥미스티", 81, 10, 69, "che_event_의술", [39688, 35243, 44939, 252746, 4939], 1, "1aadcba.png?=20180908"],
["⑥외심장", 72, 10, 83, "che_event_저격", [30132, 36066, 33808, 220057, 1945], 1, "36110cd.jpg?=20180826"],
["㉓레다", 85, 10, 77, "che_event_의술", [93401, 45647, 31469, 631498, 50236], 1, "cf762d0.jpg?=20200130"],
["㉖손견문대", 75, 15, 85, "che_event_신중", [12649, 4871, 7148, 128067, 19301], 0, "default.jpg"],
["㉕백구이야기", 86, 77, 10, "che_event_척사", [1020358, 47414, 149009, 179378, 14621], 1, "f82ea71.jpg?=20200611"],
["⑥집합장 1", 80, 75, 10, "che_event_견고", [41759, 659504, 102688, 101509, 56255], 1, "2c05c61.jpg?=20181218"],
["⑪나가사와 마리나", 81, 10, 76, "che_event_척사", [54962, 43922, 11725, 380426, 24276], 1, "ea91789.png?=20190620"],
["⑦Febrile", 71, 10, 81, "che_event_신산", [6562, 0, 6354, 435, 164621], 0, "default.jpg"],
["⑬킹구없이는못살아", 68, 82, 11, "che_event_격노", [15354, 165963, 15169, 43889, 15012], 1, "fb3c625.gif?=20190428"],
["⑬호무새의속마음", 82, 71, 10, "che_event_견고", [285203, 12734, 30117, 54477, 11184], 1, "3afd99b.png?=20190815"],
["⑪살인사건", 71, 85, 10, "che_event_징병", [4975, 27521, 145474, 46272, 12402], 0, "default.jpg"],
["⑨무사태평자", 70, 10, 88, "che_event_집중", [32253, 29065, 33306, 417577, 25348], 0, "default.jpg"],
["④카오스피닉스", 71, 10, 85, "che_event_척사", [33109, 36307, 62363, 297314, 13179], 1, "2af0641.jpg?=20180706"],
["⑯Navy마초", 68, 87, 10, "che_event_무쌍", [318, 153674, 0, 8703, 36201], 0, "default.jpg"],
["⑥고긔가먹고싶", 69, 10, 86, "che_event_의술", [11134, 17201, 6071, 133570, 0], 1, "ae8cbdd.gif?=20181114"],
["④숨쉴래", 70, 10, 86, "che_event_저격", [20132, 14705, 35671, 245664, 9817], 1, "bf4bcbf.jpg?=20180823"],
["⑤광삼이", 67, 9, 72, "che_event_집중", [27930, 11078, 64011, 273666, 10928], 1, "69fc07c.jpg?=20180926"],
["⑪?", 71, 11, 83, "che_event_필살", [33010, 27167, 47333, 365515, 16514], 1, "4384752.jpg?=20190620"],
["⑥화사", 69, 87, 10, "che_event_견고", [207353, 12833, 3396, 30873, 25654], 1, "6c3e3fb.jpg?=20181129"],
["④지용갓", 68, 10, 85, "che_event_집중", [17975, 11960, 38663, 134064, 1512], 1, "1f3a6e6.png?=20180926"],
["㉑くま", 85, 70, 10, "che_event_견고", [32539, 42900, 489119, 132317, 53684], 1, "770f53.jpg?=20190718"],
["㉕수장", 69, 80, 10, "che_event_돌격", [47345, 125147, 12986, 26316, 6589], 1, "190d7ff.jpg?=20200312"],
["⑥ⓟ럭키", 73, 10, 84, "che_event_저격", [41919, 56516, 88869, 585514, 37656], 1, "8e57858.gif?=20181217"],
["㉖일이석우", 78, 85, 15, "che_event_공성", [0, 10700, 0, 12824, 469750], 1, "9c2026b.jpg?=20200527"],
["⑰KOSPI", 71, 80, 10, "che_event_징병", [28079, 23655, 196404, 35678, 49318], 0, "default.jpg"],
["⑦Raccoon", 66, 9, 76, "che_event_척사", [56964, 39442, 69425, 485863, 15438], 0, "default.jpg"],
["⑥박보검", 69, 10, 85, "che_event_반계", [16116, 21102, 14876, 124846, 15207], 1, "649311b.jpg?=20181129"],
["⑤팬티", 61, 9, 78, "che_event_집중", [26713, 39279, 33881, 319243, 4400], 1, "7389d8c.png?=20181025"],
["⑰땅땅이", 81, 72, 10, "che_event_격노", [9308, 62309, 265274, 77751, 20948], 1, "99cd27f.gif?=20190606"],
["㉘10068", 74, 92, 15, "che_event_격노", [117983, 38024, 27309, 42003, 7518], 0, "default.jpg"],
["㉙야가다마스터", 77, 85, 15, "che_event_저격", [0, 22627, 155612, 31020, 23839], 0, "default.jpg"],
["㉗료우기시키", 88, 78, 15, "che_event_돌격", [27311, 232365, 152840, 73882, 35427], 1, "559083f.jpg?=20190905"],
["⑧덕장", 90, 69, 10, "che_event_위압", [50713, 371021, 76129, 119567, 23845], 0, "default.jpg"],
["⑳로리", 73, 10, 86, "che_event_집중", [10915, 6830, 14574, 846843, 40297], 1, "50794a6.jpg?=20190923"],
["⑦류조", 66, 9, 72, "che_event_저격", [76911, 60995, 53687, 342677, 8025], 1, "7351863.gif?=20190221"],
["⑦만샘", 67, 9, 82, "che_event_신산", [38852, 103656, 96057, 643898, 7324], 1, "4a206a1.jpg?=20181122"],
["⑥스파르타쿠스", 76, 78, 10, "che_event_격노", [38894, 75704, 395324, 156155, 11812], 1, "e491277.jpg?=20181129"],
["㉙임사영", 76, 15, 83, "che_event_척사", [6867, 1520, 16793, 123043, 8178], 1, "7f9473e.gif?=20200211"],
["②늘모", 78, 10, 83, "che_event_징병", [65631, 160477, 115617, 536931, 19508], 1, "e7c163.png?=20180801"],
["⑤로얄밀크티", 78, 62, 9, "che_event_저격", [52935, 559654, 62533, 94207, 47166], 1, "5b28b38.png?=20181115"],
["⑯평민킬러", 69, 86, 10, "che_event_무쌍", [210597, 4618, 15688, 13134, 28916], 1, "fb23a32.jpg?=20190904"],
["⑦두나", 65, 9, 82, "che_event_저격", [14963, 2731, 19710, 304635, 9567], 1, "bf0c572.png?=20181114"],
["⑦제노에이지", 63, 9, 79, "che_event_반계", [20368, 17249, 50083, 245920, 7312], 0, "default.jpg"],
["㉘네시", 75, 15, 92, "che_event_신중", [32073, 24821, 24183, 347579, 33880], 0, "default.jpg"],
["⑳보이루", 72, 10, 86, "che_event_환술", [34577, 49924, 38667, 673301, 52180], 1, "a9b0507.jpg?=20200217"],
["㉙일이석우", 72, 15, 89, "che_event_저격", [4208, 2648, 3852, 123975, 26703], 1, "9c2026b.jpg?=20200527"],
["㉑아라한", 80, 73, 11, "che_event_필살", [20260, 32461, 231775, 27320, 17654], 1, "a66f117.jpg?=20200402"],
["㉖카라라트리", 75, 90, 15, "che_event_무쌍", [13974, 26882, 355365, 39113, 27730], 1, "848a454.jpg?=20200717"],
["⑥태극권", 78, 70, 10, "che_event_돌격", [17408, 59492, 42268, 17857, 0], 1, "e7183a7.jpg?=20181101"],
["⑤소열제유비", 67, 73, 9, "che_event_척사", [25089, 42398, 408605, 108503, 15546], 1, "a3b1bbb.png?=20180927"],
["⑨호크아이", 72, 87, 10, "che_event_격노", [116602, 426109, 28348, 89696, 16420], 1, "bd83469.jpg?=20190412"],
["⑭째깐둥이", 81, 10, 72, "che_event_징병", [18501, 11115, 4928, 191235, 10681], 1, "f8d36e2.png?=20190912"],
["②진리", 88, 72, 10, "che_event_필살", [61758, 536541, 75409, 178932, 13414], 1, "36d49fa.jpg?=20180725"],
["⑦서울대의대", 67, 9, 76, "che_event_신중", [49168, 54947, 55861, 547782, 19853], 0, "default.jpg"],
["⑦아이린", 67, 81, 9, "che_event_돌격", [87746, 628250, 25622, 184653, 36668], 1, "8dac73c.jpg?=20180922"],
["⑤FFFFFF", 79, 62, 9, "che_event_돌격", [335531, 50054, 111408, 128229, 17623], 1, "e0b1d99.jpg?=20181028"],
["③덕장", 70, 84, 11, "che_event_저격", [358619, 29859, 50037, 78140, 19263], 1, "c281d38.jpg?=20180906"],
["③민트토끼", 73, 10, 84, "che_event_신중", [76160, 38268, 119597, 607557, 27717], 1, "976f3f5.gif?=20180809"],
["④료우기시키", 71, 84, 10, "che_event_징병", [235381, 25279, 49702, 62311, 11071], 1, "21b50f8.jpg?=20180628"],
["②DZTO", 72, 10, 85, "che_event_격노", [29064, 65309, 78396, 143127, 9180], 1, "753cf5d.jpg?=20180723"],
["⑫리즈나광팬672번", 77, 82, 10, "che_event_저격", [63223, 52779, 284357, 123335, 13228], 1, "3f21be0.jpg?=20190719"],
["⑪헹이", 71, 85, 10, "che_event_징병", [54900, 321923, 4800, 95585, 21977], 0, "default.jpg"],
["⑩로비", 81, 33, 33, "che_event_저격", [0, 0, 0, 0, 434871], 1, "59b6a1d.jpg?=20180802"],
["㉙개미호랑이", 72, 16, 88, "che_event_반계", [9264, 9816, 6247, 102975, 6095], 1, "9e0429e.jpg?=20200313"],
["④탄산", 71, 10, 83, "che_event_필살", [41397, 25110, 45954, 321664, 3344], 1, "b6c1067.png?=20180925"],
["③크르르", 71, 10, 84, "che_event_반계", [42714, 31336, 86465, 346386, 15710], 0, "default.jpg"],
["⑧소열제유비", 72, 88, 10, "che_event_기병", [2739, 25885, 271234, 121472, 11110], 1, "a3b1bbb.png?=20180927"],
["⑪의욕없는규일", 73, 85, 10, "che_event_무쌍", [86480, 635227, 39771, 86433, 16507], 0, "default.jpg"],
["⑬보스곰", 68, 11, 86, "che_event_집중", [14708, 12208, 20068, 225041, 15913], 1, "773556e.gif?=20190822"],
["⑨노가가", 90, 68, 10, "che_event_돌격", [442090, 41636, 59251, 85789, 26487], 1, "b8b96da.png?=20190421"],
["㉓임사영", 75, 10, 87, "che_event_환술", [32395, 28399, 35947, 372813, 16176], 1, "7f9473e.gif?=20200211"],
["①광삼이", 74, 10, 79, "che_event_필살", [19805, 70942, 31060, 330337, 23527], 1, "bcdfa8.jpg?=20180630"],
["⑫리안", 70, 10, 90, "che_event_척사", [9005, 3957, 6810, 120993, 24207], 1, "db0cb7a.jpg?=20190719"],
["⑤n아텐 누", 63, 9, 78, "che_event_신중", [27648, 40231, 66665, 446428, 21807], 1, "862bd8e.gif?=20181028"],
["⑮묘", 69, 81, 11, "che_event_징병", [15197, 106299, 1381, 18759, 17719], 1, "7072487.jpg?=20190905"],
["⑪삐약이", 74, 83, 10, "che_event_격노", [14542, 317000, 7269, 51955, 26625], 1, "10f5cdc.jpg?=20190708"],
["㉕미르칼라", 68, 10, 79, "che_event_환술", [46006, 28020, 67235, 987828, 9470], 1, "959346e.jpg?=20200604"],
["⑨평민킬러", 69, 89, 10, "che_event_위압", [268642, 12321, 25583, 33873, 20140], 1, "2816ad.jpg?=20181118"],
["⑧ㅇㄷ", 68, 10, 86, "che_event_반계", [5602, 26719, 24419, 212082, 21756], 0, "default.jpg"],
["㉘으헹", 79, 15, 89, "che_event_귀병", [21536, 27306, 5198, 230579, 13902], 1, "a1ad420.jpg?=20200425"],
["⑩rwitch", 82, 9, 57, "che_event_저격", [0, 4341, 0, 0, 672844], 1, "4d82adb.jpg?=20190325"],
["⑱박일아", 75, 87, 10, "che_event_무쌍", [28858, 116303, 1138468, 138739, 50122], 1, "8608979.gif?=20191024"],
["⑨문학소녀", 70, 10, 86, "che_event_필살", [61277, 26560, 44044, 354133, 19828], 1, "bf40507.jpg?=20190411"],
["㉓Hide_D", 84, 11, 79, "che_event_환술", [105917, 55852, 68709, 1133732, 69051], 1, "9f0a2a8.png?=20200106"],
["①리즈나", 71, 85, 10, "che_event_무쌍", [154806, 160366, 170422, 34193, 57545], 1, "6ef3386.jpg?=20180630"],
["⑮Navy마초", 80, 73, 10, "che_event_무쌍", [59999, 322796, 25521, 85651, 14200], 0, "default.jpg"],
["⑯아무말이나들어줌", 76, 79, 12, "che_event_기병", [242, 10369, 105455, 6820, 16329], 1, "df7a778.jpg?=20191024"],
["㉓박일아", 76, 11, 88, "che_event_환술", [72117, 80050, 99539, 1576763, 70108], 1, "8608979.gif?=20191024"],
["④모니카열전좀", 67, 84, 10, "che_event_척사", [72560, 52721, 86782, 42917, 8302], 1, "f2d4b4.jpg?=20180629"],
["⑩아이린", 68, 72, 9, "che_event_저격", [0, 0, 139266, 0, 298447], 1, "8dac73c.jpg?=20180922"],
["⑫아침에먹는아욱국", 87, 10, 72, "che_event_반계", [50904, 28941, 28962, 391378, 17309], 0, "default.jpg"],
["④막둥이", 71, 10, 85, "che_event_저격", [29509, 24998, 25017, 226267, 21364], 0, "default.jpg"],
["⑪소열제유비", 71, 85, 10, "che_event_무쌍", [9604, 20194, 148418, 38737, 13348], 1, "a3b1bbb.png?=20180927"],
["⑤상냥한요승상", 69, 9, 71, "che_event_신중", [53942, 34447, 52894, 481462, 18575], 1, "76bf7f6.jpg?=20181007"],
["㉑광순이", 69, 10, 84, "che_event_환술", [16081, 27260, 31971, 304663, 42187], 1, "ec3db27.gif?=20200402"],
["⑨스트레인지", 76, 84, 10, "che_event_위압", [577828, 74354, 106284, 101865, 20770], 1, "80af794.jpg?=20190411"],
["⑬반역의루돌프", 77, 76, 10, "che_event_필살", [126617, 11098, 22934, 45129, 6469], 0, "default.jpg"],
["⑫꼬리♡", 73, 10, 90, "che_event_척사", [24478, 27771, 20496, 454170, 34509], 1, "844a93b.gif?=20190717"],
["⑲현피0번남음", 66, 10, 82, "che_event_신산", [8797, 10337, 7072, 96532, 2641], 0, "default.jpg"],
["⑪정체모를트롤", 70, 10, 88, "che_event_신산", [17709, 16045, 4894, 328633, 7794], 0, "default.jpg"],
["②위대한로렌초", 75, 90, 10, "che_event_위압", [61360, 1367383, 110301, 196998, 40255], 1, "71e4063.jpg?=20180720"],
["⑰토미에", 69, 10, 82, "che_event_격노", [0, 15001, 28747, 179707, 5613], 1, "f4cbfb3.jpg?=20191112"],
["⑤5분장멍펫", 69, 72, 9, "che_event_징병", [96251, 287301, 113313, 111606, 12310], 1, "e3085b8.jpg?=20181025"],
["⑥이쓰미", 73, 11, 83, "che_event_격노", [57119, 45569, 69154, 503433, 30065], 1, "fd6a0fd.jpg?=20181212"],
["㉖천재", 76, 15, 91, "che_event_집중", [10256, 4662, 5250, 141527, 9519], 0, "default.jpg"],
["⑥김독자", 80, 70, 11, "che_event_돌격", [36729, 159102, 29345, 41846, 2295], 0, "default.jpg"],
["⑤임사영", 62, 9, 76, "che_event_필살", [23995, 25621, 50553, 238485, 19982], 1, "a0bc4b2.jpg?=20180628"],
["㉖슬라임", 86, 79, 15, "che_event_필살", [314323, 10320, 35875, 44562, 63783], 0, "default.jpg"],
["㉖김나영", 76, 90, 16, "che_event_돌격", [26107, 6147, 379712, 75224, 21867], 1, "c90a3d4.jpg?=20190905"],
["⑳어스퀘이크", 70, 11, 79, "che_event_반계", [14886, 23540, 9213, 212215, 41598], 0, "default.jpg"],
["㉕전투기계우르곳", 64, 10, 78, "che_event_의술", [42558, 36646, 38474, 336696, 13546], 1, "b5fd8fc.gif?=20200604"],
["⑧Aika", 85, 75, 11, "che_event_척사", [24592, 460397, 106214, 152832, 39933], 1, "dc67ee2.png?=20190316"],
["⑥강도", 72, 80, 10, "che_event_위압", [2612, 41326, 192017, 65111, 14392], 1, "384aa86.jpg?=20181204"],
["⑩따라큐", 84, 58, 9, "che_event_저격", [0, 0, 0, 0, 950865], 1, "d879a26.png?=20190427"],
["⑪심심3", 70, 10, 86, "che_event_저격", [8374, 11064, 17965, 76450, 5463], 0, "default.jpg"],
["⑨누렁", 89, 70, 10, "che_event_척사", [418684, 13913, 76175, 126112, 29697], 1, "4bbfa36.jpg?=20190411"],
["⑧이쓰미", 70, 10, 89, "che_event_격노", [4114, 0, 5450, 83715, 11188], 1, "fd6a0fd.jpg?=20181212"],
["②북오더", 70, 10, 78, "che_event_견고", [27543, 4207, 13568, 43439, 33269], 1, "4e393e3.gif?=20180804"],
["㉗RGB", 76, 15, 88, "che_event_신중", [48528, 21254, 41438, 279400, 11089], 1, "91651d1.webp?=20200813"],
["④whan", 75, 83, 10, "che_event_무쌍", [42469, 571227, 60657, 206894, 20573], 1, "68aacd2.jpg?=20180929"],
["㉕낙지꿈", 63, 10, 80, "che_event_집중", [69901, 30004, 15248, 428603, 22347], 0, "default.jpg"],
["㉒개미호랑이즈리얼", 82, 70, 10, "che_event_척사", [20817, 32123, 213097, 37954, 338], 1, "9e0429e.jpg?=20200313"],
["⑫갸꿀띠", 71, 10, 81, "che_event_신중", [36546, 6850, 8508, 224169, 5418], 1, "5b0cf23.jpg?=20190625"],
["⑭미니미니쿠키", 81, 10, 74, "che_event_필살", [24115, 5118, 20145, 229329, 16423], 0, "default.jpg"],
["⑲Elsa", 71, 83, 10, "che_event_저격", [8241, 26929, 263995, 71163, 15037], 1, "5041f99.jpg?=20200121"],
["⑦리플", 69, 9, 78, "che_event_반계", [70054, 81157, 113080, 546483, 8095], 1, "fbe44ca.jpg?=20181207"],
["⑩반역의루돌프", 74, 63, 9, "che_event_저격", [0, 1493, 0, 0, 481951], 0, "default.jpg"],
["⑤죽창", 79, 69, 10, "che_event_척사", [16220, 58006, 78666, 37730, 9111], 1, "1978b2c.jpg?=20180924"],
["④땅크땅크", 88, 68, 11, "che_event_징병", [106071, 393969, 45358, 148749, 14287], 0, "default.jpg"],
["⑳Hide_D", 73, 10, 86, "che_event_집중", [18327, 18100, 21069, 746536, 27042], 1, "9f0a2a8.png?=20200106"],
["⑤제갈여포", 63, 9, 78, "che_event_반계", [58703, 44761, 29432, 322250, 12465], 1, "e8e8adc.jpg?=20180419"],
["①치카", 69, 11, 84, "che_event_징병", [10747, 65866, 9451, 259530, 34691], 1, "a5d05a5.jpg?=20180525"],
["③말랑말", 73, 82, 11, "che_event_돌격", [44396, 50436, 605940, 141042, 18937], 1, "6094d05.jpg?=20180823"],
["⑨화타", 71, 10, 81, "che_event_귀병", [1069, 35178, 17139, 155776, 869], 0, "default.jpg"],
["①DZTO", 85, 67, 10, "che_event_돌격", [0, 135326, 41808, 17914, 27379], 1, "9c05100.jpg?=20180706"],
["④또늦은달팽", 71, 10, 82, "che_event_저격", [55396, 32352, 40683, 324836, 6977], 1, "fb0d354.jpg?=20180629"],
["㉖료우기시키", 88, 78, 15, "che_event_저격", [15924, 26289, 316555, 71475, 21754], 1, "559083f.jpg?=20190905"],
["⑲현피1번남음", 69, 10, 79, "che_event_집중", [2759, 33410, 16327, 189518, 9871], 0, "default.jpg"],
["⑫캬루", 70, 11, 90, "che_event_징병", [23352, 12035, 12716, 241607, 22213], 1, "54e940f.png?=20190717"],
["⑧모니ㅇ카", 69, 10, 89, "che_event_저격", [3072, 22003, 26577, 165160, 10339], 1, "f937029.jpg?=20190321"],
["⑥제노에이지", 70, 10, 85, "che_event_징병", [13387, 48508, 47367, 223293, 4529], 1, "af4fec8.png?=20180818"],
["⑥충차", 85, 66, 11, "che_event_필살", [101228, 404556, 24920, 81754, 37546], 1, "392683c.jpg?=20181129"],
["①륜", 71, 10, 85, "che_event_징병", [44874, 18503, 19522, 190353, 10757], 1, "96061d5.jpg?=20180708"],
["⑭호렌버핏", 68, 10, 83, "che_event_집중", [25963, 20264, 19798, 203071, 15925], 1, "3649856.png?=20190815"],
["⑩외심장", 84, 55, 9, "che_event_저격", [0, 0, 0, 0, 232710], 1, "36110cd.jpg?=20180826"],
["④외심장", 69, 10, 86, "che_event_귀병", [31495, 34269, 25585, 198002, 15797], 1, "36110cd.jpg?=20180826"],
["㉑나타", 86, 68, 10, "che_event_필살", [0, 7735, 0, 8889, 395546], 1, "5930c00.jpg?=20200416"],
["⑦토야마 카스미", 66, 82, 9, "che_event_무쌍", [43415, 535427, 58781, 216485, 33927], 1, "966f765.gif?=20190208"],
["⑥수장", 78, 80, 10, "che_event_저격", [48228, 54821, 428238, 95633, 26597], 1, "d74c9d2.png?=20181115"],
["⑧평민킬러", 75, 85, 10, "che_event_징병", [109538, 591087, 72141, 140242, 29420], 1, "2816ad.jpg?=20181118"],
["⑦미나토 유키나", 71, 9, 81, "che_event_척사", [120039, 148134, 167708, 1150978, 24905], 1, "6050d87.jpg?=20190305"],
["⑪개미호랑이", 72, 10, 87, "che_event_신산", [46734, 88676, 54169, 676154, 20093], 1, "b0969be.jpg?=20190705"],
["⑥큭큭", 68, 11, 80, "che_event_척사", [0, 12439, 6722, 179478, 5991], 1, "525bf94.jpg?=20181129"],
["①료우기시키", 70, 83, 11, "che_event_의술", [334576, 19445, 27287, 45017, 33727], 1, "21b50f8.jpg?=20180628"],
["⑥팬티", 68, 10, 87, "che_event_집중", [10474, 31256, 40568, 300216, 31300], 1, "8496c4b.jpg?=20181217"],
["⑥할말이있어", 71, 10, 86, "che_event_필살", [22667, 56016, 34216, 302191, 11604], 0, "default.jpg"],
["④1288965", 71, 86, 10, "che_event_위압", [5324, 24407, 342321, 87536, 17810], 0, "default.jpg"],
["㉖smile", 87, 78, 17, "che_event_궁병", [9483, 179209, 1068, 30166, 0], 0, "default.jpg"],
["⑱Anna", 72, 11, 88, "che_event_신산", [37553, 45612, 50708, 689014, 45414], 1, "7ad20e3.jpg?=20191212"],
["⑭료우기시키", 69, 10, 84, "che_event_집중", [19398, 32547, 17222, 297079, 6760], 1, "559083f.jpg?=20190905"],
["⑪케프리", 91, 65, 10, "che_event_무쌍", [2041, 5571, 4024, 2044, 111189], 1, "8032c27.jpg?=20190707"],
["㉒뜨뜨뜨뜨", 80, 10, 74, "che_event_집중", [26040, 24307, 60622, 300433, 14495], 1, "a1ad420.jpg?=20200425"],
["⑥민트 초코 칩", 69, 10, 86, "che_event_척사", [33431, 23582, 32861, 300258, 27816], 1, "50a2a41.jpg?=20180929"],
["⑩비스마르크", 81, 9, 61, "che_event_저격", [0, 0, 0, 0, 1451378], 0, "default.jpg"],
["⑦김혜나", 67, 9, 79, "che_event_징병", [66140, 59095, 84458, 706601, 40086], 1, "68b1a10.jpg?=20190126"],
["①아사기리 겐", 69, 11, 86, "che_event_신중", [11990, 55291, 25184, 247169, 40450], 0, "default.jpg"],
["⑳외심장", 69, 10, 85, "che_event_척사", [44338, 40148, 20505, 387032, 14206], 1, "36110cd.jpg?=20180826"],
["⑰평민킬러", 68, 85, 10, "che_event_징병", [234601, 84, 46727, 48450, 25516], 1, "fb23a32.jpg?=20190904"],
["⑩로미오", 87, 69, 10, "che_event_저격", [0, 0, 0, 0, 473300], 1, "806de31.png?=20181025"],
["④사서고생함", 73, 10, 84, "che_event_척사", [33551, 33670, 24840, 209202, 10158], 0, "default.jpg"],
["㉒에포트", 67, 10, 83, "che_event_척사", [12586, 10006, 12316, 89094, 6212], 0, "default.jpg"],
["⑭카오스피닉스", 70, 11, 85, "che_event_척사", [30585, 25093, 31441, 275734, 21548], 1, "7f80b2f.jpg?=20190715"],
["⑥뉴턴", 78, 76, 10, "che_event_무쌍", [38128, 266202, 11882, 73466, 27854], 1, "5331d91.jpg?=20181210"],
["⑧드류", 71, 86, 10, "che_event_저격", [22697, 180107, 19626, 89342, 9390], 0, "default.jpg"],
["②숨질래", 69, 10, 86, "che_event_집중", [21005, 59642, 44662, 293602, 31661], 1, "ad6c46e.jpg?=20180719"],
["㉘일이석우", 76, 15, 92, "che_event_집중", [30266, 22715, 36369, 421288, 8146], 1, "9c2026b.jpg?=20200527"],
["㉒Hide_D", 71, 11, 84, "che_event_신산", [13563, 53427, 60592, 507150, 75293], 1, "9f0a2a8.png?=20200106"],
["㉑사스케", 85, 70, 10, "che_event_의술", [441684, 12578, 75704, 83916, 44226], 1, "61e6754.jpg?=20200402"],
["③늘모", 74, 80, 11, "che_event_위압", [655094, 53450, 116891, 169239, 23325], 1, "e7c163.png?=20180801"],
["⑮지금은전쟁중", 83, 73, 12, "che_event_필살", [10411, 41449, 302872, 62141, 32191], 0, "default.jpg"],
["②갓갓갓", 75, 84, 10, "che_event_돌격", [52703, 66088, 366729, 95014, 13828], 0, "default.jpg"],
["③히카와 사요", 70, 10, 80, "che_event_척사", [45128, 19589, 38320, 260724, 6226], 1, "a1f2916.gif?=20180831"],
["⑬n아텐 누", 83, 67, 11, "che_event_척사", [6634, 26831, 250642, 48396, 19348], 1, "862bd8e.gif?=20181028"],
["③멍미", 74, 10, 82, "che_event_척사", [78837, 35170, 110746, 597750, 36805], 0, "default.jpg"],
["⑧페레로로쉐", 79, 10, 81, "che_event_신산", [23472, 79263, 86712, 593316, 36511], 1, "e9b8542.jpg?=20190314"],
["⑥태수", 71, 10, 84, "che_event_척사", [13951, 14418, 40743, 246476, 35264], 1, "ee74461.gif?=20181214"],
["⑧킹유신", 81, 75, 12, "che_event_격노", [265391, 28657, 93749, 72500, 7091], 0, "default.jpg"],
["⑧옷파란색사고싶어", 71, 10, 87, "che_event_귀병", [63656, 18474, 64801, 246952, 16084], 0, "default.jpg"],
["⑨실전압축5분장", 82, 71, 10, "che_event_징병", [41477, 156362, 190265, 99143, 16794], 0, "default.jpg"],
["①이치코", 72, 80, 10, "che_event_저격", [205187, 17782, 46838, 53075, 15721], 1, "ef6aac8.jpg?=20180628"],
["⑲갈근", 71, 10, 82, "che_event_저격", [42372, 29647, 19974, 369504, 28762], 0, "default.jpg"],
["⑪초코우유", 69, 10, 86, "che_event_징병", [13430, 41887, 30225, 296060, 21612], 1, "db0f3b9.jpg?=20190702"],
["⑥귀여운세젤예키라님", 69, 85, 10, "che_event_척사", [20810, 134904, 8758, 23306, 15808], 1, "175639b.png?=20181025"],
["④킹조", 70, 10, 85, "che_event_필살", [18493, 21504, 33565, 163226, 8343], 0, "default.jpg"],
["③보랏빛여교사", 70, 10, 83, "che_event_격노", [48590, 36154, 56898, 301112, 18918], 1, "5d30092.png?=20180825"],
["㉖떼껄룩", 87, 78, 16, "che_event_징병", [3935, 173187, 1046, 18528, 50162], 0, "default.jpg"],
["⑩키라누나", 81, 67, 11, "che_event_저격", [0, 0, 0, 4185, 242971], 1, "deca144.png?=20190509"],
["⑩파이", 80, 61, 9, "che_event_저격", [0, 0, 0, 0, 651088], 1, "da3bc86.jpg?=20190318"],
["㉒행복", 69, 10, 83, "che_event_필살", [26695, 31584, 29926, 280659, 15752], 0, "default.jpg"],
["⑨리안", 86, 71, 10, "che_event_돌격", [25240, 66573, 570513, 136227, 15160], 0, "default.jpg"],
["⑲연애중앵벌스", 69, 80, 10, "che_event_징병", [155779, 21490, 27629, 39317, 0], 1, "4b82261.jpg?=20200114"],
["⑩만샘", 84, 66, 10, "che_event_저격", [0, 0, 0, 0, 178116], 1, "4a206a1.jpg?=20181122"],
["②료우기시키", 75, 85, 10, "che_event_필살", [100136, 559337, 70857, 148532, 22239], 1, "21b50f8.jpg?=20180628"],
["⑫엔틱", 68, 11, 88, "che_event_환술", [25840, 9592, 9228, 155721, 16123], 1, "781ef76.jpg?=20190317"],
["⑦박초롱", 66, 82, 9, "che_event_돌격", [563181, 18370, 42099, 254318, 22067], 1, "18e88f0.jpg?=20190223"],
["⑤이드", 65, 9, 74, "che_event_신산", [53996, 40052, 42005, 357858, 8117], 1, "ff87fce.jpg?=20181025"],
["⑦절대삐부해", 65, 9, 77, "che_event_신산", [31226, 21656, 59173, 435065, 8444], 1, "427de4f.jpg?=20181129"],
["④구다코", 72, 11, 83, "che_event_신산", [19646, 45434, 77733, 650079, 33890], 1, "1528b91.png?=20180920"],
["⑭프로젝트애쉬", 70, 85, 10, "che_event_저격", [52526, 350916, 13632, 97413, 19280], 1, "84923d1.jpg?=20190905"],
["⑩모니카", 87, 9, 56, "che_event_저격", [0, 0, 0, 0, 1527225], 1, "2bc52ba.jpg?=20190509"],
["㉖모루좀뽑아라", 75, 16, 91, "che_event_신산", [9373, 20400, 7815, 499558, 13989], 0, "default.jpg"],
["⑮킹구없이는못살아", 81, 75, 10, "che_event_격노", [446417, 16719, 30705, 36664, 18893], 1, "fb3c625.gif?=20190428"],
["④삼남매아빠", 85, 69, 10, "che_event_저격", [29974, 47859, 301751, 101873, 7317], 0, "default.jpg"],
["⑨슬라임", 71, 10, 86, "che_event_필살", [44971, 39437, 44401, 363250, 23876], 1, "3408568.jpg?=20190317"],
["⑬이취홍", 68, 86, 10, "che_event_무쌍", [9968, 40597, 308958, 60079, 17264], 1, "f25b1d7.jpg?=20190815"],
["⑦햄", 68, 9, 78, "che_event_저격", [39493, 84732, 96362, 681147, 25133], 1, "c73e24c.jpg?=20190125"],
["⑩소열제유비", 73, 68, 9, "che_event_저격", [0, 0, 0, 0, 489102], 1, "a3b1bbb.png?=20180927"],
["②도적", 68, 83, 10, "che_event_의술", [9477, 155276, 17280, 21509, 4784], 0, "default.jpg"],
["㉘건방진노예", 77, 15, 91, "che_event_신중", [33795, 36995, 30258, 369123, 5936], 0, "default.jpg"],
["㉖시딱마", 75, 15, 90, "che_event_신산", [17590, 0, 17110, 251531, 17269], 0, "default.jpg"],
["②명가의 수호자", 76, 12, 85, "che_event_신산", [35756, 111668, 199214, 1205047, 67252], 0, "default.jpg"],
["⑦매화날리기", 84, 52, 30, "che_event_무쌍", [67222, 374154, 80916, 152585, 18879], 1, "3ca7b77.jpg?=20190127"],
["⑪킹구갓구", 69, 88, 10, "che_event_척사", [11503, 191630, 3212, 41610, 26047], 1, "fb3c625.gif?=20190428"],
["⑥Newbie", 73, 10, 84, "che_event_신중", [56567, 63968, 76268, 579864, 16418], 1, "c8682f4.jpg?=20181204"],
["㉒김나영", 69, 10, 83, "che_event_반계", [23531, 29495, 30668, 242239, 4849], 1, "c90a3d4.jpg?=20190905"],
["⑪히비야", 69, 10, 86, "che_event_반계", [21254, 39045, 21437, 317321, 17548], 1, "28a8e8.png?=20190620"],
["⑲카이스트", 70, 10, 82, "che_event_귀병", [38657, 21232, 21186, 332069, 43094], 1, "9361ef8.jpg?=20180907"],
["⑳청랑구", 72, 86, 10, "che_event_격노", [36241, 67702, 469047, 91809, 38419], 1, "d6ebfb8.jpg?=20200305"],
["③ウサギ ミント", 77, 76, 10, "che_event_척사", [50200, 29776, 350766, 102238, 9821], 0, "default.jpg"],
["⑦카오스피닉스", 69, 9, 78, "che_event_저격", [76465, 70449, 108410, 864572, 22386], 1, "2af0641.jpg?=20180706"],
["㉙네시", 73, 15, 88, "che_event_신중", [3770, 13065, 3003, 125064, 16567], 0, "default.jpg"],
["⑧카오스피닉스", 71, 10, 85, "che_event_징병", [2628, 7785, 16722, 239656, 27758], 1, "2af0641.jpg?=20180706"],
["⑭땅땅이", 67, 10, 83, "che_event_저격", [22215, 12003, 21145, 153493, 1780], 1, "99cd27f.gif?=20190606"],
["⑭날떠나가지말아요", 67, 10, 86, "che_event_집중", [10291, 16394, 25056, 280012, 17274], 0, "default.jpg"],
["⑥타테미야 아야노", 68, 10, 83, "che_event_척사", [10118, 20754, 64516, 290459, 28211], 1, "f116a4.jpg?=20181213"],
["㉕고블린슬레이어", 79, 64, 10, "che_event_보병", [1072097, 44889, 110607, 199452, 11936], 1, "2943712.png?=20200604"],
["⑤료우기시키", 65, 76, 9, "che_event_견고", [288785, 13549, 163241, 132159, 6912], 1, "72a549f.png?=20181025"],
["⑦하야미 카나데", 65, 9, 79, "che_event_신중", [14693, 34950, 77407, 413112, 7739], 1, "c9d2dd5.gif?=20190215"],
["㉙초코맛국수", 75, 16, 84, "che_event_저격", [3978, 9405, 8903, 141528, 48094], 1, "4bcd3f5.jpg?=20200904"],
["⑫도추", 78, 10, 77, "che_event_반계", [33424, 17039, 34502, 362905, 23849], 0, "default.jpg"],
["①마스", 91, 11, 10, "che_event_무쌍", [2333, 3055, 0, 2330, 452014], 1, "5f739d7.gif?=20180712"],
["④사슴플라티나", 69, 11, 83, "che_event_신중", [17612, 9180, 41640, 151555, 12779], 1, "998925.jpg?=20180920"],
["③이브", 91, 11, 10, "che_event_징병", [29497, 5407, 16123, 15312, 211945], 1, "7f9f9c6.jpg?=20180831"],
["㉒만샘", 70, 82, 10, "che_event_위압", [14761, 376699, 29132, 70792, 31310], 1, "4a206a1.jpg?=20181122"],
["㉘초코맛국수", 74, 15, 94, "che_event_반계", [22968, 8249, 6181, 279734, 40911], 1, "4bcd3f5.jpg?=20200904"],
["⑧북오더", 69, 84, 10, "che_event_척사", [4803, 14424, 272800, 18411, 12429], 1, "c0276e1.gif?=20180917"],
["⑭페르난도", 70, 84, 10, "che_event_징병", [198412, 9954, 38902, 59777, 10115], 0, "default.jpg"],
["⑫카이스트", 68, 11, 87, "che_event_징병", [10773, 19837, 18001, 161161, 49652], 1, "9361ef8.jpg?=20180907"],
["㉘카류", 84, 83, 16, "che_event_위압", [7089, 55927, 500966, 75676, 28165], 1, "1a5835b.jpg?=20200905"],
["②렉사이", 74, 86, 10, "che_event_무쌍", [50200, 426369, 63501, 68528, 16438], 1, "6cc3ccf.jpg?=20180719"],
["③엔틱", 78, 68, 10, "che_event_견고", [187104, 22131, 43742, 45094, 18542], 0, "default.jpg"],
["㉑나만마딜없어", 68, 10, 84, "che_event_신중", [1992, 16326, 15588, 89107, 5832], 0, "default.jpg"],
["㉔모가미 시즈카", 83, 70, 10, "che_event_척사", [171308, 1093, 37132, 30646, 27127], 1, "db2e1be.jpg?=20200514"],
["③미스티", 86, 70, 10, "che_event_징병", [303011, 90413, 105582, 109313, 12040], 1, "1aadcba.png?=20180908"],
["⑭륜", 68, 11, 86, "che_event_귀병", [9362, 30131, 3853, 172499, 902], 1, "6561977.jpg?=20190904"],
["⑩붕붕", 87, 31, 33, "che_event_저격", [0, 0, 0, 0, 1040956], 1, "3958021.jpg?=20190509"],
["⑫제노에이지", 67, 10, 95, "che_event_집중", [15642, 8539, 7564, 193185, 16806], 1, "ddd1fd7.jpg?=20190320"],
["⑤그리고", 72, 11, 84, "che_event_필살", [71440, 35967, 103514, 451717, 33250], 0, "default.jpg"],
["⑱평민킬러", 73, 85, 10, "che_event_무쌍", [648896, 16172, 105798, 108806, 39869], 1, "fb23a32.jpg?=20190904"],
["⑫뽀", 71, 10, 91, "che_event_격노", [41282, 41874, 11142, 437907, 19323], 1, "34674f1.jpg?=20190719"],
["⑥윤지성", 71, 11, 83, "che_event_격노", [3813, 33716, 46917, 278476, 30217], 1, "d62ab55.png?=20181218"],
["⑥호에에에엙", 81, 75, 10, "che_event_돌격", [80841, 105196, 223478, 60069, 33392], 1, "5804326.gif?=20181207"],
["②샐러리맨", 69, 81, 10, "che_event_척사", [8758, 33798, 156554, 21898, 16072], 1, "f04de94.jpg?=20180731"],
["⑩료우기빵셔틀", 65, 9, 74, "che_event_저격", [0, 0, 0, 0, 439478], 0, "default.jpg"],
["③졸린마녀", 73, 82, 11, "che_event_견고", [90718, 621811, 79682, 81511, 29074], 1, "ef47121.jpg?=20180825"],
["⑦좀비A", 68, 78, 9, "che_event_필살", [635191, 54259, 135060, 225702, 22856], 1, "2a7a28.jpg?=20190225"],
["⑳롱리브더퀸", 70, 10, 82, "che_event_신중", [26511, 20589, 5404, 251811, 16211], 1, "99e4505.jpg?=20200110"],
["⑪오른쪽왼쪽제자리", 88, 69, 11, "che_event_격노", [742452, 42119, 41555, 44985, 23407], 1, "7996e6e.png?=20190705"],
["⑫치즈", 90, 70, 10, "che_event_견고", [489454, 21081, 5994, 63836, 24746], 1, "bd91cf9.jpg?=20190717"],
["⑯ㅁ", 70, 10, 85, "che_event_반계", [7115, 9864, 0, 172143, 35724], 1, "1f8b859.gif?=20191022"],
["㉕로리", 63, 10, 80, "che_event_집중", [62009, 26896, 55684, 558677, 13369], 1, "50794a6.jpg?=20190923"],
["⑧미스티", 71, 10, 88, "che_event_필살", [19503, 21014, 35515, 200531, 19059], 1, "1aadcba.png?=20180908"],
["③Karl", 68, 11, 81, "che_event_척사", [19987, 22453, 12689, 237959, 9237], 0, "default.jpg"],
["④자는중임", 85, 67, 10, "che_event_징병", [0, 0, 0, 4333, 459335], 1, "93af198.jpg?=20181007"],
["⑧나나야 시키", 74, 82, 10, "che_event_격노", [18213, 73787, 9776, 22679, 2091], 1, "5e5263e.jpg?=20190314"],
["⑤별", 66, 9, 75, "che_event_격노", [69645, 31109, 101201, 510270, 21789], 1, "1dd6263.jpg?=20181025"],
["⑭임사영", 70, 10, 86, "che_event_환술", [28175, 38878, 20033, 416721, 31091], 1, "d5dc381.gif?=20190719"],
["⑩Samo", 81, 9, 59, "che_event_저격", [0, 0, 1584, 0, 784171], 1, "a415c6b.jpg?=20190517"],
["⑮Samo", 71, 10, 87, "che_event_집중", [18614, 17619, 34999, 228055, 5725], 1, "25449b0.png?=20190626"],
["⑪무쇠로만든사람", 77, 11, 77, "che_event_척사", [14520, 21966, 12963, 85016, 18563], 1, "1b4b6f7.jpg?=20190608"],
["④고긔가먹ㄱ고싶ㅍ다", 71, 10, 87, "che_event_집중", [19664, 39902, 51999, 251303, 3113], 1, "a3c229e.gif?=20181005"],
["⑲불사조페이트", 83, 67, 10, "che_event_징병", [34261, 186187, 20458, 52037, 6163], 1, "fb7addd.jpg?=20190816"],
["㉙평민킬러", 76, 85, 15, "che_event_필살", [235256, 4058, 10652, 21438, 25208], 1, "fb23a32.jpg?=20190904"],
["⑧줄리엣", 87, 72, 10, "che_event_무쌍", [39145, 121268, 62105, 39731, 12485], 1, "175639b.png?=20181025"],
["⑫병리학적자세", 72, 10, 91, "che_event_집중", [69911, 35780, 11401, 688771, 27212], 1, "3679089.jpg?=20180629"],
["⑬호무새", 83, 69, 10, "che_event_척사", [6801, 25260, 287620, 58259, 35925], 1, "3649856.png?=20190815"],
["⑥료우기시키", 70, 84, 10, "che_event_위압", [8380, 59810, 197667, 66880, 2280], 1, "72a549f.png?=20181025"],
["⑩끼이이이이익", 82, 57, 9, "che_event_저격", [0, 0, 0, 0, 573957], 0, "default.jpg"],
["⑥드류", 70, 10, 83, "che_event_격노", [4265, 0, 45796, 234156, 9707], 1, "507327d.png?=20181001"],
["㉙1시30분", 89, 73, 15, "che_event_견고", [6227, 16004, 292895, 33442, 26718], 0, "default.jpg"],
["⑥카이스트", 71, 10, 83, "che_event_신중", [50236, 85696, 80990, 407936, 23191], 1, "9361ef8.jpg?=20180907"],
["④야부키 나코", 83, 72, 10, "che_event_위압", [113841, 345237, 39818, 102705, 21023], 1, "eac341b.png?=20181005"]
]
}
+154
View File
@@ -0,0 +1,154 @@
<?php
namespace sammo\GeneralPool;
use MeekroDB;
use sammo\AbsGeneralPool;
use sammo\GameConst;
use sammo\Util;
class RandomNameGeneral extends AbsGeneralPool{
public static function getPoolName():string{return "임의 장수명";}
public function occupyGeneralName(): bool
{
$generalID = $this->getGeneralBuilder()->getGeneralID();
if($generalID === null){
throw new \RuntimeException('build되지 않음');
}
$db= $this->db;
$db->update('select_pool', [
'general_id'=>$generalID,
'owner'=>null,
'reserved_until'=>null,
], 'unique_name = %s', $this->uniqueName);
return $db->affectedRows()!=0;
}
public function giveGeneralSpec(array $pickTypeList, array $avgGen, array $env=[]){
//do Nothing
$dexTotal = $avgGen['dex_t'];
$pickType = Util::choiceRandomUsingWeight($pickTypeList);
$totalStat = GameConst::$defaultStatNPCTotal;
$minStat = GameConst::$defaultStatNPCMin;
$mainStat = GameConst::$defaultStatNPCMax - Util::randRangeInt(0, GameConst::$defaultStatNPCMin);
$otherStat = $minStat + Util::randRangeInt(0, Util::toInt(GameConst::$defaultStatNPCMin/2));
$subStat = $totalStat - $mainStat - $otherStat;
if ($subStat < $minStat) {
$subStat = $otherStat;
$otherStat = $minStat;
$mainStat = $totalStat - $subStat - $otherStat;
if ($mainStat) {
throw new \LogicException('기본 스탯 설정값이 잘못되어 있음');
}
}
if ($pickType == '무') {
$leadership = $subStat;
$strength = $mainStat;
$intel = $otherStat;
$dexVal = Util::choiceRandom([
[$dexTotal * 5 / 8, $dexTotal / 8, $dexTotal / 8, $dexTotal / 8],
[$dexTotal / 8, $dexTotal * 5 / 8, $dexTotal / 8, $dexTotal / 8],
[$dexTotal / 8, $dexTotal / 8, $dexTotal * 5 / 8, $dexTotal / 8],
]);
} else if ($pickType == '지') {
$leadership = $subStat;
$strength = $otherStat;
$intel = $mainStat;
$dexVal = [$dexTotal / 8, $dexTotal / 8, $dexTotal / 8, $dexTotal * 5 / 8];
} else {
$leadership = $otherStat;
$strength = $subStat;
$intel = $mainStat;
$dexVal = [$dexTotal / 4, $dexTotal / 4, $dexTotal / 4, $dexTotal / 4];
}
$leadership = Util::round($leadership);
$strength = Util::round($strength);
$intel = Util::round($intel);
$builder = $this->getGeneralBuilder();
$builder->setStat($leadership, $strength, $intel);
$builder->setDex($dexVal[0], $dexVal[1], $dexVal[2], $dexVal[3], $avgGen['dex5']);
$builder->Util::choiceRandom(array_keys(\sammo\CityConst::all()));
$builder->setExpDed($avgGen['exp'], $avgGen['ded']);
}
static protected function pickGeneral1FromPool(\MeekroDB $db, int $owner, ?string $prefix=null):self{
$loopCnt = 0;
while(true){
$firstname = Util::choiceRandom(GameConst::$randGenFirstName);
$middlename = Util::choiceRandom(GameConst::$randGenMiddleName);
$lastname = Util::choiceRandom(GameConst::$randGenLastName);
$generalName = "{$firstname}{$middlename}{$lastname}";
if($prefix){
$generalName = $prefix.$generalName;
}
$dupCnt = static::checkDuplicatedCnt($db, $generalName);
if($dupCnt == 0){
break;
}
if($loopCnt >= 99 || $dupCnt < 2){
$generalName .= $dupCnt+1;
break;
}
$loopCnt += 1;
}
$uniqueName = $generalName;
return new static($db, [
'uniqueName'=>$uniqueName,
'generalName'=>$generalName,
'imgsvr'=>0,
'picture'=>null
], '9999-12-31 12:00:00');
}
static public function pickGeneralFromPool(MeekroDB $db, int $owner, int $pickCnt, ?string $prefix = null): array
{
/** @var RandomNameGeneral[] */
$result = [];
$dbInsert = [];
$oNow = new \DateTimeImmutable();
for($i=0;$i<$pickCnt;$i++){
$result[] = static::pickGeneral1FromPool($db, $owner, $prefix);
}
if($owner){
$now = $oNow->format('Y-m-d H:i:s');
$db->delete('select_pool', [
'reserved_until'=>null,
'owner'=>null,
],'(reserved_until < %s OR reserved_until IS NULL) AND general_id IS null', $now);
$validUntil = $oNow->add(new \DateInterval(sprintf('PT%dS', 30)));
foreach($result as $pickedGeneral){
$dbInsert[] = [
'owner'=>$owner,
'uniqueName'=>$pickedGeneral->getUniqueName(),
'info'=>$pickedGeneral->getInfo(),
'reserved_until'=>$validUntil->format(('Y-m-d H:i:s'))
];
}
$db->insert('select_pool', $dbInsert);
}
return $result;
}
public static function initPool(\MeekroDB $db){
//do Nothing
}
}
+30
View File
@@ -0,0 +1,30 @@
<?php
namespace sammo\GeneralPool;
use sammo\AbsFromUserPool;
use sammo\GameConst;
use sammo\Json;
use sammo\Util;
class SPoolUnderU30 extends AbsFromUserPool{
public static function getPoolName():string{return "체30기 이벤트";}
public static function initPool(\MeekroDB $db){
$jsonData=Json::decode(file_get_contents(__DIR__."/Pool/UnderS30.json"));
$columns = $jsonData['columns'];
$sqlValues = [];
foreach($jsonData['data'] as $rawItem){
if(count($rawItem) != count($columns)){
throw new \RuntimeException($rawItem[0]."Error");
}
$item = array_combine($columns, $rawItem);
$uniqueName = $item['generalName'];
$item['uniqueName'] = $uniqueName;
$sqlValues[] = [
'unique_name'=>$uniqueName,
'info'=>Json::encode($item)
];
}
$db->insert('select_pool', $sqlValues);
}
}
+6 -2
View File
@@ -128,6 +128,8 @@ class ResetHelper{
} }
} }
opcache_reset();
$gameStor = KVStorage::getStorage($db, 'game_env'); $gameStor = KVStorage::getStorage($db, 'game_env');
$gameStor->resetValues(); $gameStor->resetValues();
$gameStor->next_season_idx = $seasonIdx; $gameStor->next_season_idx = $seasonIdx;
@@ -148,6 +150,7 @@ class ResetHelper{
int $scenario, int $scenario,
int $fiction, int $fiction,
int $extend, int $extend,
bool $block_general_create,
int $npcmode, int $npcmode,
int $show_img_level, int $show_img_level,
int $tournament_trig, int $tournament_trig,
@@ -178,8 +181,9 @@ class ResetHelper{
$serverID = $clearResult['serverID']; $serverID = $clearResult['serverID'];
$seasonIdx = $clearResult['seasonIdx']; $seasonIdx = $clearResult['seasonIdx'];
$scenarioObj = new Scenario($scenario, false); $scenarioObj = new Scenario($scenario, true);
$scenarioObj->buildConf(); $scenarioObj->buildConf();
$scenarioObj->initFull();
$startyear = $scenarioObj->getYear()??GameConst::$defaultStartYear; $startyear = $scenarioObj->getYear()??GameConst::$defaultStartYear;
@@ -258,6 +262,7 @@ class ResetHelper{
'genius'=>GameConst::$defaultMaxGenius, 'genius'=>GameConst::$defaultMaxGenius,
'show_img_level'=>$show_img_level, 'show_img_level'=>$show_img_level,
'join_mode'=>$join_mode, 'join_mode'=>$join_mode,
'block_general_create'=>$block_general_create,
'npcmode'=>$npcmode, 'npcmode'=>$npcmode,
'extended_general'=>$extend, 'extended_general'=>$extend,
'fiction'=>$fiction, 'fiction'=>$fiction,
@@ -352,7 +357,6 @@ class ResetHelper{
$prefix = DB::prefix(); $prefix = DB::prefix();
ServConfig::getServerList()[$prefix]->closeServer(); ServConfig::getServerList()[$prefix]->closeServer();
opcache_reset();
return [ return [
'result'=>true 'result'=>true
+70 -67
View File
@@ -25,8 +25,11 @@ class Scenario{
private $diplomacy; private $diplomacy;
/** @var \sammo\Scenario\GeneralBuilder[] */
private $generals; private $generals;
/** @var \sammo\Scenario\GeneralBuilder[] */
private $generalsEx; private $generalsEx;
/** @var \sammo\Scenario\GeneralBuilder[] */
private $generalsNeutral; private $generalsNeutral;
private $tmpGeneralQueue = []; private $tmpGeneralQueue = [];
@@ -38,12 +41,17 @@ class Scenario{
private $gameConf = null; private $gameConf = null;
private function initFull(){ public function initFull(){
if($this->initOK){ if($this->initOK){
return; return;
} }
$this->initOK = true; $this->initOK = true;
$data = $this->data; $data = $this->data;
$this->tmpEnv = [
'startyear'=>$this->year,
'year'=>$this->year,
'month'=>0 //포인트
];
$neutralNation = new Scenario\Nation(0, '재야', '#000000', 0, 0); $neutralNation = new Scenario\Nation(0, '재야', '#000000', 0, 0);
$this->nations = []; $this->nations = [];
@@ -97,22 +105,21 @@ class Scenario{
$this->tmpGeneralQueue[$name] = $rawGeneral; $this->tmpGeneralQueue[$name] = $rawGeneral;
return new Scenario\NPC( return (new Scenario\GeneralBuilder(
$affinity,
$name, $name,
false,
$picturePath, $picturePath,
$nationID, $nationID
$locatedCity, ))
$leadership, ->setCity($locatedCity)
$strength, ->setStat($leadership, $strength, $intel)
$intel, ->setOfficerLevel($officerLevel)
$officerLevel, ->setEgo($ego)
$birth, ->setSpecialSingle($char)
$death, ->setNPCText($text)
$ego, ->setAffinity($affinity)
$char, ->setLifeSpan($birth, $death)
$text ->fillRemainSpecAsZero($this->tmpEnv);
);
}, Util::array_get($data['general'], [])); }, Util::array_get($data['general'], []));
$this->generalsEx = array_map(function($rawGeneral){ $this->generalsEx = array_map(function($rawGeneral){
@@ -138,22 +145,21 @@ class Scenario{
$this->tmpGeneralQueue[$name] = $rawGeneral; $this->tmpGeneralQueue[$name] = $rawGeneral;
return new Scenario\NPC( return (new Scenario\GeneralBuilder(
$affinity,
$name, $name,
false,
$picturePath, $picturePath,
$nationID, $nationID
$locatedCity, ))
$leadership, ->setCity($locatedCity, true)
$strength, ->setStat($leadership, $strength, $intel)
$intel, ->setOfficerLevel($officerLevel)
$officerLevel, ->setEgo($ego)
$birth, ->setSpecialSingle($char)
$death, ->setNPCText($text)
$ego, ->setAffinity($affinity)
$char, ->setLifeSpan($birth, $death)
$text ->fillRemainSpecAsZero($this->tmpEnv);
);
}, Util::array_get($data['general_ex'], [])); }, Util::array_get($data['general_ex'], []));
@@ -180,25 +186,22 @@ class Scenario{
$this->tmpGeneralQueue[$name] = $rawGeneral; $this->tmpGeneralQueue[$name] = $rawGeneral;
$npc = new Scenario\NPC( return (new Scenario\GeneralBuilder(
$affinity,
$name, $name,
false,
$picturePath, $picturePath,
$nationID, $nationID
$locatedCity, ))
$leadership, ->setCity($locatedCity, true)
$strength, ->setStat($leadership, $strength, $intel)
$intel, ->setOfficerLevel($officerLevel)
$officerLevel, ->setEgo($ego)
$birth, ->setSpecialSingle($char)
$death, ->setNPCText($text)
$ego, ->setAffinity($affinity)
$char, ->setLifeSpan($birth, $death)
$text ->setNPCType(6)
); ->fillRemainSpecAsZero($this->tmpEnv);
$npc->npc = 6;
return $npc;
}, Util::array_get($data['general_neutral'], [])); }, Util::array_get($data['general_neutral'], []));
$this->initialEvents = array_map(function($rawEvent){ $this->initialEvents = array_map(function($rawEvent){
@@ -326,7 +329,7 @@ class Scenario{
$nationGeneralNeutralCnt = []; $nationGeneralNeutralCnt = [];
foreach($this->generals as $general){ foreach($this->generals as $general){
$nationID = $general->nationID; $nationID = $general->getNationID();
if(!key_exists($nationID, $nationGeneralCnt)){ if(!key_exists($nationID, $nationGeneralCnt)){
$nationGeneralCnt[$nationID] = 1; $nationGeneralCnt[$nationID] = 1;
} }
@@ -336,7 +339,7 @@ class Scenario{
} }
foreach($this->generalsEx as $general){ foreach($this->generalsEx as $general){
$nationID = $general->nationID; $nationID = $general->getNationID();
if(!key_exists($nationID, $nationGeneralExCnt)){ if(!key_exists($nationID, $nationGeneralExCnt)){
$nationGeneralExCnt[$nationID] = 1; $nationGeneralExCnt[$nationID] = 1;
} }
@@ -346,7 +349,7 @@ class Scenario{
} }
foreach($this->generalsNeutral as $general){ foreach($this->generalsNeutral as $general){
$nationID = $general->nationID; $nationID = $general->getNationID();
if(!key_exists($nationID, $nationGeneralNeutralCnt)){ if(!key_exists($nationID, $nationGeneralNeutralCnt)){
$nationGeneralNeutralCnt[$nationID] = 1; $nationGeneralNeutralCnt[$nationID] = 1;
} }
@@ -389,14 +392,14 @@ class Scenario{
$remainGenerals = []; $remainGenerals = [];
foreach($this->generals as $general){ foreach($this->generals as $general){
if($general->build($env)){ if($general->build($env)){
if($general->nationID){ if($general->getNationID()){
$this->nations[$general->nationID]->addGeneral($general); $this->nations[$general->getNationID()]->addGeneral($general);
} }
continue; continue;
} }
$rawGeneral = $this->tmpGeneralQueue[$general->name]; $rawGeneral = $this->tmpGeneralQueue[$general->getGeneralRawName()];
$birth = $general->birth; $birth = $general->getBirthYear();
if(!key_exists($birth, $remainGenerals)){ if(!key_exists($birth, $remainGenerals)){
$remainGenerals[$birth] = []; $remainGenerals[$birth] = [];
} }
@@ -406,14 +409,14 @@ class Scenario{
if($env['extended_general']){ if($env['extended_general']){
foreach($this->generalsEx as $general){ foreach($this->generalsEx as $general){
if($general->build($env)){ if($general->build($env)){
if($general->nationID){ if($general->getNationID()){
$this->nations[$general->nationID]->addGeneral($general); $this->nations[$general->getNationID()]->addGeneral($general);
} }
continue; continue;
} }
$rawGeneral = $this->tmpGeneralQueue[$general->name]; $rawGeneral = $this->tmpGeneralQueue[$general->getGeneralRawName()];
$birth = $general->birth; $birth = $general->getBirthYear();
if(!key_exists($birth, $remainGenerals)){ if(!key_exists($birth, $remainGenerals)){
$remainGenerals[$birth] = []; $remainGenerals[$birth] = [];
} }
@@ -423,14 +426,14 @@ class Scenario{
foreach($this->generalsNeutral as $general){ foreach($this->generalsNeutral as $general){
if($general->build($env)){ if($general->build($env)){
if($general->nationID){ if($general->getGeneralID()){
$this->nations[$general->nationID]->addGeneral($general); $this->nations[$general->getNationID()]->addGeneral($general);
} }
continue; continue;
} }
$rawGeneral = $this->tmpGeneralQueue[$general->name]; $rawGeneral = $this->tmpGeneralQueue[$general->getGeneralRawName()];
$birth = $general->birth; $birth = $general->getBirthYear();
if(!key_exists($birth, $remainGenerals)){ if(!key_exists($birth, $remainGenerals)){
$remainGenerals[$birth] = []; $remainGenerals[$birth] = [];
} }
@@ -455,6 +458,10 @@ class Scenario{
} }
} }
public function addGameConf(string $key, $value){
$this->gameConf[$key] = $value;
}
public function buildConf(){ public function buildConf(){
$path = __DIR__.'/../d_setting'; $path = __DIR__.'/../d_setting';
@@ -479,8 +486,9 @@ class Scenario{
} }
public function build($env=[]){ public function build($env=[]){
$db = DB::db();
getGeneralPoolClass(GameConst::$targetGeneralPool)::initPool($db);
$this->initFull(); $this->initFull();
//NOTE: 초기화가 되어있다고 가정함. //NOTE: 초기화가 되어있다고 가정함.
@@ -494,11 +502,6 @@ class Scenario{
event변수 : currentEventID event변수 : currentEventID
*/ */
$db = DB::db();
foreach($this->nations as $id=>$nation){ foreach($this->nations as $id=>$nation){
if($id == 0){ if($id == 0){
continue; continue;
+735
View File
@@ -0,0 +1,735 @@
<?php
namespace sammo\Scenario;
use \sammo\Util;
use \sammo\JosaUtil;
use \sammo\DB;
use \sammo\CityHelper;
use \sammo\GameUnitConst;
use \sammo\CityConst;
use \sammo\GameConst;
use \sammo\SpecialityHelper;
use sammo\TimeUtil;
use function sammo\buildGeneralSpecialClass;
class GeneralBuilder{
protected $generalID = null;
protected $realName = null;
protected $owner = 0;
protected $ownerName = null;
protected $affinity=null;
protected $nameCustomPrefix=null;
protected $name;
protected $imgsvr = 0;
protected $picturePath;
protected $nationID;
protected $cityID;
protected $leadership=null;
protected $strength=null;
protected $intel=null;
protected $officerLevel;
protected $birth=null;
protected $death=null;
protected $ego=null;
protected $specialDomestic=null;
protected $specialWar=null;
protected $npc = 2;
protected $text;
static $prefixList = [
0 => '', //기본
1 => 'ⓝ', //빙의 NPC
2 => 'ⓝ', //NPC
3 => 'ⓜ', //인탐 장수
4 => 'ⓖ', //의병장(전략)
5 => '㉥', //부대장
6 => 'ⓤ', //unselectable npc, 빙의 불가 npc
9 => 'ⓞ', //오랑캐?
];
protected $gold=1000;
protected $rice=1000;
protected $specAge = null;
protected $specAge2 = null;
protected $experience = null;
protected $dedication = null;
protected $killturn = null;
//XXX: 코드 못 바꾸나?
protected $dex1 = 0;
protected $dex2 = 0;
protected $dex3 = 0;
protected $dex4 = 0;
protected $dex5 = 0;
protected $aux = [];
public function __construct(
string $name,
bool $isDynamicImageSvr,
$picturePath,
int $nationID
){
$this->name = $name;
$this->imgsvr = $isDynamicImageSvr;
$this->picturePath = $picturePath;
$this->nationID = $nationID;
}
public function setPicture(int $imgsvr, $picturePath){
$this->imgsvr = $imgsvr;
$this->picturePath = $picturePath;
}
public function setOwner(int $owner):self{
if($owner <= 0){
throw new \InvalidArgumentException();
}
$this->owner = $owner;
return $this;
}
public function setOwnerName(string $ownerName):self{
$this->ownerName = $ownerName;
return $this;
}
public function setNationID(int $nationID):self{
$this->nationID = $nationID;
return $this;
}
public function setSpecialOption(?string $option):self{
$general = [
'leadership'=>$this->leadership,
'strength'=>$this->strength,
'intel'=>$this->intel
];
if($option === '랜덤전특'){
$this->specialWar = SpecialityHelper::pickSpecialWar($general);
}
else if($option === '랜덤내특'){
$this->specialDomestic = SpecialityHelper::pickSpecialDomestic($general);
}
else if($option === '랜덤'){
if(Util::randBool(2/3)){
$this->specialWar = SpecialityHelper::pickSpecialWar($general);
}
else{
$this->specialDomestic = SpecialityHelper::pickSpecialDomestic($general);
}
}
return $this;
}
public function setSpecialSingle(?string $special):self{
if($special === null){
$this->specialDomestic = GameConst::$defaultSpecialDomestic;
$this->specialWar = GameConst::$defaultSpecialWar;
}
try{
$this->specialDomestic = SpecialityHelper::getDomesticClassByName($special);
$this->specialWar = GameConst::$defaultSpecialWar;
}
catch (\Exception $e){
$this->specialDomestic = GameConst::$defaultSpecialDomestic;
$this->specialWar = SpecialityHelper::getWarClassByName($special);
}
return $this;
}
public function setSpecial(string $specialDomestic, string $specialWar):self{
$this->specialDomestic = $specialDomestic;
$this->specialWar = $specialWar;
return $this;
}
public function setOfficerLevel(int $level):self{
$this->officerLevel = $level;
return $this;
}
public function setNPCText(?string $text):self{
$this->text = $text;
return $this;
}
public function setEgo(?string $ego):self{
$this->ego = $ego;
return $this;
}
public function setAffinity(int $affinity):self{
if($affinity < 1){
$this->affinity = Util::randRangeInt(1, 150);
}
else if($affinity >= 900){
$this->affinity = 999;
}
else if(1 <= $affinity && $affinity <= 150){
$this->affinity = $affinity;
}
else{
throw new \InvalidArgumentException();
}
return $this;
}
public function setNPCType(int $npcType):self{
if(!key_exists($npcType, static::$prefixList)){
throw new \InvalidArgumentException();
}
$this->npc = $npcType;
return $this;
}
public function setCustomPrefix(?string $prefix):self{
$this->nameCustomPrefix = $prefix;
return $this;
}
public function setStat(int $leadership, int $strength, int $intel):self{
$this->leadership = $leadership;
$this->strength = $strength;
$this->intel = $intel;
return $this;
}
public function setSpecYear(?int $specAge, ?int $specAge2):self{
$this->specAge = $specAge;
$this->specAge2 = $specAge2;
return $this;
}
public function setExpDed(?int $experience, ?int $dedication):self{
$this->experience = $experience;
$this->dedication = $dedication;
return $this;
}
public function setMoney(int $gold, int $rice):self{
$this->gold = $gold;
$this->rice = $rice;
return $this;
}
public function setCityID(int $cityID):self{
if(!key_exists($cityID, \sammo\CityConst::all())){
throw new \InvalidArgumentException();
}
$this->cityID = $cityID;
return $this;
}
public function setCity($city, bool $ignoreError=false):self{
if($city===null){
$this->cityID = null;
return $this;
}
if(is_int($city)){
if(!key_exists($city, \sammo\CityConst::all())){
if(!$ignoreError){
throw new \InvalidArgumentException();
}
else{
return $this;
}
}
$this->cityID = $city;
}
else{
try{
$obj = \sammo\CityConst::byName($city);
$this->cityID = $obj->id;
}
catch(\TypeError $e){
if($ignoreError){
return $this;
}
else{
throw $e;
}
}
}
return $this;
}
public function getStat():array{
return [
$this->leadership,
$this->strength,
$this->intel
];
}
public function setAuxVar(string $key, $value):self{
if($value === null){
unset($this->aux[$key]);
return $this;
}
$this->aux[$key]=$value;
return $this;
}
public function setKillturn(?int $killturn):self{
$this->killturn = $killturn;
return $this;
}
public function setDex(int $footman, int $archer, int $cavalry, int $wizard, int $siege):self{
$this->dex1 = $footman;
$this->dex2 = $archer;
$this->dex3 = $cavalry;
$this->dex4 = $wizard;
$this->dex5 = $siege;
return $this;
}
public function setLifeSpan(int $birth, int $death):self{
$this->birth = $birth;
$this->death = $death;
return $this;
}
public function setGoldRice(int $gold, int $rice):self{
$this->gold = $gold;
$this->rice = $rice;
return $this;
}
public function fillRandomStat(array $pickTypeList, &$pickedType=null):self{
$pickType = Util::choiceRandomUsingWeight($pickTypeList);
$totalStat = GameConst::$defaultStatNPCTotal;
$minStat = GameConst::$defaultStatNPCMin;
$mainStat = GameConst::$defaultStatNPCMax - Util::randRangeInt(0, GameConst::$defaultStatNPCMin);
$otherStat = $minStat + Util::randRangeInt(0, Util::toInt(GameConst::$defaultStatNPCMin/2));
$subStat = $totalStat - $mainStat - $otherStat;
if ($subStat < $minStat) {
$subStat = $otherStat;
$otherStat = $minStat;
$mainStat = $totalStat - $subStat - $otherStat;
if ($mainStat) {
throw new \LogicException('기본 스탯 설정값이 잘못되어 있음');
}
}
if ($pickType == '무') {
$leadership = $subStat;
$strength = $mainStat;
$intel = $otherStat;
} else if ($pickType == '지') {
$leadership = $subStat;
$strength = $otherStat;
$intel = $mainStat;
} else {
$leadership = $otherStat;
$strength = $subStat;
$intel = $mainStat;
}
$this->setStat($leadership, $strength, $intel);
$pickedType = $pickType;
return $this;
}
public function fillRemainSpecAsZero(array $env=[]):self{
if($this->leadership===null){
throw new \RuntimeException('stat이 설정되어 있지 않음');
}
if($this->affinity === null || $this->affinity === 0){
$this->affinity = Util::randRangeInt(1, 150);
}
if($this->birth === null){
$this->birth = $env['year']-20;
$this->death = $env['year']+60;
}
if($this->specAge===null){
$age = $env['year']-$this->birth;
$relYear = Util::valueFit($env['year'] - $env['startyear'], 0);
$this->specAge = Util::valueFit(Util::round((GameConst::$retirementYear - $age)/12 - $relYear / 2), 3) + $age;
}
if($this->specAge2===null){
$age = $env['year']-$this->birth;
$relYear = Util::valueFit($env['year'] - $env['startyear'], 0);
$this->specAge2 = Util::valueFit(Util::round((GameConst::$retirementYear - $age)/6 - $relYear / 2), 3) + $age;
}
if($this->officerLevel === null){
if($this->nationID){
$this->officerLevel = 1;
}
else{
$this->officerLevel = 0;
}
}
if($this->ego === null){
$this->ego = Util::choiceRandom(GameConst::$availablePersonality);
}
if($this->specialDomestic === null){
$this->specialDomestic = GameConst::$defaultSpecialDomestic;
}
if($this->specialWar === null){
$this->specialWar = GameConst::$defaultSpecialWar;
}
if($this->killturn === null && $this->owner){
$this->killturn = 5;
}
return $this;
}
public function fillRemainSpecAsRandom(array $pickTypeList, array $avgGen, array $env=[]):self{
$isFictionMode = (Util::array_get($env['fiction'], 0)!=0);
if($isFictionMode || $this->specialWar === null){
$this->specialWar = GameConst::$defaultSpecialWar;
}
if($isFictionMode || $this->specialDomestic === null){
$this->specialDomestic = GameConst::$defaultSpecialDomestic;
}
if($this->affinity === null || $this->affinity === 0 || $isFictionMode){
$this->affinity = Util::randRangeInt(1, 150);
}
if($this->birth === null){
$this->birth = $env['year']+Util::randRange(-5, 5);
$this->death = $this->birth+Util::randRangeInt(60, 80);
}
if($this->specAge===null){
$age = $env['year']-$this->birth;
$relYear = Util::valueFit($env['year'] - $env['startyear'], 0);
$this->specAge = Util::valueFit(Util::round((GameConst::$retirementYear - $age)/12 - $relYear / 2), 3) + $age;
}
if($this->specAge2===null){
$age = $env['year']-$this->birth;
$relYear = Util::valueFit($env['year'] - $env['startyear'], 0);
$this->specAge2 = Util::valueFit(Util::round((GameConst::$retirementYear - $age)/6 - $relYear / 2), 3) + $age;
}
if ($this->leadership===null || $this->strength===null || $this->intel === null){
$this->fillRandomStat($pickTypeList, $pickType);
}else{
$leadership = $this->leadership;
$strength = $this->strength;
$intel = $this->intel;
//getCall()과 같이 가야하는가?
do{
if($leadership < 40){
$pickType = '무지';
break;
}
if($intel * 0.8 > $strength){
$pickType = '지';
break;
}
if($strength * 0.8 > $intel){
$pickType = '무';
break;
}
$pickType = Util::choiceRandomUsingWeight([
'무'=>$strength,
'지'=>$intel
]);
}while(0);
}
if($this->officerLevel === null){
if($this->nationID){
$this->officerLevel = 1;
}
else{
$this->officerLevel = 0;
}
}
if($this->dex1 === null){
$dexTotal = $avgGen['dex_t'];
if ($pickType == '무') {
$dexVal = Util::choiceRandom([
[$dexTotal * 5 / 8, $dexTotal / 8, $dexTotal / 8, $dexTotal / 8],
[$dexTotal / 8, $dexTotal * 5 / 8, $dexTotal / 8, $dexTotal / 8],
[$dexTotal / 8, $dexTotal / 8, $dexTotal * 5 / 8, $dexTotal / 8],
]);
} else if ($pickType == '지') {
$dexVal = [$dexTotal / 8, $dexTotal / 8, $dexTotal / 8, $dexTotal * 5 / 8];
} else {
$dexVal = [$dexTotal / 4, $dexTotal / 4, $dexTotal / 4, $dexTotal / 4];
}
$this->setDex($dexVal[0], $dexVal[1], $dexVal[2], $dexVal[3], $avgGen['dex5']);
}
if($this->ego === null || $isFictionMode){
$this->ego = Util::choiceRandom(GameConst::$availablePersonality);
}
if($this->experience === null){
$this->experience = 0;
}
if($this->dedication === null){
$this->dedication = 0;
}
return $this;
}
public function getCityID():?int{
return $this->cityID;
}
public function getNationID():int{
return $this->nationID;
}
public function getGeneralID():int{
if($this->generalID === null){
throw new \RuntimeException('build()되지 않음');
}
return $this->generalID;
}
public function getGeneralRawName():string{
return $this->name;
}
public function getGeneralName():string{
if($this->realName === null){
throw new \RuntimeException('build()되지 않음');
}
return $this->realName;
}
public function getBirthYear():int{
if($this->birth === null){
throw new \RuntimeException('lifespan 미지정');
}
return $this->birth;
}
public function getDeathYear():int{
if($this->death === null){
throw new \RuntimeException('lifespan 미지정');
}
return $this->death;
}
public function build($env=[]){
//scenario에 life==1인 경우 수명 제한이 없어지는 모양.
if(!key_exists('stored_icons', $env)){
try{
$text = \file_get_contents(\sammo\ServConfig::getSharedIconPath('../hook/list.json?1'));
$storedIcons = \sammo\Json::decode($text);
}
catch(\Exception $e){
$storedIcons = [];
}
$env['stored_icons'] = $storedIcons;
}
$isFictionMode = (Util::array_get($env['fiction'], 0)!=0);
$year = $env['year'];
$month = $env['month'];
$age = $year - $this->birth;
$name = $this->name;
if($this->nameCustomPrefix === null){
$name = (static::$prefixList[$this->npc]??'ⓧ').$this->name;
}
else{
$name = $this->nameCustomPrefix.$this->name;
}
$this->realName = $name;
if($this->death <= $year){
return true; //죽었으니 넘어간다.
}
if($age < GameConst::$adultAge){
return false; //예약.
}
$isNewGeneral = ($age == GameConst::$adultAge);
$nationID = $this->nationID;
if($isFictionMode && $isNewGeneral){
$nationID = 0;
}
if(!\sammo\getNationStaticInfo($nationID)){
$nationID = 0;
};
$db = DB::db();
if($isNewGeneral){
$josaYi = JosaUtil::pick($name, '이');
$logger = new \sammo\ActionLogger(0, 0, $year, $month);
$logger->pushGlobalActionLog("<Y>{$name}</>{$josaYi} 성인이 되어 <S>등장</>했습니다.");
$logger->flush();
}
$picturePath = $this->picturePath;
if($env['show_img_level'] < 3){
$picturePath = 'default.jpg';
}
else if(is_numeric($picturePath)){
if($picturePath < 0){
$picturePath = null;
}
else if(\key_exists($picturePath, $env['stored_icons']['.']??[])){
$picturePath = $env['stored_icons']['.'][$picturePath];
}
else{
$picturePath = null;
}
}
else if($this->imgsvr){
}
else if($picturePath !== null && in_array($picturePath, $env['stored_icons'][$env['icon_path']??'.']??[])){
$picturePath = ($env['icon_path']??'.').'/'.$picturePath;
}
else if($picturePath === null && \key_exists('stored_icons', $env)){
$target = $env['stored_icons']??[];
$target = $target[$env['icon_path']??'.']??[];
$picturePath = $target[$this->name]??null;
if($picturePath){
$picturePath = ($env['icon_path']??'.').'/'.$picturePath;
}
}
if($picturePath === null){
$picturePath = 'default.jpg';
}
if($this->cityID === null){
if($nationID == 0 || !CityHelper::getAllNationCities($nationID)){
$cityObj = Util::choiceRandom(CityHelper::getAllCities());
}
else{
$cityObj = Util::choiceRandom(CityHelper::getAllNationCities($nationID));
}
'@phan-var array<string,string|int> $cityObj';
$this->cityID = $cityObj['id'];
}
$experience = $this->experience?:$age * 100;
$dedication = $this->dedication?:$age * 100;
$officerLevel = $this->officerLevel;
if(!$officerLevel || $isNewGeneral){
$officerLevel = $nationID?1:0;
}
$turntime = \sammo\getRandTurn($env['turnterm'], new \DateTimeImmutable($env['turntime']));
if($this->killturn){
$killturn = $this->killturn;
}
else if($this->birth !== null){
$killturn = ($this->death - $year) * 12 + mt_rand(0, 11) + $month - 1;
}
else{
throw new \InvalidArgumentException();
}
$db->insert('general',[
'owner'=>$this->owner,
'owner_name'=>$this->ownerName,
'npc'=>$this->npc,
'npc_org'=>$this->npc,
'affinity'=>$this->affinity,
'name'=>$name,
'imgsvr'=>$this->imgsvr,
'picture'=>$picturePath,
'nation'=>$nationID,
'city'=>$this->cityID,
'leadership'=>$this->leadership,
'strength'=>$this->strength,
'intel'=>$this->intel,
'experience'=>$experience,
'dedication'=>$dedication,
'officer_level'=>$officerLevel,
'gold'=>$this->gold,
'rice'=>$this->rice,
'crew'=>0,
'crewtype'=>GameUnitConst::DEFAULT_CREWTYPE,
'train'=>0,
'atmos'=>0,
'turntime'=>$turntime,
'killturn'=>$killturn,
'age'=>$age,
'belong'=>1,
'personal'=>$this->ego,
'special'=>$this->specialDomestic,
'specage'=>$this->specAge,
'special2'=>$this->specialWar,
'specage2'=>$this->specAge2,
'npcmsg'=>$this->text,
'makelimit'=>0,
'bornyear'=>$this->birth,
'deadyear'=>$this->death,
'dex1'=>$this->dex1,
'dex2'=>$this->dex2,
'dex3'=>$this->dex3,
'dex4'=>$this->dex4,
'dex5'=>$this->dex5,
'aux'=>\sammo\Json::encode($this->aux),
'lastrefresh'=>TimeUtil::now(),
]);
$this->generalID = $db->insertId();
$turnRows = [];
foreach(Util::range(GameConst::$maxTurn) as $turnIdx){
$turnRows[] = [
'general_id'=>$this->generalID,
'turn_idx'=>$turnIdx,
'action'=>'휴식',
'arg'=>null,
'brief'=>'휴식',
];
}
$db->insert('general_turn', $turnRows);
$rank_data = [];
foreach(array_keys(\sammo\General::RANK_COLUMN) as $rankColumn){
$rank_data[] = [
'general_id'=>$this->generalID,
'nation_id'=>0,
'type'=>$rankColumn,
'value'=>0
];
}
$db->insert('rank_data', $rank_data);
$db->insert('betting', [
'general_id'=>$this->generalID,
]);
return true; //생성되었다.
}
}
-383
View File
@@ -1,383 +0,0 @@
<?php
namespace sammo\Scenario;
use \sammo\Util;
use \sammo\JosaUtil;
use \sammo\DB;
use \sammo\CityHelper;
use \sammo\GameUnitConst;
use \sammo\CityConst;
use \sammo\GameConst;
use \sammo\SpecialityHelper;
class NPC{
public $generalID = null;
public $realName = null;
public $affinity;
public $name;
public $picturePath;
public $nationID;
public $locatedCity;
public $leadership;
public $strength;
public $intel;
public $officerLevel;
public $birth;
public $death;
public $ego;
public $charDomestic;
public $charWar;
public $npc = 2;
public $text;
static $prefixList = [
1 => 'ⓝ', //빙의 NPC
2 => 'ⓝ', //NPC
3 => 'ⓜ', //인탐 장수
4 => 'ⓖ', //의병장(전략)
5 => '㉥', //부대장
6 => 'ⓤ', //unselectable npc, 빙의 불가 npc
9 => 'ⓞ', //오랑캐?
];
public $gold;
public $rice;
protected $specAge = null;
protected $specAge2 = null;
protected $experience = null;
protected $dedication = null;
public $killturn = null;
//XXX: 코드 못 바꾸나?
protected $dex1 = 0;
protected $dex2 = 0;
protected $dex3 = 0;
protected $dex4 = 0;
protected $dex5 = 0;
public function __construct(
int $affinity,
string $name,
$picturePath,
int $nationID,
$locatedCity,
int $leadership,
int $strength,
int $intel,
int $officerLevel = 0,
int $birth = 160,
int $death = 300,
$ego = null,
$char = null,
$text = null
){
$this->affinity = $affinity;
$this->name = $name;
$this->picturePath = $picturePath;
$this->nationID = $nationID;
$this->locatedCity = $locatedCity;
$this->leadership = $leadership;
$this->strength = $strength;
$this->intel = $intel;
$this->officerLevel = $officerLevel;
$this->birth = $birth;
$this->death = $death;
$this->ego = $ego;
$this->text = $text;
$this->gold = GameConst::$defaultGold;
$this->rice = GameConst::$defaultRice;
$general = [
'leadership'=>$leadership,
'strength'=>$strength,
'intel'=>$intel
];
$this->charDomestic = GameConst::$defaultSpecialDomestic;
$this->charWar = GameConst::$defaultSpecialWar;
if($char === '랜덤전특'){
$this->charWar = SpecialityHelper::pickSpecialWar($general);
}
else if($char === '랜덤내특'){
$this->charDomestic = SpecialityHelper::pickSpecialDomestic($general);
}
else if($char === '랜덤'){
if(Util::randBool(2/3)){
$this->charWar = SpecialityHelper::pickSpecialWar($general);
}
else{
$this->charDomestic = SpecialityHelper::pickSpecialDomestic($general);
}
}
else if($char === null){
}
else{
//TODO: 내특, 전특 구분 필요
try{
$this->charDomestic = SpecialityHelper::getDomesticClassByName($char);
}
catch (\Exception $e) {
try{
$this->charWar = SpecialityHelper::getWarClassByName($char);
}
catch (\Exception $e){
}
}
}
}
public function setSpecYear(?int $specAge, ?int $specAge2):self{
$this->specAge = $specAge;
$this->specAge2 = $specAge2;
return $this;
}
public function setExpDed(?int $experience, ?int $dedication):self{
$this->experience = $experience;
$this->dedication = $dedication;
return $this;
}
public function setMoney(int $gold, int $rice):self{
$this->gold = $gold;
$this->rice = $rice;
return $this;
}
public function setDex(int $footman, int $archer, int $cavalry, int $wizard, int $siege):self{
$this->dex1 = $footman;
$this->dex2 = $archer;
$this->dex3 = $cavalry;
$this->dex4 = $wizard;
$this->dex5 = $siege;
return $this;
}
public function build($env=[]){
//scenario에 life==1인 경우 수명 제한이 없어지는 모양.
if(!key_exists('stored_icons', $env)){
try{
$text = \file_get_contents(\sammo\ServConfig::getSharedIconPath('../hook/list.json?1'));
$storedIcons = \sammo\Json::decode($text);
}
catch(\Exception $e){
$storedIcons = [];
}
$env['stored_icons'] = $storedIcons;
}
$isFictionMode = (Util::array_get($env['fiction'], 0)!=0);
$year = $env['year'];
$month = $env['month'];
$age = $year - $this->birth;
$name = $this->name;
if($this->death <= $year){
return true; //죽었으니 넘어간다.
}
if($age < GameConst::$adultAge){
return false; //예약.
}
$isNewGeneral = ($age == GameConst::$adultAge);
$nationID = $this->nationID;
if($isFictionMode && $isNewGeneral){
$nationID = 0;
}
if(!\sammo\getNationStaticInfo($nationID)){
$nationID = 0;
};
$db = DB::db();
if($isNewGeneral){
$josaYi = JosaUtil::pick($name, '이');
$logger = new \sammo\ActionLogger(0, 0, $year, $month);
$logger->pushGlobalActionLog("<Y>{$name}</>{$josaYi} 성인이 되어 <S>등장</>했습니다.");
$logger->flush();
}
if($this->ego == null || $isFictionMode){
$ego = Util::choiceRandom(GameConst::$availablePersonality);
}
else{
$ego = Util::getClassName(\sammo\getPersonalityClass($this->ego));
}
$affinity = $this->affinity;
$charWar = $this->charWar;
$charDomestic = $this->charDomestic;
if($affinity === 0 || $isFictionMode){
$affinity = mt_rand(1, 150);
}
if($isFictionMode){
$charWar = GameConst::$defaultSpecialWar;
$charDomestic = GameConst::$defaultSpecialDomestic;
}
$name = (static::$prefixList[$this->npc]?:'ⓧ').$this->name;
$duplicateCnt = $db->queryFirstField('SELECT count(no) FROM general WHERE name LIKE %s', $name.'%') + 1;
if($duplicateCnt > 1){
$name = "{$name}{$duplicateCnt}";
}
$this->realName = $name;
$picturePath = $this->picturePath;
if($env['show_img_level'] < 3){
$picturePath = 'default.jpg';
}
else if(is_numeric($picturePath)){
if($picturePath < 0){
$picturePath = null;
}
else if(\key_exists($picturePath, $env['stored_icons']['.']??[])){
$picturePath = $env['stored_icons']['.'][$picturePath];
}
else{
$picturePath = null;
}
}
else if($picturePath !== null && in_array($picturePath, $env['stored_icons'][$env['icon_path']??'.']??[])){
$picturePath = ($env['icon_path']??'.').'/'.$picturePath;
}
else if($picturePath === null && \key_exists('stored_icons', $env)){
$target = $env['stored_icons']??[];
$target = $target[$env['icon_path']??'.']??[];
$picturePath = $target[$this->name]??null;
if($picturePath){
$picturePath = ($env['icon_path']??'.').'/'.$picturePath;
}
}
if($picturePath === null){
$picturePath = 'default.jpg';
}
$city = $this->locatedCity;
if(is_int($city)){
$city = CityConst::byID($city)->id??null;
}
else if(is_string($city)){
$city = CityConst::byName($city)->id??null;
}
if($city === null){
if($nationID == 0 || !CityHelper::getAllNationCities($nationID)){
$cityObj = Util::choiceRandom(CityHelper::getAllCities());
}
else{
$cityObj = Util::choiceRandom(CityHelper::getAllNationCities($nationID));
}
'@phan-var array<string,string|int> $cityObj';
$city = $cityObj['id'];
}
$experience = $this->experience?:$age * 100;
$dedication = $this->dedication?:$age * 100;
$officerLevel = $this->officerLevel;
if(!$officerLevel || $isNewGeneral){
$officerLevel = $nationID?1:0;
}
$turntime = \sammo\getRandTurn($env['turnterm'], new \DateTimeImmutable($env['turntime']));
if($this->killturn){
$killturn = $this->killturn;
}
else{
$killturn = ($this->death - $year) * 12 + mt_rand(0, 11) + $month - 1;
}
$specage = $this->specAge?:($age + 1);
$specage2 = $this->specAge2?:($age + 1);
$db->insert('general',[
'npc'=>$this->npc,
'npc_org'=>$this->npc,
'affinity'=>$affinity,
'name'=>$name,
'picture'=>$picturePath,
'nation'=>$nationID,
'city'=>$city,
'leadership'=>$this->leadership,
'strength'=>$this->strength,
'intel'=>$this->intel,
'experience'=>$experience,
'dedication'=>$dedication,
'officer_level'=>$officerLevel,
'gold'=>$this->gold,
'rice'=>$this->rice,
'crew'=>0,
'crewtype'=>GameUnitConst::DEFAULT_CREWTYPE,
'train'=>0,
'atmos'=>0,
'turntime'=>$turntime,
'killturn'=>$killturn,
'age'=>$age,
'belong'=>1,
'personal'=>$ego,
'special'=>$charDomestic,
'specage'=>$specage,
'special2'=>$charWar,
'specage2'=>$specage2,
'npcmsg'=>$this->text,
'makelimit'=>0,
'bornyear'=>$this->birth,
'deadyear'=>$this->death,
'dex1'=>$this->dex1,
'dex2'=>$this->dex2,
'dex3'=>$this->dex3,
'dex4'=>$this->dex4,
'dex5'=>$this->dex5,
]);
$this->generalID = $db->insertId();
$turnRows = [];
foreach(Util::range(GameConst::$maxTurn) as $turnIdx){
$turnRows[] = [
'general_id'=>$this->generalID,
'turn_idx'=>$turnIdx,
'action'=>'휴식',
'arg'=>null,
'brief'=>'휴식',
];
}
$db->insert('general_turn', $turnRows);
$rank_data = [];
foreach(array_keys(\sammo\General::RANK_COLUMN) as $rankColumn){
$rank_data[] = [
'general_id'=>$this->generalID,
'nation_id'=>0,
'type'=>$rankColumn,
'value'=>0
];
}
$db->insert('rank_data', $rank_data);
$db->insert('betting', [
'general_id'=>$this->generalID,
]);
return true; //생성되었다.
}
}
+1 -1
View File
@@ -143,7 +143,7 @@ class Nation{
} }
public function addGeneral(NPC $general){ public function addGeneral(GeneralBuilder $general){
$this->generals[] = $general; $this->generals[] = $general;
} }
@@ -41,6 +41,10 @@ class che_계략시도 extends BaseWarUnitTrigger{
if($magicTrialProb <= 0){ if($magicTrialProb <= 0){
return true; return true;
} }
if($self->getPhase() == 0){
$magicTrialProb *= 3;
}
if(!Util::randBool($magicTrialProb)){ if(!Util::randBool($magicTrialProb)){
return true; return true;
@@ -31,6 +31,6 @@ class che_저지발동 extends BaseWarUnitTrigger{
$self->setWarPowerMultiply(0); $self->setWarPowerMultiply(0);
$oppose->setWarPowerMultiply(0); $oppose->setWarPowerMultiply(0);
return false; //저지는 모든 특수 이벤트를 중지시킨다. return false; //저지는 모든 이벤트를 중지시킨다.
} }
} }
@@ -26,7 +26,7 @@ class che_필살시도 extends BaseWarUnitTrigger{
return true; return true;
} }
$self->activateSkill('특수', '필살시도', '필살'); $self->activateSkill('필살시도', '필살');
return true; return true;
@@ -26,7 +26,7 @@ class che_회피시도 extends BaseWarUnitTrigger{
return true; return true;
} }
$self->activateSkill('특수', '회피시도', '회피'); $self->activateSkill('회피시도', '회피');
return true; return true;
+27
View File
@@ -0,0 +1,27 @@
{
"title": "【공백지】 영웅전설",
"startYear": 180,
"map": {
"mapName": "miniche",
"targetGeneralPool": "SPoolUnderU30",
"generalPoolAllowOption": ["ego"]
},
"history": [
"<C>●</>180년 1월:<L><b>【이벤트】</b></>29기까지 내로라 하는 모든 장수들이 모였다!"
],
"events": [
[
["Date", "==", null, 12],
["CreateManyNPC", 100],
["DeleteEvent"]
],
[
["Date", "==", 181, 12],
["ChangeCity", "occupied", {
"pop": "+60000",
"agri": "+1200",
"comm": "+1200"
}]
]
]
}
+194
View File
@@ -0,0 +1,194 @@
<?php
namespace sammo;
include "lib.php";
include "func.php";
$session = Session::requireLogin()->setReadOnly();
$userID = Session::getUserID();
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$admin = $gameStor->getValues(['npcmode', 'maxgeneral','show_img_level']);
if($admin['npcmode']!=2) {
header('location:..');
die();
}
$member = RootDB::db()->queryFirstRow("SELECT no,name,picture,imgsvr,grade from member where no= %i", $userID);
$generalID = $db->queryFirstField('SELECT no FROM general WHERE owner = %i', $userID);
$gencount = $db->queryFirstField('SELECT count(`no`) FROM general WHERE npc<2');
$nationList = $db->query('SELECT nation,`name`,color,scout FROM nation');
shuffle($nationList);
$nationList = Util::convertArrayToDict($nationList, 'nation');
//NOTE: join 안할것임
$scoutMsgs = KVStorage::getValuesFromInterNamespace($db, 'nation_env', 'scout_msg');
foreach($scoutMsgs as $nationID=>$scoutMsg){
$nationList[$nationID]['scoutmsg'] = $scoutMsg;
}
$characterAll = [];//선택용
$charInfoText = [];//구버전 생성용 ㅜ
foreach(getCharacterList(false) as $id=>[$name, $info]){
$characterAll[$name] = ['name'=>$name,'info'=>$info];
$charInfoText[$id] = $info;
}
?>
<!DOCTYPE html>
<html>
<head>
<title><?=UniqueConst::$serverName?>: 장수 선택</title>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024'" />
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('../css/config.css')?>
<?=WebUtil::printCSS('css/common.css')?>
<?=WebUtil::printCSS('css/select_general_from_pool.css')?>
<script>
var hasGeneralID = <?=$generalID===null?'false':'true'?>;
var defaultStatTotal = <?=GameConst::$defaultStatTotal?>;
var defaultStatMin = <?=GameConst::$defaultStatMin?>;
var defaultStatMax = <?=GameConst::$defaultStatMax?>;
var cards = {};
var currentGeneralInfo = null;
var characterInfo = <?=Json::encode($characterAll)?>;
var charInfoText = <?=Json::encode($charInfoText)?>;
var validCustomOption = <?=Json::encode(GameConst::$generalPoolAllowOption)?>;
</script>
<?=WebUtil::printJS('../d_shared/common_path.js')?>
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
<?=WebUtil::printJS('js/common.js')?>
<?=WebUtil::printJS('js/join.js')?>
<?=WebUtil::printJS('js/select_general_from_pool.js')?>
</head>
<?php
if ($gencount>= $admin['maxgeneral']) {
?>
<body>
<script>
alert('더 이상 등록할 수 없습니다.');
history.go(-1);
</script>
</body>
</html>
<?php
die();
}
?>
<body>
<div class="container">
<div class="bg0 with_border legacy_layout">장 수 선 택<br><?=backButton()?></div>
<table style="width:100%;" class="bg0 with_border">
<tr><td><?=info(0)?></td></tr>
</table>
<?=getInvitationList($nationList)?>
<div class="bg0">
<div class="bg1 with_border legacy_layout font1" style="text-align:center;font-weight:bold;">장수 선택</div>
<div class="with_border legacy_layout" style="text-align:center;">
<small id="valid_until">(<span id="valid_until_text"></span>까지 유효)</small><small id="outdate_token">- 만료 -</small><br>
<form class="card_holder">
</form>
</div>
</div>
<div class="bg0" id="create_plate">
<div class="bg1 with_border legacy_layout font1" style="text-align:center;font-weight:bold;margin-top:10px;">장수 생성</div>
<div class="with_border legacy_layout" style="display:flex">
<div style='flex:1;' id='left_pad'>
장수를<br>선택해주세요!
</div><div style='flex:4;'>
<form id='custom_form'>
<table class='tb_layout' style='width:100%;text-align:left;'>
<?php
if ($admin['show_img_level'] >= 1 && $member['grade'] >= 1 && $member['picture'] != "") {
$imageTemp = GetImageURL($member['imgsvr']);
echo "
<tr class='custom_picture'>
<td align=right id=bg1>전콘 사용 여부</td>
<td width=64 height=64>
<img width='64' height='64' src='{$imageTemp}/{$member['picture']}' border='0'>
</td>
<td>
<input type=checkbox id='use_own_picture' name=pic>사용
</td>
</tr>
";
}
?>
<tr class='custom_personality'>
<td align=right id=bg1>성격</td>
<td colspan=2 style='text-align:left;'>
<select id="selChar" name=character size=1 maxlength=15 style=color:white;background-color:black;>
<option selected value='Random'>????</option>
<?php foreach(GameConst::$availablePersonality as $personalityID): ?>
<?php $personalityName = buildPersonalityClass($personalityID)->getName(); ?>
<option value='<?=$personalityID?>'><?=$personalityName?></option>
<?php endforeach; ?>
</select> <span id="charInfoText"></span>
</td>
</tr>
<tr class='custom_stat'>
<td align=right id=bg1>통솔</td>
<td colspan=2><input type="number" name="leadership" id="leadership" value="50"></td>
</tr>
<tr class='custom_stat'>
<td align=right id=bg1>무력</td>
<td colspan=2><input type="number" name="strength" id="strength" value="50"></td>
</tr>
<tr class='custom_stat'>
<td align=right id=bg1>지력</td>
<td colspan=2><input type="number" name="intel" id="intel" value="50"></td>
</tr>
<tr class='custom_stat'>
<td align=right id=bg1>능력치 조정</td>
<td colspan=2>
<input type=button value=랜덤형 onclick=abilityRand()>
<input type=button value=통솔무력형 onclick=abilityLeadpow()>
<input type=button value=통솔지력형 onclick=abilityLeadint()>
<input type=button value=무력지력형 onclick=abilityPowint()>
</td>
</tr>
<tr class='custom_stat'>
<td align=center colspan=3>
<font color=orange>모든 능력치는 ( <?=GameConst::$defaultStatMin?> <= 능력치 <= <?=GameConst::$defaultStatMax?> ) 사이로 잡으셔야 합니다.<br>
그 외의 능력치는 가입되지 않습니다.</font>
</td>
</tr>
<tr>
<td align=center colspan=3>
<span class='custom_stat'>능력치의 총합은 <?=GameConst::$defaultStatTotal?>입니다. 가입후 0~10의 능력치 보너스를 받게 됩니다.<br></span>
임의의 도시에서 재야로 시작하며 건국과 임관은 게임 내에서 실행합니다.
</td>
</tr>
<tr>
<td align=right style='width:200px;'><input type=submit id='build_general' name=join value=장수생성></td>
<td colspan=2><input type=reset name=reset value=다시입력></td>
</tr>
</table>
</form>
</div>
</table>
</div>
</div>
<div class="bg0">
<div class="with_border legacy_layout"><?=backButton()?></div>
<div class="with_border legacy_layout"><?=banner()?></div>
</div>
</div>
</body>
</html>
+2 -2
View File
@@ -11,7 +11,7 @@ $gameStor = KVStorage::getStorage($db, 'game_env');
list($npcmode, $maxgeneral) = $gameStor->getValuesAsArray(['npcmode', 'maxgeneral']); list($npcmode, $maxgeneral) = $gameStor->getValuesAsArray(['npcmode', 'maxgeneral']);
if(!$npcmode) { if($npcmode!=1) {
header('location:..'); header('location:..');
die(); die();
} }
@@ -33,7 +33,7 @@ foreach($scoutMsgs as $nationID=>$scoutMsg){
<title><?=UniqueConst::$serverName?>: NPC빙의</title> <title><?=UniqueConst::$serverName?>: NPC빙의</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="style='width:1024" /> <meta name="viewport" content="width=1024" />
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?> <?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
<?=WebUtil::printCSS('../d_shared/common.css')?> <?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('../css/config.css')?> <?=WebUtil::printCSS('../css/config.css')?>
+1
View File
@@ -48,6 +48,7 @@ DROP TABLE IF EXISTS world_history;
DROP TABLE IF EXISTS general_record; DROP TABLE IF EXISTS general_record;
DROP TABLE IF EXISTS select_npc_token; DROP TABLE IF EXISTS select_npc_token;
DROP TABLE IF EXISTS select_pool;
DROP TABLE IF EXISTS betting; DROP TABLE IF EXISTS betting;
DROP TABLE IF EXISTS rank_data; DROP TABLE IF EXISTS rank_data;
+19
View File
@@ -572,6 +572,25 @@ CREATE TABLE `select_npc_token` (
DEFAULT CHARSET=utf8mb4 DEFAULT CHARSET=utf8mb4
ENGINE=Aria; ENGINE=Aria;
######
#
CREATE TABLE `select_pool` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`unique_name` VARCHAR(20) NOT NULL,
`owner` INT(11) NULL DEFAULT NULL,
`general_id` INT(11) NULL DEFAULT NULL,
`reserved_until` DATETIME NULL DEFAULT NULL,
`info` TEXT NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `unique_name` (`unique_name`),
UNIQUE INDEX `general_id` (`general_id`),
INDEX `owner` (`owner`),
INDEX `reserved_until` (`reserved_until`, `general_id`)
)
COLLATE='utf8mb4_general_ci'
ENGINE=Aria
;
################### ###################
# KV storage # KV storage
################### ###################
+52 -52
View File
@@ -1,53 +1,53 @@
<tr <tr
data-is-our-general="<?=$ourGeneral?'true':'false'?>" data-is-our-general="<?=$ourGeneral?'true':'false'?>"
data-is-npc="<?=$isNPC?'true':'false'?>" data-is-npc="<?=$isNPC?'true':'false'?>"
data-general-wounded="<?=$wounded?>" data-general-wounded="<?=$wounded?>"
data-general-name="<?=$this->e($name)?>" data-general-name="<?=$this->e($name)?>"
data-general-leadership="<?=$leadership?>" data-general-leadership="<?=$leadership?>"
data-general-strength="<?=$strength?>" data-general-strength="<?=$strength?>"
data-general-intel="<?=$intel?>" data-general-intel="<?=$intel?>"
data-general-officer-level="<?=$officerLevel?>" data-general-officer-level="<?=$officerLevel?>"
data-general-leadership-bonus="<?=$leadershipBonus?>" data-general-leadership-bonus="<?=$leadershipBonus?>"
<?php if($ourGeneral): ?> <?php if($ourGeneral): ?>
data-general-defence-train="<?=$defenceTrain?>" data-general-defence-train="<?=$defenceTrain?>"
data-general-crew-type="<?=$crewType?>" data-general-crew-type="<?=$crewType?>"
data-general-crew="<?=$crew?>" data-general-crew="<?=$crew?>"
data-general-train="<?=$train?>" data-general-train="<?=$train?>"
data-general-atmos="<?=$atmos?>" data-general-atmos="<?=$atmos?>"
<?php else: ?> <?php else: ?>
data-general-crew="<?=$crew?>" data-general-crew="<?=$crew?>"
<?php endif; ?> <?php endif; ?>
data-general-nation="<?=$nation?>" data-general-nation="<?=$nation?>"
data-general-nation-name="<?=$nationName?>" data-general-nation-name="<?=$nationName?>"
> >
<td height="64"><img class='generalIcon' width='64' height='64' src='<?=$iconPath?>'></td> <td height="64"><img class='generalIcon' width='64' height='64' src='<?=$iconPath?>'></td>
<td><?=$nameText?></td> <td><?=$nameText?></td>
<td><?=$leadershipText?><?=$leadershipBonusText?></td> <td><?=$leadershipText?><?=$leadershipBonusText?></td>
<td><?=$strengthText?></td> <td><?=$strengthText?></td>
<td><?=$intelText?></td> <td><?=$intelText?></td>
<td class="general_officer_level"><?=$officerLevelText?></td> <td class="general_officer_level"><?=$officerLevelText?></td>
<?php if($ourGeneral): ?> <?php if($ourGeneral): ?>
<td><?=$defenceTrainText?></td> <td><?=$defenceTrainText?></td>
<td class="general_crew_type"><?=$crewTypeText?></td> <td class="general_crew_type"><?=$crewTypeText?></td>
<td><?=$crew?></td> <td><?=$crew?></td>
<td><?=$train?></td> <td><?=$train?></td>
<td><?=$atmos?></td> <td><?=$atmos?></td>
<?php if($isNPC): ?> <?php if($isNPC): ?>
<td>NPC 장수</td> <td>NPC 장수</td>
<?php else: ?> <?php else: ?>
<td class="general_turn_text"><?=$turnText?></td> <td class="general_turn_text"><?=$turnText?></td>
<?php endif; ?> <?php endif; ?>
<?php else: ?> <?php else: ?>
<td>?</td> <td>?</td>
<td class="general_crew_type">?</td> <td class="general_crew_type">?</td>
<td><?=$crew?></td> <td><?=$crew>=0?$crew:'?'?></td>
<td>?</td> <td>?</td>
<td>?</td> <td>?</td>
<?php if($nation!==0): ?> <?php if($nation!==0): ?>
<td>【<?=$nationName?>】 장수</td> <td>【<?=$nationName?>】 장수</td>
<?php else: ?> <?php else: ?>
<td>재 야</td> <td>재 야</td>
<?php endif; ?> <?php endif; ?>
<?php endif; ?> <?php endif; ?>
</tr> </tr>
+68 -52
View File
@@ -30,30 +30,51 @@ var serverFullTemplate = "\
<td colspan='4' class='server_full'>- 장수 등록 마감 -</td>\ <td colspan='4' class='server_full'>- 장수 등록 마감 -</td>\
"; ";
var serverCreateAndSelectTemplate = "\ var serverSelectPoolTemplate = "\
<td colspan='2' class='not_registered'>- 미 등 록 -</td>\ <td colspan='2' class='not_registered'>- 미 등 록 -</td>\
<td class='ignore_border'>\ <td class='ignore_border'>\
<a href='<%serverPath%>/select_npc.php'><button type='button' class='general_select with_skin'>장수선택</button></a>\ <a href='<%serverPath%>/select_general_from_pool.php'><button type='button' class='general_select with_skin'>장수선택</button></a>\
<a href='<%serverPath%>/join.php'><button type='button' class='general_create with_skin'>장수생성</button></a>\
</td>\ </td>\
"; ";
var serverLoginBtn = "<a href='<%serverPath%>/' class='item'\
><button type='button' class='fill_box with_skin'>입장</button\
></a>";
var serverCreateBtn = "<a href='<%serverPath%>/join.php' class='item'\
><button type='button' class='fill_box with_skin'>장수생성</button\
></a>";
var serverSelectNPCBtn = "<a href='<%serverPath%>/select_npc.php' class='item'\
><button type='button' class='fill_box with_skin'>장수빙의</button\
></a>";
var serverSelectPoolBtn = "<a href='<%serverPath%>/select_general_from_pool.php' class='item'\
><button type='button' class='fill_box with_skin'>장수선택</button\
></a>";
var serverCreateTemplate = "\ var serverCreateTemplate = "\
<td colspan='2' class='not_registered'>- 미 등 록 -</div>\ <td colspan='2' class='not_registered'>- 미 등 록 -</div>\
<td class='ignore_border'>\ <td class='ignore_border vertical_flex BtnPlate'>\
<a href='<%serverPath%>/join.php'><button type='button' class='general_create with_skin'>장수생성</button></a>\ <%if(canCreate) {%>\
</td>\ <a href='<%serverPath%>/join.php' class='item'><button type='button' class='fill_box with_skin'>장수생성</button></a>\
"; <%}%>\
<%if(canSelectNPC) {%>\
<a href='<%serverPath%>/select_npc.php' class='item'><button type='button' class='fill_box with_skin'>장수빙의</button></a>\
<%}%>\
<%if(canSelectPool) {%>\
<a href='<%serverPath%>/select_general_from_pool.php' class='item'><button type='button' class='fill_box with_skin'>장수선택</button></a>\
<%}%>\
</td>";
var serverLoginTemplate = "\ var serverLoginTemplate = "\
<td style='background:url(\"<%picture%>\");background-size: 64px 64px;'></td>\ <td style='background:url(\"<%picture%>\");background-size: 64px 64px;'></td>\
<td><%name%></td>\ <td><%name%></td>\
<td class='ignore_border'>\ <td class='ignore_border vertical_flex BtnPlate'>\
<a href='<%serverPath%>/'><button type='button' class='general_login with_skin'>입장</button></a>\ <a href='<%serverPath%>/' class='item'><button type='button' class='fill_box with_skin'>입장</button></a>\
</td>\ </td>\
"; ";
var serverReservedTemplate = "\ var serverReservedTemplate = "\
<td colspan='4' class='server_reserved'>\ <td colspan='4' class='server_reserved'>\
<%openDatetime==starttime?'':'- 가오픈 일시 : '+openDatetime+ '- <br>'%>\ <%openDatetime==starttime?'':'- 가오픈 일시 : '+openDatetime+ '- <br>'%>\
@@ -63,38 +84,38 @@ var serverReservedTemplate = "\
</td>\ </td>\
"; ";
$(function(){ $(function() {
$("#btn_logout").click(Entrance_Logout); $("#btn_logout").click(Entrance_Logout);
Entrance_UpdateServer(); Entrance_UpdateServer();
}); });
function Entrance_UpdateServer() { function Entrance_UpdateServer() {
$.ajax({ $.ajax({
type:'post', type: 'post',
url:"j_server_get_status.php", url: "j_server_get_status.php",
dataType:'json', dataType: 'json',
}).then(function(response){ }).then(function(response) {
if(response.result == "SUCCESS") { if (response.result == "SUCCESS") {
Entrance_drawServerList(response.server); Entrance_drawServerList(response.server);
} }
}); });
} }
function Entrance_drawServerList(serverInfos){ function Entrance_drawServerList(serverInfos) {
var $serverList = $('#server_list'); var $serverList = $('#server_list');
var now = moment().format('YYYY-MM-DD HH:mm:ss'); var now = moment().format('YYYY-MM-DD HH:mm:ss');
$.each(serverInfos, function(idx, serverInfo){ $.each(serverInfos, function(idx, serverInfo) {
var $serverHtml = $(TemplateEngine(serverListTemplate, serverInfo)); var $serverHtml = $(TemplateEngine(serverListTemplate, serverInfo));
$serverList.append($serverHtml); $serverList.append($serverHtml);
if(!serverInfo.exists){ if (!serverInfo.exists) {
return true; return true;
} }
var serverPath = "../"+serverInfo.name; var serverPath = "../" + serverInfo.name;
$.getJSON("../"+serverInfo.name+'/j_server_basic_info.php',{}, function(result){ $.getJSON("../" + serverInfo.name + '/j_server_basic_info.php', {}, function(result) {
if(result.reserved){ if (result.reserved) {
$serverHtml.find('.server_down').detach(); $serverHtml.find('.server_down').detach();
$serverHtml.append( $serverHtml.append(
TemplateEngine(serverReservedTemplate, result.reserved) TemplateEngine(serverReservedTemplate, result.reserved)
@@ -103,64 +124,59 @@ function Entrance_drawServerList(serverInfos){
return; return;
} }
if(!result.game){ if (!result.game) {
return; return;
} }
var game= result.game; var game = result.game;
//TODO: 서버 폐쇄 방식을 새롭게 변경 //TODO: 서버 폐쇄 방식을 새롭게 변경
$serverHtml.find('.server_down').detach(); $serverHtml.find('.server_down').detach();
var serverTime = '%s ~ %s'.format(game.startFrom) var serverTime = '%s ~ %s'.format(game.startFrom)
if(game.isUnited == 2){ if (game.isUnited == 2) {
$serverHtml.find('.n_country').html('§천하통일§'); $serverHtml.find('.n_country').html('§천하통일§');
$serverHtml.find('.server_date').html('{0} <br>~ {1}'.format(game.starttime, game.turntime)); $serverHtml.find('.server_date').html('{0} <br>~ {1}'.format(game.starttime, game.turntime));
} } else if (game.opentime <= now) {
else if(game.opentime <= now){
$serverHtml.find('.n_country').html('<{0}국 경쟁중>'.format(game.nationCnt)); $serverHtml.find('.n_country').html('<{0}국 경쟁중>'.format(game.nationCnt));
$serverHtml.find('.server_date').html('{0} ~'.format(game.starttime)); $serverHtml.find('.server_date').html('{0} ~'.format(game.starttime));
} } else {
else{
$serverHtml.find('.n_country').html('-가오픈 중-'); $serverHtml.find('.n_country').html('-가오픈 중-');
$serverHtml.find('.server_date').html('{0} ~'.format(game.starttime)); $serverHtml.find('.server_date').html('{0} ~'.format(game.starttime));
} }
if(game.opentime <= now){ if (game.opentime <= now) {
$serverHtml.append( $serverHtml.append(
TemplateEngine(serverTextInfo, game) TemplateEngine(serverTextInfo, game)
); );
} } else {
else{
$serverHtml.append( $serverHtml.append(
TemplateEngine(serverProvisionalInfo, game) TemplateEngine(serverProvisionalInfo, game)
); );
} }
if(result.me && result.me.name){
console.log(game.npcMode);
if (result.me && result.me.name) {
var me = result.me; var me = result.me;
me.serverPath = serverPath; me.serverPath = serverPath;
$serverHtml.append( $serverHtml.append(
TemplateEngine(serverLoginTemplate, me) TemplateEngine(serverLoginTemplate, me)
); );
} } else if (game.userCnt >= game.maxUserCnt) {
else if(game.userCnt >= game.maxUserCnt){
$serverHtml.append( $serverHtml.append(
TemplateEngine(serverFullTemplate, {}) TemplateEngine(serverFullTemplate, {})
); );
} } else {
else if(game.npcMode == '가능'){
$serverHtml.append( $serverHtml.append(
TemplateEngine(serverCreateAndSelectTemplate, {serverPath:serverPath}) TemplateEngine(serverCreateTemplate, {
).addClass('server_create_and_select'); serverPath: serverPath,
canCreate: !game.block_general_create,
canSelectNPC: game.npcMode == '가능',
canSelectPool: game.npcMode == '선택 생성'
})
)
} }
else{
$serverHtml.append(
TemplateEngine(serverCreateTemplate, {serverPath:serverPath})
);
}
initTooltip($serverHtml); initTooltip($serverHtml);
}); });
}); });
@@ -168,14 +184,14 @@ function Entrance_drawServerList(serverInfos){
function Entrance_Logout() { function Entrance_Logout() {
$.ajax({ $.ajax({
type:'post', type: 'post',
url:"j_logout.php", url: "j_logout.php",
dataType:'json', dataType: 'json',
}).then(function(response) { }).then(function(response) {
if(response.result) { if (response.result) {
location.href="../"; location.href = "../";
} else { } else {
alert('로그아웃 실패'); alert('로그아웃 실패');
} }
}); });
} }
+267
View File
@@ -0,0 +1,267 @@
<?php
namespace sammo;
/**
* Dummy Session
*
* @property int $userID 유저코드
* @property string $userName 유저명
* @property int $userGrade 유저등급
* @property string $ip IP
* @property bool $reqOTP 인증 코드 필요
* @property array $acl 권한
* @property string $tokenValidUntil 로그인 토큰 길이
*
* @property int $generalID 장수 번호 (게임 로그인 필요)
* @property string $generalName 장수 이름 (게임 로그인 필요)
*/
class DummySession extends Session
{
private $writeClosed = false;
private $sessionInfo = [];
public static function getInstance(): Session
{
static $inst = null;
if ($inst === null) {
$inst = new DummySession();
}
return $inst;
}
public function restart(): Session
{
$this->sessionInfo = [];
return $this;
}
public function __construct()
{
$this->set('userID', -1);
$this->set('userName', 'Dummy');
$this->set('ip', '127.0.0.1');
$this->set('time', time());
$this->set('userGrade', '-1');
$this->set('acl', '[]');
$this->set('reqOTP', false);
$this->set('tokenValidUntil', null);
}
public function setReadOnly(): Session
{
$this->writeClosed = true;
return $this;
}
private function set(string $name, $value)
{
$this->sessionInfo[$name] = $value;
}
public function __get(string $name)
{
if ($name == 'generalID') {
if (!class_exists('\\sammo\\UniqueConst')){
return null;
}
return $this->get(UniqueConst::$serverID.static::GAME_KEY_GENERAL_ID);
}
if ($name == 'generalName') {
if (!class_exists('\\sammo\\UniqueConst')){
return null;
}
return $this->get(UniqueConst::$serverID.static::GAME_KEY_GENERAL_NAME);
}
return $this->get($name);
}
private function get(string $name)
{
return Util::array_get($_SESSION[$name]);
}
public function login(int $userID, string $userName, int $grade, bool $reqOTP, ?string $tokenValidUntil, array $acl): Session
{
$this->set('userID', $userID);
$this->set('userName', $userName);
$this->set('ip', Util::get_client_ip(true));
$this->set('time', time());
$this->set('userGrade', $grade);
$this->set('acl', $acl);
$this->set('reqOTP', $reqOTP);
$this->set('tokenValidUntil', $tokenValidUntil);
return $this;
}
public function setReqOTP(bool $reqOTP=false, string $tokenValidUntil){
$this->set('reqOTP', $reqOTP);
$this->set('tokenValidUntil', $tokenValidUntil);
}
public function logout(): Session
{
if ($this->writeClosed) {
$this->restart();
}
if (class_exists('\\sammo\\UniqueConst')) {
$this->logoutGame();
}
$this->set('userID', null);
$this->set('userName', null);
$this->set('userGrade', null);
$this->set('acl', null);
$this->set('reqOTP', null);
$this->set('time', time());
$this->set('lastMsgGet', null);
return $this;
}
public function loginGame(&$result = null): Session
{
$userID = $this->userID;
if (!$userID) {
if ($result !== null) {
$result = false;
}
return $this;
}
if (!class_exists('\\sammo\\UniqueConst')) {
if ($result !== null) {
$result = false;
}
return $this;
}
$serverID = UniqueConst::$serverID;
$loginDate = $this->get($serverID.static::GAME_KEY_DATE);
$generalID = $this->get($serverID.static::GAME_KEY_GENERAL_ID);
$generalName = $this->get($serverID.static::GAME_KEY_GENERAL_NAME);
$deadTime = $this->get($serverID.static::GAME_KEY_EXPECTED_DEADTIME);
$now = time();
if (
$generalID && $generalName && $loginDate && $deadTime
&& $loginDate + 1800 > $now && $deadTime > $now
) {
//로그인 정보는 30분간 유지한다.
if ($result !== null) {
$result = true;
}
return $this;
}
if ($generalID || $generalName || $loginDate || $deadTime) {
$this->logoutGame();
}
$generalID = -1;
$generalName = 'DummyGeneral';
$deadTime = $now+60*60*24;
$this->set($serverID.static::GAME_KEY_DATE, $now);
$this->set($serverID.static::GAME_KEY_GENERAL_ID, $generalID);
$this->set($serverID.static::GAME_KEY_GENERAL_NAME, $generalName);
$this->set($serverID.static::GAME_KEY_EXPECTED_DEADTIME, $deadTime);
return $this;
}
public function logoutGame(): Session
{
if ($this->writeClosed) {
$this->restart();
}
$serverID = UniqueConst::$serverID;
$this->set($serverID.static::GAME_KEY_DATE, null);
$this->set($serverID.static::GAME_KEY_GENERAL_ID, null);
$this->set($serverID.static::GAME_KEY_GENERAL_NAME, null);
$this->set($serverID.static::GAME_KEY_EXPECTED_DEADTIME, null);
return $this;
}
/**
* 로그인 유저의 전역 grade를 받아옴
* @return int|null
*/
public static function getUserGrade(bool $requireLogin = false, string $exitPath = '..')
{
if ($requireLogin) {
$obj = self::requireLogin($exitPath);
} else {
$obj = self::getInstance();
}
return $obj->userGrade;
}
/**
* 로그인한 유저의 전역 id(숫자)를 받아옴
*
* @return int|null
*/
public static function getUserID(bool $requireLogin = false, string $exitPath = '..')
{
if ($requireLogin) {
$obj = self::requireLogin($exitPath);
} else {
$obj = self::getInstance();
}
return $obj->userID;
}
/**
*
*/
public static function getGeneralID(bool $requireLogin = false, string $exitPath = '..')
{
if ($requireLogin) {
$obj = self::requireLogin($exitPath);
} else {
$obj = self::getInstance();
}
return $obj->generalID??0;
}
public function isLoggedIn(bool $ignoreOTP = false): bool
{
if(!$ignoreOTP){
if($this->reqOTP){
return false;
}
if(!$this->tokenValidUntil){
return false;
}
$now = TimeUtil::now();
if($this->tokenValidUntil < $now){
return false;
}
}
if ($this->userID) {
return true;
} else {
return false;
}
}
public function isGameLoggedIn(): bool
{
if ($this->generalID) {
return true;
} else {
return false;
}
}
public function __destruct()
{
}
}
+2 -2
View File
@@ -83,7 +83,7 @@ class Session
public static function requireLogin($actionOnError = '..'): Session public static function requireLogin($actionOnError = '..'): Session
{ {
$session = Session::getInstance(); $session = static::getInstance();
if ($session->isLoggedIn()) { if ($session->isLoggedIn()) {
return $session; return $session;
} }
@@ -93,7 +93,7 @@ class Session
public static function requireGameLogin($actionOnError = '..'): Session public static function requireGameLogin($actionOnError = '..'): Session
{ {
$session = Session::requireLogin($actionOnError)->loginGame(); $session = static::requireLogin($actionOnError)->loginGame();
if ($session->generalID) { if ($session->generalID) {
return $session; return $session;
+11
View File
@@ -132,4 +132,15 @@ class Setting
} }
return true; return true;
} }
public function getDetailStatus()
{
if(!$this->isRunning()){
return [
'game'=>null,
'me'=>null
];
}
throw new NotImplementedException();
}
} }