Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
348877c7cd | ||
|
|
478f26e75a | ||
|
|
57cc558b9b | ||
|
|
20b1f8eff8 | ||
|
|
f0a7990404 | ||
|
|
27f53ff4a6 | ||
|
|
9ec5dfc8b1 | ||
|
|
e4c1e414c8 | ||
|
|
a391650472 | ||
|
|
3cfde2b40d | ||
|
|
8bf1ed33dc | ||
|
|
422b3be0c5 | ||
|
|
c34e44c4ec | ||
|
|
a2b20eca67 | ||
|
|
d41c316bfb | ||
|
|
ca1d8aab84 | ||
|
|
32e3dcff7c | ||
|
|
9a23470622 | ||
|
|
c37a186802 | ||
|
|
84c17e3b22 | ||
|
|
64e0fca124 | ||
|
|
5c6537fd7a | ||
|
|
764a82df00 | ||
|
|
e904911fd9 | ||
|
|
a7494f72f6 | ||
|
|
b6b53b028d | ||
|
|
1743ce714a | ||
|
|
656f0c5d11 | ||
|
|
d80aebe1f4 | ||
|
|
ad48bc1962 | ||
|
|
d72fbb7098 | ||
|
|
95d5eaa09b | ||
|
|
b997a6159e | ||
|
|
1cd8b7a450 | ||
|
|
c5a8eb4261 | ||
|
|
8891c29cbd | ||
|
|
2facdfa1dd | ||
|
|
65c9fa0c21 | ||
|
|
e53c85dbaf | ||
|
|
3a231e8e61 | ||
|
|
4dc7776387 | ||
|
|
5ca043e0f1 | ||
|
|
9ef052c814 | ||
|
|
6d1690beaa | ||
|
|
171656e5be | ||
|
|
385e7f4871 | ||
|
|
89c5485784 | ||
|
|
02d191ec28 | ||
|
|
47c3090f3a | ||
|
|
476dac1ac1 | ||
|
|
8ca0d0ced4 | ||
|
|
ab197489d7 | ||
|
|
99736d187b | ||
|
|
197c09bd0d | ||
|
|
6cc634ba1f | ||
|
|
4c89ad91d2 | ||
|
|
d66233bce0 | ||
|
|
b485e6927e | ||
|
|
74b9e8bd7b | ||
|
|
545742ecc0 | ||
|
|
d9f1f65352 | ||
|
|
0904d17a5f | ||
|
|
87171b4246 | ||
|
|
78f8b56203 | ||
|
|
c160c5a555 | ||
|
|
31c7bf5348 | ||
|
|
6eadf718fc | ||
|
|
effced24d1 | ||
|
|
09f399db9a | ||
|
|
2b73f6faea | ||
|
|
943662605e | ||
|
|
9a04962bd6 | ||
|
|
c371f6bbb5 | ||
|
|
8324e2e454 | ||
|
|
30307c1b56 | ||
|
|
f139d0d2a8 | ||
|
|
33843764a7 | ||
|
|
aca7d7c571 | ||
|
|
bff72f609c | ||
|
|
adb03b7420 | ||
|
|
2094e18b60 | ||
|
|
541d8ddd40 | ||
|
|
f996172218 | ||
|
|
f9ffc1c1f3 | ||
|
|
05085ad504 | ||
|
|
64aecaf28b | ||
|
|
7b3ef45300 | ||
|
|
bd25de930b | ||
|
|
15d43c9653 | ||
|
|
5b7eba61cc | ||
|
|
2445c79805 | ||
|
|
63be2dee47 | ||
|
|
5bfef1be32 | ||
|
|
8253526f23 | ||
|
|
db19548e2c | ||
|
|
10af31f042 | ||
|
|
e7c6e17590 | ||
|
|
a277ac182b | ||
|
|
0eee613a95 | ||
|
|
b76fa38e09 | ||
|
|
c0f5c8a358 | ||
|
|
71dd82afe8 | ||
|
|
ea5425a528 | ||
|
|
d4ba13eee3 | ||
|
|
16831880dd | ||
|
|
f79fc98ba6 | ||
|
|
0483c75dd7 | ||
|
|
3a4dcacd56 | ||
|
|
5f6f09674e | ||
|
|
c785027c5c | ||
|
|
d2659cea5f | ||
|
|
a9b966b159 | ||
|
|
f2c23e21c5 | ||
|
|
53b973e2d3 | ||
|
|
b7a570cba2 | ||
|
|
c77b79f0d2 | ||
|
|
ef6678d8b0 | ||
|
|
21609fa9c4 | ||
|
|
accc083702 | ||
|
|
9e677f3871 | ||
|
|
55290eac30 | ||
|
|
d480502d33 | ||
|
|
c1cda16be0 | ||
|
|
8ca9df9f34 | ||
|
|
406b67b081 | ||
|
|
2c9fecf3ef | ||
|
|
6bc78b67bd | ||
|
|
5bbc46e070 | ||
|
|
6a9ceda361 | ||
|
|
ab2d5fd58f | ||
|
|
7018413777 | ||
|
|
77385616a4 | ||
|
|
c809f27bf5 | ||
|
|
493e778124 | ||
|
|
7373af50b9 | ||
|
|
309f053510 | ||
|
|
d976cf8a27 | ||
|
|
5d60a62a38 | ||
|
|
a3f7dbccea | ||
|
|
0c4cce3339 | ||
|
|
58ccbc4d3d | ||
|
|
c6cabc2087 | ||
|
|
ef1f2722fc | ||
|
|
6b4a7ee03b | ||
|
|
7745a2051d | ||
|
|
eabd5e9acc | ||
|
|
d7dcbf98ff | ||
|
|
ff4c73f3d3 | ||
|
|
dbf044b418 | ||
|
|
7a514e2492 | ||
|
|
a73e533287 | ||
|
|
0f175ac4c6 | ||
|
|
be15f1c698 | ||
|
|
a315da6041 | ||
|
|
3f43f218ac | ||
|
|
5c8ad646af | ||
|
|
77f5fddd90 | ||
|
|
eab8b1ede5 | ||
|
|
2ab0896523 | ||
|
|
639fe920df | ||
|
|
7577c84eca | ||
|
|
22c4ec2d4a | ||
|
|
8ac85881a9 | ||
|
|
724804efc6 | ||
|
|
ca57ef17fc | ||
|
|
480f015fb0 | ||
|
|
d90e087f20 | ||
|
|
3916cc0562 | ||
|
|
cb54e56417 | ||
|
|
6aa606f2fa | ||
|
|
53d13a11ce | ||
|
|
9ba2b4142d | ||
|
|
f5161a5b99 | ||
|
|
f9d5d190d5 | ||
|
|
eead9639a2 | ||
|
|
5044d5d3b4 |
@@ -28,6 +28,7 @@ d_shared
|
||||
d_pic/*.jpg
|
||||
d_pic/*.gif
|
||||
d_pic/*.png
|
||||
d_pic/uploaded_image
|
||||
|
||||
d_setting/*.php
|
||||
*/d_setting/*.php
|
||||
|
||||
@@ -9,8 +9,10 @@
|
||||
* <code>mpm_event</code> 권장
|
||||
* PHP 7.2 이상
|
||||
* <code>php-fpm</code> 권장
|
||||
* php에서 curl을 실행가능해야 합니다.
|
||||
* MySQL 5.6 이상, 또는 MariaDB 10.0 이상
|
||||
* php에서 curl, pdo-sqlite을 실행가능해야 합니다. (기본값: 지원)
|
||||
* mysqlnd가 지원되어야합니다. (기본값: 지원)
|
||||
* MariaDB 10.2.1 이상
|
||||
* MySQL 5.6 이상도 가능하도록 할 예정입니다.
|
||||
* <code>git</code>
|
||||
* <code>curl</code>
|
||||
|
||||
@@ -47,7 +49,7 @@ Database 수는 로그인 관리 서버 1개, 내부 서버 7개로, 총 8개의
|
||||
|
||||
현재 카카오로그인 API KEY를 입력하는 작업이 설치과정에 추가되어있지 않습니다.
|
||||
|
||||
<code>f_install/templates/KakaoKey.orig.php</code> 를 <code>d_setting/KakaoKey.php</code>로 복사한 후 API 키를 입력하여야 합니다.
|
||||
설치 후 <code>d_setting/KakaoKey.php</code>에서 API키를 입력해야 합니다.
|
||||
|
||||
|
||||
## 라이선스
|
||||
|
||||
+6
-2
@@ -52,8 +52,8 @@ input::-webkit-input-placeholder {
|
||||
|
||||
}
|
||||
|
||||
.login-button{
|
||||
margin-top: 5px;
|
||||
.login_btn_group{
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.login-register{
|
||||
@@ -98,6 +98,10 @@ input::-webkit-input-placeholder {
|
||||
z-index:800;
|
||||
}
|
||||
|
||||
#login_card{
|
||||
z-index:801;
|
||||
}
|
||||
|
||||
#btn_kakao_login{
|
||||
cursor: pointer;
|
||||
height:46px;
|
||||
|
||||
Vendored
+2
-2
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Vendored
+3
-3
File diff suppressed because one or more lines are too long
@@ -0,0 +1,132 @@
|
||||
//download.js v3.0, by dandavis; 2008-2014. [CCBY2] see http://danml.com/download.html for tests/usage
|
||||
// v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime
|
||||
// v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs
|
||||
// v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support
|
||||
|
||||
// data can be a string, Blob, File, or dataURL
|
||||
|
||||
|
||||
|
||||
|
||||
function download(data, strFileName, strMimeType) {
|
||||
|
||||
var self = window, // this script is only for browsers anyway...
|
||||
u = "application/octet-stream", // this default mime also triggers iframe downloads
|
||||
m = strMimeType || u,
|
||||
x = data,
|
||||
D = document,
|
||||
a = D.createElement("a"),
|
||||
z = function(a){return String(a);},
|
||||
|
||||
|
||||
B = self.Blob || self.MozBlob || self.WebKitBlob || z,
|
||||
BB = self.MSBlobBuilder || self.WebKitBlobBuilder || self.BlobBuilder,
|
||||
fn = strFileName || "download",
|
||||
blob,
|
||||
b,
|
||||
ua,
|
||||
fr;
|
||||
|
||||
//if(typeof B.bind === 'function' ){ B=B.bind(self); }
|
||||
|
||||
if(String(this)==="true"){ //reverse arguments, allowing download.bind(true, "text/xml", "export.xml") to act as a callback
|
||||
x=[x, m];
|
||||
m=x[0];
|
||||
x=x[1];
|
||||
}
|
||||
|
||||
|
||||
|
||||
//go ahead and download dataURLs right away
|
||||
if(String(x).match(/^data\:[\w+\-]+\/[\w+\-]+[,;]/)){
|
||||
return navigator.msSaveBlob ? // IE10 can't do a[download], only Blobs:
|
||||
navigator.msSaveBlob(d2b(x), fn) :
|
||||
saver(x) ; // everyone else can save dataURLs un-processed
|
||||
}//end if dataURL passed?
|
||||
|
||||
try{
|
||||
|
||||
blob = x instanceof B ?
|
||||
x :
|
||||
new B([x], {type: m}) ;
|
||||
}catch(y){
|
||||
if(BB){
|
||||
b = new BB();
|
||||
b.append([x]);
|
||||
blob = b.getBlob(m); // the blob
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
function d2b(u) {
|
||||
var p= u.split(/[:;,]/),
|
||||
t= p[1],
|
||||
dec= p[2] == "base64" ? atob : decodeURIComponent,
|
||||
bin= dec(p.pop()),
|
||||
mx= bin.length,
|
||||
i= 0,
|
||||
uia= new Uint8Array(mx);
|
||||
|
||||
for(i;i<mx;++i) uia[i]= bin.charCodeAt(i);
|
||||
|
||||
return new B([uia], {type: t});
|
||||
}
|
||||
|
||||
function saver(url, winMode){
|
||||
|
||||
|
||||
if ('download' in a) { //html5 A[download]
|
||||
a.href = url;
|
||||
a.setAttribute("download", fn);
|
||||
a.innerHTML = "downloading...";
|
||||
D.body.appendChild(a);
|
||||
setTimeout(function() {
|
||||
a.click();
|
||||
D.body.removeChild(a);
|
||||
if(winMode===true){setTimeout(function(){ self.URL.revokeObjectURL(a.href);}, 250 );}
|
||||
}, 66);
|
||||
return true;
|
||||
}
|
||||
|
||||
//do iframe dataURL download (old ch+FF):
|
||||
var f = D.createElement("iframe");
|
||||
D.body.appendChild(f);
|
||||
if(!winMode){ // force a mime that will download:
|
||||
url="data:"+url.replace(/^data:([\w\/\-\+]+)/, u);
|
||||
}
|
||||
|
||||
|
||||
f.src = url;
|
||||
setTimeout(function(){ D.body.removeChild(f); }, 333);
|
||||
|
||||
}//end saver
|
||||
|
||||
|
||||
if (navigator.msSaveBlob) { // IE10+ : (has Blob, but not a[download] or URL)
|
||||
return navigator.msSaveBlob(blob, fn);
|
||||
}
|
||||
|
||||
if(self.URL){ // simple fast and modern way using Blob and URL:
|
||||
saver(self.URL.createObjectURL(blob), true);
|
||||
}else{
|
||||
// handle non-Blob()+non-URL browsers:
|
||||
if(typeof blob === "string" || blob.constructor===z ){
|
||||
try{
|
||||
return saver( "data:" + m + ";base64," + self.btoa(blob) );
|
||||
}catch(y){
|
||||
return saver( "data:" + m + "," + encodeURIComponent(blob) );
|
||||
}
|
||||
}
|
||||
|
||||
// Blob but not URL:
|
||||
fr=new FileReader();
|
||||
fr.onload=function(e){
|
||||
saver(this.result);
|
||||
};
|
||||
fr.readAsDataURL(blob);
|
||||
}
|
||||
return true;
|
||||
} /* end download() */
|
||||
|
||||
Vendored
+1
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,155 @@
|
||||
(function($) {
|
||||
$.extend($.summernote.lang, {
|
||||
'ko-KR': {
|
||||
font: {
|
||||
bold: '굵게',
|
||||
italic: '기울임꼴',
|
||||
underline: '밑줄',
|
||||
clear: '글자 효과 없애기',
|
||||
height: '줄간격',
|
||||
name: '글꼴',
|
||||
superscript: '위 첨자',
|
||||
subscript: '아래 첨자',
|
||||
strikethrough: '취소선',
|
||||
size: '글자 크기'
|
||||
},
|
||||
image: {
|
||||
image: '사진',
|
||||
insert: '사진 추가',
|
||||
resizeFull: '100% 크기로 변경',
|
||||
resizeHalf: '50% 크기로 변경',
|
||||
resizeQuarter: '25% 크기로 변경',
|
||||
floatLeft: '왼쪽 정렬',
|
||||
floatRight: '오른쪽 정렬',
|
||||
floatNone: '정렬하지 않음',
|
||||
shapeRounded: '스타일: 둥근 모서리',
|
||||
shapeCircle: '스타일: 원형',
|
||||
shapeThumbnail: '스타일: 액자',
|
||||
shapeNone: '스타일: 없음',
|
||||
dragImageHere: '텍스트 혹은 사진을 이곳으로 끌어오세요',
|
||||
dropImage: '텍스트 혹은 사진을 내려놓으세요',
|
||||
selectFromFiles: '파일 선택',
|
||||
maximumFileSize: 'Maximum file size',
|
||||
maximumFileSizeError: 'Maximum file size exceeded.',
|
||||
url: '사진 URL',
|
||||
remove: '사진 삭제',
|
||||
original: 'Original'
|
||||
},
|
||||
video: {
|
||||
video: '동영상',
|
||||
videoLink: '동영상 링크',
|
||||
insert: '동영상 추가',
|
||||
url: '동영상 URL',
|
||||
providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, Youku 사용 가능)'
|
||||
},
|
||||
link: {
|
||||
link: '링크',
|
||||
insert: '링크 추가',
|
||||
unlink: '링크 삭제',
|
||||
edit: '수정',
|
||||
textToDisplay: '링크에 표시할 내용',
|
||||
url: '이동할 URL',
|
||||
openInNewWindow: '새창으로 열기'
|
||||
},
|
||||
table: {
|
||||
table: '테이블',
|
||||
addRowAbove: 'Add row above',
|
||||
addRowBelow: 'Add row below',
|
||||
addColLeft: 'Add column left',
|
||||
addColRight: 'Add column right',
|
||||
delRow: 'Delete row',
|
||||
delCol: 'Delete column',
|
||||
delTable: 'Delete table'
|
||||
},
|
||||
hr: {
|
||||
insert: '구분선 추가'
|
||||
},
|
||||
style: {
|
||||
style: '스타일',
|
||||
p: '본문',
|
||||
blockquote: '인용구',
|
||||
pre: '코드',
|
||||
h1: '제목 1',
|
||||
h2: '제목 2',
|
||||
h3: '제목 3',
|
||||
h4: '제목 4',
|
||||
h5: '제목 5',
|
||||
h6: '제목 6'
|
||||
},
|
||||
lists: {
|
||||
unordered: '글머리 기호',
|
||||
ordered: '번호 매기기'
|
||||
},
|
||||
options: {
|
||||
help: '도움말',
|
||||
fullscreen: '전체 화면',
|
||||
codeview: '코드 보기'
|
||||
},
|
||||
paragraph: {
|
||||
paragraph: '문단 정렬',
|
||||
outdent: '내어쓰기',
|
||||
indent: '들여쓰기',
|
||||
left: '왼쪽 정렬',
|
||||
center: '가운데 정렬',
|
||||
right: '오른쪽 정렬',
|
||||
justify: '양쪽 정렬'
|
||||
},
|
||||
color: {
|
||||
recent: '마지막으로 사용한 색',
|
||||
more: '다른 색 선택',
|
||||
background: '배경색',
|
||||
foreground: '글자색',
|
||||
transparent: '투명',
|
||||
setTransparent: '투명',
|
||||
reset: '취소',
|
||||
resetToDefault: '기본 값으로 변경'
|
||||
},
|
||||
shortcut: {
|
||||
shortcuts: '키보드 단축키',
|
||||
close: '닫기',
|
||||
textFormatting: '글자 스타일 적용',
|
||||
action: '기능',
|
||||
paragraphFormatting: '문단 스타일 적용',
|
||||
documentStyle: '문서 스타일 적용',
|
||||
extraKeys: 'Extra keys'
|
||||
},
|
||||
help: {
|
||||
'insertParagraph': 'Insert Paragraph',
|
||||
'undo': 'Undoes the last command',
|
||||
'redo': 'Redoes the last command',
|
||||
'tab': 'Tab',
|
||||
'untab': 'Untab',
|
||||
'bold': 'Set a bold style',
|
||||
'italic': 'Set a italic style',
|
||||
'underline': 'Set a underline style',
|
||||
'strikethrough': 'Set a strikethrough style',
|
||||
'removeFormat': 'Clean a style',
|
||||
'justifyLeft': 'Set left align',
|
||||
'justifyCenter': 'Set center align',
|
||||
'justifyRight': 'Set right align',
|
||||
'justifyFull': 'Set full align',
|
||||
'insertUnorderedList': 'Toggle unordered list',
|
||||
'insertOrderedList': 'Toggle ordered list',
|
||||
'outdent': 'Outdent on current paragraph',
|
||||
'indent': 'Indent on current paragraph',
|
||||
'formatPara': 'Change current block\'s format as a paragraph(P tag)',
|
||||
'formatH1': 'Change current block\'s format as H1',
|
||||
'formatH2': 'Change current block\'s format as H2',
|
||||
'formatH3': 'Change current block\'s format as H3',
|
||||
'formatH4': 'Change current block\'s format as H4',
|
||||
'formatH5': 'Change current block\'s format as H5',
|
||||
'formatH6': 'Change current block\'s format as H6',
|
||||
'insertHorizontalRule': 'Insert horizontal rule',
|
||||
'linkDialog.show': 'Show Link Dialog'
|
||||
},
|
||||
history: {
|
||||
undo: '실행 취소',
|
||||
redo: '다시 실행'
|
||||
},
|
||||
specialChar: {
|
||||
specialChar: '특수문자',
|
||||
select: '특수문자를 선택하세요'
|
||||
}
|
||||
}
|
||||
});
|
||||
})(jQuery);
|
||||
@@ -0,0 +1,16 @@
|
||||
.ext-databasic {
|
||||
position: relative;
|
||||
display: block;
|
||||
min-height: 50px;
|
||||
background-color: cyan;
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
border: 1px solid white;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.ext-databasic p {
|
||||
color: white;
|
||||
font-size: 1.2em;
|
||||
margin: 0;
|
||||
}
|
||||
@@ -0,0 +1,292 @@
|
||||
(function(factory) {
|
||||
/* global define */
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define(['jquery'], factory);
|
||||
} else if (typeof module === 'object' && module.exports) {
|
||||
// Node/CommonJS
|
||||
module.exports = factory(require('jquery'));
|
||||
} else {
|
||||
// Browser globals
|
||||
factory(window.jQuery);
|
||||
}
|
||||
}(function($) {
|
||||
// pull in some summernote core functions
|
||||
var ui = $.summernote.ui;
|
||||
var dom = $.summernote.dom;
|
||||
|
||||
// define the popover plugin
|
||||
var DataBasicPlugin = function(context) {
|
||||
var self = this;
|
||||
var options = context.options;
|
||||
var lang = options.langInfo;
|
||||
|
||||
self.icon = '<i class="fa fa-object-group"/>';
|
||||
|
||||
// add context menu button for dialog
|
||||
context.memo('button.databasic', function() {
|
||||
return ui.button({
|
||||
contents: self.icon,
|
||||
tooltip: lang.databasic.insert,
|
||||
click: context.createInvokeHandler('databasic.showDialog')
|
||||
}).render();
|
||||
});
|
||||
|
||||
// add popover edit button
|
||||
context.memo('button.databasicDialog', function() {
|
||||
return ui.button({
|
||||
contents: self.icon,
|
||||
tooltip: lang.databasic.edit,
|
||||
click: context.createInvokeHandler('databasic.showDialog')
|
||||
}).render();
|
||||
});
|
||||
|
||||
// add popover size buttons
|
||||
context.memo('button.databasicSize100', function() {
|
||||
return ui.button({
|
||||
contents: '<span class="note-fontsize-10">100%</span>',
|
||||
tooltip: lang.image.resizeFull,
|
||||
click: context.createInvokeHandler('editor.resize', '1')
|
||||
}).render();
|
||||
});
|
||||
context.memo('button.databasicSize50', function() {
|
||||
return ui.button({
|
||||
contents: '<span class="note-fontsize-10">50%</span>',
|
||||
tooltip: lang.image.resizeHalf,
|
||||
click: context.createInvokeHandler('editor.resize', '0.5')
|
||||
}).render();
|
||||
});
|
||||
context.memo('button.databasicSize25', function() {
|
||||
return ui.button({
|
||||
contents: '<span class="note-fontsize-10">25%</span>',
|
||||
tooltip: lang.image.resizeQuarter,
|
||||
click: context.createInvokeHandler('editor.resize', '0.25')
|
||||
}).render();
|
||||
});
|
||||
|
||||
self.events = {
|
||||
'summernote.init': function(we, e) {
|
||||
// update existing containers
|
||||
$('data.ext-databasic', e.editable).each(function() { self.setContent($(this)); });
|
||||
// TODO: make this an undo snapshot...
|
||||
},
|
||||
'summernote.keyup summernote.mouseup summernote.change summernote.scroll': function() {
|
||||
self.update();
|
||||
},
|
||||
'summernote.dialog.shown': function() {
|
||||
self.hidePopover();
|
||||
}
|
||||
};
|
||||
|
||||
self.initialize = function() {
|
||||
// create dialog markup
|
||||
var $container = options.dialogsInBody ? $(document.body) : context.layoutInfo.editor;
|
||||
|
||||
var body = '<div class="form-group row-fluid">' +
|
||||
'<label>' + lang.databasic.testLabel + '</label>' +
|
||||
'<input class="ext-databasic-test form-control" type="text" />' +
|
||||
'</div>';
|
||||
var footer = '<button href="#" class="btn btn-primary ext-databasic-save">' + lang.databasic.insert + '</button>';
|
||||
|
||||
self.$dialog = ui.dialog({
|
||||
title: lang.databasic.name,
|
||||
fade: options.dialogsFade,
|
||||
body: body,
|
||||
footer: footer
|
||||
}).render().appendTo($container);
|
||||
|
||||
// create popover
|
||||
self.$popover = ui.popover({
|
||||
className: 'ext-databasic-popover'
|
||||
}).render().appendTo('body');
|
||||
var $content = self.$popover.find('.popover-content');
|
||||
|
||||
context.invoke('buttons.build', $content, options.popover.databasic);
|
||||
};
|
||||
|
||||
self.destroy = function() {
|
||||
self.$popover.remove();
|
||||
self.$popover = null;
|
||||
self.$dialog.remove();
|
||||
self.$dialog = null;
|
||||
};
|
||||
|
||||
self.update = function() {
|
||||
// Prevent focusing on editable when invoke('code') is executed
|
||||
if (!context.invoke('editor.hasFocus')) {
|
||||
self.hidePopover();
|
||||
return;
|
||||
}
|
||||
|
||||
var rng = context.invoke('editor.createRange');
|
||||
var visible = false;
|
||||
|
||||
if (rng.isOnData()) {
|
||||
var $data = $(rng.sc).closest('data.ext-databasic');
|
||||
|
||||
if ($data.length) {
|
||||
var pos = dom.posFromPlaceholder($data[0]);
|
||||
|
||||
self.$popover.css({
|
||||
display: 'block',
|
||||
left: pos.left,
|
||||
top: pos.top
|
||||
});
|
||||
|
||||
// save editor target to let size buttons resize the container
|
||||
context.invoke('editor.saveTarget', $data[0]);
|
||||
|
||||
visible = true;
|
||||
}
|
||||
}
|
||||
|
||||
// hide if not visible
|
||||
if (!visible) {
|
||||
self.hidePopover();
|
||||
}
|
||||
};
|
||||
|
||||
self.hidePopover = function() {
|
||||
self.$popover.hide();
|
||||
};
|
||||
|
||||
// define plugin dialog
|
||||
self.getInfo = function() {
|
||||
var rng = context.invoke('editor.createRange');
|
||||
|
||||
if (rng.isOnData()) {
|
||||
var $data = $(rng.sc).closest('data.ext-databasic');
|
||||
|
||||
if ($data.length) {
|
||||
// Get the first node on range(for edit).
|
||||
return {
|
||||
node: $data,
|
||||
test: $data.attr('data-test')
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return {};
|
||||
};
|
||||
|
||||
self.setContent = function($node) {
|
||||
$node.html('<p contenteditable="false">' + self.icon + ' ' + lang.databasic.name + ': ' +
|
||||
$node.attr('data-test') + '</p>');
|
||||
};
|
||||
|
||||
self.updateNode = function(info) {
|
||||
self.setContent(info.node
|
||||
.attr('data-test', info.test));
|
||||
};
|
||||
|
||||
self.createNode = function(info) {
|
||||
var $node = $('<data class="ext-databasic"></data>');
|
||||
|
||||
if ($node) {
|
||||
// save node to info structure
|
||||
info.node = $node;
|
||||
// insert node into editor dom
|
||||
context.invoke('editor.insertNode', $node[0]);
|
||||
}
|
||||
|
||||
return $node;
|
||||
};
|
||||
|
||||
self.showDialog = function() {
|
||||
var info = self.getInfo();
|
||||
var newNode = !info.node;
|
||||
context.invoke('editor.saveRange');
|
||||
|
||||
self
|
||||
.openDialog(info)
|
||||
.then(function(dialogInfo) {
|
||||
// [workaround] hide dialog before restore range for IE range focus
|
||||
ui.hideDialog(self.$dialog);
|
||||
context.invoke('editor.restoreRange');
|
||||
|
||||
// insert a new node
|
||||
if (newNode) {
|
||||
self.createNode(info);
|
||||
}
|
||||
|
||||
// update info with dialog info
|
||||
$.extend(info, dialogInfo);
|
||||
|
||||
self.updateNode(info);
|
||||
})
|
||||
.fail(function() {
|
||||
context.invoke('editor.restoreRange');
|
||||
});
|
||||
};
|
||||
|
||||
self.openDialog = function(info) {
|
||||
return $.Deferred(function(deferred) {
|
||||
var $inpTest = self.$dialog.find('.ext-databasic-test');
|
||||
var $saveBtn = self.$dialog.find('.ext-databasic-save');
|
||||
var onKeyup = function(event) {
|
||||
if (event.keyCode === 13) {
|
||||
$saveBtn.trigger('click');
|
||||
}
|
||||
};
|
||||
|
||||
ui.onDialogShown(self.$dialog, function() {
|
||||
context.triggerEvent('dialog.shown');
|
||||
|
||||
$inpTest.val(info.test).on('input', function() {
|
||||
ui.toggleBtn($saveBtn, $inpTest.val());
|
||||
}).trigger('focus').on('keyup', onKeyup);
|
||||
|
||||
$saveBtn
|
||||
.text(info.node ? lang.databasic.edit : lang.databasic.insert)
|
||||
.click(function(event) {
|
||||
event.preventDefault();
|
||||
|
||||
deferred.resolve({ test: $inpTest.val() });
|
||||
});
|
||||
|
||||
// init save button
|
||||
ui.toggleBtn($saveBtn, $inpTest.val());
|
||||
});
|
||||
|
||||
ui.onDialogHidden(self.$dialog, function() {
|
||||
$inpTest.off('input keyup');
|
||||
$saveBtn.off('click');
|
||||
|
||||
if (deferred.state() === 'pending') {
|
||||
deferred.reject();
|
||||
}
|
||||
});
|
||||
|
||||
ui.showDialog(self.$dialog);
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
// Extends summernote
|
||||
$.extend(true, $.summernote, {
|
||||
plugins: {
|
||||
databasic: DataBasicPlugin
|
||||
},
|
||||
|
||||
options: {
|
||||
popover: {
|
||||
databasic: [
|
||||
['databasic', ['databasicDialog', 'databasicSize100', 'databasicSize50', 'databasicSize25']]
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
// add localization texts
|
||||
lang: {
|
||||
'en-US': {
|
||||
databasic: {
|
||||
name: 'Basic Data Container',
|
||||
insert: 'insert basic data container',
|
||||
edit: 'edit basic data container',
|
||||
testLabel: 'test input'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
}));
|
||||
@@ -0,0 +1,81 @@
|
||||
(function(factory) {
|
||||
/* global define */
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define(['jquery'], factory);
|
||||
} else if (typeof module === 'object' && module.exports) {
|
||||
// Node/CommonJS
|
||||
module.exports = factory(require('jquery'));
|
||||
} else {
|
||||
// Browser globals
|
||||
factory(window.jQuery);
|
||||
}
|
||||
}(function($) {
|
||||
// Extends plugins for adding hello.
|
||||
// - plugin is external module for customizing.
|
||||
$.extend($.summernote.plugins, {
|
||||
/**
|
||||
* @param {Object} context - context object has status of editor.
|
||||
*/
|
||||
'hello': function(context) {
|
||||
var self = this;
|
||||
|
||||
// ui has renders to build ui elements.
|
||||
// - you can create a button with `ui.button`
|
||||
var ui = $.summernote.ui;
|
||||
|
||||
// add hello button
|
||||
context.memo('button.hello', function() {
|
||||
// create button
|
||||
var button = ui.button({
|
||||
contents: '<i class="fa fa-child"/> Hello',
|
||||
tooltip: 'hello',
|
||||
click: function() {
|
||||
self.$panel.show();
|
||||
self.$panel.hide(500);
|
||||
// invoke insertText method with 'hello' on editor module.
|
||||
context.invoke('editor.insertText', 'hello');
|
||||
}
|
||||
});
|
||||
|
||||
// create jQuery object from button instance.
|
||||
var $hello = button.render();
|
||||
return $hello;
|
||||
});
|
||||
|
||||
// This events will be attached when editor is initialized.
|
||||
this.events = {
|
||||
// This will be called after modules are initialized.
|
||||
'summernote.init': function(we, e) {
|
||||
console.log('summernote initialized', we, e);
|
||||
},
|
||||
// This will be called when user releases a key on editable.
|
||||
'summernote.keyup': function(we, e) {
|
||||
console.log('summernote keyup', we, e);
|
||||
}
|
||||
};
|
||||
|
||||
// This method will be called when editor is initialized by $('..').summernote();
|
||||
// You can create elements for plugin
|
||||
this.initialize = function() {
|
||||
this.$panel = $('<div class="hello-panel"/>').css({
|
||||
position: 'absolute',
|
||||
width: 100,
|
||||
height: 100,
|
||||
left: '50%',
|
||||
top: '50%',
|
||||
background: 'red'
|
||||
}).hide();
|
||||
|
||||
this.$panel.appendTo('body');
|
||||
};
|
||||
|
||||
// This methods will be called when editor is destroyed by $('..').summernote('destroy');
|
||||
// You should remove elements on `initialize`.
|
||||
this.destroy = function() {
|
||||
this.$panel.remove();
|
||||
this.$panel = null;
|
||||
};
|
||||
}
|
||||
});
|
||||
}));
|
||||
@@ -0,0 +1,153 @@
|
||||
/* Forked from https://github.com/asiffermann/summernote-image-title */
|
||||
|
||||
(function (factory) {
|
||||
/* Global define */
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define(['jquery'], factory);
|
||||
} else if (typeof module === 'object' && module.exports) {
|
||||
// Node/CommonJS
|
||||
module.exports = factory(require('jquery'));
|
||||
} else {
|
||||
// Browser globals
|
||||
factory(window.jQuery);
|
||||
}
|
||||
}(function ($) {
|
||||
$.extend(true, $.summernote.lang, {
|
||||
'en-US': {
|
||||
imageFlip: {
|
||||
edit: 'Flip image',
|
||||
flipLabel: 'Alternative Image'
|
||||
}
|
||||
},
|
||||
'ko-KR': {
|
||||
imageFlip: {
|
||||
edit: '이미지 전환',
|
||||
flipLabel: '대체 이미지( , 로 구분)'
|
||||
}
|
||||
},
|
||||
});
|
||||
$.extend($.summernote.options, {
|
||||
imageFlip: {
|
||||
icon: '<i class="note-icon-pencil"/>',
|
||||
tooltip: 'Image Flip'
|
||||
}
|
||||
});
|
||||
$.extend($.summernote.plugins, {
|
||||
'imageFlip': function (context) {
|
||||
var self = this;
|
||||
|
||||
var ui = $.summernote.ui;
|
||||
var $note = context.layoutInfo.note;
|
||||
var $editor = context.layoutInfo.editor;
|
||||
var $editable = context.layoutInfo.editable;
|
||||
var $toolbar = context.layoutInfo.toolbar;
|
||||
|
||||
if (typeof context.options.imageFlip === 'undefined') {
|
||||
context.options.imageFlip = {};
|
||||
}
|
||||
|
||||
var options = context.options;
|
||||
var lang = options.langInfo;
|
||||
|
||||
context.memo('button.imageFlip', function () {
|
||||
var button = ui.button({
|
||||
contents: ui.icon(options.icons.pencil),
|
||||
container: false,
|
||||
tooltip: lang.imageFlip.edit,
|
||||
click: function (e) {
|
||||
context.invoke('imageFlip.show');
|
||||
}
|
||||
});
|
||||
|
||||
return button.render();
|
||||
});
|
||||
|
||||
this.initialize = function () {
|
||||
var $container = options.dialogsInBody ? $(document.body) : $editor;
|
||||
|
||||
var body = '<div class="form-group">' +
|
||||
'<label>' + lang.imageFlip.flipLabel + '</label>' +
|
||||
'<input class="note-image-flip-text form-control" type="text" />' +
|
||||
'</div>';
|
||||
|
||||
var footer = '<button href="#" class="btn btn-primary note-image-flip-btn">' + lang.imageFlip.edit + '</button>';
|
||||
|
||||
this.$dialog = ui.dialog({
|
||||
title: lang.imageFlip.edit,
|
||||
body: body,
|
||||
footer: footer
|
||||
}).render().appendTo($container);
|
||||
};
|
||||
|
||||
this.destroy = function () {
|
||||
ui.hideDialog(this.$dialog);
|
||||
this.$dialog.remove();
|
||||
};
|
||||
|
||||
this.bindEnterKey = function ($input, $btn) {
|
||||
$input.on('keypress', function (event) {
|
||||
if (event.keyCode === 13) {
|
||||
$btn.trigger('click');
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
this.show = function () {
|
||||
var $img = $($editable.data('target'));
|
||||
|
||||
var imgInfo = {
|
||||
imgDom: $img,
|
||||
flip: $img.data('flip'),
|
||||
};
|
||||
this.showLinkDialog(imgInfo).then(function (imgInfo) {
|
||||
ui.hideDialog(self.$dialog);
|
||||
var $img = imgInfo.imgDom;
|
||||
|
||||
if (imgInfo.flip) {
|
||||
$img.attr('data-flip', imgInfo.flip);
|
||||
}
|
||||
else {
|
||||
$img.removeData('flip');
|
||||
}
|
||||
|
||||
$note.val(context.invoke('code'));
|
||||
$note.change();
|
||||
});
|
||||
};
|
||||
|
||||
this.showLinkDialog = function (imgInfo) {
|
||||
return $.Deferred(function (deferred) {
|
||||
var $imageFlip = self.$dialog.find('.note-image-flip-text');
|
||||
var $editBtn = self.$dialog.find('.note-image-flip-btn');
|
||||
|
||||
ui.onDialogShown(self.$dialog, function () {
|
||||
context.triggerEvent('dialog.shown');
|
||||
|
||||
$editBtn.click(function (event) {
|
||||
event.preventDefault();
|
||||
deferred.resolve({
|
||||
imgDom: imgInfo.imgDom,
|
||||
flip: $imageFlip.val(),
|
||||
});
|
||||
});
|
||||
|
||||
$imageFlip.val(imgInfo.flip).trigger('focus');
|
||||
self.bindEnterKey($imageFlip, $editBtn);
|
||||
|
||||
});
|
||||
|
||||
ui.onDialogHidden(self.$dialog, function () {
|
||||
$editBtn.off('click');
|
||||
|
||||
if (deferred.state() === 'pending') {
|
||||
deferred.reject();
|
||||
}
|
||||
});
|
||||
|
||||
ui.showDialog(self.$dialog);
|
||||
});
|
||||
};
|
||||
}
|
||||
});
|
||||
}));
|
||||
@@ -0,0 +1,312 @@
|
||||
(function(factory) {
|
||||
/* global define */
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define(['jquery'], factory);
|
||||
} else if (typeof module === 'object' && module.exports) {
|
||||
// Node/CommonJS
|
||||
module.exports = factory(require('jquery'));
|
||||
} else {
|
||||
// Browser globals
|
||||
factory(window.jQuery);
|
||||
}
|
||||
}(function($) {
|
||||
$.extend($.summernote.plugins, {
|
||||
'specialchars': function(context) {
|
||||
var self = this;
|
||||
var ui = $.summernote.ui;
|
||||
|
||||
var $editor = context.layoutInfo.editor;
|
||||
var options = context.options;
|
||||
var lang = options.langInfo;
|
||||
|
||||
var KEY = {
|
||||
UP: 38,
|
||||
DOWN: 40,
|
||||
LEFT: 37,
|
||||
RIGHT: 39,
|
||||
ENTER: 13
|
||||
};
|
||||
var COLUMN_LENGTH = 15;
|
||||
var COLUMN_WIDTH = 35;
|
||||
|
||||
var currentColumn = 0;
|
||||
var currentRow = 0;
|
||||
var totalColumn = 0;
|
||||
var totalRow = 0;
|
||||
|
||||
// special characters data set
|
||||
var specialCharDataSet = [
|
||||
'"', '&', '<', '>', '¡', '¢',
|
||||
'£', '¤', '¥', '¦', '§',
|
||||
'¨', '©', 'ª', '«', '¬',
|
||||
'®', '¯', '°', '±', '²',
|
||||
'³', '´', 'µ', '¶', '·',
|
||||
'¸', '¹', 'º', '»', '¼',
|
||||
'½', '¾', '¿', '×', '÷',
|
||||
'ƒ', 'ˆ', '˜', '–', '—',
|
||||
'‘', '’', '‚', '“', '”',
|
||||
'„', '†', '‡', '•', '…',
|
||||
'‰', '′', '″', '‹', '›',
|
||||
'‾', '⁄', '€', 'ℑ', '℘',
|
||||
'ℜ', '™', 'ℵ', '←', '↑',
|
||||
'→', '↓', '↔', '↵', '⇐',
|
||||
'⇑', '⇒', '⇓', '⇔', '∀',
|
||||
'∂', '∃', '∅', '∇', '∈',
|
||||
'∉', '∋', '∏', '∑', '−',
|
||||
'∗', '√', '∝', '∞', '∠',
|
||||
'∧', '∨', '∩', '∪', '∫',
|
||||
'∴', '∼', '≅', '≈', '≠',
|
||||
'≡', '≤', '≥', '⊂', '⊃',
|
||||
'⊄', '⊆', '⊇', '⊕', '⊗',
|
||||
'⊥', '⋅', '⌈', '⌉', '⌊',
|
||||
'⌋', '◊', '♠', '♣', '♥',
|
||||
'♦'
|
||||
];
|
||||
|
||||
context.memo('button.specialchars', function() {
|
||||
return ui.button({
|
||||
contents: '<i class="fa fa-font fa-flip-vertical">',
|
||||
tooltip: lang.specialChar.specialChar,
|
||||
click: function() {
|
||||
self.show();
|
||||
}
|
||||
}).render();
|
||||
});
|
||||
|
||||
/**
|
||||
* Make Special Characters Table
|
||||
*
|
||||
* @member plugin.specialChar
|
||||
* @private
|
||||
* @return {jQuery}
|
||||
*/
|
||||
this.makeSpecialCharSetTable = function() {
|
||||
var $table = $('<table/>');
|
||||
$.each(specialCharDataSet, function(idx, text) {
|
||||
var $td = $('<td/>').addClass('note-specialchar-node');
|
||||
var $tr = (idx % COLUMN_LENGTH === 0) ? $('<tr/>') : $table.find('tr').last();
|
||||
|
||||
var $button = ui.button({
|
||||
callback: function($node) {
|
||||
$node.html(text);
|
||||
$node.attr('title', text);
|
||||
$node.attr('data-value', encodeURIComponent(text));
|
||||
$node.css({
|
||||
width: COLUMN_WIDTH,
|
||||
'margin-right': '2px',
|
||||
'margin-bottom': '2px'
|
||||
});
|
||||
}
|
||||
}).render();
|
||||
|
||||
$td.append($button);
|
||||
|
||||
$tr.append($td);
|
||||
if (idx % COLUMN_LENGTH === 0) {
|
||||
$table.append($tr);
|
||||
}
|
||||
});
|
||||
|
||||
totalRow = $table.find('tr').length;
|
||||
totalColumn = COLUMN_LENGTH;
|
||||
|
||||
return $table;
|
||||
};
|
||||
|
||||
this.initialize = function() {
|
||||
var $container = options.dialogsInBody ? $(document.body) : $editor;
|
||||
|
||||
var body = '<div class="form-group row-fluid">' + this.makeSpecialCharSetTable()[0].outerHTML + '</div>';
|
||||
|
||||
this.$dialog = ui.dialog({
|
||||
title: lang.specialChar.select,
|
||||
body: body
|
||||
}).render().appendTo($container);
|
||||
};
|
||||
|
||||
this.show = function() {
|
||||
var text = context.invoke('editor.getSelectedText');
|
||||
context.invoke('editor.saveRange');
|
||||
this.showSpecialCharDialog(text).then(function(selectChar) {
|
||||
context.invoke('editor.restoreRange');
|
||||
|
||||
// build node
|
||||
var $node = $('<span></span>').html(selectChar)[0];
|
||||
|
||||
if ($node) {
|
||||
// insert video node
|
||||
context.invoke('editor.insertNode', $node);
|
||||
}
|
||||
}).fail(function() {
|
||||
context.invoke('editor.restoreRange');
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* show image dialog
|
||||
*
|
||||
* @param {jQuery} $dialog
|
||||
* @return {Promise}
|
||||
*/
|
||||
this.showSpecialCharDialog = function(text) {
|
||||
return $.Deferred(function(deferred) {
|
||||
var $specialCharDialog = self.$dialog;
|
||||
var $specialCharNode = $specialCharDialog.find('.note-specialchar-node');
|
||||
var $selectedNode = null;
|
||||
var ARROW_KEYS = [KEY.UP, KEY.DOWN, KEY.LEFT, KEY.RIGHT];
|
||||
var ENTER_KEY = KEY.ENTER;
|
||||
|
||||
function addActiveClass($target) {
|
||||
if (!$target) {
|
||||
return;
|
||||
}
|
||||
$target.find('button').addClass('active');
|
||||
$selectedNode = $target;
|
||||
}
|
||||
|
||||
function removeActiveClass($target) {
|
||||
$target.find('button').removeClass('active');
|
||||
$selectedNode = null;
|
||||
}
|
||||
|
||||
// find next node
|
||||
function findNextNode(row, column) {
|
||||
var findNode = null;
|
||||
$.each($specialCharNode, function(idx, $node) {
|
||||
var findRow = Math.ceil((idx + 1) / COLUMN_LENGTH);
|
||||
var findColumn = ((idx + 1) % COLUMN_LENGTH === 0) ? COLUMN_LENGTH : (idx + 1) % COLUMN_LENGTH;
|
||||
if (findRow === row && findColumn === column) {
|
||||
findNode = $node;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
return $(findNode);
|
||||
}
|
||||
|
||||
function arrowKeyHandler(keyCode) {
|
||||
// left, right, up, down key
|
||||
var $nextNode;
|
||||
var lastRowColumnLength = $specialCharNode.length % totalColumn;
|
||||
|
||||
if (KEY.LEFT === keyCode) {
|
||||
if (currentColumn > 1) {
|
||||
currentColumn = currentColumn - 1;
|
||||
} else if (currentRow === 1 && currentColumn === 1) {
|
||||
currentColumn = lastRowColumnLength;
|
||||
currentRow = totalRow;
|
||||
} else {
|
||||
currentColumn = totalColumn;
|
||||
currentRow = currentRow - 1;
|
||||
}
|
||||
} else if (KEY.RIGHT === keyCode) {
|
||||
if (currentRow === totalRow && lastRowColumnLength === currentColumn) {
|
||||
currentColumn = 1;
|
||||
currentRow = 1;
|
||||
} else if (currentColumn < totalColumn) {
|
||||
currentColumn = currentColumn + 1;
|
||||
} else {
|
||||
currentColumn = 1;
|
||||
currentRow = currentRow + 1;
|
||||
}
|
||||
} else if (KEY.UP === keyCode) {
|
||||
if (currentRow === 1 && lastRowColumnLength < currentColumn) {
|
||||
currentRow = totalRow - 1;
|
||||
} else {
|
||||
currentRow = currentRow - 1;
|
||||
}
|
||||
} else if (KEY.DOWN === keyCode) {
|
||||
currentRow = currentRow + 1;
|
||||
}
|
||||
|
||||
if (currentRow === totalRow && currentColumn > lastRowColumnLength) {
|
||||
currentRow = 1;
|
||||
} else if (currentRow > totalRow) {
|
||||
currentRow = 1;
|
||||
} else if (currentRow < 1) {
|
||||
currentRow = totalRow;
|
||||
}
|
||||
|
||||
$nextNode = findNextNode(currentRow, currentColumn);
|
||||
|
||||
if ($nextNode) {
|
||||
removeActiveClass($selectedNode);
|
||||
addActiveClass($nextNode);
|
||||
}
|
||||
}
|
||||
|
||||
function enterKeyHandler() {
|
||||
if (!$selectedNode) {
|
||||
return;
|
||||
}
|
||||
|
||||
deferred.resolve(decodeURIComponent($selectedNode.find('button').attr('data-value')));
|
||||
$specialCharDialog.modal('hide');
|
||||
}
|
||||
|
||||
function keyDownEventHandler(event) {
|
||||
event.preventDefault();
|
||||
var keyCode = event.keyCode;
|
||||
if (keyCode === undefined || keyCode === null) {
|
||||
return;
|
||||
}
|
||||
// check arrowKeys match
|
||||
if (ARROW_KEYS.indexOf(keyCode) > -1) {
|
||||
if ($selectedNode === null) {
|
||||
addActiveClass($specialCharNode.eq(0));
|
||||
currentColumn = 1;
|
||||
currentRow = 1;
|
||||
return;
|
||||
}
|
||||
arrowKeyHandler(keyCode);
|
||||
} else if (keyCode === ENTER_KEY) {
|
||||
enterKeyHandler();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// remove class
|
||||
removeActiveClass($specialCharNode);
|
||||
|
||||
// find selected node
|
||||
if (text) {
|
||||
for (var i = 0; i < $specialCharNode.length; i++) {
|
||||
var $checkNode = $($specialCharNode[i]);
|
||||
if ($checkNode.text() === text) {
|
||||
addActiveClass($checkNode);
|
||||
currentRow = Math.ceil((i + 1) / COLUMN_LENGTH);
|
||||
currentColumn = (i + 1) % COLUMN_LENGTH;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ui.onDialogShown(self.$dialog, function() {
|
||||
$(document).on('keydown', keyDownEventHandler);
|
||||
|
||||
self.$dialog.find('button').tooltip();
|
||||
|
||||
$specialCharNode.on('click', function(event) {
|
||||
event.preventDefault();
|
||||
deferred.resolve(decodeURIComponent($(event.currentTarget).find('button').attr('data-value')));
|
||||
ui.hideDialog(self.$dialog);
|
||||
});
|
||||
});
|
||||
|
||||
ui.onDialogHidden(self.$dialog, function() {
|
||||
$specialCharNode.off('click');
|
||||
|
||||
self.$dialog.find('button').tooltip('destroy');
|
||||
|
||||
$(document).off('keydown', keyDownEventHandler);
|
||||
|
||||
if (deferred.state() === 'pending') {
|
||||
deferred.reject();
|
||||
}
|
||||
});
|
||||
|
||||
ui.showDialog(self.$dialog);
|
||||
});
|
||||
};
|
||||
}
|
||||
});
|
||||
}));
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
+3
File diff suppressed because one or more lines are too long
@@ -52,6 +52,7 @@ $rootDB->insert('member',[
|
||||
'oauth_type' => 'NONE',
|
||||
'id' => $username,
|
||||
'email' => null,
|
||||
'token_valid_until'=>'2999-01-01 00:00:00',
|
||||
'pw' => $finalPassword,
|
||||
'salt' => $userSalt,
|
||||
'grade'=> 6,
|
||||
|
||||
@@ -217,8 +217,8 @@ $result = Util::generateFileUsingSimpleTemplate(
|
||||
);
|
||||
|
||||
$result = Util::generateFileUsingSimpleTemplate(
|
||||
__dir__.'/templates/menu.orig.js',
|
||||
ROOT.'/d_shared/menu.js',
|
||||
__dir__.'/templates/menu.orig.json',
|
||||
ROOT.'/d_shared/menu.json',
|
||||
[],
|
||||
true
|
||||
);
|
||||
@@ -263,6 +263,14 @@ $result = Util::generateFileUsingSimpleTemplate(
|
||||
]
|
||||
);
|
||||
|
||||
Util::generateFileUsingSimpleTemplate(
|
||||
__dir__.'/templates/KakaoKey.orig.php',
|
||||
ROOT.'/d_setting/KakaoKey.php',
|
||||
[
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
if ($result !== true) {
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
|
||||
@@ -20,16 +20,18 @@ ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
CREATE TABLE `member` (
|
||||
`NO` INT(11) NOT NULL AUTO_INCREMENT,
|
||||
`oauth_id` BIGINT(20) NULL DEFAULT NULL,
|
||||
`oauth_type` ENUM('NONE','KAKAO') NOT NULL,
|
||||
`ID` VARCHAR(64) NOT NULL,
|
||||
`EMAIL` VARCHAR(64) NULL DEFAULT NULL,
|
||||
`oauth_type` ENUM('NONE','KAKAO') NOT NULL,
|
||||
`oauth_info` TEXT NOT NULL DEFAULT '{}',
|
||||
`token_valid_until` DATETIME NULL DEFAULT NULL,
|
||||
`PW` CHAR(128) NOT NULL,
|
||||
`salt` CHAR(16) NOT NULL,
|
||||
`third_use` INT(1) NOT NULL DEFAULT '0',
|
||||
`NAME` VARCHAR(64) NOT NULL,
|
||||
`PICTURE` VARCHAR(64) NULL DEFAULT 'default.jpg',
|
||||
`IMGSVR` INT(1) NULL DEFAULT '0',
|
||||
`acl` text NOT NULL DEFAULT '{}' COMMENT 'json',
|
||||
`acl` TEXT NOT NULL DEFAULT '{}' COMMENT 'json',
|
||||
`GRADE` INT(1) NULL DEFAULT '1',
|
||||
`REG_NUM` INT(3) NULL DEFAULT '0',
|
||||
`REG_DATE` DATETIME NOT NULL,
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
window.sammo_menu = [
|
||||
['/bbs/board', '삼모게시판', '_blank'],
|
||||
['/bbs/tip', '팁/강좌', '_blank'],
|
||||
['/bbs/news', '삼국 일보', '_blank'],
|
||||
['/bbs/history2', '개인 열전', '_blank'],
|
||||
['/bbs/history3', '국가 열전', '_blank'],
|
||||
['/bbs/patch', '패치 내역', '_blank']
|
||||
];
|
||||
@@ -0,0 +1,8 @@
|
||||
[
|
||||
["/bbs/board", "삼모게시판", "_blank"],
|
||||
["/bbs/tip", "팁/강좌", "_blank"],
|
||||
["/bbs/news", "삼국 일보", "_blank"],
|
||||
["/bbs/history2", "개인 열전", "_blank"],
|
||||
["/bbs/history3", "국가 열전", "_blank"],
|
||||
["/bbs/patch", "패치 내역", "_blank"]
|
||||
]
|
||||
-1660
@@ -1,1660 +0,0 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
include "lib.php";
|
||||
include "func.php";
|
||||
|
||||
$session = Session::requireGameLogin()->setReadOnly();
|
||||
$userID = Session::getUserID();
|
||||
|
||||
//로그인 검사
|
||||
|
||||
$isgen = Util::getReq('isgen');
|
||||
|
||||
$leader1 = Util::getReq('leader1', 'int', 0);
|
||||
$power1 = Util::getReq('power1', 'int', 0);
|
||||
$intel1 = Util::getReq('intel1', 'int', 0);
|
||||
$type1 = Util::getReq('type1', 'int', 0);
|
||||
$crew1 = Util::getReq('crew1', 'int', 0);
|
||||
$train1 = Util::getReq('train1', 'int', 0);
|
||||
$atmos1 = Util::getReq('atmos1', 'int', 0);
|
||||
$level1 = Util::getReq('level1', 'int', 0);
|
||||
$explevel1 = Util::getReq('explevel1', 'int', 0);
|
||||
$tech1 = Util::getReq('tech1', 'int', 0);
|
||||
|
||||
$dex10 = Util::getReq('dex10', 'int', 0);
|
||||
$dex110 = Util::getReq('dex110', 'int', 0);
|
||||
$dex120 = Util::getReq('dex120', 'int', 0);
|
||||
$dex130 = Util::getReq('dex130', 'int', 0);
|
||||
$dex140 = Util::getReq('dex140', 'int', 0);
|
||||
|
||||
$dx10 = array_fill(0, 20, '');
|
||||
$dx110 = array_fill(0, 20, '');
|
||||
$dx120 = array_fill(0, 20, '');
|
||||
$dx130 = array_fill(0, 20, '');
|
||||
$dx140 = array_fill(0, 20, '');
|
||||
|
||||
$leader2 = Util::getReq('leader2', 'int', 0);
|
||||
$power2 = Util::getReq('power2', 'int', 0);
|
||||
$intel2 = Util::getReq('intel2', 'int', 0);
|
||||
$type2 = Util::getReq('type2', 'int', 0);
|
||||
$crew2 = Util::getReq('crew2', 'int', 0);
|
||||
$train2 = Util::getReq('train2', 'int', 0);
|
||||
$atmos2 = Util::getReq('atmos2', 'int', 0);
|
||||
$level2 = Util::getReq('level2', 'int', 0);
|
||||
$explevel2 = Util::getReq('explevel2', 'int', 0);
|
||||
$tech2 = Util::getReq('tech2', 'int', 0);
|
||||
|
||||
$dex20 = Util::getReq('dex20', 'int', 0);
|
||||
$dex210 = Util::getReq('dex210', 'int', 0);
|
||||
$dex220 = Util::getReq('dex220', 'int', 0);
|
||||
$dex230 = Util::getReq('dex230', 'int', 0);
|
||||
$dex240 = Util::getReq('dex240', 'int', 0);
|
||||
|
||||
$dx20 = array_fill(0, 20, '');
|
||||
$dx210 = array_fill(0, 20, '');
|
||||
$dx220 = array_fill(0, 20, '');
|
||||
$dx230 = array_fill(0, 20, '');
|
||||
$dx240 = array_fill(0, 20, '');
|
||||
|
||||
$def = Util::getReq('def', 'int', 0);
|
||||
$wall = Util::getReq('wall', 'int', 0);
|
||||
$atmos3 = Util::getReq('atmos3', 'int', 0);
|
||||
$train3 = Util::getReq('train3', 'int', 0);
|
||||
|
||||
$sellevel1 = array_fill(0, 13, '');
|
||||
$sel1 = array_fill(0,44, '');
|
||||
$tch1 = array_fill(0,11, '');
|
||||
|
||||
$sellevel2 = array_fill(0, 13, '');
|
||||
$sel2 = array_fill(0,44, '');
|
||||
$tch2 = array_fill(0,11, '');
|
||||
|
||||
$dec = 0;
|
||||
$rice = 0;
|
||||
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
$connect=$db->get();
|
||||
increaseRefresh("시뮬", 2);
|
||||
|
||||
$query = "select no,tournament,con,turntime from general where owner='{$userID}'";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$me = MYDB_fetch_array($result);
|
||||
|
||||
$admin = $gameStor->getAll();
|
||||
|
||||
$con = checkLimit($me['con']);
|
||||
if($con >= 2) { printLimitMsg($me['turntime']); exit(); }
|
||||
|
||||
if($session->userGrade < 3) {
|
||||
echo "특별회원이 아닙니다.";
|
||||
exit();
|
||||
}
|
||||
|
||||
$mydeathnumSum = 0;
|
||||
$mykillnumSum = 0;
|
||||
$expSum = 0;
|
||||
$ricingSum = 0;
|
||||
$expSum2 = 0;
|
||||
$ricingSum2 = 0;
|
||||
|
||||
if($isgen == "장수평균" || $isgen == "성벽평균") {
|
||||
$simulCount = 1000;
|
||||
} else {
|
||||
$simulCount = 1;
|
||||
}
|
||||
|
||||
$general = [
|
||||
'no'=>1
|
||||
];
|
||||
$oppose = [
|
||||
'no'=>2
|
||||
];
|
||||
$city = [
|
||||
'gen1'=>0,
|
||||
'gen2'=>0,
|
||||
'gen3'=>0,
|
||||
];
|
||||
|
||||
if($isgen == "장수공격" || $isgen == "성벽공격" || $isgen == "장수평균" || $isgen == "성벽평균") {
|
||||
$msg2 = "";
|
||||
for($i=0; $i < $simulCount; $i++) {
|
||||
$general['leader'] = $leader1;
|
||||
$general['power'] = $power1;
|
||||
$general['intel'] = $intel1;
|
||||
$general['crewtype'] = $type1;
|
||||
$general['crew'] = $crew1;
|
||||
$general['train'] = $train1;
|
||||
$general['atmos'] = $atmos1;
|
||||
$general['level'] = $level1;
|
||||
$general['explevel'] = $explevel1;
|
||||
$general['dex0'] = $dex10;
|
||||
$general['dex10'] = $dex110;
|
||||
$general['dex20'] = $dex120;
|
||||
$general['dex30'] = $dex130;
|
||||
$general['dex40'] = $dex140;
|
||||
|
||||
$general['injury'] = 0;
|
||||
$general['horse'] = 0;
|
||||
$general['weap'] = 0;
|
||||
$general['book'] = 0;
|
||||
|
||||
$oppose['leader'] = $leader2;
|
||||
$oppose['power'] = $power2;
|
||||
$oppose['intel'] = $intel2;
|
||||
$oppose['crewtype'] = $type2;
|
||||
$oppose['crew'] = $crew2;
|
||||
$oppose['train'] = $train2;
|
||||
$oppose['atmos'] = $atmos2;
|
||||
$oppose['level'] = $level2;
|
||||
$oppose['explevel'] = $explevel2;
|
||||
$oppose['dex0'] = $dex20;
|
||||
$oppose['dex10'] = $dex210;
|
||||
$oppose['dex20'] = $dex220;
|
||||
$oppose['dex30'] = $dex230;
|
||||
$oppose['dex40'] = $dex240;
|
||||
|
||||
$oppose['injury'] = 0;
|
||||
$oppose['horse'] = 0;
|
||||
$oppose['weap'] = 0;
|
||||
$oppose['book'] = 0;
|
||||
|
||||
$city['def'] = $def;
|
||||
$city['wall'] = $wall;
|
||||
$city['agri'] = 0;
|
||||
$city['comm'] = 0;
|
||||
$city['secu'] = 0;
|
||||
|
||||
if($isgen == "장수공격" || $isgen == "장수평균") {
|
||||
$opposecount = 1;
|
||||
} else {
|
||||
$opposecount = 0;
|
||||
}
|
||||
|
||||
$warphase = getRate($admin, $general['crewtype'], "spd"); //병종간 페이즈 수 얻기
|
||||
|
||||
// 우선 스케일링
|
||||
$city['def'] *= 10;
|
||||
$city['wall'] *= 10;
|
||||
|
||||
$msg = "";
|
||||
$msg .= "<C>●</>1월:공격장수가 <R>공격</>합니다.<br>";
|
||||
|
||||
$exp = 0; //병사 소진 시킨 만큼
|
||||
$opexp = 0;
|
||||
$exp2 = 1; //능력경험치
|
||||
$phase = 0;
|
||||
while($phase < $warphase) {
|
||||
// 장수가 없어서 도시 공격
|
||||
if($opposecount == 0) {
|
||||
$josaRo = JosaUtil::pick(GameUnitConst::byID($general['crewtype'])->name, '로');
|
||||
$msg .= "<C>●</>".GameUnitConst::byID($general['crewtype'])->name."{$josaRo} 성을 <M>공격</>합니다.<br>";
|
||||
|
||||
$mykillnum = 0; $mydeathnum = 0;
|
||||
while($phase < $warphase) {
|
||||
$phase++;
|
||||
$myAtt = getAtt($general, $tech1, 0);
|
||||
$myDef = getDef($general, $tech1);
|
||||
$cityAtt = getCityAtt($city);
|
||||
$cityDef = getCityDef($city);
|
||||
|
||||
// 감소할 병사 수
|
||||
$cityCrew = GameConst::$armperphase + $myAtt - $cityDef;
|
||||
$myCrew = GameConst::$armperphase + $cityAtt - $myDef;
|
||||
$cityweight = $myAtt - $cityDef;
|
||||
$myweight = $cityAtt - $myDef;
|
||||
|
||||
//훈련 사기따라
|
||||
$myCrew = getCrew($myCrew, $atmos3, $general['train']);
|
||||
$cityCrew = getCrew($cityCrew, $general['atmos'], $train3);
|
||||
//숙련도 따라
|
||||
$genDexAtt = getGenDex($general, $general['crewtype']);
|
||||
$genDexDef = getGenDex($general, 40);
|
||||
$cityCrew *= getDexLog($genDexAtt, ($train3-60)*7200);
|
||||
$myCrew *= getDexLog(($atmos3-60)*7200, $genDexDef);
|
||||
|
||||
$avoid = 1;
|
||||
// 병종간 특성
|
||||
if(intdiv($general['crewtype'], 10) == 3) { // 귀병
|
||||
$int = $general['intel'] + getBookEff($general['book']);
|
||||
if($general['crewtype'] == 30) {
|
||||
$ratio2 = $int * 5; // 0~500 즉 50%
|
||||
} elseif($general['crewtype'] == 31) {
|
||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
||||
} elseif($general['crewtype'] == 32) {
|
||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
||||
} elseif($general['crewtype'] == 33) {
|
||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
||||
} elseif($general['crewtype'] == 34) {
|
||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
||||
} elseif($general['crewtype'] == 35) {
|
||||
$ratio2 = $int * 8; // 0~800 즉 80%
|
||||
} elseif($general['crewtype'] == 36) {
|
||||
$ratio2 = $int * 8; // 0~800 즉 80%
|
||||
} elseif($general['crewtype'] == 37) {
|
||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
||||
} elseif($general['crewtype'] == 38) {
|
||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
||||
}
|
||||
$ratio = rand() % 1000; // 0~999
|
||||
if($ratio <= $ratio2) {
|
||||
$ratio = rand() % 100; // 0~99
|
||||
if($ratio >= 30) {
|
||||
$type = rand() % 3;
|
||||
switch($type) {
|
||||
case 0:
|
||||
$msg .= "<C>●</><D>급습</>을 <C>성공</>했다!<br>";
|
||||
$cityCrew *= 1.2;
|
||||
break;
|
||||
case 1:
|
||||
$msg .= "<C>●</><D>위보</>를 <C>성공</>했다!<br>";
|
||||
$cityCrew *= 1.4;
|
||||
break;
|
||||
case 2:
|
||||
$msg .= "<C>●</><D>혼란</>을 <C>성공</>했다!<br>";
|
||||
$cityCrew *= 1.6;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
$type = rand() % 3;
|
||||
switch($type) {
|
||||
case 0:
|
||||
$msg .= "<C>●</><D>급습</>을 <R>실패</>했다!<br>";
|
||||
$cityCrew /= 1.2;
|
||||
$myCrew *= 1.2;
|
||||
break;
|
||||
case 1:
|
||||
$msg .= "<C>●</><D>위보</>를 <R>실패</>했다!<br>";
|
||||
$cityCrew /= 1.4;
|
||||
$myCrew *= 1.4;
|
||||
break;
|
||||
case 2:
|
||||
$msg .= "<C>●</><D>혼란</>을 <R>실패</>했다!<br>";
|
||||
$cityCrew /= 1.6;
|
||||
$myCrew *= 1.6;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} elseif($general['crewtype'] == 40) { // 정란
|
||||
$cityCrew = $cityCrew * 1.5;
|
||||
} elseif($general['crewtype'] == 41) { // 충차
|
||||
$cityCrew = $cityCrew * 2.0;
|
||||
} elseif($general['crewtype'] == 42) { // 벽력거
|
||||
$cityCrew = $cityCrew * 1.5;
|
||||
}
|
||||
//군주, 참모, 장군 공격 보정 5%
|
||||
if($general['level'] == 12 || $general['level'] == 11 || $general['level'] == 10 || $general['level'] == 8 || $general['level'] == 6) {
|
||||
$cityCrew = $cityCrew * 1.05;
|
||||
}
|
||||
//레벨 보정
|
||||
$cityCrew = $cityCrew * (100 + $general['explevel']/6)/100;
|
||||
|
||||
//크리
|
||||
$rd = rand() % 100; // 0 ~ 99
|
||||
$ratio = CriticalRatio3($general['leader'], $general['power'], $general['intel']);
|
||||
if($ratio >= $rd && $avoid == 1) {
|
||||
$msg .= "<C>●</><C>필살</>공격!</><br>";
|
||||
$cityCrew = CriticalScore2($cityCrew);
|
||||
$avoid = 0;
|
||||
}
|
||||
//회피
|
||||
$ratio = rand() % 100; // 0 ~ 99
|
||||
$ratio2 = getRate($admin, $general['crewtype'], "avd"); //회피율
|
||||
if($ratio < $ratio2 && $avoid == 1) {
|
||||
$msg .= "<C>●</><C>회피</>했다!</><br>";
|
||||
$myCrew /= 10; // 10%만 소모
|
||||
$avoid = 0;
|
||||
}
|
||||
|
||||
//랜타추가
|
||||
$cityCrew *= (rand() % 21 + 90)/100; // 90~110%
|
||||
$myCrew *= (rand() % 21 + 90)/100; // 90~110%
|
||||
|
||||
$general['crew'] -= Util::round($myCrew);
|
||||
$city['def'] -= Util::round($cityCrew);
|
||||
$city['wall'] -= Util::round($cityCrew);
|
||||
|
||||
$tempMyCrew = $myCrew; $tempCityCrew = $cityCrew;
|
||||
$tempGeneralCrew = $general['crew']; $tempCityDef = $city['def'];
|
||||
|
||||
if($city['wall'] <= 0) { $city['wall'] = 0; }
|
||||
|
||||
if($city['def'] < 0) {
|
||||
$offset = Util::round($tempCityDef*$tempMyCrew/$tempCityCrew);
|
||||
$myCrew += $offset;
|
||||
$general['crew'] -= $offset;
|
||||
$cityCrew += $tempCityDef;
|
||||
$city['def'] = 0;
|
||||
}
|
||||
if($general['crew'] < 0) {
|
||||
$offset = Util::round($tempGeneralCrew*$tempCityCrew/$tempMyCrew);
|
||||
$cityCrew += $offset;
|
||||
$city['def'] -= $offset;
|
||||
$myCrew += $tempGeneralCrew;
|
||||
$general['crew'] = 0;
|
||||
}
|
||||
|
||||
$exp += $cityCrew;
|
||||
$opexp += $myCrew;
|
||||
$general['crew'] = Util::round($general['crew']);
|
||||
$cityCrew = Util::round($cityCrew);
|
||||
$myCrew = Util::round($myCrew);
|
||||
$myAtt = round($myAtt, 2);
|
||||
$myDef = round($myDef, 2);
|
||||
$cityAtt = round($cityAtt, 2);
|
||||
$cityDef = round($cityDef, 2);
|
||||
$msg .= "<C>●</> $phase : <Y1>【공격장수】</> <C>{$general['crew']} (-$myCrew)</> VS <C>{$city['def']} (-$cityCrew)</> <Y1>【성벽】</><br>";
|
||||
|
||||
$mykillnum += $cityCrew; $mydeathnum += $myCrew;
|
||||
|
||||
if($city['def'] <= 0) { break; }
|
||||
if($general['crew'] <= 0) { break; }
|
||||
}
|
||||
|
||||
// 도시쌀 소모 계산
|
||||
$opexp = Util::round($opexp / 50);
|
||||
$rice = Util::round($opexp * 4 * getCrewtypeRice(0, 0) * ($train3/100 - 0.2));
|
||||
|
||||
//원래대로 스케일링
|
||||
$city['def'] = Util::round($city['def'] / 10);
|
||||
$city['wall'] = Util::round($city['wall'] / 10);
|
||||
//내정 감소
|
||||
$dec = Util::round($cityCrew / 10);
|
||||
$city['agri'] -= $dec;
|
||||
$city['comm'] -= $dec;
|
||||
$city['secu'] -= $dec;
|
||||
if($city['agri'] < 0) { $city['agri'] = 0; }
|
||||
if($city['comm'] < 0) { $city['comm'] = 0; }
|
||||
if($city['secu'] < 0) { $city['secu'] = 0; }
|
||||
$msg .= "<S>★</>병사수 변화 : <C>-$mydeathnum</> vs <C>-$mykillnum</><br>";
|
||||
$msg .= "<R>★</>【성벽】내정 감소량 : $dec 【성벽】쌀 소모 : $rice<br>";
|
||||
|
||||
// $msg2 .= "<S>★</>병사수 변화 : <C>-$mydeathnum</> vs <C>-$mykillnum</> ";
|
||||
// $msg2 .= "<R>★</>【성벽】내정 감소량 : $dec 【성벽】쌀 소모 : $rice<br>";
|
||||
|
||||
if($city['def'] == 0 || $general['crew'] == 0) {
|
||||
break;
|
||||
}
|
||||
// 장수 대결
|
||||
} else {
|
||||
$josaUl = JosaUtil::pick(GameUnitConst::byID($oppose['crewtype'])->name, '을');
|
||||
$josaRo = JosaUtil::pick(GameUnitConst::byID($general['crewtype'])->name, '로');
|
||||
$msg .= "<C>●</>".GameUnitConst::byID($general['crewtype'])->name."{$josaRo} <Y>수비장수</>의 ".GameUnitConst::byID($oppose['crewtype'])->name."{$josaUl} 공격합니다.<br>";
|
||||
|
||||
$mykillnum = 0; $mydeathnum = 0;
|
||||
while($phase < $warphase) {
|
||||
$phase++;
|
||||
|
||||
$myAtt = getAtt($general, $tech1, 0);
|
||||
$myDef = getDef($general, $tech1);
|
||||
$opAtt = getAtt($oppose, $tech2, 0);
|
||||
$opDef = getDef($oppose, $tech2);
|
||||
// 감소할 병사 수
|
||||
$myCrew = GameConst::$armperphase + $opAtt - $myDef;
|
||||
$opCrew = GameConst::$armperphase + $myAtt - $opDef;
|
||||
//훈련 사기따라
|
||||
$myCrew = getCrew($myCrew, $oppose['atmos'], $general['train']);
|
||||
$opCrew = getCrew($opCrew, $general['atmos'], $oppose['train']);
|
||||
//숙련도 따라
|
||||
$genDexAtt = getGenDex($general, $general['crewtype']);
|
||||
$genDexDef = getGenDex($general, $oppose['crewtype']);
|
||||
$oppDexAtt = getGenDex($oppose, $oppose['crewtype']);
|
||||
$oppDexDef = getGenDex($oppose, $general['crewtype']);
|
||||
$opCrew *= getDexLog($genDexAtt, $oppDexDef);
|
||||
$myCrew *= getDexLog($oppDexAtt, $genDexDef);
|
||||
|
||||
$myAvoid = 1;
|
||||
$opAvoid = 1;
|
||||
// 병종간 특성
|
||||
if(intdiv($general['crewtype'], 10) == 3) { // 귀병
|
||||
$int = $general['intel'] + getBookEff($general['book']);
|
||||
if($general['crewtype'] == 30) {
|
||||
$ratio2 = $int * 5; // 0~500 즉 50%
|
||||
} elseif($general['crewtype'] == 31) {
|
||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
||||
} elseif($general['crewtype'] == 32) {
|
||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
||||
} elseif($general['crewtype'] == 33) {
|
||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
||||
} elseif($general['crewtype'] == 34) {
|
||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
||||
} elseif($general['crewtype'] == 35) {
|
||||
$ratio2 = $int * 8; // 0~800 즉 80%
|
||||
} elseif($general['crewtype'] == 36) {
|
||||
$ratio2 = $int * 8; // 0~800 즉 80%
|
||||
} elseif($general['crewtype'] == 37) {
|
||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
||||
} elseif($general['crewtype'] == 38) {
|
||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
||||
}
|
||||
$ratio = rand() % 1000; // 0~999
|
||||
if($ratio <= $ratio2) {
|
||||
$ratio = rand() % 100;
|
||||
if($ratio >= 30) {
|
||||
$type = rand() % 5; // 0~4
|
||||
switch($type) {
|
||||
case 0:
|
||||
$msg .= "<C>●</><D>위보</>를 <C>성공</>했다!<br>";
|
||||
$opCrew *= 1.2;
|
||||
break;
|
||||
case 1:
|
||||
$msg .= "<C>●</><D>매복</>을 <C>성공</>했다!<br>";
|
||||
$opCrew *= 1.4;
|
||||
break;
|
||||
case 2:
|
||||
$msg .= "<C>●</><D>반목</>을 <C>성공</>했다!<br>";
|
||||
$opCrew *= 1.6;
|
||||
break;
|
||||
case 3:
|
||||
$msg .= "<C>●</><D>화계</>를 <C>성공</>했다!<br>";
|
||||
$opCrew *= 1.8;
|
||||
break;
|
||||
case 4:
|
||||
$msg .= "<C>●</><D>혼란</>을 <C>성공</>했다!<br>";
|
||||
$opCrew *= 2.0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
$type = rand() % 5; // 0~4
|
||||
switch($type) {
|
||||
case 0:
|
||||
$msg .= "<C>●</><D>위보</>를 <R>실패</>했다!<br>";
|
||||
$opCrew /= 1.1;
|
||||
$myCrew *= 1.1;
|
||||
break;
|
||||
case 1:
|
||||
$msg .= "<C>●</><D>매복</>을 <R>실패</>했다!<br>";
|
||||
$opCrew /= 1.2;
|
||||
$myCrew *= 1.2;
|
||||
break;
|
||||
case 2:
|
||||
$msg .= "<C>●</><D>반목</>을 <R>실패</>했다!<br>";
|
||||
$opCrew /= 1.3;
|
||||
$myCrew *= 1.3;
|
||||
break;
|
||||
case 3:
|
||||
$msg .= "<C>●</><D>화계</>를 <R>실패</>했다!<br>";
|
||||
$opCrew /= 1.4;
|
||||
$myCrew *= 1.4;
|
||||
break;
|
||||
case 4:
|
||||
$msg .= "<C>●</><D>혼란</>을 <R>실패</>했다!<br>";
|
||||
$opCrew /= 1.5;
|
||||
$myCrew *= 1.5;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 상대 장수 병종간 특성
|
||||
if(intdiv($oppose['crewtype'], 10) == 3) { // 귀병
|
||||
$int = $oppose['intel'] + getBookEff($oppose['book']);
|
||||
if($oppose['crewtype'] == 30) {
|
||||
$ratio2 = $int * 5; // 0~500 즉 50%
|
||||
} elseif($oppose['crewtype'] == 31) {
|
||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
||||
} elseif($oppose['crewtype'] == 32) {
|
||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
||||
} elseif($oppose['crewtype'] == 33) {
|
||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
||||
} elseif($oppose['crewtype'] == 34) {
|
||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
||||
} elseif($oppose['crewtype'] == 35) {
|
||||
$ratio2 = $int * 8; // 0~800 즉 80%
|
||||
} elseif($oppose['crewtype'] == 36) {
|
||||
$ratio2 = $int * 8; // 0~800 즉 80%
|
||||
} elseif($oppose['crewtype'] == 37) {
|
||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
||||
} elseif($oppose['crewtype'] == 38) {
|
||||
$ratio2 = $int * 6; // 0~600 즉 60%
|
||||
}
|
||||
$ratio = rand() % 1000; // 0~999
|
||||
if($ratio <= $ratio2) {
|
||||
$ratio = rand() % 100;
|
||||
if($ratio >= 30) {
|
||||
$type = rand() % 5; // 0~4
|
||||
switch($type) {
|
||||
case 0:
|
||||
$msg .= "<C>●</><D>위보</>에 당했다!<br>";
|
||||
$myCrew *= 1.2;
|
||||
break;
|
||||
case 1:
|
||||
$msg .= "<C>●</><D>매복</>에 당했다!<br>";
|
||||
$myCrew *= 1.4;
|
||||
break;
|
||||
case 2:
|
||||
$msg .= "<C>●</><D>반목</>에 당했다!<br>";
|
||||
$myCrew *= 1.6;
|
||||
break;
|
||||
case 3:
|
||||
$msg .= "<C>●</><D>화계</>에 당했다!<br>";
|
||||
$myCrew *= 1.8;
|
||||
break;
|
||||
case 4:
|
||||
$msg .= "<C>●</><D>혼란</>에 당했다!<br>";
|
||||
$myCrew *= 2.0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
$type = rand() % 5; // 0~4
|
||||
switch($type) {
|
||||
case 0:
|
||||
$msg .= "<C>●</><D>위보</>를 간파했다!<br>";
|
||||
$myCrew /= 1.1;
|
||||
$opCrew *= 1.1;
|
||||
break;
|
||||
case 1:
|
||||
$msg .= "<C>●</><D>매복</>을 간파했다!<br>";
|
||||
$myCrew /= 1.2;
|
||||
$opCrew *= 1.2;
|
||||
break;
|
||||
case 2:
|
||||
$msg .= "<C>●</><D>반목</>을 간파했다!<br>";
|
||||
$myCrew /= 1.3;
|
||||
$opCrew *= 1.3;
|
||||
break;
|
||||
case 3:
|
||||
$msg .= "<C>●</><D>화계</>를 간파했다!<br>";
|
||||
$myCrew /= 1.4;
|
||||
$opCrew *= 1.4;
|
||||
break;
|
||||
case 4:
|
||||
$msg .= "<C>●</><D>혼란</>을 간파했다!<br>";
|
||||
$myCrew /= 1.5;
|
||||
$opCrew *= 1.5;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($oppose['crewtype'] == 43) { // 목우
|
||||
$r = 0;
|
||||
$r += $oppose['atmos'];
|
||||
$r += $oppose['train'];
|
||||
$ratio = rand() % 400; // 최대 50% 저지
|
||||
if($ratio < $r && $opAvoid == 1) {
|
||||
$msg .= "<C>●</><R>저지</>당했다!</><br>";
|
||||
$opAvoid = 0;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// my 입장 상성
|
||||
// 보병계열 > 궁병계열
|
||||
if(intdiv($general['crewtype'], 10) == 0 && intdiv($oppose['crewtype'], 10) == 1) {
|
||||
$myCrew *= 0.8;
|
||||
$opCrew *= 1.2;
|
||||
}
|
||||
// 궁병계열 > 기병계열
|
||||
if(intdiv($general['crewtype'], 10) == 1 && intdiv($oppose['crewtype'], 10) == 2) {
|
||||
$myCrew *= 0.8;
|
||||
$opCrew *= 1.2;
|
||||
}
|
||||
// 기병계열 > 보병계열
|
||||
if(intdiv($general['crewtype'], 10) == 2 && intdiv($oppose['crewtype'], 10) == 0) {
|
||||
$myCrew *= 0.8;
|
||||
$opCrew *= 1.2;
|
||||
}
|
||||
// 차병계열
|
||||
if(intdiv($general['crewtype'], 10) == 4) {
|
||||
$myCrew *= 1.2;
|
||||
$opCrew *= 0.8;
|
||||
}
|
||||
|
||||
// op 입장 상성
|
||||
// 보병계열 > 궁병계열
|
||||
if(intdiv($oppose['crewtype'], 10) == 0 && intdiv($general['crewtype'], 10) == 1) {
|
||||
$opCrew *= 0.8;
|
||||
$myCrew *= 1.2;
|
||||
}
|
||||
// 궁병계열 > 기병계열
|
||||
if(intdiv($oppose['crewtype'], 10) == 1 && intdiv($general['crewtype'], 10) == 2) {
|
||||
$opCrew *= 0.8;
|
||||
$myCrew *= 1.2;
|
||||
}
|
||||
// 기병계열 > 보병계열
|
||||
if(intdiv($oppose['crewtype'], 10) == 2 && intdiv($general['crewtype'], 10) == 0) {
|
||||
$opCrew *= 0.8;
|
||||
$myCrew *= 1.2;
|
||||
}
|
||||
// 차병계열
|
||||
if(intdiv($oppose['crewtype'], 10) == 4) {
|
||||
$opCrew *= 1.2;
|
||||
$myCrew *= 0.8;
|
||||
}
|
||||
|
||||
//군주, 참모, 장군 공격 보정 5%
|
||||
if($general['level'] == 12 || $general['level'] == 11 || $general['level'] == 10 || $general['level'] == 8 || $general['level'] == 6) {
|
||||
$opCrew = $opCrew * 1.05;
|
||||
}
|
||||
//상대장수 관직 보정
|
||||
//군주, 참모, 모사 방어 보정 5%
|
||||
if($oppose['level'] == 12 || $oppose['level'] == 11 || $oppose['level'] == 9 || $oppose['level'] == 7 || $oppose['level'] == 5) {
|
||||
$opCrew = $opCrew * 0.95;
|
||||
} elseif($oppose['level'] == 4 && $oppose['no'] == $city['gen1']) { // 태수 보정
|
||||
$opCrew = $opCrew * 0.95;
|
||||
} elseif($oppose['level'] == 3 && $oppose['no'] == $city['gen2']) { // 군사 보정
|
||||
$opCrew = $opCrew * 0.95;
|
||||
} elseif($oppose['level'] == 2 && $oppose['no'] == $city['gen3']) { // 시중 보정
|
||||
$opCrew = $opCrew * 0.95;
|
||||
}
|
||||
|
||||
//레벨 보정
|
||||
$myCrew = $myCrew * ((100 - $general['explevel']/3)/100);
|
||||
$opCrew = $opCrew / ((100 - $general['explevel']/3)/100);
|
||||
$myCrew = $myCrew / ((100 - $oppose['explevel']/3)/100);
|
||||
$opCrew = $opCrew * ((100 - $oppose['explevel']/3)/100);
|
||||
|
||||
//크리
|
||||
$rd = rand() % 100; // 0 ~ 99
|
||||
$ratio = CriticalRatio3($general['leader'], $general['power'], $general['intel']);
|
||||
if($ratio >= $rd && $myAvoid == 1) {
|
||||
$msg .= "<C>●</><C>필살</>공격!</><br>";
|
||||
$opCrew = CriticalScore2($opCrew);
|
||||
$myAvoid = 0;
|
||||
}
|
||||
//크리
|
||||
$rd = rand() % 100; // 0 ~ 99
|
||||
$ratio = CriticalRatio3($oppose['leader'], $oppose['power'], $oppose['intel']);
|
||||
if($ratio >= $rd && $opAvoid == 1) {
|
||||
$msg .= "<C>●</>상대의 <R>필살</>공격!</><br>";
|
||||
$myCrew = CriticalScore2($myCrew);
|
||||
$opAvoid = 0;
|
||||
}
|
||||
//회피
|
||||
$ratio = rand() % 100; // 0 ~ 99
|
||||
$ratio2 = getRate($admin, $general['crewtype'], "avd"); //회피율
|
||||
if($ratio < $ratio2 && $myAvoid == 1) {
|
||||
$msg .= "<C>●</><C>회피</>했다!</><br>";
|
||||
$myCrew /= 10; // 10%만 소모
|
||||
$myAvoid = 0;
|
||||
}
|
||||
//회피
|
||||
$ratio = rand() % 100; // 0 ~ 99
|
||||
$ratio2 = getRate($admin, $oppose['crewtype'], "avd"); //회피율
|
||||
if($ratio < $ratio2 && $opAvoid == 1) {
|
||||
$msg .= "<C>●</>상대가 <R>회피</>했다!</><br>";
|
||||
$opCrew /= 10; // 10%만 소모
|
||||
$opAvoid = 0;
|
||||
}
|
||||
|
||||
//랜타추가
|
||||
$opCrew *= (rand() % 21 + 90)/100; // 90~110%
|
||||
$myCrew *= (rand() % 21 + 90)/100; // 90~110%
|
||||
|
||||
$general['crew'] -= Util::round($myCrew);
|
||||
$oppose['crew'] -= Util::round($opCrew);
|
||||
$tempMyCrew = $myCrew; $tempOpCrew = $opCrew;
|
||||
$tempGeneralCrew = $general['crew']; $tempOpposeCrew = $oppose['crew'];
|
||||
if($general['crew'] <= 0 && $oppose['crew'] <= 0) {
|
||||
$r1 = $tempGeneralCrew / $tempMyCrew;
|
||||
$r2 = $tempOpposeCrew / $tempOpCrew;
|
||||
|
||||
if($r1 > $r2) {
|
||||
$offset = Util::round($tempOpposeCrew*$tempMyCrew/$tempOpCrew);
|
||||
$myCrew += $offset;
|
||||
$general['crew'] -= $offset;
|
||||
$opCrew += $tempOpposeCrew;
|
||||
$oppose['crew'] = 0;
|
||||
} else {
|
||||
$offset = Util::round($tempGeneralCrew*$tempOpCrew/$tempMyCrew);
|
||||
$opCrew += $offset;
|
||||
$oppose['crew'] -= $offset;
|
||||
$myCrew += $tempGeneralCrew;
|
||||
$general['crew'] = 0;
|
||||
}
|
||||
} elseif($general['crew'] * $oppose['crew'] <= 0) {
|
||||
if($oppose['crew'] < 0) {
|
||||
$offset = Util::round($tempOpposeCrew*$tempMyCrew/$tempOpCrew);
|
||||
$myCrew += $offset;
|
||||
$general['crew'] -= $offset;
|
||||
$opCrew += $tempOpposeCrew;
|
||||
$oppose['crew'] = 0;
|
||||
}
|
||||
if($general['crew'] < 0) {
|
||||
$offset = Util::round($tempGeneralCrew*$tempOpCrew/$tempMyCrew);
|
||||
$opCrew += $offset;
|
||||
$oppose['crew'] -= $offset;
|
||||
$myCrew += $tempGeneralCrew;
|
||||
$general['crew'] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
$exp += $opCrew;
|
||||
$opexp += $myCrew;
|
||||
$general['crew'] = Util::round($general['crew']);
|
||||
$oppose['crew'] = Util::round($oppose['crew']);
|
||||
$myCrew = Util::round($myCrew);
|
||||
$opCrew = Util::round($opCrew);
|
||||
$myAtt = round($myAtt, 2);
|
||||
$myDef = round($myDef, 2);
|
||||
$opAtt = round($opAtt, 2);
|
||||
$opDef = round($opDef, 2);
|
||||
$msg .= "<C>●</> $phase : <Y1>【공격장수】</> <C>{$general['crew']} (-$myCrew)</> VS <C>{$oppose['crew']} (-$opCrew)</> <Y1>【수비장수】</><br>";
|
||||
|
||||
$mykillnum += $opCrew; $mydeathnum += $myCrew;
|
||||
|
||||
if($oppose['crew'] <= 0) { break; }
|
||||
if($general['crew'] <= 0) { break; }
|
||||
}
|
||||
|
||||
$msg .= "<S>★</>병사수 변화 : <C>-$mydeathnum</> vs <C>-$mykillnum</><br>";
|
||||
// $msg2 .= "<S>★</>병사수 변화 : <C>-$mydeathnum</> vs <C>-$mykillnum</> ";
|
||||
}
|
||||
}
|
||||
|
||||
// 공헌, 명성 상승
|
||||
$exp = Util::round($exp / 50);
|
||||
$ricing = ($exp * 5 * getCrewtypeRice($general['crewtype'], $tech1));
|
||||
$msg .= "★ 【공격장수】공헌 상승 : $exp 쌀 소비 : {$exp}x5x".getCrewtypeRice($general['crewtype'], $tech1)." = $ricing<br>";
|
||||
// $msg2 .= "★ 【공격장수】공헌 상승 : $exp 쌀 소비 : {$exp}x5x".getCrewtypeRice($general['crewtype'], $tech1)." = $ricing<br>";
|
||||
|
||||
$msg = ConvertLog($msg, 1);
|
||||
|
||||
$mydeathnumSum += $mydeathnum;
|
||||
$mykillnumSum += $mykillnum;
|
||||
$expSum += $exp;
|
||||
$ricingSum += $ricing;
|
||||
$expSum2 += $dec;
|
||||
$ricingSum2 += $rice;
|
||||
}
|
||||
|
||||
$mydeathnumSum /= $simulCount;
|
||||
$mykillnumSum /= $simulCount;
|
||||
$expSum /= $simulCount;
|
||||
$ricingSum /= $simulCount;
|
||||
$expSum2 /= $simulCount;
|
||||
$ricingSum2 /= $simulCount;
|
||||
if($isgen == "성벽평균") {
|
||||
$msg2 .= "{$simulCount}회 평균<br>";
|
||||
$msg2 .= "<S>★</>병사수 변화 : <C>-$mydeathnumSum</> vs <C>-$mykillnumSum</> ";
|
||||
$msg2 .= "<R>★</>【성벽】내정 감소량 : $expSum2 【성벽】쌀 소모 : $ricingSum2<br>";
|
||||
$msg2 .= "★ 【공격장수】공헌 상승 : $expSum 쌀 소비 : {$expSum}x5x".getCrewtypeRice($general['crewtype'], $tech1)." = $ricingSum<br>";
|
||||
} elseif($isgen == "장수평균") {
|
||||
$msg2 .= "{$simulCount}회 평균<br>";
|
||||
$msg2 .= "<S>★</>병사수 변화 : <C>-$mydeathnumSum</> vs <C>-$mykillnumSum</> ";
|
||||
$msg2 .= "★ 【공격장수】공헌 상승 : $expSum 쌀 소비 : {$expSum}x5x".getCrewtypeRice($general['crewtype'], $tech1)." = $ricingSum<br>";
|
||||
}
|
||||
|
||||
$msg2 = ConvertLog($msg2, 1);
|
||||
} else {
|
||||
$leader1 = 70;
|
||||
$power1 = 70;
|
||||
$intel1 = 10;
|
||||
$type1 = 0;
|
||||
$crew1 = 7000;
|
||||
$train1 = 100;
|
||||
$atmos1 = 100;
|
||||
$level1 = 1;
|
||||
$explevel1 = 20;
|
||||
|
||||
$leader2 = 70;
|
||||
$power2 = 70;
|
||||
$intel2 = 10;
|
||||
$type2 = 0;
|
||||
$crew2 = 7000;
|
||||
$train2 = 100;
|
||||
$atmos2 = 100;
|
||||
$level2 = 1;
|
||||
$explevel2 = 20;
|
||||
|
||||
$def = 7000;
|
||||
$wall = 7000;
|
||||
$train3 = $admin['city_rate'];
|
||||
$atmos3 = $admin['city_rate'];
|
||||
}
|
||||
|
||||
switch($level1) {
|
||||
case 12: $sellevel1[12] = "selected"; break;
|
||||
case 11: $sellevel1[11] = "selected"; break;
|
||||
case 10: $sellevel1[10] = "selected"; break;
|
||||
case 9: $sellevel1[9] = "selected"; break;
|
||||
case 8: $sellevel1[8] = "selected"; break;
|
||||
case 7: $sellevel1[7] = "selected"; break;
|
||||
case 6: $sellevel1[6] = "selected"; break;
|
||||
case 5: $sellevel1[5] = "selected"; break;
|
||||
case 1: $sellevel1[1] = "selected"; break;
|
||||
}
|
||||
switch($level2) {
|
||||
case 12: $sellevel2[12] = "selected"; break;
|
||||
case 11: $sellevel2[11] = "selected"; break;
|
||||
case 10: $sellevel2[10] = "selected"; break;
|
||||
case 9: $sellevel2[9] = "selected"; break;
|
||||
case 8: $sellevel2[8] = "selected"; break;
|
||||
case 7: $sellevel2[7] = "selected"; break;
|
||||
case 6: $sellevel2[6] = "selected"; break;
|
||||
case 5: $sellevel2[5] = "selected"; break;
|
||||
case 1: $sellevel2[1] = "selected"; break;
|
||||
}
|
||||
|
||||
switch($type1) {
|
||||
case 0: $sel1[0] = "selected"; break;
|
||||
case 1: $sel1[1] = "selected"; break;
|
||||
case 2: $sel1[2] = "selected"; break;
|
||||
case 3: $sel1[3] = "selected"; break;
|
||||
case 4: $sel1[4] = "selected"; break;
|
||||
case 5: $sel1[5] = "selected"; break;
|
||||
case 10: $sel1[10] = "selected"; break;
|
||||
case 11: $sel1[11] = "selected"; break;
|
||||
case 12: $sel1[12] = "selected"; break;
|
||||
case 13: $sel1[13] = "selected"; break;
|
||||
case 14: $sel1[14] = "selected"; break;
|
||||
case 20: $sel1[20] = "selected"; break;
|
||||
case 21: $sel1[21] = "selected"; break;
|
||||
case 22: $sel1[22] = "selected"; break;
|
||||
case 23: $sel1[23] = "selected"; break;
|
||||
case 24: $sel1[24] = "selected"; break;
|
||||
case 25: $sel1[25] = "selected"; break;
|
||||
case 26: $sel1[26] = "selected"; break;
|
||||
case 27: $sel1[27] = "selected"; break;
|
||||
case 30: $sel1[30] = "selected"; break;
|
||||
case 31: $sel1[31] = "selected"; break;
|
||||
case 32: $sel1[32] = "selected"; break;
|
||||
case 33: $sel1[33] = "selected"; break;
|
||||
case 34: $sel1[34] = "selected"; break;
|
||||
case 35: $sel1[35] = "selected"; break;
|
||||
case 36: $sel1[36] = "selected"; break;
|
||||
case 37: $sel1[37] = "selected"; break;
|
||||
case 38: $sel1[38] = "selected"; break;
|
||||
case 40: $sel1[40] = "selected"; break;
|
||||
case 41: $sel1[41] = "selected"; break;
|
||||
case 42: $sel1[42] = "selected"; break;
|
||||
case 43: $sel1[43] = "selected"; break;
|
||||
}
|
||||
switch($type2) {
|
||||
case 0: $sel2[0] = "selected"; break;
|
||||
case 1: $sel2[1] = "selected"; break;
|
||||
case 2: $sel2[2] = "selected"; break;
|
||||
case 3: $sel2[3] = "selected"; break;
|
||||
case 4: $sel2[4] = "selected"; break;
|
||||
case 5: $sel2[5] = "selected"; break;
|
||||
case 10: $sel2[10] = "selected"; break;
|
||||
case 11: $sel2[11] = "selected"; break;
|
||||
case 12: $sel2[12] = "selected"; break;
|
||||
case 13: $sel2[13] = "selected"; break;
|
||||
case 14: $sel2[14] = "selected"; break;
|
||||
case 20: $sel2[20] = "selected"; break;
|
||||
case 21: $sel2[21] = "selected"; break;
|
||||
case 22: $sel2[22] = "selected"; break;
|
||||
case 23: $sel2[23] = "selected"; break;
|
||||
case 24: $sel2[24] = "selected"; break;
|
||||
case 25: $sel2[25] = "selected"; break;
|
||||
case 26: $sel2[26] = "selected"; break;
|
||||
case 27: $sel2[27] = "selected"; break;
|
||||
case 30: $sel2[30] = "selected"; break;
|
||||
case 31: $sel2[31] = "selected"; break;
|
||||
case 32: $sel2[32] = "selected"; break;
|
||||
case 33: $sel2[33] = "selected"; break;
|
||||
case 34: $sel2[34] = "selected"; break;
|
||||
case 35: $sel2[35] = "selected"; break;
|
||||
case 36: $sel2[36] = "selected"; break;
|
||||
case 37: $sel2[37] = "selected"; break;
|
||||
case 38: $sel2[38] = "selected"; break;
|
||||
case 40: $sel2[40] = "selected"; break;
|
||||
case 41: $sel2[41] = "selected"; break;
|
||||
case 42: $sel2[42] = "selected"; break;
|
||||
case 43: $sel2[43] = "selected"; break;
|
||||
}
|
||||
switch($tech1) {
|
||||
case 0: $tch1[0] = "selected"; break;
|
||||
case 1000: $tch1[1] = "selected"; break;
|
||||
case 2000: $tch1[2] = "selected"; break;
|
||||
case 3000: $tch1[3] = "selected"; break;
|
||||
case 4000: $tch1[4] = "selected"; break;
|
||||
case 5000: $tch1[5] = "selected"; break;
|
||||
case 6000: $tch1[6] = "selected"; break;
|
||||
case 7000: $tch1[7] = "selected"; break;
|
||||
case 8000: $tch1[8] = "selected"; break;
|
||||
case 9000: $tch1[9] = "selected"; break;
|
||||
case 10000: $tch1[10] = "selected"; break;
|
||||
}
|
||||
switch($tech2) {
|
||||
case 0: $tch2[0] = "selected"; break;
|
||||
case 1000: $tch2[1] = "selected"; break;
|
||||
case 2000: $tch2[2] = "selected"; break;
|
||||
case 3000: $tch2[3] = "selected"; break;
|
||||
case 4000: $tch2[4] = "selected"; break;
|
||||
case 5000: $tch2[5] = "selected"; break;
|
||||
case 6000: $tch2[6] = "selected"; break;
|
||||
case 7000: $tch2[7] = "selected"; break;
|
||||
case 8000: $tch2[8] = "selected"; break;
|
||||
case 9000: $tch2[9] = "selected"; break;
|
||||
case 10000: $tch2[10] = "selected"; break;
|
||||
}
|
||||
switch($dex10) {
|
||||
case 0: $dx10[0] = "selected"; break;
|
||||
case 2500: $dx10[1] = "selected"; break;
|
||||
case 7500: $dx10[2] = "selected"; break;
|
||||
case 15000: $dx10[3] = "selected"; break;
|
||||
case 25000: $dx10[4] = "selected"; break;
|
||||
case 37500: $dx10[5] = "selected"; break;
|
||||
case 52500: $dx10[6] = "selected"; break;
|
||||
case 70000: $dx10[7] = "selected"; break;
|
||||
case 90000: $dx10[8] = "selected"; break;
|
||||
case 112500: $dx10[9] = "selected"; break;
|
||||
case 137500: $dx10[10] = "selected"; break;
|
||||
case 165000: $dx10[11] = "selected"; break;
|
||||
case 195000: $dx10[12] = "selected"; break;
|
||||
case 227500: $dx10[13] = "selected"; break;
|
||||
case 262500: $dx10[14] = "selected"; break;
|
||||
case 300000: $dx10[15] = "selected"; break;
|
||||
case 340000: $dx10[16] = "selected"; break;
|
||||
case 382500: $dx10[17] = "selected"; break;
|
||||
case 427500: $dx10[18] = "selected"; break;
|
||||
}
|
||||
switch($dex110) {
|
||||
case 0: $dx110[0] = "selected"; break;
|
||||
case 2500: $dx110[1] = "selected"; break;
|
||||
case 7500: $dx110[2] = "selected"; break;
|
||||
case 15000: $dx110[3] = "selected"; break;
|
||||
case 25000: $dx110[4] = "selected"; break;
|
||||
case 37500: $dx110[5] = "selected"; break;
|
||||
case 52500: $dx110[6] = "selected"; break;
|
||||
case 70000: $dx110[7] = "selected"; break;
|
||||
case 90000: $dx110[8] = "selected"; break;
|
||||
case 112500: $dx110[9] = "selected"; break;
|
||||
case 137500: $dx110[10] = "selected"; break;
|
||||
case 165000: $dx110[11] = "selected"; break;
|
||||
case 195000: $dx110[12] = "selected"; break;
|
||||
case 227500: $dx110[13] = "selected"; break;
|
||||
case 262500: $dx110[14] = "selected"; break;
|
||||
case 300000: $dx110[15] = "selected"; break;
|
||||
case 340000: $dx110[16] = "selected"; break;
|
||||
case 382500: $dx110[17] = "selected"; break;
|
||||
case 427500: $dx110[18] = "selected"; break;
|
||||
}
|
||||
switch($dex120) {
|
||||
case 0: $dx120[0] = "selected"; break;
|
||||
case 2500: $dx120[1] = "selected"; break;
|
||||
case 7500: $dx120[2] = "selected"; break;
|
||||
case 15000: $dx120[3] = "selected"; break;
|
||||
case 25000: $dx120[4] = "selected"; break;
|
||||
case 37500: $dx120[5] = "selected"; break;
|
||||
case 52500: $dx120[6] = "selected"; break;
|
||||
case 70000: $dx120[7] = "selected"; break;
|
||||
case 90000: $dx120[8] = "selected"; break;
|
||||
case 112500: $dx120[9] = "selected"; break;
|
||||
case 137500: $dx120[10] = "selected"; break;
|
||||
case 165000: $dx120[11] = "selected"; break;
|
||||
case 195000: $dx120[12] = "selected"; break;
|
||||
case 227500: $dx120[13] = "selected"; break;
|
||||
case 262500: $dx120[14] = "selected"; break;
|
||||
case 300000: $dx120[15] = "selected"; break;
|
||||
case 340000: $dx120[16] = "selected"; break;
|
||||
case 382500: $dx120[17] = "selected"; break;
|
||||
case 427500: $dx120[18] = "selected"; break;
|
||||
}
|
||||
switch($dex130) {
|
||||
case 0: $dx130[0] = "selected"; break;
|
||||
case 2500: $dx130[1] = "selected"; break;
|
||||
case 7500: $dx130[2] = "selected"; break;
|
||||
case 15000: $dx130[3] = "selected"; break;
|
||||
case 25000: $dx130[4] = "selected"; break;
|
||||
case 37500: $dx130[5] = "selected"; break;
|
||||
case 52500: $dx130[6] = "selected"; break;
|
||||
case 70000: $dx130[7] = "selected"; break;
|
||||
case 90000: $dx130[8] = "selected"; break;
|
||||
case 112500: $dx130[9] = "selected"; break;
|
||||
case 137500: $dx130[10] = "selected"; break;
|
||||
case 165000: $dx130[11] = "selected"; break;
|
||||
case 195000: $dx130[12] = "selected"; break;
|
||||
case 227500: $dx130[13] = "selected"; break;
|
||||
case 262500: $dx130[14] = "selected"; break;
|
||||
case 300000: $dx130[15] = "selected"; break;
|
||||
case 340000: $dx130[16] = "selected"; break;
|
||||
case 382500: $dx130[17] = "selected"; break;
|
||||
case 427500: $dx130[18] = "selected"; break;
|
||||
}
|
||||
switch($dex140) {
|
||||
case 0: $dx140[0] = "selected"; break;
|
||||
case 2500: $dx140[1] = "selected"; break;
|
||||
case 7500: $dx140[2] = "selected"; break;
|
||||
case 15000: $dx140[3] = "selected"; break;
|
||||
case 25000: $dx140[4] = "selected"; break;
|
||||
case 37500: $dx140[5] = "selected"; break;
|
||||
case 52500: $dx140[6] = "selected"; break;
|
||||
case 70000: $dx140[7] = "selected"; break;
|
||||
case 90000: $dx140[8] = "selected"; break;
|
||||
case 112500: $dx140[9] = "selected"; break;
|
||||
case 137500: $dx140[10] = "selected"; break;
|
||||
case 165000: $dx140[11] = "selected"; break;
|
||||
case 195000: $dx140[12] = "selected"; break;
|
||||
case 227500: $dx140[13] = "selected"; break;
|
||||
case 262500: $dx140[14] = "selected"; break;
|
||||
case 300000: $dx140[15] = "selected"; break;
|
||||
case 340000: $dx140[16] = "selected"; break;
|
||||
case 382500: $dx140[17] = "selected"; break;
|
||||
case 427500: $dx140[18] = "selected"; break;
|
||||
}
|
||||
switch($dex20) {
|
||||
case 0: $dx20[0] = "selected"; break;
|
||||
case 2500: $dx20[1] = "selected"; break;
|
||||
case 7500: $dx20[2] = "selected"; break;
|
||||
case 15000: $dx20[3] = "selected"; break;
|
||||
case 25000: $dx20[4] = "selected"; break;
|
||||
case 37500: $dx20[5] = "selected"; break;
|
||||
case 52500: $dx20[6] = "selected"; break;
|
||||
case 70000: $dx20[7] = "selected"; break;
|
||||
case 90000: $dx20[8] = "selected"; break;
|
||||
case 112500: $dx20[9] = "selected"; break;
|
||||
case 137500: $dx20[10] = "selected"; break;
|
||||
case 165000: $dx20[11] = "selected"; break;
|
||||
case 195000: $dx20[12] = "selected"; break;
|
||||
case 227500: $dx20[13] = "selected"; break;
|
||||
case 262500: $dx20[14] = "selected"; break;
|
||||
case 300000: $dx20[15] = "selected"; break;
|
||||
case 340000: $dx20[16] = "selected"; break;
|
||||
case 382500: $dx20[17] = "selected"; break;
|
||||
case 427500: $dx20[18] = "selected"; break;
|
||||
}
|
||||
switch($dex210) {
|
||||
case 0: $dx210[0] = "selected"; break;
|
||||
case 2500: $dx210[1] = "selected"; break;
|
||||
case 7500: $dx210[2] = "selected"; break;
|
||||
case 15000: $dx210[3] = "selected"; break;
|
||||
case 25000: $dx210[4] = "selected"; break;
|
||||
case 37500: $dx210[5] = "selected"; break;
|
||||
case 52500: $dx210[6] = "selected"; break;
|
||||
case 70000: $dx210[7] = "selected"; break;
|
||||
case 90000: $dx210[8] = "selected"; break;
|
||||
case 112500: $dx210[9] = "selected"; break;
|
||||
case 137500: $dx210[10] = "selected"; break;
|
||||
case 165000: $dx210[11] = "selected"; break;
|
||||
case 195000: $dx210[12] = "selected"; break;
|
||||
case 227500: $dx210[13] = "selected"; break;
|
||||
case 262500: $dx210[14] = "selected"; break;
|
||||
case 300000: $dx210[15] = "selected"; break;
|
||||
case 340000: $dx210[16] = "selected"; break;
|
||||
case 382500: $dx210[17] = "selected"; break;
|
||||
case 427500: $dx210[18] = "selected"; break;
|
||||
}
|
||||
switch($dex220) {
|
||||
case 0: $dx220[0] = "selected"; break;
|
||||
case 2500: $dx220[1] = "selected"; break;
|
||||
case 7500: $dx220[2] = "selected"; break;
|
||||
case 15000: $dx220[3] = "selected"; break;
|
||||
case 25000: $dx220[4] = "selected"; break;
|
||||
case 37500: $dx220[5] = "selected"; break;
|
||||
case 52500: $dx220[6] = "selected"; break;
|
||||
case 70000: $dx220[7] = "selected"; break;
|
||||
case 90000: $dx220[8] = "selected"; break;
|
||||
case 112500: $dx220[9] = "selected"; break;
|
||||
case 137500: $dx220[10] = "selected"; break;
|
||||
case 165000: $dx220[11] = "selected"; break;
|
||||
case 195000: $dx220[12] = "selected"; break;
|
||||
case 227500: $dx220[13] = "selected"; break;
|
||||
case 262500: $dx220[14] = "selected"; break;
|
||||
case 300000: $dx220[15] = "selected"; break;
|
||||
case 340000: $dx220[16] = "selected"; break;
|
||||
case 382500: $dx220[17] = "selected"; break;
|
||||
case 427500: $dx220[18] = "selected"; break;
|
||||
}
|
||||
switch($dex230) {
|
||||
case 0: $dx230[0] = "selected"; break;
|
||||
case 2500: $dx230[1] = "selected"; break;
|
||||
case 7500: $dx230[2] = "selected"; break;
|
||||
case 15000: $dx230[3] = "selected"; break;
|
||||
case 25000: $dx230[4] = "selected"; break;
|
||||
case 37500: $dx230[5] = "selected"; break;
|
||||
case 52500: $dx230[6] = "selected"; break;
|
||||
case 70000: $dx230[7] = "selected"; break;
|
||||
case 90000: $dx230[8] = "selected"; break;
|
||||
case 112500: $dx230[9] = "selected"; break;
|
||||
case 137500: $dx230[10] = "selected"; break;
|
||||
case 165000: $dx230[11] = "selected"; break;
|
||||
case 195000: $dx230[12] = "selected"; break;
|
||||
case 227500: $dx230[13] = "selected"; break;
|
||||
case 262500: $dx230[14] = "selected"; break;
|
||||
case 300000: $dx230[15] = "selected"; break;
|
||||
case 340000: $dx230[16] = "selected"; break;
|
||||
case 382500: $dx230[17] = "selected"; break;
|
||||
case 427500: $dx230[18] = "selected"; break;
|
||||
}
|
||||
switch($dex240) {
|
||||
case 0: $dx240[0] = "selected"; break;
|
||||
case 2500: $dx240[1] = "selected"; break;
|
||||
case 7500: $dx240[2] = "selected"; break;
|
||||
case 15000: $dx240[3] = "selected"; break;
|
||||
case 25000: $dx240[4] = "selected"; break;
|
||||
case 37500: $dx240[5] = "selected"; break;
|
||||
case 52500: $dx240[6] = "selected"; break;
|
||||
case 70000: $dx240[7] = "selected"; break;
|
||||
case 90000: $dx240[8] = "selected"; break;
|
||||
case 112500: $dx240[9] = "selected"; break;
|
||||
case 137500: $dx240[10] = "selected"; break;
|
||||
case 165000: $dx240[11] = "selected"; break;
|
||||
case 195000: $dx240[12] = "selected"; break;
|
||||
case 227500: $dx240[13] = "selected"; break;
|
||||
case 262500: $dx240[14] = "selected"; break;
|
||||
case 300000: $dx240[15] = "selected"; break;
|
||||
case 340000: $dx240[16] = "selected"; break;
|
||||
case 382500: $dx240[17] = "selected"; break;
|
||||
case 427500: $dx240[18] = "selected"; break;
|
||||
}
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<title>전투시뮬레이션</title>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
<style type="text/css">
|
||||
select { background-color:black;color:white; }
|
||||
input { background-color:black;color:white; }
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<form method=post action=_simul.php>
|
||||
<table align=center width=1000 class='tb_layout bg0'>
|
||||
<tr id=bg1>
|
||||
<td>공격장수</td>
|
||||
<td>상대장수</td>
|
||||
<td>상대성벽</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>관직
|
||||
<select name=level1 size=1>
|
||||
<option <?=$sellevel1[1]?> value=1>일반</option>
|
||||
<option <?=$sellevel1[5]?> value=5>제3모사</option>
|
||||
<option <?=$sellevel1[6]?> value=6>제3장군</option>
|
||||
<option <?=$sellevel1[7]?> value=7>제2모사</option>
|
||||
<option <?=$sellevel1[8]?> value=8>제2장군</option>
|
||||
<option <?=$sellevel1[9]?> value=9>제1모사</option>
|
||||
<option <?=$sellevel1[10]?> value=10>제1장군</option>
|
||||
<option <?=$sellevel1[11]?> value=11>참모</option>
|
||||
<option <?=$sellevel1[12]?> value=12>군주</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>관직
|
||||
<select name=level2 size=1>
|
||||
<option <?=$sellevel2[1]?> value=1>일반</option>
|
||||
<option <?=$sellevel2[5]?> value=5>제3모사</option>
|
||||
<option <?=$sellevel2[6]?> value=6>제3장군</option>
|
||||
<option <?=$sellevel2[7]?> value=7>제2모사</option>
|
||||
<option <?=$sellevel2[8]?> value=8>제2장군</option>
|
||||
<option <?=$sellevel2[9]?> value=9>제1모사</option>
|
||||
<option <?=$sellevel2[10]?> value=10>제1장군</option>
|
||||
<option <?=$sellevel2[11]?> value=11>참모</option>
|
||||
<option <?=$sellevel2[12]?> value=12>군주</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>-</td>
|
||||
<tr>
|
||||
<td>Lv <input size=2 maxlength=2 name=explevel1 value=<?=$explevel1?>></td>
|
||||
<td>Lv <input size=2 maxlength=2 name=explevel2 value=<?=$explevel2?>></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>통솔 <input size=3 maxlength=3 name=leader1 value=<?=$leader1?>></td>
|
||||
<td>통솔 <input size=3 maxlength=3 name=leader2 value=<?=$leader2?>></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>무력 <input size=3 maxlength=3 name=power1 value=<?=$power1?>></td>
|
||||
<td>무력 <input size=3 maxlength=3 name=power2 value=<?=$power2?>></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>지력 <input size=3 maxlength=3 name=intel1 value=<?=$intel1?>></td>
|
||||
<td>지력 <input size=3 maxlength=3 name=intel2 value=<?=$intel2?>></td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>병종
|
||||
<select name=type1 size=1>
|
||||
<option value=0>--------</option>
|
||||
<option <?=$sel1[0]?> value=0>보병</option>
|
||||
<option <?=$sel1[1]?> value=1>청주병</option>
|
||||
<option <?=$sel1[2]?> value=2>수병</option>
|
||||
<option <?=$sel1[3]?> value=3>자객병</option>
|
||||
<option <?=$sel1[4]?> value=4>근위병</option>
|
||||
<option <?=$sel1[5]?> value=5>등갑병</option>
|
||||
<option value=0>--------</option>
|
||||
<option <?=$sel1[10]?> value=10>궁병</option>
|
||||
<option <?=$sel1[11]?> value=11>궁기병</option>
|
||||
<option <?=$sel1[12]?> value=12>연노병</option>
|
||||
<option <?=$sel1[13]?> value=13>강궁병</option>
|
||||
<option <?=$sel1[14]?> value=14>석궁병</option>
|
||||
<option value=0>--------</option>
|
||||
<option <?=$sel1[20]?> value=20>기병</option>
|
||||
<option <?=$sel1[21]?> value=21>백마병</option>
|
||||
<option <?=$sel1[22]?> value=22>중장기병</option>
|
||||
<option <?=$sel1[23]?> value=23>돌격기병</option>
|
||||
<option <?=$sel1[24]?> value=24>철기병</option>
|
||||
<option <?=$sel1[25]?> value=25>수렵기병</option>
|
||||
<option <?=$sel1[26]?> value=26>맹수병</option>
|
||||
<option <?=$sel1[27]?> value=27>호표기병</option>
|
||||
<option value=0>--------</option>
|
||||
<option <?=$sel1[30]?> value=30>귀병</option>
|
||||
<option <?=$sel1[31]?> value=31>신귀병</option>
|
||||
<option <?=$sel1[32]?> value=32>백귀병</option>
|
||||
<option <?=$sel1[33]?> value=33>흑귀병</option>
|
||||
<option <?=$sel1[34]?> value=34>악귀병</option>
|
||||
<option <?=$sel1[35]?> value=35>남귀병</option>
|
||||
<option <?=$sel1[36]?> value=36>황귀병</option>
|
||||
<option <?=$sel1[37]?> value=37>천귀병</option>
|
||||
<option <?=$sel1[38]?> value=38>마귀병</option>
|
||||
<option value=0>--------</option>
|
||||
<option <?=$sel1[40]?> value=40>정란</option>
|
||||
<option <?=$sel1[41]?> value=41>충차</option>
|
||||
<option <?=$sel1[42]?> value=42>벽력거</option>
|
||||
<option <?=$sel1[43]?> value=43>목우</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>병종
|
||||
<select name=type2 size=1>
|
||||
<option value=0>--------</option>
|
||||
<option <?=$sel2[0]?> value=0>보병</option>
|
||||
<option <?=$sel2[1]?> value=1>청주병</option>
|
||||
<option <?=$sel2[2]?> value=2>수병</option>
|
||||
<option <?=$sel2[3]?> value=3>자객병</option>
|
||||
<option <?=$sel2[4]?> value=4>근위병</option>
|
||||
<option <?=$sel2[5]?> value=5>등갑병</option>
|
||||
<option value=0>--------</option>
|
||||
<option <?=$sel2[10]?> value=10>궁병</option>
|
||||
<option <?=$sel2[11]?> value=11>궁기병</option>
|
||||
<option <?=$sel2[12]?> value=12>연노병</option>
|
||||
<option <?=$sel2[13]?> value=13>강궁병</option>
|
||||
<option <?=$sel2[14]?> value=14>석궁병</option>
|
||||
<option value=0>--------</option>
|
||||
<option <?=$sel2[20]?> value=20>기병</option>
|
||||
<option <?=$sel2[21]?> value=21>백마병</option>
|
||||
<option <?=$sel2[22]?> value=22>중장기병</option>
|
||||
<option <?=$sel2[23]?> value=23>돌격기병</option>
|
||||
<option <?=$sel2[24]?> value=24>철기병</option>
|
||||
<option <?=$sel2[25]?> value=25>수렵기병</option>
|
||||
<option <?=$sel2[26]?> value=26>맹수병</option>
|
||||
<option <?=$sel2[27]?> value=27>호표기병</option>
|
||||
<option value=0>--------</option>
|
||||
<option <?=$sel2[30]?> value=30>귀병</option>
|
||||
<option <?=$sel2[31]?> value=31>신귀병</option>
|
||||
<option <?=$sel2[32]?> value=32>백귀병</option>
|
||||
<option <?=$sel2[33]?> value=33>흑귀병</option>
|
||||
<option <?=$sel2[34]?> value=34>악귀병</option>
|
||||
<option <?=$sel2[35]?> value=35>남귀병</option>
|
||||
<option <?=$sel2[36]?> value=36>황귀병</option>
|
||||
<option <?=$sel2[37]?> value=37>천귀병</option>
|
||||
<option <?=$sel2[38]?> value=38>마귀병</option>
|
||||
<option value=0>--------</option>
|
||||
<option <?=$sel2[40]?> value=40>정란</option>
|
||||
<option <?=$sel2[41]?> value=41>충차</option>
|
||||
<option <?=$sel2[42]?> value=42>벽력거</option>
|
||||
<option <?=$sel2[43]?> value=43>목우</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>성벽 <input size=4 maxlength=4 name=wall value=<?=$wall?>></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>병력 <input size=5 maxlength=5 name=crew1 value=<?=$crew1?>></td>
|
||||
<td>병력 <input size=5 maxlength=5 name=crew2 value=<?=$crew2?>></td>
|
||||
<td>수비 <input size=4 maxlength=4 name=def value=<?=$def?>></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>훈련 <input size=3 maxlength=3 name=train1 value=<?=$train1?>></td>
|
||||
<td>훈련 <input size=3 maxlength=3 name=train2 value=<?=$train2?>></td>
|
||||
<td>훈련 <input size=3 maxlength=3 name=train3 value=<?=$train3?>></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>사기 <input size=3 maxlength=3 name=atmos1 value=<?=$atmos1?>></td>
|
||||
<td>사기 <input size=3 maxlength=3 name=atmos2 value=<?=$atmos2?>></td>
|
||||
<td>사기 <input size=3 maxlength=3 name=atmos3 value=<?=$atmos3?>></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>기술
|
||||
<select name=tech1 size=1>
|
||||
<option <?=$tch1[0]?> value=0>0등급</option>
|
||||
<option <?=$tch1[1]?> value=1000>1등급</option>
|
||||
<option <?=$tch1[2]?> value=2000>2등급</option>
|
||||
<option <?=$tch1[3]?> value=3000>3등급</option>
|
||||
<option <?=$tch1[4]?> value=4000>4등급</option>
|
||||
<option <?=$tch1[5]?> value=5000>5등급</option>
|
||||
<option <?=$tch1[6]?> value=6000>6등급</option>
|
||||
<option <?=$tch1[7]?> value=7000>7등급</option>
|
||||
<option <?=$tch1[8]?> value=8000>8등급</option>
|
||||
<option <?=$tch1[9]?> value=9000>9등급</option>
|
||||
<option <?=$tch1[10]?> value=10000>10등급</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>기술
|
||||
<select name=tech2 size=1>
|
||||
<option <?=$tch2[0]?> value=0>0등급</option>
|
||||
<option <?=$tch2[1]?> value=1000>1등급</option>
|
||||
<option <?=$tch2[2]?> value=2000>2등급</option>
|
||||
<option <?=$tch2[3]?> value=3000>3등급</option>
|
||||
<option <?=$tch2[4]?> value=4000>4등급</option>
|
||||
<option <?=$tch2[5]?> value=5000>5등급</option>
|
||||
<option <?=$tch2[6]?> value=6000>6등급</option>
|
||||
<option <?=$tch2[7]?> value=7000>7등급</option>
|
||||
<option <?=$tch2[8]?> value=8000>8등급</option>
|
||||
<option <?=$tch2[9]?> value=9000>9등급</option>
|
||||
<option <?=$tch2[10]?> value=10000>10등급</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>보
|
||||
<select name=dex10 size=1>
|
||||
<option <?=$dx10[0]?> value=0>F</option>
|
||||
<option <?=$dx10[1]?> value=2500>E-</option>
|
||||
<option <?=$dx10[2]?> value=7500>E</option>
|
||||
<option <?=$dx10[3]?> value=15000>E+</option>
|
||||
<option <?=$dx10[4]?> value=25000>D-</option>
|
||||
<option <?=$dx10[5]?> value=37500>D</option>
|
||||
<option <?=$dx10[6]?> value=52500>D+</option>
|
||||
<option <?=$dx10[7]?> value=70000>C-</option>
|
||||
<option <?=$dx10[8]?> value=90000>C</option>
|
||||
<option <?=$dx10[9]?> value=112500>C+</option>
|
||||
<option <?=$dx10[10]?> value=137500>B-</option>
|
||||
<option <?=$dx10[11]?> value=165000>B</option>
|
||||
<option <?=$dx10[12]?> value=195000>B+</option>
|
||||
<option <?=$dx10[13]?> value=227500>A-</option>
|
||||
<option <?=$dx10[14]?> value=262500>A</option>
|
||||
<option <?=$dx10[15]?> value=300000>A+</option>
|
||||
<option <?=$dx10[16]?> value=340000>S</option>
|
||||
<option <?=$dx10[17]?> value=382500>SS</option>
|
||||
<option <?=$dx10[18]?> value=427500>SSS</option>
|
||||
</select>
|
||||
궁
|
||||
<select name=dex110 size=1>
|
||||
<option <?=$dx110[0]?> value=0>F</option>
|
||||
<option <?=$dx110[1]?> value=2500>E-</option>
|
||||
<option <?=$dx110[2]?> value=7500>E</option>
|
||||
<option <?=$dx110[3]?> value=15000>E+</option>
|
||||
<option <?=$dx110[4]?> value=25000>D-</option>
|
||||
<option <?=$dx110[5]?> value=37500>D</option>
|
||||
<option <?=$dx110[6]?> value=52500>D+</option>
|
||||
<option <?=$dx110[7]?> value=70000>C-</option>
|
||||
<option <?=$dx110[8]?> value=90000>C</option>
|
||||
<option <?=$dx110[9]?> value=112500>C+</option>
|
||||
<option <?=$dx110[10]?> value=137500>B-</option>
|
||||
<option <?=$dx110[11]?> value=165000>B</option>
|
||||
<option <?=$dx110[12]?> value=195000>B+</option>
|
||||
<option <?=$dx110[13]?> value=227500>A-</option>
|
||||
<option <?=$dx110[14]?> value=262500>A</option>
|
||||
<option <?=$dx110[15]?> value=300000>A+</option>
|
||||
<option <?=$dx110[16]?> value=340000>S</option>
|
||||
<option <?=$dx110[17]?> value=382500>SS</option>
|
||||
<option <?=$dx110[18]?> value=427500>SSS</option>
|
||||
</select>
|
||||
기
|
||||
<select name=dex120 size=1>
|
||||
<option <?=$dx120[0]?> value=0>F</option>
|
||||
<option <?=$dx120[1]?> value=2500>E-</option>
|
||||
<option <?=$dx120[2]?> value=7500>E</option>
|
||||
<option <?=$dx120[3]?> value=15000>E+</option>
|
||||
<option <?=$dx120[4]?> value=25000>D-</option>
|
||||
<option <?=$dx120[5]?> value=37500>D</option>
|
||||
<option <?=$dx120[6]?> value=52500>D+</option>
|
||||
<option <?=$dx120[7]?> value=70000>C-</option>
|
||||
<option <?=$dx120[8]?> value=90000>C</option>
|
||||
<option <?=$dx120[9]?> value=112500>C+</option>
|
||||
<option <?=$dx120[10]?> value=137500>B-</option>
|
||||
<option <?=$dx120[11]?> value=165000>B</option>
|
||||
<option <?=$dx120[12]?> value=195000>B+</option>
|
||||
<option <?=$dx120[13]?> value=227500>A-</option>
|
||||
<option <?=$dx120[14]?> value=262500>A</option>
|
||||
<option <?=$dx120[15]?> value=300000>A+</option>
|
||||
<option <?=$dx120[16]?> value=340000>S</option>
|
||||
<option <?=$dx120[17]?> value=382500>SS</option>
|
||||
<option <?=$dx120[18]?> value=427500>SSS</option>
|
||||
</select>
|
||||
귀
|
||||
<select name=dex130 size=1>
|
||||
<option <?=$dx130[0]?> value=0>F</option>
|
||||
<option <?=$dx130[1]?> value=2500>E-</option>
|
||||
<option <?=$dx130[2]?> value=7500>E</option>
|
||||
<option <?=$dx130[3]?> value=15000>E+</option>
|
||||
<option <?=$dx130[4]?> value=25000>D-</option>
|
||||
<option <?=$dx130[5]?> value=37500>D</option>
|
||||
<option <?=$dx130[6]?> value=52500>D+</option>
|
||||
<option <?=$dx130[7]?> value=70000>C-</option>
|
||||
<option <?=$dx130[8]?> value=90000>C</option>
|
||||
<option <?=$dx130[9]?> value=112500>C+</option>
|
||||
<option <?=$dx130[10]?> value=137500>B-</option>
|
||||
<option <?=$dx130[11]?> value=165000>B</option>
|
||||
<option <?=$dx130[12]?> value=195000>B+</option>
|
||||
<option <?=$dx130[13]?> value=227500>A-</option>
|
||||
<option <?=$dx130[14]?> value=262500>A</option>
|
||||
<option <?=$dx130[15]?> value=300000>A+</option>
|
||||
<option <?=$dx130[16]?> value=340000>S</option>
|
||||
<option <?=$dx130[17]?> value=382500>SS</option>
|
||||
<option <?=$dx130[18]?> value=427500>SSS</option>
|
||||
</select>
|
||||
차
|
||||
<select name=dex140 size=1>
|
||||
<option <?=$dx140[0]?> value=0>F</option>
|
||||
<option <?=$dx140[1]?> value=2500>E-</option>
|
||||
<option <?=$dx140[2]?> value=7500>E</option>
|
||||
<option <?=$dx140[3]?> value=15000>E+</option>
|
||||
<option <?=$dx140[4]?> value=25000>D-</option>
|
||||
<option <?=$dx140[5]?> value=37500>D</option>
|
||||
<option <?=$dx140[6]?> value=52500>D+</option>
|
||||
<option <?=$dx140[7]?> value=70000>C-</option>
|
||||
<option <?=$dx140[8]?> value=90000>C</option>
|
||||
<option <?=$dx140[9]?> value=112500>C+</option>
|
||||
<option <?=$dx140[10]?> value=137500>B-</option>
|
||||
<option <?=$dx140[11]?> value=165000>B</option>
|
||||
<option <?=$dx140[12]?> value=195000>B+</option>
|
||||
<option <?=$dx140[13]?> value=227500>A-</option>
|
||||
<option <?=$dx140[14]?> value=262500>A</option>
|
||||
<option <?=$dx140[15]?> value=300000>A+</option>
|
||||
<option <?=$dx140[16]?> value=340000>S</option>
|
||||
<option <?=$dx140[17]?> value=382500>SS</option>
|
||||
<option <?=$dx140[18]?> value=427500>SSS</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>보
|
||||
<select name=dex20 size=1>
|
||||
<option <?=$dx20[0]?> value=0>F</option>
|
||||
<option <?=$dx20[1]?> value=2500>E-</option>
|
||||
<option <?=$dx20[2]?> value=7500>E</option>
|
||||
<option <?=$dx20[3]?> value=15000>E+</option>
|
||||
<option <?=$dx20[4]?> value=25000>D-</option>
|
||||
<option <?=$dx20[5]?> value=37500>D</option>
|
||||
<option <?=$dx20[6]?> value=52500>D+</option>
|
||||
<option <?=$dx20[7]?> value=70000>C-</option>
|
||||
<option <?=$dx20[8]?> value=90000>C</option>
|
||||
<option <?=$dx20[9]?> value=112500>C+</option>
|
||||
<option <?=$dx20[10]?> value=137500>B-</option>
|
||||
<option <?=$dx20[11]?> value=165000>B</option>
|
||||
<option <?=$dx20[12]?> value=195000>B+</option>
|
||||
<option <?=$dx20[13]?> value=227500>A-</option>
|
||||
<option <?=$dx20[14]?> value=262500>A</option>
|
||||
<option <?=$dx20[15]?> value=300000>A+</option>
|
||||
<option <?=$dx20[16]?> value=340000>S</option>
|
||||
<option <?=$dx20[17]?> value=382500>SS</option>
|
||||
<option <?=$dx20[18]?> value=427500>SSS</option>
|
||||
</select>
|
||||
궁
|
||||
<select name=dex210 size=1>
|
||||
<option <?=$dx210[0]?> value=0>F</option>
|
||||
<option <?=$dx210[1]?> value=2500>E-</option>
|
||||
<option <?=$dx210[2]?> value=7500>E</option>
|
||||
<option <?=$dx210[3]?> value=15000>E+</option>
|
||||
<option <?=$dx210[4]?> value=25000>D-</option>
|
||||
<option <?=$dx210[5]?> value=37500>D</option>
|
||||
<option <?=$dx210[6]?> value=52500>D+</option>
|
||||
<option <?=$dx210[7]?> value=70000>C-</option>
|
||||
<option <?=$dx210[8]?> value=90000>C</option>
|
||||
<option <?=$dx210[9]?> value=112500>C+</option>
|
||||
<option <?=$dx210[10]?> value=137500>B-</option>
|
||||
<option <?=$dx210[11]?> value=165000>B</option>
|
||||
<option <?=$dx210[12]?> value=195000>B+</option>
|
||||
<option <?=$dx210[13]?> value=227500>A-</option>
|
||||
<option <?=$dx210[14]?> value=262500>A</option>
|
||||
<option <?=$dx210[15]?> value=300000>A+</option>
|
||||
<option <?=$dx210[16]?> value=340000>S</option>
|
||||
<option <?=$dx210[17]?> value=382500>SS</option>
|
||||
<option <?=$dx210[18]?> value=427500>SSS</option>
|
||||
</select>
|
||||
기
|
||||
<select name=dex220 size=1>
|
||||
<option <?=$dx220[0]?> value=0>F</option>
|
||||
<option <?=$dx220[1]?> value=2500>E-</option>
|
||||
<option <?=$dx220[2]?> value=7500>E</option>
|
||||
<option <?=$dx220[3]?> value=15000>E+</option>
|
||||
<option <?=$dx220[4]?> value=25000>D-</option>
|
||||
<option <?=$dx220[5]?> value=37500>D</option>
|
||||
<option <?=$dx220[6]?> value=52500>D+</option>
|
||||
<option <?=$dx220[7]?> value=70000>C-</option>
|
||||
<option <?=$dx220[8]?> value=90000>C</option>
|
||||
<option <?=$dx220[9]?> value=112500>C+</option>
|
||||
<option <?=$dx220[10]?> value=137500>B-</option>
|
||||
<option <?=$dx220[11]?> value=165000>B</option>
|
||||
<option <?=$dx220[12]?> value=195000>B+</option>
|
||||
<option <?=$dx220[13]?> value=227500>A-</option>
|
||||
<option <?=$dx220[14]?> value=262500>A</option>
|
||||
<option <?=$dx220[15]?> value=300000>A+</option>
|
||||
<option <?=$dx220[16]?> value=340000>S</option>
|
||||
<option <?=$dx220[17]?> value=382500>SS</option>
|
||||
<option <?=$dx220[18]?> value=427500>SSS</option>
|
||||
</select>
|
||||
귀
|
||||
<select name=dex230 size=1>
|
||||
<option <?=$dx230[0]?> value=0>F</option>
|
||||
<option <?=$dx230[1]?> value=2500>E-</option>
|
||||
<option <?=$dx230[2]?> value=7500>E</option>
|
||||
<option <?=$dx230[3]?> value=15000>E+</option>
|
||||
<option <?=$dx230[4]?> value=25000>D-</option>
|
||||
<option <?=$dx230[5]?> value=37500>D</option>
|
||||
<option <?=$dx230[6]?> value=52500>D+</option>
|
||||
<option <?=$dx230[7]?> value=70000>C-</option>
|
||||
<option <?=$dx230[8]?> value=90000>C</option>
|
||||
<option <?=$dx230[9]?> value=112500>C+</option>
|
||||
<option <?=$dx230[10]?> value=137500>B-</option>
|
||||
<option <?=$dx230[11]?> value=165000>B</option>
|
||||
<option <?=$dx230[12]?> value=195000>B+</option>
|
||||
<option <?=$dx230[13]?> value=227500>A-</option>
|
||||
<option <?=$dx230[14]?> value=262500>A</option>
|
||||
<option <?=$dx230[15]?> value=300000>A+</option>
|
||||
<option <?=$dx230[16]?> value=340000>S</option>
|
||||
<option <?=$dx230[17]?> value=382500>SS</option>
|
||||
<option <?=$dx230[18]?> value=427500>SSS</option>
|
||||
</select>
|
||||
차
|
||||
<select name=dex240 size=1>
|
||||
<option <?=$dx240[0]?> value=0>F</option>
|
||||
<option <?=$dx240[1]?> value=2500>E-</option>
|
||||
<option <?=$dx240[2]?> value=7500>E</option>
|
||||
<option <?=$dx240[3]?> value=15000>E+</option>
|
||||
<option <?=$dx240[4]?> value=25000>D-</option>
|
||||
<option <?=$dx240[5]?> value=37500>D</option>
|
||||
<option <?=$dx240[6]?> value=52500>D+</option>
|
||||
<option <?=$dx240[7]?> value=70000>C-</option>
|
||||
<option <?=$dx240[8]?> value=90000>C</option>
|
||||
<option <?=$dx240[9]?> value=112500>C+</option>
|
||||
<option <?=$dx240[10]?> value=137500>B-</option>
|
||||
<option <?=$dx240[11]?> value=165000>B</option>
|
||||
<option <?=$dx240[12]?> value=195000>B+</option>
|
||||
<option <?=$dx240[13]?> value=227500>A-</option>
|
||||
<option <?=$dx240[14]?> value=262500>A</option>
|
||||
<option <?=$dx240[15]?> value=300000>A+</option>
|
||||
<option <?=$dx240[16]?> value=340000>S</option>
|
||||
<option <?=$dx240[17]?> value=382500>SS</option>
|
||||
<option <?=$dx240[18]?> value=427500>SSS</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>-</td>
|
||||
<td>
|
||||
<input type=submit name=isgen value=장수공격>
|
||||
<?='<input type=submit name=isgen value=장수평균>'?>
|
||||
</td>
|
||||
<td>
|
||||
<input type=submit name=isgen value=성벽공격>
|
||||
<?='<input type=submit name=isgen value=성벽평균>'?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan=3>
|
||||
<?php
|
||||
if($isgen == "장수공격" || $isgen == "성벽공격") {
|
||||
echo $msg;
|
||||
} elseif($isgen == "장수평균" || $isgen == "성벽평균") {
|
||||
echo $msg2;
|
||||
}
|
||||
?>
|
||||
</td></tr>
|
||||
</table>
|
||||
<table align=center width=1000 class='tb_layout bg0'>
|
||||
<tr id=bg1>
|
||||
<td align=right></td>
|
||||
<td align=center>공격</td>
|
||||
<td align=center>방어</td>
|
||||
<td align=center>기동</td>
|
||||
<td align=center>회피</td>
|
||||
<td align=center>가격</td>
|
||||
<td align=center>군량</td>
|
||||
<td width=500 align=center>-</td>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
for($i=0; $i <= 5; $i++) {
|
||||
printSimul($admin, $i);
|
||||
}
|
||||
echo "
|
||||
<tr><td height=5 colspan=8 id=bg1></td></tr>";
|
||||
|
||||
for($i=10; $i <= 14; $i++) {
|
||||
printSimul($admin, $i);
|
||||
}
|
||||
echo "
|
||||
<tr><td height=5 colspan=8 id=bg1></td></tr>";
|
||||
|
||||
for($i=20; $i <= 27; $i++) {
|
||||
printSimul($admin, $i);
|
||||
}
|
||||
echo "
|
||||
<tr><td height=5 colspan=8 id=bg1></td></tr>";
|
||||
|
||||
for($i=30; $i <= 38; $i++) {
|
||||
printSimul($admin, $i);
|
||||
}
|
||||
echo "
|
||||
<tr><td height=5 colspan=8 id=bg1></td></tr>";
|
||||
|
||||
for($i=40; $i <= 43; $i++) {
|
||||
printSimul($admin, $i);
|
||||
}
|
||||
echo "
|
||||
<tr><td height=5 colspan=8 id=bg1></td></tr>";
|
||||
?>
|
||||
</table>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
|
||||
function printSimul($admin, $i) {
|
||||
$att = $admin["att{$i}"];
|
||||
$def = $admin["def{$i}"];
|
||||
$spd = $admin["spd{$i}"];
|
||||
$avd = $admin["avd{$i}"];
|
||||
$cst = $admin["cst{$i}"];
|
||||
$ric = $admin["ric{$i}"];
|
||||
echo "
|
||||
<tr>
|
||||
<td align=right>".GameUnitConst::byId($i)->name."</td>
|
||||
<td align=center>$att</td>
|
||||
<td align=center>$def</td>
|
||||
<td align=center>$spd</td>
|
||||
<td align=center>$avd</td>
|
||||
<td align=center>$cst</td>
|
||||
<td align=center>$ric</td>
|
||||
<td align=center>-</td>
|
||||
</tr>";
|
||||
}
|
||||
|
||||
|
||||
+4
-3
@@ -16,6 +16,10 @@ increaseRefresh("왕조일람", 1);
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<title><?=UniqueConst::$serverName?>: 왕조일람</title>
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
|
||||
@@ -50,9 +54,6 @@ if ($showCurrentNation) {
|
||||
<tr>
|
||||
<td style="background-color:#333333;" align=center colspan=8>
|
||||
<font size=5>현재 (<?=$year?>年 <?=$month?>月)</font>
|
||||
|
||||
<a href="a_emperior_detail.php"><button>자세히</button></a>
|
||||
|
||||
<a href="a_history.php"><button>역사 보기</button></a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -21,6 +21,10 @@ increaseRefresh("왕조일람", 2);
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<title><?=UniqueConst::$serverName?>: 왕조일람</title>
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
|
||||
|
||||
@@ -26,6 +26,10 @@ $serverID = $emperior['server_id']??($emperior['serverID']??null);
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<title><?=UniqueConst::$serverName?>: 왕조일람</title>
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
|
||||
@@ -33,7 +37,7 @@ $serverID = $emperior['server_id']??($emperior['serverID']??null);
|
||||
|
||||
<body>
|
||||
<table align=center width=1000 class="tb_layout bg0">
|
||||
<tr><td><?=$emperior?'역 대 왕 조':'현 재 왕 조'?><br>
|
||||
<tr><td>역 대 왕 조<br>
|
||||
<button onclick=window.close()>창 닫기</button>
|
||||
<div style="float:right;"><a href="a_emperior.php"><button>전체보기</button></a><div>
|
||||
</td></tr>
|
||||
@@ -156,7 +160,7 @@ if($emperior):
|
||||
<?php
|
||||
endif;
|
||||
|
||||
$showServers = $serverID || (!$emperior);
|
||||
$showServers = $emperior;
|
||||
|
||||
if(!$serverID){
|
||||
$serverID = UniqueConst::$serverID;
|
||||
@@ -175,7 +179,7 @@ if($showServers){
|
||||
if($nation['generals']){
|
||||
$generals = $db->query('SELECT `general_no`, `name`, `last_yearmonth` FROM ng_old_generals WHERE server_id=%s AND general_no IN %li', $serverID, $nation['generals']);
|
||||
|
||||
if(count($generals) != $nation['generals'] && $serverID == UniqueConst::$serverID){
|
||||
if(count($generals) != count($nation['generals']) && $serverID == UniqueConst::$serverID){
|
||||
$liveGenerals = $nation['generals'];
|
||||
foreach($generals as $general){
|
||||
if(in_array($general['general_no'], $nation['generals'])){
|
||||
|
||||
+1
-1
@@ -174,7 +174,7 @@ for ($j=0; $j < $gencount; $j++) {
|
||||
data-general-intel='{$general['intel']}'
|
||||
data-is-npc='".($general['npc']>=2?'true':'false')."'
|
||||
>
|
||||
<td align=center><img width='64' height='64' src={$imageTemp}/{$general['picture']}></img></td>
|
||||
<td align=center><img class='generalIcon' width='64' height='64' src='{$imageTemp}/{$general['picture']}'></img></td>
|
||||
<td align=center>$name</td>
|
||||
<td align=center>{$general['age']}세</td>
|
||||
<td align=center>".displayCharInfo($general['personal'])."</td>
|
||||
|
||||
@@ -28,10 +28,13 @@ if($con >= 2) { printLimitMsg($me['turntime']); exit(); }
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<title><?=UniqueConst::$serverName?>: 세력일람</title>
|
||||
<?=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/ext.kingdoms.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('js/ext.kingdoms.js')?>
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
+3
-4
@@ -29,13 +29,12 @@ $sel[$type] = "selected";
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<title><?=UniqueConst::$serverName?>: 빙의일람</title>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
+5
-1
@@ -53,6 +53,10 @@ if ($admin['maxonline'] < $curonline) {
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
<style>
|
||||
@@ -166,7 +170,7 @@ $max_refresh['name'] = '접속자 총합';
|
||||
$refresh_result = array_merge([$max_refresh], $db->query('SELECT `name`,refresh,`connect` FROM general ORDER BY refresh DESC LIMIT 5'));
|
||||
|
||||
foreach ($refresh_result as $i=>$user) {
|
||||
$w = round($user['refresh'] / $max_refresh['refresh'] * 100, 1);
|
||||
$w = round($user['refresh'] / max(1, $max_refresh['refresh']) * 100, 1);
|
||||
$w2 = round(100 - $w, 1);
|
||||
$color = getTrafficColor($w);
|
||||
?>
|
||||
|
||||
@@ -31,6 +31,10 @@ $vote = $admin['vote']?:['-'];
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
<style>
|
||||
|
||||
@@ -59,6 +59,10 @@ if ($msg2 == "") {
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
</head>
|
||||
|
||||
@@ -77,6 +77,10 @@ $sel[$type] = "selected";
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
|
||||
|
||||
@@ -59,6 +59,10 @@ if($str3){
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<title><?=UniqueConst::$serverName?>: 베팅장</title>
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
</head>
|
||||
|
||||
@@ -29,6 +29,10 @@ if($me['level'] < 5) {
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
|
||||
|
||||
@@ -81,6 +81,10 @@ for($i= $lv - 1; $i>=5; $i--){
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<title><?=UniqueConst::$serverName?>: 사령부</title>
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
<script type="text/javascript">
|
||||
|
||||
+10
-1
@@ -11,6 +11,7 @@ extractMissingPostToGlobals();
|
||||
//로그인 검사
|
||||
$session = Session::requireGameLogin()->setReadOnly();
|
||||
$userID = Session::getUserID();
|
||||
$userGrade = Session::getUserGrade();
|
||||
|
||||
$db = DB::db();
|
||||
$connect=$db->get();
|
||||
@@ -34,6 +35,10 @@ $templates = new \League\Plates\Engine('templates');
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
<style>
|
||||
@@ -164,7 +169,7 @@ echo "
|
||||
unset($city);
|
||||
|
||||
// 첩보된 도시까지만 허용
|
||||
if($valid == 0 && $session->userGrade < 5) {
|
||||
if($valid == 0 && $userGrade < 5) {
|
||||
$citylist = $me['city'];
|
||||
}
|
||||
|
||||
@@ -208,6 +213,10 @@ for($j=0; $j < $gencount; $j++) {
|
||||
$ourGeneral = false;
|
||||
}
|
||||
|
||||
if($userGrade == 6){
|
||||
$ourGeneral = true;
|
||||
}
|
||||
|
||||
$isNPC = $general['npc']>1;
|
||||
$wounded = $general['injury'];
|
||||
|
||||
|
||||
+41
-5
@@ -48,13 +48,24 @@ if ($me['level'] >= 5) {
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<title><?=UniqueConst::$serverName?>: 내무부</title>
|
||||
<script>
|
||||
var editable = <?=($me['level']>=5?'true':'false')?>;
|
||||
</script>
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/summernote/summernote-bs4.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/summernote/lang/summernote-ko-KR.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/summernote/plugin/image-sammo/summernote-image-flip.js')?>
|
||||
<?=WebUtil::printJS('../d_shared/common_path.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printJS('js/dipcenter.js')?>
|
||||
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../e_lib/summernote/summernote-bs4.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
|
||||
<?=WebUtil::printCSS('css/dipcenter.css')?>
|
||||
<link href="https://fonts.googleapis.com/css?family=Nanum+Gothic|Nanum+Myeongjo|Nanum+Pen+Script" rel="stylesheet">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
@@ -223,10 +234,35 @@ if ($budgetricediff > 0) {
|
||||
<form name=form1 method=post action=c_dipcenter.php>
|
||||
<tr><td colspan=2 height=10></td></tr>
|
||||
<tr><td colspan=2 align=center bgcolor=orange>국 가 방 침 & 임관 권유 메시지</td></tr>
|
||||
<tr><td colspan=2 class=bg1>국가 방침 <textarea <?=$read?> maxlength=16000 rows="5" style="color:white;background-color:black;width:830px;" name=msg><?=$nation['msg']?></textarea><input type=<?=$btn?> name=btn value=국가방침></td></tr>
|
||||
<tr><td colspan=2 class=bg1>임관 권유 <input type=text <?=$read?> maxlength=1000 style=color:white;background-color:black;width:830px; name=scoutmsg value='<?=$nation['scoutmsg']?>'><input type=<?=$btn?> name=btn value=임관권유></td></tr>
|
||||
<tr><td colspan=2>870px x 200px를 넘어서는 내용은 표시되지 않습니다.</td></tr>
|
||||
<tr><td colspan=2 height=10></td></tr>
|
||||
<tr><td colspan='2'><div id='noticeForm'>
|
||||
<div class='bg1' style="display: flex; justify-content: space-around">
|
||||
<div style='flex: 1 1 auto;'>
|
||||
국가 방침
|
||||
</div>
|
||||
<div>
|
||||
<input type='submit' class='submit' name=btn value='국가방침 수정'><input type='button' class='cancel_edit' value='취소'>
|
||||
</div>
|
||||
</div>
|
||||
<textarea type=hidden class='input_form' style='display:none;' name=msg><?=$nation['msg']?></textarea>
|
||||
<div class='edit_form viewer'></div>
|
||||
</div></td></tr>
|
||||
<tr><td colspan='2'><div id='scoutMsgForm'>
|
||||
<div class='bg1' style="display: flex; justify-content: space-around">
|
||||
<div style='flex: 1 1 auto;'>
|
||||
임관 권유
|
||||
</div>
|
||||
<div>
|
||||
<input type='submit' class='submit' name=btn value='임관 권유문 수정'><input type='button' class='cancel_edit' value='취소'>
|
||||
</div>
|
||||
</div>
|
||||
<div style='border-bottom:solid gray 0.5px;'>870px x 200px를 넘어서는 내용은 표시되지 않습니다.</div>
|
||||
<textarea type=hidden class='input_form' style='display:none;' name=scoutmsg><?=$nation['scoutmsg']?></textarea>
|
||||
<div style="width:870px;margin-left:auto;">
|
||||
<div class='edit_form viewer'></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div></td></tr>
|
||||
<tr><td colspan=2 align=center bgcolor=green>예 산 & 정 책</td></tr>
|
||||
<tr>
|
||||
<td colspan=2>
|
||||
|
||||
+1
-1
@@ -177,7 +177,7 @@ for($i=0; $i < $nationcount; $i++) {
|
||||
";
|
||||
}
|
||||
?>
|
||||
<tr><td colspan=<?=$nationcount+1?> align=center>불가침 : <font color=limegreen>@</font>, 통합 : <font color=cyan>○</font>, 합병 : <font color=skyblue>◎</font>, 통상 : ㆍ, 선포 : <font color=magenta>▲</font>, 교전 : <font color=red>★</font></td></tr>
|
||||
<tr><td colspan=<?=$nationcount+1?> align=center>불가침 : <font color=limegreen>@</font>, <!--통합 : <font color=cyan>○</font>, -->합병 : <font color=skyblue>◎</font>, 통상 : ㆍ, 선포 : <font color=magenta>▲</font>, 교전 : <font color=red>★</font></td></tr>
|
||||
</table>
|
||||
|
||||
<?php if ($realConflict) : ?>
|
||||
|
||||
+11
-12
@@ -33,6 +33,10 @@ if($meLevel == 0) {
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<title><?=UniqueConst::$serverName?>: 인사부</title>
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
<script type="text/javascript">
|
||||
@@ -88,10 +92,10 @@ for($i=12; $i >= $lv; $i-=2) {
|
||||
?>
|
||||
<tr>
|
||||
<td width=98 align=center id=bg1><font size=4><?=getLevel($i1, $nation['level'])?></font></td>
|
||||
<td width=64 height=64 style='background:no-repeat center url("<?=$imageTemp1?>/<?=$level[$i1]['picture']??'default.jpg'?>");background-size:64px;'></td>
|
||||
<td width=64 class='generalIcon' height=64 style='background:no-repeat center url("<?=$imageTemp1?>/<?=$level[$i1]['picture']??'default.jpg'?>");background-size:64px;'></td>
|
||||
<td width=332><font size=4><?=$level[$i1]['name']??'-'?>(<?=$level[$i1]['belong']??'-'?>년)</font></td>
|
||||
<td width=98 align=center id=bg1><font size=4><?=getLevel($i2, $nation['level'])?></font></td>
|
||||
<td width=64 height=64 style='background:no-repeat center url("<?=$imageTemp2?>/<?=$level[$i2]['picture']??'default.jpg'?>");background-size:64px;'></td>
|
||||
<td width=64 class='generalIcon' height=64 style='background:no-repeat center url("<?=$imageTemp2?>/<?=$level[$i2]['picture']??'default.jpg'?>");background-size:64px;'></td>
|
||||
<td width=332><font size=4><?=$level[$i2]['name']??'-'?>(<?=$level[$i2]['belong']??'-'?>년)</font></td>
|
||||
</tr>
|
||||
<?php
|
||||
@@ -146,12 +150,15 @@ if($meLevel >= 5 && $nation["l{$meLevel}set"] == 0) {
|
||||
echo "
|
||||
<select name=outlist size=1 style=color:white;background-color:black;>";
|
||||
|
||||
$query = "select no,name,level,leader,power,intel,killturn from general where nation='{$me['nation']}' and level!='12' and no!='{$me['no']}' order by npc,binary(name)";
|
||||
$query = "select no,npc,name,level,leader,power,intel,killturn from general where nation='{$me['nation']}' and level!='12' and no!='{$me['no']}' order by npc,binary(name)";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$gencount = MYDB_num_rows($result);
|
||||
|
||||
for($i=0; $i < $gencount; $i++) {
|
||||
$general = MYDB_fetch_array($result);
|
||||
if($general['npc'] == 5){
|
||||
continue;
|
||||
}
|
||||
echo "
|
||||
<option value={$general['no']}>{$general['name']} <small>({$general['leader']}/{$general['power']}/{$general['intel']}, {$general['killturn']}턴)</small></option>";
|
||||
}
|
||||
@@ -452,15 +459,7 @@ echo "
|
||||
</tr>
|
||||
";
|
||||
|
||||
$citylevel = [];
|
||||
$citylevel[1] = "수";
|
||||
$citylevel[2] = "진";
|
||||
$citylevel[3] = "관";
|
||||
$citylevel[4] = "이";
|
||||
$citylevel[5] = "소";
|
||||
$citylevel[6] = "중";
|
||||
$citylevel[7] = "대";
|
||||
$citylevel[8] = "특";
|
||||
$citylevel = getCityLevelList();
|
||||
|
||||
$query = "select city,name,gen1,gen2,gen3,level,region,gen1set,gen2set,gen3set from city where nation='{$nation['nation']}' order by region,level desc,binary(name)"; // 도시 이름 목록
|
||||
$cityresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
|
||||
@@ -40,11 +40,14 @@ $sel = [$type => "selected"];
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<title><?=UniqueConst::$serverName?>: 세력도시</title>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('../e_lib/jquery-ui.min.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/jquery-ui.min.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printJS('js/ext.expand_city.js')?>
|
||||
|
||||
</head>
|
||||
|
||||
+1
-1
@@ -174,7 +174,7 @@ for($j=0; $j < $gencount; $j++) {
|
||||
$imageTemp = GetImageURL($general['imgsvr']);
|
||||
echo "
|
||||
<tr>
|
||||
<td align=center style='background:no-repeat center url(\"{$imageTemp}/{$general['picture']}\");background-size:64px;' height=64></td>
|
||||
<td align=center class='generalIcon' style='background:no-repeat center url(\"{$imageTemp}/{$general['picture']}\");background-size:64px;' height=64></td>
|
||||
<td align=center>$name</td>
|
||||
<td align=center>"; echo getLevel($general['level'], $nationLevel); echo "</td>
|
||||
<td align=center>".getDed($general['dedication'])."</td>
|
||||
|
||||
@@ -30,6 +30,10 @@ if($me['level'] == 0) {
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<title><?=UniqueConst::$serverName?>: 세력정보</title>
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
|
||||
|
||||
@@ -56,6 +56,9 @@ if (($btn == "설정저장" || $detachNPC) && $me['myset'] > 0) {
|
||||
'tnmt'=>$tnmt
|
||||
], 'owner=%i', $userID);
|
||||
|
||||
$me['mode'] = $mode;
|
||||
$me['tnmt'] = $tnmt;
|
||||
|
||||
if($me['npc'] == 1 && $detachNPC){
|
||||
$turnterm = $gameStor->turnterm;
|
||||
|
||||
@@ -84,6 +87,7 @@ if (($btn == "설정저장" || $detachNPC) && $me['myset'] > 0) {
|
||||
<?=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/myPage.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
@@ -119,6 +123,8 @@ if (($btn == "설정저장" || $detachNPC) && $me['myset'] > 0) {
|
||||
<a href="c_vacation.php"><button type="button" style=background-color:<?=GameConst::$basecolor2?>;color:white;width:160px;height:30px;font-size:13px;>휴가 신청</button></a><br><br>
|
||||
<!--빙의 해제용 삭턴 조절<br>
|
||||
<a href="b_myPage.php?detachNPC=1"><button type="button" style=background-color:<?=GameConst::$basecolor2?>;color:white;width:160px;height:30px;font-size:13px;>빙의 해체 요청</button></a>-->
|
||||
개인용 CSS<br>
|
||||
<textarea id='custom_css' style='color:white;background-color:black;width:420px;height:150px;'></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
@@ -24,6 +24,10 @@ $me = MYDB_fetch_array($result);
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
|
||||
|
||||
@@ -19,6 +19,10 @@ increaseRefresh("국법", 1);
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
|
||||
|
||||
+8
-5
@@ -73,11 +73,14 @@ uasort($troops, function($lhs, $rhs){
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<title><?=UniqueConst::$serverName?>: 부대편성</title>
|
||||
<?=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/ext.plugin_troop.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
<?=WebUtil::printCSS('css/troops.css')?>
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('js/ext.plugin_troop.js')?>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
@@ -101,7 +104,7 @@ uasort($troops, function($lhs, $rhs){
|
||||
<?php elseif($me['troop'] == 0): ?>
|
||||
<input type=submit name=btn value='부 대 가 입'>
|
||||
<?php else: ?>
|
||||
<input type=submit name=btn value='부 대 탈 퇴' onclick='return confirm(\"정말 부대를 탈퇴하시겠습니까?\")'>
|
||||
<input type=submit name=btn value='부 대 탈 퇴' onclick='return confirm("정말 부대를 탈퇴하시겠습니까?")'>
|
||||
<?php endif;?>
|
||||
</td></tr></tfoot>
|
||||
<tbody>
|
||||
@@ -132,7 +135,7 @@ foreach ($troops as $troopNo=>$troop) {
|
||||
<tr>
|
||||
<td align=center rowspan=2><input type='radio' name='troop' value='<?=$troop['troop']?>'></td>
|
||||
<td align=center><?=$troop['name']?><br>【 <?=$cityText?> 】</td>
|
||||
<td height=64 style='background:no-repeat center url("<?=$troopLeader['pictureFullPath']?>");background-size:64px;'> </td>
|
||||
<td height=64 class='generalIcon' style='background:no-repeat center url("<?=$troopLeader['pictureFullPath']?>");background-size:64px;'> </td>
|
||||
<td rowspan=2 width=62><?=$genlistText?></td>
|
||||
<td rowspan=2><?=$troopLeader['turnText']?></td>
|
||||
</tr>
|
||||
@@ -145,7 +148,7 @@ foreach ($troops as $troopNo=>$troop) {
|
||||
<tr>
|
||||
<td align=center rowspan=2> </td>
|
||||
<td align=center ><?=$troop['name']?><br>【 <?=$cityText?> 】</td>
|
||||
<td height=64 style='background:no-repeat center url("<?=$troopLeader['pictureFullPath']?>");background-size:64px;'> </td>
|
||||
<td height=64 class='generalIcon' style='background:no-repeat center url("<?=$troopLeader['pictureFullPath']?>");background-size:64px;'> </td>
|
||||
<td rowspan=2 width=62><?=$genlistText?></td>
|
||||
<td rowspan=2>
|
||||
<?php if ($me['no'] == $troopLeader['no']): ?>
|
||||
|
||||
@@ -0,0 +1,473 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
include "lib.php";
|
||||
include "func.php";
|
||||
|
||||
$session = Session::requireLogin()->setReadOnly();
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
|
||||
$startYear = $gameStor->getValue('startyear');
|
||||
|
||||
?>
|
||||
<!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=1100" />
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
<?=WebUtil::printCSS('css/battle_simulator.css')?>
|
||||
<?=WebUtil::printJS('../d_shared/common_path.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/moment.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/download2.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printJS('js/battle_simulator.js')?>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
전역 설정
|
||||
</div>
|
||||
<div class="card-body dragpad_battle">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group">
|
||||
<input type="number" class="form-control" aria-describedby="text_year" value="<?=$startYear?>" disabled>
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">년 시작</span>
|
||||
</div>
|
||||
<input type="number" class="form-control" id="year" value="<?=$startYear+3?>" min="<?=$startYear?>">
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">년</span>
|
||||
</div>
|
||||
<input type="number" class="form-control" id="month" value="1" min="1" max="12">
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">월</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="btn-toolbar" role="toolbar">
|
||||
<div class="input-group mr-2" role="group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">반복 횟수</span>
|
||||
</div>
|
||||
<select class="custom-select" id="repeat_cnt">
|
||||
<option value="1">1회 (로그 표기)</option>
|
||||
<option value="1000">1000회 (요약 표기)</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="btn-group mr-2" role="group">
|
||||
<button type="button" class="btn btn-danger btn-begin_battle">전투</button>
|
||||
</div>
|
||||
<div class="btn-group mr-2" role="group">
|
||||
<button type="button" class="btn btn-info btn-battle-save">모두 저장</button>
|
||||
<input type="file" class="form_load_battle_file" accept=".json" style="display: none;" />
|
||||
<button type="button" class="btn btn-primary btn-battle-load">모두 불러오기</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm">
|
||||
<div class="card mb-2 attacker_nation">
|
||||
<div class="card-header">
|
||||
출병국 설정
|
||||
</div>
|
||||
<div class="card-body nation_detail dragpad_battle">
|
||||
<div class="input-group mb-1">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">국가 성향</span>
|
||||
</div>
|
||||
<select class="custom-select form_nation_type" style="width:25ch;">
|
||||
<?php foreach(getNationTypeList() as $typeID => [$name,$pros,$cons]): ?>
|
||||
<option value="<?=$typeID?>"><?=$name?> (<?=$pros?>, <?=$cons?>)</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">기술</span>
|
||||
</div>
|
||||
<input type="number" class="form-control form_tech" value="1" min="0" max="12">
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">등급</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group mb-3">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">국가 규모</span>
|
||||
</div>
|
||||
<select class="custom-select form_nation_level">
|
||||
<?php foreach(getNationLevelList() as $nationLevel => [$name,$chiefCnt,$cityCnt]): ?>
|
||||
<option value="<?=$nationLevel?>"><?=$name?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">도시 규모</span>
|
||||
</div>
|
||||
<select class="custom-select form_city_level">
|
||||
<?php foreach(getCityLevelList() as $levelID => $name): ?>
|
||||
<option value="<?=$levelID?>"><?=$name?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">수도</span>
|
||||
</div>
|
||||
<div class="input-group-append btn-group btn-group-toggle" data-toggle="buttons">
|
||||
<label class="btn btn-secondary">
|
||||
<input type="radio" name="is_attacker_capital" class="form_is_capital" value="1" autocomplete="off">Y
|
||||
</label>
|
||||
<label class="btn btn-secondary active">
|
||||
<input type="radio" name="is_attacker_capital" class="form_is_capital" value="2" autocomplete="off" checked>N
|
||||
</label>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="input-group mb-1">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card mb-2 attacker_form general_form" data-general_no='1'>
|
||||
<div class="card-header">
|
||||
<div class="float-sm-left" style="line-height:25px;">출병자 설정</div>
|
||||
<div class="float-sm-right btn-toolbar" role="toolbar">
|
||||
<div class="btn-group btn-group-sm mr-2" role="group">
|
||||
<button type="button" class="btn btn-info btn-general-save">저장</button>
|
||||
<input type="file" class="form_load_general_file" accept=".json" style="display: none;" />
|
||||
<button type="button" class="btn btn-primary btn-general-load">불러오기</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- <div class="col-sm"> -->
|
||||
<div class="col-sm defender-column">
|
||||
<div class="card mb-2 defender_nation">
|
||||
<div class="card-header">
|
||||
수비국 설정
|
||||
</div>
|
||||
<div class="card-body dragpad_battle">
|
||||
<div class="input-group mb-1">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">국가 성향</span>
|
||||
</div>
|
||||
<select class="custom-select form_nation_type" style="width:25ch;">
|
||||
<?php foreach(getNationTypeList() as $typeID => [$name,$pros,$cons]): ?>
|
||||
<option value="<?=$typeID?>"><?=$name?> (<?=$pros?>, <?=$cons?>)</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">기술</span>
|
||||
</div>
|
||||
<input type="number" class="form-control form_tech" value="1" min="0" max="12">
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">등급</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group mb-3">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">국가 규모</span>
|
||||
</div>
|
||||
<select class="custom-select form_nation_level">
|
||||
<?php foreach(getNationLevelList() as $nationLevel => [$name,$chiefCnt,$cityCnt]): ?>
|
||||
<option value="<?=$nationLevel?>"><?=$name?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">도시 규모</span>
|
||||
</div>
|
||||
<select class="custom-select form_city_level">
|
||||
<?php foreach(getCityLevelList() as $levelID => $name): ?>
|
||||
<option value="<?=$levelID?>"><?=$name?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">수도</span>
|
||||
</div>
|
||||
<div class="input-group-append btn-group btn-group-toggle" data-toggle="buttons">
|
||||
<label class="btn btn-secondary">
|
||||
<input type="radio" name="is_defender_capital" class="form_is_capital" value="1" autocomplete="off">Y
|
||||
</label>
|
||||
<label class="btn btn-secondary active">
|
||||
<input type="radio" name="is_defender_capital" class="form_is_capital" value="0" autocomplete="off" checked>N
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group mb-1">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">수비</span>
|
||||
</div>
|
||||
<input type="number" class="form-control form_def" id="city_def" value="1000" min="10" step="10">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">성벽</span>
|
||||
</div>
|
||||
<input type="number" class="form-control form_wall" id="city_wall" value="1000" min="0" step="10">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card mb-2 defender_add_form">
|
||||
<div class="card-header">
|
||||
<div class="float-sm-left" style="line-height:25px;">수비자 설정</div>
|
||||
<div class="float-sm-right btn-toolbar" role="toolbar">
|
||||
<div class="btn-group btn-group-sm mr-2" role="group">
|
||||
<button type="button" class="btn btn-dark btn-reorder_defender">수비 순서대로 정렬</button>
|
||||
</div>
|
||||
<div class="btn-group btn-group-sm" role="group">
|
||||
<button type="button" class="btn btn-success add-defender">추가</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card mb-2 form_sample">
|
||||
<div class="card-header">
|
||||
<div class="float-sm-left" style="line-height:25px;">수비자 설정</div>
|
||||
<div class="float-sm-right btn-toolbar" role="toolbar">
|
||||
<div class="btn-group btn-group-sm mr-2" role="group">
|
||||
<button type="button" class="btn btn-info btn-general-save">저장</button>
|
||||
<input type="file" class="form_load_general_file" accept=".json" style="display: none;" />
|
||||
<button type="button" class="btn btn-primary btn-general-load">불러오기</button>
|
||||
</div>
|
||||
<div class="btn-group btn-group-sm" role="group">
|
||||
<button type="button" class="btn btn-warning copy-defender">복제</button>
|
||||
<button type="button" class="btn btn-danger delete-defender">제거</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body general_detail">
|
||||
<div class="input-group mb-3">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">이름</span>
|
||||
</div>
|
||||
<input type="text" class="form-control form_general_name" value="무명" style="width:15ch;">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">직위</span>
|
||||
</div>
|
||||
<select class="custom-select form_general_level" style="width:8ch;">
|
||||
<option value="1">일반</option>
|
||||
<option value="4">태수</option>
|
||||
<option value="3">군사</option>
|
||||
<option value="2">시중</option>
|
||||
<option value="10">무장 수뇌</option>
|
||||
<option value="9">지장 수뇌</option>
|
||||
<option value="11">참모</option>
|
||||
<option value="12">군주</option>
|
||||
</select>
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Level</span>
|
||||
</div>
|
||||
<input type="number" class="form-control form_exp_level" value="20" min="0" max="300" step="1">
|
||||
|
||||
</div>
|
||||
<div class="input-group mb-1">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">통솔</span>
|
||||
</div>
|
||||
<input type="number" class="form-control form_leadership" value="50" min="1" max="300" step="1">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">무력</span>
|
||||
</div>
|
||||
<input type="number" class="form-control form_power" value="50" min="1" max="300" step="1">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">지력</span>
|
||||
</div>
|
||||
<input type="number" class="form-control form_intel" value="50" min="1" max="300" step="1">
|
||||
</div>
|
||||
<div class="input-group mb-1">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">명마</span>
|
||||
</div>
|
||||
<select class="custom-select form_general_horse">
|
||||
<?php foreach(range(0, 26) as $horseID): ?>
|
||||
<option value="<?=$horseID?>"><?=getHorseName($horseID)?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">무기</span>
|
||||
</div>
|
||||
<select class="custom-select form_general_weap">
|
||||
<?php foreach(range(0, 26) as $weapID): ?>
|
||||
<option value="<?=$weapID?>"><?=getWeapName($weapID)?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">서적</span>
|
||||
</div>
|
||||
<select class="custom-select form_general_book">
|
||||
<?php foreach(range(0, 26) as $bookID): ?>
|
||||
<option value="<?=$bookID?>"><?=getBookName($bookID)?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
<div class="input-group mb-3">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">부상</span>
|
||||
</div>
|
||||
<input type="number" class="form-control form_injury" value="0" min="0" max="80" step="1">
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">%(<span class="injury_helptext">건강</span>)</span>
|
||||
</div>
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">군량</span>
|
||||
</div>
|
||||
<input type="number" class="form-control form_rice" value="5000" min="50" max="40000" step="50">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">도구</span>
|
||||
</div>
|
||||
<select class="custom-select form_general_item">
|
||||
<?php foreach(range(0, 26) as $bookID): ?>
|
||||
<option value="<?=$bookID?>"><?=getItemName($bookID)?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
<div class="input-group mb-1">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">병종</span>
|
||||
</div>
|
||||
<select class="custom-select form_crewtype">
|
||||
<?php foreach(GameUnitConst::all() as $crewTypeID => $crewType): ?>
|
||||
<?php if($crewTypeID < 0){ continue; } ?>
|
||||
<option value="<?=$crewTypeID?>"><?=$crewType->name?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">병사</span>
|
||||
</div>
|
||||
<input type="number" class="form-control form_crew" value="7000" min="100" step="100">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">성격</span>
|
||||
</div>
|
||||
<select class="custom-select form_general_character">
|
||||
<?php foreach(getCharacterList() as $characterID => [$name,$info]): ?>
|
||||
<option value="<?=$characterID?>"><?=$name?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
<div class="input-group mb-3">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">훈련</span>
|
||||
</div>
|
||||
<input type="number" class="form-control form_train" value="100" min="40" max="<?=GameConst::$maxTrainByWar?>" step="1">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">사기</span>
|
||||
</div>
|
||||
<input type="number" class="form-control form_atmos" value="100" min="40" max="<?=GameConst::$maxAtmosByWar?>" step="1">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">전특</span>
|
||||
</div>
|
||||
<select class="custom-select form_general_special_war">
|
||||
<option value="0">-</option>
|
||||
<?php foreach(SpecialityConst::WAR as $specialWarID => [$name,$buff,$cond]): ?>
|
||||
<option value="<?=$specialWarID?>"><?=$name?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
<div class="input-group mb-1">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">보병숙련</span>
|
||||
</div>
|
||||
<select class="custom-select form_dex0">
|
||||
<?php foreach(getDexLevelList() as $dexLevel => [$dexAmount, $color, $name]): ?>
|
||||
<option value="<?=$dexAmount?>"><?="{$name} (".number_format($dexAmount).")"?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">궁병숙련</span>
|
||||
</div>
|
||||
<select class="custom-select form_dex10">
|
||||
<?php foreach(getDexLevelList() as $dexLevel => [$dexAmount, $color, $name]): ?>
|
||||
<option value="<?=$dexAmount?>"><?="{$name} (".number_format($dexAmount).")"?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">기병숙련</span>
|
||||
</div>
|
||||
<select class="custom-select form_dex20">
|
||||
<?php foreach(getDexLevelList() as $dexLevel => [$dexAmount, $color, $name]): ?>
|
||||
<option value="<?=$dexAmount?>"><?="{$name} (".number_format($dexAmount).")"?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
<div class="input-group mb-1">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">귀병숙련</span>
|
||||
</div>
|
||||
<select class="custom-select form_dex30">
|
||||
<?php foreach(getDexLevelList() as $dexLevel => [$dexAmount, $color, $name]): ?>
|
||||
<option value="<?=$dexAmount?>"><?="{$name} (".number_format($dexAmount).")"?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">차병숙련</span>
|
||||
</div>
|
||||
<select class="custom-select form_dex40">
|
||||
<?php foreach(getDexLevelList() as $dexLevel => [$dexAmount, $color, $name]): ?>
|
||||
<option value="<?=$dexAmount?>"><?="{$name} (".number_format($dexAmount).")"?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<div class="input-group-prepend only_defender">
|
||||
<span class="input-group-text">수비여부</span>
|
||||
</div>
|
||||
<select class="custom-select form_defend_mode only_defender">
|
||||
<option value="2">훈사 80</option>
|
||||
<option value="3">훈사 60</option>
|
||||
<option value="0">안함</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div><!-- <div class="col-sm"> -->
|
||||
</div>
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
전투 요약
|
||||
</div>
|
||||
<table class="table">
|
||||
<tbody id="battle_result_summary">
|
||||
<tr><th style='width:18ch;'>전투 일시</th><td id='result_datetime'></td></tr>
|
||||
<tr><th>전투 횟수</th><td id='result_warcnt'></td></tr>
|
||||
<tr><th>전투 페이즈</th><td id='result_phase'></td></tr>
|
||||
<tr><th>준 피해</th><td><span id='result_killed'>0</span><span id='result_varKilled'> (<span id='result_minKilled'>0</span> ~ <span id='result_maxKilled'>0</span>)</span></td></tr>
|
||||
<tr><th>받은 피해</th><td><span id='result_dead'>0</span><span id='result_varDead'> (<span id='result_minDead'>0</span> ~ <span id='result_maxDead'>0</span>)</span></td></tr>
|
||||
<tr><th>출병자 군량 소모</th><td id='result_attackerRice'></td></tr>
|
||||
<tr><th>수비자 군량 소모</th><td id='result_defenderRice'></td></tr>
|
||||
<tr><th>공격자 스킬</th><td id='result_attackerSkills'></td></tr>
|
||||
<tr class='result_defenderSkills'><th>수비자1 스킬</th><td></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm">
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
마지막 전투 로그
|
||||
</div>
|
||||
<div class="card-body" id="generalBattleResultLog">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
마지막 전투 상세 로그
|
||||
</div>
|
||||
<div class="card-body" id="generalBattleDetailLog">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+2
-2
@@ -28,13 +28,13 @@ if($me['level'] < 5) {
|
||||
exit();
|
||||
}
|
||||
|
||||
if($btn == "국가방침") {
|
||||
if($btn == "국가방침 수정") {
|
||||
$msg = mb_substr($msg, 0, 16384);
|
||||
//$msg = StringUtil::
|
||||
$db->update('nation', [
|
||||
'msg'=>WebUtil::htmlPurify($msg)
|
||||
], 'nation=%i',$me['nation']);
|
||||
} elseif($btn == "임관권유") {
|
||||
} elseif($btn == "임관 권유문 수정") {
|
||||
$scoutmsg = mb_substr($scoutmsg, 0, 1000);
|
||||
$db->update('nation', [
|
||||
'scoutmsg'=>WebUtil::htmlPurify($scoutmsg)
|
||||
|
||||
@@ -75,6 +75,12 @@ if($btn == "임명") {
|
||||
header('location:b_myBossInfo.php');
|
||||
exit();
|
||||
}
|
||||
|
||||
//NPC 부대장 추방 불가
|
||||
if($general['npc'] == 5){
|
||||
header('location:b_myBossInfo.php');
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
//나와 대상 장수는 국가가 같아야 함
|
||||
|
||||
+5
-1
@@ -16,6 +16,10 @@ $db = DB::db();
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
<script type="text/javascript">
|
||||
@@ -107,7 +111,7 @@ function myCommandList() {
|
||||
echo "
|
||||
<tr height=28>
|
||||
<td width=24 align=center height=24 id=bg0><b>$j</b></td>
|
||||
<td width=71 align=center height=24 id=bg1><b>{$year}年 {$month}月</b></td>
|
||||
<td width=71 align=center height=24 id=bg1 style='overflow:hidden;'><b>{$year}年 {$month}月</b></td>
|
||||
<td width=42 align=center bgcolor=black><b>$turndate</b></td>
|
||||
<td width=150 align=center height=24 style=table-layout:fixed;>$turn[$i]</td>
|
||||
</tr>";
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
#container{
|
||||
width:1024px;
|
||||
margin:auto;
|
||||
}
|
||||
|
||||
.defender_add_form .general_detail{
|
||||
display:none;
|
||||
}
|
||||
|
||||
|
||||
.form_sample{
|
||||
display:none;
|
||||
}
|
||||
|
||||
input[type=number]{
|
||||
text-align:right;
|
||||
}
|
||||
+17
-1
@@ -201,4 +201,20 @@ div.bar_out div.bar_in{
|
||||
font-size : .875rem;
|
||||
line-height : .5;
|
||||
border-radius : .2rem;
|
||||
}
|
||||
}
|
||||
|
||||
.edit_form.viewer{
|
||||
max-height:200px;
|
||||
overflow-y:auto;
|
||||
}
|
||||
|
||||
.trumbowyg-box{
|
||||
margin:0;
|
||||
border-left:none;
|
||||
border-right:none;
|
||||
}
|
||||
|
||||
.edit_form.trumbowyg-editor{
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
#scoutMsgForm .viewer{
|
||||
max-height:200px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.note-editor.card {
|
||||
background:inherit;
|
||||
color:inherit;
|
||||
font-family: inherit;
|
||||
border:none;
|
||||
}
|
||||
|
||||
.note-editor.note-frame .note-editing-area .note-editable {
|
||||
background:inherit;
|
||||
color:inherit;
|
||||
font-family: inherit;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
.note-editor.note-frame .note-statusbar{
|
||||
background-color:#444444;
|
||||
border-top: 1px solid rgba(0,0,0,0.125);
|
||||
}
|
||||
@@ -11,6 +11,12 @@
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.map_title_tooltiptext .tooltip-inner{
|
||||
max-width:220px;
|
||||
width:220px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.map_title_text{
|
||||
margin:auto;
|
||||
text-align:center;
|
||||
|
||||
+7
-5
@@ -417,7 +417,7 @@ function addCommand($typename, $value, $valid = 1, $color=0) {
|
||||
}
|
||||
} else {
|
||||
echo "
|
||||
<option style=color:white;background-color:red; value={$value}>{$typename}</option>";
|
||||
<option style=color:white;background-color:red; value={$value}>{$typename}(불가)</option>";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -709,7 +709,7 @@ function CoreCommandTable() {
|
||||
addCommand("몰수", 24, $valid);
|
||||
commandGroup("", 1);
|
||||
commandGroup("====== 외 교 ======");
|
||||
addCommand("통합 제의", 53, $valid);
|
||||
//addCommand("통합 제의", 53, $valid);
|
||||
|
||||
addCommand("항복 권고", 51, $valid);
|
||||
if($nation['level'] >= 2) {
|
||||
@@ -877,7 +877,7 @@ function generalInfo($no) {
|
||||
$imageTemp = GetImageURL($general['imgsvr']);
|
||||
echo "<table width=498 class='tb_layout bg2'>
|
||||
<tr>
|
||||
<td width=64 height=64 rowspan=3 style='text-align:center;background:no-repeat center url(\"{$imageTemp}/{$general['picture']}\");background-size:64px;'> </td>
|
||||
<td width=64 height=64 rowspan=3 class='generalIcon' style='text-align:center;background:no-repeat center url(\"{$imageTemp}/{$general['picture']}\");background-size:64px;'> </td>
|
||||
<td colspan=9 height=16 style=text-align:center;color:".newColor($nation['color']).";background-color:{$nation['color']};font-weight:bold;font-size:13px;>{$general['name']} 【 {$level} | {$call} | {$color}{$injury}</font> 】 ".substr($general['turntime'], 11)."</td>
|
||||
</tr>
|
||||
<tr height=16>
|
||||
@@ -1148,7 +1148,7 @@ function msgprint($msg, $name, $picture, $imgsvr, $when, $num, $type) {
|
||||
<td width=148 style='text-align:center;' class='bg1'>$when</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width=90 height=64 valign=top><img width='64' height='64' src={$imageTemp}/{$picture} border='0'></td>
|
||||
<td width=90 height=64 valign=top><img width='64' height='64' class='generalIcon' src='{$imageTemp}/{$picture}' border='0'></td>
|
||||
<td width=906 colspan=2>$message[1]</td>
|
||||
</tr>";
|
||||
for($i=0; $i < $count; $i++) {
|
||||
@@ -1245,14 +1245,16 @@ function increaseRefresh($type="", $cnt=1) {
|
||||
$session = Session::getInstance();
|
||||
$userID = $session->userID;
|
||||
$generalID = $session->generalID;
|
||||
$userGrade = $session->userGrade;
|
||||
|
||||
$date = date('Y-m-d H:i:s');
|
||||
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
$gameStor->refresh = $gameStor->refresh+$cnt; //TODO: +로 증가하는 값은 별도로 분리
|
||||
$isunited = $gameStor->isunited;
|
||||
|
||||
if($generalID) {
|
||||
if($isunited != 2 && $generalID && $userGrade < 6) {
|
||||
$db->update('general', [
|
||||
'lastrefresh'=>$date,
|
||||
'con'=>$db->sqleval('con + %i', $cnt),
|
||||
|
||||
@@ -511,7 +511,7 @@ function processCommand($no) {
|
||||
case 27: process_27($general); break; //발령
|
||||
case 51: process_51($general); break; //항복권고
|
||||
case 52: process_52($general); break; //원조
|
||||
case 53: process_53($general); break; //통합제의
|
||||
//case 53: process_53($general); break; //통합제의
|
||||
case 61: process_61($general); break; //불가침제의
|
||||
case 62: process_62($general); break; //선전 포고
|
||||
case 63: process_63($general); break; //종전 제의
|
||||
|
||||
+121
-163
@@ -8,43 +8,43 @@ namespace sammo;
|
||||
* Side effect 없이 값의 변환만을 수행하는 함수들의 모음.
|
||||
*/
|
||||
|
||||
|
||||
function NationCharCall($call) {
|
||||
switch($call) {
|
||||
case '명가': $type =13; break;
|
||||
case '음양가': $type =12; break;
|
||||
case '종횡가': $type =11; break;
|
||||
case '불가': $type =10; break;
|
||||
case '도적': $type = 9; break;
|
||||
case '오두미도':$type = 8; break;
|
||||
case '태평도': $type = 7; break;
|
||||
case '도가': $type = 6; break;
|
||||
case '묵가': $type = 5; break;
|
||||
case '덕가': $type = 4; break;
|
||||
case '병가': $type = 3; break;
|
||||
case '유가': $type = 2; break;
|
||||
case '법가': $type = 1; break;
|
||||
default: $type = 0; break;
|
||||
static $invTable = [];
|
||||
if(!$invTable){
|
||||
foreach(getNationTypeList() as $typeID => [$name, $pros, $cons]){
|
||||
$invTable[$name] = $typeID;
|
||||
}
|
||||
}
|
||||
return $type;
|
||||
return $invTable[$call]??0;
|
||||
}
|
||||
|
||||
function getCharacterList(){
|
||||
$infoText = [
|
||||
9=>['안전', '사기 -5, 징·모병 비용 -20%'],
|
||||
8=>['유지', '훈련 -5, 징·모병 비용 -20%'],
|
||||
7=>['재간', '명성 -10%, 징·모병 비용 -20%'],
|
||||
6=>['출세', '명성 +10%, 징·모병 비용 +20%'],
|
||||
5=>['할거', '명성 -10%, 훈련 +5'],
|
||||
4=>['정복', '명성 -10%, 사기 +5'],
|
||||
3=>['패권', '훈련 +5, 징·모병 비용 +20%'],
|
||||
2=>['의협', '사기 +5, 징·모병 비용 +20%'],
|
||||
1=>['대의', '명성 +10%, 훈련 -5'],
|
||||
0=>['왕좌', '명성 +10%, 사기 -5'],
|
||||
10=>['은둔', '명성 -10%, 계급 -10%, 사기 -5, 훈련 -5, 단련 성공률 +10%'],
|
||||
];
|
||||
return $infoText;
|
||||
}
|
||||
|
||||
function CharCall($call) {
|
||||
switch($call) {
|
||||
case '은둔': $type =10; break;
|
||||
case '안전'; $type = 9; break;
|
||||
case '유지'; $type = 8; break;
|
||||
case '재간'; $type = 7; break;
|
||||
case '출세'; $type = 6; break;
|
||||
case '할거'; $type = 5; break;
|
||||
case '정복'; $type = 4; break;
|
||||
case '패권'; $type = 3; break;
|
||||
case '의협'; $type = 2; break;
|
||||
default:
|
||||
case '대의'; $type = 1; break;
|
||||
case '왕좌'; $type = 0; break;
|
||||
static $invTable = [];
|
||||
if(\key_exists($call, $invTable)){
|
||||
return $invTable[$call];
|
||||
}
|
||||
return $type;
|
||||
|
||||
foreach(getCharacterList() as $id => [$name, $info]){
|
||||
$invTable[$name] = $id;
|
||||
}
|
||||
return $invTable[$call];
|
||||
}
|
||||
|
||||
function SpecCall($call) {
|
||||
@@ -120,42 +120,14 @@ function getNationLevel($level) {
|
||||
}
|
||||
|
||||
function getGenChar($type) {
|
||||
switch($type) {
|
||||
case 10: $call = '은둔'; break;
|
||||
case 9: $call = '안전'; break;
|
||||
case 8: $call = '유지'; break;
|
||||
case 7: $call = '재간'; break;
|
||||
case 6: $call = '출세'; break;
|
||||
case 5: $call = '할거'; break;
|
||||
case 4: $call = '정복'; break;
|
||||
case 3: $call = '패권'; break;
|
||||
case 2: $call = '의협'; break;
|
||||
case 1: $call = '대의'; break;
|
||||
case 0: $call = '왕좌'; break;
|
||||
}
|
||||
return $call;
|
||||
return getCharacterList()[$type][0];
|
||||
}
|
||||
|
||||
function getCharInfo(?int $type):?string {
|
||||
if($type === null){
|
||||
return null;
|
||||
}
|
||||
|
||||
$infoText = [
|
||||
10=>['은둔', '명성 -10%, 계급 -10%, 사기 -5, 훈련 -5, 단련 성공률 +10%'],
|
||||
9=>['안전', '사기 -5, 징·모병 비용 -20%'],
|
||||
8=>['유지', '훈련 -5, 징·모병 비용 -20%'],
|
||||
7=>['재간', '명성 -10%, 징·모병 비용 -20%'],
|
||||
6=>['출세', '명성 +10%, 징·모병 비용 +20%'],
|
||||
5=>['할거', '명성 -10%, 훈련 +5'],
|
||||
4=>['정복', '명성 -10%, 사기 +5'],
|
||||
3=>['패권', '훈련 +5, 징·모병 비용 +20%'],
|
||||
2=>['의협', '사기 +5, 징·모병 비용 +20%'],
|
||||
1=>['대의', '명성 +10%, 훈련 -5'],
|
||||
0=>['왕좌', '명성 +10%, 사기 -5'],
|
||||
];
|
||||
|
||||
return $infoText[$type][1]??null;
|
||||
return getCharacterList()[$type][1]??null;
|
||||
}
|
||||
|
||||
function getGenSpecial($type) {
|
||||
@@ -237,7 +209,7 @@ function getSpecialInfo(?int $type):?string{
|
||||
|
||||
60 => ['돌격', '[전투] 상대 회피 불가, 공격 시 전투 페이즈 +1, 공격 시 대미지 +10%'],
|
||||
61 => ['무쌍', '[전투] 대미지 +10%, 공격 시 필살 확률 +10%p'],
|
||||
62 => ['견고', '[전투] 상대 필살 불가, 상대 계략 시도시 성공 확률 -10%p'],
|
||||
62 => ['견고', '[전투] 상대 필살, 격노, 위압, 저격 불가, 상대 계략 시도시 성공 확률 -10%p, 부상 없음, 아군 피해 -5%'],
|
||||
63 => ['위압', '[전투] 훈련/사기≥90, 병력≥1,000 일 때 첫 페이즈 위압 발동(적 공격 불가)'],
|
||||
|
||||
70 => ['저격', '[전투] 전투 개시 시 1/3 확률로 저격 발동'],
|
||||
@@ -251,24 +223,20 @@ function getSpecialInfo(?int $type):?string{
|
||||
return $infoText[$type][1]??null;
|
||||
}
|
||||
|
||||
function getNationType($type) {
|
||||
switch($type) {
|
||||
case 13: $call = '명 가'; break;
|
||||
case 12: $call = '음 양 가'; break;
|
||||
case 11: $call = '종 횡 가'; break;
|
||||
case 10: $call = '불 가'; break;
|
||||
case 9: $call = '도 적'; break;
|
||||
case 8: $call = '오 두 미 도'; break;
|
||||
case 7: $call = '태 평 도'; break;
|
||||
case 6: $call = '도 가'; break;
|
||||
case 5: $call = '묵 가'; break;
|
||||
case 4: $call = '덕 가'; break;
|
||||
case 3: $call = '병 가'; break;
|
||||
case 2: $call = '유 가'; break;
|
||||
case 1: $call = '법 가'; break;
|
||||
case 0: $call = '-'; break;
|
||||
function getNationType(?int $type) {
|
||||
if($type === null){
|
||||
return '-';
|
||||
}
|
||||
return $call;
|
||||
static $cache = [];
|
||||
if(\key_exists($type, $cache)){
|
||||
return $cache[$type];
|
||||
}
|
||||
|
||||
$text = getNationTypeList()[$type][0]??'-';
|
||||
$text = join(' ', StringUtil::splitString($text));
|
||||
$cache[$type] = $text;
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
||||
|
||||
@@ -287,24 +255,12 @@ function getConnect($con) {
|
||||
return $conname;
|
||||
}
|
||||
|
||||
function getNationType2($type) {
|
||||
switch($type) {
|
||||
case 13: $call = '<font color=cyan>기술↑ 인구↑</font> <font color=magenta>쌀수입↓ 수성↓</font>'; break;
|
||||
case 12: $call = '<font color=cyan>내정↑ 인구↑</font> <font color=magenta>기술↓ 전략↓</font>'; break;
|
||||
case 11: $call = '<font color=cyan>전략↑ 수성↑</font> <font color=magenta>금수입↓ 내정↓</font>'; break;
|
||||
case 10: $call = '<font color=cyan>민심↑ 수성↑</font> <font color=magenta>금수입↓</font>'; break;
|
||||
case 9: $call = '<font color=cyan>계략↑</font> <font color=magenta>금수입↓ 치안↓ 민심↓</font>'; break;
|
||||
case 8: $call = '<font color=cyan>쌀수입↑ 인구↑</font> <font color=magenta>기술↓ 수성↓ 내정↓</font>'; break;
|
||||
case 7: $call = '<font color=cyan>인구↑ 민심↑</font> <font color=magenta>기술↓ 수성↓</font>'; break;
|
||||
case 6: $call = '<font color=cyan>인구↑</font> <font color=magenta>기술↓ 치안↓</font>'; break;
|
||||
case 5: $call = '<font color=cyan>수성↑</font> <font color=magenta>기술↓</font>'; break;
|
||||
case 4: $call = '<font color=cyan>치안↑인구↑ 민심↑</font> <font color=magenta>쌀수입↓ 수성↓</font>'; break;
|
||||
case 3: $call = '<font color=cyan>기술↑ 수성↑</font> <font color=magenta>인구↓ 민심↓</font>'; break;
|
||||
case 2: $call = '<font color=cyan>내정↑ 민심↑</font> <font color=magenta>쌀수입↓</font>'; break;
|
||||
case 1: $call = '<font color=cyan>금수입↑ 치안↑</font> <font color=magenta>인구↓ 민심↓</font>'; break;
|
||||
case 0: $call = '-'; break;
|
||||
function getNationType2(?int $type) {
|
||||
if($type === null){
|
||||
return '-';
|
||||
}
|
||||
return $call;
|
||||
[$name, $pros, $cons] = getNationTypeList()[$type]??['-', '', ''];
|
||||
return "<font color=cyan>{$pros}</font> <font color=magenta>{$cons}</font>";
|
||||
}
|
||||
|
||||
function getLevel($level, $nlevel=8) {
|
||||
@@ -358,7 +314,7 @@ function getCall($leader, $power, $intel) {
|
||||
$call = '평범';
|
||||
|
||||
if($leader < 40){
|
||||
if($power + $intel < $leader){
|
||||
if($power + $intel < 40){
|
||||
return '아둔';
|
||||
}
|
||||
if($intel >= GameConst::$chiefStatMin && $power < $intel * 0.8){
|
||||
@@ -381,6 +337,9 @@ function getCall($leader, $power, $intel) {
|
||||
if($intel >= GameConst::$chiefStatMin - GameConst::$statGradeLevel && $power < $intel * 0.8){
|
||||
return '명장';
|
||||
}
|
||||
if($leader >= GameConst::$chiefStatMin - GameConst::$statGradeLevel && $power + $intel < $leader){
|
||||
return '차장';
|
||||
}
|
||||
return '평범';
|
||||
}
|
||||
|
||||
@@ -491,74 +450,73 @@ function getTechCall($tech) : string {
|
||||
return "{$techLevel}등급";
|
||||
}
|
||||
|
||||
function getDexCall($dex) : string {
|
||||
if($dex < 2500) { $str = '<font color="navy">F-</font>'; }
|
||||
elseif($dex < 7500) { $str = '<font color="navy">F</font>'; }
|
||||
elseif($dex < 15000) { $str = '<font color="navy">F+</font>'; }
|
||||
elseif($dex < 25000) { $str = '<font color="skyblue">E-</font>'; }
|
||||
elseif($dex < 37500) { $str = '<font color="skyblue">E</font>'; }
|
||||
elseif($dex < 52500) { $str = '<font color="skyblue">E+</font>'; }
|
||||
elseif($dex < 70000) { $str = '<font color="seagreen">D-</font>'; }
|
||||
elseif($dex < 90000) { $str = '<font color="seagreen">D</font>'; }
|
||||
elseif($dex < 112500) { $str = '<font color="seagreen">D+</font>'; }
|
||||
elseif($dex < 137500) { $str = '<font color="teal">C-</font>'; }
|
||||
elseif($dex < 165000) { $str = '<font color="teal">C</font>'; }
|
||||
elseif($dex < 195000) { $str = '<font color="teal">C+</font>'; }
|
||||
elseif($dex < 227500) { $str = '<font color="limegreen">B-</font>'; }
|
||||
elseif($dex < 262500) { $str = '<font color="limegreen">B</font>'; }
|
||||
elseif($dex < 300000) { $str = '<font color="limegreen">B+</font>'; }
|
||||
elseif($dex < 340000) { $str = '<font color="gold">A-</font>'; }
|
||||
elseif($dex < 382500) { $str = '<font color="gold">A</font>'; }
|
||||
elseif($dex < 427500) { $str = '<font color="gold">A+</font>'; }
|
||||
elseif($dex < 475000) { $str = '<font color="darkorange">S-</font>'; }
|
||||
elseif($dex < 525000) { $str = '<font color="darkorange">S</font>'; }
|
||||
elseif($dex < 577500) { $str = '<font color="darkorange">S+</font>'; }
|
||||
elseif($dex < 632500) { $str = '<font color="tomato">SS-</font>'; }
|
||||
elseif($dex < 690000) { $str = '<font color="tomato">SS</font>'; }
|
||||
elseif($dex < 750000) { $str = '<font color="tomato">SS+</font>'; }
|
||||
elseif($dex < 812500) { $str = '<font color="red">SSS-</font>'; }
|
||||
elseif($dex < 877500) { $str = '<font color="red">SSS</font>'; }
|
||||
elseif($dex < 945000) { $str = '<font color="red">SSS+</font>'; }
|
||||
elseif($dex < 1015000) { $str = '<font color="darkviolet">Z-</font>'; }
|
||||
elseif($dex < 1087500) { $str = '<font color="darkviolet">Z</font>'; }
|
||||
elseif($dex < 1162500) { $str = '<font color="darkviolet">Z+</font>'; }
|
||||
else { $str = '<font color="white">?</font>'; }
|
||||
return $str;
|
||||
function getDexLevelList(): array{
|
||||
return [
|
||||
[0, 'navy', 'F-'],
|
||||
[2500, 'navy', 'F'],
|
||||
[7500, 'navy', 'F+'],
|
||||
[15000, 'skyblue', 'E-'],
|
||||
[25000, 'skyblue', 'E'],
|
||||
[37500, 'skyblue', 'E+'],
|
||||
[52500, 'seagreen', 'D-'],
|
||||
[70000, 'seagreen', 'D'],
|
||||
[90000, 'seagreen', 'D+'],
|
||||
[112500, 'teal', 'C-'],
|
||||
[137500, 'teal', 'C'],
|
||||
[165000, 'teal', 'C+'],
|
||||
[195000, 'limegreen', 'B-'],
|
||||
[227500, 'limegreen', 'B'],
|
||||
[262500, 'limegreen', 'B+'],
|
||||
[300000, 'gold', 'A-'],
|
||||
[340000, 'gold', 'A'],
|
||||
[382500, 'gold', 'A+'],
|
||||
[427500, 'darkorange', 'S-'],
|
||||
[475000, 'darkorange', 'S'],
|
||||
[525000, 'darkorange', 'S+'],
|
||||
[577500, 'tomato', 'SS-'],
|
||||
[632500, 'tomato', 'SS'],
|
||||
[690000, 'tomato', 'SS+'],
|
||||
[750000, 'red', 'SSS-'],
|
||||
[812500, 'red', 'SSS'],
|
||||
[877500, 'red', 'SSS+'],
|
||||
[945000, 'darkviolet', 'Z-'],
|
||||
[1015000, 'darkviolet', 'Z'],
|
||||
[1087500, 'darkviolet', 'Z+'],
|
||||
[1162500, 'white', '?']
|
||||
];
|
||||
}
|
||||
|
||||
function getDexLevel($dex) : int {
|
||||
if($dex < 2500) { $lvl = 0; }
|
||||
elseif($dex < 7500) { $lvl = 1; }
|
||||
elseif($dex < 15000) { $lvl = 2; }
|
||||
elseif($dex < 25000) { $lvl = 3; }
|
||||
elseif($dex < 37500) { $lvl = 4; }
|
||||
elseif($dex < 52500) { $lvl = 5; }
|
||||
elseif($dex < 70000) { $lvl = 6; }
|
||||
elseif($dex < 90000) { $lvl = 7; }
|
||||
elseif($dex < 112500) { $lvl = 8; }
|
||||
elseif($dex < 137500) { $lvl = 9; }
|
||||
elseif($dex < 165000) { $lvl = 10; }
|
||||
elseif($dex < 195000) { $lvl = 11; }
|
||||
elseif($dex < 227500) { $lvl = 12; }
|
||||
elseif($dex < 262500) { $lvl = 13; }
|
||||
elseif($dex < 300000) { $lvl = 14; }
|
||||
elseif($dex < 340000) { $lvl = 15; }
|
||||
elseif($dex < 382500) { $lvl = 16; }
|
||||
elseif($dex < 427500) { $lvl = 17; }
|
||||
elseif($dex < 475000) { $lvl = 18; }
|
||||
elseif($dex < 525000) { $lvl = 19; }
|
||||
elseif($dex < 577500) { $lvl = 20; }
|
||||
elseif($dex < 632500) { $lvl = 21; }
|
||||
elseif($dex < 690000) { $lvl = 22; }
|
||||
elseif($dex < 750000) { $lvl = 23; }
|
||||
elseif($dex < 812500) { $lvl = 24; }
|
||||
elseif($dex < 877500) { $lvl = 25; }
|
||||
elseif($dex < 945000) { $lvl = 26; }
|
||||
elseif($dex < 1015000) { $lvl = 27; }
|
||||
elseif($dex < 1087500) { $lvl = 28; }
|
||||
elseif($dex < 1162500) { $lvl = 29; }
|
||||
else { $lvl = 30; }
|
||||
return $lvl;
|
||||
function getDexCall(int $dex) : string {
|
||||
if($dex < 0){
|
||||
throw new \InvalidArgumentException();
|
||||
}
|
||||
|
||||
$color = null;
|
||||
$name = null;
|
||||
foreach(getDexLevelList() as $dexLevel => [$dexKey, $nextColor, $nextName]){
|
||||
if($dex < $dexKey){
|
||||
break;
|
||||
}
|
||||
$color = $nextColor;
|
||||
$name = $nextName;
|
||||
}
|
||||
|
||||
return "<font color='{$color}'>{$name}</font>";
|
||||
}
|
||||
|
||||
function getDexLevel(int $dex) : int {
|
||||
if($dex < 0){
|
||||
throw new \InvalidArgumentException();
|
||||
}
|
||||
|
||||
$retVal = null;
|
||||
foreach(getDexLevelList() as $dexLevel => [$dexKey, $nextColor, $nextName]){
|
||||
if($dex < $dexKey){
|
||||
break;
|
||||
}
|
||||
$retVal = $dexLevel;
|
||||
}
|
||||
return $dexLevel;
|
||||
}
|
||||
|
||||
function getDexLog($dex1, $dex2) {
|
||||
|
||||
+105
-14
@@ -5,6 +5,51 @@ namespace sammo;
|
||||
* 게임 룰에 해당하는 함수 모음
|
||||
*/
|
||||
|
||||
function getNationLevelList():array{
|
||||
$table = [
|
||||
0 => ['방랑군', 2, 0],
|
||||
1 => ['호족', 2, 1],
|
||||
2 => ['군벌', 4, 2],
|
||||
3 => ['주자사', 4, 5],
|
||||
4 => ['주목', 6, 8],
|
||||
5 => ['공', 6, 11],
|
||||
6 => ['왕', 8, 16],
|
||||
7 => ['황제', 8, 21],
|
||||
];
|
||||
return $table;
|
||||
}
|
||||
|
||||
function getNationTypeList():array{
|
||||
$table = [
|
||||
13=>['명가', '기술↑ 인구↑', '쌀수입↓ 수성↓'],
|
||||
12=>['음양가', '내정↑ 인구↑', '기술↓ 전략↓'],
|
||||
11=>['종횡가', '전략↑ 수성↑', '금수입↓ 내정↓'],
|
||||
10=>['불가', '민심↑ 수성↑', '금수입↓'],
|
||||
9=>['도적', '계략↑', '금수입↓ 치안↓ 민심↓'],
|
||||
8=>['오두미도', '쌀수입↑ 인구↑', '기술↓ 수성↓ 내정↓'],
|
||||
7=>['태평도', '인구↑ 민심↑', '기술↓ 수성↓'],
|
||||
6=>['도가', '인구↑', '기술↓ 치안↓'],
|
||||
5=>['묵가', '수성↑', '기술↓'],
|
||||
4=>['덕가', '치안↑인구↑ 민심↑', '쌀수입↓ 수성↓'],
|
||||
3=>['병가', '기술↑ 수성↑', '인구↓ 민심↓'],
|
||||
2=>['유가', '내정↑ 민심↑', '쌀수입↓'],
|
||||
1=>['법가', '금수입↑ 치안↑', '인구↓ 민심↓'],
|
||||
];
|
||||
return $table;
|
||||
}
|
||||
|
||||
function getCityLevelList():array{
|
||||
return [
|
||||
1 => '수',
|
||||
2 => '진',
|
||||
3 => '관',
|
||||
4 => '이',
|
||||
5 => '소',
|
||||
6 => '중',
|
||||
7 => '대',
|
||||
8 => '특'
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* 게임 내부에 사용하는 유틸리티 함수들을 분리
|
||||
@@ -184,7 +229,7 @@ function SetNationFront($nationNo) {
|
||||
|
||||
if($adj){
|
||||
$db->update('city', [
|
||||
'front'=>1
|
||||
'front'=>($enemyCities?1:2),
|
||||
], 'nation=%i and city in %li', $nationNo, array_keys($adj));
|
||||
}
|
||||
}
|
||||
@@ -517,11 +562,14 @@ function postUpdateMonthly() {
|
||||
$genCount = $genNum[$dip['me']];
|
||||
// 25% 참여율일때 두당 10턴에 4000명 소모한다고 계산
|
||||
// 4000 / 10 * 0.25 = 100
|
||||
$term = Util::round($dip['dead'] / 100 / $genCount) + 1;
|
||||
if($dip['term'] > $term) { $term = $dip['term']; }
|
||||
if($term > 13) { $term = 13; }
|
||||
$query = "update diplomacy set term='{$term}' where (me='{$dip['me']}' and you='{$dip['you']}')";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$term = floor($dip['dead'] / 100 / $genCount);
|
||||
$dip['dead'] -= $term * 100 * $genCount;
|
||||
$term = Util::valueFit($dip['term'] + $term, 0, 13);
|
||||
|
||||
$db->update('diplomacy', [
|
||||
'term' => $term,
|
||||
'dead'=> $dip['dead'],
|
||||
], 'me = %i AND you = %i', $dip['me'], $dip['you']);
|
||||
}
|
||||
|
||||
//개전국 로그
|
||||
@@ -564,7 +612,7 @@ function postUpdateMonthly() {
|
||||
}
|
||||
pushWorldHistory($history, $admin['year'], $admin['month']);
|
||||
//사상자 초기화
|
||||
$query = "update diplomacy set dead=0";
|
||||
$query = "update diplomacy set dead=0 WHERE state != 0";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
//외교 기한-1
|
||||
$query = "update diplomacy set term=term-1 where term!=0";
|
||||
@@ -915,9 +963,9 @@ function updateNationState() {
|
||||
$connect=$db->get();
|
||||
|
||||
$history = array();
|
||||
$admin = $gameStor->getValues(['year', 'month']);
|
||||
$admin = $gameStor->getValues(['year', 'month', 'fiction', 'startyear', 'show_img_level', 'turnterm']);
|
||||
|
||||
$query = "select nation,name,level from nation";
|
||||
$query = "select nation,name,level,gennum,tech from nation";
|
||||
$nationresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$nationcount = MYDB_num_rows($nationresult);
|
||||
|
||||
@@ -928,10 +976,6 @@ function updateNationState() {
|
||||
$cityresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$citycount = MYDB_num_rows($cityresult);
|
||||
|
||||
$query = "select no from general where nation='{$nation['nation']}'";
|
||||
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$gencount = MYDB_num_rows($genresult);
|
||||
|
||||
if($citycount == 0) {
|
||||
$nationlevel = 0; // 방랑군
|
||||
} elseif($citycount == 1) {
|
||||
@@ -951,6 +995,7 @@ function updateNationState() {
|
||||
}
|
||||
|
||||
if($nationlevel > $nation['level']) {
|
||||
$oldLevel = $nation['level'];
|
||||
$nation['level'] = $nationlevel;
|
||||
|
||||
switch($nationlevel) {
|
||||
@@ -975,16 +1020,62 @@ function updateNationState() {
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
$lastAssemblerID = $gameStor->assembler_id??0;
|
||||
for($levelGen = max(1, $oldLevel) + 1; $levelGen <= $nationlevel; $levelGen+=1){
|
||||
if(in_array($levelGen, [3, 5, 7])){
|
||||
$genStep = 2;
|
||||
}
|
||||
else{
|
||||
$genStep = 1;
|
||||
}
|
||||
|
||||
while($genStep > 0){
|
||||
$lastAssemblerID += 1;
|
||||
$npcObj = new Scenario\NPC(
|
||||
999, '부대장'.$lastAssemblerID, null, $nation['nation'], null,
|
||||
10, 10, 10, 1, $admin['year'] - 15, $admin['year'] + 15, '은둔', '척사'
|
||||
);
|
||||
$npcObj->npc = 5;
|
||||
$npcObj->build($admin);
|
||||
$npcID = $npcObj->generalID;
|
||||
|
||||
$db->insert('troop', [
|
||||
'name'=>$npcObj->realName,
|
||||
'nation'=>$nation['nation'],
|
||||
'no'=>$npcID
|
||||
]);
|
||||
$troopID = $db->insertId();
|
||||
|
||||
$command = EncodeCommand(0, 0, 0, 26); //집합
|
||||
$db->update('general', [
|
||||
'troop'=>$troopID,
|
||||
'turn0'=>$command,
|
||||
'turn1'=>$command,
|
||||
'turn2'=>$command,
|
||||
'turn3'=>$command,
|
||||
'turn4'=>$command,
|
||||
'turn5'=>$command,
|
||||
'killturn'=>80
|
||||
], 'no=%i', $npcID);
|
||||
$genStep -= 1;
|
||||
}
|
||||
}
|
||||
$gameStor->assembler_id = $lastAssemblerID;
|
||||
|
||||
//작위 상승
|
||||
$query = "update nation set level='{$nation['level']}' where nation='{$nation['nation']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
|
||||
refreshNationStaticInfo();
|
||||
}
|
||||
|
||||
$gencount = $db->queryFirstField('SELECT count(*) FROM general WHERE nation=%i', $nation['nation']);
|
||||
|
||||
$gennum = $gencount;
|
||||
if($gencount < GameConst::$initialNationGenLimit) $gencount = GameConst::$initialNationGenLimit;
|
||||
//기술 및 변경횟수 업데이트
|
||||
$query = "update nation set tech=totaltech/'$gencount',gennum='$gennum' where nation='{$nation['nation']}'";
|
||||
$query = "update nation set totaltech=tech*'$gencount',gennum='$gennum' where nation='{$nation['nation']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
}
|
||||
pushWorldHistory($history, $admin['year'], $admin['month']);
|
||||
|
||||
+54
-10
@@ -192,10 +192,34 @@ function processAI($no) {
|
||||
$isStart = 0;
|
||||
}
|
||||
|
||||
$query = "select no,turn0,npcid,name,nation,nations,city,level,npcmsg,personal,leader,intel,power,gold,rice,crew,train,atmos,npc,affinity,mode,injury,picture,imgsvr,killturn,makelimit,dex0,dex10,dex20,dex30,dex40 from general where no='$no'";
|
||||
$query = "select no,turn0,npcid,name,nation,nations,city,level,npcmsg,personal,leader,intel,power,gold,rice,crew,train,atmos,troop,npc,affinity,mode,injury,picture,imgsvr,killturn,makelimit,dex0,dex10,dex20,dex30,dex40 from general where no='$no'";
|
||||
$result = MYDB_query($query, $connect) or Error("processAI01 ".MYDB_error($connect),"");
|
||||
$general = MYDB_fetch_array($result);
|
||||
|
||||
if($general['npc'] == 5){
|
||||
if($general['nation'] == 0 && $general['killturn'] > 1){
|
||||
$command = EncodeCommand(0, 0, 0, 0); //휴식
|
||||
$db->update('general', [
|
||||
'turn0'=>$command,
|
||||
'killturn'=>1
|
||||
], 'no=%i', $general['no']);
|
||||
}
|
||||
else{
|
||||
$command = EncodeCommand(0, 0, 0, 26); //집합
|
||||
$db->update('general', [
|
||||
'turn0'=>$command,
|
||||
'turn1'=>$command,
|
||||
'turn2'=>$command,
|
||||
'turn3'=>$command,
|
||||
'turn4'=>$command,
|
||||
'turn5'=>$command,
|
||||
'killturn'=>rand(70,75),
|
||||
], 'no=%i', $general['no']);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// 입력된 턴이 있으면 그것 실행
|
||||
if(DecodeCommand($general['turn0'])[0] != 0) {
|
||||
return;
|
||||
@@ -224,7 +248,7 @@ function processAI($no) {
|
||||
$coreCommand = MYDB_fetch_array($result);
|
||||
}
|
||||
|
||||
$cityCount = $db->queryFirstField('SELECT count(city) FROM city WHERE nation=%i AND supply=1 AND front=1', $general['nation']);
|
||||
$cityCount = $db->queryFirstField('SELECT count(city) FROM city WHERE nation=%i AND supply=1 AND front>0', $general['nation']);
|
||||
// 공격가능도시 있으면 1
|
||||
$attackable = $cityCount > 0;
|
||||
|
||||
@@ -467,7 +491,7 @@ function processAI($no) {
|
||||
|
||||
SetNationFront($nation['nation']);
|
||||
|
||||
$frontCount = $db->queryFirstField('SELECT count(city) FROM city WHERE nation=%i AND front=1', $general['nation']);
|
||||
$frontCount = $db->queryFirstField('SELECT count(city) FROM city WHERE nation=%i AND front>0', $general['nation']);
|
||||
if($frontCount > 0){
|
||||
break;
|
||||
}
|
||||
@@ -721,7 +745,7 @@ function processAI($no) {
|
||||
//전시일때
|
||||
if($general['gold'] + $general['rice'] < $resrc*2) { $command = EncodeCommand(0, 0, 0, 9); } //금쌀없으면 조달
|
||||
elseif($general['rice'] > $resrc && $city['rate'] < 95 && $city['front'] == 0) { $command = EncodeCommand(0, 0, 0, 4); } // 우선 선정
|
||||
elseif($general['rice'] > $resrc && $city['rate'] < 50 && $city['front'] == 1) { $command = EncodeCommand(0, 0, 0, 4); } // 우선 선정
|
||||
elseif($general['rice'] > $resrc && $city['rate'] < 50 && $city['front'] > 0) { $command = EncodeCommand(0, 0, 0, 4); } // 우선 선정
|
||||
elseif($general['gold'] < $resrc || ($general['gold'] < $resrc *2 && $general['rice'] > $resrc * 6)) { // 금없으면 쌀팜
|
||||
$amount = intdiv(($general['rice'] - $general['gold'])/2, 100); // 100단위
|
||||
if($amount > 0) { $command = EncodeCommand(0, 1, $amount, 49); }// 팜
|
||||
@@ -803,9 +827,9 @@ function processAI($no) {
|
||||
if(count($target) == 0) {
|
||||
//전방 도시 선택, 30% 확률로 태수 있는 전방으로 워프
|
||||
if(rand()%100 < 30) {
|
||||
$query = "select city from city where nation='{$general['nation']}' and supply='1' and front=1 order by gen1 desc,rand() limit 0,1";
|
||||
$query = "select city from city where nation='{$general['nation']}' and supply='1' and front>0 order by gen1 desc,rand() limit 0,1";
|
||||
} else {
|
||||
$query = "select city from city where nation='{$general['nation']}' and supply='1' and front=1 order by rand() limit 0,1";
|
||||
$query = "select city from city where nation='{$general['nation']}' and supply='1' and front>0 order by rand() limit 0,1";
|
||||
}
|
||||
$result = MYDB_query($query, $connect) or Error("processAI10 ".MYDB_error($connect),"");
|
||||
$cityCount = MYDB_num_rows($result);
|
||||
@@ -913,7 +937,7 @@ function NPCStaffWork($general, $nation, $dipState){
|
||||
|
||||
$commandList = [];
|
||||
|
||||
foreach($db->query('SELECT `no`, nation, city, npc, `gold`, `rice`, leader, `power`, intel, killturn, crew, train, atmos, `level` FROM general WHERE nation = %i', $general['nation']) as $nationGeneral) {
|
||||
foreach($db->query('SELECT `no`, nation, city, npc, `gold`, `rice`, leader, `power`, intel, killturn, crew, train, atmos, `level`, troop FROM general WHERE nation = %i', $general['nation']) as $nationGeneral) {
|
||||
$cityID = $nationGeneral['city'];
|
||||
$generalID = $nationGeneral['no'];
|
||||
|
||||
@@ -1082,7 +1106,15 @@ function NPCStaffWork($general, $nation, $dipState){
|
||||
}
|
||||
} else{ // 포상
|
||||
$compNpcWar = $npcWarGeneralsID?$nationGenerals[$npcWarGeneralsID[0]]:null;
|
||||
$compNpcCivil = $npcCivilGeneralsID?$nationGenerals[$npcCivilGeneralsID[0]]:null;
|
||||
$compNpcCivil = null;
|
||||
foreach($npcCivilGeneralsID??[] as $npcCivilID){
|
||||
$npcCivil = $nationGenerals[$npcCivilID];
|
||||
if($npcCivil['npc'] == 5){
|
||||
continue;
|
||||
}
|
||||
$compNpcCivil = $npcCivil;
|
||||
break;
|
||||
}
|
||||
|
||||
if($compNpcWar && $compNpcWar[$resName] < 21000){
|
||||
$amount = min(100, intdiv(($nation[$resName]-($resName=='rice'?(GameConst::$baserice):(GameConst::$basegold))), 5000)*10 + 10);
|
||||
@@ -1171,13 +1203,18 @@ function NPCStaffWork($general, $nation, $dipState){
|
||||
|
||||
if($maxDevCity['dev'] >= 95 && $targetCity['city'] != $maxDevCity['city'] && $targetCity['dev'] <= 70){
|
||||
$targetGeneral = $nationGenerals[Util::choiceRandom($maxDevCity['generals'])];
|
||||
$commandList[EncodeCommand(0, $targetGeneral['no'], $targetCity['city'], 27)] = 2;
|
||||
if($targetGeneral['troop'] != 0){
|
||||
$commandList[EncodeCommand(0, $targetGeneral['no'], $targetCity['city'], 27)] = 2;
|
||||
}
|
||||
}
|
||||
|
||||
if(count($targetCity['generals']) < count($maxCity['generals']) - 2){
|
||||
//세명 이상 차이나야 함
|
||||
$targetGeneral = $nationGenerals[Util::choiceRandom($maxCity['generals'])];
|
||||
if($targetGeneral['npc']>=2 || $maxCity['dev'] >= 95){
|
||||
if($targetGeneral['npc']==5){
|
||||
|
||||
}
|
||||
else if($targetGeneral['npc']>=2 || $maxCity['dev'] >= 95 && $targetGeneral['troop'] == 0){
|
||||
//유저장은 의도가 있을 것이므로 삽나지 않는 이상 발령 안함!
|
||||
$commandList[EncodeCommand(0, $targetGeneral['no'], $targetCity['city'], 27)] = 5;
|
||||
}
|
||||
@@ -1205,6 +1242,10 @@ function NPCStaffWork($general, $nation, $dipState){
|
||||
if($nationGeneral['train'] * $nationGeneral['atmos'] < 75 * 75){
|
||||
continue;
|
||||
}
|
||||
|
||||
if($nationGeneral['troop'] != 0){
|
||||
continue;
|
||||
}
|
||||
|
||||
$score = 5;
|
||||
if($nationGeneral['npc']<2){
|
||||
@@ -1255,6 +1296,9 @@ function NPCStaffWork($general, $nation, $dipState){
|
||||
if($generalCity['pop'] - 33000 > $nationGeneral['leader']){
|
||||
continue;
|
||||
}
|
||||
if($nationGeneral['troop'] != 0){
|
||||
continue;
|
||||
}
|
||||
|
||||
$score = 5;
|
||||
if($nationGeneral['npc']<2){
|
||||
|
||||
@@ -273,6 +273,10 @@ function process_1(&$general, $type) {
|
||||
$exp = CharExperience($exp, $general['personal']);
|
||||
$ded = CharDedication($ded, $general['personal']);
|
||||
|
||||
if($city['front'] == 1 && $city['city'] != $nation['capital']){
|
||||
$score *= 0.5;
|
||||
}
|
||||
|
||||
$score += $city["$stype"];
|
||||
if($score > $city["{$stype}2"]) { $score = $city["{$stype}2"]; }
|
||||
// 내정 상승
|
||||
@@ -558,6 +562,16 @@ function process_5(&$general, $type) {
|
||||
$exp = $score * 0.7;
|
||||
$ded = $score * 1.0;
|
||||
|
||||
if($city['front'] == 1 && $city['city'] != $nation['capital']){
|
||||
if($stype == 'def'){
|
||||
$score *= 0.5;
|
||||
}
|
||||
else{
|
||||
$score *= 0.25;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 성격 보정
|
||||
$exp = CharExperience($exp, $general['personal']);
|
||||
$ded = CharDedication($ded, $general['personal']);
|
||||
|
||||
@@ -397,7 +397,7 @@ function process_52(&$general) {
|
||||
$younation = MYDB_fetch_array($result);
|
||||
|
||||
if($gold > $mynation['gold']-GameConst::$basegold) { $gold = $mynation['gold'] - GameConst::$basegold; }
|
||||
if($rice > $mynation['rice']-GameConst::$baserice) { $rice = $mynation['rice'] - GameConst::$basegold; }
|
||||
if($rice > $mynation['rice']-GameConst::$baserice) { $rice = $mynation['rice'] - GameConst::$baserice; }
|
||||
|
||||
if($younation['nation'] == 0) {
|
||||
$log[] = "<C>●</>{$admin['month']}월:멸망한 국가입니다. 원조 실패. <1>$date</>";
|
||||
@@ -1032,7 +1032,7 @@ function process_66(&$general) {
|
||||
$log[] = "<C>●</>{$admin['month']}월:인접도시가 아닙니다. 천도 실패. <1>$date</>";
|
||||
} elseif($nation['capset'] == 1) {
|
||||
$log[] = "<C>●</>{$admin['month']}월:다음 분기에 가능합니다. 천도 실패. <1>$date</>";
|
||||
} elseif($nation['gold']-GameConst::$basegold < $amount || $nation['rice']-GameConst::$basegold < $amount) {
|
||||
} elseif($nation['gold']-GameConst::$basegold < $amount || $nation['rice']-GameConst::$baserice < $amount) {
|
||||
$log[] = "<C>●</>{$admin['month']}월:물자가 부족합니다. 천도 실패. <1>$date</>";
|
||||
} elseif($term < 3) {
|
||||
$log[] = "<C>●</>{$admin['month']}월:천도중... ({$term}/3) <1>$date</>";
|
||||
@@ -1114,7 +1114,7 @@ function process_67(&$general) {
|
||||
$log[] = "<C>●</>{$admin['month']}월:수뇌부가 아닙니다. 증축 실패. <1>$date</>";
|
||||
} elseif($nation['capset'] == 1) {
|
||||
$log[] = "<C>●</>{$admin['month']}월:다음 분기에 가능합니다. 증축 실패. <1>$date</>";
|
||||
} elseif($nation['gold']-GameConst::$basegold < $amount || $nation['rice']-GameConst::$basegold < $amount) {
|
||||
} elseif($nation['gold']-GameConst::$basegold < $amount || $nation['rice']-GameConst::$baserice < $amount) {
|
||||
$log[] = "<C>●</>{$admin['month']}월:물자가 부족합니다. 증축 실패. <1>$date</>";
|
||||
} elseif($term < 6) {
|
||||
$log[] = "<C>●</>{$admin['month']}월:증축중... ({$term}/6) <1>$date</>";
|
||||
@@ -2076,7 +2076,7 @@ function process_76(&$general) {
|
||||
) values (
|
||||
'$npccount','$npc','$npc','$affinity','$name','$picture','{$nation['nation']}',
|
||||
'{$general['city']}','$leader','$power','$intel','{$avgGen['exp']}','{$avgGen['ded']}',
|
||||
'1','100','100','0','0','0','0','0',
|
||||
'1','100','100','0','".GameUnitConst::DEFAULT_CREWTYPE."','0','0','0',
|
||||
'0','0','0','$turntime','$killturn','{$avgGen['age']}','1','$personal','0','0','0','0','',
|
||||
'0','$bornyear','$deadyear',
|
||||
'{$avgGen['dex0']}','{$avgGen['dex10']}','{$avgGen['dex20']}','{$avgGen['dex30']}','{$avgGen['dex40']}'
|
||||
|
||||
@@ -84,7 +84,7 @@ function process_25(&$general) {
|
||||
$joinedNations = Json::decode($general['nations']);
|
||||
|
||||
// 랜덤임관인 경우
|
||||
if($general['npc'] > 2 && $where >= 98 && ($admin['scenario'] < 100 || $admin['scenario'] >= 2000 || !$admin['fiction'])){
|
||||
if($general['npc'] >= 2 && $where >= 98 && !$admin['fiction'] && 1000 <= $admin['scenario'] && $admin['scenario'] < 2000){
|
||||
//'사실' 모드에서는 '성향'에 우선을 두되, 장수수, 랜덤에 비중을 둠
|
||||
$nations = $db->query(
|
||||
'SELECT nation.`name` as `name`,nation.nation as nation,scout,nation.`level` as `level`,gennum,`affinity` FROM nation join general on general.nation = nation.nation and general.level = 12 WHERE nation.nation not in %li and gennum < %i and scout = 0',
|
||||
@@ -452,7 +452,7 @@ function process_29(&$general) {
|
||||
) values (
|
||||
'$npccount','$npc','$npc','$affinity','$name','$picture','$scoutNation',
|
||||
'{$general['city']}','$leader','$power','$intel','{$avgGen['exp']}','{$avgGen['ded']}',
|
||||
'$scoutLevel','100','100','0','0','0','0','0',
|
||||
'$scoutLevel','100','100','0','".GameUnitConst::DEFAULT_CREWTYPE."','0','0','0',
|
||||
'0','0','0','$turntime','$killturn','$age','1','$personal','0','$specage','0','$specage2','',
|
||||
'0','$bornyear','$deadyear',
|
||||
'{$avgGen['dex0']}','{$avgGen['dex10']}','{$avgGen['dex20']}','{$avgGen['dex30']}','{$avgGen['dex40']}'
|
||||
|
||||
@@ -144,7 +144,7 @@ function process_32(&$general) {
|
||||
|
||||
$dist = searchDistance($srcCityID, 5, false);
|
||||
$srcCity = $db->queryFirstRow('SELECT city,nation,supply FROM city WHERE city=%i', $srcCityID);
|
||||
$destCity = $db->queryFirstRow('SELECT city,name,nation,supply,agri,comm FROM city WHERE city=%i',$destCityID);
|
||||
$destCity = $db->queryFirstRow('SELECT city,name,level,nation,secu,secu2,supply,agri,comm,def,wall,rate FROM city WHERE city=%i',$destCityID);
|
||||
$destCityName = $destCity['name']??null;
|
||||
|
||||
$srcNationID = $general['nation'];
|
||||
@@ -161,7 +161,7 @@ function process_32(&$general) {
|
||||
$srcNation = getNationStaticInfo($srcNationID);
|
||||
$destNation = getNationStaticInfo($destNationID);
|
||||
|
||||
$generalList = $db->query('SELECT `no`,leader,horse,power,weap,intel,book,injury,level FROM general WHERE city=%i and nation=%i', $city['city'], $city['nation']);
|
||||
$generalList = $db->query('SELECT `no`,leader,horse,power,weap,intel,book,injury,level,special,special2 FROM general WHERE city=%i and nation=%i', $destCity['city'], $destCity['nation']);
|
||||
|
||||
[
|
||||
$srcGenScore,
|
||||
@@ -278,7 +278,7 @@ function process_33(&$general) {
|
||||
|
||||
$dist = searchDistance($srcCityID, 5, false);
|
||||
$srcCity = $db->queryFirstRow('SELECT city,nation,supply FROM city WHERE city=%i', $srcCityID);
|
||||
$destCity = $db->queryFirstRow('SELECT city,name,level,nation,secu,secu2,supply,agri,comm FROM city WHERE city=%i',$destCityID);
|
||||
$destCity = $db->queryFirstRow('SELECT city,name,level,nation,secu,secu2,supply,agri,comm,def,wall,rate FROM city WHERE city=%i',$destCityID);
|
||||
$destCityName = $destCity['name']??null;
|
||||
|
||||
$srcNationID = $general['nation'];
|
||||
@@ -298,7 +298,7 @@ function process_33(&$general) {
|
||||
$srcNation = getNationStaticInfo($srcNationID);
|
||||
$destNation = getNationStaticInfo($destNationID);
|
||||
|
||||
$generalList = $db->query('SELECT `no`,leader,horse,power,weap,intel,book,injury,level FROM general WHERE city=%i and nation=%i', $city['city'], $city['nation']);
|
||||
$generalList = $db->query('SELECT `no`,leader,horse,power,weap,intel,book,injury,level,special,special2 FROM general WHERE city=%i and nation=%i', $destCity['city'], $destCity['nation']);
|
||||
|
||||
[
|
||||
$srcGenScore,
|
||||
@@ -449,7 +449,7 @@ function process_34(&$general) {
|
||||
|
||||
$dist = searchDistance($srcCityID, 5, false);
|
||||
$srcCity = $db->queryFirstRow('SELECT city,nation,supply FROM city WHERE city=%i', $srcCityID);
|
||||
$destCity = $db->queryFirstRow('SELECT city,name,nation,def,wall,secu,secu2,supply FROM city WHERE city=%i',$destCityID);
|
||||
$destCity = $db->queryFirstRow('SELECT city,name,level,nation,secu,secu2,supply,agri,comm,def,wall,rate FROM city WHERE city=%i',$destCityID);
|
||||
$destCityName = $destCity['name']??null;
|
||||
|
||||
$srcNationID = $general['nation'];
|
||||
@@ -467,7 +467,7 @@ function process_34(&$general) {
|
||||
$srcNation = getNationStaticInfo($srcNationID);
|
||||
$destNation = getNationStaticInfo($destNationID);
|
||||
|
||||
$generalList = $db->query('SELECT `no`,leader,horse,power,weap,intel,book,injury,level FROM general WHERE city=%i and nation=%i', $city['city'], $city['nation']);
|
||||
$generalList = $db->query('SELECT `no`,leader,horse,power,weap,intel,book,injury,level,special,special2 FROM general WHERE city=%i and nation=%i', $destCity['city'], $destCity['nation']);
|
||||
|
||||
[
|
||||
$srcGenScore,
|
||||
@@ -587,7 +587,7 @@ function process_35(&$general) {
|
||||
|
||||
$dist = searchDistance($srcCityID, 5, false);
|
||||
$srcCity = $db->queryFirstRow('SELECT city,nation,supply FROM city WHERE city=%i', $srcCityID);
|
||||
$destCity = $db->queryFirstRow('SELECT city,name,nation,rate,secu,secu2,supply FROM city WHERE city=%i',$destCityID);
|
||||
$destCity = $db->queryFirstRow('SELECT city,name,level,nation,secu,secu2,supply,agri,comm,def,wall,rate FROM city WHERE city=%i',$destCityID);
|
||||
$destCityName = $destCity['name']??null;
|
||||
|
||||
$srcNationID = $general['nation'];
|
||||
@@ -607,8 +607,7 @@ function process_35(&$general) {
|
||||
$srcNation = getNationStaticInfo($srcNationID);
|
||||
$destNation = getNationStaticInfo($destNationID);
|
||||
|
||||
$generalList = $db->query('SELECT `no`,leader,horse,power,weap,intel,book,injury,level FROM general WHERE city=%i and nation=%i', $city['city'], $city['nation']);
|
||||
|
||||
$generalList = $db->query('SELECT `no`,leader,horse,power,weap,intel,book,injury,level,special,special2 FROM general WHERE city=%i and nation=%i', $destCity['city'], $destCity['nation']);
|
||||
[
|
||||
$srcGenScore,
|
||||
$srcSpecialScore,
|
||||
|
||||
@@ -101,7 +101,7 @@ function processGoldIncome() {
|
||||
$query = "update nation set gold='{$nation['gold']}' where nation='{$nation['nation']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
|
||||
$query = "select no,name,nation,dedication,gold from general where nation='{$nation['nation']}'";
|
||||
$query = "select no,name,nation,dedication,gold from general where nation='{$nation['nation']}' AND npc != 5";
|
||||
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$gencount = MYDB_num_rows($genresult);
|
||||
|
||||
@@ -317,7 +317,7 @@ function getGoldOutcome($nation, $bill) {
|
||||
$db = DB::db();
|
||||
$connect=$db->get();
|
||||
|
||||
$query = "select dedication from general where nation='$nation'"; // 장수 목록
|
||||
$query = "select dedication from general where nation='$nation' AND npc != 5"; // 장수 목록
|
||||
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$gencount = MYDB_num_rows($genresult);
|
||||
|
||||
@@ -424,7 +424,7 @@ function processRiceIncome() {
|
||||
$query = "update nation set rice='{$nation['rice']}' where nation='{$nation['nation']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
|
||||
$query = "select no,name,nation,dedication,rice from general where nation='{$nation['nation']}'";
|
||||
$query = "select no,name,nation,dedication,rice from general where nation='{$nation['nation']}' AND npc != 5";
|
||||
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$gencount = MYDB_num_rows($genresult);
|
||||
|
||||
@@ -517,7 +517,7 @@ function getRiceOutcome($nation, $bill) {
|
||||
$db = DB::db();
|
||||
$connect=$db->get();
|
||||
|
||||
$query = "select dedication from general where nation='$nation'"; // 장수 목록
|
||||
$query = "select dedication from general where nation='$nation' AND npc != 5"; // 장수 목록
|
||||
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$gencount = MYDB_num_rows($genresult);
|
||||
|
||||
@@ -594,14 +594,14 @@ function disaster() {
|
||||
|
||||
for($i=0; $i < $citycount; $i++) {
|
||||
$city = MYDB_fetch_array($cityresult);
|
||||
//호황 발생 도시 선택 ( 기본 3% 이므로 약 3개 도시 )
|
||||
//재해 발생 도시 선택 ( 기본 6% 이므로 약 6개 도시 )
|
||||
if($isgood == 1) { $ratio = 3 + Util::round(1.0*$city['secu']/$city['secu2']*3); } // 3 ~ 6%
|
||||
else { $ratio = 6 - Util::round(1.0*$city['secu']/$city['secu2']*3); } // 3 ~ 6%
|
||||
//호황 발생 도시 선택 ( 기본 2% )
|
||||
//재해 발생 도시 선택 ( 기본 6% )
|
||||
if($isgood == 1) { $ratio = 2 + Util::round($city['secu']/$city['secu2']*5); } // 2 ~ 7%
|
||||
else { $ratio = 6 - Util::round($city['secu']/$city['secu2']*5); } // 1 ~ 6%
|
||||
|
||||
if(rand()%100+1 < $ratio) {
|
||||
$disastercity[] = $city['city'];
|
||||
$disasterratio[] = 1.0 * $city['secu'] / $city['secu2'];
|
||||
$disasterratio[] = Util::valueFit($city['secu'] / 0.8 / $city['secu2'], 0, 1);
|
||||
$disastername[] = $city['name'];
|
||||
}
|
||||
}
|
||||
|
||||
+7
-7
@@ -114,7 +114,7 @@ $(function(){
|
||||
<?=WebUtil::printCSS('css/main.css')?>
|
||||
<?=WebUtil::printCSS('css/map.css')?>
|
||||
<?=WebUtil::printCSS('css/msg.css')?>
|
||||
|
||||
<link href="https://fonts.googleapis.com/css?family=Nanum+Gothic|Nanum+Myeongjo|Nanum+Pen+Script" rel="stylesheet">
|
||||
|
||||
</head>
|
||||
<body class="img_back">
|
||||
@@ -200,7 +200,7 @@ echo "
|
||||
?>
|
||||
<tr><td colspan=5 style="text-align:left;">접속중인 국가: <?=onlinenation()?></td></tr>
|
||||
<tr><td colspan=5 style="text-align:left;"><?=adminMsg()?></td></tr>
|
||||
<tr><td colspan=5 style="text-align:left;"><div>【 국가방침 】</div><div style="color:orange;"><?=nationMsg()?></div></td></tr>
|
||||
<tr><td colspan=5 style="text-align:left;"><div>【 국가방침 】</div><div><?=nationMsg()?></div></td></tr>
|
||||
<tr><td colspan=5 style="text-align:left;">【 접속자 】<?=onlinegen()?></td></tr>
|
||||
<?php
|
||||
if ($session->userGrade >= 5) {
|
||||
@@ -232,10 +232,10 @@ else if($session->userGrade == 4){
|
||||
</table>
|
||||
<table class="tb_layout bg0" style="width:1000px;">
|
||||
<tr>
|
||||
<td width=698 height=520 colspan=2>
|
||||
<td style='width:700px;height:520px;' colspan=2>
|
||||
<?=getMapHtml($mapTheme)?>
|
||||
</td>
|
||||
<td width=298 rowspan=4><iframe seamless="seamless" name=commandlist src='commandlist.php' width=298 height=700 frameborder=0 marginwidth=0 marginheight=0 topmargin=0 scrolling=no></iframe></td>
|
||||
<td style='width:300px;' rowspan=4><iframe seamless="seamless" name=commandlist src='commandlist.php' style='width:300px;height:700px;' frameborder=0 marginwidth=0 marginheight=0 topmargin=0 scrolling=no></iframe></td>
|
||||
</tr>
|
||||
<form name=form2 action=preprocessing.php method=post target=commandlist>
|
||||
<tr>
|
||||
@@ -282,11 +282,11 @@ else if($session->userGrade == 4){
|
||||
<td width=498 class='bg1 center'><b>개인 기록</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width=498 style="text-align:left;"><?=getGeneralPublicRecordRecent(15)?></td>
|
||||
<td width=498 style="text-align:left;"><?=getGenLogRecent($me['no'], 15)?></td>
|
||||
<td width=498 id="general_public_record" style="text-align:left;"><?=getGeneralPublicRecordRecent(15)?></td>
|
||||
<td width=498 id="general_log" style="text-align:left;"><?=getGenLogRecent($me['no'], 15)?></td>
|
||||
</tr>
|
||||
<tr><td width=998 colspan=2 class='bg1 center'><b>중원 정세</b></td></tr>
|
||||
<tr><td width=998 colspan=2 style="text-align:left;"><?=getWorldHistoryRecent(15)?></td></tr>
|
||||
<tr><td width=998 id="world_history" colspan=2 style="text-align:left;"><?=getWorldHistoryRecent(15)?></td></tr>
|
||||
</table>
|
||||
<div class="message_input_form bg0">
|
||||
<select id="mailbox_list" size="1">
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
include 'lib.php';
|
||||
include 'func.php';
|
||||
|
||||
$session = Session::requireGameLogin([])->setReadOnly();
|
||||
$userID = $session::getUserID();
|
||||
$serverID = UniqueConst::$serverID;
|
||||
|
||||
$image = $_FILES['img'];
|
||||
switch ($image['error']) {
|
||||
case UPLOAD_ERR_OK:
|
||||
break;
|
||||
case UPLOAD_ERR_NO_FILE:
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'파일이 없습니다.'
|
||||
]);
|
||||
case UPLOAD_ERR_INI_SIZE:
|
||||
case UPLOAD_ERR_FORM_SIZE:
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'업로드된 파일이 지나치게 큽니다.'
|
||||
]);
|
||||
default:
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'업로드되지 않았습니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
if(!is_uploaded_file($image['tmp_name'])) {
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'제대로 파일이 업로드되지 않았습니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
if($image['size'] > 1048576) {
|
||||
//파일크기 검사
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'1MB 이하로 올려주세요!'
|
||||
]);
|
||||
}
|
||||
|
||||
$size = getImageSize($image['tmp_name']);
|
||||
|
||||
$imageType = $size[2];
|
||||
$availableImageType = array('.jpg'=>IMAGETYPE_JPEG, '.png'=>IMAGETYPE_PNG, '.gif'=>IMAGETYPE_GIF);
|
||||
$newExt = array_search($imageType, $availableImageType, true);
|
||||
|
||||
if(!$newExt) {
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'jpg, gif, png 파일이 아닙니다!'
|
||||
]);
|
||||
}
|
||||
|
||||
$db = RootDB::db();
|
||||
$imgStor = KVStorage::getStorage($db, 'img_storage');
|
||||
|
||||
$picName = hash_file('md5', $image['tmp_name']);
|
||||
$newPicName = "$picName$newExt";
|
||||
|
||||
$destDir = AppConf::getUserIconPathFS().'/uploaded_image';
|
||||
$dest = $destDir.'/'.$newPicName;
|
||||
|
||||
if(!file_exists($dest)){
|
||||
if (!file_exists($destDir)) {
|
||||
mkdir($destDir);
|
||||
}
|
||||
if(!is_dir($destDir)) {
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'버그! 업로드 경로 확인!'
|
||||
]);
|
||||
}
|
||||
if(!is_writable($destDir)){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'버그! 업로드 권한 확인!'
|
||||
]);
|
||||
}
|
||||
|
||||
$dest = $destDir.'/'.$newPicName;
|
||||
|
||||
if(!move_uploaded_file($image['tmp_name'], $dest)) {
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'업로드에 실패했습니다!'
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
$storedStatus = $imgStor->$newPicName??[];
|
||||
$imgKey = "$serverID:$userID";
|
||||
if(!key_exists($imgKey, $storedStatus)){
|
||||
$storedStatus[$imgKey] = TimeUtil::DatetimeNow();
|
||||
}
|
||||
|
||||
$imgStor->$newPicName = $storedStatus;
|
||||
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'reason'=>'성공',
|
||||
'path'=>AppConf::getUserIconPathWeb().'/uploaded_image/'.$newPicName
|
||||
]);
|
||||
+8
-1
@@ -19,6 +19,14 @@ $allowReset = in_array('reset', $serverAcl);
|
||||
$allowFullReset = in_array('fullReset',$serverAcl);
|
||||
$allowReset |= $allowFullReset;
|
||||
|
||||
$reserve_open = Util::getReq('reserve_open');
|
||||
if($reserve_open && $reserve_open < date('Y-m-d H:i')){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'현재 시간보다 이전 시간대를 예약 시간으로 지정했습니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
if($session->userGrade < 5 && !$allowReset){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
@@ -85,7 +93,6 @@ $npcmode = (int)$_POST['npcmode'];
|
||||
$show_img_level = (int)$_POST['show_img_level'];
|
||||
$tournament_trig = (int)$_POST['tournament_trig'];
|
||||
|
||||
$reserve_open = Util::getReq('reserve_open');
|
||||
if($reserve_open){
|
||||
$reserve_open = new \DateTime($reserve_open);
|
||||
$db = DB::db();
|
||||
|
||||
@@ -0,0 +1,437 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
include "lib.php";
|
||||
include "func.php";
|
||||
|
||||
$session = Session::requireLogin([])->setReadOnly();
|
||||
$userID = Session::getUserID();
|
||||
|
||||
$query = Util::getReq('query');
|
||||
if($query === null){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'입력값이 없습니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
$action = Util::getReq('action');
|
||||
if($action === null || !in_array($action, ['reorder', 'battle'])){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'원하는 동작이 지정되지 않았습니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
$query = Json::decode($query);
|
||||
if($query === null){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'올바르지 않은 JSON입니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
$defaultCheck = [
|
||||
'required'=>[
|
||||
'attackerGeneral', 'attackerCity', 'attackerNation',
|
||||
'defenderGenerals', 'defenderCity', 'defenderNation',
|
||||
'year', 'month', 'repeatCnt'
|
||||
],
|
||||
'integer'=>[
|
||||
'year','month','repeatCnt'
|
||||
],
|
||||
'between'=>[
|
||||
['month', [1, 12]]
|
||||
],
|
||||
'in'=>[
|
||||
['repeatCnt', [1, 1000]]
|
||||
],
|
||||
'min'=>[
|
||||
['year', 0]
|
||||
],
|
||||
'array'=>[
|
||||
'attackerGeneral', 'attackerCity', 'attackerNation',
|
||||
'defenderGenerals', 'defenderCity', 'defenderNation'
|
||||
],
|
||||
];
|
||||
|
||||
$v = new Validator($query);
|
||||
$v->rules($defaultCheck);
|
||||
if(!$v->validate()){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>$v->errorStr()
|
||||
]);
|
||||
}
|
||||
|
||||
$year = $query['year'];
|
||||
$month = $query['month'];
|
||||
$repeatCnt = $query['repeatCnt'];
|
||||
|
||||
$rawAttacker = $query['attackerGeneral'];
|
||||
$rawAttacker['turntime'] = date('Y-m-d H:i:s');
|
||||
$rawAttackerCity = $query['attackerCity'];
|
||||
$rawAttackerNation = $query['attackerNation'];
|
||||
|
||||
$defenderList = $query['defenderGenerals'];
|
||||
$rawDefenderCity = $query['defenderCity'];
|
||||
$rawDefenderNation = $query['defenderNation'];
|
||||
|
||||
|
||||
$generalCheck = [
|
||||
'required'=>[
|
||||
'no', 'name', 'nation', 'turntime', 'personal', 'special2', 'crew', 'crewtype', 'atmos', 'train',
|
||||
'intel', 'intel2', 'book', 'power', 'power2', 'weap', 'injury', 'leader', 'leader2', 'horse', 'item',
|
||||
'explevel', 'experience', 'dedication', 'level', 'gold', 'rice', 'dex0', 'dex10', 'dex20', 'dex30', 'dex40',
|
||||
'warnum', 'killnum', 'deathnum', 'killcrew', 'deathcrew', 'recwar'
|
||||
],
|
||||
'integer'=>[
|
||||
'no', 'nation', 'personal', 'special2', 'crew', 'crewtype', 'atmos', 'train',
|
||||
'intel', 'intel2', 'book', 'power', 'power2', 'weap', 'injury', 'leader', 'leader2', 'horse', 'item',
|
||||
'explevel', 'experience', 'dedication', 'level', 'gold', 'rice', 'dex0', 'dex10', 'dex20', 'dex30', 'dex40',
|
||||
'warnum', 'killnum', 'deathnum', 'killcrew', 'deathcrew'
|
||||
],
|
||||
'min'=>[
|
||||
['no', 1],
|
||||
['nation', 1],
|
||||
['crew', 0],
|
||||
['intel', 0],
|
||||
['power', 0],
|
||||
['leader', 0],
|
||||
['experience', 0],
|
||||
['gold', 0],
|
||||
['rice', 0],
|
||||
['dex0', 0],
|
||||
['dex10', 0],
|
||||
['dex20', 0],
|
||||
['dex30', 0],
|
||||
['dex40', 0],
|
||||
],
|
||||
'between'=>[
|
||||
['train', [40, GameConst::$maxTrainByWar]],
|
||||
['atmos', [40, GameConst::$maxAtmosByWar]],
|
||||
['book', [0, 26]],
|
||||
['weap', [0, 26]],
|
||||
['horse', [0, 26]],
|
||||
['item', [0, 26]],
|
||||
['explevel', [0, 300]],
|
||||
['injury', [0, 80]],
|
||||
['level', [1, 12]]
|
||||
],
|
||||
'in'=>[
|
||||
['personal', array_keys(getCharacterList())],
|
||||
['special2', array_merge(array_keys(SpecialityConst::WAR), [0])],
|
||||
['crewtype', array_keys(GameUnitConst::all())],
|
||||
]
|
||||
];
|
||||
|
||||
$v = new Validator($rawAttacker);
|
||||
$v->rules($generalCheck);
|
||||
if(!$v->validate()){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'[출병자]'.$v->errorStr()
|
||||
]);
|
||||
}
|
||||
|
||||
foreach($defenderList as $idx=>$rawDefenderGeneral){
|
||||
$v = new Validator($rawDefenderGeneral);
|
||||
$v->rules($generalCheck);
|
||||
if(!$v->validate()){
|
||||
$idx+=1;
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>"[수비자{$idx}]".$v->errorStr()
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$cityCheck = [
|
||||
'required'=>[
|
||||
'city', 'nation', 'supply', 'name',
|
||||
'pop', 'agri', 'comm', 'secu', 'def', 'wall',
|
||||
'rate', 'level',
|
||||
'pop2', 'agri2', 'comm2', 'secu2', 'def2', 'wall2',
|
||||
'dead', 'state', 'gen1', 'gen2', 'gen3', 'conflict',
|
||||
],
|
||||
'numeric'=>[
|
||||
'pop', 'agri', 'comm', 'secu', 'def', 'wall', 'rate', 'dead'
|
||||
],
|
||||
'integer'=>[
|
||||
'city', 'nation', 'supply',
|
||||
'pop2', 'agri2', 'comm2', 'secu2', 'def2', 'wall2',
|
||||
'state', 'gen1', 'gen2', 'gen3'
|
||||
],
|
||||
'min'=>[
|
||||
['def', 0],
|
||||
['wall', 0],
|
||||
['rate', 0],
|
||||
['pop', 0],
|
||||
['comm', 0],
|
||||
['secu', 0],
|
||||
['city', 1],
|
||||
['nation', 0]
|
||||
],
|
||||
'in'=>[
|
||||
['level', array_keys(getCityLevelList())]
|
||||
]
|
||||
];
|
||||
|
||||
$v = new Validator($rawAttackerCity);
|
||||
$v->rules($cityCheck);
|
||||
if(!$v->validate()){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'[출병도시]'.$v->errorStr()
|
||||
]);
|
||||
}
|
||||
|
||||
$v = new Validator($rawDefenderCity);
|
||||
$v->rules($cityCheck);
|
||||
if(!$v->validate()){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'[수비도시]'.$v->errorStr()
|
||||
]);
|
||||
}
|
||||
|
||||
$nationCheck = [
|
||||
'required'=>[
|
||||
'type', 'tech', 'level', 'capital',
|
||||
'nation', 'name', 'gold', 'rice', 'totaltech', 'gennum'
|
||||
],
|
||||
'integer'=>[
|
||||
'type', 'level', 'capital', 'nation', 'gennum',
|
||||
],
|
||||
'numeric'=>[
|
||||
'tech', 'gold', 'rice', 'totaltech'
|
||||
],
|
||||
'min'=>[
|
||||
['tech', 0],
|
||||
['totaltech', 0],
|
||||
['gold', 0],
|
||||
['rice', 0],
|
||||
['gennum', 1],
|
||||
['gen1', 0],
|
||||
['gen2', 0],
|
||||
['gen3', 0],
|
||||
],
|
||||
'in'=>[
|
||||
['type', array_keys(getNationTypeList())],
|
||||
['level', array_keys(getNationLevelList())]
|
||||
]
|
||||
];
|
||||
|
||||
$v = new Validator($rawAttackerNation);
|
||||
$v->rules($nationCheck);
|
||||
if(!$v->validate()){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'[출병국]'.$v->errorStr()
|
||||
]);
|
||||
}
|
||||
|
||||
$v = new Validator($rawDefenderNation);
|
||||
$v->rules($nationCheck);
|
||||
if(!$v->validate()){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'[수비국]'.$v->errorStr()
|
||||
]);
|
||||
}
|
||||
|
||||
if($action == 'reorder'){
|
||||
usort($defenderList, function($lhs, $rhs){
|
||||
return -(extractBattleOrder($lhs) <=> extractBattleOrder($rhs));
|
||||
});
|
||||
|
||||
$order = [];
|
||||
foreach($defenderList as $rawDefenderGeneral){
|
||||
$order[] = $rawDefenderGeneral['no'];
|
||||
}
|
||||
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'reason'=>'success',
|
||||
'order'=>$order
|
||||
]);
|
||||
}
|
||||
|
||||
usort($defenderList, function($lhs, $rhs){
|
||||
return -(extractBattleOrder($lhs) <=> extractBattleOrder($rhs));
|
||||
});
|
||||
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
$startYear = $gameStor->startyear;
|
||||
$cityRate = Util::round(($year - $startYear) / 1.5) + 60;
|
||||
|
||||
|
||||
function simulateBattle(
|
||||
$rawAttacker, $rawAttackerCity, $rawAttackerNation,
|
||||
$defenderList, $rawDefenderCity, $rawDefenderNation,
|
||||
$startYear, $year, $month, $cityRate
|
||||
){
|
||||
$attacker = new WarUnitGeneral($rawAttacker, $rawAttackerCity, $rawAttackerNation, true, $year, $month);
|
||||
$city = new WarUnitCity($rawDefenderCity, $rawDefenderNation, $year, $month, $cityRate);
|
||||
|
||||
$iterDefender = new \ArrayIterator($defenderList);
|
||||
$iterDefender->rewind();
|
||||
|
||||
$battleResult = [];
|
||||
|
||||
$attackerRice = $rawAttacker['rice'];
|
||||
$defenderRice = 0;
|
||||
|
||||
$getNextDefender = function(?WarUnit $prevDefender, bool $reqNext)
|
||||
use ($iterDefender, $rawDefenderCity, $rawDefenderNation, $year, $month, &$battleResult, &$defenderRice) {
|
||||
if($prevDefender !== null){
|
||||
$prevDefender->getLogger()->rollback();
|
||||
$battleResult[] = $prevDefender;
|
||||
if($prevDefender instanceof WarUnitGeneral){
|
||||
$defenderRice -= $prevDefender->getVar('rice');
|
||||
}
|
||||
}
|
||||
|
||||
if(!$reqNext){
|
||||
return null;
|
||||
}
|
||||
|
||||
if(!$iterDefender->valid()){
|
||||
return null;
|
||||
}
|
||||
|
||||
$rawGeneral = $iterDefender->current();
|
||||
if(extractBattleOrder($rawGeneral) <= 0){
|
||||
return null;
|
||||
}
|
||||
|
||||
$defenderRice += $rawGeneral['rice'];
|
||||
|
||||
$retVal = new WarUnitGeneral($rawGeneral, $rawDefenderCity, $rawDefenderNation, false, $year, $month);
|
||||
$iterDefender->next();
|
||||
return $retVal;
|
||||
};
|
||||
|
||||
$conquerCity = processWar_NG($attacker, $getNextDefender, $city, $year - $startYear);
|
||||
|
||||
$rawDefenderCity = $city->getRaw();
|
||||
$updateAttackerNation = [];
|
||||
$updateDefenderNation = [];
|
||||
|
||||
$attackerRice -= $attacker->getVar('rice');
|
||||
|
||||
if($city->getPhase() > 0){
|
||||
$rice = $city->getKilled() / 100 * 0.8;
|
||||
$rice *= $city->getCrewType()->rice;
|
||||
$rice *= getTechCost($rawDefenderNation['tech']);
|
||||
$rice *= $cityRate / 100 - 0.2;
|
||||
Util::setRound($rice);
|
||||
|
||||
$defenderRice += $rice;
|
||||
}
|
||||
|
||||
$totalDead = $attacker->getKilled() + $attacker->getDead();
|
||||
$attackerCityDead = $totalDead * 0.4;
|
||||
$defenderCityDead = $totalDead * 0.6;
|
||||
|
||||
return [$attacker, $city, $battleResult, $conquerCity, $attackerRice, $defenderRice];
|
||||
}
|
||||
|
||||
$lastWarLog = [];
|
||||
|
||||
$attackerKilled = 0;
|
||||
$attackerDead = 0;
|
||||
|
||||
$attackerMaxKilled = 0;
|
||||
$attackerMinKilled = PHP_INT_MAX;
|
||||
|
||||
$attackerMaxDead = 0;
|
||||
$attackerMinDead = PHP_INT_MAX;
|
||||
|
||||
|
||||
$attackerAvgRice = 0;
|
||||
$defenderAvgRice = 0;
|
||||
|
||||
$avgPhase = 0;
|
||||
$avgWar = 0;
|
||||
|
||||
$attackerActivatedSkills = [];
|
||||
$defendersActivatedSkills = [];
|
||||
|
||||
foreach(range(1, $repeatCnt) as $repeatIdx){
|
||||
[$attacker, $city, $battleResult, $conquerCity, $attackerRice, $defenderRice] = simulateBattle(
|
||||
$rawAttacker, $rawAttackerCity, $rawAttackerNation,
|
||||
$defenderList, $rawDefenderCity, $rawDefenderNation,
|
||||
$startYear, $year, $month, $cityRate
|
||||
);
|
||||
$lastWarLog = Util::mapWithKey(function($key, $values){
|
||||
return ConvertLog(join('<br>', $values));
|
||||
}, $attacker->getLogger()->rollback());
|
||||
|
||||
$avgPhase += $attacker->getPhase() / $repeatCnt;
|
||||
|
||||
$killed = $attacker->getKilled();
|
||||
$dead = $attacker->getDead();
|
||||
|
||||
$attackerKilled += $killed / $repeatCnt;
|
||||
$attackerDead += $dead / $repeatCnt;
|
||||
|
||||
$attackerMaxKilled = max($attackerMaxKilled, $killed);
|
||||
$attackerMinKilled = min($attackerMinKilled, $killed);
|
||||
|
||||
$attackerMaxDead = max($attackerMaxDead, $dead);
|
||||
$attackerMinDead = min($attackerMinDead, $dead);
|
||||
|
||||
$attackerAvgRice += $attackerRice / $repeatCnt;
|
||||
$defenderAvgRice += $defenderRice / $repeatCnt;
|
||||
|
||||
$avgWar += count($battleResult) / $repeatCnt;
|
||||
|
||||
foreach($attacker->getActivatedSkillLog() as $skillName => $skillCnt){
|
||||
if(!key_exists($skillName, $attackerActivatedSkills)){
|
||||
$attackerActivatedSkills[$skillName] = $skillCnt / $repeatCnt;
|
||||
}
|
||||
else{
|
||||
$attackerActivatedSkills[$skillName] += $skillCnt / $repeatCnt;
|
||||
}
|
||||
}
|
||||
|
||||
foreach($battleResult as $idx=>$defender){
|
||||
while($idx >= count($defendersActivatedSkills)){
|
||||
$defendersActivatedSkills[] = [];
|
||||
}
|
||||
|
||||
$activatedSkills = &$defendersActivatedSkills[$idx];
|
||||
foreach($defender->getActivatedSkillLog() as $skillName => $skillCnt){
|
||||
if(!key_exists($skillName, $activatedSkills)){
|
||||
$activatedSkills[$skillName] = $skillCnt / $repeatCnt;
|
||||
}
|
||||
else{
|
||||
$activatedSkills[$skillName] += $skillCnt / $repeatCnt;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'datetime'=>$rawAttacker['turntime'],
|
||||
'reason'=>'success',
|
||||
'lastWarLog'=>$lastWarLog,
|
||||
'avgWar'=>$avgWar,
|
||||
'phase'=>$avgPhase,
|
||||
'killed'=>$attackerKilled,
|
||||
'maxKilled'=>$attackerMaxKilled,
|
||||
'minKilled'=>$attackerMinKilled,
|
||||
'dead'=>$attackerDead,
|
||||
'maxDead'=>$attackerMaxDead,
|
||||
'minDead'=>$attackerMinDead,
|
||||
'attackerRice'=>$attackerAvgRice,
|
||||
'defenderRice'=>$defenderAvgRice,
|
||||
'attackerSkills'=>$attackerActivatedSkills,
|
||||
'defendersSkills'=>$defendersActivatedSkills,
|
||||
]);
|
||||
+19
-5
@@ -155,26 +155,40 @@ $leader = $leader + $pleader;
|
||||
$power = $power + $ppower;
|
||||
$intel = $intel + $pintel;
|
||||
|
||||
$admin = $gameStor->getValues(['scenario', 'turnterm', 'show_img_level', 'startyear', 'year']);
|
||||
$relYear = Util::valueFit($admin['year'] - $admin['startyear'], 0);
|
||||
|
||||
$age = 20 + ($pleader + $ppower + $pintel) * 2 - (mt_rand(0, 1));
|
||||
// 아직 남았고 천재등록상태이면 특기 부여
|
||||
if ($genius) {
|
||||
$specage2 = $age;
|
||||
$special2 = getSpecial2($leader, $power, $intel);
|
||||
} else {
|
||||
$specage2 = Util::round((80 - $age)/3) + $age;
|
||||
$specage2 = Util::valueFit(Util::round((80 - $age)/4 - $relYear / 2), 3) + $age;
|
||||
$special2 = 0;
|
||||
}
|
||||
//내특
|
||||
$specage = Util::round((80 - $age)/12) + $age;
|
||||
$specage = Util::valueFit(Util::round((80 - $age)/12 - $relYear / 2), 3) + $age;
|
||||
$special = 0;
|
||||
|
||||
$admin = $gameStor->getValues(['scenario', 'turnterm', 'show_img_level']);
|
||||
|
||||
if ($admin['scenario'] >= 1000) {
|
||||
$specage2 = $age + 3;
|
||||
$specage = $age + 3;
|
||||
}
|
||||
|
||||
if($relYear < 3){
|
||||
$experience = 0;
|
||||
}
|
||||
else{
|
||||
$expGenCount = $db->queryFirstField('SELECT count(*) FROM general WHERE nation != 0 AND npc < 5');
|
||||
$targetGenOrder = Util::round($expGenCount * 0.2);
|
||||
$experience = $db->queryFirstField(
|
||||
'SELECT experience FROM general WHERE nation != 0 AND npc < 5 ORDER BY experience ASC LIMIT %i, 1',
|
||||
$targetGenOrder - 1
|
||||
);
|
||||
$experience *= 0.8;
|
||||
}
|
||||
|
||||
$turntime = getRandTurn($admin['turnterm']);
|
||||
|
||||
$lastconnect = date('Y-m-d H:i:s');
|
||||
@@ -211,7 +225,7 @@ $db->insert('general', [
|
||||
'leader' => $leader,
|
||||
'power' => $power,
|
||||
'intel' => $intel,
|
||||
'experience' => 0,
|
||||
'experience' => $experience,
|
||||
'dedication' => 0,
|
||||
'gold' => 1000,
|
||||
'rice' => 1000,
|
||||
|
||||
@@ -0,0 +1,817 @@
|
||||
jQuery(function($){
|
||||
|
||||
|
||||
var $generalForm = $('.form_sample .general_detail');
|
||||
var $defenderHeaderForm = $('.form_sample .card-header');
|
||||
var $defenderColumn = $('.defender-column');
|
||||
|
||||
var defenderNoList = {};
|
||||
|
||||
var $attackerCard = $('.attacker_form');
|
||||
|
||||
var initBasicEvent = function(){
|
||||
|
||||
$('.form_injury').change(function(){
|
||||
var $this = $(this);
|
||||
var $general = getGeneralDetail($this);
|
||||
var $helptext = $general.find('.injury_helptext');
|
||||
|
||||
var injury = parseInt($this.val());
|
||||
//FIXME: PHP 코드와 항상 일치하도록 변경
|
||||
var text = '건강';
|
||||
var color = 'white';
|
||||
if(injury > 60){
|
||||
text = '위독';
|
||||
color = 'red';
|
||||
}
|
||||
else if(injury > 40){
|
||||
text = '심각';
|
||||
color = 'magenta';
|
||||
}
|
||||
else if(injury > 20){
|
||||
text = '중상';
|
||||
color = 'orange';
|
||||
}
|
||||
else if(injury > 0){
|
||||
text = '경상';
|
||||
color = 'yellow';
|
||||
}
|
||||
$helptext.html(text).css('color', color);
|
||||
});
|
||||
|
||||
$('.export_general').click(function(){
|
||||
var $btn = $(this);
|
||||
var $general = getGeneralDetail($btn);
|
||||
|
||||
var values = exportGeneralInfo($general);
|
||||
console.log(values);
|
||||
});
|
||||
$('.delete-defender').click(function(){
|
||||
var $card = getGeneralFrame($(this));
|
||||
deleteDefender($card);
|
||||
});
|
||||
$('.copy-defender').click(function(){
|
||||
var $card = getGeneralFrame($(this));
|
||||
copyDefender($card);
|
||||
});
|
||||
|
||||
$('.add-defender').click(function(){
|
||||
addDefender();
|
||||
});
|
||||
|
||||
$('.btn-general-load').click(function(){
|
||||
var $file = $(this).prev();
|
||||
$file[0].click();
|
||||
})
|
||||
|
||||
$('.form_load_general_file').on('change', function(e){
|
||||
e.preventDefault();
|
||||
var $this = $(this);
|
||||
var $card = getGeneralFrame($this);
|
||||
|
||||
var files = e.target.files;
|
||||
|
||||
importGeneralInfoByFile(files, $card);
|
||||
return false;
|
||||
});
|
||||
|
||||
$('.btn-general-save').click(function(){
|
||||
var $this = $(this);
|
||||
var $general = getGeneralDetail($this);
|
||||
var generalData = exportGeneralInfo($general);
|
||||
|
||||
var filename = "general_{0}.json".format(generalData.name);
|
||||
var saveData = JSON.stringify({
|
||||
objType:'general',
|
||||
data:generalData
|
||||
}, null, 4);
|
||||
|
||||
download(saveData, filename, 'application/json');
|
||||
});
|
||||
|
||||
$('.btn-battle-load').click(function(){
|
||||
var $file = $(this).prev();
|
||||
$file[0].click();
|
||||
})
|
||||
|
||||
$('.form_load_battle_file').on('change', function(e){
|
||||
e.preventDefault();
|
||||
var $this = $(this);
|
||||
var files = e.target.files;
|
||||
|
||||
importBattleInfoByFile(files);
|
||||
return false;
|
||||
});
|
||||
|
||||
$('.btn-battle-save').click(function(){
|
||||
var battleData = exportAllData();
|
||||
var filename = "battle_{0}.json".format(moment().format('YYYYMMDD_hhmmss'));
|
||||
var saveData = JSON.stringify({
|
||||
objType:'battle',
|
||||
data:battleData
|
||||
}, null, 4);
|
||||
|
||||
download(saveData, filename, 'application/json');
|
||||
})
|
||||
|
||||
var $generals = $('.general_detail');
|
||||
$generals.bind('dragover dragleave', function(e) {
|
||||
e.stopPropagation()
|
||||
e.preventDefault()
|
||||
})
|
||||
$generals.bind('drop', function(e){
|
||||
e.preventDefault();
|
||||
var $this = $(this);
|
||||
var $card = getGeneralFrame($this);
|
||||
|
||||
var files = e.originalEvent.dataTransfer.files;
|
||||
|
||||
importGeneralInfoByFile(files, $card);
|
||||
return false;
|
||||
});
|
||||
|
||||
var $battlePad = $('.dragpad_battle');
|
||||
$battlePad.bind('dragover dragleave', function(e) {
|
||||
e.stopPropagation()
|
||||
e.preventDefault()
|
||||
})
|
||||
$battlePad.bind('drop', function(e){
|
||||
e.preventDefault();
|
||||
|
||||
var files = e.originalEvent.dataTransfer.files;
|
||||
|
||||
importBattleInfoByFile(files);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
var importGeneralInfo = function($general, data){
|
||||
var setVal = function(query, val){
|
||||
$general.find(query).val(val).change();
|
||||
}
|
||||
|
||||
setVal('.form_general_name', data.name);
|
||||
|
||||
setVal('.form_general_level', data.level);
|
||||
setVal('.form_exp_level', data.explevel);
|
||||
setVal('.form_injury', data.injury);
|
||||
|
||||
setVal('.form_leadership', data.leader);
|
||||
setVal('.form_general_horse', data.horse);
|
||||
setVal('.form_power', data.power);
|
||||
setVal('.form_general_weap', data.weap);
|
||||
setVal('.form_intel', data.intel);
|
||||
setVal('.form_general_book', data.book);
|
||||
setVal('.form_general_item', data.item);
|
||||
|
||||
setVal('.form_injury', data.injury);
|
||||
|
||||
setVal('.form_rice', data.rice);
|
||||
|
||||
setVal('.form_general_character', data.personal);
|
||||
setVal('.form_general_special_war', data.special2);
|
||||
|
||||
setVal('.form_crew', data.crew);
|
||||
setVal('.form_crewtype', data.crewtype);
|
||||
setVal('.form_atmos', data.atmos);
|
||||
setVal('.form_train', data.train);
|
||||
|
||||
setVal('.form_dex0', data.dex0);
|
||||
setVal('.form_dex10', data.dex10);
|
||||
setVal('.form_dex20', data.dex20);
|
||||
setVal('.form_dex30', data.dex30);
|
||||
setVal('.form_dex40', data.dex40);
|
||||
setVal('.form_defend_mode', data.mode);
|
||||
|
||||
if(!setGeneralNo($general, data.no)){
|
||||
setGeneralNo($general, generateNewGeneralNo());
|
||||
}
|
||||
}
|
||||
|
||||
var exportGeneralInfo = function($general){
|
||||
var getInt = function(query){
|
||||
return parseInt($general.find(query).val());
|
||||
}
|
||||
|
||||
var getVal = function(query){
|
||||
return $general.find(query).val();
|
||||
}
|
||||
|
||||
return {
|
||||
no:getGeneralNo($general),
|
||||
name:getVal('.form_general_name'),
|
||||
level:getInt('.form_general_level'),
|
||||
explevel:getInt('.form_exp_level'),
|
||||
|
||||
leader:getInt('.form_leadership'),
|
||||
horse:getInt('.form_general_horse'),
|
||||
power:getInt('.form_power'),
|
||||
weap:getInt('.form_general_weap'),
|
||||
intel:getInt('.form_intel'),
|
||||
book:getInt('.form_general_book'),
|
||||
item:getInt('.form_general_item'),
|
||||
|
||||
injury:getInt('.form_injury'),
|
||||
|
||||
rice:getInt('.form_rice'),
|
||||
|
||||
personal:getInt('.form_general_character'),
|
||||
special2:getInt('.form_general_special_war'),
|
||||
|
||||
crew:getInt('.form_crew'),
|
||||
crewtype:getInt('.form_crewtype'),
|
||||
atmos:getInt('.form_atmos'),
|
||||
train:getInt('.form_train'),
|
||||
|
||||
dex0:getInt('.form_dex0'),
|
||||
dex10:getInt('.form_dex10'),
|
||||
dex20:getInt('.form_dex20'),
|
||||
dex30:getInt('.form_dex30'),
|
||||
dex40:getInt('.form_dex40'),
|
||||
mode:getInt('.form_defend_mode'),
|
||||
};
|
||||
}
|
||||
|
||||
var importBattleInfoByFile = function(files){
|
||||
if(files === null){
|
||||
alert('파일 에러!');
|
||||
return false;
|
||||
}
|
||||
|
||||
if(files.length < 1){
|
||||
alert("파일 에러!");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
var file = files[0];
|
||||
if(file.size > 1024*1024){
|
||||
alert('파일이 너무 큽니다!');
|
||||
return false;
|
||||
}
|
||||
if(file.type === ''){
|
||||
alert('폴더를 업로드할 수 없습니다!');
|
||||
return false;
|
||||
}
|
||||
|
||||
var reader = new FileReader();
|
||||
reader.onload = function(){
|
||||
var battleData = {};
|
||||
try {
|
||||
battleData = JSON.parse(reader.result);
|
||||
} catch(e) {
|
||||
alert('올바르지 않은 파일 형식입니다');
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!('objType' in battleData)){
|
||||
alert('파일 형식을 확인할 수 없습니다');
|
||||
return false;
|
||||
}
|
||||
|
||||
if(battleData.objType != 'battle'){
|
||||
alert('전투 데이터가 아닙니다');
|
||||
return false;
|
||||
}
|
||||
|
||||
importBattleInfo(battleData.data);
|
||||
return true;
|
||||
};
|
||||
|
||||
try {
|
||||
|
||||
reader.readAsText(file);
|
||||
}
|
||||
catch(e) {
|
||||
alert('파일을 읽는데 실패했습니다.');
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
var importGeneralInfoByFile = function(files, $card){
|
||||
if($card === undefined){
|
||||
$card = addDefender();
|
||||
}
|
||||
|
||||
if(files === null){
|
||||
alert('파일 에러!');
|
||||
return false;
|
||||
}
|
||||
|
||||
if(files.length < 1){
|
||||
alert("파일 에러!");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
var file = files[0];
|
||||
if(file.size > 1024*1024){
|
||||
alert('파일이 너무 큽니다!');
|
||||
return false;
|
||||
}
|
||||
if(file.type === ''){
|
||||
alert('폴더를 업로드할 수 없습니다!');
|
||||
return false;
|
||||
}
|
||||
|
||||
var reader = new FileReader();
|
||||
reader.onload = function(){
|
||||
var generalData = {};
|
||||
try {
|
||||
generalData = JSON.parse(reader.result);
|
||||
} catch(e) {
|
||||
alert('올바르지 않은 파일 형식입니다');
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!('objType' in generalData)){
|
||||
alert('파일 형식을 확인할 수 없습니다');
|
||||
return false;
|
||||
}
|
||||
|
||||
if(generalData.objType == 'battle'){
|
||||
importBattleInfo(generalData.data);
|
||||
return true;
|
||||
}
|
||||
if(generalData.objType != 'general'){
|
||||
alert('장수 데이터가 아닙니다');
|
||||
return false;
|
||||
}
|
||||
|
||||
$card.find('.form_load_general_file').val('');
|
||||
|
||||
importGeneralInfo($card, generalData.data);
|
||||
return true;
|
||||
};
|
||||
|
||||
try {
|
||||
|
||||
reader.readAsText(file);
|
||||
}
|
||||
catch(e) {
|
||||
alert('파일을 읽는데 실패했습니다.');
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
var extendGeneralInfoForDB = function(generalData){
|
||||
|
||||
var dbVal = {
|
||||
nation: (generalData.no)<=1 ? 1 : 2,
|
||||
city: (generalData.no)<=1 ? 1 : 3,
|
||||
turntime:'2018-08-26 12:00',
|
||||
special:0,
|
||||
leader2:0,
|
||||
power2:0,
|
||||
intel2:0,
|
||||
|
||||
gold:10000,
|
||||
|
||||
dedication:0,
|
||||
warnum:0,
|
||||
killnum:0,
|
||||
deathnum:0,
|
||||
|
||||
killcrew:20000,
|
||||
deathcrew:20000,
|
||||
recwar:'SUCCESS',
|
||||
experience:Math.pow(generalData.explevel, 2),
|
||||
};
|
||||
|
||||
return $.extend({}, generalData, dbVal);
|
||||
}
|
||||
|
||||
var getGeneralFrame = function($btn){
|
||||
var $card = $btn.closest('.general_form');
|
||||
return $card;
|
||||
}
|
||||
|
||||
var getGeneralDetail = function($btn){
|
||||
var $card = getGeneralFrame($btn);
|
||||
var $general = $card.find('.general_detail');
|
||||
return $general;
|
||||
}
|
||||
|
||||
var getGeneralNo = function($btn){
|
||||
return parseInt(getGeneralFrame($btn).data('general_no'));
|
||||
}
|
||||
|
||||
var setGeneralNo = function($btn, value){
|
||||
if(value == 1){
|
||||
//1번은 무조건 공격자임
|
||||
return false;
|
||||
}
|
||||
if(value in defenderNoList){
|
||||
return false;
|
||||
}
|
||||
var $card = getGeneralFrame($btn);
|
||||
$card.data('general_no', value);
|
||||
defenderNoList[value] = $card;
|
||||
return true;
|
||||
}
|
||||
|
||||
var generateNewGeneralNo = function(){
|
||||
while(true){
|
||||
var newGeneralNo = parseInt(Math.random()*(1<<24))+2;
|
||||
if(newGeneralNo in defenderNoList){
|
||||
continue;
|
||||
}
|
||||
return newGeneralNo;
|
||||
}
|
||||
}
|
||||
|
||||
var deleteGeneralNo = function($btn){
|
||||
var $card = getGeneralFrame($btn);
|
||||
$card.removeData('general_no');
|
||||
var generalNo = getGeneralNo($card);
|
||||
delete defenderNoList[generalNo];
|
||||
}
|
||||
|
||||
var addDefender = function($cardAfter){
|
||||
var $newCard = $('<div class="card mb-2 defender_form general_form"></div>');
|
||||
|
||||
if($cardAfter === undefined){
|
||||
$defenderColumn.append($newCard);
|
||||
}
|
||||
else{
|
||||
$cardAfter.after($newCard);
|
||||
}
|
||||
|
||||
$newCard.append($defenderHeaderForm.clone(true,true));
|
||||
$newCard.append($generalForm.clone(true,true));
|
||||
|
||||
$newGeneral = getGeneralDetail($newCard);
|
||||
setGeneralNo($newCard, generateNewGeneralNo());
|
||||
|
||||
return $newCard;
|
||||
}
|
||||
|
||||
var deleteDefender = function($card){
|
||||
deleteGeneralNo($card);
|
||||
$card.detach();
|
||||
}
|
||||
|
||||
var copyDefender = function($card){
|
||||
var $general = getGeneralDetail($card);
|
||||
|
||||
var generalData = exportGeneralInfo($general);
|
||||
var $newObj = addDefender($card);
|
||||
importGeneralInfo(getGeneralDetail($newObj), generalData);
|
||||
}
|
||||
|
||||
var importBattleInfo = function(battleData){
|
||||
|
||||
$('.form_load_battle_file').val('');
|
||||
console.log(battleData);
|
||||
|
||||
var $attackerNation = $('.attacker_nation');
|
||||
var $defenderNation = $('.defender_nation');
|
||||
|
||||
var attackerGeneral = battleData.attackerGeneral;
|
||||
var attackerCity = battleData.attackerCity;
|
||||
var attackerNation = battleData.attackerNation;
|
||||
|
||||
var defenderGenerals = battleData.defenderGenerals;
|
||||
var defenderCity = battleData.defenderCity;
|
||||
var defenderNation = battleData.defenderNation;
|
||||
|
||||
$('#year').val(battleData.year);
|
||||
$('#month').val(battleData.month);
|
||||
$('#repeat_cnt').val(battleData.repeatCnt);
|
||||
|
||||
$('.delete-defender').click();
|
||||
|
||||
$attackerNation.find('.form_nation_type').val(attackerNation.type);
|
||||
$attackerNation.find('.form_tech').val(Math.floor(attackerNation.tech/1000));
|
||||
$attackerNation.find('.form_nation_level').val(attackerNation.level);
|
||||
if(attackerNation.capital == 1){
|
||||
$attackerNation.find('.form_is_capital:first').click();
|
||||
}
|
||||
else{
|
||||
$attackerNation.find('.form_is_capital:last').click();
|
||||
}
|
||||
$attackerNation.find('.form_city_level').val(attackerCity.level);
|
||||
|
||||
importGeneralInfo($('.attacker_form'), attackerGeneral);
|
||||
|
||||
$defenderNation.find('.form_nation_type').val(defenderNation.type);
|
||||
$defenderNation.find('.form_tech').val(Math.floor(defenderNation.tech/1000));
|
||||
$defenderNation.find('.form_nation_level').val(defenderNation.level);
|
||||
if(defenderNation.capital == 1){
|
||||
$defenderNation.find('.form_is_capital:first').click();
|
||||
}
|
||||
else{
|
||||
$defenderNation.find('.form_is_capital:last').click();
|
||||
}
|
||||
$defenderNation.find('.form_city_level').val(defenderCity.level);
|
||||
$('#city_def').val(defenderCity.def);
|
||||
$('#city_wall').val(defenderCity.wall);
|
||||
|
||||
$.each(defenderGenerals, function(idx, defenderGeneral){
|
||||
var $card = addDefender();
|
||||
importGeneralInfo($card, defenderGeneral);
|
||||
});
|
||||
}
|
||||
|
||||
var exportAllData = function(){
|
||||
var $attackerNation = $('.attacker_nation');
|
||||
var $defenderNation = $('.defender_nation');
|
||||
|
||||
var attackerGeneral = exportGeneralInfo($('.attacker_form'));
|
||||
|
||||
var attackerCity = {
|
||||
level:parseInt($attackerNation.find('.form_city_level').val()),
|
||||
};
|
||||
|
||||
var attackerNation = {
|
||||
type:parseInt($attackerNation.find('.form_nation_type').val()),
|
||||
tech:parseInt($attackerNation.find('.form_tech').val()) * 1000,
|
||||
level:parseInt($attackerNation.find('.form_nation_level').val()),
|
||||
capital:$attackerNation.find('.form_is_capital:checked').val()=='1'?1:2,
|
||||
}
|
||||
|
||||
var defenderGenerals = $('.defender_form').map(function(){
|
||||
return exportGeneralInfo($(this));
|
||||
}).toArray();
|
||||
|
||||
var defenderCity = {
|
||||
def: parseInt($('#city_def').val()),
|
||||
wall: parseInt($('#city_wall').val()),
|
||||
level:parseInt($defenderNation.find('.form_city_level').val()),
|
||||
};
|
||||
|
||||
var defenderNation = {
|
||||
type:parseInt($defenderNation.find('.form_nation_type').val()),
|
||||
tech:parseInt($defenderNation.find('.form_tech').val()) * 1000,
|
||||
level:parseInt($defenderNation.find('.form_nation_level').val()),
|
||||
capital:$defenderNation.find('.form_is_capital:checked').val()=='1'?3:4,
|
||||
}
|
||||
|
||||
var year = parseInt($('#year').val());
|
||||
var month = parseInt($('#month').val());
|
||||
var repeatCnt = parseInt($('#repeat_cnt').val());
|
||||
|
||||
return {
|
||||
attackerGeneral:attackerGeneral,
|
||||
attackerCity:attackerCity,
|
||||
attackerNation:attackerNation,
|
||||
|
||||
defenderGenerals:defenderGenerals,
|
||||
defenderCity:defenderCity,
|
||||
defenderNation:defenderNation,
|
||||
|
||||
year:year,
|
||||
month:month,
|
||||
repeatCnt:repeatCnt,
|
||||
};
|
||||
}
|
||||
|
||||
var extendAllDataForDB = function(allData){
|
||||
var defaultNation = {
|
||||
nation:0,
|
||||
name:'재야',
|
||||
capital:0,
|
||||
level:0,
|
||||
gold:0,
|
||||
rice:2000,
|
||||
type:0,
|
||||
tech:0,
|
||||
totaltech:0,
|
||||
gennum:200,
|
||||
};
|
||||
|
||||
var defaultCity = {
|
||||
nation:0,
|
||||
supply:1,
|
||||
name:'도시',
|
||||
|
||||
pop:500000,
|
||||
agri:10000,
|
||||
comm:10000,
|
||||
secu:10000,
|
||||
def:1000,
|
||||
wall:1000,
|
||||
|
||||
rate:100,
|
||||
|
||||
pop2:600000,
|
||||
agri2:12000,
|
||||
comm2:12000,
|
||||
secu2:10000,
|
||||
def2:12000,
|
||||
wall2:12000,
|
||||
|
||||
dead:0,
|
||||
|
||||
state:0,
|
||||
gen1:0,
|
||||
gen2:0,
|
||||
gen3:0,
|
||||
|
||||
conflict:'{}',
|
||||
};
|
||||
|
||||
var attackerNation = $.extend({}, defaultNation, allData.attackerNation);
|
||||
attackerNation.nation = 1;
|
||||
attackerNation.name = '출병국';
|
||||
attackerNation.totaltech = attackerNation.tech * attackerNation.gennum;
|
||||
|
||||
var attackerCity = $.extend({}, defaultCity, allData.attackerCity);
|
||||
attackerCity.nation = 1;
|
||||
attackerCity.city = 1;
|
||||
|
||||
var attackerGeneral = extendGeneralInfoForDB(allData.attackerGeneral);
|
||||
if(attackerGeneral.level == 4){
|
||||
attackerCity.gen1 = attackerGeneral.no;
|
||||
}
|
||||
if(attackerGeneral.level == 3){
|
||||
attackerCity.gen2 = attackerGeneral.no;
|
||||
}
|
||||
if(attackerGeneral.level == 2){
|
||||
attackerCity.gen3 = attackerGeneral.no;
|
||||
}
|
||||
|
||||
var defenderNation = $.extend({}, defaultNation, allData.defenderNation);
|
||||
defenderNation.nation = 2;
|
||||
defenderNation.name = '수비국';
|
||||
defenderNation.totaltech = defenderNation.tech * defenderNation.gennum;
|
||||
|
||||
var defenderCity = $.extend({}, defaultCity, allData.defenderCity);
|
||||
defenderCity.nation = 2;
|
||||
defenderCity.city = 3;
|
||||
defenderCity.wall2 = defenderCity.wall/5*6;
|
||||
defenderCity.def2 = defenderCity.def/5*6;
|
||||
|
||||
var defenderGenerals = [];
|
||||
$.each(allData.defenderGenerals, function(){
|
||||
var defenderGeneral = extendGeneralInfoForDB(this);
|
||||
if(defenderGeneral.level == 4){
|
||||
defenderCity.gen1 = defenderGeneral.no;
|
||||
}
|
||||
if(defenderGeneral.level == 3){
|
||||
defenderCity.gen2 = defenderGeneral.no;
|
||||
}
|
||||
if(defenderGeneral.level == 2){
|
||||
defenderCity.gen3 = defenderGeneral.no;
|
||||
}
|
||||
|
||||
defenderGenerals.push(defenderGeneral);
|
||||
});
|
||||
|
||||
|
||||
return $.extend({}, allData, {
|
||||
attackerGeneral:attackerGeneral,
|
||||
attackerCity:attackerCity,
|
||||
attackerNation:attackerNation,
|
||||
|
||||
defenderGenerals:defenderGenerals,
|
||||
defenderCity:defenderCity,
|
||||
defenderNation:defenderNation,
|
||||
});
|
||||
}
|
||||
|
||||
var parseSkillCount = function(skills){
|
||||
var result = [];
|
||||
$.each(skills, function(key, value){
|
||||
result.push("{0}({1}회)".format(key, toPretty(value)));
|
||||
})
|
||||
|
||||
if(result.length == 0){
|
||||
return '-';
|
||||
}
|
||||
return result.join(', ');
|
||||
}
|
||||
|
||||
var toPretty = function(number){
|
||||
if(isInt(number)){
|
||||
number = parseInt(number);
|
||||
}
|
||||
else{
|
||||
number = parseFloat(number).toFixed(2);
|
||||
}
|
||||
return numberWithCommas(number);
|
||||
}
|
||||
|
||||
var showBattleResult = function(result){
|
||||
$('#result_datetime').html(result.datetime);
|
||||
$('#result_warcnt').html(toPretty(result.avgWar));
|
||||
$('#result_phase').html(toPretty(result.phase));
|
||||
$('#result_killed').html(toPretty(result.killed));
|
||||
if(result.minKilled != result.maxKilled){
|
||||
$('#result_maxKilled').html(toPretty(result.maxKilled));
|
||||
$('#result_minKilled').html(toPretty(result.minKilled));
|
||||
$('#result_varKilled').show();
|
||||
}
|
||||
else{
|
||||
$('#result_varKilled').hide();
|
||||
}
|
||||
$('#result_dead').html(toPretty(result.dead));
|
||||
if(result.minDead != result.maxDead){
|
||||
$('#result_maxDead').html(toPretty(result.maxDead));
|
||||
$('#result_minDead').html(toPretty(result.minDead));
|
||||
$('#result_varDead').show();
|
||||
}
|
||||
else{
|
||||
$('#result_varDead').hide();
|
||||
}
|
||||
|
||||
$('#result_attackerRice').html(toPretty(result.attackerRice));
|
||||
$('#result_defenderRice').html(toPretty(result.defenderRice));
|
||||
$('#result_attackerSkills').html(parseSkillCount(result.attackerSkills));
|
||||
|
||||
$('.result_defenderSkills').detach();
|
||||
|
||||
var $summary = $('#battle_result_summary');
|
||||
|
||||
$.each(result.defendersSkills, function(idx, defenderSkills){
|
||||
console.log(defenderSkills);
|
||||
var $result = $("<tr class='result_defenderSkills'><th>수비자{0} 스킬</th><td></td></tr>".format(idx + 1));
|
||||
$result.find('td').html(parseSkillCount(defenderSkills));
|
||||
$summary.append($result);
|
||||
});
|
||||
|
||||
$('#generalBattleResultLog').html(result.lastWarLog.generalBattleResultLog);
|
||||
$('#generalBattleDetailLog').html(result.lastWarLog.generalBattleDetailLog);
|
||||
|
||||
}
|
||||
|
||||
var beginBattle = function(){
|
||||
var data = extendAllDataForDB(exportAllData());
|
||||
console.log(data);
|
||||
$.ajax({
|
||||
type:'post',
|
||||
url:'j_simulate_battle.php',
|
||||
dataType:'json',
|
||||
data:{
|
||||
action:'battle',
|
||||
query:JSON.stringify(data),
|
||||
}
|
||||
}).then(function(result){
|
||||
console.log(result);
|
||||
if(!result.result){
|
||||
alert(result.reason);
|
||||
return;
|
||||
}
|
||||
showBattleResult(result);
|
||||
|
||||
}, function(result){
|
||||
alert('전투 개시 실패!');
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
var reorderDefender = function(defenderOrder){
|
||||
$.each(defenderOrder, function(idx, generalNo){
|
||||
|
||||
if(!(generalNo in defenderNoList)){
|
||||
//음..?
|
||||
alert("{0}이 수비자 리스트에 없습니다. 버그인 듯 합니다.".format(generalNo));
|
||||
return true;
|
||||
}
|
||||
|
||||
var $defenderObj = defenderNoList[generalNo];
|
||||
$defenderObj.detach();
|
||||
$defenderColumn.append($defenderObj);
|
||||
})
|
||||
}
|
||||
|
||||
var requestReorderDefender = function(){
|
||||
var data = extendAllDataForDB(exportAllData());
|
||||
console.log(data);
|
||||
$.ajax({
|
||||
type:'post',
|
||||
url:'j_simulate_battle.php',
|
||||
dataType:'json',
|
||||
data:{
|
||||
action:'reorder',
|
||||
query:JSON.stringify(data),
|
||||
}
|
||||
}).then(function(result){
|
||||
console.log(result);
|
||||
if(!result.result){
|
||||
alert(result.reason);
|
||||
return;
|
||||
}
|
||||
reorderDefender(result.order);
|
||||
|
||||
}, function(result){
|
||||
alert('재정렬 실패!');
|
||||
});
|
||||
}
|
||||
|
||||
initBasicEvent();
|
||||
$attackerCard.append($generalForm.clone(true,true));
|
||||
addDefender();
|
||||
|
||||
$('.btn-begin_battle').click(function(){
|
||||
beginBattle();
|
||||
});
|
||||
|
||||
$('.btn-reorder_defender').click(function(){
|
||||
requestReorderDefender();
|
||||
})
|
||||
});
|
||||
+84
-6
@@ -23,6 +23,14 @@ var escapeHtml = (function (string) {
|
||||
}
|
||||
})();
|
||||
|
||||
/**
|
||||
* 변수가 정수인지 확인하는 함수
|
||||
* @param {*} n 정수인지 확인하기 위한 인자
|
||||
* @return {boolean} 정수인지 여부
|
||||
*/
|
||||
function isInt(n) {
|
||||
return +n === n && !(n % 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* object의 array를 id를 key로 삼는 object로 재 변환
|
||||
@@ -89,6 +97,11 @@ function convColorValue(color) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
function numberWithCommas(x) {
|
||||
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
||||
}
|
||||
|
||||
/**
|
||||
* 단순한 Template 함수. <%변수명%>으로 template 가능
|
||||
* @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js
|
||||
@@ -130,11 +143,76 @@ function getIconPath(imgsvr, picture){
|
||||
}
|
||||
}
|
||||
|
||||
jQuery(function($){
|
||||
$('.obj_tooltip').tooltip({
|
||||
title:function(){
|
||||
return $.trim($(this).find('.tooltiptext').html());
|
||||
},
|
||||
html:true
|
||||
function activeFlip($obj){
|
||||
var $result;
|
||||
if($obj === undefined){
|
||||
$result = $('img[data-flip]');
|
||||
}
|
||||
else{
|
||||
$result = $obj.find('img[data-flip]');
|
||||
}
|
||||
|
||||
$result.each(function(){
|
||||
activeFlipItem($(this));
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function activeFlipItem($img){
|
||||
var imageList = [];
|
||||
imageList.push($img.attr('src'));
|
||||
$.each($img.data('flip').split(','), function(idx, value){
|
||||
var value = $.trim(value);
|
||||
if(!value){
|
||||
return true;
|
||||
}
|
||||
imageList.push(value);
|
||||
});
|
||||
if(imageList.length <= 1){
|
||||
return;
|
||||
}
|
||||
$img.data('computed_flip_array', imageList);
|
||||
$img.data('computed_flip_idx', 0);
|
||||
|
||||
$img.click(function(){
|
||||
var arr = $img.data('computed_flip_array');
|
||||
var idx = $img.data('computed_flip_idx');
|
||||
idx = (idx + 1)%(arr.length);
|
||||
$img.attr('src', arr[idx]);
|
||||
$img.data('computed_flip_idx', idx);
|
||||
});
|
||||
$img.css('cursor','pointer');
|
||||
}
|
||||
|
||||
jQuery(function($){
|
||||
$('.obj_tooltip').each(function(){
|
||||
var $objTooltip = $(this);
|
||||
var tooltipClassText = $objTooltip.data('tooltip-class');
|
||||
if(!tooltipClassText){
|
||||
tooltipClassText = '';
|
||||
}
|
||||
console.log($objTooltip.data('tooltip-class'));
|
||||
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
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
activeFlip();
|
||||
|
||||
var customCSS = localStorage.getItem('sam_customCSS');
|
||||
if(customCSS){
|
||||
var $style = $('<style type="text/css"></style>');
|
||||
$style.text(customCSS);
|
||||
$style.appendTo($('head'));
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
|
||||
|
||||
|
||||
|
||||
jQuery(function($){
|
||||
|
||||
function guiEditorInit($obj, editable){
|
||||
var $submitBtn = $obj.find('.submit');
|
||||
var $noticeInput = $obj.find('.input_form');
|
||||
var $editForm = $obj.find('.edit_form');
|
||||
var $cancelEdit = $obj.find('.cancel_edit');
|
||||
|
||||
var editMode = false;
|
||||
|
||||
function enableEditor(){
|
||||
editMode = true;
|
||||
$cancelEdit.show();
|
||||
|
||||
var inputText = $noticeInput.val();
|
||||
if(!inputText || inputText == '<p></p>'){
|
||||
inputText = '<p><br></p>';
|
||||
}
|
||||
|
||||
$editForm.removeClass('viewer').summernote({
|
||||
minHeight:200,
|
||||
maxHeight:null,
|
||||
focus:true,
|
||||
lang:'ko-KR',
|
||||
toolbar: [
|
||||
// [groupName, [list of button]]
|
||||
['do', ['undo', 'redo']],
|
||||
['style', ['bold', 'italic', 'underline', 'clear']],
|
||||
['font2', ['fontname', 'fontsize']],
|
||||
['font', ['strikethrough', 'superscript', 'subscript']],
|
||||
['color', ['color']],
|
||||
['in', ['picture', 'link', 'video', 'table', 'hr']],
|
||||
['para', ['ul', 'ol', 'paragraph']],
|
||||
['height', ['height', 'codeview']]
|
||||
],
|
||||
popover: {
|
||||
image: [
|
||||
['imagesize', ['imageSize100', 'imageSize50', 'imageSize25']],
|
||||
['float', ['floatLeft', 'floatRight', 'floatNone']],
|
||||
['remove', ['removeMedia']],
|
||||
['custom', ['imageFlip']],
|
||||
],
|
||||
},
|
||||
fontNames: ['맑은 고딕', 'Nanum Gothic', 'Nanum Myeongjo', 'Nanum Pen Script', '굴림', '굴림체', '바탕', '바탕체', '궁서', '궁서체'],
|
||||
fontSizes: ['8', '9', '10', '11', '12', '14', '16', '20', '24', '28', '32', '36', '40', '46', '52', '60'],
|
||||
callbacks: {
|
||||
onImageUpload: function(files) {
|
||||
$editForm.summernote('saveRange');
|
||||
if(files.length == 0){
|
||||
alert('업로드된 파일이 없습니다.');
|
||||
return false;
|
||||
}
|
||||
|
||||
var formData = new FormData();
|
||||
formData.append('img', files[0]);
|
||||
$editForm.summernote("pasteHtml", '');
|
||||
|
||||
$.ajax({
|
||||
type:'post',
|
||||
url:'j_image_upload.php',
|
||||
dataType:'json',
|
||||
contentType: false,
|
||||
processData:false,
|
||||
data:formData
|
||||
}).then(function(result){
|
||||
if(!result.result){
|
||||
alert(result.reason);
|
||||
return;
|
||||
}
|
||||
|
||||
console.log($editForm.summernote('code'));
|
||||
if($editForm.summernote('isEmpty')){
|
||||
|
||||
console.log('haha?');
|
||||
var $img = $('<img>');
|
||||
$img.attr('src', result.path);
|
||||
$editForm.summernote('code', $img);
|
||||
return;
|
||||
}
|
||||
|
||||
$editForm.summernote("insertImage", result.path, result.path);
|
||||
|
||||
},function(){
|
||||
alert('알 수 없는 이유로 아이콘 업로드를 실패했습니다.');
|
||||
});
|
||||
}
|
||||
}
|
||||
}).summernote('code', inputText);
|
||||
}
|
||||
|
||||
function disableEditor(){
|
||||
editMode = false;
|
||||
$editForm.summernote('destroy');
|
||||
$cancelEdit.hide();
|
||||
$editForm.html($noticeInput.val()).addClass('viewer');
|
||||
activeFlip($editForm);
|
||||
}
|
||||
|
||||
$cancelEdit.hide();
|
||||
$editForm.html($noticeInput.val());
|
||||
activeFlip($editForm);
|
||||
if(editable){
|
||||
$submitBtn.prop('disabled', false);
|
||||
}
|
||||
else{
|
||||
$submitBtn.prop('disabled', true);
|
||||
}
|
||||
|
||||
$submitBtn.click(function(e){
|
||||
if(!editMode){
|
||||
e.preventDefault();
|
||||
enableEditor();
|
||||
return false;
|
||||
}
|
||||
$noticeInput.val($editForm.summernote('code'));
|
||||
});
|
||||
|
||||
$cancelEdit.click(function(e){
|
||||
e.preventDefault();
|
||||
disableEditor();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
guiEditorInit($('#noticeForm'), editable);
|
||||
guiEditorInit($('#scoutMsgForm'), editable);
|
||||
|
||||
})
|
||||
@@ -10,7 +10,7 @@ $(function(){
|
||||
var getUserType = function(통,무,지){
|
||||
var 총 = 통+무+지;
|
||||
if(통 < 40){
|
||||
if(무+지 < 통){
|
||||
if(무+지 < 40){
|
||||
return "무능";
|
||||
}
|
||||
return "무지";
|
||||
@@ -28,6 +28,9 @@ $(function(){
|
||||
if(지 >= 60 && 무 < 지*0.8){
|
||||
return "지";
|
||||
}
|
||||
if(통 >= 60 && 무 + 지 < 통){
|
||||
return "통";
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -83,6 +86,7 @@ $(function(){
|
||||
if(!(국가 in 국가별)){
|
||||
국가별[국가] = {};
|
||||
국가별[국가].만능 = [];
|
||||
국가별[국가].통 = [];
|
||||
국가별[국가].무 = [];
|
||||
국가별[국가].지 = [];
|
||||
국가별[국가].평범 = [];
|
||||
|
||||
+13
-1
@@ -165,7 +165,7 @@ jQuery(function($){
|
||||
});
|
||||
|
||||
$('#join_form').submit(function(){
|
||||
var currentStatTotal = parseInt($leader.val()) + parseInt($power.val()) + parseInt($leader.val());
|
||||
var currentStatTotal = parseInt($leader.val()) + parseInt($power.val()) + parseInt($intel.val());
|
||||
if(currentStatTotal < defaultStatTotal){
|
||||
if(!confirm('현재 능력치 총합은 {0}으로, {1}보다 낮습니다. 장수 생성을 진행할까요?'.format(currentStatTotal, defaultStatTotal))){
|
||||
return false;
|
||||
@@ -173,4 +173,16 @@ jQuery(function($){
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
var randomGenType = Math.floor(Math.random()*7);
|
||||
if(randomGenType < 3){
|
||||
abilityLeadpow();
|
||||
}
|
||||
else if(randomGenType < 6){
|
||||
abilityLeadint();
|
||||
}
|
||||
else{
|
||||
abilityPowint();
|
||||
}
|
||||
|
||||
});
|
||||
@@ -90,6 +90,32 @@ function reloadWorldMap(option){
|
||||
$map_title.css('color', 'yellow');
|
||||
}
|
||||
|
||||
$map_title_tooltip = $('.map_title .tooltiptext');
|
||||
$map_title_tooltip.empty();
|
||||
|
||||
var tooltipTexts = [];
|
||||
if(year < startYear + 3){
|
||||
var startYearText = [];
|
||||
var remainYear = startYear + 3 - year;
|
||||
var remainMonth = 12 - month + 1;
|
||||
if(remainMonth > 0){
|
||||
remainYear -= 1;
|
||||
}
|
||||
if(remainYear){
|
||||
startYearText.push('{0}년'.format(remainYear));
|
||||
}
|
||||
if(remainMonth){
|
||||
startYearText.push('{0}개월'.format(remainMonth));
|
||||
}
|
||||
|
||||
tooltipTexts.push('초반제한 기간 : {0} ({1}년)'.format(startYearText.join(' '), startYear + 3));
|
||||
}
|
||||
|
||||
var currentTechLimit = Math.floor(Math.max(0, year - startYear) / 5) + 1;
|
||||
var nextTechLimitYear = currentTechLimit * 5 + startYear;
|
||||
|
||||
tooltipTexts.push('기술등급 제한 : {0}등급 ({1}년 해제)'.format(currentTechLimit, nextTechLimitYear, currentTechLimit+1));
|
||||
$map_title_tooltip.html(tooltipTexts.join('<br>'));
|
||||
|
||||
$world_map.removeClass('map_string map_summer map_fall map_winter');
|
||||
if(month <= 3){
|
||||
|
||||
+11
-1
@@ -257,6 +257,16 @@ function refreshMailboxList(obj){
|
||||
$optgroup.css('color', 'white');
|
||||
}
|
||||
|
||||
nation.general.sort(function(lhs, rhs){
|
||||
if(lhs[1] < rhs[1]){
|
||||
return -1;
|
||||
}
|
||||
if(lhs[1] > rhs[1]){
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
|
||||
$.each(nation.general, function(){
|
||||
var generalID = this[0];
|
||||
var generalName = this[1];
|
||||
@@ -402,7 +412,7 @@ function activateMessageForm(){
|
||||
jQuery(function($){
|
||||
|
||||
//tmp_template.html은 추후 msg.js에 통합될 수 있음
|
||||
var getTemplate = $.get('js/templates/message.html',function(obj){
|
||||
var getTemplate = $.get('js/templates/message.html?3',function(obj){
|
||||
messageTemplate = obj;
|
||||
});
|
||||
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
jQuery(function($){
|
||||
|
||||
|
||||
var initCustomCSSForm = function(){
|
||||
var lastTimeOut = null;
|
||||
var $obj = $('#custom_css');
|
||||
var key = 'sam_customCSS';
|
||||
|
||||
var text = localStorage.getItem(key);
|
||||
if(text){
|
||||
$obj.val(text);
|
||||
console.log(text);
|
||||
}
|
||||
|
||||
if($obj.on('change keyup paste', function(){
|
||||
var newText = $obj.val();
|
||||
if(text == newText){
|
||||
return;
|
||||
}
|
||||
if(lastTimeOut){
|
||||
clearTimeout(lastTimeOut);
|
||||
}
|
||||
$obj.css('background-color', '#222222');
|
||||
lastTimeOut = setTimeout(function(){
|
||||
text = $obj.val();
|
||||
localStorage.setItem(key, text);
|
||||
$obj.css('background-color', 'black');
|
||||
}, 500);
|
||||
}));
|
||||
|
||||
}
|
||||
|
||||
initCustomCSSForm();
|
||||
});
|
||||
@@ -5,9 +5,9 @@
|
||||
>
|
||||
<div class="msg_icon">
|
||||
<%if(src.icon){ %>
|
||||
<img width='64' height='64' src="<%encodeURI(src.icon)%>">
|
||||
<img class='generalIcon' width='64' height='64' src="<%encodeURI(src.icon)%>">
|
||||
<%} else {%>
|
||||
<img width='64' height='64' src="<%encodeURI(defaultIcon)%>">
|
||||
<img class='generalIcon' width='64' height='64' src="<%encodeURI(defaultIcon)%>">
|
||||
<%}%>
|
||||
</div>
|
||||
<div class="msg_body">
|
||||
@@ -16,9 +16,9 @@
|
||||
<%if(src.name == generalName){%>
|
||||
<span class="msg_target msg_<%src.colorType%>" style="background-color:<%src.color%>;">나</span
|
||||
><span class="msg_from_to">▶</span
|
||||
><span class="msg_target msg_<%dest.colorType%>" style="background-color:<%dest.color%>;"><%e(dest.name)%>:<%e(dest.nation)%></span>
|
||||
><span class="msg_target msg_<%dest.colorType%>" style="background-color:<%dest.color%>;"><%e(dest.name)%>:<%dest.nation%></span>
|
||||
<%}else{%>
|
||||
<span class="msg_target msg_<%src.colorType%>" style="background-color:<%src.color%>;"><%e(src.name)%>:<%e(src.nation)%></span
|
||||
<span class="msg_target msg_<%src.colorType%>" style="background-color:<%src.color%>;"><%e(src.name)%>:<%src.nation%></span
|
||||
><span class="msg_from_to">▶</span
|
||||
><span class="msg_target msg_<%dest.colorType%>" style="background-color:<%dest.color%>;">나</span>
|
||||
<%}%>
|
||||
@@ -28,13 +28,13 @@
|
||||
<%if(src.nation_id == nationID){%>
|
||||
<span class="msg_target msg_<%src.colorType%>" style="background-color:<%src.color%>;"><%e(src.name)%></span
|
||||
><span class="msg_from_to">▶</span
|
||||
><span class="msg_target msg_<%dest.colorType%>" style="background-color:<%dest.color%>;"><%e(dest.nation)%></span>
|
||||
><span class="msg_target msg_<%dest.colorType%>" style="background-color:<%dest.color%>;"><%dest.nation%></span>
|
||||
<%}else{%>
|
||||
<span class="msg_target msg_<%src.colorType%>" style="background-color:<%src.color%>;"><%e(src.name)%>:<%e(src.nation)%></span
|
||||
<span class="msg_target msg_<%src.colorType%>" style="background-color:<%src.color%>;"><%e(src.name)%>:<%src.nation%></span
|
||||
><span class="msg_from_to"></span>
|
||||
<%}%>
|
||||
<%} else {%>
|
||||
<span class="msg_target msg_<%src.colorType%>" style="background-color:<%src.color%>;"><%e(src.name)%>:<%e(src.nation)%></span>
|
||||
<span class="msg_target msg_<%src.colorType%>" style="background-color:<%src.color%>;"><%e(src.name)%>:<%src.nation%></span>
|
||||
<%} %>
|
||||
<span class="msg_time"><<%e(time)%>></span>
|
||||
</div>
|
||||
|
||||
+76
-40
@@ -35,9 +35,9 @@ function processWar(array $rawAttacker, array $rawDefenderCity){
|
||||
|
||||
$attacker = new WarUnitGeneral($rawAttacker, $rawAttackerCity, $rawAttackerNation, true, $year, $month);
|
||||
|
||||
$city = new WarUnitCity($rawDefenderCity, $rawAttackerNation, $year, $month, $cityRate);
|
||||
$city = new WarUnitCity($rawDefenderCity, $rawDefenderNation, $year, $month, $cityRate);
|
||||
|
||||
$defenderList = $db->query('SELECT no,name,nation,turntime,personal,special2,crew,crewtype,atmos,train,intel,intel2,book,power,power2,weap,injury,leader,leader2,horse,item,explevel,experience,dedication,level,gold,rice,dex0,dex10,dex20,dex30,dex40,warnum,killnum,deathnum,killcrew,deathcrew,recwar FROM general WHERE nation=%i AND city=%i AND nation!=0 and crew > 0 and rice>(crew/100) and ((train>=60 and atmos>=60 and mode=1) or (train>=80 and atmos>=80 and mode=2))', $city->getVar('nation'), $city->getVar('city'));
|
||||
$defenderList = $db->query('SELECT no,name,nation,turntime,personal,special2,crew,crewtype,atmos,train,intel,intel2,book,power,power2,weap,injury,leader,leader2,horse,item,explevel,experience,dedication,level,gold,rice,dex0,dex10,dex20,dex30,dex40,warnum,killnum,deathnum,killcrew,deathcrew,recwar,mode FROM general WHERE nation=%i AND city=%i AND nation!=0 and crew > 0 and rice>(crew/100) and ((train>=60 and atmos>=60 and mode=1) or (train>=80 and atmos>=80 and mode=2))', $city->getVar('nation'), $city->getVar('city'));
|
||||
|
||||
if(!$defenderList){
|
||||
$defenderList = [];
|
||||
@@ -63,7 +63,12 @@ function processWar(array $rawAttacker, array $rawDefenderCity){
|
||||
return null;
|
||||
}
|
||||
|
||||
$retVal = new WarUnitGeneral($iterDefender->current(), $rawDefenderCity, $rawDefenderNation, false, $year, $month);
|
||||
$rawGeneral = $iterDefender->current();
|
||||
if(extractBattleOrder($rawGeneral) <= 0){
|
||||
return null;
|
||||
}
|
||||
|
||||
$retVal = new WarUnitGeneral($rawGeneral, $rawDefenderCity, $rawDefenderNation, false, $year, $month);
|
||||
$iterDefender->next();
|
||||
return $retVal;
|
||||
};
|
||||
@@ -154,13 +159,33 @@ function processWar(array $rawAttacker, array $rawDefenderCity){
|
||||
}
|
||||
|
||||
function extractBattleOrder($general){
|
||||
if($general['crew'] == 0){
|
||||
return 0;
|
||||
}
|
||||
|
||||
if($general['rice'] <= $general['crew'] / 100){
|
||||
return 0;
|
||||
}
|
||||
|
||||
if($general['mode'] == 0){
|
||||
return 0;
|
||||
}
|
||||
|
||||
if($general['mode'] == 1 && ($general['train'] < 60 || $general['atmos'] < 60)){
|
||||
return 0;
|
||||
}
|
||||
|
||||
if($general['mode'] == 2 && ($general['train'] < 80 || $general['atmos'] < 80)){
|
||||
return 0;
|
||||
}
|
||||
|
||||
return (
|
||||
$general['leader'] +
|
||||
$general['power'] +
|
||||
$general['intel'] +
|
||||
$general['weap'] +
|
||||
$general['horse'] +
|
||||
$general['book'] +
|
||||
getWeapEff($general['weap']) +
|
||||
getHorseEff($general['horse']) +
|
||||
getBookEff($general['book']) +
|
||||
$general['crew'] / 100
|
||||
);
|
||||
}
|
||||
@@ -237,7 +262,7 @@ function processWar_NG(
|
||||
$josaYi = JosaUtil::pick($attacker->getName(), '이');
|
||||
$josaRo = JosaUtil::pick($attacker->getCrewTypeName(), '로');
|
||||
$logger->pushGlobalActionLog("<Y>{$attacker->getName()}</>{$josaYi} {$attacker->getCrewTypeName()}{$josaRo} 성벽을 공격합니다.");
|
||||
$logger->pushGeneralActionLog("<C>●</>{$attacker->getCrewTypeName()}{$josaRo} 성벽을 <M>공격</>합니다.", ActionLogger::PLAIN);
|
||||
$logger->pushGeneralActionLog("{$attacker->getCrewTypeName()}{$josaRo} 성벽을 <M>공격</>합니다.", ActionLogger::PLAIN);
|
||||
}
|
||||
|
||||
$defender->useBattleInitItem();
|
||||
@@ -245,8 +270,12 @@ function processWar_NG(
|
||||
$attacker->setOppose($defender);
|
||||
$defender->setOppose($attacker);
|
||||
|
||||
$attacker->checkBattleBeginSkill();
|
||||
$defender->checkBattleBeginSkill();
|
||||
foreach(Util::zip(
|
||||
$attacker->checkBattleBeginSkill(),
|
||||
$defender->checkBattleBeginSkill()
|
||||
) as $b){
|
||||
//doNothing
|
||||
}
|
||||
|
||||
$attacker->checkBattleBeginItem();
|
||||
$defender->checkBattleBeginItem();
|
||||
@@ -258,21 +287,33 @@ function processWar_NG(
|
||||
$attacker->beginPhase();
|
||||
$defender->beginPhase();
|
||||
|
||||
$attacker->checkPreActiveSkill();
|
||||
$defender->checkPreActiveSkill();
|
||||
foreach(Util::zip(
|
||||
$attacker->checkPreActiveSkill(),
|
||||
$defender->checkPreActiveSkill()
|
||||
) as $b){
|
||||
//doNothing
|
||||
}
|
||||
|
||||
$attacker->checkActiveSkill();
|
||||
$defender->checkActiveSkill();
|
||||
foreach(Util::zip(
|
||||
$attacker->checkActiveSkill(),
|
||||
$defender->checkActiveSkill()
|
||||
) as $b){
|
||||
//doNothing
|
||||
}
|
||||
//NOTE: 마법은 checkActiveSkill, checkPostActiveSkill 내에서 반영
|
||||
|
||||
$attacker->checkPostActiveSkill();
|
||||
$defender->checkPostActiveSkill();
|
||||
foreach(Util::zip(
|
||||
$attacker->checkPostActiveSkill(),
|
||||
$defender->checkPostActiveSkill()
|
||||
) as $b){
|
||||
//doNothing
|
||||
}
|
||||
//NOTE: 반계류 등의 스킬을 post에서 반영
|
||||
|
||||
$activeSkillIterator = new \AppendIterator();
|
||||
$activeSkillIterator->append($attacker->applyActiveSkill());
|
||||
$activeSkillIterator->append($defender->applyActiveSkill());
|
||||
foreach($activeSkillIterator as $b){
|
||||
foreach(Util::zip(
|
||||
$attacker->applyActiveSkill(),
|
||||
$defender->applyActiveSkill()
|
||||
) as $b){
|
||||
//doNothing
|
||||
}
|
||||
|
||||
@@ -396,11 +437,11 @@ function processWar_NG(
|
||||
|
||||
if($currPhase == $attacker->getMaxPhase()){
|
||||
//마지막 페이즈의 전투 마무리
|
||||
$attacker->tryWound();
|
||||
$defender->tryWound();
|
||||
|
||||
$attacker->logBattleResult();
|
||||
$defender->logBattleResult();
|
||||
|
||||
$attacker->tryWound();
|
||||
$defender->tryWound();
|
||||
}
|
||||
|
||||
if($defender instanceof WarUnitCity){
|
||||
@@ -473,6 +514,7 @@ function ConquerCity($admin, $general, $city, $nation, $destnation) {
|
||||
pushNationHistory($destnation, "<C>●</>{$year}년 {$month}월:<D><b>{$nation['name']}</b></>의 <Y>{$general['name']}</>에 의해 <G><b>{$city['name']}</b></>{$josaYiCity} <span class='ev_highlight'>함락</span>");
|
||||
|
||||
$citycount = $db->queryFirstField('SELECT count(city) FROM city WHERE nation = %i', $city['nation']);
|
||||
$renewFront = false;
|
||||
|
||||
// 국가 멸망시
|
||||
//TODO: 국가 멸망 코드를 별도로 작성
|
||||
@@ -484,9 +526,6 @@ function ConquerCity($admin, $general, $city, $nation, $destnation) {
|
||||
$history[] = "<C>●</>{$year}년 {$month}월:<R><b>【멸망】</b></><D><b>{$losenation['name']}</b></>{$josaYi} 멸망하였습니다.";
|
||||
pushNationHistory($nation, "<C>●</>{$year}년 {$month}월:<D><b>{$losenation['name']}</b></>{$josaUl} 정복");
|
||||
|
||||
//다굴치는 나라들 전방설정을 위해 미리 얻어옴
|
||||
$dipNations = $db->queryFirstColumn('SELECT you FROM diplomacy WHERE me = %i', $losenation['nation']);
|
||||
|
||||
$loseGeneralGold = 0;
|
||||
$loseGeneralRice = 0;
|
||||
//멸망국 장수들 역사 기록 및 로그 전달
|
||||
@@ -590,11 +629,7 @@ function ConquerCity($admin, $general, $city, $nation, $destnation) {
|
||||
// 국가 삭제
|
||||
$query = "delete from nation where nation='{$city['nation']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
// 아까 얻어온 다굴국들 전방설정
|
||||
foreach($dipNations as $dip){
|
||||
//전방설정
|
||||
SetNationFront($dip);
|
||||
}
|
||||
$renewFront = true;
|
||||
// 멸망이 아니면
|
||||
} else {
|
||||
// 태수,군사,시중은 일반으로...
|
||||
@@ -637,14 +672,11 @@ function ConquerCity($admin, $general, $city, $nation, $destnation) {
|
||||
}
|
||||
}
|
||||
|
||||
$general['atmos'] *= 1.1; //사기 증가
|
||||
if($general['atmos'] > GameConst::$maxAtmosByWar) { $general['atmos'] = GameConst::$maxAtmosByWar; }
|
||||
|
||||
$conquerNation = getConquerNation($city);
|
||||
|
||||
if($conquerNation == $general['nation']) {
|
||||
// 이동 및 사기 변경
|
||||
$query = "update general set city='{$city['city']}',atmos='{$general['atmos']}',killnum=killnum+1 where no='{$general['no']}'";
|
||||
// 이동
|
||||
$query = "update general set city='{$city['city']}' where no='{$general['no']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
if($city['level'] > 3) {
|
||||
// 도시 소속 변경, 태수,군사,시중 초기화
|
||||
@@ -662,17 +694,12 @@ function ConquerCity($admin, $general, $city, $nation, $destnation) {
|
||||
$query = "select name,nation from nation where nation='$conquerNation'";
|
||||
$conquerResult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$conquerNationArray = MYDB_fetch_array($conquerResult);
|
||||
|
||||
|
||||
|
||||
$josaUl = JosaUtil::pick($city['name'], '을');
|
||||
$josaYi = JosaUtil::pick($conquerNationArray['name'], '이');
|
||||
$history[] = "<C>●</>{$year}년 {$month}월:<Y><b>【분쟁협상】</b></><D><b>{$conquerNationArray['name']}</b></>{$josaYi} 영토분쟁에서 우위를 점하여 <G><b>{$city['name']}</b></>{$josaUl} 양도받았습니다.";
|
||||
pushNationHistory($nation, "<C>●</>{$year}년 {$month}월:<G><b>{$city['name']}</b></>{$josaUl} <D><b>{$conquerNationArray['name']}</b></>에 <Y>양도</>");
|
||||
pushNationHistory($conquerNationArray, "<C>●</>{$year}년 {$month}월:<D><b>{$nation['name']}</b></>에서 <G><b>{$city['name']}</b></>{$josaUl} <S>양도</> 받음");
|
||||
// 이동X 및 사기 변경
|
||||
$query = "update general set atmos='{$general['atmos']}',killnum=killnum+1 where no='{$general['no']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
|
||||
$query = [
|
||||
'supply'=>1,
|
||||
@@ -700,6 +727,15 @@ function ConquerCity($admin, $general, $city, $nation, $destnation) {
|
||||
SetNationFront($conquerNation);
|
||||
}
|
||||
|
||||
if($renewFront){
|
||||
foreach(getAllNationStaticInfo() as $nation){
|
||||
if($nation['level'] <= 0){
|
||||
continue;
|
||||
}
|
||||
SetNationFront($nation['nation']);
|
||||
}
|
||||
}
|
||||
|
||||
pushGenLog($general, $log);
|
||||
pushGeneralPublicRecord($alllog, $year, $month);
|
||||
pushWorldHistory($history);
|
||||
|
||||
+7
-7
@@ -1609,11 +1609,11 @@ function command_53($turn, $command) {
|
||||
$result = MYDB_query($query, $connect) or Error("command_53 ".MYDB_error($connect),"");
|
||||
$me = MYDB_fetch_array($result);
|
||||
|
||||
$query = "select round(avg(power)) as power,round(avg(gennum)) as gennum from nation where level>=1";
|
||||
$query = "select avg(power) as power,avg(gennum) as gennum from nation where level>=1";
|
||||
$result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),"");
|
||||
$avgNation = MYDB_fetch_array($result);
|
||||
|
||||
$query = "select round(std(power)) as power,round(std(gennum)) as gennum from nation where level>=1";
|
||||
$query = "select std(power) as power,std(gennum) as gennum from nation where level>=1";
|
||||
$result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),"");
|
||||
$stdNation = MYDB_fetch_array($result);
|
||||
|
||||
@@ -1633,13 +1633,13 @@ function command_53($turn, $command) {
|
||||
$result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),"");
|
||||
$count = MYDB_num_rows($result);
|
||||
|
||||
$cond1 = $avgNation['power']+$stdNation['power'];
|
||||
$cond2 = $avgNation['gennum']+$stdNation['gennum'];
|
||||
$cond1 = (-0.25 * $stdNation['power']) + $avgNation['power'];
|
||||
$cond2 = (-0.67 * $stdNation['gennum']) + $avgNation['gennum'];
|
||||
|
||||
for($i=1; $i <= $count; $i++) {
|
||||
$nation = MYDB_fetch_array($result);
|
||||
|
||||
if($myNation['power']+$nation['power'] > $cond1 || $myNation['gennum']+$nation['gennum'] > $cond2 || !isNeighbor($me['nation'], $nation['nation'])) {
|
||||
if(($myNation['power']+$nation['power'])/2 > $cond1 || ($myNation['gennum']+$nation['gennum'])/2 > $cond2 || !isNeighbor($me['nation'], $nation['nation'])) {
|
||||
echo "<option style=color:{$nation['color']};background-color:red; value={$nation['nation']}>【 {$nation['name']} 】</option>";
|
||||
} else {
|
||||
echo "<option style=color:{$nation['color']} value={$nation['nation']}>【 {$nation['name']} 】</option>";
|
||||
@@ -1661,8 +1661,8 @@ function command_53($turn, $command) {
|
||||
제한 조건<br>
|
||||
- 인접 국가<br>
|
||||
- 양국 모두 외교제한 없음<br>
|
||||
- 양국 국력의 합이 평균+표준편차(현재 {$cond1}) 이하<br>
|
||||
- 양국 장수수의 합이 평균+표준편차(현재 {$cond2}) 이하<br>
|
||||
- 두 국가의 국력 평균이 상위 60%(현재 ".round($cond1,2).") 이하.<br>
|
||||
- 두 국가의 장수수 평균이 상위 75%(현재 ".round($cond2,1).") 이하.<br>
|
||||
";
|
||||
ender(1);
|
||||
}
|
||||
|
||||
@@ -43,6 +43,16 @@ class ActionLogger{
|
||||
}
|
||||
|
||||
public function rollback(){
|
||||
$backup = [
|
||||
'generalHistoryLog'=>$this->generalHistoryLog,
|
||||
'generalActionLog'=>$this->generalActionLog,
|
||||
'generalBattleResultLog'=>$this->generalBattleResultLog,
|
||||
'generalBattleDetailLog'=>$this->generalBattleDetailLog,
|
||||
'nationalHistoryLog'=>$this->nationalHistoryLog,
|
||||
'globalHistoryLog'=>$this->globalHistoryLog,
|
||||
'globalActionLog'=>$this->globalActionLog,
|
||||
];
|
||||
|
||||
$this->generalHistoryLog = [];
|
||||
$this->generalActionLog = [];
|
||||
$this->generalBattleResultLog = [];
|
||||
@@ -50,6 +60,8 @@ class ActionLogger{
|
||||
$this->nationalHistoryLog = [];
|
||||
$this->globalHistoryLog = [];
|
||||
$this->globalActionLog = [];
|
||||
|
||||
return $backup;
|
||||
}
|
||||
|
||||
public function flush(){
|
||||
|
||||
@@ -181,7 +181,7 @@ class DiplomaticMessage extends Message{
|
||||
$josaWa = JosaUtil::pick($this->src->nationName, '와');
|
||||
pushGeneralHistory(
|
||||
['no'=>$this->dest->generalID],
|
||||
["<C>●</>{$helper->year}년 {$helper->month}월:<D><b>{$this->src->nationName}</b></>{$josaWa} 통합 시도"]
|
||||
"<C>●</>{$helper->year}년 {$helper->month}월:<D><b>{$this->src->nationName}</b></>{$josaWa} 통합 시도"
|
||||
);
|
||||
pushGenLog(
|
||||
['no'=>$this->dest->generalID],
|
||||
@@ -200,7 +200,7 @@ class DiplomaticMessage extends Message{
|
||||
$josaWa = JosaUtil::pick($this->dest->nationName, '와');
|
||||
pushGeneralHistory(
|
||||
['no'=>$this->src->generalID],
|
||||
["<C>●</>{$helper->year}년 {$helper->month}월:<D><b>{$this->dest->nationName}</b></>{$josaWa} 통합 시도"]
|
||||
"<C>●</>{$helper->year}년 {$helper->month}월:<D><b>{$this->dest->nationName}</b></>{$josaWa} 통합 시도"
|
||||
);
|
||||
$josaYi = JosaUtil::pick($this->dest->nationName, '이');
|
||||
pushGenLog(
|
||||
|
||||
@@ -29,12 +29,12 @@ class Diplomacy{
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
$srcNation = $db->queryFirstRow(
|
||||
'SELECT nation, `name`, `power`, capital, gold, rice, surlimit, color, `level` FROM nation WHERE nation=%i',
|
||||
'SELECT nation, `name`, `power`, capital, gold, rice, gennum, surlimit, color, `level` FROM nation WHERE nation=%i',
|
||||
$srcNationID
|
||||
);
|
||||
|
||||
$destNation = $db->queryFirstRow(
|
||||
'SELECT nation, `name`, `power`, capital, gold, rice, surlimit, color, `level` FROM nation WHERE nation=%i',
|
||||
'SELECT nation, `name`, `power`, capital, gold, rice, gennum, surlimit, color, `level` FROM nation WHERE nation=%i',
|
||||
$destNationID
|
||||
);
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ class GameConstBase
|
||||
/** @var float 훈련시 사기 감소율*/
|
||||
public static $atmosSideEffectByTraining = 1;
|
||||
/** @var float 계략 기본 성공률*/
|
||||
public static $sabotageDefaultProb = 0.15;
|
||||
public static $sabotageDefaultProb = 0.35;
|
||||
/** @var int 계략시 확률 가중치(수치가 클수록 변화가 적음 : (지력차/$firing + $basefiring)*/
|
||||
public static $sabotageProbCoefByStat = 300;
|
||||
/** @var int 계략시 최소 수치 감소량*/
|
||||
|
||||
@@ -38,7 +38,7 @@ class GameUnitConstBase{
|
||||
100, 100, 7, 0, 0, 99, 9,
|
||||
999999, null, null, 999999,
|
||||
[],//성벽은 공격할 수 없다.
|
||||
[],
|
||||
[self::T_FOOTMAN=>1.2],
|
||||
['성벽입니다.','생성할 수 없습니다.']
|
||||
],
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ use \sammo\GameUnitConst;
|
||||
|
||||
class NPC{
|
||||
|
||||
public $generalID = null;
|
||||
public $realName = null;
|
||||
|
||||
public $affinity;
|
||||
public $name;
|
||||
public $picturePath;
|
||||
@@ -24,6 +27,16 @@ class NPC{
|
||||
public $charWar = 0;
|
||||
public $npc = 2;
|
||||
public $text;
|
||||
static $prefixList = [
|
||||
1 => 'ⓝ', //빙의 NPC
|
||||
2 => 'ⓝ', //NPC
|
||||
3 => 'ⓜ', //인탐 장수
|
||||
4 => 'ⓖ', //의병장(전략)
|
||||
5 => '㉥', //부대장
|
||||
6 => 'ⓤ', //unselectable npc, 빙의 불가 npc
|
||||
|
||||
9 => 'ⓞ', //오랑캐?
|
||||
];
|
||||
|
||||
//[ 1, "헌제",1002, 1, null, 17, 13, 61, 0, 170, 250, "안전", null, "산 넘어 산이로구나..."],
|
||||
public function __construct(
|
||||
@@ -90,6 +103,18 @@ class NPC{
|
||||
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'];
|
||||
@@ -144,7 +169,8 @@ class NPC{
|
||||
$charDomestic = 0;
|
||||
}
|
||||
|
||||
$name = 'ⓝ'.$this->name;
|
||||
$name = (static::$prefixList[$this->npc]?:'ⓧ').$this->name;
|
||||
$this->realName = $name;
|
||||
|
||||
$picturePath = $this->picturePath;
|
||||
if($env['show_img_level'] < 3){
|
||||
@@ -248,6 +274,7 @@ class NPC{
|
||||
'bornyear'=>$this->birth,
|
||||
'deadyear'=>$this->death
|
||||
]);
|
||||
$this->generalID = $db->insertId();
|
||||
|
||||
return true; //생성되었다.
|
||||
}
|
||||
|
||||
+46
-10
@@ -28,11 +28,32 @@ class WarUnit{
|
||||
protected $warPowerMultiply = 1.0;
|
||||
|
||||
protected $activatedSkill = [];
|
||||
protected $logActivatedSkill = [];
|
||||
protected $isFinished = false;
|
||||
|
||||
private function __construct(){
|
||||
}
|
||||
|
||||
protected function clearActivatedSkill(){
|
||||
foreach($this->activatedSkill as $skillName=>$state){
|
||||
if(!$state){
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!key_exists($skillName, $this->logActivatedSkill)){
|
||||
$this->logActivatedSkill[$skillName] = 1;
|
||||
}
|
||||
else{
|
||||
$this->logActivatedSkill[$skillName] += 1;
|
||||
}
|
||||
}
|
||||
$this->activatedSkill = [];
|
||||
}
|
||||
|
||||
function getActivatedSkillLog():array{
|
||||
return $this->logActivatedSkill;
|
||||
}
|
||||
|
||||
function getRaw():array{
|
||||
return $this->raw;
|
||||
}
|
||||
@@ -183,7 +204,7 @@ class WarUnit{
|
||||
$this->oppose = $oppose;
|
||||
$this->killedCurr = 0;
|
||||
$this->deadCurr = 0;
|
||||
$this->activatedSkill = [];
|
||||
$this->clearActivatedSkill();
|
||||
}
|
||||
|
||||
function getOppose():?WarUnit{
|
||||
@@ -269,6 +290,14 @@ class WarUnit{
|
||||
return;
|
||||
}
|
||||
|
||||
function addTrainBonus(int $trainBonus){
|
||||
$this->trainBonus += $trainBonus;
|
||||
}
|
||||
|
||||
function addAtmosBonus(int $atmosBonus){
|
||||
$this->atmosBonus += $atmosBonus;
|
||||
}
|
||||
|
||||
function getComputedTrain(){
|
||||
return GameConst::$maxTrainByCommand;
|
||||
}
|
||||
@@ -304,12 +333,12 @@ class WarUnit{
|
||||
}
|
||||
|
||||
function beginPhase():void{
|
||||
$this->activatedSkill = [];
|
||||
$this->clearActivatedSkill();
|
||||
$this->computeWarPower();
|
||||
}
|
||||
|
||||
function checkBattleBeginSkill():bool{
|
||||
return false;
|
||||
function checkBattleBeginSkill(){
|
||||
yield true;
|
||||
}
|
||||
|
||||
function checkBattleBeginItem():bool{
|
||||
@@ -324,6 +353,13 @@ class WarUnit{
|
||||
return $this->activatedSkill[$skillName] ?? false;
|
||||
}
|
||||
|
||||
function hasActivatedSkillOnLog(string $skillName):bool{
|
||||
if(key_exists($skillName, $this->logActivatedSkill)){
|
||||
return true;
|
||||
}
|
||||
return $this->hasActivatedSkill($skillName);
|
||||
}
|
||||
|
||||
function activateSkill(... $skillNames){
|
||||
foreach($skillNames as $skillName){
|
||||
$this->activatedSkill[$skillName] = true;
|
||||
@@ -336,16 +372,16 @@ class WarUnit{
|
||||
}
|
||||
}
|
||||
|
||||
function checkPreActiveSkill():bool{
|
||||
return false;
|
||||
function checkPreActiveSkill(){
|
||||
yield true;
|
||||
}
|
||||
|
||||
function checkActiveSkill():bool{
|
||||
return false;
|
||||
function checkActiveSkill(){
|
||||
yield true;
|
||||
}
|
||||
|
||||
function checkPostActiveSkill():bool{
|
||||
return false;
|
||||
function checkPostActiveSkill(){
|
||||
yield true;
|
||||
}
|
||||
|
||||
function applyActiveSkill(){
|
||||
|
||||
@@ -90,6 +90,7 @@ class WarUnitCity extends WarUnit{
|
||||
if($this->isFinished){
|
||||
return;
|
||||
}
|
||||
$this->clearActivatedSkill();
|
||||
$this->isFinished = true;
|
||||
|
||||
$this->updateVar('def', Util::round($this->getHP() / 10));
|
||||
|
||||
@@ -219,6 +219,9 @@ class WarUnitGeneral extends WarUnit{
|
||||
else if($specialWar == 61){
|
||||
$myWarPowerMultiply *= 1.10;
|
||||
}
|
||||
else if($specialWar == 62){
|
||||
$opposeWarPowerMultiply *= 0.95;
|
||||
}
|
||||
else if($specialWar == 50){
|
||||
if($this->isAttacker){
|
||||
$opposeWarPowerMultiply *= 0.9;
|
||||
@@ -311,12 +314,12 @@ class WarUnitGeneral extends WarUnit{
|
||||
}
|
||||
else if($item >= 14 && $item <= 16){
|
||||
//의적주, 두강주, 보령압주 사용
|
||||
$this->addAtmos(5);
|
||||
$this->addAtmosBonus(5);
|
||||
$itemActivated = true;
|
||||
}
|
||||
else if($item >= 19 && $item <= 20){
|
||||
//춘화첩, 초선화 사용
|
||||
$this->addAtmos(7);
|
||||
$this->addAtmosBonus(7);
|
||||
$itemActivated = true;
|
||||
}
|
||||
else if($item == 4){
|
||||
@@ -327,12 +330,12 @@ class WarUnitGeneral extends WarUnit{
|
||||
}
|
||||
else if($item >= 12 && $item <= 13){
|
||||
//과실주, 이강주 사용
|
||||
$this->addTrain(5);
|
||||
$this->addTrainBonus(5);
|
||||
$itemActivated = true;
|
||||
}
|
||||
else if($item >= 18 && $item <= 18){
|
||||
//철벽서, 단결도 사용
|
||||
$this->addTrain(7);
|
||||
$this->addTrainBonus(7);
|
||||
$itemActivated = true;
|
||||
}
|
||||
|
||||
@@ -346,22 +349,35 @@ class WarUnitGeneral extends WarUnit{
|
||||
}
|
||||
|
||||
///전투 개시 시에 작동하여 매 장수마다 작동하는 스킬
|
||||
function checkBattleBeginSkill():bool{
|
||||
$skillResult = false;
|
||||
function checkBattleBeginSkill(){
|
||||
$oppose = $this->getOppose();
|
||||
|
||||
$specialWar = $this->getSpecialWar();
|
||||
|
||||
if(
|
||||
$this->getCrewType()->armType == GameUnitConst::T_SIEGE &&
|
||||
$oppose->getCrewType()->armType == GameUnitConst::T_CASTLE
|
||||
){
|
||||
$this->activateSkill('부상무효');
|
||||
}
|
||||
yield true;
|
||||
|
||||
if($specialWar == 62){
|
||||
$oppose->activateSkill('저격불가');
|
||||
$this->activateSkill('부상무효');
|
||||
}
|
||||
yield true;
|
||||
|
||||
if (
|
||||
$specialWar == 70 &&
|
||||
$this->oppose instanceof WarUnitGeneral &&
|
||||
!$this->hasActivatedSkill('저격') &&
|
||||
!$this->hasActivatedSkill('저격불가') &&
|
||||
Util::randBool(1/3)
|
||||
) {
|
||||
$this->activateSkill('저격');
|
||||
$skillResult = true;
|
||||
}
|
||||
|
||||
return $skillResult;
|
||||
yield true;
|
||||
}
|
||||
|
||||
///전투 개시 시에 작동하여 매 장수마다 작동하는 아이템
|
||||
@@ -380,6 +396,7 @@ class WarUnitGeneral extends WarUnit{
|
||||
$item == 2 &&
|
||||
$this->oppose instanceof WarUnitGeneral &&
|
||||
!$this->hasActivatedSkill('저격') &&
|
||||
!$this->hasActivatedSkill('저격불가') &&
|
||||
Util::randBool(1/5)
|
||||
){
|
||||
//수극
|
||||
@@ -475,7 +492,6 @@ class WarUnitGeneral extends WarUnit{
|
||||
$rice *= 0.8;
|
||||
}
|
||||
|
||||
$rice *= getCharExpMultiplier($this->getCharacter());
|
||||
$rice *= $this->crewType->rice;
|
||||
$rice *= getTechCost($this->getNationVar('tech'));
|
||||
|
||||
@@ -492,7 +508,7 @@ class WarUnitGeneral extends WarUnit{
|
||||
return $this->killed;
|
||||
}
|
||||
|
||||
function checkPreActiveSkill():bool{
|
||||
function checkPreActiveSkill(){
|
||||
$activated = false;
|
||||
|
||||
$oppose = $this->getOppose();
|
||||
@@ -500,34 +516,33 @@ class WarUnitGeneral extends WarUnit{
|
||||
$item = $this->getItem();
|
||||
$crewType = $this->getCrewType();
|
||||
|
||||
if($specialWar == 62){
|
||||
$oppose->activateSkill('필살불가');
|
||||
$oppose->activateSkill('위압불가');
|
||||
$oppose->activateSkill('격노불가');
|
||||
$oppose->activateSkill('계략약화');
|
||||
}
|
||||
yield true;
|
||||
|
||||
if(
|
||||
$specialWar == 63 &&
|
||||
$this->getPhase() == 0 &&
|
||||
$this->getHP() >= 1000 &&
|
||||
$this->getComputedAtmos() >= 90 &&
|
||||
$this->getComputedTrain() >= 90
|
||||
$this->getComputedTrain() >= 90 &&
|
||||
!$this->hasActivatedSkill('위압불가')
|
||||
){
|
||||
$this->activateSkill('위압');
|
||||
$activated = true;
|
||||
}
|
||||
|
||||
if($specialWar == 62){
|
||||
$oppose->activateSkill('필살불가');
|
||||
$oppose->activateSkill('계략약화');
|
||||
$activated = true;
|
||||
}
|
||||
yield true;
|
||||
|
||||
if($specialWar == 60){
|
||||
$oppose->activateSkill('회피불가');
|
||||
$oppose->activateSkill('저지불가');
|
||||
}
|
||||
|
||||
return $activated;
|
||||
yield true;
|
||||
}
|
||||
|
||||
function checkActiveSkill():bool{
|
||||
$activated = false;
|
||||
|
||||
function checkActiveSkill(){
|
||||
$oppose = $this->getOppose();
|
||||
$specialWar = $this->getSpecialWar();
|
||||
$item = $this->getItem();
|
||||
@@ -543,9 +558,9 @@ class WarUnitGeneral extends WarUnit{
|
||||
$ratio = $this->getComputedAtmos() + $this->getComputedTrain();
|
||||
if(Util::randBool($ratio / 400)){
|
||||
$this->activateSkill('특수', '저지');
|
||||
$activated = true;
|
||||
}
|
||||
}
|
||||
yield true;
|
||||
|
||||
if(
|
||||
!$this->hasActivatedSkill('특수') &&
|
||||
@@ -553,8 +568,8 @@ class WarUnitGeneral extends WarUnit{
|
||||
Util::randBool($this->getComputedCriticalRatio())
|
||||
){
|
||||
$this->activateSkill('특수', '필살시도', '필살');
|
||||
$activated = true;
|
||||
}
|
||||
yield true;
|
||||
|
||||
if(
|
||||
!$this->hasActivatedSkill('특수') &&
|
||||
@@ -562,8 +577,8 @@ class WarUnitGeneral extends WarUnit{
|
||||
Util::randBool($this->getComputedAvoidRatio())
|
||||
){
|
||||
$this->activateSkill('특수', '회피시도', '회피');
|
||||
$activated = true;
|
||||
}
|
||||
yield true;
|
||||
|
||||
//계략
|
||||
if($crewType->magicCoef){
|
||||
@@ -593,7 +608,7 @@ class WarUnitGeneral extends WarUnit{
|
||||
}
|
||||
|
||||
if($oppose instanceof WarUnitCity){
|
||||
$magic = Util::choiceRandom(['급습', '위보',' 혼란']);
|
||||
$magic = Util::choiceRandom(['급습', '위보', '혼란']);
|
||||
}
|
||||
else{
|
||||
$magic = Util::choiceRandom(['위보', '매복', '반목', '화계', '혼란']);
|
||||
@@ -608,17 +623,16 @@ class WarUnitGeneral extends WarUnit{
|
||||
}
|
||||
}
|
||||
}
|
||||
yield true;
|
||||
|
||||
//의술
|
||||
if($specialWar == 73 && Util::randBool(0.2)){
|
||||
$this->activateSkill('치료');
|
||||
$activated = true;
|
||||
}
|
||||
|
||||
return $activated;
|
||||
yield true;
|
||||
}
|
||||
|
||||
function checkPostActiveSkill():bool{
|
||||
function checkPostActiveSkill(){
|
||||
$activated = false;
|
||||
|
||||
$oppose = $this->getOppose();
|
||||
@@ -626,7 +640,11 @@ class WarUnitGeneral extends WarUnit{
|
||||
$item = $this->getItem();
|
||||
$crewType = $this->getCrewType();
|
||||
|
||||
if($specialWar == 74 && $oppose->hasActivatedSkill('필살')){
|
||||
if(
|
||||
$specialWar == 74 &&
|
||||
$oppose->hasActivatedSkill('필살') &&
|
||||
!$this->hasActivatedSkill('격노불가')
|
||||
){
|
||||
if($this->isAttacker){
|
||||
if(Util::randBool(1/3)){
|
||||
$this->activateSkill('진노', '격노');
|
||||
@@ -644,10 +662,12 @@ class WarUnitGeneral extends WarUnit{
|
||||
}
|
||||
}
|
||||
}
|
||||
yield true;
|
||||
|
||||
if(
|
||||
$specialWar == 74 &&
|
||||
$oppose->hasActivatedSkill('회피')
|
||||
$oppose->hasActivatedSkill('회피') &&
|
||||
!$this->hasActivatedSkill('격노불가')
|
||||
){
|
||||
if($this->isAttacker){
|
||||
if(Util::randBool(1/3)){
|
||||
@@ -669,6 +689,7 @@ class WarUnitGeneral extends WarUnit{
|
||||
}
|
||||
}
|
||||
}
|
||||
yield true;
|
||||
|
||||
if(
|
||||
($item == 23 || $item == 24) &&
|
||||
@@ -678,6 +699,7 @@ class WarUnitGeneral extends WarUnit{
|
||||
$this->activateSkill('치료');
|
||||
$activated = true;
|
||||
}
|
||||
yield true;
|
||||
|
||||
//계략
|
||||
if(
|
||||
@@ -689,6 +711,7 @@ class WarUnitGeneral extends WarUnit{
|
||||
$oppose->deactivateSkill('계략');
|
||||
$activated = true;
|
||||
}
|
||||
yield true;
|
||||
|
||||
if(
|
||||
$specialWar == 42 &&
|
||||
@@ -696,6 +719,7 @@ class WarUnitGeneral extends WarUnit{
|
||||
){
|
||||
$this->warPowerMultiply *= 1.3;
|
||||
}
|
||||
yield true;
|
||||
|
||||
if(
|
||||
$specialWar == 43 &&
|
||||
@@ -703,8 +727,7 @@ class WarUnitGeneral extends WarUnit{
|
||||
){
|
||||
$this->warPowerMultiply *= 1.5;
|
||||
}
|
||||
|
||||
return $activated;
|
||||
yield true;
|
||||
}
|
||||
|
||||
function applyActiveSkill(){
|
||||
@@ -718,8 +741,8 @@ class WarUnitGeneral extends WarUnit{
|
||||
|
||||
if($this->hasActivatedSkill('저지')){
|
||||
|
||||
$this->addDex($oppose->getCrewType(), $oppose->getWarPower() * 0.5 * 0.9);
|
||||
$this->addDex($this->getCrewType(), $this->getWarPower() * 0.5 * 0.9);
|
||||
$this->addDex($oppose->getCrewType(), $oppose->getWarPower() * 0.9);
|
||||
$this->addDex($this->getCrewType(), $this->getWarPower() * 0.9);
|
||||
|
||||
$this->setWarPowerMultiply(0);
|
||||
$oppose->setWarPowerMultiply(0);
|
||||
@@ -785,7 +808,7 @@ class WarUnitGeneral extends WarUnit{
|
||||
foreach($table as $skillKey => $skillMultiply){
|
||||
if($oppose->hasActivatedSkill($skillKey)){
|
||||
$josaUl = \sammo\JosaUtil::pick($skillKey, '을');
|
||||
$thisLogger->pushGeneralBattleDetailLog("<C>●</><C>반계</>로 상대의 <D>{$skillKey}</>{$josaUl} 되돌렸다!");
|
||||
$thisLogger->pushGeneralBattleDetailLog("<C>반계</>로 상대의 <D>{$skillKey}</>{$josaUl} 되돌렸다!");
|
||||
$opposeLogger->pushGeneralBattleDetailLog("<D>{$skillKey}</>{$josaUl} <R>역으로</> 당했다!");
|
||||
|
||||
$this->multiplyWarPowerMultiply($skillMultiply);
|
||||
@@ -822,8 +845,8 @@ class WarUnitGeneral extends WarUnit{
|
||||
$thisLogger->pushGeneralBattleDetailLog("<D>{$skillKey}</>{$josaUl} <R>실패</>했다!");
|
||||
$opposeLogger->pushGeneralBattleDetailLog("<D>{$skillKey}</>{$josaUl} 간파했다!");
|
||||
|
||||
$this->multiplyWarPowerMultiply($skillMultiply);
|
||||
$oppose->multiplyWarPowerMultiply(1/$skillMultiply);
|
||||
$this->multiplyWarPowerMultiply(1/$skillMultiply);
|
||||
$oppose->multiplyWarPowerMultiply($skillMultiply);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -895,6 +918,9 @@ class WarUnitGeneral extends WarUnit{
|
||||
}
|
||||
|
||||
function tryWound():bool{
|
||||
if($this->hasActivatedSkillOnLog('부상무효')){
|
||||
return false;
|
||||
}
|
||||
if(!Util::randBool(0.05)){
|
||||
return false;
|
||||
}
|
||||
@@ -955,6 +981,7 @@ class WarUnitGeneral extends WarUnit{
|
||||
if($this->isFinished){
|
||||
return;
|
||||
}
|
||||
$this->clearActivatedSkill();
|
||||
$this->isFinished = true;
|
||||
|
||||
$this->increaseVar('killcrew', $this->killed);
|
||||
|
||||
@@ -13,27 +13,30 @@
|
||||
"npcMax":95
|
||||
},
|
||||
"general":[
|
||||
[0, "흑뢰의라이제", null, 0, null, 91, 71, 93, 0, 160, 300, null, null],
|
||||
[0, "성녀마리안", null, 0, null, 92, 71, 92, 0, 160, 300, null, null],
|
||||
[0, "팔방미녀세정", null, 0, null, 88, 87, 80, 0, 160, 300, null, null],
|
||||
[0, "빛나는아이오네", null, 0, null, 91, 93, 71, 0, 160, 300, null, null],
|
||||
[0, "포근한라유", null, 0, null, 92, 92, 71, 0, 160, 300, null, null],
|
||||
[0, "은랑의제로스", null, 0, null, 93, 91, 71, 0, 160, 300, null, null],
|
||||
[0, "흑뢰의라이제", null, 0, null, 91, 71, 93, 0, 160, 300, "의협", "집중"],
|
||||
[0, "성녀마리안", null, 0, null, 92, 71, 92, 0, 160, 300, null, "환술"],
|
||||
[0, "팔방미녀세정", null, 0, null, 88, 87, 80, 0, 160, 300, "출세", "위압"],
|
||||
[0, "빛나는아이오네", null, 0, null, 91, 93, 71, 0, 160, 300, "패권", "위압"],
|
||||
[0, "포근한라유", null, 0, null, 92, 92, 71, 0, 160, 300, null, "돌격"],
|
||||
[0, "은랑의제로스", null, 0, null, 93, 91, 71, 0, 160, 300, null, "무쌍"],
|
||||
[0, "악몽술사테리온", null, 0, null, 91, 71, 92, 0, 160, 300, null, null],
|
||||
[0, "마검의제시카", null, 0, null, 91, 92, 71, 0, 160, 300, null, null],
|
||||
[0, "분노의슈란", null, 0, null, 91, 92, 71, 0, 160, 300, null, null],
|
||||
[0, "영광의시아레스", null, 0, null, 92, 91, 71, 0, 160, 300, null, null],
|
||||
[0, "마검의제시카", null, 0, null, 91, 92, 71, 0, 160, 300, null, "기병"],
|
||||
[0, "분노의슈란", null, 0, null, 91, 92, 71, 0, 160, 300, null, "궁병"],
|
||||
[0, "영광의시아레스", null, 0, null, 92, 91, 71, 0, 160, 300, null, "돌격"],
|
||||
[0, "홍련의리오스", null, 0, null, 92, 91, 71, 0, 160, 300, null, null],
|
||||
[0, "붉은눈의마모아", null, 0, null, 87, 80, 86, 0, 160, 300, null, null],
|
||||
[0, "블리자드네로스", null, 0, null, 92, 90, 71, 0, 160, 300, null, null],
|
||||
[0, "혈광의바이넨", null, 0, null, 91, 92, 70, 0, 160, 300, null, null],
|
||||
[0, "붉은유성하네드", null, 0, null, 90, 93, 69, 0, 160, 300, null, null],
|
||||
[0, "아랍왕자애버스", null, 0, null, 86, 81, 85, 0, 160, 300, null, null],
|
||||
[0, "성검의알렌시아", null, 0, null, 91, 91, 70, 0, 160, 300, null, null],
|
||||
[0, "뉴페이스마르첼라", null, 0, null, 90, 70, 91, 0, 160, 300, null, null],
|
||||
[0, "환영의에루다", null, 0, null, 88, 73, 90, 0, 160, 300, null, null],
|
||||
[0, "마도사나나리", null, 0, null, 91, 70, 90, 0, 160, 300, null, null],
|
||||
[0, "의유혹의유메리아", null, 0, null, 86, 79, 86, 0, 160, 300, null, null],
|
||||
[0, "유혹의유메리아", null, 0, null, 86, 79, 86, 0, 160, 300, null, null],
|
||||
[0, "풍요로운오리헨", null, 0, null, 92, 91, 68, 0, 160, 300, null, null],
|
||||
[0, "리에하르", null, 0, null, 90, 68, 92, 0, 160, 300, null, null],
|
||||
[0, "유혹의리에하르", null, 0, null, 90, 68, 92, 0, 160, 300, null, null],
|
||||
[0, "용의기사카헬", null, 0, null, 87, 92, 71, 0, 160, 300, null, null],
|
||||
[0, "파괴의바스타레", null, 0, null, 85, 82, 82, 0, 160, 300, null, null],
|
||||
[0, "약속의글로리아", null, 0, null, 90, 92, 67, 0, 160, 300, null, null],
|
||||
[0, "차가운세피럴", null, 0, null, 88, 69, 91, 0, 160, 300, null, null],
|
||||
@@ -51,13 +54,15 @@
|
||||
[0, "약속의카엘", null, 0, null, 85, 89, 70, 0, 160, 300, null, null],
|
||||
[0, "신농가관지평", null, 0, null, 88, 66, 89, 0, 160, 300, null, null],
|
||||
[0, "귀여운리모네", null, 0, null, 85, 79, 79, 0, 160, 300, null, null],
|
||||
[0, "이데아", null, 0, null, 84, 89, 70, 0, 160, 300, null, null],
|
||||
[0, "공포의이데아", null, 0, null, 84, 89, 70, 0, 160, 300, null, null],
|
||||
[0, "현장복귀딘", null, 0, null, 86, 89, 68, 0, 160, 300, null, null],
|
||||
[0, "리나젤", null, 0, null, 86, 90, 67, 0, 160, 300, null, null],
|
||||
[0, "환수사세라자드", null, 0, null, 88, 89, 66, 0, 160, 300, null, null],
|
||||
[0, "섬광의마틸다", null, 0, null, 88, 92, 63, 0, 160, 300, null, null],
|
||||
[0, "건강한꼬마루피나", null, 0, null, 89, 92, 62, 0, 160, 300, null, null],
|
||||
[0, "마법상인비르시아", null, 0, null, 88, 72, 83, 0, 160, 300, null, null],
|
||||
[0, "신탁의하노아", null, 0, null, 89, 93, 60, 0, 160, 300, null, null],
|
||||
[0, "마룡의제크", null, 0, null, 88, 64, 90, 0, 160, 300, null, null],
|
||||
[0, "광역의블레악스", null, 0, null, 86, 67, 88, 0, 160, 300, null, null],
|
||||
[0, "유혹의나룬", null, 0, null, 80, 83, 78, 0, 160, 300, null, null],
|
||||
[0, "정령궁수모니카", null, 0, null, 86, 88, 67, 0, 160, 300, null, null],
|
||||
@@ -65,11 +70,11 @@
|
||||
[0, "저주의네로메루", null, 0, null, 86, 64, 90, 0, 160, 300, null, null],
|
||||
[0, "백련의마르센", null, 0, null, 86, 86, 68, 0, 160, 300, null, null],
|
||||
[0, "풍광의아이리", null, 0, null, 86, 88, 66, 0, 160, 300, null, null],
|
||||
[0, "세르펜스", null, 0, null, 89, 60, 90, 0, 160, 300, null, null],
|
||||
[0, "따뜻한세르펜스", null, 0, null, 89, 60, 90, 0, 160, 300, null, null],
|
||||
[0, "블랙어스카이로스", null, 0, null, 84, 85, 70, 0, 160, 300, null, null],
|
||||
[0, "분란의새논", null, 0, null, 87, 86, 65, 0, 160, 300, null, null],
|
||||
[0, "미소의아스트리아", null, 0, null, 82, 65, 90, 0, 160, 300, null, null],
|
||||
[0, "어맨더", null, 0, null, 83, 87, 67, 0, 160, 300, null, null],
|
||||
[0, "섬광의어맨더", null, 0, null, 83, 87, 67, 0, 160, 300, null, null],
|
||||
[0, "염사의라루아", null, 0, null, 84, 86, 66, 0, 160, 300, null, null],
|
||||
[0, "뿅망치에멜", null, 0, null, 86, 85, 65, 0, 160, 300, null, null],
|
||||
[0, "정보상인미세리아", null, 0, null, 86, 60, 89, 0, 160, 300, null, null],
|
||||
@@ -78,7 +83,7 @@
|
||||
[0, "찰나의아리스", null, 0, null, 82, 84, 69, 0, 160, 300, null, null],
|
||||
[0, "흑랑의리코스", null, 0, null, 83, 87, 65, 0, 160, 300, null, null],
|
||||
[0, "혈광의클라우드", null, 0, null, 84, 88, 63, 0, 160, 300, null, null],
|
||||
[0, "크리디", null, 0, null, 80, 64, 90, 0, 160, 300, null, null],
|
||||
[0, "미룡의크리디", null, 0, null, 80, 64, 90, 0, 160, 300, null, null],
|
||||
[0, "백작부인블론디", null, 0, null, 83, 86, 65, 0, 160, 300, null, null],
|
||||
[0, "기사렌티온", null, 0, null, 87, 88, 59, 0, 160, 300, null, null],
|
||||
[0, "셀루아", null, 0, null, 85, 83, 65, 0, 160, 300, null, null],
|
||||
@@ -86,13 +91,16 @@
|
||||
[0, "순백의티라", null, 0, null, 71, 72, 89, 0, 160, 300, null, null],
|
||||
[0, "교황의기사미라이", null, 0, null, 86, 90, 56, 0, 160, 300, null, null],
|
||||
[0, "맹독의멀독", null, 0, null, 85, 83, 63, 0, 160, 300, null, null],
|
||||
[0, "트롤왕레우기", null, 0, null, 84, 87, 60, 0, 160, 300, null, null],
|
||||
[0, "데이나", null, 0, null, 77, 63, 90, 0, 160, 300, null, null],
|
||||
[0, "바람의무희네바", null, 0, null, 83, 59, 88, 0, 160, 300, null, null],
|
||||
[0, "웨스트윈드아모스", null, 0, null, 73, 70, 87, 0, 160, 300, null, null],
|
||||
[0, "루치아", null, 0, null, 83, 80, 67, 0, 160, 300, null, null],
|
||||
[0, "하이나", null, 0, null, 81, 57, 91, 0, 160, 300, null, null],
|
||||
[0, "환상의사히누스", null, 0, null, 86, 66, 78, 0, 160, 300, null, null],
|
||||
[0, "애정의하이나", null, 0, null, 81, 57, 91, 0, 160, 300, null, null],
|
||||
[0, "스니퍼", null, 0, null, 78, 81, 70, 0, 160, 300, null, null],
|
||||
[0, "오마주", null, 0, null, 82, 87, 60, 0, 160, 300, null, null],
|
||||
[0, "분노의오마주", null, 0, null, 82, 87, 60, 0, 160, 300, null, null],
|
||||
[0, "초록늑대데빌레덤", null, 0, null, 78, 79, 72, 0, 160, 300, null, null],
|
||||
[0, "이로아스", null, 0, null, 82, 76, 70, 0, 160, 300, null, null],
|
||||
[0, "광살의에반", null, 0, null, 80, 88, 60, 0, 160, 300, null, null],
|
||||
[0, "카밀라", null, 0, null, 86, 49, 92, 0, 160, 300, null, null],
|
||||
@@ -100,19 +108,25 @@
|
||||
[0, "바람의레지나", null, 0, null, 77, 64, 86, 0, 160, 300, null, null],
|
||||
[0, "부정의퓨니엄", null, 0, null, 76, 74, 75, 0, 160, 300, null, null],
|
||||
[0, "흑묘샬롯", null, 0, null, 81, 88, 56, 0, 160, 300, null, null],
|
||||
[0, "현자제노에오스", null, 0, null, 78, 58, 89, 0, 160, 300, null, null],
|
||||
[0, "돌풍의루파로", null, 0, null, 78, 66, 81, 0, 160, 300, null, null],
|
||||
[0, "쥬곤을찾는만텔", null, 0, null, 76, 80, 67, 0, 160, 300, null, null],
|
||||
[0, "날뒤는알트", null, 0, null, 73, 62, 87, 0, 160, 300, null, null],
|
||||
[0, "날뛰는알트", null, 0, null, 73, 62, 87, 0, 160, 300, null, null],
|
||||
[0, "달아오른슈롯셔", null, 0, null, 80, 64, 78, 0, 160, 300, null, null],
|
||||
[0, "로즈", null, 0, null, 72, 63, 86, 0, 160, 300, null, null],
|
||||
[0, "막내카라", null, 0, null, 75, 67, 79, 0, 160, 300, null, null],
|
||||
[0, "리치네", null, 0, null, 78, 65, 78, 0, 160, 300, null, null],
|
||||
[0, "블랙하운드암푸스", null, 0, null, 74, 80, 66, 0, 160, 300, null, null],
|
||||
[0, "화염늑대데빌리덤", null, 0, null, 77, 81, 62, 0, 160, 300, null, null],
|
||||
[0, "검은늑대데빌사울", null, 0, null, 70, 84, 66, 0, 160, 300, null, null],
|
||||
[0, "흑월의리베스", null, 0, null, 73, 55, 91, 0, 160, 300, null, null],
|
||||
[0, "혁명의브렉", null, 0, null, 76, 77, 66, 0, 160, 300, null, null],
|
||||
[0, "에클레", null, 0, null, 73, 83, 63, 0, 160, 300, null, null],
|
||||
[0, "만텔을쫒는에클레", null, 0, null, 73, 83, 63, 0, 160, 300, null, null],
|
||||
[0, "타베나", null, 0, null, 77, 80, 62, 0, 160, 300, null, null],
|
||||
[0, "복수의이벤", null, 0, null, 72, 58, 88, 0, 160, 300, null, null],
|
||||
[0, "심연의베르", null, 0, null, 72, 79, 67, 0, 160, 300, null, null],
|
||||
[0, "탐험가로이", null, 0, null, 73, 78, 67, 0, 160, 300, null, null],
|
||||
[0, "독장미야나가", null, 0, null, 67, 86, 65, 0, 160, 300, null, null],
|
||||
[0, "미녀기사쥬니아", null, 0, null, 71, 66, 80, 0, 160, 300, null, null],
|
||||
[0, "스토마", null, 0, null, 69, 69, 79, 0, 160, 300, null, null],
|
||||
[0, "리사", null, 0, null, 70, 71, 76, 0, 160, 300, null, null],
|
||||
@@ -124,18 +138,24 @@
|
||||
[0, "귀환의류나드", null, 0, null, 80, 84, 52, 0, 160, 300, null, null],
|
||||
[0, "라타", null, 0, null, 73, 69, 73, 0, 160, 300, null, null],
|
||||
[0, "정령기사한나", null, 0, null, 70, 73, 72, 0, 160, 300, null, null],
|
||||
[0, "원스", null, 0, null, 77, 82, 56, 0, 160, 300, null, null],
|
||||
[0, "빙결체이서원스", null, 0, null, 77, 82, 56, 0, 160, 300, null, null],
|
||||
[0, "초고속승진리체", null, 0, null, 81, 47, 87, 0, 160, 300, null, null],
|
||||
[0, "푸른늑대데빌덤", null, 0, null, 82, 78, 55, 0, 160, 300, null, null],
|
||||
[0, "악동듀요라", null, 0, null, 76, 69, 69, 0, 160, 300, null, null],
|
||||
[0, "에렌디라", null, 0, null, 82, 80, 52, 0, 160, 300, null, null],
|
||||
[0, "아이스트롤레쿠", null, 0, null, 66, 70, 78, 0, 160, 300, null, null],
|
||||
[0, "파이어트롤레키", null, 0, null, 59, 73, 82, 0, 160, 300, null, null],
|
||||
[0, "은발의야마르", null, 0, null, 73, 73, 67, 0, 160, 300, null, null],
|
||||
[0, "하늘의콜리나", null, 0, null, 74, 77, 62, 0, 160, 300, null, null],
|
||||
[0, "그림자라이넌", null, 0, null, 70, 59, 84, 0, 160, 300, null, null],
|
||||
[0, "어스트롤레크", null, 0, null, 61, 72, 80, 0, 160, 300, null, null],
|
||||
[0, "루이칸", null, 0, null, 73, 66, 73, 0, 160, 300, null, null],
|
||||
[0, "레이첼", null, 0, null, 70, 68, 73, 0, 160, 300, null, null],
|
||||
[0, "테이머존덜링", null, 0, null, 67, 72, 72, 0, 160, 300, null, null],
|
||||
[0, "엘린", null, 0, null, 74, 48, 88, 0, 160, 300, null, null],
|
||||
[0, "에포스", null, 0, null, 76, 48, 86, 0, 160, 300, null, null],
|
||||
[0, "아미르", null, 0, null, 69, 64, 77, 0, 160, 300, null, null],
|
||||
[0, "에타", null, 0, null, 72, 62, 76, 0, 160, 300, null, null],
|
||||
[0, "혹한의에타", null, 0, null, 72, 62, 76, 0, 160, 300, null, null],
|
||||
[0, "정령술사도루숨", null, 0, null, 72, 64, 74, 0, 160, 300, null, null],
|
||||
[0, "차녀카미안", null, 0, null, 72, 76, 62, 0, 160, 300, null, null],
|
||||
[0, "질니아", null, 0, null, 74, 80, 56, 0, 160, 300, null, null],
|
||||
@@ -146,9 +166,11 @@
|
||||
[0, "폭주의란도루", null, 0, null, 70, 51, 87, 0, 160, 300, null, null],
|
||||
[0, "웬디", null, 0, null, 72, 77, 59, 0, 160, 300, null, null],
|
||||
[0, "찰스", null, 0, null, 72, 83, 53, 0, 160, 300, null, null],
|
||||
[0, "윈드트롤레칸", null, 0, null, 57, 75, 76, 0, 160, 300, null, null],
|
||||
[0, "산들바람젤레", null, 0, null, 68, 52, 87, 0, 160, 300, null, null],
|
||||
[0, "요하스", null, 0, null, 69, 65, 73, 0, 160, 300, null, null],
|
||||
[0, "아이노", null, 0, null, 72, 70, 65, 0, 160, 300, null, null],
|
||||
[0, "욕망의타실리", null, 0, null, 67, 54, 86, 0, 160, 300, null, null],
|
||||
[0, "홍염의케이시", null, 0, null, 76, 42, 88, 0, 160, 300, null, null],
|
||||
[0, "소태우스", null, 0, null, 72, 70, 64, 0, 160, 300, null, null],
|
||||
[0, "빙혼마도사카이", null, 0, null, 74, 43, 88, 0, 160, 300, null, null],
|
||||
@@ -169,6 +191,7 @@
|
||||
[0, "레이븐", null, 0, null, 69, 43, 86, 0, 160, 300, null, null],
|
||||
[0, "투말린", null, 0, null, 72, 69, 57, 0, 160, 300, null, null],
|
||||
[0, "게르고", null, 0, null, 72, 69, 57, 0, 160, 300, null, null],
|
||||
[0, "욕망의로이즈", null, 0, null, 73, 37, 88, 0, 160, 300, null, null],
|
||||
[0, "로렌시아", null, 0, null, 70, 42, 85, 0, 160, 300, null, null],
|
||||
[0, "달라니카", null, 0, null, 65, 59, 73, 0, 160, 300, null, null],
|
||||
[0, "레이나", null, 0, null, 66, 56, 74, 0, 160, 300, null, null],
|
||||
@@ -176,10 +199,12 @@
|
||||
[0, "안테리나", null, 0, null, 67, 68, 61, 0, 160, 300, null, null],
|
||||
[0, "쿠벤", null, 0, null, 67, 69, 60, 0, 160, 300, null, null],
|
||||
[0, "이고트리", null, 0, null, 70, 73, 53, 0, 160, 300, null, null],
|
||||
[0, "데브라", null, 0, null, 74, 73, 49, 0, 160, 300, null, null],
|
||||
[0, "데비오스", null, 0, null, 74, 73, 49, 0, 160, 300, null, null],
|
||||
[0, "리로븐", null, 0, null, 67, 48, 81, 0, 160, 300, null, null],
|
||||
[0, "칼리오스", null, 0, null, 58, 53, 84, 0, 160, 300, null, null],
|
||||
[0, "시몬느", null, 0, null, 67, 56, 72, 0, 160, 300, null, null],
|
||||
[0, "추적자주혜", null, 0, null, 67, 73, 55, 0, 160, 300, null, null],
|
||||
[0, "크리슈아", null, 0, null, 78, 85, 32, 0, 160, 300, null, null],
|
||||
[0, "감시자록시", null, 0, null, 58, 56, 80, 0, 160, 300, null, null],
|
||||
[0, "모멘트", null, 0, null, 61, 70, 63, 0, 160, 300, null, null],
|
||||
[0, "올거", null, 0, null, 58, 76, 60, 0, 160, 300, null, null],
|
||||
@@ -187,6 +212,7 @@
|
||||
[0, "비랑카", null, 0, null, 65, 70, 59, 0, 160, 300, null, null],
|
||||
[0, "야쿠", null, 0, null, 66, 69, 59, 0, 160, 300, null, null],
|
||||
[0, "휘크리스", null, 0, null, 70, 74, 50, 0, 160, 300, null, null],
|
||||
[0, "엔사그니", null, 0, null, 67, 72, 55, 0, 160, 300, null, null],
|
||||
[0, "사랑찾는메리아", null, 0, null, 68, 39, 86, 0, 160, 300, null, null],
|
||||
[0, "에벨라", null, 0, null, 62, 46, 85, 0, 160, 300, null, null],
|
||||
[0, "아리엔", null, 0, null, 72, 44, 77, 0, 160, 300, null, null],
|
||||
@@ -213,6 +239,7 @@
|
||||
[0, "모리웬", null, 0, null, 69, 64, 54, 0, 160, 300, null, null],
|
||||
[0, "메니아드", null, 0, null, 67, 67, 53, 0, 160, 300, null, null],
|
||||
[0, "담금질중인칸나", null, 0, null, 75, 84, 28, 0, 160, 300, null, null],
|
||||
[0, "약제사미리움", null, 0, null, 65, 47, 75, 0, 160, 300, null, null],
|
||||
[0, "장녀카나안", null, 0, null, 70, 32, 84, 0, 160, 300, null, null],
|
||||
[0, "하나리", null, 0, null, 59, 62, 65, 0, 160, 300, null, null],
|
||||
[0, "하로데스", null, 0, null, 70, 72, 44, 0, 160, 300, null, null],
|
||||
@@ -268,6 +295,7 @@
|
||||
[0, "토리스", null, 0, null, 58, 43, 73, 0, 160, 300, null, null],
|
||||
[0, "하카세", null, 0, null, 60, 62, 52, 0, 160, 300, null, null],
|
||||
[0, "모코", null, 0, null, 65, 70, 39, 0, 160, 300, null, null],
|
||||
[0, "고트리시", null, 0, null, 53, 47, 74, 0, 160, 300, null, null],
|
||||
[0, "크루피사냐", null, 0, null, 53, 46, 74, 0, 160, 300, null, null],
|
||||
[0, "에리키오먼", null, 0, null, 63, 38, 72, 0, 160, 300, null, null],
|
||||
[0, "로윈터", null, 0, null, 53, 64, 56, 0, 160, 300, null, null],
|
||||
@@ -292,6 +320,7 @@
|
||||
[0, "에스텔", null, 0, null, 59, 64, 47, 0, 160, 300, null, null],
|
||||
[0, "가리먼", null, 0, null, 65, 66, 39, 0, 160, 300, null, null],
|
||||
[0, "타나소스", null, 0, null, 69, 62, 39, 0, 160, 300, null, null],
|
||||
[0, "안티오그나", null, 0, null, 28, 65, 77, 0, 160, 300, null, null],
|
||||
[0, "에리사", null, 0, null, 53, 43, 73, 0, 160, 300, null, null],
|
||||
[0, "미라시아", null, 0, null, 58, 39, 72, 0, 160, 300, null, null],
|
||||
[0, "루카", null, 0, null, 58, 63, 48, 0, 160, 300, null, null],
|
||||
@@ -327,7 +356,20 @@
|
||||
[0, "알리오나", null, 0, null, 53, 34, 72, 0, 160, 300, null, null],
|
||||
[0, "케시아", null, 0, null, 53, 71, 32, 0, 160, 300, null, null],
|
||||
[0, "듀라스", null, 0, null, 48, 26, 78, 0, 160, 300, null, null],
|
||||
[0, "아카시", null, 0, null, 48, 29, 74, 0, 160, 300, null, null]
|
||||
[0, "아카시", null, 0, null, 48, 29, 74, 0, 160, 300, null, null],
|
||||
[0, "코르코슘", null, 0, null, 32, 35, 80, 0, 160, 300, null, null],
|
||||
[0, "휴식의카소아샤", null, 0, null, 33, 77, 33, 0, 160, 300, null, null],
|
||||
[0, "요청의가스우세", null, 0, null, 33, 33, 77, 0, 160, 300, null, null],
|
||||
[0, "칼로아눈", null, 0, null, 39, 19, 82, 0, 160, 300, null, null],
|
||||
[0, "나시루", null, 0, null, 28, 21, 78, 0, 160, 300, null, null],
|
||||
[0, "비로", null, 0, null, 54, 43, 74, 0, 160, 300, null, null],
|
||||
[0, "어둠의질레르", null, 0, null, 68, 65, 87, 0, 160, 300, null, null],
|
||||
[0, "암흑도둑에베넌", null, 0, null, 67, 65, 78, 0, 160, 300, null, null],
|
||||
[0, "뛰노는차이치", null, 0, null, 64, 52, 69, 0, 160, 300, null, null],
|
||||
[0, "운명의페인트", null, 0, null, 82, 63, 84, 0, 160, 300, null, null],
|
||||
[0, "케로베로스바이라", null, 0, null, 79, 73, 72, 0, 160, 300, null, null],
|
||||
[0, "대장장이시이로", null, 0, null, 78, 67, 54, 0, 160, 300, null, null],
|
||||
[0, "병기참모프레인", null, 0, null, 88, 60, 77, 0, 160, 300, null, null]
|
||||
],
|
||||
"general_ex":[
|
||||
|
||||
@@ -336,7 +378,7 @@
|
||||
|
||||
],
|
||||
"history":[
|
||||
"<C>●</>180년 1월:<L><b>【이벤트】</b></>제작자: 촉구.",
|
||||
"<C>●</>180년 1월:<L><b>【이벤트】</b></>제작자: 촉구, 관지평",
|
||||
"<C>●</>180년 1월:<L><b>【가상모드13】</b>소울소드</>",
|
||||
"<C>●</>180년 1월:<L><b>【이벤트】</b></>혼란스러운 세상을 영웅들과 함께 바로잡아라!"
|
||||
],
|
||||
|
||||
+178
-191
@@ -23,25 +23,25 @@
|
||||
"diplomacy":[],
|
||||
"general":[
|
||||
[0, "기타노시오리", null, 0, null, 96, 92, 93, 0, 160, 333, "왕좌", null],
|
||||
[0, "마도카", null, 0, null, 86, 50, 77, 0, 160, 300, null, "집중", "친구들에겐 비밀이야★"],
|
||||
[0, "마미", null, 0, null, 70, 74, 60, 0, 165, 240, null, null, "이젠 아무것도 두렵지 않아"],
|
||||
[0, "호무라", null, 0, null, 76, 64, 80, 0, 160, 333, null, "집중", "이게바로…사랑이야..♥"],
|
||||
[0, "쿄코", null, 0, null, 68, 77, 54, 0, 160, 240, null, null],
|
||||
[0, "미키사야카", null, 0, null, 80, 77, 62, 0, 160, 240, null, null, "나는 정말…바보"],
|
||||
[0, "나기사", null, 0, null, 72, 80, 70, 0, 160, 240, null, null, "나기사는 단지 치즈가 먹고싶엇던것 뿐이에요!"],
|
||||
[0, "오리코", null, 0, null, 65, 33, 94, 0, 160, 240, null, null, "이세계에 최악의 절망을."],
|
||||
[0, "쿠레키리카", null, 0, null, 50, 80, 50, 0, 160, 240, null, null],
|
||||
[0, "유마", null, 0, null, 69, 74, 70, 0, 160, 333, null, null],
|
||||
[0, "카나메 마도카", null, 0, null, 86, 50, 77, 0, 160, 300, null, "집중", "친구들에겐 비밀이야★"],
|
||||
[0, "토모에 마미", null, 0, null, 70, 74, 60, 0, 165, 240, null, null, "이젠 아무것도 두렵지 않아"],
|
||||
[0, "아케미 호무라", null, 0, null, 76, 64, 80, 0, 160, 333, null, "집중", "이게바로…사랑이야..♥"],
|
||||
[0, "사쿠라 쿄코", null, 0, null, 68, 77, 54, 0, 160, 240, null, null],
|
||||
[0, "미키 사야카", null, 0, null, 80, 77, 62, 0, 160, 240, null, null, "나는 정말…바보"],
|
||||
[0, "모모에 나기사", null, 0, null, 72, 80, 70, 0, 160, 240, null, null, "나기사는 단지 치즈가 먹고싶엇던것 뿐이에요!"],
|
||||
[0, "미쿠니 오리코", null, 0, null, 65, 33, 94, 0, 160, 240, null, null, "이세계에 최악의 절망을."],
|
||||
[0, "쿠레 키리카", null, 0, null, 50, 80, 50, 0, 160, 240, null, null],
|
||||
[0, "치토세 유마", null, 0, null, 69, 74, 70, 0, 160, 333, null, null],
|
||||
[0, "큐베", null, 0, null, 22, 14, 64, 0, 160, 333, null, null, "나랑 계약해서 마녀가 되어줘!"],
|
||||
[0, "사사", null, 0, null, 64, 78, 72, 0, 160, 333, null, null],
|
||||
[0, "코이토", null, 0, null, 65, 70, 74, 0, 160, 333, null, null],
|
||||
[0, "코마키", null, 0, null, 80, 75, 49, 0, 160, 333, null, null],
|
||||
[0, "파브", null, 0, null, 40, 3, 32, 0, 160, 300, null, null, "지금부터 마을의 마법소녀를 반으로 줄여야 한다퐁!"],
|
||||
[0, "스노우화이트", null, 0, null, 68, 83, 79, 0, 160, 333, null, "돌격", "사람들을 도울수 있는게 기뻐서!"],
|
||||
[0, "스노우화이트", null, 0, null, 86, 84, 79, 0, 160, 333, null, "돌격", "사람들을 도울수 있는게 기뻐서!"],
|
||||
[0, "프흐레", null, 0, null, 84, 25, 100, 0, 160, 333, null, "집중", "괜찮아...... 그리고 데류지 에게 전달해 줘...... 원하는 나의 요구"],
|
||||
[0, "섀도게일", null, 0, null, 52, 75, 74, 0, 160, 333, null, null],
|
||||
[0, "7753.0", null, 0, null, 64, 19, 84, 0, 160, 333, null, null, "전 인사부문소속의 7753이라고 합니다"],
|
||||
[0, "인페르노", null, 0, null, 79, 85, 60, 0, 160, 399, null, null, "저녀석..해버려줘,,,,마법소녀…사냥….그럼….가.."],
|
||||
[0, "인페르노", null, 0, null, 82, 85, 60, 0, 160, 399, null, null, "저녀석..해버려줘,,,,마법소녀…사냥….그럼….가.."],
|
||||
[0, "룰러", null, 0, null, 70, 30, 80, 0, 160, 333, null, null, "룰러의 이름으로 명한다"],
|
||||
[0, "네무링", null, 0, null, 71, 63, 58, 0, 160, 333, null, null, "공주님이 되어버리면 되는거야."],
|
||||
[0, "크랑테일", null, 0, null, 75, 86, 72, 0, 160, 333, null, null, "라즐리느와 페치카가 살려준 난...... 못 죽어"],
|
||||
@@ -49,19 +49,19 @@
|
||||
[0, "글라시아네", null, 0, null, 42, 20, 85, 0, 160, 333, null, null, "죽이지마! 죽고싶지 않아!!"],
|
||||
[0, "페치카", null, 0, null, 71, 33, 75, 0, 160, 333, null, null, "그래도…이번엔 누군가를 구할수있어서..행복해요…"],
|
||||
[0, "하무엘", null, 0, null, 73, 23, 65, 0, 160, 333, null, null, "푸크푹이 유적안으로..윽…들어가고…있습니다…"],
|
||||
[0, "타마", null, 0, null, 66, 81, 27, 0, 160, 300, null, null],
|
||||
[0, "파르", null, 0, null, 30, 10, 74, 0, 160, 300, null, null, "게임마스터와 마스코트간에 규칙소통의 차이가 있엇퐁."],
|
||||
[0, "나노하", null, 0, null, 85, 105, 85, 0, 160, 300, "패권", "위압", "잠깐 머리좀 식힐까?"],
|
||||
[0, "타마", null, 0, null, 76, 88, 27, 0, 160, 300, null, null],
|
||||
[0, "파르", null, 0, null, 30, 10, 82, 0, 160, 300, null, null, "여기서 벌어진 일들을 모두 마법나라에 고발했퐁!"],
|
||||
[0, "타카마치 나노하", null, 0, null, 85, 105, 85, 0, 160, 300, "패권", "위압", "잠깐 머리좀 식힐까?"],
|
||||
[0, "페이트", null, 0, null, 75, 89, 73, 0, 160, 300, null, null],
|
||||
[0, "비비오", null, 0, null, 75, 70, 70, 0, 160, 300, null, null, "엄마를 돌려줘!!"],
|
||||
[0, "타카마치 비비오", null, 0, null, 75, 70, 70, 0, 160, 300, null, null, "엄마를 돌려줘!!"],
|
||||
[0, "린디", null, 0, null, 78, 50, 50, 0, 160, 300, null, null],
|
||||
[0, "크로노", null, 0, null, 73, 27, 58, 0, 160, 300, null, null],
|
||||
[0, "스밥팅", null, 0, null, 53, 50, 64, 0, 160, 300, null, null],
|
||||
[0, "긴카", null, 0, null, 73, 80, 52, 0, 160, 300, null, null],
|
||||
[0, "스바루 나카지마", null, 0, null, 53, 50, 64, 0, 160, 300, null, null],
|
||||
[0, "긴카 나카지마", null, 0, null, 73, 80, 52, 0, 160, 300, null, null],
|
||||
[0, "캐로", null, 0, null, 71, 63, 74, 0, 160, 300, null, null],
|
||||
[0, "에리오", null, 0, null, 65, 68, 72, 0, 160, 300, null, null],
|
||||
[0, "티아나", null, 0, null, 72, 82, 78, 0, 160, 300, null, null],
|
||||
[0, "하야테", null, 0, null, 74, 55, 85, 0, 160, 300, null, "환술"],
|
||||
[0, "에리오 몬디알", null, 0, null, 65, 68, 72, 0, 160, 300, null, null],
|
||||
[0, "티아나 란스터", null, 0, null, 72, 82, 78, 0, 160, 300, null, null],
|
||||
[0, "야가미 하야테", null, 0, null, 74, 55, 85, 0, 160, 300, null, "환술"],
|
||||
[0, "시그넘", null, 0, null, 75, 78, 79, 0, 160, 300, null, null],
|
||||
[0, "비타", null, 0, null, 70, 85, 50, 0, 160, 300, null, null],
|
||||
[0, "샤멀", null, 0, null, 55, 42, 80, 0, 160, 300, null, null],
|
||||
@@ -72,101 +72,101 @@
|
||||
[0, "유노", null, 0, null, 64, 45, 81, 0, 160, 300, null, null],
|
||||
[0, "쟈피라", null, 0, null, 20, 40, 65, 0, 160, 300, null, null],
|
||||
[0, "셰인", null, 0, null, 43, 67, 30, 0, 160, 300, null, null],
|
||||
[0, "이리야", null, 0, null, 79, 72, 67, 0, 160, 300, null, null, "소중한 내 친구니까!!"],
|
||||
[0, "미유", null, 0, null, 76, 82, 84, 0, 160, 300, null, null],
|
||||
[0, "쿠로", null, 0, null, 60, 73, 70, 0, 160, 300, null, null],
|
||||
[0, "토오사카린", null, 0, null, 72, 62, 83, 0, 160, 300, null, null],
|
||||
[0, "이리야스필", null, 0, null, 79, 72, 67, 0, 160, 300, null, null, "소중한 내 친구니까!!"],
|
||||
[0, "미유 에델펠트", null, 0, null, 76, 82, 84, 0, 160, 300, null, null],
|
||||
[0, "클로에", null, 0, null, 60, 73, 70, 0, 160, 300, null, null],
|
||||
[0, "토오사카 린", null, 0, null, 72, 62, 83, 0, 160, 300, null, null],
|
||||
[0, "루비아", null, 0, null, 56, 40, 50, 0, 160, 300, null, "상재"],
|
||||
[0, "시로", null, 0, null, 78, 40, 70, 0, 160, 300, null, null],
|
||||
[0, "에미야 시로", null, 0, null, 78, 40, 70, 0, 160, 300, null, null],
|
||||
[0, "타이가", null, 0, null, 55, 50, 40, 0, 160, 300, null, null],
|
||||
[0, "루비", null, 0, null, 49, 20, 70, 0, 160, 300, null, "척사"],
|
||||
[0, "사파이어", null, 0, null, 49, 55, 86, 0, 160, 300, null, null],
|
||||
[0, "세라", null, 0, null, 50, 77, 30, 0, 160, 300, null, null],
|
||||
[0, "리즈", null, 0, null, 50, 80, 30, 0, 160, 300, null, null],
|
||||
[0, "아이리스필", null, 0, null, 80, 45, 79, 0, 160, 300, null, null],
|
||||
[0, "키리츠구", null, 0, null, 90, 95, 89, 0, 160, 300, null, null, "나는 너를 죽이고…세계를 구한다….!"],
|
||||
[0, "에미야 키리츠쿠", null, 0, null, 90, 95, 89, 0, 160, 300, null, null, "나는 너를 죽이고…세계를 구한다….!"],
|
||||
[0, "젤레치", null, 0, null, 57, 52, 99, 0, 100, 300, null, null],
|
||||
[0, "로드 엘멜로이", null, 0, null, 75, 43, 90, 0, 160, 300, null, null, "아니,나는 그의 신하다"],
|
||||
[0, "클라나기사", null, 0, null, 85, 30, 85, 0, 160, 300, null, null, "경단~ 경단~ 경단 경단 경단 경단 대가족~"],
|
||||
[0, "토모야", null, 0, null, 85, 84, 75, 0, 160, 300, null, null],
|
||||
[0, "후지바야시쿄", null, 0, null, 80, 85, 69, 0, 160, 300, null, "무쌍", "요헤이! 또 그러는 거야??"],
|
||||
[0, "후루카와 나기사", null, 0, null, 85, 30, 85, 0, 160, 300, null, null, "경단~ 경단~ 경단 경단 경단 경단 대가족~"],
|
||||
[0, "오카자키 토모야", null, 0, null, 85, 84, 75, 0, 160, 300, null, null],
|
||||
[0, "후지바야시쿄", null, 0, null, 80, 85, 82, 0, 160, 300, null, "무쌍", "요헤이! 또 그러는 거야??"],
|
||||
[0, "후지바야시료", null, 0, null, 74, 30, 77, 0, 160, 300, null, null],
|
||||
[0, "토모요", null, 0, null, 80, 85, 65, 0, 160, 300, null, "무쌍"],
|
||||
[0, "캇페이", null, 0, null, 75, 55, 18, 0, 160, 300, null, null],
|
||||
[0, "요헤이", null, 0, null, 69, 60, 30, 0, 160, 300, null, "견고", "우오오오오오오!!!"],
|
||||
[0, "스노하라메이", null, 0, null, 70, 70, 70, 0, 160, 300, null, null, "저희 못난 오빠떔에 고생이 많으십니다"],
|
||||
[0, "사나에", null, 0, null, 80, 40, 75, 0, 160, 300, null, null],
|
||||
[0, "아키오", null, 0, null, 74, 86, 70, 0, 160, 300, null, null],
|
||||
[0, "나오유키", null, 0, null, 70, 55, 55, 0, 160, 300, null, null, "토모야.. 고맙다."],
|
||||
[0, "코토미", null, 0, null, 74, 52, 78, 0, 160, 300, null, null],
|
||||
[0, "우시오", null, 0, null, 75, 60, 78, 0, 160, 300, null, null, "안녕.. 아빠…"],
|
||||
[0, "리에", null, 0, null, 77, 37, 82, 0, 160, 300, null, null],
|
||||
[0, "미야자와", null, 0, null, 78, 30, 85, 0, 160, 300, null, null],
|
||||
[0, "시마카츠키", null, 0, null, 72, 49, 63, 0, 160, 300, null, null],
|
||||
[0, "사가라미사에", null, 0, null, 85, 87, 85, 0, 160, 300, null, "위압"],
|
||||
[0, "코즈키미유", null, 0, null, 77, 73, 64, 0, 160, 300, null, null, "혹시 루에게 고백이라도 한거니?"],
|
||||
[0, "카나타", null, 0, null, 75, 70, 69, 0, 160, 300, null, null],
|
||||
[0, "사이온지미우", null, 0, null, 2, 9, 4, 0, 160, 300, null, null, "엄마! 쉿! 쉬잇!!"],
|
||||
[0, "크리스틴", null, 0, null, 67, 80, 60, 0, 160, 300, null, "무쌍", "미유랑 카나타가 붙어있어…."],
|
||||
[0, "모모카", null, 0, null, 80, 60, 55, 0, 160, 300, null, null, "마이 달링! 루!"],
|
||||
[0, "산타", null, 0, null, 54, 10, 30, 0, 160, 300, "유지", null],
|
||||
[0, "쿠리타", null, 0, null, 46, 14, 10, 0, 160, 300, null, null],
|
||||
[0, "고니시아야", null, 0, null, 67, 15, 77, 0, 160, 300, null, null],
|
||||
[0, "사카가미 토모요", null, 0, null, 80, 92, 87, 0, 160, 300, null, "무쌍"],
|
||||
[0, "히이라기 캇페이", null, 0, null, 75, 55, 18, 0, 160, 300, null, null],
|
||||
[0, "스노하라 요헤이", null, 0, null, 69, 60, 30, 0, 160, 300, null, "견고", "그리고 변기커버!"],
|
||||
[0, "스노하라 메이", null, 0, null, 70, 70, 70, 0, 160, 300, null, null, "저희 못난 오빠떔에 고생이 많으십니다"],
|
||||
[0, "후루카와 사나에", null, 0, null, 80, 40, 75, 0, 160, 300, null, null],
|
||||
[0, "후루카와 아키오", null, 0, null, 76, 86, 70, 0, 160, 300, null, "무쌍"],
|
||||
[0, "오카자키 나오유키", null, 0, null, 70, 20, 55, 0, 160, 300, null, null, "토모야.. 고맙다."],
|
||||
[0, "이치노세 코토미", null, 0, null, 74, 52, 78, 0, 160, 300, null, null],
|
||||
[0, "오카자키 우시오", null, 0, null, 82, 55, 83, 0, 160, 300, null, null, "안녕.. 아빠…"],
|
||||
[0, "니시나 리에", null, 0, null, 77, 37, 82, 0, 160, 300, null, null],
|
||||
[0, "미야자와 유키네", null, 0, null, 78, 30, 85, 0, 160, 300, null, null],
|
||||
[0, "시마 카츠키", null, 0, null, 72, 49, 63, 0, 160, 300, null, null],
|
||||
[0, "사가라 미사에", null, 0, null, 85, 87, 85, 0, 160, 300, null, "위압"],
|
||||
[0, "코즈키 미유", null, 0, null, 77, 73, 64, 0, 160, 300, null, null, "혹시 루에게 고백이라도 한거니?"],
|
||||
[0, "사이온지 카나타", null, 0, null, 75, 70, 69, 0, 160, 300, null, null],
|
||||
[0, "사이온지 미우", null, 0, null, 75, 49, 76, 0, 160, 300, null, null, "엄마! 쉿! 쉬잇!!"],
|
||||
[0, "하나코마치 크리스", null, 0, null, 67, 80, 60, 0, 160, 300, null, "무쌍", "미유랑 카나타가 붙어있어…."],
|
||||
[0, "하나코마치 모모카", null, 0, null, 80, 60, 55, 0, 160, 300, null, null, "마이 달링! 루!"],
|
||||
[0, "쿠로스 산타", null, 0, null, 54, 10, 30, 0, 160, 300, "유지", null],
|
||||
[0, "하나코마치 쿠리타", null, 0, null, 46, 14, 10, 0, 160, 300, null, null],
|
||||
[0, "고니시 아야", null, 0, null, 67, 15, 77, 0, 160, 300, null, null],
|
||||
[0, "루", null, 0, null, 81, 50, 73, 0, 160, 300, null, null, "다아!★"],
|
||||
[0, "완냐", null, 0, null, 69, 48, 75, 0, 160, 300, null, null],
|
||||
[0, "야마무라미캉", null, 0, null, 75, 64, 30, 0, 160, 300, null, null],
|
||||
[0, "야보시세이야", null, 0, null, 70, 50, 70, 0, 160, 300, null, null],
|
||||
[0, "야마무라 미캉", null, 0, null, 75, 64, 30, 0, 160, 300, null, null],
|
||||
[0, "야보시 세이야", null, 0, null, 70, 50, 70, 0, 160, 300, null, null],
|
||||
[0, "야보시 루이", null, 0, null, 75, 73, 71, 0, 160, 300, null, null],
|
||||
[0, "도리안", null, 0, null, 65, 49, 86, 0, 160, 300, null, "발명"],
|
||||
[0, "키위", null, 0, null, 66, 33, 70, 0, 160, 300, null, "상재"],
|
||||
[0, "구아바", null, 0, null, 45, 49, 51, 0, 160, 300, null, null],
|
||||
[0, "히카리가오가", null, 0, null, 70, 49, 77, 0, 160, 300, null, null],
|
||||
[0, "히카리가오카", null, 0, null, 70, 49, 77, 0, 160, 300, null, null],
|
||||
[0, "코즈키유우", null, 0, null, 85, 33, 75, 0, 160, 300, null, "발명"],
|
||||
[0, "코즈키미키", null, 0, null, 88, 33, 80, 0, 160, 300, null, null],
|
||||
[0, "란", null, 0, null, 80, 72, 40, 0, 160, 300, null, null],
|
||||
[0, "하루네아이라", null, 0, null, 84, 45, 74, 0, 160, 300, null, null, "오로라~~~~~~~~~라이징~ 드리임!"],
|
||||
[0, "리즈무", null, 0, null, 80, 25, 82, 0, 160, 300, null, null],
|
||||
[0, "미온", null, 0, null, 78, 25, 90, 0, 160, 300, null, null],
|
||||
[0, "아세치쿄코", null, 0, null, 76, 30, 82, 0, 160, 300, null, "상재"],
|
||||
[0, "하루네 아이라", null, 0, null, 84, 45, 74, 0, 160, 300, null, null, "오로라~~~~~~~~~라이징~ 드리임!"],
|
||||
[0, "아마미야 리즈무", null, 0, null, 80, 25, 82, 0, 160, 300, null, null],
|
||||
[0, "타카미네 미온", null, 0, null, 78, 25, 90, 0, 160, 300, null, null],
|
||||
[0, "아세치 쿄코", null, 0, null, 76, 30, 82, 0, 160, 300, null, "상재"],
|
||||
[0, "쥰매니저", null, 0, null, 75, 65, 75, 0, 160, 300, null, null],
|
||||
[0, "미스터K", null, 0, null, 55, 20, 70, 0, 160, 300, null, null],
|
||||
[0, "아세치킨타로", null, 0, null, 11, 22, 78, 0, 160, 300, null, null],
|
||||
[0, "카논", null, 0, null, 79, 50, 81, 0, 160, 300, null, null],
|
||||
[0, "카나메", null, 0, null, 73, 23, 92, 0, 160, 300, null, null],
|
||||
[0, "소나타", null, 0, null, 70, 35, 84, 0, 160, 300, null, null],
|
||||
[0, "아게하미아", null, 0, null, 35, 9, 4, 0, 160, 300, null, null],
|
||||
[0, "아세치 킨타로", null, 0, null, 11, 22, 78, 0, 160, 300, null, null],
|
||||
[0, "죠노우치 세레나", null, 0, null, 78, 50, 82, 0, 160, 300, null, "상재"],
|
||||
[0, "토도 카논", null, 0, null, 79, 50, 81, 0, 160, 300, null, null],
|
||||
[0, "크리스 카나메", null, 0, null, 73, 23, 92, 0, 160, 300, null, null],
|
||||
[0, "칸자키 소나타", null, 0, null, 70, 35, 84, 0, 160, 300, null, null],
|
||||
[0, "미야후지 요시카", null, 0, null, 87, 74, 72, 0, 160, 300, null, "의술"],
|
||||
[0, "안경언니", null, 0, null, 74, 66, 77, 0, 160, 300, null, null, "프리즘스타의 세계에 온것을 환영해."],
|
||||
[0, "토가시카리나", null, 0, null, 89, 23, 81, 0, 160, 300, null, null],
|
||||
[0, "토가시 카리나", null, 0, null, 89, 23, 81, 0, 160, 300, null, null],
|
||||
[0, "혜인", null, 0, null, 78, 50, 87, 0, 160, 300, null, null],
|
||||
[0, "하루네이츠키", null, 0, null, 85, 30, 85, 0, 160, 300, null, null],
|
||||
[0, "하루네 이츠키", null, 0, null, 85, 30, 85, 0, 160, 300, null, null],
|
||||
[0, "쇼우", null, 0, null, 87, 90, 78, 0, 160, 300, null, null],
|
||||
[0, "오로라드림히비키", null, 0, null, 85, 33, 80, 0, 160, 300, null, null],
|
||||
[0, "토도 히비키", null, 0, null, 85, 33, 80, 0, 160, 300, null, null],
|
||||
[0, "와타루", null, 0, null, 80, 11, 80, 0, 160, 300, null, null],
|
||||
[0, "펭귄선생", null, 0, null, 55, 44, 49, 0, 160, 300, null, null],
|
||||
[0, "카미죠토우마", null, 0, null, 70, 80, 50, 0, 160, 300, null, null, "불행해…"],
|
||||
[0, "카미죠 토우마", null, 0, null, 70, 80, 50, 0, 160, 300, null, null, "불행해…"],
|
||||
[0, "인덱스", null, 0, null, 30, 10, 89, 0, 160, 300, null, null],
|
||||
[0, "미사카미코토", null, 0, null, 78, 93, 88, 0, 160, 300, null, null, "찌릿찌릿이라고 부르지마!!"],
|
||||
[0, "미사카 미코토", null, 0, null, 78, 93, 88, 0, 160, 300, null, null, "찌릿찌릿이라고 부르지마!!"],
|
||||
[0, "엑셀레이터", null, 0, null, 64, 110, 90, 0, 160, 300, null, "위압", "압축! 압축! 공기를 압축!"],
|
||||
[0, "시스터즈", null, 0, null, 44, 65, 50, 0, 160, 300, null, null, "~라고 미사카는 말합니다"],
|
||||
[0, "리네트 비숍", null, 0, null, 80, 81, 82, 0, 160, 300, null, "저격"],
|
||||
[0, "라스트오더", null, 0, null, 75, 10, 90, 0, 160, 300, null, null, "미사카는 미사카는 말해보기도 하고~"],
|
||||
[0, "카키네", null, 0, null, 44, 98, 22, 0, 160, 222, null, null],
|
||||
[0, "무기농시즈리", null, 0, null, 78, 90, 80, 0, 160, 300, null, null],
|
||||
[0, "쇼쿠호미사키", null, 0, null, 77, 30, 60, 0, 160, 300, null, null],
|
||||
[0, "키하라겐세이", null, 0, null, 7, 9, 85, 0, 160, 300, null, "발명"],
|
||||
[0, "카키네 테이토쿠", null, 0, null, 44, 98, 22, 0, 160, 222, null, null],
|
||||
[0, "무기노 시즈리", null, 0, null, 78, 90, 80, 0, 160, 300, null, null],
|
||||
[0, "쇼쿠호 미사키", null, 0, null, 77, 30, 60, 0, 160, 300, null, null],
|
||||
[0, "에리카 하르트만", null, 0, null, 81, 88, 68, 0, 160, 300, null, null],
|
||||
[0, "아레이스타", null, 0, null, 67, 39, 90, 0, 160, 300, null, null],
|
||||
[0, "무스지메", null, 0, null, 57, 49, 75, 0, 160, 300, null, null],
|
||||
[0, "시라이쿠로코", null, 0, null, 56, 29, 60, 0, 160, 300, null, "견고", "오네사마!!!!!!!!!!!!!!!!!!!!!!!!!"],
|
||||
[0, "시아게", null, 0, null, 67, 40, 30, 0, 160, 300, null, null],
|
||||
[0, "사텐", null, 0, null, 55, 94, 30, 0, 160, 300, null, "무쌍"],
|
||||
[0, "우이하루", null, 0, null, 33, 15, 89, 0, 160, 300, null, null],
|
||||
[0, "무스지메 이와키", null, 0, null, 57, 49, 75, 0, 160, 300, null, null],
|
||||
[0, "시라이 쿠로코", null, 0, null, 56, 29, 60, 0, 160, 300, null, "견고", "오네사마!!!!!!!!!!!!!!!!!!!!!!!!!"],
|
||||
[0, "사텐 루이코", null, 0, null, 55, 94, 30, 0, 160, 300, null, "무쌍"],
|
||||
[0, "우이하루 카자리", null, 0, null, 33, 15, 89, 0, 160, 300, null, null],
|
||||
[0, "헤븐캔슬러", null, 0, null, 79, 10, 90, 0, 160, 300, "은둔", "의술"],
|
||||
[0, "칸자키", null, 0, null, 70, 92, 75, 0, 160, 300, null, null],
|
||||
[0, "스테일", null, 0, null, 47, 88, 55, 0, 160, 300, null, null],
|
||||
[0, "코모에", null, 0, null, 78, 10, 85, 0, 160, 300, null, null],
|
||||
[0, "코난", null, 0, null, 55, 72, 99, 0, 160, 300, null, null, "미궁을 모르는 명탐정! 진실은 언제나 하나!"],
|
||||
[0, "모리란", null, 0, null, 67, 100, 82, 0, 160, 300, null, "돌격"],
|
||||
[0, "스즈키소노코", null, 0, null, 66, 55, 86, 0, 160, 300, null, "상재"],
|
||||
[0, "쿄고쿠마코토", null, 0, null, 79, 108, 52, 0, 160, 300, null, "무쌍"],
|
||||
[0, "스테일 마그누스", null, 0, null, 47, 88, 55, 0, 160, 300, null, null],
|
||||
[0, "츠쿠요미 코모에", null, 0, null, 78, 10, 85, 0, 160, 300, null, null],
|
||||
[0, "에도카와 코난", null, 0, null, 55, 72, 99, 0, 160, 300, null, null, "미궁을 모르는 명탐정! 진실은 언제나 하나!"],
|
||||
[0, "모리 란", null, 0, null, 67, 100, 82, 0, 160, 300, null, "돌격"],
|
||||
[0, "스즈키 소노코", null, 0, null, 66, 55, 86, 0, 160, 300, null, "상재"],
|
||||
[0, "쿄고쿠 마코토", null, 0, null, 79, 108, 52, 0, 160, 300, null, "무쌍"],
|
||||
[0, "진", null, 0, null, 79, 87, 90, 0, 160, 300, null, "돌격"],
|
||||
[0, "베르무트", null, 0, null, 75, 67, 96, 0, 160, 300, null, null, "A secret makes a woman woman…"],
|
||||
[0, "키얀티", null, 0, null, 56, 80, 49, 0, 160, 300, null, "저격"],
|
||||
@@ -176,20 +176,20 @@
|
||||
[0, "Rum", null, 0, null, 80, 30, 80, 0, 160, 300, null, null],
|
||||
[0, "헤이지", null, 0, null, 85, 83, 95, 0, 160, 300, null, null],
|
||||
[0, "카즈하", null, 0, null, 87, 79, 74, 0, 160, 300, null, null],
|
||||
[0, "메구레경부", null, 0, null, 94, 79, 88, 0, 160, 300, null, null],
|
||||
[0, "타카기형사", null, 0, null, 67, 80, 79, 0, 160, 300, null, null],
|
||||
[0, "메구레 경부", null, 0, null, 94, 79, 88, 0, 160, 300, null, null],
|
||||
[0, "타카기 형사", null, 0, null, 67, 80, 79, 0, 160, 300, null, null],
|
||||
[0, "미와코", null, 0, null, 70, 83, 82, 0, 160, 300, null, null],
|
||||
[0, "시라토리형사", null, 0, null, 71, 84, 81, 0, 160, 300, null, null],
|
||||
[0, "하네다슈키치", null, 0, null, 76, 33, 100, 0, 160, 300, null, null],
|
||||
[0, "조디", null, 0, null, 79, 67, 88, 0, 160, 300, null, null],
|
||||
[0, "슈이치", null, 0, null, 86, 90, 100, 0, 160, 300, null, "저격"],
|
||||
[0, "시라토리 형사", null, 0, null, 71, 84, 81, 0, 160, 300, null, null],
|
||||
[0, "하네다 슈키치", null, 0, null, 76, 33, 100, 0, 160, 300, null, null],
|
||||
[0, "조디 수사관", null, 0, null, 79, 67, 88, 0, 160, 300, null, null],
|
||||
[0, "아카이 슈이치", null, 0, null, 86, 90, 100, 0, 160, 300, null, "저격"],
|
||||
[0, "제임스 블랙", null, 0, null, 88, 55, 85, 0, 160, 300, null, null],
|
||||
[0, "케멜수사관", null, 0, null, 67, 78, 79, 0, 160, 300, null, null],
|
||||
[0, "히아바라아이", null, 0, null, 78, 49, 100, 0, 160, 300, null, "발명"],
|
||||
[0, "하이바라 아이", null, 0, null, 78, 49, 100, 0, 160, 300, null, "발명"],
|
||||
[0, "소년탐정단", null, 0, null, 67, 85, 74, 0, 160, 300, null, null],
|
||||
[0, "워커", null, 0, null, 73, 80, 66, 0, 160, 300, null, null],
|
||||
[0, "카리스마렌야", null, 0, null, 75, 78, 78, 0, 160, 300, null, "상재"],
|
||||
[0, "모리코고로", null, 0, null, 78, 77, 92, 0, 160, 300, null, null, "그만할수는 없어 진상을 밝혀내는게 탐정의 습성이니까."],
|
||||
[0, "보스", null, 0, null, 75, 78, 78, 0, 160, 300, null, null],
|
||||
[0, "모리 코고로", null, 0, null, 78, 77, 92, 0, 160, 300, null, null, "그만할수는 없어 진상을 밝혀내는게 탐정의 습성이니까."],
|
||||
[0, "토우카", null, 0, null, 86, 57, 77, 0, 160, 300, null, "인덕"],
|
||||
[0, "아이샤", null, 0, null, 97, 97, 75, 0, 160, 300, null, "위압"],
|
||||
[0, "린린", null, 0, null, 86, 98, 22, 0, 160, 300, null, "무쌍"],
|
||||
@@ -218,7 +218,7 @@
|
||||
[0, "엔야", null, 0, null, 79, 91, 38, 0, 160, 300, null, null],
|
||||
[0, "키쿄우", null, 0, null, 86, 90, 72, 0, 160, 300, null, null],
|
||||
[0, "유도", null, 0, null, 19, 11, 52, 0, 160, 300, null, null],
|
||||
[0, "레이하", null, 0, null, 80, 30, 65, 0, 160, 300, null, null],
|
||||
[0, "레이하", null, 0, null, 55, 30, 52, 0, 160, 300, null, null],
|
||||
[0, "토시", null, 0, null, 86, 92, 36, 0, 160, 300, null, "돌격"],
|
||||
[0, "이이셰", null, 0, null, 87, 94, 41, 0, 160, 300, null, null, "지력 36이 지력100을 이겼다!"],
|
||||
[0, "마치", null, 0, null, 77, 23, 94, 0, 160, 300, null, null],
|
||||
@@ -264,19 +264,19 @@
|
||||
[0, "캔다", null, 0, null, 70, 74, 70, 0, 160, 300, null, null],
|
||||
[0, "이싸", null, 0, null, 55, 75, 55, 0, 160, 300, null, null],
|
||||
[0, "미스터리", null, 0, null, 82, 10, 67, 0, 160, 300, null, "발명"],
|
||||
[0, "타케다쿠미코", null, 0, null, 80, 60, 80, 0, 160, 300, null, null],
|
||||
[0, "타케다 쿠미코", null, 0, null, 80, 60, 80, 0, 160, 300, null, null],
|
||||
[0, "니얀다카멘", null, 0, null, 88, 96, 88, 0, 160, 300, null, "무쌍", "난다! 난다! 니얀다 카멘!"],
|
||||
[0, "냐고", null, 0, null, 37, 46, 42, 0, 160, 300, "유지", null],
|
||||
[0, "니얀다카렌", null, 0, null, 77, 90, 75, 0, 160, 300, null, null, "난다! 난다! 니얀다 카렌!"],
|
||||
[0, "니얀다카렌", null, 0, null, 84, 90, 80, 0, 160, 300, null, null, "난다! 난다! 니얀다 카렌!"],
|
||||
[0, "미코", null, 0, null, 49, 21, 84, 0, 160, 300, null, null],
|
||||
[0, "냐온", null, 0, null, 72, 30, 90, 0, 160, 300, "패권", "발명"],
|
||||
[0, "콩", null, 0, null, 62, 60, 75, 0, 160, 300, null, null],
|
||||
[0, "네코선인", null, 0, null, 88, 52, 89, 0, 160, 300, "은둔", "신산"],
|
||||
[0, "콩이", null, 0, null, 62, 60, 75, 0, 160, 300, null, null],
|
||||
[0, "네코선인", null, 0, null, 88, 52, 80, 0, 160, 300, "은둔", "신산"],
|
||||
[0, "긴코", null, 0, null, 67, 79, 90, 0, 160, 300, null, null],
|
||||
[0, "사라카치", null, 0, null, 70, 83, 80, 0, 160, 300, null, null],
|
||||
[0, "미이라맨", null, 0, null, 82, 86, 60, 0, 160, 300, null, "돌격", "미이라~맨"],
|
||||
[0, "망토대왕", null, 0, null, 67, 94, 70, 0, 160, 300, null, "돌격", "이몸은 숲의 왕이시다!"],
|
||||
[0, "타누코", null, 0, null, 72, 78, 82, 0, 160, 300, null, null],
|
||||
[0, "사라카치", null, 0, null, 70, 83, 60, 0, 160, 300, null, null],
|
||||
[0, "미이라맨", null, 0, null, 80, 80, 60, 0, 160, 300, null, "돌격", "미이라~맨"],
|
||||
[0, "망토대왕", null, 0, null, 67, 90, 60, 0, 160, 300, null, "돌격", "이몸은 숲의 왕이시다!"],
|
||||
[0, "타누코", null, 0, null, 70, 65, 82, 0, 160, 300, null, null],
|
||||
[0, "쿠모네코", null, 0, null, 74, 74, 45, 0, 160, 300, null, null],
|
||||
[0, "도쿠로왕", null, 0, null, 90, 95, 80, 0, 160, 300, null, "돌격", "하지마!! 이대로 봉인되긴 싫단말이다!!"],
|
||||
[0, "네프론", null, 0, null, 40, 93, 35, 0, 160, 300, null, null],
|
||||
@@ -286,7 +286,7 @@
|
||||
[0, "또또", null, 0, null, 19, 10, 78, 0, 160, 300, null, "발명"],
|
||||
[0, "나나", null, 0, null, 50, 19, 88, 0, 160, 300, null, null],
|
||||
[0, "카카코선생님", null, 0, null, 67, 40, 75, 0, 160, 300, null, null],
|
||||
[0, "스즈코센세", null, 0, null, 76, 41, 84, 0, 160, 300, null, null],
|
||||
[0, "스즈코 선생님", null, 0, null, 76, 41, 84, 0, 160, 300, null, null],
|
||||
[0, "투투", null, 0, null, 52, 60, 70, 0, 160, 300, null, null],
|
||||
[0, "츄츄", null, 0, null, 64, 70, 30, 0, 160, 300, null, null],
|
||||
[0, "모모", null, 0, null, 78, 70, 75, 0, 160, 300, null, null],
|
||||
@@ -296,32 +296,32 @@
|
||||
[0, "메루루", null, 0, null, 87, 75, 92, 0, 160, 300, null, null],
|
||||
[0, "쿠데리아", null, 0, null, 75, 68, 79, 0, 160, 300, null, "상재", "그렇게 부르지 말랬지!!"],
|
||||
[0, "스테르크", null, 0, null, 80, 102, 81, 0, 160, 300, null, "무쌍", "자 따라해봐 로.로.나"],
|
||||
[0, "아스트리드", null, 0, null, 39, 78, 96, 0, 160, 300, "유지", null, "에에고 자시고 이아는 로로나가 맞다."],
|
||||
[0, "아스트리드", null, 0, null, 39, 78, 96, 0, 160, 300, "유지", null, "난 아스트리드 젝시드. 너의 스승의 스승의 스승이다."],
|
||||
[0, "미미", null, 0, null, 78, 82, 76, 0, 160, 300, null, null],
|
||||
[0, "지노 크나프", null, 0, null, 72, 84, 70, 0, 160, 300, null, null],
|
||||
[0, "에스카", null, 0, null, 84, 75, 91, 0, 160, 300, null, null],
|
||||
[0, "로직스", null, 0, null, 80, 85, 79, 0, 160, 300, null, null],
|
||||
[0, "소피", null, 0, null, 97, 94, 99, 0, 160, 300, null, "집중", "피리스, 연금술 해보지 않을래?"],
|
||||
[0, "플라흐타", null, 0, null, 79, 80, 101, 0, 160, 300, null, "환술"],
|
||||
[0, "피리스", null, 0, null, 81, 66, 80, 0, 160, 300, null, "반계", "소피선생님..! 플라흐타상!!"],
|
||||
[0, "일메리아", null, 0, null, 90, 64, 85, 0, 160, 300, null, null],
|
||||
[0, "소피", null, 0, null, 97, 82, 102, 0, 160, 300, null, "집중", "피리스, 연금술 해보지 않을래?"],
|
||||
[0, "플라흐타", null, 0, null, 84, 72, 106, 0, 160, 300, null, "환술"],
|
||||
[0, "피리스", null, 0, null, 86, 66, 87, 0, 160, 300, null, "반계", "소피선생님..! 플라흐타상!!"],
|
||||
[0, "일메리아", null, 0, null, 90, 58, 85, 0, 160, 300, null, null],
|
||||
[0, "리디", null, 0, null, 77, 79, 82, 0, 160, 300, null, null],
|
||||
[0, "수르", null, 0, null, 79, 77, 84, 0, 160, 300, null, null],
|
||||
[0, "리아나", null, 0, null, 72, 78, 67, 0, 160, 300, null, null],
|
||||
[0, "이츠카시도", null, 0, null, 94, 82, 80, 0, 160, 300, null, "환술", "린~~~~네~~~!!!!!!!!!!!!!!!!!!!"],
|
||||
[0, "이츠카코토리", null, 0, null, 87, 91, 78, 0, 160, 300, null, null],
|
||||
[0, "야토가미토카", null, 0, null, 84, 94, 22, 0, 160, 300, null, null],
|
||||
[0, "야토가미토카", null, 0, null, 84, 94, 10, 0, 160, 300, null, null],
|
||||
[0, "요시노", null, 0, null, 88, 85, 64, 0, 160, 300, null, null],
|
||||
[0, "쿠루미", null, 0, null, 86, 88, 83, 0, 160, 300, null, null],
|
||||
[0, "타카미야마나", null, 0, null, 81, 90, 83, 0, 160, 300, null, null],
|
||||
[0, "소노가미린네", null, 0, null, 90, 93, 84, 0, 160, 300, null, null, "시도..! 시도!"],
|
||||
[0, "카구야", null, 0, null, 72, 90, 34, 0, 160, 300, null, null, "훗 이몸의 종이 되거라 시도."],
|
||||
[0, "유즈루", null, 0, null, 72, 90, 75, 0, 160, 300, null, null],
|
||||
[0, "쿠루미", null, 0, null, 86, 92, 83, 0, 160, 300, null, null],
|
||||
[0, "타카미야마나", null, 0, null, 81, 82, 74, 0, 160, 300, null, null],
|
||||
[0, "소노가미린네", null, 0, null, 90, 93, 80, 0, 160, 300, null, null, "시도..! 시도!"],
|
||||
[0, "카구야", null, 0, null, 72, 90, 20, 0, 160, 300, null, null, "훗 이몸의 종이 되거라 시도."],
|
||||
[0, "유즈루", null, 0, null, 75, 80, 80, 0, 160, 300, null, null],
|
||||
[0, "이자요이미쿠", null, 0, null, 87, 82, 70, 0, 160, 300, null, null],
|
||||
[0, "마유리", null, 0, null, 81, 81, 81, 0, 160, 300, null, null],
|
||||
[0, "아루스마리아", null, 0, null, 75, 59, 92, 0, 160, 300, null, null],
|
||||
[0, "마리나", null, 0, null, 75, 59, 94, 0, 160, 300, null, null],
|
||||
[0, "소노가미리오", null, 0, null, 80, 87, 77, 0, 160, 300, null, null, "리오 나는 소노가미 리오야."],
|
||||
[0, "아루스 마리아", null, 0, null, 75, 59, 92, 0, 160, 300, null, null],
|
||||
[0, "아루스 마리나", null, 0, null, 75, 59, 94, 0, 160, 300, null, null],
|
||||
[0, "소노가미 리오", null, 0, null, 80, 87, 77, 0, 160, 300, null, null, "리오 나는 소노가미 리오야."],
|
||||
[0, "나츠미", null, 0, null, 70, 79, 77, 0, 160, 300, null, "환술"],
|
||||
[0, "오리가미", null, 0, null, 78, 88, 75, 0, 160, 300, null, "저격"],
|
||||
[0, "니아", null, 0, null, 70, 30, 82, 0, 160, 300, null, null],
|
||||
@@ -358,28 +358,28 @@
|
||||
[0, "큐어이그렛", null, 0, null, 82, 88, 94, 0, 160, 300, null, null],
|
||||
[0, "미치루", null, 0, null, 84, 86, 80, 0, 160, 300, null, null],
|
||||
[0, "카오루", null, 0, null, 84, 80, 86, 0, 160, 300, null, null],
|
||||
[0, "큐어드림", null, 0, null, 92, 96, 55, 0, 160, 300, null, "통찰", "희망이가진 위대한 힘! 큐어드림!"],
|
||||
[0, "큐어루즈", null, 0, null, 74, 93, 78, 0, 160, 300, null, null],
|
||||
[0, "큐어 드림", null, 0, null, 92, 96, 60, 0, 160, 300, null, "통찰", "희망이가진 위대한 힘! 큐어드림!"],
|
||||
[0, "큐어 루즈", null, 0, null, 74, 93, 78, 0, 160, 300, null, null],
|
||||
[0, "키리야", null, 0, null, 77, 89, 85, 0, 160, 300, null, null, "고마워요..선배들…이세계에 살아가는 의미를 알게해줘서…"],
|
||||
[0, "루미너스", null, 0, null, 73, 89, 75, 0, 160, 300, null, null],
|
||||
[0, "레모네이드", null, 0, null, 84, 87, 66, 0, 160, 300, null, null],
|
||||
[0, "민트", null, 0, null, 80, 75, 77, 0, 160, 300, null, null],
|
||||
[0, "아쿠아", null, 0, null, 83, 80, 76, 0, 160, 300, null, null],
|
||||
[0, "큐어 민트", null, 0, null, 80, 75, 77, 0, 160, 300, null, null],
|
||||
[0, "큐어 아쿠아", null, 0, null, 83, 80, 76, 0, 160, 300, null, null],
|
||||
[0, "밀키로즈", null, 0, null, 84, 97, 72, 0, 160, 300, null, null, "밀키로즈 메탈 블리자드..!!!"],
|
||||
[0, "분비", null, 0, null, 88, 98, 80, 0, 160, 300, null, "견고", "이렇게 죽긴 싫은데..!!"],
|
||||
[0, "가마오", null, 0, null, 42, 84, 36, 0, 160, 300, null, null],
|
||||
[0, "큐어블로섬", null, 0, null, 86, 75, 84, 0, 160, 300, null, null],
|
||||
[0, "큐어마린", null, 0, null, 71, 82, 41, 0, 160, 300, null, null],
|
||||
[0, "큐어션샤인", null, 0, null, 77, 83, 80, 0, 160, 300, null, null],
|
||||
[0, "큐어문라이트", null, 0, null, 82, 88, 84, 0, 160, 300, null, null],
|
||||
[0, "큐어멜로디", null, 0, null, 80, 85, 49, 0, 160, 300, null, null],
|
||||
[0, "큐어리듬", null, 0, null, 77, 85, 88, 0, 160, 300, null, null],
|
||||
[0, "큐어비트", null, 0, null, 80, 84, 80, 0, 160, 300, null, null],
|
||||
[0, "큐어 블로섬", null, 0, null, 86, 75, 84, 0, 160, 300, null, null],
|
||||
[0, "큐어 마린", null, 0, null, 71, 82, 41, 0, 160, 300, null, null],
|
||||
[0, "큐어 션샤인", null, 0, null, 77, 83, 80, 0, 160, 300, null, null],
|
||||
[0, "큐어 문라이트", null, 0, null, 82, 88, 84, 0, 160, 300, null, null],
|
||||
[0, "큐어 멜로디", null, 0, null, 80, 85, 49, 0, 160, 300, null, null],
|
||||
[0, "큐어 리듬", null, 0, null, 77, 85, 88, 0, 160, 300, null, null],
|
||||
[0, "큐어 비트", null, 0, null, 80, 84, 80, 0, 160, 300, null, null],
|
||||
[0, "하미", null, 0, null, 56, 50, 77, 0, 160, 300, null, null, "큰일이다냥!! 지금 자고있을떄가 아니다냥!"],
|
||||
[0, "큐어뮤즈", null, 0, null, 86, 92, 81, 0, 160, 300, null, null],
|
||||
[0, "큐어하트", null, 0, null, 93, 90, 95, 0, 160, 300, null, "위압"],
|
||||
[0, "다이아몬드", null, 0, null, 86, 88, 90, 0, 160, 300, null, null],
|
||||
[0, "큐어로제타", null, 0, null, 80, 80, 85, 0, 160, 300, null, "상재"],
|
||||
[0, "큐어 뮤즈", null, 0, null, 86, 92, 81, 0, 160, 300, null, null],
|
||||
[0, "큐어 하트", null, 0, null, 93, 90, 95, 0, 160, 300, null, "위압"],
|
||||
[0, "큐어 다이아몬드", null, 0, null, 86, 88, 90, 0, 160, 300, null, null],
|
||||
[0, "큐어 로제타", null, 0, null, 80, 80, 85, 0, 160, 300, null, "상재"],
|
||||
[0, "큐어소드", null, 0, null, 79, 87, 82, 0, 160, 300, null, "착사"],
|
||||
[0, "큐어에이스", null, 0, null, 75, 83, 77, 0, 160, 300, null, null],
|
||||
[0, "하세가와스바루", null, 0, null, 86, 77, 80, 0, 160, 300, null, null, "정말 초등학생은 최고야!!"],
|
||||
@@ -403,27 +403,27 @@
|
||||
[0, "피셰", null, 0, null, 70, 61, 69, 0, 160, 300, null, null],
|
||||
[0, "비샤", null, 0, null, 75, 86, 75, 0, 160, 300, null, null],
|
||||
[0, "우즈메", null, 0, null, 78, 88, 82, 0, 160, 300, null, null],
|
||||
[0, "미나즈키하루카", null, 0, null, 83, 86, 70, 0, 160, 300, null, null],
|
||||
[0, "미나즈키하루카", null, 0, null, 86, 88, 72, 0, 160, 300, null, null],
|
||||
[0, "칸나즈키아오이", null, 0, null, 86, 84, 88, 0, 160, 300, null, null],
|
||||
[0, "하즈키쿠루미", null, 0, null, 75, 84, 80, 0, 160, 300, null, null, "설령… 다시한번 세상이 트윈엔젤을 필요로 한다고 해도. 우리는 함께 있으니 괜찮겠죠?"],
|
||||
[0, "테슬라바이올렛", null, 0, null, 69, 85, 77, 0, 160, 300, null, null, "이 에로고양이가!!!"],
|
||||
[0, "하즈키쿠루미", null, 0, null, 78, 84, 80, 0, 160, 300, null, null, "설령 우리가 헤어진다고 해도.. 우리는 가족이니까요!"],
|
||||
[0, "테슬라바이올렛", null, 0, null, 80, 85, 77, 0, 160, 300, null, null, "이 에로고양이가!!!"],
|
||||
[0, "나인바이올렛", null, 0, null, 73, 84, 79, 0, 160, 300, null, null],
|
||||
[0, "나폴레옹정령", null, 0, null, 60, 60, 50, 0, 160, 300, null, null, "변태가 아냐!! 신사다!"],
|
||||
[0, "사이죠세츠코", null, 0, null, 77, 67, 81, 0, 160, 300, null, null],
|
||||
[0, "블랙트레이더", null, 0, null, 86, 95, 78, 0, 160, 300, null, null],
|
||||
[0, "엘리스", null, 0, null, 77, 91, 80, 0, 160, 300, null, null],
|
||||
[0, "리리카", null, 0, null, 65, 59, 71, 0, 160, 300, null, null],
|
||||
[0, "제르시퍼", null, 0, null, 95, 99, 89, 0, 160, 300, null, null],
|
||||
[0, "메구루", null, 0, null, 70, 80, 67, 0, 160, 300, null, null],
|
||||
[0, "스미레", null, 0, null, 75, 85, 80, 0, 160, 300, null, null],
|
||||
[0, "사이죠 세츠코", null, 0, null, 77, 67, 81, 0, 160, 300, null, null],
|
||||
[0, "블랙 트레이더", null, 0, null, 86, 95, 78, 0, 160, 300, null, null],
|
||||
[0, "엘리스 필리우스", null, 0, null, 77, 91, 80, 0, 160, 300, null, null],
|
||||
[0, "리리카 아스타딜", null, 0, null, 65, 59, 71, 0, 160, 300, null, null],
|
||||
[0, "제르시퍼", null, 0, null, 87, 99, 80, 0, 160, 300, null, null],
|
||||
[0, "아마츠키 메구루", null, 0, null, 70, 80, 67, 0, 160, 300, null, null],
|
||||
[0, "키사라기 스미레", null, 0, null, 75, 85, 80, 0, 160, 300, null, null],
|
||||
[0, "메어리", null, 0, null, 70, 88, 78, 0, 160, 300, null, null],
|
||||
[0, "유우키유우나", null, 0, null, 88, 91, 78, 0, 160, 300, null, null, "유우키 유우나! 용자부소속이야!"],
|
||||
[0, "토고미모리", null, 0, null, 88, 105, 97, 0, 160, 300, null, null],
|
||||
[0, "후우", null, 0, null, 85, 90, 86, 0, 160, 300, null, null],
|
||||
[0, "이츠키", null, 0, null, 87, 91, 84, 0, 160, 300, null, null],
|
||||
[0, "미요시카린", null, 0, null, 85, 93, 80, 0, 160, 300, null, null],
|
||||
[0, "노기소노코", null, 0, null, 79, 84, 78, 0, 160, 300, null, null],
|
||||
[0, "미노와긴", null, 0, null, 83, 87, 81, 0, 160, 300, null, null],
|
||||
[0, "토고미모리", null, 0, null, 88, 92, 95, 0, 160, 300, null, null],
|
||||
[0, "후우", null, 0, null, 85, 90, 80, 0, 160, 300, null, null],
|
||||
[0, "이츠키", null, 0, null, 87, 80, 70, 0, 160, 300, null, null],
|
||||
[0, "미요시카린", null, 0, null, 85, 88, 80, 0, 160, 300, null, null],
|
||||
[0, "노기소노코", null, 0, null, 81, 81, 78, 0, 160, 300, null, null],
|
||||
[0, "미노와긴", null, 0, null, 83, 87, 67, 0, 160, 300, null, null],
|
||||
[0, "아키선생님", null, 0, null, 85, 39, 88, 0, 160, 300, null, "귀모"],
|
||||
[0, "신수", null, 0, null, 97, 69, 99, 0, 160, 300, null, "집증"],
|
||||
[0, "노기와카바", null, 0, null, 87, 85, 79, 0, 160, 300, null, null],
|
||||
@@ -520,9 +520,9 @@
|
||||
[0, "아카히라셋카", null, 0, null, 77, 85, 70, 0, 160, 300, null, null],
|
||||
[0, "나츠메", null, 0, null, 79, 86, 50, 0, 160, 300, null, null],
|
||||
[0, "아키미네유우나", null, 0, null, 70, 86, 54, 0, 160, 300, null, null],
|
||||
[0, "사토시", null, 0, null, 51, 95, 13, 0, 160, 300, null, null],
|
||||
[1, "사토시", null, 0, null, 51, 95, 13, 0, 160, 300, null, null],
|
||||
[0, "타케시", null, 0, null, 80, 32, 92, 0, 160, 300, null, null],
|
||||
[0, "카스미", null, 0, null, 80, 44, 70, 0, 160, 300, null, null],
|
||||
[1, "카스미", null, 0, null, 80, 44, 70, 0, 160, 300, null, null],
|
||||
[0, "그린", null, 0, null, 76, 55, 82, 0, 160, 222, null, null],
|
||||
[0, "관철", null, 0, null, 79, 33, 83, 0, 160, 300, null, null],
|
||||
[0, "오키드 박사", null, 0, null, 70, 31, 95, 0, 160, 300, null, null],
|
||||
@@ -533,7 +533,7 @@
|
||||
[0, "태홍", null, 0, null, 90, 59, 95, 0, 160, 300, null, null, "마음이 없는 세계…"],
|
||||
[0, "마적", null, 0, null, 85, 33, 91, 0, 160, 300, null, null],
|
||||
[0, "섀턴", null, 0, null, 79, 39, 90, 0, 160, 300, null, null, "선전용이엇지만 이번엔 진짜로 새로운 에너지라도 찾아볼까?"],
|
||||
[0, "N", null, 0, null, 80, 45, 91, 0, 160, 300, null, null, "네 디지몬의 목소리를 들려줘"],
|
||||
[0, "N", null, 0, null, 80, 45, 91, 0, 160, 300, null, null, "네 포켓몬의 목소리를 들려줘"],
|
||||
[0, "야가미 타이치", null, 0, null, 91, 85, 76, 0, 160, 300, null, null],
|
||||
[0, "이시다야마토", null, 0, null, 75, 83, 80, 0, 160, 300, null, null],
|
||||
[0, "타케노우치소라", null, 0, null, 81, 66, 84, 0, 160, 300, null, null],
|
||||
@@ -565,11 +565,11 @@
|
||||
[0, "사쿠라메구미", null, 0, null, 77, 32, 80, 0, 160, 300, null, null, "언니가 아니라 사쿠라 선생님!"],
|
||||
[0, "다이몬마사루", null, 0, null, 56, 99, 42, 0, 160, 300, null, null],
|
||||
[0, "히나모리아무", null, 0, null, 83, 70, 67, 0, 160, 300, null, null, "네거티브 하트 록온! 오픈 하트!!"],
|
||||
[0, "발푸르기스의밤", null, 0, null, 67, 99, 56, 0, 160, 300, null, null],
|
||||
[0, "발푸르기스의밤", null, 0, null, 67, 99, 56, 0, 160, 300, null, null, "하하하하하하하하!!"],
|
||||
[0, "멘마", null, 0, null, 75, 56, 77, 0, 160, 300, null, null, "진땅 정말 좋아해 신부가 되고싶다는 말이야."],
|
||||
[0, "진땅", null, 0, null, 73, 55, 75, 0, 160, 300, null, null, "멘마!!! 미츠케타!!"],
|
||||
[0, "유키아츠", null, 0, null, 75, 69, 72, 0, 160, 300, null, null],
|
||||
[0, "폿포", null, 0, null, 62, 69, 50, 0, 160, 300, null, null, "진땅 멘마 미츠케타!"],
|
||||
[0, "폿포", null, 0, null, 62, 69, 50, 0, 160, 300, null, null],
|
||||
[0, "야냐루", null, 0, null, 75, 55, 72, 0, 160, 300, null, null, "에! 진땅 또 멘마를 울렷어!!"],
|
||||
[0, "츠루코", null, 0, null, 73, 52, 88, 0, 160, 300, null, null, "진땅 그러면 안되!"],
|
||||
[0, "공백소라", null, 0, null, 71, 50, 95, 0, 160, 300, null, null],
|
||||
@@ -583,7 +583,7 @@
|
||||
[0, "고길동", null, 0, null, 74, 88, 70, 0, 160, 300, null, null],
|
||||
[0, "이그드라실", null, 0, null, 15, 82, 97, 0, 160, 300, null, null],
|
||||
[0, "마츠다타카토", null, 0, null, 72, 56, 74, 0, 160, 300, null, null],
|
||||
[0, "마키노루키", null, 0, null, 77, 63, 77, 0, 160, 300, null, null],
|
||||
[0, "마키노 루키", null, 0, null, 77, 63, 77, 0, 160, 300, null, null],
|
||||
[0, "리젠랴", null, 0, null, 72, 70, 77, 0, 160, 300, null, null],
|
||||
[0, "리슈촌", null, 0, null, 67, 43, 52, 0, 160, 300, null, null],
|
||||
[0, "쿠도타이키", null, 0, null, 82, 55, 80, 0, 160, 300, null, null],
|
||||
@@ -592,18 +592,18 @@
|
||||
[0, "코구레카게루", null, 0, null, 80, 78, 60, 0, 160, 300, null, null, "널 좋아해 우타."],
|
||||
[0, "히이라기케이이치", null, 0, null, 86, 72, 88, 0, 160, 300, null, null],
|
||||
[0, "사쿠라즈카미키", null, 0, null, 79, 31, 82, 0, 160, 300, null, null],
|
||||
[0, "후지사키마나", null, 0, null, 77, 90, 73, 0, 160, 300, null, null],
|
||||
[0, "후지사키 마나", null, 0, null, 77, 90, 73, 0, 160, 300, null, null],
|
||||
[0, "마이멜로디", null, 0, null, 84, 60, 74, 0, 160, 300, null, null],
|
||||
[0, "히아라기준", null, 0, null, 82, 60, 75, 0, 160, 300, null, null],
|
||||
[0, "호시즈키키라라", null, 0, null, 83, 70, 65, 0, 160, 300, null, null],
|
||||
[0, "오토나시유즈루", null, 0, null, 85, 61, 72, 0, 160, 300, null, null],
|
||||
[0, "타치바나카나데", null, 0, null, 89, 88, 74, 0, 160, 300, null, null],
|
||||
[0, "나오키아야토", null, 0, null, 80, 53, 80, 0, 160, 300, null, null, "좋아해 유즈루 심장을 줘서 고마워…"],
|
||||
[0, "나카무라유리", null, 0, null, 81, 62, 76, 0, 160, 300, null, null],
|
||||
[0, "캐캐체유이", null, 0, null, 77, 77, 56, 0, 160, 300, null, null, "결혼! 여자들의 궁극의 행복."],
|
||||
[0, "히나타히데키", null, 0, null, 78, 70, 60, 0, 160, 300, null, null, "내가 해줄게!!"],
|
||||
[0, "오토나시하츠네", null, 0, null, 74, 27, 80, 0, 160, 300, null, null],
|
||||
[0, "이와사와마사미", null, 0, null, 76, 29, 88, 0, 160, 300, null, null],
|
||||
[0, "타치바나카나데", null, 0, null, 89, 88, 74, 0, 160, 300, null, null, "좋아해 유즈루 나에게 심장을 줘서 고마워…"],
|
||||
[0, "나오키 아야토", null, 0, null, 80, 53, 80, 0, 160, 300, null, null],
|
||||
[0, "나카무라 유리", null, 0, null, 81, 62, 76, 0, 160, 300, null, null],
|
||||
[0, "Yui", null, 0, null, 82, 77, 76, 0, 160, 300, null, null, "결혼! 여자들의 궁극의 행복."],
|
||||
[0, "히나타 히데키", null, 0, null, 78, 70, 60, 0, 160, 300, null, null, "내가 해줄게!!"],
|
||||
[0, "오토나시 하츠네", null, 0, null, 74, 27, 80, 0, 160, 300, null, null],
|
||||
[0, "이와사와 마사미", null, 0, null, 76, 29, 88, 0, 160, 300, null, null],
|
||||
[0, "아마노네네", null, 0, null, 82, 44, 81, 0, 160, 300, null, null],
|
||||
[0, "아마노유우", null, 0, null, 77, 49, 92, 0, 160, 300, null, null, "어차피 게임인걸?"],
|
||||
[0, "아오누마키리하", null, 0, null, 76, 50, 84, 0, 160, 300, null, null],
|
||||
@@ -622,15 +622,13 @@
|
||||
[0, "타카미치카", null, 0, null, 80, 40, 76, 0, 160, 300, null, null],
|
||||
[0, "사쿠라우치리코", null, 0, null, 80, 44, 84, 0, 160, 300, null, null],
|
||||
[0, "큐어에코", null, 0, null, 83, 62, 74, 0, 160, 300, null, null],
|
||||
[0, "홍진호", null, 0, null, 22, 22, 22, 0, 160, 222, null, null, "폭풍저그 콩진호가 간다!"],
|
||||
[0, "큐어러블리", null, 0, null, 80, 83, 47, 0, 160, 300, null, null],
|
||||
[0, "큐어프린세스", null, 0, null, 76, 85, 55, 0, 160, 300, null, null],
|
||||
[0, "큐어허니", null, 0, null, 83, 86, 67, 0, 160, 300, null, null],
|
||||
[0, "큐어포춘", null, 0, "`", 82, 90, 80, 0, 160, 300, null, null],
|
||||
[0, "큐어포춘", null, 0, null, 82, 90, 80, 0, 160, 300, null, null],
|
||||
[0, "블루", null, 0, null, 41, 29, 17, 0, 160, 210, null, null],
|
||||
[0, "큐어텐더", null, 0, null, 82, 94, 77, 0, 160, 300, null, null],
|
||||
[0, "큐어플로라", null, 0, null, 81, 87, 69, 0, 160, 300, null, null],
|
||||
[0, "임요환", null, 0, null, 89, 57, 100, 0, 160, 300, null, null, "콩은 까야 제맛입니다"],
|
||||
[0, "큐어머메이드", null, 0, null, 88, 80, 93, 0, 160, 300, null, null],
|
||||
[0, "큐어트윙클", null, 0, null, 88, 84, 80, 0, 160, 300, null, null],
|
||||
[0, "큐어미라클", null, 0, null, 80, 86, 74, 0, 160, 300, null, null],
|
||||
@@ -652,7 +650,7 @@
|
||||
[0, "아마쿠사카나데", null, 0, null, 80, 20, 75, 0, 160, 300, null, null],
|
||||
[0, "나레이션", null, 0, null, 50, 50, 50, 0, 160, 300, null, null, "에라베!"],
|
||||
[0, "도라쿠우타케", null, 0, null, 79, 31, 85, 0, 160, 300, null, null],
|
||||
[0, "아마가미소라", null, 0, null, 67, 17, 92, 0, 160, 300, null, null, "그에 대해선 잊어버려! 내꺼니까~♥"],
|
||||
[0, "아마가미소라", null, 0, null, 67, 17, 92, 0, 160, 300, null, null],
|
||||
[0, "코우사카쿄우스케", null, 0, null, 70, 19, 30, 0, 160, 300, null, null],
|
||||
[0, "코우사카키리노", null, 0, null, 60, 60, 19, 0, 160, 300, null, null, "나한테 우리오빠 뺏긴 기분이 어떄?"],
|
||||
[0, "쿠로네코", null, 0, null, 81, 20, 72, 0, 160, 300, null, null],
|
||||
@@ -668,7 +666,7 @@
|
||||
[0, "노야마아즈사", null, 0, null, 82, 30, 72, 0, 160, 300, null, null],
|
||||
[0, "강영웅", null, 0, null, 86, 39, 90, 0, 160, 300, null, null],
|
||||
[0, "마츠오카유이치", null, 0, null, 84, 36, 72, 0, 160, 300, null, null],
|
||||
[0, "타카야나기켄", "`", 0, null, 82, 28, 80, 0, 160, 300, null, null],
|
||||
[0, "타카야나기켄", null, 0, null, 82, 28, 80, 0, 160, 300, null, null],
|
||||
[0, "니시노카오루", null, 0, null, 86, 34, 85, 0, 160, 300, null, null],
|
||||
[0, "코다마미노리", null, 0, null, 75, 30, 82, 0, 160, 300, null, null],
|
||||
[0, "사카키바라요코", null, 0, null, 85, 35, 77, 0, 160, 300, null, null],
|
||||
@@ -681,10 +679,10 @@
|
||||
[0, "사소리나", null, 0, null, 77, 80, 40, 0, 160, 300, null, null],
|
||||
[0, "킨토레스키", null, 0, null, 77, 100, 70, 0, 160, 300, null, null],
|
||||
[0, "시비렛타", null, 0, null, 54, 76, 89, 0, 160, 300, null, null, "싫어…! 이렇게 죽고싶지 않단말이야…!"],
|
||||
[0, "미즈시타타레", null, 0, null, 76, 80, 70, 0, 160, 300, null, null, "숙제를 잊지마라…!"],
|
||||
[0, "미즈 시타타레", null, 0, null, 76, 80, 70, 0, 160, 300, null, null, "숙제를 잊지마라…!"],
|
||||
[0, "고얀", null, 0, null, 52, 94, 70, 0, 160, 300, null, null],
|
||||
[0, "레지나", null, 0, null, 85, 85, 85, 0, 160, 300, null, null],
|
||||
[0, "킹지코츄", null, 0, null, 56, 90, 70, 0, 160, 300, null, null],
|
||||
[0, "킹 지코츄", null, 0, null, 56, 90, 70, 0, 160, 300, null, null],
|
||||
[0, "베르", null, 0, null, 43, 62, 90, 0, 160, 300, null, null],
|
||||
[0, "이라", null, 0, null, 89, 81, 60, 0, 160, 300, null, null],
|
||||
[0, "큐어피치", null, 0, null, 77, 88, 59, 0, 160, 300, null, null],
|
||||
@@ -701,37 +699,26 @@
|
||||
[0, "큐어젤라토", null, 0, null, 82, 78, 83, 0, 160, 300, null, null],
|
||||
[0, "큐어마카롱", null, 0, null, 83, 76, 89, 0, 160, 300, null, null],
|
||||
[0, "큐어파르페", null, 0, null, 81, 80, 80, 0, 160, 300, null, null],
|
||||
[0, "큐어옐", null, 0, null, 85, 78, 74, 0, 160, 300, null, null],
|
||||
[0, "큐어앙주", null, 0, null, 80, 74, 88, 0, 160, 300, null, null],
|
||||
[0, "큐어에투알", null, 0, null, 84, 79, 83, 0, 160, 300, null, null],
|
||||
[0, "큐어마셰리", null, 0, null, 82, 65, 82, 0, 160, 300, null, null],
|
||||
[0, "유메노코토", null, 0, null, 81, 39, 80, 0, 160, 300, null, null, "혼노~ 스코시~ 이지와루나~ 뎅와노 키리카타오~ 시타노~ 다앗테 큐우니 신켄~나오에데하나시 다스노~ 즈루이~ 스키타요토~ 이와세테아 게나이 다앗테 히카세테아게나이"],
|
||||
[0, "쿠로미", null, 0, null, 80, 49, 80, 0, 160, 300, null, null, "쿠로미 사건일지 XXX호!!"],
|
||||
[0, "유메노코토", null, 0, null, 81, 39, 80, 0, 160, 300, null, null],
|
||||
[0, "쿠로미", null, 0, null, 80, 49, 80, 0, 160, 300, null, null],
|
||||
[0, "바쿠", null, 0, null, 55, 55, 50, 0, 160, 300, null, null],
|
||||
[0, "쿠로미파이브", null, 0, null, 59, 67, 60, 0, 160, 300, null, null],
|
||||
[0, "나빛나", null, 0, null, 87, 49, 83, 0, 160, 300, null, null],
|
||||
[0, "아이리스", null, 0, null, 83, 50, 86, 0, 160, 300, null, null],
|
||||
[0, "세레나", null, 0, null, 85, 50, 82, 0, 160, 300, null, null],
|
||||
[0, "나빛나", null, 0, null, 87, 49, 83, 0, 160, 300, null, null, "혼노~ 스코시~ 이지와루나~ 뎅와노 키리카타오~ 시타노~ 다앗테 큐우니 신켄~나오에데하나시 다스노~ 즈루이~ 스키타요토~ 이와세테아 게나이 다앗테 히카세테아게나이"],
|
||||
[0, "아이리스", null, 0, null, 83, 50, 86, 0, 160, 300, null, null, "쿠로미 사건일지 XXX호!!"],
|
||||
[0, "포켓몬 세레나", null, 0, null, 85, 50, 82, 0, 160, 300, null, null],
|
||||
[0, "시트론", null, 0, null, 79, 41, 92, 0, 160, 300, null, "발명"],
|
||||
[0, "야가미라이토", null, 0, null, 80, 87, 95, 0, 160, 300, null, null],
|
||||
[0, "난천", null, 0, null, 84, 53, 87, 0, 160, 300, null, null],
|
||||
[0, "루자미네", null, 0, null, 80, 40, 92, 0, 160, 300, null, null],
|
||||
[0, "릴리에", null, 0, null, 82, 64, 69, 0, 160, 300, null, null],
|
||||
[0, "비트마", null, 0, null, 78, 90, 55, 0, 160, 300, null, null],
|
||||
[0, "비트마ex", null, 0, null, 77, 95, 55, 0, 160, 300, null, null],
|
||||
[0, "토마", null, 0, null, 79, 52, 75, 0, 160, 300, null, null],
|
||||
[0, "와이버스트", null, 0, null, 75, 85, 50, 0, 160, 300, null, null],
|
||||
[0, "몰리", null, 0, null, 82, 78, 45, 0, 160, 300, null, null],
|
||||
[0, "나카가와노리코", null, 0, null, 81, 19, 72, 0, 160, 300, null, null, "알고있엇니?? 20년간 전쟁이 지속된 이 땅에도 이렇게 아름다운 봄이 온다는 것을. 돌아오지 않는 계절은 없어 놀라워"],
|
||||
[0, "오다토시노리", null, 0, null, 56, 40, 81, 0, 160, 300, null, null, "이게임에서 살아남는건 위대하신 이몸이라는 것이다!!!!!!!!!!!!!!!"],
|
||||
[0, "나나하라슈야", null, 0, null, 85, 55, 74, 0, 160, 300, null, null, "메리크리스마스 와일드 세븐 나나하라슈야"],
|
||||
[0, "어른로로나", null, 0, null, 92, 89, 94, 0, 160, 300, null, null, "에. 여러분들은 누구시죠..?"],
|
||||
[0, "푸크푹", null, 0, null, 92, 79, 80, 0, 160, 300, null, null, "어서와 섀도게일 언니"],
|
||||
[0, "그림하트", null, 0, null, 77, 51, 49, 0, 160, 300, null, null, "그자의 목을 쳐라."],
|
||||
[0, "나카가와노리코", null, 0, null, 81, 19, 72, 0, 160, 300, null, null],
|
||||
[0, "오다토시노리", null, 0, null, 56, 40, 81, 0, 160, 300, null, null],
|
||||
[0, "나나하라슈야", null, 0, null, 85, 55, 74, 0, 160, 300, null, null],
|
||||
[0, "어른로로나", null, 0, null, 92, 89, 94, 0, 160, 300, null, null, "에… 여러분들은???"],
|
||||
[0, "푸크푹", null, 0, null, 92, 79, 80, 0, 160, 300, null, null, "어서와 섀도게일 언니."],
|
||||
[0, "그림하트", null, 0, null, 77, 51, 49, 0, 160, 300, null, null, "목을 쳐라.."],
|
||||
[0, "마왕팜", null, 0, null, 72, 94, 50, 0, 160, 300, null, null],
|
||||
[0, "피티프레데리카", null, 0, null, 84, 33, 86, 0, 160, 300, null, null],
|
||||
[0, "데어라팬텀", null, 0, null, 82, 48, 88, 0, 160, 300, null, null],
|
||||
[0, "웨딘", null, 0, null, 86, 40, 85, 0, 160, 300, null, null, "마법나라'잖아요! 꿈과 판타지잖아요! 당신들, 바보 아녜요? 어떻게 일이 잘 안풀린다고 남까지 말려들게 해서 몽땅 죽여 버리겠다는 결론을 낼 수있는거죠?"]
|
||||
[0, "웨딘", null, 0, null, 86, 40, 85, 0, 160, 300, null, null, "마법나라잖아요! 꿈과 판타지잖아요! 당신들, 바보 아녜요? 어떻게 일이 잘 안 풀린다고 남까지 말려들게 해서 몽땅 죽여 버리겠다는 결론을 낼 수 있죠?"]
|
||||
],
|
||||
"general_ex":[
|
||||
|
||||
|
||||
+546
-547
@@ -2,555 +2,554 @@
|
||||
"title": "【가상모드17】 루드라사움",
|
||||
"startYear": 1,
|
||||
"history": [
|
||||
"<C>●</>LP 1년 1월:<L><b>【가상모드16】</> 루드라사움",
|
||||
"<C>●</>LP 1년 1월:<L><b>【이벤트】</b></>제작자 : Cure.",
|
||||
"<C>●</>LP 1년 1월:<L><b>【이벤트】</b></>도움을주신분 : 네이미님, 거북마루님",
|
||||
"<C>●</>LP 1년 1월:<L><b>【이벤트】</b></>지도와 병종을 포함한 루드라사움의 세계관을 불러옵니다."
|
||||
"<C>●</>180년 1월:<L><b>【가상모드16】 루드라사움</>",
|
||||
"<C>●</>180년 1월:<L><b>【이벤트】</b>제작자 : Cure,거북마루, 네이미</>",
|
||||
"<C>●</>180년 1월:<L><b>【이벤트】</b>루드라사움의 세계관을 불러옵니다.</>"
|
||||
],
|
||||
"stat": {
|
||||
"total": 240,
|
||||
"total": 230,
|
||||
"min": 50,
|
||||
"max": 110
|
||||
},
|
||||
"iconPath": "루드라사움",
|
||||
"fiction": 0,
|
||||
"nation":[
|
||||
|
||||
],
|
||||
"map":{
|
||||
"mapName":"ludo_rathowm",
|
||||
"unitSet":"ludo_rathowm"
|
||||
},
|
||||
"diplomacy":[],
|
||||
"general":[
|
||||
[0, "3G", null, 0, null, 34, 67, 67, 0, -15, 300, null, null],
|
||||
[0, "PG 7", "PG-7.png", 0, null, 77, 83, 60, 0, -15, 300, null, null],
|
||||
[0, "PG 9", "PG-9.png", 0, null, 77, 60, 83, 0, -15, 300, null, null],
|
||||
[0, "가넷", null, 0, null, 83, 56, 88, 0, -15, 300, null, null],
|
||||
[0, "가라샤", null, 0, null, 65, 68, 47, 0, -15, 300, null, null],
|
||||
[0, "가르티아", null, 0, null, 68, 101, 73, 0, -15, 300, null, null],
|
||||
[0, "가무로아 마티오", "가무로아-마티오.png", 0, null, 55, 65, 40, 0, -15, 300, null, null],
|
||||
[0, "가와노에 미네", "가와노에-미네.png", 0, null, 66, 71, 71, 0, -15, 300, null, null],
|
||||
[0, "가와노에 유즈루", "가와노에-유즈루.png", 0, null, 71, 76, 61, 0, -15, 300, null, null],
|
||||
[0, "가이야스 야스토", null, 0, null, 46, 60, 31, 0, -15, 300, null, null],
|
||||
[0, "가이젤 고도", null, 0, null, 55, 40, 60, 0, -15, 300, null, null],
|
||||
[0, "검호", null, 0, null, 69, 80, 59, 0, -15, 300, null, null],
|
||||
[0, "겐리", null, 0, null, 72, 55, 72, 0, -15, 300, null, null],
|
||||
[0, "겟코", null, 0, null, 75, 85, 58, 0, -15, 300, null, null],
|
||||
[0, "고닌자 그린", "고닌자-그린.png", 0, null, 55, 20, 65, 0, -15, 300, null, null],
|
||||
[0, "고닌자 레드", "고닌자-레드.png", 0, null, 70, 70, 10, 0, -15, 300, null, null],
|
||||
[0, "고닌자 블랙", "고닌자-블랙.png", 0, null, 65, 65, 20, 0, -15, 300, null, null],
|
||||
[0, "고닌자 블루", "고닌자-블루.png", 0, null, 60, 75, 15, 0, -15, 300, null, null],
|
||||
[0, "고닌자 옐로", "고닌자-옐로.png", 0, null, 55, 15, 70, 0, -15, 300, null, null],
|
||||
[0, "고에몬", null, 0, null, 50, 40, 50, 0, -15, 300, null, null],
|
||||
[0, "고킨켄", null, 0, null, 65, 83, 44, 0, -15, 300, null, null],
|
||||
[0, "고토", null, 0, null, 50, 40, 51, 0, -15, 300, null, null],
|
||||
[0, "곤", null, 0, null, 71, 81, 59, 0, -15, 300, null, null],
|
||||
[0, "곤도 이사미", null, 0, null, 42, 22, 60, 0, -15, 300, null, null],
|
||||
[0, "그라크 알카포네", null, 0, null, 50, 40, 52, 0, -15, 300, null, null],
|
||||
[0, "그린 오니", null, 0, null, 50, 40, 53, 0, -15, 300, null, null],
|
||||
[0, "기가이", null, 0, null, 75, 99, 63, 0, -15, 300, null, null],
|
||||
[0, "김치 드라이브", "김치-드라이브.png", 0, null, 29, 67, 68, 0, -15, 300, null, null],
|
||||
[0, "나기 스 라갈", "나기-스-라갈.png", 0, null, 82, 54, 93, 0, -15, 300, null, null],
|
||||
[0, "나오에 아이", "나오에-아이.png", 0, null, 87, 49, 72, 0, -15, 300, null, null],
|
||||
[0, "나와토리", null, 0, null, 70, 75, 61, 0, -15, 300, null, null],
|
||||
[0, "나토리", null, 0, null, 75, 58, 85, 0, -15, 300, null, null],
|
||||
[0, "난죠 란", "난죠-란.png", 0, null, 78, 49, 72, 0, -15, 300, null, null],
|
||||
[0, "네로차페트7세", "네로차페트7세.png", 0, null, 71, 67, 34, 0, -15, 300, null, null],
|
||||
[0, "네이 우롱", "네이-우롱.png", 0, null, 50, 40, 54, 0, -15, 300, null, null],
|
||||
[0, "네카이 시스", "네카이-시스.png", 0, null, 73, 69, 38, 0, -15, 300, null, null],
|
||||
[0, "넬슨 서버", "넬슨-서버.png", 0, null, 74, 60, 50, 0, -15, 300, null, null],
|
||||
[0, "노기쿠", null, 0, null, 72, 63, 78, 0, -15, 300, null, null],
|
||||
[0, "노벨", null, 0, null, 50, 40, 55, 0, -15, 300, null, null],
|
||||
[0, "노스", null, 0, null, 87, 106, 50, 0, -15, 300, null, null],
|
||||
[0, "노아 하코부네", "노아-하코부네.png", 0, null, 69, 46, 74, 0, -15, 300, null, null],
|
||||
[0, "노에마세", null, 0, null, 50, 40, 56, 0, -15, 300, null, null],
|
||||
[0, "누누하라 캐비지", "누누하라-캐비지.png", 0, null, 60, 59, 60, 0, -15, 300, null, null],
|
||||
[0, "느와르", null, 0, null, 72, 78, 63, 0, -15, 300, null, null],
|
||||
[0, "니나", null, 0, null, 50, 40, 57, 0, -15, 300, null, null],
|
||||
[0, "니들", null, 0, null, 71, 76, 54, 0, -15, 300, null, null],
|
||||
[0, "니코페리", null, 0, null, 82, 52, 97, 0, -15, 300, null, null],
|
||||
[0, "닛코", null, 0, null, 50, 90, 90, 0, -15, 300, null, null],
|
||||
[0, "다 게일", "다-게일.png", 0, null, 59, 70, 70, 0, -15, 300, null, null],
|
||||
[0, "다니엘 세프티", "다니엘-세프티.png", 0, null, 50, 60, 58, 0, -15, 300, null, null],
|
||||
[0, "다마네기", null, 0, null, 50, 40, 59, 0, -15, 300, null, null],
|
||||
[0, "다이몬 지타로", null, 0, null, 50, 50, 40, 0, -15, 300, null, null],
|
||||
[0, "다크란스", null, 0, null, 70, 100, 67, 0, -15, 300, null, null],
|
||||
[0, "닷지 에반스", null, 0, null, 42, 60, 27, 0, -15, 300, null, null],
|
||||
[0, "덴저러스 브라보", null, 0, null, 50, 51, 40, 0, -15, 300, null, null],
|
||||
[0, "덴즈 브라우", null, 0, null, 50, 52, 40, 0, -15, 300, null, null],
|
||||
[0, "도르한 크리케트", "도르한-크리케트.png", 0, null, 62, 58, 69, 0, -15, 300, null, null],
|
||||
[0, "도시바", null, 0, null, 84, 32, 59, 0, -15, 300, null, null],
|
||||
[0, "도코모", null, 0, null, 43, 60, 28, 0, -15, 300, null, null],
|
||||
[0, "도하라스 해피네스", null, 0, null, 50, 53, 40, 0, -15, 300, null, null],
|
||||
[0, "돈 도에스스키", null, 0, null, 50, 54, 40, 0, -15, 300, null, null],
|
||||
[0, "듀란", null, 0, null, 62, 67, 39, 0, -15, 300, null, null],
|
||||
[0, "라 사이젤", "라-사이젤.png", 0, null, 79, 103, 59, 0, -15, 300, null, null],
|
||||
[0, "라 하우젤", "라-하우젤.png", 0, null, 79, 103, 59, 0, -15, 300, null, null],
|
||||
[0, "라기시스", null, 0, null, 56, 70, 92, 0, -15, 300, null, null],
|
||||
[0, "라돈 알폰느", "라돈-알폰느.png", 0, null, 50, 55, 40, 0, -15, 300, null, null],
|
||||
[0, "라르가", null, 0, null, 64, 56, 69, 0, -15, 300, null, null],
|
||||
[0, "라벤더", null, 0, null, 50, 56, 40, 0, -15, 300, null, null],
|
||||
[0, "라우네아", null, 0, null, 73, 89, 61, 0, -15, 300, null, null],
|
||||
[0, "라인코크", null, 0, null, 77, 61, 91, 0, -15, 300, null, null],
|
||||
[0, "라인하르트", null, 0, null, 58, 75, 43, 0, -15, 300, null, null],
|
||||
[0, "라쳇 랜천", null, 0, null, 50, 57, 40, 0, -15, 300, null, null],
|
||||
[0, "라크 파이크스피크", null, 0, null, 50, 58, 40, 0, -15, 300, null, null],
|
||||
[0, "라파리아 무스카", null, 0, null, 50, 59, 50, 0, -15, 300, null, null],
|
||||
[0, "란마루", null, 0, null, 68, 74, 59, 0, -15, 300, null, null],
|
||||
[0, "란스", null, 0, null, 84, 105, 51, 0, -15, 300, null, null],
|
||||
[0, "래시", null, 0, null, 70, 83, 19, 0, -15, 300, null, null],
|
||||
[0, "레드 오니", null, 0, null, 55, 40, 50, 0, -15, 300, null, null],
|
||||
[0, "레드아이", null, 0, null, 76, 84, 84, 0, -15, 300, null, null],
|
||||
[0, "레류코프 바코프", "레류코프-바코프.png", 0, null, 74, 80, 59, 0, -15, 300, null, null],
|
||||
[0, "레리 세리카", null, 0, null, 55, 40, 51, 0, -15, 300, null, null],
|
||||
[0, "레베카 코프리", "레베카-코프리.png", 0, null, 61, 49, 64, 0, -15, 300, null, null],
|
||||
[0, "레이", null, 0, null, 80, 109, 53, 0, -15, 300, null, null],
|
||||
[0, "레이라 글레크니", "레이라-글레크니.png", 0, null, 68, 80, 54, 0, -15, 300, null, null],
|
||||
[0, "레이콕", null, 0, null, 70, 66, 50, 0, -15, 300, null, null],
|
||||
[0, "레자리안", null, 0, null, 55, 40, 52, 0, -15, 300, null, null],
|
||||
[0, "렉싱턴", null, 0, null, 82, 97, 60, 0, -15, 300, null, null],
|
||||
[0, "렌고쿠", null, 0, null, 82, 84, 57, 0, -15, 300, null, null],
|
||||
[0, "로나 케스치나", "로나-케스치나.png", 0, null, 46, 55, 55, 0, -15, 300, null, null],
|
||||
[0, "로도네 로도네", "로도네-로도네.png", 0, null, 54, 67, 67, 0, -15, 300, null, null],
|
||||
[0, "로라 인더스", "로라-인더스.png", 0, null, 55, 40, 53, 0, -15, 300, null, null],
|
||||
[0, "로레 엔론", "로레-엔론.png", 0, null, 50, 40, 65, 0, -15, 300, null, null],
|
||||
[0, "로렉스 가드라스", "로렉스-가드라스.png", 0, null, 80, 90, 55, 0, -15, 300, null, null],
|
||||
[0, "로버트 랜드스타", "로버트-랜드스타.png", 0, null, 55, 40, 54, 0, -15, 300, null, null],
|
||||
[0, "로제 카드", "로제-카드.png", 0, null, 64, 60, 49, 0, -15, 300, null, null],
|
||||
[0, "로즈", null, 0, null, 55, 40, 55, 0, -15, 300, null, null],
|
||||
[0, "로키 뱅크", "로키-뱅크.png", 0, null, 55, 56, 40, 0, -15, 300, null, null],
|
||||
[0, "루리카 카라", "루리카-카라.png", 0, null, 64, 48, 70, 0, -15, 300, null, null],
|
||||
[0, "루베란 체르", "루베란-체르.png", 0, null, 55, 40, 57, 0, -15, 300, null, null],
|
||||
[0, "루시 줄리에타", "루시-줄리에타.png", 0, null, 30, 65, 65, 0, -15, 300, null, null],
|
||||
[0, "루이스 키토와크", null, 0, null, 55, 40, 58, 0, -15, 300, null, null],
|
||||
[0, "루트 아리", "루트-아리.png", 0, null, 34, 67, 67, 0, -15, 300, null, null],
|
||||
[0, "르메이", null, 0, null, 84, 95, 54, 0, -15, 300, null, null],
|
||||
[0, "리림", null, 0, null, 71, 71, 71, 0, -15, 300, null, null],
|
||||
[0, "리세트 카라", "리세트-카라.png", 0, null, 59, 53, 72, 0, -15, 300, null, null],
|
||||
[0, "리아P리자스", null, 0, null, 92, 34, 44, 0, -15, 300, null, null],
|
||||
[0, "리즈나 란프비트", "리즈나-란프비트.png", 0, null, 75, 53, 95, 0, -15, 300, null, null],
|
||||
[0, "릭 아디슨", "릭-아디슨.png", 0, null, 78, 96, 62, 0, -15, 300, null, null],
|
||||
[0, "마도", null, 0, null, 77, 87, 58, 0, -15, 300, null, null],
|
||||
[0, "마르티나 카레", "마르티나-카레.png", 0, null, 67, 45, 56, 0, -15, 300, null, null],
|
||||
[0, "마리스", null, 0, null, 74, 58, 86, 0, -15, 300, null, null],
|
||||
[0, "마리시텐", null, 0, null, 55, 50, 40, 0, -15, 300, null, null],
|
||||
[0, "마리아 카스타드", "마리아-카스타드.png", 0, null, 68, 58, 73, 0, -15, 300, null, null],
|
||||
[0, "마사무네", null, 0, null, 87, 95, 54, 0, -15, 300, null, null],
|
||||
[0, "마사토 이주인", null, 0, null, 55, 51, 40, 0, -15, 300, null, null],
|
||||
[0, "마소우 시즈카", "마소우-시즈카.png", 0, null, 82, 54, 93, 0, -15, 300, null, null],
|
||||
[0, "마스조웨", null, 0, null, 82, 97, 60, 0, -15, 300, null, null],
|
||||
[0, "마시 줄리에타", "마시-줄리에타.png", 0, null, 30, 65, 65, 0, -15, 300, null, null],
|
||||
[0, "마에다 케이지", "마에다-케이지.png", 0, null, 66, 66, 72, 0, -15, 300, null, null],
|
||||
[0, "마에다 토시이에", "마에다-토시이에.png", 0, null, 68, 53, 67, 0, -15, 300, null, null],
|
||||
[0, "마키바노 메구", "마키바노-메구.png", 0, null, 55, 52, 40, 0, -15, 300, null, null],
|
||||
[0, "마키바노 앤트", "마키바노-앤트.png", 0, null, 55, 53, 40, 0, -15, 300, null, null],
|
||||
[0, "마틸다 마테우리", "마틸다-마테우리.png", 0, null, 66, 83, 61, 0, -15, 300, null, null],
|
||||
[0, "마하 마가렛", "마하-마가렛.png", 0, null, 65, 50, 83, 0, -15, 300, null, null],
|
||||
[0, "마호코P마사이", null, 0, null, 66, 56, 70, 0, -15, 300, null, null],
|
||||
[0, "만마루", null, 0, null, 55, 54, 40, 0, -15, 300, null, null],
|
||||
[0, "매직 더 간지", "매직-더-간지.png", 0, null, 91, 41, 94, 0, -15, 300, null, null],
|
||||
[0, "머슬", null, 0, null, 65, 82, 60, 0, -15, 300, null, null],
|
||||
[0, "메가데스 모로미", "메가데스-모로미.png", 0, null, 57, 46, 68, 0, -15, 300, null, null],
|
||||
[0, "메가스", null, 0, null, 65, 75, 57, 0, -15, 300, null, null],
|
||||
[0, "메가와스", null, 0, null, 65, 75, 57, 0, -15, 300, null, null],
|
||||
[0, "메가포스", null, 0, null, 65, 75, 57, 0, -15, 300, null, null],
|
||||
[0, "메나드 시세이", "메나드-시세이.png", 0, null, 66, 70, 56, 0, -15, 300, null, null],
|
||||
[0, "메디우사", null, 0, null, 67, 100, 75, 0, -15, 300, null, null],
|
||||
[0, "메르시 아처", "메르시-아처.png", 0, null, 33, 40, 65, 0, -15, 300, null, null],
|
||||
[0, "메리 앤", "메리-앤.png", 0, null, 55, 55, 40, 0, -15, 300, null, null],
|
||||
[0, "메림 체르", "메림-체르.png", 0, null, 49, 64, 56, 0, -15, 300, null, null],
|
||||
[0, "메이", null, 0, null, 55, 56, 40, 0, -15, 300, null, null],
|
||||
[0, "멜페이스", null, 0, null, 68, 61, 81, 0, -15, 300, null, null],
|
||||
[0, "모던 카라", "모던-카라.png", 0, null, 85, 48, 100, 0, -15, 300, null, null],
|
||||
[0, "모리 모토나리", "모리-모토나리.png", 0, null, 82, 93, 56, 0, -15, 300, null, null],
|
||||
[0, "모리 테루", "모리-테루.png", 0, null, 77, 88, 60, 0, -15, 300, null, null],
|
||||
[0, "모스크바 동장군", "모스크바-동장군.png", 0, null, 85, 73, 73, 0, -15, 300, null, null],
|
||||
[0, "모즈나", null, 0, null, 55, 57, 40, 0, -15, 300, null, null],
|
||||
[0, "모코모코", null, 0, null, 55, 58, 41, 0, -15, 300, null, null],
|
||||
[0, "무라라", null, 0, null, 60, 72, 44, 0, -15, 300, null, null],
|
||||
[0, "미 로드링", "미-로드링.png", 0, null, 73, 41, 79, 0, -15, 300, null, null],
|
||||
[0, "미네바 마가렛", "미네바-마가렛.png", 0, null, 79, 93, 63, 0, -15, 300, null, null],
|
||||
[0, "미라클 토우", "미라클-토우.png", 0, null, 59, 73, 103, 0, -15, 300, null, null],
|
||||
[0, "미르 요크스", "미르-요크스.png", 0, null, 62, 71, 49, 0, -15, 300, null, null],
|
||||
[0, "미리 요크스", "미리-요크스.png", 0, null, 63, 76, 54, 0, -15, 300, null, null],
|
||||
[0, "미스테리아 토우", "미스테리아-토우.png", 0, null, 76, 63, 93, 0, -15, 300, null, null],
|
||||
"max": 105
|
||||
},
|
||||
"iconPath": "루드라사움",
|
||||
"fiction": 0,
|
||||
"nation":[
|
||||
|
||||
],
|
||||
"map":{
|
||||
"mapName":"ludo_rathowm",
|
||||
"unitSet":"ludo_rathowm"
|
||||
},
|
||||
"diplomacy":[],
|
||||
"general":[
|
||||
[0, "바보라", null, 0, null, 102, 82, 10, 0, -15, 300, null, null],
|
||||
[0, "리아P리자스", null, 0, null, 99, 60, 82, 0, -15, 300, null, null],
|
||||
[0, "피구", null, 0, null, 96, 84, 47, 0, -15, 300, null, null],
|
||||
[0, "마사무네", null, 0, null, 95, 95, 54, 0, -15, 300, null, null],
|
||||
[0, "스 프로반스", null, 0, null, 95, 75, 75, 0, -15, 300, null, null],
|
||||
[0, "아길레다", null, 0, null, 95, 85, 50, 0, -15, 300, null, null],
|
||||
[0, "세실 카나", null, 0, null, 94, 82, 57, 0, -15, 300, null, null],
|
||||
[0, "시라 헬만", null, 0, null, 94, 47, 82, 0, -15, 300, null, null],
|
||||
[0, "패튼 미스날지", null, 0, null, 94, 85, 65, 0, -15, 300, null, null],
|
||||
[0, "바레스 프로반스", null, 0, null, 93, 78, 53, 0, -15, 300, null, null],
|
||||
[0, "이지스 카라", null, 0, null, 93, 87, 59, 0, -15, 300, null, null],
|
||||
[0, "레이라 글레크니", null, 0, null, 92, 88, 61, 0, -15, 300, null, null],
|
||||
[0, "우르자", null, 0, null, 92, 93, 60, 0, -15, 300, null, null],
|
||||
[0, "사나다 토우린", null, 0, null, 91, 47, 89, 0, -15, 300, null, null],
|
||||
[0, "카오루Q카구라", null, 0, null, 91, 82, 61, 0, -15, 300, null, null],
|
||||
[0, "크림", null, 0, null, 91, 43, 92, 0, -15, 300, null, null],
|
||||
[0, "란마루", null, 0, null, 90, 83, 59, 0, -15, 300, null, null],
|
||||
[0, "아미토스", null, 0, null, 90, 84, 55, 0, -15, 300, null, null],
|
||||
[0, "알코트 마리우스", null, 0, null, 90, 35, 93, 0, -15, 300, null, null],
|
||||
[0, "야마모토 란기", null, 0, null, 90, 85, 59, 0, -15, 300, null, null],
|
||||
[0, "이오시프", null, 0, null, 90, 54, 89, 0, -15, 300, null, null],
|
||||
[0, "지마 바카스코", null, 0, null, 90, 86, 57, 0, -15, 300, null, null],
|
||||
[0, "지크", null, 0, null, 90, 80, 80, 0, -15, 300, null, null],
|
||||
[0, "쩌둥", null, 0, null, 90, 89, 54, 0, -15, 300, null, null],
|
||||
[0, "나오에 아이", null, 0, null, 89, 57, 90, 0, -15, 300, null, null],
|
||||
[0, "이소로쿠", null, 0, null, 89, 86, 64, 0, -15, 300, null, null],
|
||||
[0, "크룩 모프스", null, 0, null, 89, 56, 95, 0, -15, 300, null, null],
|
||||
[0, "레류코프 바코프", null, 0, null, 88, 84, 60, 0, -15, 300, null, null],
|
||||
[0, "루베란 체르", null, 0, null, 88, 74, 57, 0, -15, 300, null, null],
|
||||
[0, "미르 요크스", null, 0, null, 88, 49, 79, 0, -15, 300, null, null],
|
||||
[0, "베제르아이", null, 0, null, 88, 94, 61, 0, -15, 300, null, null],
|
||||
[0, "하니킹", null, 0, null, 88, 101, 52, 0, -15, 300, null, null],
|
||||
[0, "릭 아디슨", null, 0, null, 87, 99, 62, 0, -15, 300, null, null],
|
||||
[0, "엘레노아 란", null, 0, null, 87, 78, 78, 0, -15, 300, null, null],
|
||||
[0, "우에스기 겐신", null, 0, null, 87, 97, 52, 0, -15, 300, null, null],
|
||||
[0, "이시스", null, 0, null, 87, 92, 50, 0, -15, 300, null, null],
|
||||
[0, "학자", null, 0, null, 87, 53, 86, 0, -15, 300, null, null],
|
||||
[0, "휴버트 리프톤", null, 0, null, 87, 85, 50, 0, -15, 300, null, null],
|
||||
[0, "매직 더 간지", null, 0, null, 86, 41, 99, 0, -15, 300, null, null],
|
||||
[0, "미쓰비시", null, 0, null, 86, 60, 55, 0, -15, 300, null, null],
|
||||
[0, "사치코 센터즈", null, 0, null, 86, 76, 69, 0, -15, 300, null, null],
|
||||
[0, "시마즈 요시히사", null, 0, null, 86, 85, 48, 0, -15, 300, null, null],
|
||||
[0, "시마즈 토시히사", null, 0, null, 86, 82, 55, 0, -15, 300, null, null],
|
||||
[0, "오다 코우", null, 0, null, 86, 56, 44, 0, -15, 300, null, null],
|
||||
[0, "하우렌 프로반스", null, 0, null, 86, 81, 65, 0, -15, 300, null, null],
|
||||
[0, "레이콕", null, 0, null, 85, 75, 50, 0, -15, 300, null, null],
|
||||
[0, "리즈나 란프비트", null, 0, null, 85, 61, 92, 0, -15, 300, null, null],
|
||||
[0, "모스크바 동장군", null, 0, null, 85, 73, 73, 0, -15, 300, null, null],
|
||||
[0, "슈퍼 간지", null, 0, null, 85, 50, 99, 0, -15, 300, null, null],
|
||||
[0, "시바타 가츠이에", null, 0, null, 85, 79, 45, 0, -15, 300, null, null],
|
||||
[0, "엑스 반케트", null, 0, null, 85, 79, 52, 0, -15, 300, null, null],
|
||||
[0, "오로라", null, 0, null, 85, 82, 61, 0, -15, 300, null, null],
|
||||
[0, "우스피라 신토", null, 0, null, 85, 51, 97, 0, -15, 300, null, null],
|
||||
[0, "쵸쵸맨 파브리", null, 0, null, 85, 18, 70, 0, -15, 300, null, null],
|
||||
[0, "칠디 샤프", null, 0, null, 85, 93, 62, 0, -15, 300, null, null],
|
||||
[0, "카바한", null, 0, null, 85, 45, 98, 0, -15, 300, null, null],
|
||||
[0, "코바야카와 치누", null, 0, null, 85, 89, 42, 0, -15, 300, null, null],
|
||||
[0, "도시바", null, 0, null, 84, 32, 59, 0, -15, 300, null, null],
|
||||
[0, "란스", null, 0, null, 84, 104, 51, 0, -15, 300, null, null],
|
||||
[0, "르메이", null, 0, null, 84, 95, 54, 0, -15, 300, null, null],
|
||||
[0, "마리아 카스타드", null, 0, null, 84, 71, 89, 0, -15, 300, null, null],
|
||||
[0, "미쓰이", null, 0, null, 84, 60, 31, 0, -15, 300, null, null],
|
||||
[0, "미캉", null, 0, null, 51, 52, 64, 0, -15, 300, null, null],
|
||||
[0, "미킬 데파 라질", "미킬-데파-라질.png", 0, null, 55, 58, 40, 0, -15, 300, null, null],
|
||||
[0, "밀리 링클", "밀리-링클.png", 0, null, 49, 62, 56, 0, -15, 300, null, null],
|
||||
[0, "바레스 프로반스", "바레스-프로반스.png", 0, null, 77, 81, 53, 0, -15, 300, null, null],
|
||||
[0, "바바 쇼우엔", "바바-쇼우엔.png", 0, null, 77, 79, 59, 0, -15, 300, null, null],
|
||||
[0, "바바라", null, 0, null, 77, 58, 87, 0, -15, 300, null, null],
|
||||
[0, "바보라", null, 0, null, 71, 99, 70, 0, -15, 300, null, null],
|
||||
[0, "바쇼 마티오", "바쇼-마티오.png", 0, null, 55, 59, 50, 0, -15, 300, null, null],
|
||||
[0, "바운드 레스", null, 0, null, 45, 50, 50, 0, -15, 300, null, null],
|
||||
[0, "반 데로스", null, 0, null, 15, 49, 66, 0, -15, 300, null, null],
|
||||
[0, "배팅 센터즈", "배팅-센터즈.png", 0, null, 73, 81, 59, 0, -15, 300, null, null],
|
||||
[0, "버나드 세라미테", "버나드-세라미테.png", 0, null, 61, 65, 65, 0, -15, 300, null, null],
|
||||
[0, "버드 리스피", "버드-리스피.png", 0, null, 56, 62, 58, 0, -15, 300, null, null],
|
||||
[0, "베제르아이", null, 0, null, 82, 93, 55, 0, -15, 300, null, null],
|
||||
[0, "베키", null, 0, null, 15, 49, 66, 0, -15, 300, null, null],
|
||||
[0, "벨", null, 0, null, 15, 49, 66, 0, -15, 300, null, null],
|
||||
[0, "보두", null, 0, null, 62, 67, 50, 0, -15, 300, null, null],
|
||||
[0, "보브자 프란다스", null, 0, null, 41, 60, 22, 0, -15, 300, null, null],
|
||||
[0, "복수짱", null, 0, null, 65, 80, 56, 0, -15, 300, null, null],
|
||||
[0, "브란브라", null, 0, null, 69, 65, 52, 0, -15, 300, null, null],
|
||||
[0, "브리티쉬", null, 0, null, 74, 93, 65, 0, -15, 300, null, null],
|
||||
[0, "블랙 로터스", "블랙-로터스.png", 0, null, 28, 55, 72, 0, -15, 300, null, null],
|
||||
[0, "블레이저", null, 0, null, 15, 49, 66, 0, -15, 300, null, null],
|
||||
[0, "블루 오니", null, 0, null, 15, 49, 66, 0, -15, 300, null, null],
|
||||
[0, "비비드 카라", "비비드-카라.png", 0, null, 87, 47, 100, 0, -15, 300, null, null],
|
||||
[0, "비스케타 벨룬즈", "비스케타-벨룬즈.png", 0, null, 15, 75, 72, 0, -15, 300, null, null],
|
||||
[0, "비욘호우 오스만", "비욘호우-오스만.png", 0, null, 30, 69, 65, 0, -15, 300, null, null],
|
||||
[0, "빈탄 데스트라", null, 0, null, 36, 60, 21, 0, -15, 300, null, null],
|
||||
[0, "빗치 고르치", null, 0, null, 15, 49, 66, 0, -15, 300, null, null],
|
||||
[0, "사나다 토우린", "사나다-토우린.png", 0, null, 89, 47, 82, 0, -15, 300, null, null],
|
||||
[0, "사나키아", null, 0, null, 15, 60, 45, 0, -15, 300, null, null],
|
||||
[0, "사메잔", null, 0, null, 77, 56, 89, 0, -15, 300, null, null],
|
||||
[0, "사야 프라이디", "사야-프라이디.png", 0, null, 34, 67, 67, 0, -15, 300, null, null],
|
||||
[0, "사유", null, 0, null, 15, 49, 66, 0, -15, 300, null, null],
|
||||
[0, "사이아스 크라운", "사이아스-크라운.png", 0, null, 76, 54, 80, 0, -15, 300, null, null],
|
||||
[0, "사치코 센터즈", "사치코-센터즈.png", 0, null, 69, 74, 64, 0, -15, 300, null, null],
|
||||
[0, "사카나쿠 텐카", null, 0, null, 43, 28, 60, 0, -15, 300, null, null],
|
||||
[0, "사카모토 료마", "사카모토-료마.png", 0, null, 76, 80, 54, 0, -15, 300, null, null],
|
||||
[0, "사카이 타다츠구", "사카이-타다츠구.png", 0, null, 67, 68, 53, 0, -15, 300, null, null],
|
||||
[0, "사카키바라", null, 0, null, 67, 53, 68, 0, -15, 300, null, null],
|
||||
[0, "사쿠라 카라", "사쿠라-카라.png", 0, null, 71, 73, 73, 0, -15, 300, null, null],
|
||||
[0, "사테라", null, 0, null, 77, 81, 81, 0, -15, 300, null, null],
|
||||
[0, "사파이어", null, 0, null, 83, 88, 56, 0, -15, 300, null, null],
|
||||
[0, "산카쿠", null, 0, null, 15, 49, 66, 0, -15, 300, null, null],
|
||||
[0, "삼손 막시모프", "삼손-막시모프.png", 0, null, 15, 65, 60, 0, -15, 300, null, null],
|
||||
[0, "샤론", null, 0, null, 72, 75, 75, 0, -15, 300, null, null],
|
||||
[0, "샤리에라", null, 0, null, 32, 58, 70, 0, -15, 300, null, null],
|
||||
[0, "세라크로라스", null, 0, null, 75, 4, 80, 0, -15, 300, null, null],
|
||||
[0, "세스나 벤빌", "세스나-벤빌.png", 0, null, 59, 70, 54, 0, -15, 300, null, null],
|
||||
[0, "세실 카나", "세실-카나.png", 0, null, 74, 80, 57, 0, -15, 300, null, null],
|
||||
[0, "세이간", null, 0, null, 78, 48, 77, 0, -15, 300, null, null],
|
||||
[0, "세이조 모치키요", null, 0, null, 42, 27, 60, 0, -15, 300, null, null],
|
||||
[0, "세일러", null, 0, null, 15, 49, 66, 0, -15, 300, null, null],
|
||||
[0, "세키토리", null, 0, null, 15, 49, 66, 0, -15, 300, null, null],
|
||||
[0, "세티나 파보", "세티나-파보.png", 0, null, 15, 49, 66, 0, -15, 300, null, null],
|
||||
[0, "세피아 랜드스타", "세피아-랜드스타.png", 0, null, 15, 49, 66, 0, -15, 300, null, null],
|
||||
[0, "셀 카치골프", "셀-카치골프.png", 0, null, 45, 20, 60, 0, -15, 300, null, null],
|
||||
[0, "소르니아 벤츠", "소르니아-벤츠.png", 0, null, 43, 21, 60, 0, -15, 300, null, null],
|
||||
[0, "소울 레스", null, 0, null, 42, 22, 60, 0, -15, 300, null, null],
|
||||
[0, "소환짱", null, 0, null, 41, 23, 61, 0, -15, 300, null, null],
|
||||
[0, "솔트안", null, 0, null, 64, 64, 68, 0, -15, 300, null, null],
|
||||
[0, "슈퍼 간지", "슈퍼-간지.png", 0, null, 93, 41, 99, 0, -15, 300, null, null],
|
||||
[0, "스 프로반스", "스-프로반스.png", 0, null, 67, 56, 69, 0, -15, 300, null, null],
|
||||
[0, "스바 고야", null, 0, null, 46, 31, 60, 0, -15, 300, null, null],
|
||||
[0, "스즈메", null, 0, null, 70, 85, 75, 0, -15, 300, null, null],
|
||||
[0, "스즈야 무쌍", "스즈야-무쌍.png", 0, null, 51, 79, 79, 0, -15, 300, null, null],
|
||||
[0, "스즈키", null, 0, null, 40, 24, 61, 0, -15, 300, null, null],
|
||||
[0, "스테셀 로마노프", "스테셀-로마노프.png", 0, null, 33, 63, 67, 0, -15, 300, null, null],
|
||||
[0, "스트로가노프", null, 0, null, 28, 82, 45, 0, -15, 300, null, null],
|
||||
[0, "스티브 올란다", null, 0, null, 45, 30, 60, 0, -15, 300, null, null],
|
||||
[0, "스파르탄", null, 0, null, 34, 25, 61, 0, -15, 300, null, null],
|
||||
[0, "시게히코", null, 0, null, 75, 75, 30, 0, -15, 300, null, null],
|
||||
[0, "시노다 겐고로", "시노다-겐고로.png", 0, null, 78, 56, 88, 0, -15, 300, null, null],
|
||||
[0, "시노부", null, 0, null, 48, 74, 74, 0, -15, 300, null, null],
|
||||
[0, "시라 헬만", "시라-헬만.png", 0, null, 94, 47, 83, 0, -15, 300, null, null],
|
||||
[0, "시르바렐", null, 0, null, 33, 26, 62, 0, -15, 300, null, null],
|
||||
[0, "시마즈 요시히사", "시마즈-요시히사.png", 0, null, 86, 83, 48, 0, -15, 300, null, null],
|
||||
[0, "시마즈 이에히사", "시마즈-이에히사.png", 0, null, 82, 74, 61, 0, -15, 300, null, null],
|
||||
[0, "시마즈 카즈히사", "시마즈-카즈히사.png", 0, null, 80, 81, 56, 0, -15, 300, null, null],
|
||||
[0, "시마즈 토시히사", "시마즈-토시히사.png", 0, null, 86, 48, 83, 0, -15, 300, null, null],
|
||||
[0, "시바타 가츠이에", "시바타-가츠이에.png", 0, null, 75, 76, 45, 0, -15, 300, null, null],
|
||||
[0, "시저", null, 0, null, 76, 98, 63, 0, -15, 300, null, null],
|
||||
[0, "시치세이", null, 0, null, 75, 62, 84, 0, -15, 300, null, null],
|
||||
[0, "시카쿠", null, 0, null, 32, 27, 62, 0, -15, 300, null, null],
|
||||
[0, "암즈 아크", null, 0, null, 84, 98, 57, 0, -15, 300, null, null],
|
||||
[0, "야마다 치즈코", null, 0, null, 84, 42, 93, 0, -15, 300, null, null],
|
||||
[0, "코판돈 도트", null, 0, null, 84, 46, 62, 0, -15, 300, null, null],
|
||||
[0, "피텐 차오", null, 0, null, 84, 94, 57, 0, -15, 300, null, null],
|
||||
[0, "히타치", null, 0, null, 84, 57, 60, 0, -15, 300, null, null],
|
||||
[0, "가넷", null, 0, null, 83, 50, 97, 0, -15, 300, null, null],
|
||||
[0, "나기 스 라갈", null, 0, null, 83, 50, 99, 0, -15, 300, null, null],
|
||||
[0, "느와르", null, 0, null, 83, 97, 63, 0, -15, 300, null, null],
|
||||
[0, "니들", null, 0, null, 83, 76, 54, 0, -15, 300, null, null],
|
||||
[0, "로렉스 가드라스", null, 0, null, 83, 95, 55, 0, -15, 300, null, null],
|
||||
[0, "마리스", null, 0, null, 83, 65, 98, 0, -15, 300, null, null],
|
||||
[0, "이에야스", null, 0, null, 83, 95, 53, 0, -15, 300, null, null],
|
||||
[0, "카페 아트풀", null, 0, null, 83, 51, 97, 0, -15, 300, null, null],
|
||||
[0, "쿠로베", null, 0, null, 83, 92, 53, 0, -15, 300, null, null],
|
||||
[0, "토파즈", null, 0, null, 83, 40, 97, 0, -15, 300, null, null],
|
||||
[0, "피사로", null, 0, null, 83, 54, 95, 0, -15, 300, null, null],
|
||||
[0, "화염서사", null, 0, null, 83, 50, 93, 0, -15, 300, null, null],
|
||||
[0, "난죠 란", null, 0, null, 82, 49, 92, 0, -15, 300, null, null],
|
||||
[0, "노기쿠", null, 0, null, 82, 73, 73, 0, -15, 300, null, null],
|
||||
[0, "니코페리", null, 0, null, 82, 52, 97, 0, -15, 300, null, null],
|
||||
[0, "모리 테루", null, 0, null, 82, 95, 30, 0, -15, 300, null, null],
|
||||
[0, "사이아스 크라운", null, 0, null, 82, 54, 90, 0, -15, 300, null, null],
|
||||
[0, "사테라", null, 0, null, 82, 84, 84, 0, -15, 300, null, null],
|
||||
[0, "시마즈 이에히사", null, 0, null, 82, 50, 85, 0, -15, 300, null, null],
|
||||
[0, "유즈하라 유즈미", null, 0, null, 82, 94, 54, 0, -15, 300, null, null],
|
||||
[0, "테라", null, 0, null, 82, 20, 63, 0, -15, 300, null, null],
|
||||
[0, "토마 리프톤", null, 0, null, 82, 99, 51, 0, -15, 300, null, null],
|
||||
[0, "PG 7", null, 0, null, 81, 94, 60, 0, -15, 300, null, null],
|
||||
[0, "PG 9", null, 0, null, 81, 60, 94, 0, -15, 300, null, null],
|
||||
[0, "나토리", null, 0, null, 81, 50, 93, 0, -15, 300, null, null],
|
||||
[0, "마소우 시즈카", null, 0, null, 81, 42, 100, 0, -15, 300, null, null],
|
||||
[0, "멜페이스", null, 0, null, 81, 42, 94, 0, -15, 300, null, null],
|
||||
[0, "스즈메", null, 0, null, 81, 92, 57, 0, -15, 300, null, null],
|
||||
[0, "아레프갈드", null, 0, null, 81, 64, 95, 0, -15, 300, null, null],
|
||||
[0, "유키", null, 0, null, 81, 61, 96, 0, -15, 300, null, null],
|
||||
[0, "이누카이", null, 0, null, 81, 89, 55, 0, -15, 300, null, null],
|
||||
[0, "카츄사 봇슈", null, 0, null, 81, 89, 65, 0, -15, 300, null, null],
|
||||
[0, "타마구시 후카", null, 0, null, 81, 60, 93, 0, -15, 300, null, null],
|
||||
[0, "토쿠가와 센", null, 0, null, 81, 97, 58, 0, -15, 300, null, null],
|
||||
[0, "하우세스너스", null, 0, null, 81, 37, 98, 0, -15, 300, null, null],
|
||||
[0, "마스조웨", null, 0, null, 80, 98, 51, 0, -15, 300, null, null],
|
||||
[0, "메나드 시세이", null, 0, null, 80, 75, 56, 0, -15, 300, null, null],
|
||||
[0, "미네바 마가렛", null, 0, null, 80, 95, 61, 0, -15, 300, null, null],
|
||||
[0, "브리티쉬", null, 0, null, 80, 94, 65, 0, -15, 300, null, null],
|
||||
[0, "비비드 카라", null, 0, null, 80, 47, 100, 0, -15, 300, null, null],
|
||||
[0, "셀 카치골프", null, 0, null, 80, 20, 80, 0, -15, 300, null, null],
|
||||
[0, "시마즈 카즈히사", null, 0, null, 80, 81, 56, 0, -15, 300, null, null],
|
||||
[0, "시키부", null, 0, null, 80, 86, 58, 0, -15, 300, null, null],
|
||||
[0, "시타크 루소", null, 0, null, 44, 29, 60, 0, -15, 300, null, null],
|
||||
[0, "신시아", null, 0, null, 43, 28, 62, 0, -15, 300, null, null],
|
||||
[0, "실 플라인", "실-플라인.png", 0, null, 70, 63, 101, 0, -15, 300, null, null],
|
||||
[0, "실키 리틀레즌", "실키-리틀레즌.png", 0, null, 82, 108, 53, 0, -15, 300, null, null],
|
||||
[0, "실피드", null, 0, null, 41, 29, 63, 0, -15, 300, null, null],
|
||||
[0, "아길레다", null, 0, null, 72, 81, 50, 0, -15, 300, null, null],
|
||||
[0, "아나셀 카스포라", "아나셀-카스포라.png", 0, null, 28, 66, 67, 0, -15, 300, null, null],
|
||||
[0, "아니", null, 0, null, 40, 30, 63, 0, -15, 300, null, null],
|
||||
[0, "아니스 사와타리", "아니스-사와타리.png", 0, null, 73, 61, 106, 0, -15, 300, null, null],
|
||||
[0, "아레프갈드", null, 0, null, 76, 64, 95, 0, -15, 300, null, null],
|
||||
[0, "아르카리아", null, 0, null, 68, 72, 72, 0, -15, 300, null, null],
|
||||
[0, "아리스토레스 캄", "아리스토레스-캄.png", 0, null, 76, 73, 53, 0, -15, 300, null, null],
|
||||
[0, "아리시아", null, 0, null, 41, 31, 63, 0, -15, 300, null, null],
|
||||
[0, "아리오스 테오만", "아리오스-테오만.png", 0, null, 83, 104, 51, 0, -15, 300, null, null],
|
||||
[0, "아마즈사", null, 0, null, 34, 32, 64, 0, -15, 300, null, null],
|
||||
[0, "아미란 바코프", "아미란-바코프.png", 0, null, 33, 33, 64, 0, -15, 300, null, null],
|
||||
[0, "아미토스", null, 0, null, 84, 75, 55, 0, -15, 300, null, null],
|
||||
[0, "아바토르 스캇트", null, 0, null, 40, 60, 20, 0, -15, 300, null, null],
|
||||
[0, "아베 헤이조", null, 0, null, 32, 34, 64, 0, -15, 300, null, null],
|
||||
[0, "아벨트 세프티", "아벨트-세프티.png", 0, null, 74, 98, 68, 0, -15, 300, null, null],
|
||||
[0, "아부라코 도우산", "아부라코-도우산.png", 0, null, 68, 71, 48, 0, -15, 300, null, null],
|
||||
[0, "아사히나 하쿠만", null, 0, null, 49, 20, 40, 0, -15, 300, null, null],
|
||||
[0, "아스베스트", null, 0, null, 65, 70, 52, 0, -15, 300, null, null],
|
||||
[0, "아스카 카드뮴", "아스카-카드뮴.png", 0, null, 55, 50, 54, 0, -15, 300, null, null],
|
||||
[0, "아시 줄리에타", "아시-줄리에타.png", 0, null, 33, 66, 60, 0, -15, 300, null, null],
|
||||
[0, "아시카가 쵸신", "아시카가-쵸신.png", 0, null, 61, 44, 50, 0, -15, 300, null, null],
|
||||
[0, "아야 후지노미야", "아야-후지노미야.png", 0, null, 48, 20, 41, 0, -15, 300, null, null],
|
||||
[0, "아오이", null, 0, null, 45, 62, 48, 0, -15, 300, null, null],
|
||||
[0, "아이 컴", "아이-컴.png", 0, null, 34, 61, 60, 0, -15, 300, null, null],
|
||||
[0, "아이작", null, 0, null, 47, 60, 32, 0, -15, 300, null, null],
|
||||
[0, "아이젤", null, 0, null, 76, 59, 107, 0, -15, 300, null, null],
|
||||
[0, "아치볼트", null, 0, null, 47, 20, 42, 0, -15, 300, null, null],
|
||||
[0, "아카시 카제마루", "아카시-카제마루.png", 0, null, 75, 68, 37, 0, -15, 300, null, null],
|
||||
[0, "아카시로 카라", "아카시로-카라.png", 0, null, 65, 52, 70, 0, -15, 300, null, null],
|
||||
[0, "아케치 미츠히데", "아케치-미츠히데.png", 0, null, 71, 41, 67, 0, -15, 300, null, null],
|
||||
[0, "아키 델", "아키-델.png", 0, null, 46, 20, 43, 0, -15, 300, null, null],
|
||||
[0, "아키히메", null, 0, null, 33, 66, 60, 0, -15, 300, null, null],
|
||||
[0, "아타고 마카트", "아타고-마카트.png", 0, null, 45, 20, 44, 0, -15, 300, null, null],
|
||||
[0, "아테나1호", null, 0, null, 44, 20, 45, 0, -15, 300, null, null],
|
||||
[0, "아테나2호", null, 0, null, 69, 70, 70, 0, -15, 300, null, null],
|
||||
[0, "아텐 누", "아텐-누.png", 0, null, 59, 55, 82, 0, -15, 300, null, null],
|
||||
[0, "아틀란타", null, 0, null, 80, 90, 58, 0, -15, 300, null, null],
|
||||
[0, "주노", null, 0, null, 80, 58, 90, 0, -15, 300, null, null],
|
||||
[0, "쿠로히메", null, 0, null, 80, 40, 92, 0, -15, 300, null, null],
|
||||
[0, "파스텔 카라", null, 0, null, 80, 46, 101, 0, -15, 300, null, null],
|
||||
[0, "파파이아 서버", null, 0, null, 80, 55, 98, 0, -15, 300, null, null],
|
||||
[0, "페리스", null, 0, null, 80, 54, 96, 0, -15, 300, null, null],
|
||||
[0, "프레이아 이즌", null, 0, null, 80, 86, 50, 0, -15, 300, null, null],
|
||||
[0, "기가이", null, 0, null, 79, 100, 56, 0, -15, 300, null, null],
|
||||
[0, "모던 카라", null, 0, null, 79, 48, 100, 0, -15, 300, null, null],
|
||||
[0, "미 로드링", null, 0, null, 79, 41, 82, 0, -15, 300, null, null],
|
||||
[0, "실키 리틀레즌", null, 0, null, 79, 102, 60, 0, -15, 300, null, null],
|
||||
[0, "아이젤", null, 0, null, 79, 51, 100, 0, -15, 300, null, null],
|
||||
[0, "오가와 켄타로", null, 0, null, 79, 96, 63, 0, -15, 300, null, null],
|
||||
[0, "오마치", null, 0, null, 79, 55, 102, 0, -15, 300, null, null],
|
||||
[0, "와그 아카", null, 0, null, 79, 47, 103, 0, -15, 300, null, null],
|
||||
[0, "케셀링크", null, 0, null, 79, 103, 65, 0, -15, 300, null, null],
|
||||
[0, "타르고", null, 0, null, 79, 90, 56, 0, -15, 300, null, null],
|
||||
[0, "세이간", null, 0, null, 78, 48, 92, 0, -15, 300, null, null],
|
||||
[0, "시노다 겐고로", null, 0, null, 78, 56, 88, 0, -15, 300, null, null],
|
||||
[0, "아벨트 세프티", null, 0, null, 78, 100, 61, 0, -15, 300, null, null],
|
||||
[0, "알렉스 발스", null, 0, null, 78, 45, 94, 0, -15, 300, null, null],
|
||||
[0, "오즈 토터스", null, 0, null, 78, 31, 66, 0, -15, 300, null, null],
|
||||
[0, "이오 이슈타르", null, 0, null, 78, 38, 74, 0, -15, 300, null, null],
|
||||
[0, "케이브리스", null, 0, null, 78, 105, 62, 0, -15, 300, null, null],
|
||||
[0, "포론 차오", null, 0, null, 78, 73, 63, 0, -15, 300, null, null],
|
||||
[0, "히카리 미 블랑", null, 0, null, 78, 70, 78, 0, -15, 300, null, null],
|
||||
[0, "라 사이젤", null, 0, null, 77, 101, 55, 0, -15, 300, null, null],
|
||||
[0, "라 하우젤", null, 0, null, 77, 101, 55, 0, -15, 300, null, null],
|
||||
[0, "마도", null, 0, null, 77, 87, 58, 0, -15, 300, null, null],
|
||||
[0, "바바 쇼우엔", null, 0, null, 77, 79, 59, 0, -15, 300, null, null],
|
||||
[0, "바바라", null, 0, null, 77, 58, 87, 0, -15, 300, null, null],
|
||||
[0, "사메잔", null, 0, null, 77, 56, 89, 0, -15, 300, null, null],
|
||||
[0, "실 플라인", null, 0, null, 77, 56, 102, 0, -15, 300, null, null],
|
||||
[0, "암 이스엘", null, 0, null, 77, 47, 104, 0, -15, 300, null, null],
|
||||
[0, "야마가타", null, 0, null, 77, 61, 77, 0, -15, 300, null, null],
|
||||
[0, "요시카게", null, 0, null, 77, 33, 61, 0, -15, 300, null, null],
|
||||
[0, "케이코쿠", null, 0, null, 77, 54, 101, 0, -15, 300, null, null],
|
||||
[0, "라우네아", null, 0, null, 76, 91, 61, 0, -15, 300, null, null],
|
||||
[0, "라인코크", null, 0, null, 76, 50, 97, 0, -15, 300, null, null],
|
||||
[0, "레드아이", null, 0, null, 76, 86, 86, 0, -15, 300, null, null],
|
||||
[0, "레이", null, 0, null, 76, 105, 50, 0, -15, 300, null, null],
|
||||
[0, "미라클 토우", null, 0, null, 76, 35, 103, 0, -15, 300, null, null],
|
||||
[0, "미스테리아 토우", null, 0, null, 76, 57, 99, 0, -15, 300, null, null],
|
||||
[0, "세라크로라스", null, 0, null, 76, 40, 101, 0, -15, 300, null, null],
|
||||
[0, "아리스토레스 캄", null, 0, null, 76, 73, 53, 0, -15, 300, null, null],
|
||||
[0, "아텐 누", null, 0, null, 76, 55, 96, 0, -15, 300, null, null],
|
||||
[0, "알카네제 라이즈", null, 0, null, 76, 94, 30, 0, -15, 300, null, null],
|
||||
[0, "오다 노부나가", null, 0, null, 76, 97, 67, 0, -15, 300, null, null],
|
||||
[0, "유란 미라쥬", null, 0, null, 76, 84, 45, 0, -15, 300, null, null],
|
||||
[0, "자비에르", null, 0, null, 76, 100, 57, 0, -15, 300, null, null],
|
||||
[0, "쟈하룻카스", null, 0, null, 76, 94, 64, 0, -15, 300, null, null],
|
||||
[0, "코르도바 반", null, 0, null, 76, 79, 59, 0, -15, 300, null, null],
|
||||
[0, "가르티아", null, 0, null, 75, 103, 48, 0, -15, 300, null, null],
|
||||
[0, "겟코", null, 0, null, 75, 93, 58, 0, -15, 300, null, null],
|
||||
[0, "다니엘 세프티", null, 0, null, 75, 78, 60, 0, -15, 300, null, null],
|
||||
[0, "메디우사", null, 0, null, 75, 101, 60, 0, -15, 300, null, null],
|
||||
[0, "시게히코", null, 0, null, 75, 75, 30, 0, -15, 300, null, null],
|
||||
[0, "시치세이", null, 0, null, 75, 62, 84, 0, -15, 300, null, null],
|
||||
[0, "아카시 카제마루", null, 0, null, 75, 68, 37, 0, -15, 300, null, null],
|
||||
[0, "웬리나", null, 0, null, 75, 3, 80, 0, -15, 300, null, null],
|
||||
[0, "코마츠", null, 0, null, 75, 73, 52, 0, -15, 300, null, null],
|
||||
[0, "프리크 파라핀", null, 0, null, 75, 42, 97, 0, -15, 300, null, null],
|
||||
[0, "넬슨 서버", null, 0, null, 74, 60, 50, 0, -15, 300, null, null],
|
||||
[0, "노스", null, 0, null, 74, 103, 62, 0, -15, 300, null, null],
|
||||
[0, "모리 모토나리", null, 0, null, 74, 95, 40, 0, -15, 300, null, null],
|
||||
[0, "사파이어", null, 0, null, 74, 46, 98, 0, -15, 300, null, null],
|
||||
[0, "야마나카 코지카", null, 0, null, 74, 35, 73, 0, -15, 300, null, null],
|
||||
[0, "카미라", null, 0, null, 74, 58, 104, 0, -15, 300, null, null],
|
||||
[0, "케이코", null, 0, null, 74, 58, 99, 0, -15, 300, null, null],
|
||||
[0, "호넷", null, 0, null, 74, 60, 105, 0, -15, 300, null, null],
|
||||
[0, "네카이 시스", null, 0, null, 73, 69, 38, 0, -15, 300, null, null],
|
||||
[0, "배팅 센터즈", null, 0, null, 73, 81, 59, 0, -15, 300, null, null],
|
||||
[0, "에르시르", null, 0, null, 73, 74, 74, 0, -15, 300, null, null],
|
||||
[0, "카나요", null, 0, null, 73, 74, 74, 0, -15, 300, null, null],
|
||||
[0, "풀 카라", null, 0, null, 73, 51, 104, 0, -15, 300, null, null],
|
||||
[0, "하라 쇼우지", null, 0, null, 73, 63, 50, 0, -15, 300, null, null],
|
||||
[0, "한티 카라", null, 0, null, 73, 53, 104, 0, -15, 300, null, null],
|
||||
[0, "겐리", null, 0, null, 72, 55, 72, 0, -15, 300, null, null],
|
||||
[0, "노아 하코부네", null, 0, null, 72, 57, 82, 0, -15, 300, null, null],
|
||||
[0, "렌고쿠", null, 0, null, 72, 87, 57, 0, -15, 300, null, null],
|
||||
[0, "사카모토 료마", null, 0, null, 72, 90, 54, 0, -15, 300, null, null],
|
||||
[0, "샤론", null, 0, null, 72, 75, 75, 0, -15, 300, null, null],
|
||||
[0, "아니스 사와타리", null, 0, null, 72, 49, 105, 0, -15, 300, null, null],
|
||||
[0, "잔 사비스", null, 0, null, 72, 75, 38, 0, -15, 300, null, null],
|
||||
[0, "챠카 카드뮴", null, 0, null, 72, 49, 90, 0, -15, 300, null, null],
|
||||
[0, "카스미K카스미", null, 0, null, 72, 73, 72, 0, -15, 300, null, null],
|
||||
[0, "가와노에 유즈루", null, 0, null, 71, 76, 61, 0, -15, 300, null, null],
|
||||
[0, "곤", null, 0, null, 71, 87, 41, 0, -15, 300, null, null],
|
||||
[0, "리림", null, 0, null, 71, 71, 71, 0, -15, 300, null, null],
|
||||
[0, "사쿠라 카라", null, 0, null, 71, 73, 73, 0, -15, 300, null, null],
|
||||
[0, "아케치 미츠히데", null, 0, null, 71, 41, 67, 0, -15, 300, null, null],
|
||||
[0, "오리메", null, 0, null, 71, 63, 83, 0, -15, 300, null, null],
|
||||
[0, "우에스기 카츠코", null, 0, null, 71, 71, 53, 0, -15, 300, null, null],
|
||||
[0, "우에스기 토라코", null, 0, null, 71, 53, 71, 0, -15, 300, null, null],
|
||||
[0, "카이트", null, 0, null, 71, 102, 62, 0, -15, 300, null, null],
|
||||
[0, "파레로아", null, 0, null, 71, 74, 74, 0, -15, 300, null, null],
|
||||
[0, "핫킨 다산", null, 0, null, 71, 73, 60, 0, -15, 300, null, null],
|
||||
[0, "다크란스", null, 0, null, 70, 99, 50, 0, -15, 300, null, null],
|
||||
[0, "래시", null, 0, null, 70, 83, 19, 0, -15, 300, null, null],
|
||||
[0, "아리오스 테오만", null, 0, null, 70, 102, 51, 0, -15, 300, null, null],
|
||||
[0, "체네자리 드라갈", null, 0, null, 70, 55, 81, 0, -15, 300, null, null],
|
||||
[0, "호죠 소운", null, 0, null, 70, 62, 94, 0, -15, 300, null, null],
|
||||
[0, "히바치", null, 0, null, 70, 90, 60, 0, -15, 300, null, null],
|
||||
[0, "마틸다 마테우리", null, 0, null, 69, 92, 53, 0, -15, 300, null, null],
|
||||
[0, "브란브라", null, 0, null, 69, 65, 52, 0, -15, 300, null, null],
|
||||
[0, "세스나 벤빌", null, 0, null, 69, 91, 30, 0, -15, 300, null, null],
|
||||
[0, "아테나2호", null, 0, null, 69, 81, 81, 0, -15, 300, null, null],
|
||||
[0, "우에스기 겐세이", null, 0, null, 69, 59, 39, 0, -15, 300, null, null],
|
||||
[0, "카마 아트랜저", null, 0, null, 69, 54, 54, 0, -15, 300, null, null],
|
||||
[0, "카파라 우치", null, 0, null, 69, 47, 65, 0, -15, 300, null, null],
|
||||
[0, "칼 오지잔", null, 0, null, 69, 74, 53, 0, -15, 300, null, null],
|
||||
[0, "검호", null, 0, null, 68, 80, 54, 0, -15, 300, null, null],
|
||||
[0, "렉싱턴", null, 0, null, 68, 104, 20, 0, -15, 300, null, null],
|
||||
[0, "마에다 토시이에", null, 0, null, 68, 53, 67, 0, -15, 300, null, null],
|
||||
[0, "마호코P마사이", null, 0, null, 68, 56, 85, 0, -15, 300, null, null],
|
||||
[0, "복수짱", null, 0, null, 68, 87, 56, 0, -15, 300, null, null],
|
||||
[0, "아르카리아", null, 0, null, 68, 72, 72, 0, -15, 300, null, null],
|
||||
[0, "아스카 카드뮴", null, 0, null, 68, 40, 99, 0, -15, 300, null, null],
|
||||
[0, "아파치", null, 0, null, 68, 78, 57, 0, -15, 300, null, null],
|
||||
[0, "알렉산더", null, 0, null, 68, 67, 55, 0, -15, 300, null, null],
|
||||
[0, "알렉스 발스", "알렉스-발스.png", 0, null, 81, 45, 90, 0, -15, 300, null, null],
|
||||
[0, "알카네제 라이즈", "알카네제-라이즈.png", 0, null, 74, 86, 56, 0, -15, 300, null, null],
|
||||
[0, "알코트 마리우스", "알코트-마리우스.png", 0, null, 85, 46, 89, 0, -15, 300, null, null],
|
||||
[0, "알토 한브라", null, 0, null, 43, 20, 46, 0, -15, 300, null, null],
|
||||
[0, "암 이스엘", "암-이스엘.png", 0, null, 72, 61, 105, 0, -15, 300, null, null],
|
||||
[0, "암즈 아크", "암즈-아크.png", 0, null, 72, 94, 64, 0, -15, 300, null, null],
|
||||
[0, "야마가타", null, 0, null, 77, 61, 77, 0, -15, 300, null, null],
|
||||
[0, "야마나카 코지카", "야마나카-코지카.png", 0, null, 74, 35, 73, 0, -15, 300, null, null],
|
||||
[0, "야마다", null, 0, null, 42, 20, 47, 0, -15, 300, null, null],
|
||||
[0, "야마다 치즈코", "야마다-치즈코.png", 0, null, 80, 42, 85, 0, -15, 300, null, null],
|
||||
[0, "야마모토 란기", "야마모토-란기.png", 0, null, 71, 76, 59, 0, -15, 300, null, null],
|
||||
[0, "에구치", null, 0, null, 41, 20, 48, 0, -15, 300, null, null],
|
||||
[0, "에로피챠 냥코", "에로피챠-냥코.png", 0, null, 40, 20, 49, 0, -15, 300, null, null],
|
||||
[0, "에르무 트라이", "에르무-트라이.png", 0, null, 43, 20, 50, 0, -15, 300, null, null],
|
||||
[0, "에르시르", null, 0, null, 73, 74, 74, 0, -15, 300, null, null],
|
||||
[0, "에리느 해피네스", null, 0, null, 42, 20, 51, 0, -15, 300, null, null],
|
||||
[0, "에미 알폰느", "에미-알폰느.png", 0, null, 68, 52, 61, 0, -15, 300, null, null],
|
||||
[0, "엑스 반케트", "엑스-반케트.png", 0, null, 85, 79, 52, 0, -15, 300, null, null],
|
||||
[0, "엘레나 엘알", "엘레나-엘알.png", 0, null, 37, 20, 52, 0, -15, 300, null, null],
|
||||
[0, "엘레나 플라워", "엘레나-플라워.png", 0, null, 50, 78, 30, 0, -15, 300, null, null],
|
||||
[0, "엘레노아 란", "엘레노아-란.png", 0, null, 69, 50, 76, 0, -15, 300, null, null],
|
||||
[0, "엘리자베스 데스", "엘리자베스-데스.png", 0, null, 33, 64, 66, 0, -15, 300, null, null],
|
||||
[0, "엣찌", null, 0, null, 44, 60, 29, 0, -15, 300, null, null],
|
||||
[0, "예리코 코론", "예리코-코론.png", 0, null, 41, 20, 53, 0, -15, 300, null, null],
|
||||
[0, "오가와 켄타로", "오가와-켄타로.png", 0, null, 79, 96, 63, 0, -15, 300, null, null],
|
||||
[0, "오기르 롯 스테인", null, 0, null, 40, 20, 54, 0, -15, 300, null, null],
|
||||
[0, "오노하 메스포스", "오노하-메스포스.png", 0, null, 34, 60, 64, 0, -15, 300, null, null],
|
||||
[0, "오다 노부나가", "오다-노부나가.png", 0, null, 76, 97, 67, 0, -15, 300, null, null],
|
||||
[0, "오다 코우", "오다-코우.png", 0, null, 86, 56, 44, 0, -15, 300, null, null],
|
||||
[0, "오로 마티오", "오로-마티오.png", 0, null, 64, 55, 15, 0, -15, 300, null, null],
|
||||
[0, "오로라", null, 0, null, 73, 78, 61, 0, -15, 300, null, null],
|
||||
[0, "오리메", null, 0, null, 71, 63, 78, 0, -15, 300, null, null],
|
||||
[0, "오마치", null, 0, null, 80, 55, 102, 0, -15, 300, null, null],
|
||||
[0, "오아마 모토히데", null, 0, null, 62, 77, 38, 0, -15, 300, null, null],
|
||||
[0, "오즈 토터스", "오즈-토터스.png", 0, null, 78, 31, 66, 0, -15, 300, null, null],
|
||||
[0, "오키타 노조미", "오키타-노조미.png", 0, null, 60, 96, 76, 0, -15, 300, null, null],
|
||||
[0, "오토히메", null, 0, null, 63, 56, 15, 0, -15, 300, null, null],
|
||||
[0, "올오레 더 서드", "올오레-더-서드.png", 0, null, 49, 76, 76, 0, -15, 300, null, null],
|
||||
[0, "와그 아카", "와그-아카.png", 0, null, 88, 50, 99, 0, -15, 300, null, null],
|
||||
[0, "와요소 벤빌", "와요소-벤빌.png", 0, null, 62, 57, 15, 0, -15, 300, null, null],
|
||||
[0, "요라", null, 0, null, 61, 58, 15, 0, -15, 300, null, null],
|
||||
[0, "요시모토", null, 0, null, 50, 69, 15, 0, -15, 300, null, null],
|
||||
[0, "요시카게", null, 0, null, 77, 33, 61, 0, -15, 300, null, null],
|
||||
[0, "요시카와 마치코", "요시카와-마치코.png", 0, null, 53, 66, 50, 0, -15, 300, null, null],
|
||||
[0, "요시카와 쿄코", "요시카와-쿄코.png", 0, null, 53, 50, 66, 0, -15, 300, null, null],
|
||||
[0, "욧짱", null, 0, null, 60, 59, 15, 0, -15, 300, null, null],
|
||||
[0, "우", null, 0, null, 59, 60, 15, 0, -15, 300, null, null],
|
||||
[0, "우라질", null, 0, null, 58, 61, 15, 0, -15, 300, null, null],
|
||||
[0, "우르자", null, 0, null, 92, 90, 60, 0, -15, 300, null, null],
|
||||
[0, "우스피라 신토", "우스피라-신토.png", 0, null, 74, 51, 84, 0, -15, 300, null, null],
|
||||
[0, "우에스기 겐세이", "우에스기-겐세이.png", 0, null, 69, 59, 39, 0, -15, 300, null, null],
|
||||
[0, "우에스기 겐신", "우에스기-겐신.png", 0, null, 87, 97, 52, 0, -15, 300, null, null],
|
||||
[0, "우에스기 카츠코", "우에스기-카츠코.png", 0, null, 71, 71, 53, 0, -15, 300, null, null],
|
||||
[0, "우에스기 토라코", "우에스기-토라코.png", 0, null, 71, 53, 71, 0, -15, 300, null, null],
|
||||
[0, "운가 사요리", null, 0, null, 57, 62, 15, 0, -15, 300, null, null],
|
||||
[0, "웬디 크루미라", "웬디-크루미라.png", 0, null, 56, 63, 15, 0, -15, 300, null, null],
|
||||
[0, "웬리나", null, 0, null, 75, 3, 80, 0, -15, 300, null, null],
|
||||
[0, "위리스 후지사키", "위리스-후지사키.png", 0, null, 51, 64, 56, 0, -15, 300, null, null],
|
||||
[0, "위치타 스케트", "위치타-스케트.png", 0, null, 67, 62, 76, 0, -15, 300, null, null],
|
||||
[0, "유니콘", null, 0, null, 63, 76, 67, 0, -15, 300, null, null],
|
||||
[0, "유란 미라쥬", "유란-미라쥬.png", 0, null, 66, 75, 45, 0, -15, 300, null, null],
|
||||
[0, "유우게", null, 0, null, 70, 75, 61, 0, -15, 300, null, null],
|
||||
[0, "유즈 필라리아", "유즈-필라리아.png", 0, null, 55, 64, 15, 0, -15, 300, null, null],
|
||||
[0, "유즈하라 유즈미", "유즈하라-유즈미.png", 0, null, 67, 88, 54, 0, -15, 300, null, null],
|
||||
[0, "유키", null, 0, null, 67, 77, 77, 0, -15, 300, null, null],
|
||||
[0, "유키 델", "유키-델.png", 0, null, 54, 65, 15, 0, -15, 300, null, null],
|
||||
[0, "유키히메", null, 0, null, 53, 66, 15, 0, -15, 300, null, null],
|
||||
[0, "유틴 프루스", "유틴-프루스.png", 0, null, 52, 67, 15, 0, -15, 300, null, null],
|
||||
[0, "이누카이", null, 0, null, 67, 72, 72, 0, -15, 300, null, null],
|
||||
[0, "이마가와 앙코", "이마가와-앙코.png", 0, null, 51, 68, 15, 0, -15, 300, null, null],
|
||||
[0, "이베트 체리아", "이베트-체리아.png", 0, null, 63, 77, 46, 0, -15, 300, null, null],
|
||||
[0, "이소로쿠", null, 0, null, 73, 77, 57, 0, -15, 300, null, null],
|
||||
[0, "이시스", null, 0, null, 79, 88, 60, 0, -15, 300, null, null],
|
||||
[0, "이시지지", null, 0, null, 55, 40, 49, 0, -15, 300, null, null],
|
||||
[0, "이안", null, 0, null, 54, 48, 64, 0, -15, 300, null, null],
|
||||
[0, "이에야스", null, 0, null, 76, 85, 53, 0, -15, 300, null, null],
|
||||
[0, "이오 이슈타르", "이오-이슈타르.png", 0, null, 78, 38, 74, 0, -15, 300, null, null],
|
||||
[0, "이오시프", null, 0, null, 90, 54, 89, 0, -15, 300, null, null],
|
||||
[0, "이이 나오마사", "이이-나오마사.png", 0, null, 67, 72, 56, 0, -15, 300, null, null],
|
||||
[0, "이지스 카라", "이지스-카라.png", 0, null, 81, 87, 59, 0, -15, 300, null, null],
|
||||
[0, "이쿠노", null, 0, null, 70, 75, 61, 0, -15, 300, null, null],
|
||||
[0, "잇큐", null, 0, null, 34, 66, 55, 0, -15, 300, null, null],
|
||||
[0, "자락", null, 0, null, 47, 32, 60, 0, -15, 300, null, null],
|
||||
[0, "자비에르", null, 0, null, 76, 97, 67, 0, -15, 300, null, null],
|
||||
[0, "잔 사비스", "잔-사비스.png", 0, null, 72, 67, 38, 0, -15, 300, null, null],
|
||||
[0, "쟈로 쟈스락", null, 0, null, 40, 20, 60, 0, -15, 300, null, null],
|
||||
[0, "쟈하룻카스", null, 0, null, 76, 94, 64, 0, -15, 300, null, null],
|
||||
[0, "점퍼", null, 0, null, 55, 41, 48, 0, -15, 300, null, null],
|
||||
[0, "제리피 고라", "제리피-고라.png", 0, null, 55, 42, 47, 0, -15, 300, null, null],
|
||||
[0, "조후카", null, 0, null, 55, 43, 46, 0, -15, 300, null, null],
|
||||
[0, "죠니", null, 0, null, 51, 55, 64, 0, -15, 300, null, null],
|
||||
[0, "죠셉", null, 0, null, 55, 44, 45, 0, -15, 300, null, null],
|
||||
[0, "주노", null, 0, null, 80, 58, 90, 0, -15, 300, null, null],
|
||||
[0, "줄리아 린담", "줄리아-린담.png", 0, null, 34, 66, 63, 0, -15, 300, null, null],
|
||||
[0, "줄키 크라운", "줄키-크라운.png", 0, null, 62, 63, 41, 0, -15, 300, null, null],
|
||||
[0, "지마 바카스코", "지마-바카스코.png", 0, null, 68, 75, 57, 0, -15, 300, null, null],
|
||||
[0, "지블 마크토미", null, 0, null, 41, 21, 60, 0, -15, 300, null, null],
|
||||
[0, "지크", null, 0, null, 77, 63, 97, 0, -15, 300, null, null],
|
||||
[0, "쩌둥", null, 0, null, 90, 89, 54, 0, -15, 300, null, null],
|
||||
[0, "챠카 카드뮴", "챠카-카드뮴.png", 0, null, 72, 49, 90, 0, -15, 300, null, null],
|
||||
[0, "체네자리 드라갈", "체네자리-드라갈.png", 0, null, 70, 55, 81, 0, -15, 300, null, null],
|
||||
[0, "초르초토브", null, 0, null, 44, 60, 24, 0, -15, 300, null, null],
|
||||
[0, "쵸쵸맨 파브리", "쵸쵸맨-파브리.png", 0, null, 85, 18, 70, 0, -15, 300, null, null],
|
||||
[0, "츠치다 못코", "츠치다-못코.png", 0, null, 55, 45, 44, 0, -15, 300, null, null],
|
||||
[0, "치사 고도", "치사-고도.png", 0, null, 55, 46, 43, 0, -15, 300, null, null],
|
||||
[0, "치치쿠리", null, 0, null, 41, 60, 23, 0, -15, 300, null, null],
|
||||
[0, "칠디 샤프", "칠디-샤프.png", 0, null, 73, 90, 62, 0, -15, 300, null, null],
|
||||
[0, "카나 세이하쥬", "카나-세이하쥬.png", 0, null, 55, 47, 42, 0, -15, 300, null, null],
|
||||
[0, "카나요", null, 0, null, 73, 74, 74, 0, -15, 300, null, null],
|
||||
[0, "카네오", null, 0, null, 55, 48, 41, 0, -15, 300, null, null],
|
||||
[0, "카로리아 크리켓", "카로리아-크리켓.png", 0, null, 66, 56, 72, 0, -15, 300, null, null],
|
||||
[0, "카마 아트랜저", "카마-아트랜저.png", 0, null, 69, 54, 54, 0, -15, 300, null, null],
|
||||
[0, "카미라", null, 0, null, 85, 49, 109, 0, -15, 300, null, null],
|
||||
[0, "카바한", null, 0, null, 76, 45, 98, 0, -15, 300, null, null],
|
||||
[0, "카스미K카스미", null, 0, null, 63, 73, 60, 0, -15, 300, null, null],
|
||||
[0, "카오루Q카구라", null, 0, null, 72, 78, 61, 0, -15, 300, null, null],
|
||||
[0, "카오스", null, 0, null, 50, 89, 89, 0, -15, 300, null, null],
|
||||
[0, "카이트", null, 0, null, 78, 102, 62, 0, -15, 300, null, null],
|
||||
[0, "카츄사 봇슈", "카츄사-봇슈.png", 0, null, 64, 73, 68, 0, -15, 300, null, null],
|
||||
[0, "카토 스즈메", "카토-스즈메.png", 0, null, 55, 49, 40, 0, -15, 300, null, null],
|
||||
[0, "카토 키요시모리", null, 0, null, 55, 40, 59, 0, -15, 300, null, null],
|
||||
[0, "카파라 우치", "카파라-우치.png", 0, null, 69, 47, 65, 0, -15, 300, null, null],
|
||||
[0, "카페 아트풀", "카페-아트풀.png", 0, null, 78, 57, 89, 0, -15, 300, null, null],
|
||||
[0, "칼 오지잔", "칼-오지잔.png", 0, null, 69, 68, 53, 0, -15, 300, null, null],
|
||||
[0, "캐로리 메이트", "캐로리-메이트.png", 0, null, 55, 41, 58, 0, -15, 300, null, null],
|
||||
[0, "커티스 아벨렌", null, 0, null, 41, 60, 26, 0, -15, 300, null, null],
|
||||
[0, "케셀링크", null, 0, null, 90, 107, 47, 0, -15, 300, null, null],
|
||||
[0, "케이브냥", null, 0, null, 55, 70, 32, 0, -15, 300, null, null],
|
||||
[0, "케이브리스", null, 0, null, 85, 110, 50, 0, -15, 300, null, null],
|
||||
[0, "케이브왕", null, 0, null, 55, 70, 32, 0, -15, 300, null, null],
|
||||
[0, "케이코", null, 0, null, 74, 58, 96, 0, -15, 300, null, null],
|
||||
[0, "케이코쿠", null, 0, null, 63, 68, 83, 0, -15, 300, null, null],
|
||||
[0, "케챠크 반고", "케챠크-반고.png", 0, null, 55, 42, 57, 0, -15, 300, null, null],
|
||||
[0, "켄토우 카나미", "켄토우-카나미.png", 0, null, 55, 56, 43, 0, -15, 300, null, null],
|
||||
[0, "코난 호카벤", null, 0, null, 55, 44, 55, 0, -15, 300, null, null],
|
||||
[0, "코르도바 반", "코르도바-반.png", 0, null, 76, 79, 59, 0, -15, 300, null, null],
|
||||
[0, "코마츠", null, 0, null, 75, 73, 52, 0, -15, 300, null, null],
|
||||
[0, "코바야카와 치누", "코바야카와-치누.png", 0, null, 72, 74, 62, 0, -15, 300, null, null],
|
||||
[0, "코슈인 하즈키", "코슈인-하즈키.png", 0, null, 55, 45, 54, 0, -15, 300, null, null],
|
||||
[0, "에미 알폰느", null, 0, null, 68, 52, 61, 0, -15, 300, null, null],
|
||||
[0, "콘버트 탁스", null, 0, null, 68, 48, 50, 0, -15, 300, null, null],
|
||||
[0, "파이아르", null, 0, null, 68, 30, 105, 0, -15, 300, null, null],
|
||||
[0, "마르티나 카레", null, 0, null, 67, 45, 56, 0, -15, 300, null, null],
|
||||
[0, "사카이 타다츠구", null, 0, null, 67, 68, 53, 0, -15, 300, null, null],
|
||||
[0, "사카키바라", null, 0, null, 67, 53, 68, 0, -15, 300, null, null],
|
||||
[0, "위치타 스케트", null, 0, null, 67, 62, 76, 0, -15, 300, null, null],
|
||||
[0, "이이 나오마사", null, 0, null, 67, 72, 56, 0, -15, 300, null, null],
|
||||
[0, "쿠모 단죠", null, 0, null, 67, 67, 44, 0, -15, 300, null, null],
|
||||
[0, "혼다 타다카츠", null, 0, null, 67, 80, 53, 0, -15, 300, null, null],
|
||||
[0, "가와노에 미네", null, 0, null, 66, 71, 71, 0, -15, 300, null, null],
|
||||
[0, "마에다 케이지", null, 0, null, 66, 66, 74, 0, -15, 300, null, null],
|
||||
[0, "아부라코 도우산", null, 0, null, 66, 71, 48, 0, -15, 300, null, null],
|
||||
[0, "카로리아 크리켓", null, 0, null, 66, 56, 72, 0, -15, 300, null, null],
|
||||
[0, "혼다 마사노부", null, 0, null, 66, 68, 44, 0, -15, 300, null, null],
|
||||
[0, "가라샤", null, 0, null, 65, 68, 47, 0, -15, 300, null, null],
|
||||
[0, "고닌자 레드", null, 0, null, 65, 70, 10, 0, -15, 300, null, null],
|
||||
[0, "고닌자 블랙", null, 0, null, 65, 65, 20, 0, -15, 300, null, null],
|
||||
[0, "마하 마가렛", null, 0, null, 65, 50, 83, 0, -15, 300, null, null],
|
||||
[0, "메가스", null, 0, null, 65, 75, 57, 0, -15, 300, null, null],
|
||||
[0, "메가와스", null, 0, null, 65, 75, 57, 0, -15, 300, null, null],
|
||||
[0, "아스베스트", null, 0, null, 65, 70, 52, 0, -15, 300, null, null],
|
||||
[0, "아카시로 카라", null, 0, null, 65, 52, 70, 0, -15, 300, null, null],
|
||||
[0, "켄토우 카나미", null, 0, null, 65, 62, 58, 0, -15, 300, null, null],
|
||||
[0, "코우사카", null, 0, null, 65, 75, 70, 0, -15, 300, null, null],
|
||||
[0, "코판돈 도트", "코판돈-도트.png", 0, null, 55, 46, 53, 0, -15, 300, null, null],
|
||||
[0, "콘 마가린", null, 0, null, 55, 47, 52, 0, -15, 300, null, null],
|
||||
[0, "콘버트 탁스", "콘버트-탁스.png", 0, null, 68, 48, 50, 0, -15, 300, null, null],
|
||||
[0, "콘타마", null, 0, null, 55, 48, 51, 0, -15, 300, null, null],
|
||||
[0, "콜린 코콜린", "콜린-코콜린.png", 0, null, 55, 49, 50, 0, -15, 300, null, null],
|
||||
[0, "콩고", null, 0, null, 42, 23, 60, 0, -15, 300, null, null],
|
||||
[0, "쿠로베", null, 0, null, 83, 92, 53, 0, -15, 300, null, null],
|
||||
[0, "쿠로히메", null, 0, null, 80, 20, 65, 0, -15, 300, null, null],
|
||||
[0, "쿠마", null, 0, null, 70, 75, 15, 0, -15, 300, null, null],
|
||||
[0, "쿠마노 고로", null, 0, null, 41, 26, 60, 0, -15, 300, null, null],
|
||||
[0, "쿠모 단죠", "쿠모-단죠.png", 0, null, 67, 67, 44, 0, -15, 300, null, null],
|
||||
[0, "쿠소가키", null, 0, null, 55, 50, 49, 0, -15, 300, null, null],
|
||||
[0, "쿠유", null, 0, null, 55, 51, 48, 0, -15, 300, null, null],
|
||||
[0, "쿠제 쿄코", null, 0, null, 40, 25, 60, 0, -15, 300, null, null],
|
||||
[0, "쿠제 키요코", null, 0, null, 44, 24, 60, 0, -15, 300, null, null],
|
||||
[0, "큐티 밴드", "큐티-밴드.png", 0, null, 68, 69, 41, 0, -15, 300, null, null],
|
||||
[0, "크레인", null, 0, null, 55, 52, 47, 0, -15, 300, null, null],
|
||||
[0, "크루체 머핀", "크루체-머핀.png", 0, null, 58, 75, 46, 0, -15, 300, null, null],
|
||||
[0, "크룩 모프스", "크룩-모프스.png", 0, null, 93, 50, 95, 0, -15, 300, null, null],
|
||||
[0, "크림", null, 0, null, 91, 43, 90, 0, -15, 300, null, null],
|
||||
[0, "클린 뷰", "클린-뷰.png", 0, null, 55, 66, 45, 0, -15, 300, null, null],
|
||||
[0, "큐티 밴드", null, 0, null, 65, 69, 41, 0, -15, 300, null, null],
|
||||
[0, "키바코", null, 0, null, 65, 74, 66, 0, -15, 300, null, null],
|
||||
[0, "키사라 코프리", "키사라-코프리.png", 0, null, 58, 67, 49, 0, -15, 300, null, null],
|
||||
[0, "키스 골드", null, 0, null, 55, 54, 45, 0, -15, 300, null, null],
|
||||
[0, "키이", null, 0, null, 65, 79, 56, 0, -15, 300, null, null],
|
||||
[0, "킷카와 키쿠", "킷카와-키쿠.png", 0, null, 64, 79, 71, 0, -15, 300, null, null],
|
||||
[0, "킹", null, 0, null, 61, 78, 73, 0, -15, 300, null, null],
|
||||
[0, "킹죠지 아바레", "킹죠지-아바레.png", 0, null, 64, 61, 69, 0, -15, 300, null, null],
|
||||
[0, "타락한 정치인", null, 0, null, 40, 60, 25, 0, -15, 300, null, null],
|
||||
[0, "타르고", null, 0, null, 74, 89, 56, 0, -15, 300, null, null],
|
||||
[0, "타마", null, 0, null, 55, 55, 44, 0, -15, 300, null, null],
|
||||
[0, "타마구시 후카", "타마구시-후카.png", 0, null, 64, 60, 70, 0, -15, 300, null, null],
|
||||
[0, "타마시이시바리", null, 0, null, 55, 56, 43, 0, -15, 300, null, null],
|
||||
[0, "타미 존", "타미-존.png", 0, null, 55, 57, 42, 0, -15, 300, null, null],
|
||||
[0, "테라", null, 0, null, 82, 20, 63, 0, -15, 300, null, null],
|
||||
[0, "텐마바시 아리스", "텐마바시-아리스.png", 0, null, 30, 65, 67, 0, -15, 300, null, null],
|
||||
[0, "토마 리프톤", "토마-리프톤.png", 0, null, 82, 89, 61, 0, -15, 300, null, null],
|
||||
[0, "토마토 퓨레", "토마토-퓨레.png", 0, null, 60, 64, 60, 0, -15, 300, null, null],
|
||||
[0, "토쿠가와 센", "토쿠가와-센.png", 0, null, 79, 86, 58, 0, -15, 300, null, null],
|
||||
[0, "토파즈", null, 0, null, 83, 72, 72, 0, -15, 300, null, null],
|
||||
[0, "토포스", null, 0, null, 78, 102, 61, 0, -15, 300, null, null],
|
||||
[0, "톨스토이 바트", "톨스토이-바트.png", 0, null, 55, 59, 40, 0, -15, 300, null, null],
|
||||
[0, "파레로아", null, 0, null, 71, 74, 74, 0, -15, 300, null, null],
|
||||
[0, "하삼 크라운", null, 0, null, 65, 69, 42, 0, -15, 300, null, null],
|
||||
[0, "호 라가", null, 0, null, 65, 47, 101, 0, -15, 300, null, null],
|
||||
[0, "로제 카드", null, 0, null, 64, 50, 77, 0, -15, 300, null, null],
|
||||
[0, "루리카 카라", null, 0, null, 64, 48, 70, 0, -15, 300, null, null],
|
||||
[0, "솔트안", null, 0, null, 64, 64, 68, 0, -15, 300, null, null],
|
||||
[0, "오로 마티오", null, 0, null, 64, 55, 15, 0, -15, 300, null, null],
|
||||
[0, "킷카와 키쿠", null, 0, null, 64, 79, 71, 0, -15, 300, null, null],
|
||||
[0, "킹죠지 아바레", null, 0, null, 64, 86, 61, 0, -15, 300, null, null],
|
||||
[0, "토포스", null, 0, null, 64, 100, 38, 0, -15, 300, null, null],
|
||||
[0, "미리 요크스", null, 0, null, 63, 83, 54, 0, -15, 300, null, null],
|
||||
[0, "오토히메", null, 0, null, 63, 56, 15, 0, -15, 300, null, null],
|
||||
[0, "유니콘", null, 0, null, 63, 76, 67, 0, -15, 300, null, null],
|
||||
[0, "이베트 체리아", null, 0, null, 63, 77, 46, 0, -15, 300, null, null],
|
||||
[0, "파렌", null, 0, null, 63, 71, 71, 0, -15, 300, null, null],
|
||||
[0, "파르프텐크스", null, 0, null, 33, 66, 66, 0, -15, 300, null, null],
|
||||
[0, "파멜라 헬만", "파멜라-헬만.png", 0, null, 35, 59, 60, 0, -15, 300, null, null],
|
||||
[0, "파스텔 카라", "파스텔-카라.png", 0, null, 86, 46, 100, 0, -15, 300, null, null],
|
||||
[0, "파이아르", null, 0, null, 76, 61, 98, 0, -15, 300, null, null],
|
||||
[0, "파티", null, 0, null, 36, 58, 60, 0, -15, 300, null, null],
|
||||
[0, "파티 더 서머", "파티-더-서머.png", 0, null, 37, 57, 60, 0, -15, 300, null, null],
|
||||
[0, "파파데마스", null, 0, null, 38, 56, 60, 0, -15, 300, null, null],
|
||||
[0, "파파이아 서버", "파파이아-서버.png", 0, null, 74, 59, 90, 0, -15, 300, null, null],
|
||||
[0, "패트리샤 베이컨", "패트리샤-베이컨.png", 0, null, 39, 55, 60, 0, -15, 300, null, null],
|
||||
[0, "패튼 미스날지", "패튼-미스날지.png", 0, null, 75, 85, 65, 0, -15, 300, null, null],
|
||||
[0, "페가수스 포트", null, 0, null, 40, 54, 60, 0, -15, 300, null, null],
|
||||
[0, "페르에레 칼레트", "페르에레-칼레트.png", 0, null, 33, 67, 61, 0, -15, 300, null, null],
|
||||
[0, "페리스", null, 0, null, 58, 76, 76, 0, -15, 300, null, null],
|
||||
[0, "페스포 톤토네", "페스포-톤토네.png", 0, null, 31, 64, 67, 0, -15, 300, null, null],
|
||||
[0, "페페 위지마", "페페-위지마.png", 0, null, 41, 53, 60, 0, -15, 300, null, null],
|
||||
[0, "페페론 차오", null, 0, null, 42, 52, 60, 0, -15, 300, null, null],
|
||||
[0, "포론 차오", "포론-차오.png", 0, null, 78, 73, 63, 0, -15, 300, null, null],
|
||||
[0, "포토프 토카레프", "포토프-토카레프.png", 0, null, 43, 51, 60, 0, -15, 300, null, null],
|
||||
[0, "풀 카라", "풀-카라.png", 0, null, 76, 58, 104, 0, -15, 300, null, null],
|
||||
[0, "프레이아 이즌", "프레이아-이즌.png", 0, null, 49, 77, 77, 0, -15, 300, null, null],
|
||||
[0, "프로스트바인", null, 0, null, 44, 50, 60, 0, -15, 300, null, null],
|
||||
[0, "프론소와즈", null, 0, null, 45, 49, 60, 0, -15, 300, null, null],
|
||||
[0, "프리마 호노노먼", "프리마-호노노먼.png", 0, null, 59, 54, 56, 0, -15, 300, null, null],
|
||||
[0, "프리크 파라핀", "프리크-파라핀.png", 0, null, 67, 65, 94, 0, -15, 300, null, null],
|
||||
[0, "플레처 모델", "플레처-모델.png", 0, null, 46, 48, 60, 0, -15, 300, null, null],
|
||||
[0, "플루페트", null, 0, null, 29, 40, 88, 0, -15, 300, null, null],
|
||||
[0, "피구", null, 0, null, 75, 73, 56, 0, -15, 300, null, null],
|
||||
[0, "피니 사나다", "피니-사나다.png", 0, null, 47, 47, 60, 0, -15, 300, null, null],
|
||||
[0, "피사로", null, 0, null, 84, 54, 95, 0, -15, 300, null, null],
|
||||
[0, "피텐 차오", "피텐-차오.png", 0, null, 75, 80, 57, 0, -15, 300, null, null],
|
||||
[0, "하니킹", null, 0, null, 92, 101, 44, 0, -15, 300, null, null],
|
||||
[0, "하라 쇼우지", "하라-쇼우지.png", 0, null, 73, 63, 50, 0, -15, 300, null, null],
|
||||
[0, "하삼 크라운", "하삼-크라운.png", 0, null, 70, 69, 42, 0, -15, 300, null, null],
|
||||
[0, "하우렌 프로반스", "하우렌-프로반스.png", 0, null, 73, 70, 50, 0, -15, 300, null, null],
|
||||
[0, "하우세스너스", null, 0, null, 78, 89, 37, 0, -15, 300, null, null],
|
||||
[0, "하이니 바흐", null, 0, null, 48, 46, 60, 0, -15, 300, null, null],
|
||||
[0, "하이디 팡크라우", "하이디-팡크라우.png", 0, null, 40, 58, 66, 0, -15, 300, null, null],
|
||||
[0, "하제후카 리모브", null, 0, null, 49, 45, 60, 0, -15, 300, null, null],
|
||||
[0, "학자", null, 0, null, 78, 53, 73, 0, -15, 300, null, null],
|
||||
[0, "한스킨스", null, 0, null, 50, 44, 60, 0, -15, 300, null, null],
|
||||
[0, "한티 카라", "한티-카라.png", 0, null, 65, 67, 108, 0, -15, 300, null, null],
|
||||
[0, "핫킨 다산", "핫킨-다산.png", 0, null, 71, 73, 60, 0, -15, 300, null, null],
|
||||
[0, "핫토리 한조", "핫토리-한조.png", 0, null, 60, 70, 64, 0, -15, 300, null, null],
|
||||
[0, "헨더슨 던트리스", "헨더슨-던트리스.png", 0, null, 51, 43, 60, 0, -15, 300, null, null],
|
||||
[0, "호 라가", "호-라가.png", 0, null, 74, 56, 101, 0, -15, 300, null, null],
|
||||
[0, "호넷", null, 0, null, 95, 40, 110, 0, -15, 300, null, null],
|
||||
[0, "호리카와 나미", "호리카와-나미.png", 0, null, 61, 62, 61, 0, -15, 300, null, null],
|
||||
[0, "호죠 마사코", "호죠-마사코.png", 0, null, 52, 42, 60, 0, -15, 300, null, null],
|
||||
[0, "호죠 소운", "호죠-소운.png", 0, null, 70, 62, 94, 0, -15, 300, null, null],
|
||||
[0, "혼다 마사노부", "혼다-마사노부.png", 0, null, 66, 68, 44, 0, -15, 300, null, null],
|
||||
[0, "혼다 타다카츠", "혼다-타다카츠.png", 0, null, 67, 80, 53, 0, -15, 300, null, null],
|
||||
[0, "나와토리", null, 0, null, 62, 88, 50, 0, -15, 300, null, null],
|
||||
[0, "도르한 크리케트", null, 0, null, 62, 58, 69, 0, -15, 300, null, null],
|
||||
[0, "듀란", null, 0, null, 62, 67, 39, 0, -15, 300, null, null],
|
||||
[0, "보두", null, 0, null, 62, 72, 50, 0, -15, 300, null, null],
|
||||
[0, "오아마 모토히데", null, 0, null, 62, 77, 38, 0, -15, 300, null, null],
|
||||
[0, "와요소 벤빌", null, 0, null, 62, 57, 15, 0, -15, 300, null, null],
|
||||
[0, "줄키 크라운", null, 0, null, 62, 63, 41, 0, -15, 300, null, null],
|
||||
[0, "후트 롯", null, 0, null, 62, 69, 60, 0, -15, 300, null, null],
|
||||
[0, "라르가", null, 0, null, 61, 56, 69, 0, -15, 300, null, null],
|
||||
[0, "레베카 코프리", null, 0, null, 61, 49, 77, 0, -15, 300, null, null],
|
||||
[0, "시저", null, 0, null, 61, 99, 40, 0, -15, 300, null, null],
|
||||
[0, "아시카가 쵸신", null, 0, null, 61, 44, 50, 0, -15, 300, null, null],
|
||||
[0, "요라", null, 0, null, 61, 58, 15, 0, -15, 300, null, null],
|
||||
[0, "킹", null, 0, null, 61, 78, 73, 0, -15, 300, null, null],
|
||||
[0, "호리카와 나미", null, 0, null, 61, 62, 61, 0, -15, 300, null, null],
|
||||
[0, "고닌자 블루", null, 0, null, 60, 75, 15, 0, -15, 300, null, null],
|
||||
[0, "네로차페트7세", null, 0, null, 60, 62, 34, 0, -15, 300, null, null],
|
||||
[0, "머슬", null, 0, null, 60, 84, 60, 0, -15, 300, null, null],
|
||||
[0, "메가포스", null, 0, null, 60, 75, 57, 0, -15, 300, null, null],
|
||||
[0, "무라라", null, 0, null, 60, 72, 44, 0, -15, 300, null, null],
|
||||
[0, "오키타 노조미", null, 0, null, 60, 96, 76, 0, -15, 300, null, null],
|
||||
[0, "욧짱", null, 0, null, 60, 59, 15, 0, -15, 300, null, null],
|
||||
[0, "유우게", null, 0, null, 60, 75, 61, 0, -15, 300, null, null],
|
||||
[0, "이쿠노", null, 0, null, 60, 75, 61, 0, -15, 300, null, null],
|
||||
[0, "토마토 퓨레", null, 0, null, 60, 70, 60, 0, -15, 300, null, null],
|
||||
[0, "톨스토이 바트", null, 0, null, 60, 60, 40, 0, -15, 300, null, null],
|
||||
[0, "핫토리 한조", null, 0, null, 60, 70, 64, 0, -15, 300, null, null],
|
||||
[0, "다 게일", null, 0, null, 59, 70, 70, 0, -15, 300, null, null],
|
||||
[0, "리세트 카라", null, 0, null, 59, 53, 81, 0, -15, 300, null, null],
|
||||
[0, "우", null, 0, null, 59, 60, 15, 0, -15, 300, null, null],
|
||||
[0, "프리마 호노노먼", null, 0, null, 59, 54, 56, 0, -15, 300, null, null],
|
||||
[0, "라인하르트", null, 0, null, 58, 75, 43, 0, -15, 300, null, null],
|
||||
[0, "크루체 머핀", null, 0, null, 58, 75, 46, 0, -15, 300, null, null],
|
||||
[0, "키사라 코프리", null, 0, null, 58, 67, 49, 0, -15, 300, null, null],
|
||||
[0, "메가데스 모로미", null, 0, null, 57, 68, 46, 0, -15, 300, null, null],
|
||||
[0, "운가 사요리", null, 0, null, 57, 62, 15, 0, -15, 300, null, null],
|
||||
[0, "라기시스", null, 0, null, 56, 58, 92, 0, -15, 300, null, null],
|
||||
[0, "버나드 세라미테", null, 0, null, 56, 65, 65, 0, -15, 300, null, null],
|
||||
[0, "웬디 크루미라", null, 0, null, 56, 63, 15, 0, -15, 300, null, null],
|
||||
[0, "가무로아 마티오", null, 0, null, 55, 65, 40, 0, -15, 300, null, null],
|
||||
[0, "가이젤 고도", null, 0, null, 55, 40, 60, 0, -15, 300, null, null],
|
||||
[0, "고닌자 옐로", null, 0, null, 55, 15, 70, 0, -15, 300, null, null],
|
||||
[0, "레드 오니", null, 0, null, 55, 40, 50, 0, -15, 300, null, null],
|
||||
[0, "레리 세리카", null, 0, null, 55, 40, 51, 0, -15, 300, null, null],
|
||||
[0, "레자리안", null, 0, null, 55, 40, 52, 0, -15, 300, null, null],
|
||||
[0, "로라 인더스", null, 0, null, 55, 40, 53, 0, -15, 300, null, null],
|
||||
[0, "로버트 랜드스타", null, 0, null, 55, 40, 54, 0, -15, 300, null, null],
|
||||
[0, "로키 뱅크", null, 0, null, 55, 65, 40, 0, -15, 300, null, null],
|
||||
[0, "루이스 키토와크", null, 0, null, 55, 40, 58, 0, -15, 300, null, null],
|
||||
[0, "마키바노 메구", null, 0, null, 55, 52, 40, 0, -15, 300, null, null],
|
||||
[0, "마키바노 앤트", null, 0, null, 55, 53, 40, 0, -15, 300, null, null],
|
||||
[0, "만마루", null, 0, null, 55, 59, 40, 0, -15, 300, null, null],
|
||||
[0, "메이", null, 0, null, 55, 56, 40, 0, -15, 300, null, null],
|
||||
[0, "모즈나", null, 0, null, 55, 57, 40, 0, -15, 300, null, null],
|
||||
[0, "미킬 데파 라질", null, 0, null, 55, 58, 40, 0, -15, 300, null, null],
|
||||
[0, "바쇼 마티오", null, 0, null, 55, 59, 50, 0, -15, 300, null, null],
|
||||
[0, "블루 오니", null, 0, null, 55, 79, 10, 0, -15, 300, null, null],
|
||||
[0, "유즈 필라리아", null, 0, null, 55, 64, 15, 0, -15, 300, null, null],
|
||||
[0, "점퍼", null, 0, null, 55, 41, 48, 0, -15, 300, null, null],
|
||||
[0, "제리피 고라", null, 0, null, 55, 42, 47, 0, -15, 300, null, null],
|
||||
[0, "조후카", null, 0, null, 55, 43, 46, 0, -15, 300, null, null],
|
||||
[0, "죠셉", null, 0, null, 55, 44, 45, 0, -15, 300, null, null],
|
||||
[0, "츠치다 못코", null, 0, null, 55, 45, 44, 0, -15, 300, null, null],
|
||||
[0, "치사 고도", null, 0, null, 55, 46, 43, 0, -15, 300, null, null],
|
||||
[0, "카나 세이하쥬", null, 0, null, 55, 47, 42, 0, -15, 300, null, null],
|
||||
[0, "카네오", null, 0, null, 55, 48, 41, 0, -15, 300, null, null],
|
||||
[0, "카토 스즈메", null, 0, null, 55, 49, 40, 0, -15, 300, null, null],
|
||||
[0, "카토 키요시모리", null, 0, null, 55, 40, 59, 0, -15, 300, null, null],
|
||||
[0, "캐로리 메이트", null, 0, null, 55, 41, 58, 0, -15, 300, null, null],
|
||||
[0, "케이브냥", null, 0, null, 55, 70, 32, 0, -15, 300, null, null],
|
||||
[0, "케이브왕", null, 0, null, 55, 32, 70, 0, -15, 300, null, null],
|
||||
[0, "케챠크 반고", null, 0, null, 55, 42, 57, 0, -15, 300, null, null],
|
||||
[0, "코슈인 하즈키", null, 0, null, 55, 45, 54, 0, -15, 300, null, null],
|
||||
[0, "콘 마가린", null, 0, null, 55, 47, 52, 0, -15, 300, null, null],
|
||||
[0, "콘타마", null, 0, null, 55, 48, 51, 0, -15, 300, null, null],
|
||||
[0, "콜린 코콜린", null, 0, null, 55, 49, 50, 0, -15, 300, null, null],
|
||||
[0, "클린 뷰", null, 0, null, 55, 66, 45, 0, -15, 300, null, null],
|
||||
[0, "타마", null, 0, null, 55, 75, 44, 0, -15, 300, null, null],
|
||||
[0, "고킨켄", null, 0, null, 54, 85, 37, 0, -15, 300, null, null],
|
||||
[0, "로도네 로도네", null, 0, null, 54, 65, 69, 0, -15, 300, null, null],
|
||||
[0, "이안", null, 0, null, 54, 48, 64, 0, -15, 300, null, null],
|
||||
[0, "요시카와 마치코", null, 0, null, 53, 66, 50, 0, -15, 300, null, null],
|
||||
[0, "요시카와 쿄코", null, 0, null, 53, 50, 66, 0, -15, 300, null, null],
|
||||
[0, "쿠유", null, 0, null, 53, 51, 48, 0, -15, 300, null, null],
|
||||
[0, "타마시이시바리", null, 0, null, 53, 56, 43, 0, -15, 300, null, null],
|
||||
[0, "화성대왕", null, 0, null, 53, 41, 60, 0, -15, 300, null, null],
|
||||
[0, "화염서사", null, 0, null, 59, 73, 87, 0, -15, 300, null, null],
|
||||
[0, "후루루 반", "후루루-반.png", 0, null, 54, 40, 60, 0, -15, 300, null, null],
|
||||
[0, "히미코", null, 0, null, 53, 56, 66, 0, -15, 300, null, null],
|
||||
[0, "마리시텐", null, 0, null, 52, 50, 40, 0, -15, 300, null, null],
|
||||
[0, "유틴 프루스", null, 0, null, 52, 67, 15, 0, -15, 300, null, null],
|
||||
[0, "타미 존", null, 0, null, 52, 57, 42, 0, -15, 300, null, null],
|
||||
[0, "호죠 마사코", null, 0, null, 52, 42, 60, 0, -15, 300, null, null],
|
||||
[0, "미캉", null, 0, null, 51, 52, 70, 0, -15, 300, null, null],
|
||||
[0, "스즈야 무쌍", null, 0, null, 51, 79, 79, 0, -15, 300, null, null],
|
||||
[0, "위리스 후지사키", null, 0, null, 51, 64, 80, 0, -15, 300, null, null],
|
||||
[0, "죠니", null, 0, null, 51, 55, 64, 0, -15, 300, null, null],
|
||||
[0, "헨더슨 던트리스", null, 0, null, 51, 43, 60, 0, -15, 300, null, null],
|
||||
[0, "고닌자 그린", null, 0, null, 50, 20, 65, 0, -15, 300, null, null],
|
||||
[0, "고에몬", null, 0, null, 50, 40, 50, 0, -15, 300, null, null],
|
||||
[0, "고토", null, 0, null, 50, 40, 51, 0, -15, 300, null, null],
|
||||
[0, "그라크 알카포네", null, 0, null, 50, 40, 52, 0, -15, 300, null, null],
|
||||
[0, "그린 오니", null, 0, null, 50, 79, 10, 0, -15, 300, null, null],
|
||||
[0, "네이 우롱", null, 0, null, 50, 40, 54, 0, -15, 300, null, null],
|
||||
[0, "노벨", null, 0, null, 50, 40, 55, 0, -15, 300, null, null],
|
||||
[0, "니나", null, 0, null, 50, 40, 57, 0, -15, 300, null, null],
|
||||
[0, "닛코", null, 0, null, 50, 84, 84, 0, -15, 300, null, null],
|
||||
[0, "덴저러스 브라보", null, 0, null, 50, 51, 40, 0, -15, 300, null, null],
|
||||
[0, "덴즈 브라우", null, 0, null, 50, 52, 40, 0, -15, 300, null, null],
|
||||
[0, "도하라스 해피네스", null, 0, null, 50, 53, 40, 0, -15, 300, null, null],
|
||||
[0, "돈 도에스스키", null, 0, null, 50, 54, 40, 0, -15, 300, null, null],
|
||||
[0, "라돈 알폰느", null, 0, null, 50, 40, 55, 0, -15, 300, null, null],
|
||||
[0, "라벤더", null, 0, null, 50, 56, 40, 0, -15, 300, null, null],
|
||||
[0, "라크 파이크스피크", null, 0, null, 50, 58, 40, 0, -15, 300, null, null],
|
||||
[0, "라파리아 무스카", null, 0, null, 50, 59, 50, 0, -15, 300, null, null],
|
||||
[0, "로레 엔론", null, 0, null, 50, 40, 65, 0, -15, 300, null, null],
|
||||
[0, "로즈", null, 0, null, 50, 40, 55, 0, -15, 300, null, null],
|
||||
[0, "마사토 이주인", null, 0, null, 50, 51, 40, 0, -15, 300, null, null],
|
||||
[0, "모코모코", null, 0, null, 50, 58, 41, 0, -15, 300, null, null],
|
||||
[0, "버드 리스피", null, 0, null, 50, 62, 51, 0, -15, 300, null, null],
|
||||
[0, "엘레나 플라워", null, 0, null, 50, 78, 30, 0, -15, 300, null, null],
|
||||
[0, "요시모토", null, 0, null, 50, 69, 15, 0, -15, 300, null, null],
|
||||
[0, "우라질", null, 0, null, 50, 61, 15, 0, -15, 300, null, null],
|
||||
[0, "이시지지", null, 0, null, 50, 40, 49, 0, -15, 300, null, null],
|
||||
[0, "카오스", null, 0, null, 50, 93, 63, 0, -15, 300, null, null],
|
||||
[0, "코난 호카벤", null, 0, null, 50, 44, 55, 0, -15, 300, null, null],
|
||||
[0, "키스 골드", null, 0, null, 50, 54, 45, 0, -15, 300, null, null],
|
||||
[0, "한스킨스", null, 0, null, 50, 44, 60, 0, -15, 300, null, null],
|
||||
[0, "밀리 링클", null, 0, null, 49, 62, 56, 0, -15, 300, null, null],
|
||||
[0, "아사히나 하쿠만", null, 0, null, 49, 20, 40, 0, -15, 300, null, null],
|
||||
[0, "올오레 더 서드", null, 0, null, 49, 76, 76, 0, -15, 300, null, null],
|
||||
[0, "하제후카 리모브", null, 0, null, 49, 45, 60, 0, -15, 300, null, null],
|
||||
[0, "시노부", null, 0, null, 48, 74, 74, 0, -15, 300, null, null],
|
||||
[0, "아야 후지노미야", null, 0, null, 48, 20, 41, 0, -15, 300, null, null],
|
||||
[0, "하이니 바흐", null, 0, null, 48, 46, 60, 0, -15, 300, null, null],
|
||||
[0, "아이작", null, 0, null, 47, 60, 32, 0, -15, 300, null, null],
|
||||
[0, "아치볼트", null, 0, null, 47, 20, 42, 0, -15, 300, null, null],
|
||||
[0, "유키히메", null, 0, null, 47, 10, 86, 0, -15, 300, null, null],
|
||||
[0, "자락", null, 0, null, 47, 32, 60, 0, -15, 300, null, null],
|
||||
[0, "가이야스 야스토", null, 0, null, 46, 60, 31, 0, -15, 300, null, null],
|
||||
[0, "스바 고야", null, 0, null, 46, 31, 60, 0, -15, 300, null, null],
|
||||
[0, "아키 델", null, 0, null, 46, 20, 43, 0, -15, 300, null, null],
|
||||
[0, "이마가와 앙코", null, 0, null, 46, 68, 15, 0, -15, 300, null, null],
|
||||
[0, "노에마세", null, 0, null, 45, 40, 56, 0, -15, 300, null, null],
|
||||
[0, "라쳇 랜천", null, 0, null, 45, 65, 50, 0, -15, 300, null, null],
|
||||
[0, "메리 앤", null, 0, null, 45, 55, 40, 0, -15, 300, null, null],
|
||||
[0, "바운드 레스", null, 0, null, 45, 50, 50, 0, -15, 300, null, null],
|
||||
[0, "스티브 올란다", null, 0, null, 45, 30, 60, 0, -15, 300, null, null],
|
||||
[0, "아타고 마카트", null, 0, null, 45, 20, 44, 0, -15, 300, null, null],
|
||||
[0, "유키 델", null, 0, null, 45, 65, 15, 0, -15, 300, null, null],
|
||||
[0, "쿠마", null, 0, null, 45, 78, 15, 0, -15, 300, null, null],
|
||||
[0, "쿠소가키", null, 0, null, 45, 50, 49, 0, -15, 300, null, null],
|
||||
[0, "후브리 마츠시타", null, 0, null, 45, 60, 30, 0, -15, 300, null, null],
|
||||
[0, "후트 롯", "후트-롯.png", 0, null, 62, 69, 60, 0, -15, 300, null, null],
|
||||
[0, "휴버트 리프톤", "휴버트-리프톤.png", 0, null, 80, 80, 65, 0, -15, 300, null, null],
|
||||
[0, "히미코", null, 0, null, 62, 56, 66, 0, -15, 300, null, null],
|
||||
[0, "히바치", null, 0, null, 73, 90, 60, 0, -15, 300, null, null],
|
||||
[0, "히카리 미 블랑", "히카리-미-블랑.png", 0, null, 72, 40, 69, 0, -15, 300, null, null],
|
||||
[0, "히타치", null, 0, null, 84, 57, 60, 0, -15, 300, null, null]
|
||||
[0, "시타크 루소", null, 0, null, 44, 29, 60, 0, -15, 300, null, null],
|
||||
[0, "아테나1호", null, 0, null, 44, 60, 60, 0, -15, 300, null, null],
|
||||
[0, "엣찌", null, 0, null, 44, 60, 29, 0, -15, 300, null, null],
|
||||
[0, "초르초토브", null, 0, null, 44, 60, 24, 0, -15, 300, null, null],
|
||||
[0, "쿠제 키요코", null, 0, null, 44, 24, 70, 0, -15, 300, null, null],
|
||||
[0, "도코모", null, 0, null, 43, 60, 28, 0, -15, 300, null, null],
|
||||
[0, "로나 케스치나", null, 0, null, 43, 55, 55, 0, -15, 300, null, null],
|
||||
[0, "사카나쿠 텐카", null, 0, null, 43, 28, 60, 0, -15, 300, null, null],
|
||||
[0, "소르니아 벤츠", null, 0, null, 43, 21, 60, 0, -15, 300, null, null],
|
||||
[0, "신시아", null, 0, null, 43, 28, 62, 0, -15, 300, null, null],
|
||||
[0, "알토 한브라", null, 0, null, 43, 20, 46, 0, -15, 300, null, null],
|
||||
[0, "에르무 트라이", null, 0, null, 43, 20, 50, 0, -15, 300, null, null],
|
||||
[0, "포토프 토카레프", null, 0, null, 43, 51, 60, 0, -15, 300, null, null],
|
||||
[0, "프론소와즈", null, 0, null, 43, 49, 60, 0, -15, 300, null, null],
|
||||
[0, "후루루 반", null, 0, null, 43, 40, 60, 0, -15, 300, null, null],
|
||||
[0, "곤도 이사미", null, 0, null, 42, 22, 65, 0, -15, 300, null, null],
|
||||
[0, "누누하라 캐비지", null, 0, null, 42, 49, 86, 0, -15, 300, null, null],
|
||||
[0, "다이몬 지타로", null, 0, null, 42, 55, 40, 0, -15, 300, null, null],
|
||||
[0, "닷지 에반스", null, 0, null, 42, 60, 27, 0, -15, 300, null, null],
|
||||
[0, "세이조 모치키요", null, 0, null, 42, 27, 60, 0, -15, 300, null, null],
|
||||
[0, "소울 레스", null, 0, null, 42, 22, 60, 0, -15, 300, null, null],
|
||||
[0, "야마다", null, 0, null, 42, 20, 47, 0, -15, 300, null, null],
|
||||
[0, "에리느 해피네스", null, 0, null, 42, 20, 51, 0, -15, 300, null, null],
|
||||
[0, "페페론 차오", null, 0, null, 42, 52, 60, 0, -15, 300, null, null],
|
||||
[0, "프로스트바인", null, 0, null, 42, 50, 60, 0, -15, 300, null, null],
|
||||
[0, "플레처 모델", null, 0, null, 42, 48, 70, 0, -15, 300, null, null],
|
||||
[0, "보브자 프란다스", null, 0, null, 41, 60, 22, 0, -15, 300, null, null],
|
||||
[0, "시카쿠", null, 0, null, 41, 27, 62, 0, -15, 300, null, null],
|
||||
[0, "실피드", null, 0, null, 41, 29, 63, 0, -15, 300, null, null],
|
||||
[0, "아리시아", null, 0, null, 41, 31, 63, 0, -15, 300, null, null],
|
||||
[0, "에구치", null, 0, null, 41, 20, 48, 0, -15, 300, null, null],
|
||||
[0, "예리코 코론", null, 0, null, 41, 20, 53, 0, -15, 300, null, null],
|
||||
[0, "지블 마크토미", null, 0, null, 41, 21, 60, 0, -15, 300, null, null],
|
||||
[0, "치치쿠리", null, 0, null, 41, 60, 23, 0, -15, 300, null, null],
|
||||
[0, "커티스 아벨렌", null, 0, null, 41, 60, 26, 0, -15, 300, null, null],
|
||||
[0, "페페 위지마", null, 0, null, 41, 53, 60, 0, -15, 300, null, null],
|
||||
[0, "다마네기", null, 0, null, 40, 30, 81, 0, -15, 300, null, null],
|
||||
[0, "사나키아", null, 0, null, 40, 60, 45, 0, -15, 300, null, null],
|
||||
[0, "스즈키", null, 0, null, 40, 24, 61, 0, -15, 300, null, null],
|
||||
[0, "아바토르 스캇트", null, 0, null, 40, 60, 20, 0, -15, 300, null, null],
|
||||
[0, "오기르 롯 스테인", null, 0, null, 40, 20, 54, 0, -15, 300, null, null],
|
||||
[0, "쟈로 쟈스락", null, 0, null, 40, 20, 60, 0, -15, 300, null, null],
|
||||
[0, "쿠제 쿄코", null, 0, null, 40, 25, 70, 0, -15, 300, null, null],
|
||||
[0, "하이디 팡크라우", null, 0, null, 40, 58, 66, 0, -15, 300, null, null],
|
||||
[0, "패트리샤 베이컨", null, 0, null, 39, 55, 60, 0, -15, 300, null, null],
|
||||
[0, "아니", null, 0, null, 38, 30, 63, 0, -15, 300, null, null],
|
||||
[0, "에로피챠 냥코", null, 0, null, 38, 20, 82, 0, -15, 300, null, null],
|
||||
[0, "파파데마스", null, 0, null, 38, 56, 60, 0, -15, 300, null, null],
|
||||
[0, "엘레나 엘알", null, 0, null, 37, 20, 52, 0, -15, 300, null, null],
|
||||
[0, "파티 더 서머", null, 0, null, 37, 57, 60, 0, -15, 300, null, null],
|
||||
[0, "페가수스 포트", null, 0, null, 37, 54, 60, 0, -15, 300, null, null],
|
||||
[0, "빈탄 데스트라", null, 0, null, 36, 75, 21, 0, -15, 300, null, null],
|
||||
[0, "파티", null, 0, null, 36, 58, 60, 0, -15, 300, null, null],
|
||||
[0, "소환짱", null, 0, null, 35, 23, 61, 0, -15, 300, null, null],
|
||||
[0, "줄리아 린담", null, 0, null, 35, 66, 63, 0, -15, 300, null, null],
|
||||
[0, "콩고", null, 0, null, 35, 23, 60, 0, -15, 300, null, null],
|
||||
[0, "타락한 정치인", null, 0, null, 35, 61, 60, 0, -15, 300, null, null],
|
||||
[0, "파멜라 헬만", null, 0, null, 35, 59, 60, 0, -15, 300, null, null],
|
||||
[0, "피니 사나다", null, 0, null, 35, 60, 47, 0, -15, 300, null, null],
|
||||
[0, "루트 아리", null, 0, null, 34, 67, 67, 0, -15, 300, null, null],
|
||||
[0, "사야 프라이디", null, 0, null, 34, 67, 67, 0, -15, 300, null, null],
|
||||
[0, "스파르탄", null, 0, null, 34, 25, 61, 0, -15, 300, null, null],
|
||||
[0, "아마즈사", null, 0, null, 34, 32, 64, 0, -15, 300, null, null],
|
||||
[0, "아이 컴", null, 0, null, 34, 61, 60, 0, -15, 300, null, null],
|
||||
[0, "오노하 메스포스", null, 0, null, 34, 60, 64, 0, -15, 300, null, null],
|
||||
[0, "잇큐", null, 0, null, 34, 12, 85, 0, -15, 300, null, null],
|
||||
[0, "메르시 아처", null, 0, null, 33, 40, 68, 0, -15, 300, null, null],
|
||||
[0, "스테셀 로마노프", null, 0, null, 33, 63, 67, 0, -15, 300, null, null],
|
||||
[0, "시르바렐", null, 0, null, 33, 1, 62, 0, -15, 300, null, null],
|
||||
[0, "아미란 바코프", null, 0, null, 33, 33, 64, 0, -15, 300, null, null],
|
||||
[0, "아시 줄리에타", null, 0, null, 33, 66, 60, 0, -15, 300, null, null],
|
||||
[0, "아키히메", null, 0, null, 33, 66, 60, 0, -15, 300, null, null],
|
||||
[0, "엘리자베스 데스", null, 0, null, 33, 64, 66, 0, -15, 300, null, null],
|
||||
[0, "파르프텐크스", null, 0, null, 33, 66, 66, 0, -15, 300, null, null],
|
||||
[0, "페르에레 칼레트", null, 0, null, 33, 67, 61, 0, -15, 300, null, null],
|
||||
[0, "샤리에라", null, 0, null, 32, 58, 75, 0, -15, 300, null, null],
|
||||
[0, "아베 헤이조", null, 0, null, 32, 34, 64, 0, -15, 300, null, null],
|
||||
[0, "페스포 톤토네", null, 0, null, 31, 64, 67, 0, -15, 300, null, null],
|
||||
[0, "루시 줄리에타", null, 0, null, 30, 65, 65, 0, -15, 300, null, null],
|
||||
[0, "마시 줄리에타", null, 0, null, 30, 70, 65, 0, -15, 300, null, null],
|
||||
[0, "비욘호우 오스만", null, 0, null, 30, 30, 77, 0, -15, 300, null, null],
|
||||
[0, "쿠마노 고로", null, 0, null, 30, 26, 60, 0, -15, 300, null, null],
|
||||
[0, "텐마바시 아리스", null, 0, null, 30, 72, 76, 0, -15, 300, null, null],
|
||||
[0, "김치 드라이브", null, 0, null, 29, 67, 70, 0, -15, 300, null, null],
|
||||
[0, "플루페트", null, 0, null, 29, 40, 88, 0, -15, 300, null, null],
|
||||
[0, "3G", null, 0, null, 28, 30, 89, 0, -15, 300, null, null],
|
||||
[0, "블랙 로터스", null, 0, null, 28, 55, 77, 0, -15, 300, null, null],
|
||||
[0, "스트로가노프", null, 0, null, 28, 82, 45, 0, -15, 300, null, null],
|
||||
[0, "메림 체르", null, 0, null, 20, 42, 97, 0, -15, 300, null, null],
|
||||
[0, "아오이", null, 0, null, 20, 10, 69, 0, -15, 300, null, null],
|
||||
[0, "반 데로스", null, 0, null, 15, 49, 66, 0, -15, 300, null, null],
|
||||
[0, "베키", null, 0, null, 15, 54, 71, 0, -15, 300, null, null],
|
||||
[0, "벨", null, 0, null, 15, 54, 71, 0, -15, 300, null, null],
|
||||
[0, "블레이저", null, 0, null, 15, 49, 66, 0, -15, 300, null, null],
|
||||
[0, "비스케타 벨룬즈", null, 0, null, 15, 80, 80, 0, -15, 300, null, null],
|
||||
[0, "빗치 고르치", null, 0, null, 15, 49, 66, 0, -15, 300, null, null],
|
||||
[0, "사유", null, 0, null, 15, 49, 66, 0, -15, 300, null, null],
|
||||
[0, "산카쿠", null, 0, null, 15, 49, 66, 0, -15, 300, null, null],
|
||||
[0, "삼손 막시모프", null, 0, null, 15, 77, 60, 0, -15, 300, null, null],
|
||||
[0, "세일러", null, 0, null, 15, 49, 68, 0, -15, 300, null, null],
|
||||
[0, "세키토리", null, 0, null, 15, 49, 66, 0, -15, 300, null, null],
|
||||
[0, "세티나 파보", null, 0, null, 15, 49, 66, 0, -15, 300, null, null],
|
||||
[0, "세피아 랜드스타", null, 0, null, 15, 49, 66, 0, -15, 300, null, null],
|
||||
[0, "아나셀 카스포라", null, 0, null, 10, 20, 60, 0, -15, 300, null, null],
|
||||
[0, "크레인", null, 0, null, 10, 52, 85, 0, -15, 300, null, null]
|
||||
],
|
||||
"general_ex":[
|
||||
[999, "KD", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
@@ -558,14 +557,15 @@
|
||||
[999, "겟페이", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "나이치사", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "네프라카스", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "다케다 신겐", "다케다-신겐", 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "다케다 신겐", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "도키치로", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "라 바스왈드", "라-바스왈드", 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "라 바스왈드", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "라사움", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "렌치 랜천", "렌치-랜천", 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "렌치 랜천", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "로벤 팡", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "루드라사움", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "리틀 프린세스", "리틀-프린세스", 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "리틀 프린세스", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "릴 가드라스", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "마소우 소조", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "스랄", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "시스템", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
@@ -573,22 +573,21 @@
|
||||
[999, "아마테라스", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "아벨", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "아스마제", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "여신 앨리스", "여신-앨리스", 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "오다 키쵸", "오다-키쵸", 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "여신 앨리스", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "오다 키쵸", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "와카", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "웬즈딩 리자스", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "자나게스 헬만", "자나게스-헬만", 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "자나게스 헬만", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "질", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "콜라", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "쿠엘플란", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "쿠크루쿠크루", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "테로 에티에노", "테로-에티에노", 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "파슬리R제스", "파슬리R제스", 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "테로 에티에노", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "파슬리R제스", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "파엘리나", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "프란나", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "프란체스카", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "하모니트", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "후지와라", null, 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "릴 가드라스", "릴-가드라스", 0, null, 1, 1, 1, 0, -15, 300, null, null],
|
||||
[999, "콜라", null, 0, null, 1, 1, 1, 0, -15, 300, null, null]
|
||||
[999, "후지와라", null, 0, null, 1, 1, 1, 0, -15, 300, null, null]
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ class GameUnitConst extends GameUnitConstBase
|
||||
100, 100, 7, 0, 0, 99, 9,
|
||||
999999, null, null, 999999,
|
||||
[],//성벽은 공격할 수 없다.
|
||||
[],
|
||||
[self::T_FOOTMAN=>1.2],
|
||||
['성벽입니다.','생성할 수 없습니다.']
|
||||
],
|
||||
|
||||
|
||||
+2
-2
@@ -627,8 +627,8 @@ CREATE TABLE IF NOT EXISTS `emperior` (
|
||||
`l6pic` CHAR(32) NULL DEFAULT '',
|
||||
`l5name` CHAR(64) NULL DEFAULT '',
|
||||
`l5pic` CHAR(32) NULL DEFAULT '',
|
||||
`tiger` CHAR(64) NULL DEFAULT '',
|
||||
`eagle` CHAR(64) NULL DEFAULT '',
|
||||
`tiger` VARCHAR(128) NULL DEFAULT '',
|
||||
`eagle` VARCHAR(128) NULL DEFAULT '',
|
||||
`gen` TEXT NULL DEFAULT '',
|
||||
`history` MEDIUMTEXT NULL DEFAULT '',
|
||||
`aux` MEDIUMTEXT NULL DEFAULT '' COMMENT 'json',
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<a href="/bbs/history2" target="_blank"><button class="toolbarButton">개인 열전</button></a>
|
||||
<a href="/bbs/history3" target="_blank"><button class="toolbarButton">국가 열전</button></a>
|
||||
<a href="/bbs/patch" target="_blank"><button class="toolbarButton">패치 내역</button></a>
|
||||
<a href="../i_other/help.php" target="_blank"><button class="toolbarButton">튜토리얼</button></a>
|
||||
<a href="battle_simulator" target="_blank"><button class="toolbarButton">전투 시뮬레이터</button></a>
|
||||
<a href="<?=$site?>" target="_blank"><button class="toolbarButton"><?=$call?></button></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user