0.0.8-alpha6
・ JSHintベースに諸々修正
@@ -31,7 +31,7 @@ | ||
31 | 31 | |
32 | 32 | var THIEF = { |
33 | 33 | conf : { |
34 | - id : 'Thief', // was used "HTML's id", and "System tag". | |
34 | + id : 'Thief', // was used "id of HTML", and "System tag". | |
35 | 35 | textColor : '#FFFFFF', |
36 | 36 | emTextColor : '#FF0000', |
37 | 37 | bgColor : '#000000', |
@@ -39,7 +39,7 @@ | ||
39 | 39 | gridStyle : '0px none #888888', // css td border options |
40 | 40 | mapWidth : 60, |
41 | 41 | mapHeight : 20, |
42 | - languagePriolity : ['AUTO', 'en', 'ja'], | |
42 | + languagePriority : ['AUTO', 'en', 'ja'], | |
43 | 43 | statusPosition : 'bottom', // top or bottom |
44 | 44 | statusLineFormat : [ |
45 | 45 | '${THIEF.global.actDG.%get@name%}:${THIEF.global.actDG.nowLV}' + |
@@ -61,11 +61,11 @@ | ||
61 | 61 | messagePosition : 'top', // top or bottom |
62 | 62 | messageLines : 3, |
63 | 63 | messageHistorySize : 256, |
64 | - // infomationOverlap : true, | |
64 | + // informationOverlap : true, | |
65 | 65 | mainWindowPosition : 'left', // css float option (left, right, none) |
66 | 66 | msgOverflow : 'hidden', // css overflow option (visible, scroll, hidden, auto) |
67 | 67 | itemSort : ['$', '"', ']', '[', '%', '!', '?', '+', '=', '/', '(', ')', '*' ], |
68 | - debugmode : true | |
68 | + debugMode : true | |
69 | 69 | }, |
70 | 70 | |
71 | 71 | global : { |
@@ -72,18 +72,18 @@ | ||
72 | 72 | actLV : null, |
73 | 73 | actDG : null, |
74 | 74 | turn : 0, |
75 | - keycode : NaN, | |
75 | + keyCode : NaN, | |
76 | 76 | hist : [], |
77 | 77 | adventurer : null, // Player |
78 | 78 | size : { |
79 | - Window : {width : Number.NaN, height : Number.NaN}, | |
80 | - Main : {width : Number.NaN, height : Number.NaN}, // Input, Message, Map, Status | |
81 | - Input : {width : Number.NaN, height : Number.NaN}, // 入力欄 | |
82 | - Message : {width : Number.NaN, height : Number.NaN}, // メッセージ欄(入力上部) | |
83 | - Map : {width : Number.NaN, height : Number.NaN}, // マップ | |
84 | - Status : {width : Number.NaN, height : Number.NaN}, // ステータス | |
85 | - Infomation : {width : Number.NaN, height : Number.NaN}, // 情報出力(インベントリの内容など) | |
86 | - Debug : {width : Number.NaN, height : Number.NaN} // デバッグ情報 | |
79 | + Window : {width : -1, height : -1}, | |
80 | + Main : {width : -1, height : -1}, // Input, Message, Map, Status | |
81 | + Input : {width : -1, height : -1}, // 入力欄 | |
82 | + Message : {width : -1, height : -1}, // メッセージ欄(入力上部) | |
83 | + Map : {width : -1, height : -1}, // マップ | |
84 | + Status : {width : -1, height : -1}, // ステータス | |
85 | + Information : {width : -1, height : -1}, // 情報出力(インベントリの内容など) | |
86 | + Debug : {width : -1, height : -1} // デバッグ情報 | |
87 | 87 | } |
88 | 88 | }, |
89 | 89 |
@@ -111,13 +111,58 @@ | ||
111 | 111 | LT : '<'.charCodeAt(0), |
112 | 112 | GT : '>'.charCodeAt(0), |
113 | 113 | Asterisk : '*'.charCodeAt(0), |
114 | - A : 65, B : 66, C : 67, D : 68, E : 69, F : 70, G : 71, H : 72, I : 73, | |
115 | - J : 74, K : 75, L : 76, M : 77, N : 78, O : 79, P : 80, Q : 81, R : 82, | |
116 | - S : 83, T : 84, U : 85, V : 86, W : 87, X : 88, Y : 89, Z : 90, | |
117 | - a : 97, b : 98, c : 99, d : 100, e : 101, f : 102, g : 103, h : 104, | |
118 | - i : 105, j : 106, k : 107, l : 108, m : 109, n : 110, o : 111, p : 112, | |
119 | - q : 113, r : 114, s : 115, t : 116, u : 117, v : 118, w : 119, x : 120, | |
120 | - y : 121, z : 122, | |
114 | + A : 65, | |
115 | + B : 66, | |
116 | + C : 67, | |
117 | + D : 68, | |
118 | + E : 69, | |
119 | + F : 70, | |
120 | + G : 71, | |
121 | + H : 72, | |
122 | + I : 73, | |
123 | + J : 74, | |
124 | + K : 75, | |
125 | + L : 76, | |
126 | + M : 77, | |
127 | + N : 78, | |
128 | + O : 79, | |
129 | + P : 80, | |
130 | + Q : 81, | |
131 | + R : 82, | |
132 | + S : 83, | |
133 | + T : 84, | |
134 | + U : 85, | |
135 | + V : 86, | |
136 | + W : 87, | |
137 | + X : 88, | |
138 | + Y : 89, | |
139 | + Z : 90, | |
140 | + a : 97, | |
141 | + b : 98, | |
142 | + c : 99, | |
143 | + d : 100, | |
144 | + e : 101, | |
145 | + f : 102, | |
146 | + g : 103, | |
147 | + h : 104, | |
148 | + i : 105, | |
149 | + j : 106, | |
150 | + k : 107, | |
151 | + l : 108, | |
152 | + m : 109, | |
153 | + n : 110, | |
154 | + o : 111, | |
155 | + p : 112, | |
156 | + q : 113, | |
157 | + r : 114, | |
158 | + s : 115, | |
159 | + t : 116, | |
160 | + u : 117, | |
161 | + v : 118, | |
162 | + w : 119, | |
163 | + x : 120, | |
164 | + y : 121, | |
165 | + z : 122, | |
121 | 166 | // [ = WinKey = 91 |
122 | 167 | // \ = WinKey = 92 |
123 | 168 | F1 : 112, // = p |
@@ -155,7 +200,7 @@ | ||
155 | 200 | actObjectList : 'actObjectList', |
156 | 201 | isActive : 'isActive', |
157 | 202 | ct : 'ct', |
158 | - maxct : 'maxct', | |
203 | + maxCT : 'maxCT', | |
159 | 204 | dex : 'dex', |
160 | 205 | hp : 'hp', |
161 | 206 | attack : 'attack', |
@@ -174,7 +219,7 @@ | ||
174 | 219 | // |
175 | 220 | |
176 | 221 | //noinspection JSUnusedGlobalSymbols,JSValidateTypes |
177 | -window.onload = function (onload) { | |
222 | +window.onload = (function (onload) { | |
178 | 223 | return function () { |
179 | 224 | if (!!onload) { |
180 | 225 | onload(); |
@@ -181,10 +226,10 @@ | ||
181 | 226 | } |
182 | 227 | THIEF.util.init(); |
183 | 228 | }; |
184 | -}(window.onload); | |
229 | +}(window.onload)); | |
185 | 230 | |
186 | 231 | //noinspection JSUnusedGlobalSymbols |
187 | -window.onresize = function (onresize) { | |
232 | +window.onresize = (function (onresize) { | |
188 | 233 | return function () { |
189 | 234 | |
190 | 235 | if (!!onresize) { |
@@ -196,13 +241,9 @@ | ||
196 | 241 | THIEF.global.size.Window.height = window.innerHeight; |
197 | 242 | } else { |
198 | 243 | THIEF.global.size.Window.width = |
199 | - document.documentElement.clientWidth | |
200 | - || document.body.clientWidth | |
201 | - || document.body.scrollWidth; | |
244 | + document.documentElement.clientWidth || document.body.clientWidth || document.body.scrollWidth; | |
202 | 245 | THIEF.global.size.Window.height = |
203 | - document.documentElement.clientHeight | |
204 | - || document.body.clientHeight | |
205 | - || document.body.scrollHeight; | |
246 | + document.documentElement.clientHeight || document.body.clientHeight || document.body.scrollHeight; | |
206 | 247 | } |
207 | 248 | |
208 | 249 | /* |
@@ -222,20 +263,20 @@ | ||
222 | 263 | THIEF.global.size.Debug = document.getElementById('Debug').offsetHeight; |
223 | 264 | */ |
224 | 265 | }; |
225 | -}(window.onresize); | |
266 | +}(window.onresize)); | |
226 | 267 | |
227 | 268 | |
228 | 269 | //noinspection JSUnusedGlobalSymbols |
229 | -document.onkeypress = function (onkeypress) { | |
270 | +document.onkeypress = (function (onkeypress) { | |
230 | 271 | return function (event) { |
231 | 272 | if (!!onkeypress) { |
232 | 273 | onkeypress(event); |
233 | 274 | } |
234 | - THIEF.global.keycode = THIEF.util.getKeyCode(event); | |
275 | + THIEF.global.keyCode = THIEF.util.getKeyCode(event); | |
235 | 276 | THIEF.util.next(); |
236 | - THIEF.global.keycode = 0; | |
277 | + THIEF.global.keyCode = 0; | |
237 | 278 | }; |
238 | -}(document.onkeypress); | |
279 | +}(document.onkeypress)); | |
239 | 280 | |
240 | 281 | if (!Object.create) { |
241 | 282 | Object.create = function (o) { |
@@ -247,16 +288,18 @@ | ||
247 | 288 | } |
248 | 289 | |
249 | 290 | if (!Math.sign) { |
291 | + var result; | |
250 | 292 | Math.sign = function (num) { |
251 | 293 | if (num > 0) { |
252 | - return 1; | |
294 | + result = 1; | |
253 | 295 | } else { |
254 | 296 | if (num < 0) { |
255 | - return -1; | |
297 | + result = -1; | |
256 | 298 | } else { |
257 | - return 0; | |
299 | + result = 0; | |
258 | 300 | } |
259 | 301 | } |
302 | + return result; | |
260 | 303 | }; |
261 | 304 | } |
262 | 305 |
@@ -267,26 +310,20 @@ | ||
267 | 310 | val += Math.round(Math.random() * sides + 0.5); |
268 | 311 | } |
269 | 312 | return val; |
270 | - } | |
313 | + }; | |
271 | 314 | } |
272 | 315 | |
273 | 316 | if (!Array.prototype.remove) { |
274 | 317 | Array.prototype.remove = function (o) { |
275 | - var len = this.length; | |
276 | 318 | var result = false; |
277 | - for (var i = 0; i < len; i++) { | |
278 | - if (!result && this[i] === o) { | |
319 | + for (var i = 0; i < this.length; i++) { | |
320 | + if ( this[i] === o ) { | |
321 | + this.splice(i, 1); | |
322 | + //noinspection AssignmentToForLoopParameterJS | |
323 | + i--; | |
279 | 324 | result = true; |
280 | - delete this[i]; | |
281 | 325 | } |
282 | - if (result) { | |
283 | - // shifting | |
284 | - this[i] = this[i + 1]; | |
285 | - } | |
286 | 326 | } |
287 | - if (result) { | |
288 | - this.length = len - 1; | |
289 | - } | |
290 | 327 | return result; |
291 | 328 | }; |
292 | 329 | } |
@@ -412,7 +449,7 @@ | ||
412 | 449 | } else { |
413 | 450 | obj[THIEF.PROP.alphabet] = alp; |
414 | 451 | } |
415 | - THIEF.html.addDebugMessage('新たに ' + alp + ' を割り当てた。') | |
452 | + THIEF.html.addDebugMessage('新たに ' + alp + ' を割り当てた。'); | |
416 | 453 | } |
417 | 454 | THIEF.html.addDebugMessage('...アルファベットの割り当て処理完了。'); |
418 | 455 | } |
@@ -482,7 +519,7 @@ | ||
482 | 519 | |
483 | 520 | var free; |
484 | 521 | |
485 | - outloop : for (var ancY = startY; ancY < invHeight; ancY++) { | |
522 | + outLoop : for (var ancY = startY; ancY < invHeight; ancY++) { | |
486 | 523 | //alert(ancY + '行目を処理...'); |
487 | 524 | for (var ancX = startX; ancX < invWidth; ancX++) { |
488 | 525 | //alert(ancX + ', ' + ancY); |
@@ -490,7 +527,7 @@ | ||
490 | 527 | |
491 | 528 | //THIEF.html.addDebugMessage(ancX + ', ' + ancY + 'を確認...'); |
492 | 529 | |
493 | - inloop : for (var targetY = ancY; targetY < ancY + objInvShapeHeight; targetY++) { | |
530 | + inLoop : for (var targetY = ancY; targetY < ancY + objInvShapeHeight; targetY++) { | |
494 | 531 | for (var targetX = ancX + objInvShapeWight - 1; targetX >= ancX; targetX--) { |
495 | 532 | if (this.inventory && this.inventory[targetX] && this.inventory[targetX][targetY]) { |
496 | 533 | if (this.inventory[targetX][targetY].length <= invDepth) { |
@@ -505,13 +542,13 @@ | ||
505 | 542 | free = false; |
506 | 543 | ancX = targetX; |
507 | 544 | //THIEF.html.addDebugMessage(targetX + ', ' + targetY + 'にある' + lastObj.get(THIEF.PARAM.name) + 'には重ねられない'); |
508 | - break inloop; | |
545 | + break inLoop; | |
509 | 546 | } |
510 | 547 | } else { |
511 | 548 | free = false; |
512 | 549 | ancX = targetX; |
513 | 550 | //THIEF.html.addDebugMessage(targetX + ', ' + targetY + ' は高さが足りないからダメ'); |
514 | - break inloop; | |
551 | + break inLoop; | |
515 | 552 | } |
516 | 553 | |
517 | 554 |
@@ -528,10 +565,10 @@ | ||
528 | 565 | width : objInvShapeWight, |
529 | 566 | height : objInvShapeHeight |
530 | 567 | }; |
531 | - break outloop; | |
568 | + break outLoop; | |
532 | 569 | } |
533 | 570 | if (once) { |
534 | - break outloop; | |
571 | + break outLoop; | |
535 | 572 | } |
536 | 573 | } |
537 | 574 | } |
@@ -582,9 +619,9 @@ | ||
582 | 619 | THIEF.html.addMessage(THIEF.util.getText(THIEF.Data.Text.killBy, this.get(THIEF.PROP.displayName), obj.get(THIEF.PROP.displayName))); |
583 | 620 | THIEF.global.actLV.removeFromInventory(this); |
584 | 621 | this.action = function () { |
585 | - return true | |
622 | + return true; | |
586 | 623 | }; |
587 | - THIEF.html.addDebugMessage('...死亡処理を完了。') | |
624 | + THIEF.html.addDebugMessage('...死亡処理を完了。'); | |
588 | 625 | } |
589 | 626 | |
590 | 627 | THIEF.html.addDebugMessage('...攻撃処理を完了。'); |
@@ -716,7 +753,7 @@ | ||
716 | 753 | // 選択用関数返却 |
717 | 754 | return function () { |
718 | 755 | var finish = false; |
719 | - switch (THIEF.global.keycode) { | |
756 | + switch (THIEF.global.keyCode) { | |
720 | 757 | |
721 | 758 | case 0: |
722 | 759 | break; |
@@ -751,8 +788,8 @@ | ||
751 | 788 | break; |
752 | 789 | |
753 | 790 | default: |
754 | - var item = targets[String.fromCharCode(THIEF.global.keycode)]; | |
755 | - var itemID = THIEF.conf.id + '_' + String.fromCharCode(THIEF.global.keycode); | |
791 | + var item = targets[String.fromCharCode(THIEF.global.keyCode)]; | |
792 | + var itemID = THIEF.conf.id + '_' + String.fromCharCode(THIEF.global.keyCode); | |
756 | 793 | if (typeof item !== 'undefined') { |
757 | 794 | if (document.getElementById(itemID).innerHTML === ' - ') { |
758 | 795 | document.getElementById(itemID).innerHTML = ' + '; |
@@ -772,7 +809,7 @@ | ||
772 | 809 | var result = false; |
773 | 810 | if (finish) { |
774 | 811 | // 画面クリア |
775 | - THIEF.html.clearInfomation(''); | |
812 | + THIEF.html.clearInfomation(); | |
776 | 813 | |
777 | 814 | // アクションを元に戻す |
778 | 815 | this.action = THIEF.func.method.action; |
@@ -915,10 +952,8 @@ | ||
915 | 952 | |
916 | 953 | if (this[THIEF.PROP.actObjectList]) { |
917 | 954 | // アクティブリストを降順にソート |
918 | - this[THIEF.PROP.actObjectList].sort(function (a, b) { | |
919 | - return b.ct - a.ct; | |
920 | - }); | |
921 | - | |
955 | + var sortOrder = function (a, b) { return b.ct - a.ct; }; | |
956 | + this[THIEF.PROP.actObjectList].sort(sortOrder); | |
922 | 957 | while (this[THIEF.PROP.actObjectList][0] && this[THIEF.PROP.actObjectList][0].ct >= 100) { |
923 | 958 | var obj = this[THIEF.PROP.actObjectList][0]; |
924 | 959 | if (obj.ct >= 100) { |
@@ -933,9 +968,7 @@ | ||
933 | 968 | } |
934 | 969 | |
935 | 970 | // アクティブリストを降順にソート |
936 | - this[THIEF.PROP.actObjectList].sort(function (a, b) { | |
937 | - return b.ct - a.ct; | |
938 | - }); | |
971 | + this[THIEF.PROP.actObjectList].sort(sortOrder); | |
939 | 972 | } |
940 | 973 | } |
941 | 974 | return result; |
@@ -972,11 +1005,11 @@ | ||
972 | 1005 | THIEF.func.method.manual = function () { |
973 | 1006 | |
974 | 1007 | var finish; |
975 | - var code = THIEF.global.keycode; | |
1008 | + var code = THIEF.global.keyCode; | |
976 | 1009 | |
977 | 1010 | if (code === 0 || isNaN(code)) { |
978 | 1011 | finish = false; |
979 | - THIEF.html.addDebugMessage('無効なキー入力のため、何の処理もしない。') | |
1012 | + THIEF.html.addDebugMessage('無効なキー入力のため、何の処理もしない。'); | |
980 | 1013 | } else { |
981 | 1014 | THIEF.html.addDebugMessage(String.fromCharCode(code) + '(' + code + ')の入力に対する処理を開始...'); |
982 | 1015 |
@@ -1312,7 +1345,7 @@ | ||
1312 | 1345 | |
1313 | 1346 | this.action = function () { |
1314 | 1347 | var finish = false; |
1315 | - switch (THIEF.global.keycode) { | |
1348 | + switch (THIEF.global.keyCode) { | |
1316 | 1349 | |
1317 | 1350 | case key.Esc: |
1318 | 1351 | finish = true; |
@@ -1327,6 +1360,7 @@ | ||
1327 | 1360 | case key.LT: |
1328 | 1361 | index--; |
1329 | 1362 | if (index < 0) { |
1363 | + //noinspection ReuseOfLocalVariableJS | |
1330 | 1364 | index = THIEF.global.hist.length - 1; |
1331 | 1365 | } |
1332 | 1366 | break; |
@@ -1341,6 +1375,7 @@ | ||
1341 | 1375 | case key.GT: |
1342 | 1376 | index++; |
1343 | 1377 | if (index >= THIEF.global.hist.length) { |
1378 | + //noinspection ReuseOfLocalVariableJS | |
1344 | 1379 | index = 0; |
1345 | 1380 | } |
1346 | 1381 | break; |
@@ -1351,7 +1386,7 @@ | ||
1351 | 1386 | |
1352 | 1387 | if (finish) { |
1353 | 1388 | // 画面クリア |
1354 | - THIEF.html.clearInfomation(''); | |
1389 | + THIEF.html.clearInfomation(); | |
1355 | 1390 | // アクションを元に戻す |
1356 | 1391 | this.action = THIEF.func.method.action; |
1357 | 1392 | } else { |
@@ -1396,25 +1431,25 @@ | ||
1396 | 1431 | this.action = function () { |
1397 | 1432 | var finish = false; |
1398 | 1433 | var update = false; |
1399 | - if ((THIEF.KEY.a <= THIEF.global.keycode && THIEF.global.keycode <= THIEF.KEY.z) || (THIEF.KEY.A <= THIEF.global.keycode && THIEF.global.keycode <= THIEF.KEY.Z)) { | |
1400 | - line += String.fromCharCode(THIEF.global.keycode); | |
1434 | + if ((THIEF.KEY.a <= THIEF.global.keyCode && THIEF.global.keyCode <= THIEF.KEY.z) || (THIEF.KEY.A <= THIEF.global.keyCode && THIEF.global.keyCode <= THIEF.KEY.Z)) { | |
1435 | + line += String.fromCharCode(THIEF.global.keyCode); | |
1401 | 1436 | update = true; |
1402 | - } else if (THIEF.global.keycode === THIEF.KEY.Space) { | |
1437 | + } else if (THIEF.global.keyCode === THIEF.KEY.Space) { | |
1403 | 1438 | line += ' '; |
1404 | 1439 | update = true; |
1405 | - } else if (THIEF.global.keycode === THIEF.KEY.Backspace) { | |
1440 | + } else if (THIEF.global.keyCode === THIEF.KEY.Backspace) { | |
1406 | 1441 | line = line.slice(0, line.length - 1); |
1407 | 1442 | update = true; |
1408 | - } else if (THIEF.global.keycode === THIEF.KEY.Esc) { | |
1443 | + } else if (THIEF.global.keyCode === THIEF.KEY.Esc) { | |
1409 | 1444 | THIEF.html.setInput(' '); |
1410 | 1445 | THIEF.html.clearInfomation(); |
1411 | 1446 | this.action = THIEF.func.method.action; |
1412 | - } else if (THIEF.global.keycode === THIEF.KEY.Enter) { | |
1447 | + } else if (THIEF.global.keyCode === THIEF.KEY.Enter) { | |
1413 | 1448 | THIEF.html.setInput(' '); |
1414 | 1449 | THIEF.html.clearInfomation(); |
1415 | 1450 | this.action = THIEF.func.method.action; |
1416 | 1451 | if (typeof THIEF.Data.Keymap[target].cmd === 'function') { |
1417 | - THIEF.global.keycode = 0; | |
1452 | + THIEF.global.keyCode = 0; | |
1418 | 1453 | finish = THIEF.Data.Keymap[target].cmd.call(this); |
1419 | 1454 | } else { |
1420 | 1455 | THIEF.html.addMessage(THIEF.util.getText(THIEF.Data.Text.commandNotFound, line)); |
@@ -1435,6 +1470,7 @@ | ||
1435 | 1470 | THIEF.html.addInput('<span style="color:' + THIEF.conf.grayColor + '">' + target.slice(line.length, target.length) + '</span>'); |
1436 | 1471 | } else { |
1437 | 1472 | THIEF.html.addInput('¦'); |
1473 | + //noinspection ReuseOfLocalVariableJS | |
1438 | 1474 | target = ''; |
1439 | 1475 | } |
1440 | 1476 | } |
@@ -1625,6 +1661,7 @@ | ||
1625 | 1661 | } |
1626 | 1662 | |
1627 | 1663 | THIEF.html.addDebugMessage('アクティブになったオブジェクトの処理を実施...'); |
1664 | + //noinspection ReuseOfLocalVariableJS | |
1628 | 1665 | completion = THIEF.global.actLV.execActiveObjects(); |
1629 | 1666 | THIEF.html.addDebugMessage('...アクティブになったオブジェクトの処理を完了'); |
1630 | 1667 |
@@ -1631,12 +1668,15 @@ | ||
1631 | 1668 | THIEF.util.updateStatus(); |
1632 | 1669 | |
1633 | 1670 | if (compCounter < 0) { |
1671 | + //noinspection ReuseOfLocalVariableJS | |
1634 | 1672 | compCounter = 15; |
1673 | + //noinspection ReuseOfLocalVariableJS | |
1635 | 1674 | completion = false; |
1636 | - THIEF.html.addDebugMessage('無限ループにならないように、15回以上ループするなら強制的にブレイク。') | |
1675 | + THIEF.html.addDebugMessage('無限ループにならないように、15回以上ループするなら強制的にブレイク。'); | |
1637 | 1676 | } else if (completion) { |
1638 | 1677 | compCounter--; |
1639 | 1678 | } else { |
1679 | + //noinspection ReuseOfLocalVariableJS | |
1640 | 1680 | compCounter = 15; |
1641 | 1681 | } |
1642 | 1682 |
@@ -1677,9 +1717,9 @@ | ||
1677 | 1717 | if (document.all) { |
1678 | 1718 | code = event.keyCode; |
1679 | 1719 | } else if (document.getElementById) { |
1680 | - code = parseInt((parseInt(e.keyCode) === 0) ? e.charCode : e.keyCode); | |
1720 | + code = parseInt((parseInt(e.keyCode, 10) === 0) ? e.charCode : e.keyCode, 10); | |
1681 | 1721 | } else { // document.layers |
1682 | - code = parseInt(e.which.toString()); | |
1722 | + code = parseInt(e.which.toString(), 10); | |
1683 | 1723 | } |
1684 | 1724 | |
1685 | 1725 |
@@ -1769,6 +1809,7 @@ | ||
1769 | 1809 | //THIEF.html.addDebugMessage('オブジェクトの生成処理を開始...'); |
1770 | 1810 | //THIEF.html.addDebugMessage('マスターの有無を確認...'); |
1771 | 1811 | |
1812 | + var propName; | |
1772 | 1813 | if (typeof obj !== 'undefined' && typeof obj.uniqNumber === 'undefined') { |
1773 | 1814 | THIEF.html.addDebugMessage('要求オブジェクトのマスタが存在しないので作成開始...'); |
1774 | 1815 |
@@ -1789,7 +1830,6 @@ | ||
1789 | 1830 | THIEF.html.addDebugMessage('this,' + stack.toString() + '.'); |
1790 | 1831 | |
1791 | 1832 | // 以下の順番で作成します |
1792 | - var propName; | |
1793 | 1833 | while (stack.length > 0) { |
1794 | 1834 | inhPrev = inh || '$'; |
1795 | 1835 | inh = stack.pop(); |
@@ -1854,6 +1894,7 @@ | ||
1854 | 1894 | THIEF.html.addDebugMessage('...作成完了'); |
1855 | 1895 | } |
1856 | 1896 | } |
1897 | + //noinspection ReuseOfLocalVariableJS | |
1857 | 1898 | inhPrev = inh; |
1858 | 1899 | |
1859 | 1900 | THIEF.html.addDebugMessage('...作成完了'); |
@@ -2010,7 +2051,9 @@ | ||
2010 | 2051 | THIEF.html.addDebugMessage('複数のテンプレートがしていされているため逐次的に書式コピー'); |
2011 | 2052 | for (var i = 0; i < dun[lvNum].level.length; i++) { |
2012 | 2053 | for (var name in THIEF.Data.Scenario.$Template[dun[lvNum].level[i]]) { |
2013 | - template[name] = THIEF.Data.Scenario.$Template[dun[lvNum].level[i]][name] | |
2054 | + if (THIEF.Data.Scenario.$Template[dun[lvNum].level[i]][name] !== 'undefined'){ | |
2055 | + template[name] = THIEF.Data.Scenario.$Template[dun[lvNum].level[i]][name]; | |
2056 | + } | |
2014 | 2057 | } |
2015 | 2058 | } |
2016 | 2059 | } |
@@ -2095,7 +2138,7 @@ | ||
2095 | 2138 | branchWay.nextDun[branchWay.nextLv].branchDun = dun; |
2096 | 2139 | branchWay.nextDun[branchWay.nextLv].branchDir = 'up'; |
2097 | 2140 | break; |
2098 | - case 'teleport': | |
2141 | + //case 'teleport': | |
2099 | 2142 | default: |
2100 | 2143 | break; |
2101 | 2144 | } |
@@ -2103,7 +2146,7 @@ | ||
2103 | 2146 | if (template.branchDirPoint) { |
2104 | 2147 | branchWay.point = template.branchDirPoint; |
2105 | 2148 | } else { |
2106 | - branchWay.point = level.getInventoryRandomFreeSpace(branchWay) | |
2149 | + branchWay.point = level.getInventoryRandomFreeSpace(branchWay); | |
2107 | 2150 | } |
2108 | 2151 | branchWay.color = 'red'; |
2109 | 2152 | branchWay.isBranch = true; |
@@ -2145,16 +2188,18 @@ | ||
2145 | 2188 | var spaceEdges = [ |
2146 | 2189 | {x : 1, y : 1} |
2147 | 2190 | ]; // 左上は常にスペースの角のため |
2148 | - var roonCount = 0; | |
2149 | - var roop = 0; | |
2150 | - var roopLimit = 300; // 300 回くらい試行して駄目ならあきらめる | |
2151 | - while (roonCount < maxRooms && roop < roopLimit) { | |
2152 | - roop++; | |
2191 | + var loopCounter = 0; | |
2192 | + var loop = 0; | |
2193 | + var loopLimit = 300; // 300 回くらい試行して駄目ならあきらめる | |
2194 | + var ay; | |
2195 | + var ax; | |
2196 | + while (loopCounter < maxRooms && loop < loopLimit) { | |
2197 | + loop++; | |
2153 | 2198 | |
2154 | 2199 | //アンカーは分割線(通路)の開始位置 |
2155 | 2200 | //アンカーを計算(周囲 2(=1*2) マスと、さらに 2 マス(部屋壁の厚み分) は引いている) |
2156 | - var ax = Math.floor((Math.random() * (width - width * 0.1 - 4) ) + width * 0.1 + 2); | |
2157 | - var ay = Math.floor((Math.random() * (height - height * 0.1 - 4) ) + height * 0.1 + 2); | |
2201 | + ax = Math.floor((Math.random() * (width - width * 0.1 - 4) ) + width * 0.1 + 2); | |
2202 | + ay = Math.floor((Math.random() * (height - height * 0.1 - 4) ) + height * 0.1 + 2); | |
2158 | 2203 | |
2159 | 2204 | // アンカーに、既に部屋があればやり直し |
2160 | 2205 | if (map[ax][ay].length !== 0) { |
@@ -2212,7 +2257,7 @@ | ||
2212 | 2257 | |
2213 | 2258 | // 一般的にマップ全体は横幅の方が長いと仮定している |
2214 | 2259 | // 分割は、最初は縦、次は横の方がなんとなく綺麗になる |
2215 | - if ((roonCount % 2 === 0 && my > mx) || (roonCount % 2 === 1 && my <= mx)) { | |
2260 | + if ((loopCounter % 2 === 0 && my > mx) || (loopCounter % 2 === 1 && my <= mx)) { | |
2216 | 2261 | continue; |
2217 | 2262 | } |
2218 | 2263 |
@@ -2259,7 +2304,7 @@ | ||
2259 | 2304 | } |
2260 | 2305 | } |
2261 | 2306 | } |
2262 | - roonCount++; | |
2307 | + loopCounter++; | |
2263 | 2308 | } |
2264 | 2309 | |
2265 | 2310 |
@@ -2323,6 +2368,45 @@ | ||
2323 | 2368 | |
2324 | 2369 | // 部屋の位置関係を取得し、縦横各1通を生成する |
2325 | 2370 | // 部屋は次の部屋と比較され、最後の部屋は最初の部屋と比較される(孤立する部屋を作らないようにするため) |
2371 | + | |
2372 | + // 通路を作成用関数 | |
2373 | + // 二度ドアを作るか、通路に当たったら終了 | |
2374 | + var setFloor = function (x, y, vx, vy) { | |
2375 | + var index = 0; | |
2376 | + var wallCounter = 0; | |
2377 | + var diffX; | |
2378 | + var diffY; | |
2379 | + var flr; | |
2380 | + while (true) { | |
2381 | + diffX = index * vx; | |
2382 | + diffY = index * vy; | |
2383 | + flr = map[ax - diffX][ay - diffY].getLast(); | |
2384 | + index++; | |
2385 | + | |
2386 | + // 名にもないのであればとりあえず通路を作る | |
2387 | + if (typeof flr === 'undefined') { | |
2388 | + map[ax - diffX][ay - diffY].push(THIEF.util.factory(THIEF.Data.Obj.DarkFloor)); | |
2389 | + continue; | |
2390 | + } | |
2391 | + | |
2392 | + // 壁ならば通路に置換 | |
2393 | + if (flr.isBasedOn(THIEF.Data.Obj.NormalWall)) { | |
2394 | + map[ax - diffX][ay - diffY].pop(); | |
2395 | + map[ax - diffX][ay - diffY].push(THIEF.util.factory(THIEF.Data.Obj.LitFloor)); | |
2396 | + wallCounter++; | |
2397 | + if (wallCounter === 2) { | |
2398 | + break; | |
2399 | + } | |
2400 | + continue; | |
2401 | + } | |
2402 | + | |
2403 | + // それ以外なら終了 | |
2404 | + if (flr.isBasedOn(THIEF.Data.Obj.DarkFloor) || flr.isBasedOn(THIEF.Data.Obj.NonDiggableWall)) { | |
2405 | + break; | |
2406 | + } | |
2407 | + } | |
2408 | + }; | |
2409 | + | |
2326 | 2410 | roomsInfo.push(roomsInfo[0]); |
2327 | 2411 | for (i = 0; i < (roomsInfo.length - 1); i++) { |
2328 | 2412 |
@@ -2335,7 +2419,7 @@ | ||
2335 | 2419 | ax = 1 + roomsInfo[i].x + Math.round(Math.random() * (roomsInfo[i].width - 3)); |
2336 | 2420 | ay = 1 + roomsInfo[i].y + Math.round(Math.random() * (roomsInfo[i].height - 3)); |
2337 | 2421 | |
2338 | - if (THIEF.conf.debugmode) { | |
2422 | + if (THIEF.conf.debugMode) { | |
2339 | 2423 | map[roomsInfo[i].x + Math.round(roomsInfo[i].width / 2) - 1][roomsInfo[i].y + Math.round(roomsInfo[i].height / 2) - 1].getLast().color = 'red'; |
2340 | 2424 | map[roomsInfo[i].x][roomsInfo[i].y].getLast().color = 'olive'; |
2341 | 2425 | map[ax][ay].getLast().color = 'green'; |
@@ -2342,47 +2426,6 @@ | ||
2342 | 2426 | } |
2343 | 2427 | |
2344 | 2428 | //alert('x:' + roomsInfo[i].x + ', y:' + roomsInfo[i].y + ', width:' + roomsInfo[i].width + ', height:' + roomsInfo[i].height + '\nvx:' + vx + ', vy:' + vy + ', ax:' + ax + ', ay:' + ay); |
2345 | - | |
2346 | - // 通路を作成 | |
2347 | - // 二度ドアを作るか、通路に当たったら終了 | |
2348 | - | |
2349 | - var wallCounter; | |
2350 | - var fl; | |
2351 | - var setFloor = function (x, y, vx, vy) { | |
2352 | - index = 0; | |
2353 | - wallCounter = 0; | |
2354 | - var diffX; | |
2355 | - var diffY; | |
2356 | - while (true) { | |
2357 | - diffX = index * vx; | |
2358 | - diffY = index * vy; | |
2359 | - fl = map[ax - diffX][ay - diffY].getLast(); | |
2360 | - index++; | |
2361 | - | |
2362 | - // 名にもないのであればとりあえず通路を作る | |
2363 | - if (typeof fl === 'undefined') { | |
2364 | - map[ax - diffX][ay - diffY].push(THIEF.util.factory(THIEF.Data.Obj.DarkFloor)); | |
2365 | - continue; | |
2366 | - } | |
2367 | - | |
2368 | - // 壁ならば通路に置換 | |
2369 | - if (fl.isBasedOn(THIEF.Data.Obj.NormalWall)) { | |
2370 | - map[ax - diffX][ay - diffY].pop(); | |
2371 | - map[ax - diffX][ay - diffY].push(THIEF.util.factory(THIEF.Data.Obj.LitFloor)); | |
2372 | - wallCounter++; | |
2373 | - if (wallCounter === 2) { | |
2374 | - break; | |
2375 | - } | |
2376 | - continue; | |
2377 | - } | |
2378 | - | |
2379 | - // それ以外なら終了 | |
2380 | - if (fl.isBasedOn(THIEF.Data.Obj.DarkFloor) | |
2381 | - || fl.isBasedOn(THIEF.Data.Obj.NonDiggableWall)) { | |
2382 | - break; | |
2383 | - } | |
2384 | - } | |
2385 | - }; | |
2386 | 2429 | // 縦軸 |
2387 | 2430 | if (vx !== 0) { |
2388 | 2431 | setFloor(ax, ay, vx, 0); |
@@ -2499,6 +2542,9 @@ | ||
2499 | 2542 | } |
2500 | 2543 | map[w][h].push(THIEF.util.factory(THIEF.Data.Obj.LitFloor)); |
2501 | 2544 | break; |
2545 | + case '': | |
2546 | + THIEF.html.addDebugMessage('文字なし?'); | |
2547 | + break; | |
2502 | 2548 | default: |
2503 | 2549 | THIEF.html.addDebugMessage(map[h].charAt(w) + 'はまだ対応していない。'); |
2504 | 2550 | break; |
@@ -2695,22 +2741,22 @@ | ||
2695 | 2741 | case 'string' : |
2696 | 2742 | switch (ope) { |
2697 | 2743 | case '+' : |
2698 | - revP[index - 2] = revP[index - 2] + revP[index - 1]; | |
2744 | + revP[index - 2] += revP[index - 1]; | |
2699 | 2745 | break; |
2700 | 2746 | case '-' : |
2701 | - revP[index - 2] = revP[index - 2] - revP[index - 1]; | |
2747 | + revP[index - 2] -= revP[index - 1]; | |
2702 | 2748 | break; |
2703 | 2749 | case '/' : |
2704 | - revP[index - 2] = revP[index - 2] / revP[index - 1]; | |
2750 | + revP[index - 2] /= revP[index - 1]; | |
2705 | 2751 | break; |
2706 | 2752 | case '*' : |
2707 | - revP[index - 2] = revP[index - 2] * revP[index - 1]; | |
2753 | + revP[index - 2] *= revP[index - 1]; | |
2708 | 2754 | break; |
2709 | 2755 | case '%' : |
2710 | - revP[index - 2] = revP[index - 2] % revP[index - 1]; | |
2756 | + revP[index - 2] %= revP[index - 1]; | |
2711 | 2757 | break; |
2712 | 2758 | case '^' : |
2713 | - revP[index - 2] = revP[index - 2] ^ revP[index - 1]; | |
2759 | + revP[index - 2] = Math.pow(revP[index - 2], revP[index - 1]); | |
2714 | 2760 | break; |
2715 | 2761 | case 'd' : |
2716 | 2762 | revP[index - 2] = Math.dice(revP[index - 2], revP[index - 1]); |
@@ -2757,18 +2803,18 @@ | ||
2757 | 2803 | text = arguments[0]; |
2758 | 2804 | |
2759 | 2805 | // 言語が複数あれば選択 |
2760 | - for (i = 0; i < THIEF.conf.languagePriolity.length; i++) { | |
2806 | + for (i = 0; i < THIEF.conf.languagePriority.length; i++) { | |
2761 | 2807 | var lang; |
2762 | 2808 | |
2763 | - if (THIEF.conf.languagePriolity[i] === 'AUTO') { | |
2809 | + if (THIEF.conf.languagePriority[i] === 'AUTO') { | |
2764 | 2810 | lang = (navigator.language || navigator.userLanguage).substr(0, 2); |
2765 | 2811 | } else { |
2766 | - lang = THIEF.conf.languagePriolity[i]; | |
2812 | + lang = THIEF.conf.languagePriority[i]; | |
2767 | 2813 | } |
2768 | 2814 | |
2769 | 2815 | if (arguments[0][lang]) { |
2770 | 2816 | text = arguments[0][lang]; |
2771 | - THIEF.html.addDebugMessage('言語設定は、優先度 ' + i + ' の ' + THIEF.conf.languagePriolity[i] + ' : ' + text); | |
2817 | + THIEF.html.addDebugMessage('言語設定は、優先度 ' + i + ' の ' + THIEF.conf.languagePriority[i] + ' : ' + text); | |
2772 | 2818 | break; |
2773 | 2819 | } |
2774 | 2820 | } |
@@ -2802,7 +2848,7 @@ | ||
2802 | 2848 | // @ で区切られた部分は関数の引数とする |
2803 | 2849 | // 例:${THIEF.global.adventurer.%get@name%} ♥:${THIEF.global.adventurer.%get@hp%} |
2804 | 2850 | var variables = text.match(/\$\{[A-Za-z0-9_$.%@]+\}/g); |
2805 | - if (variables !== null) { | |
2851 | + if (variables !== true) { | |
2806 | 2852 | for (i = 0; i < variables.length; i++) { |
2807 | 2853 | // ${ と } を削除 |
2808 | 2854 | var variable = variables[i].slice(2, variables[i].length - 1); |
@@ -2828,11 +2874,11 @@ | ||
2828 | 2874 | // 関数処理 |
2829 | 2875 | } else { |
2830 | 2876 | // 前後の % を削除し、@で分割 |
2831 | - var arguments = tree[j].slice(1, tree[j].length - 1).split('@'); | |
2877 | + var functions = tree[j].slice(1, tree[j].length - 1).split('@'); | |
2832 | 2878 | var args = []; |
2833 | - var func = arguments[0]; | |
2834 | - for (var l = 1; l < arguments.length; l++) { | |
2835 | - args.push(arguments[l]); | |
2879 | + var func = functions[0]; | |
2880 | + for (var l = 1; l < functions.length; l++) { | |
2881 | + args.push(functions[l]); | |
2836 | 2882 | } |
2837 | 2883 | val = val[func].apply(val, args); |
2838 | 2884 |
@@ -2941,7 +2987,7 @@ | ||
2941 | 2987 | |
2942 | 2988 | return function (text) { |
2943 | 2989 | |
2944 | - if (THIEF.conf.debugmode) { | |
2990 | + if (THIEF.conf.debugMode) { | |
2945 | 2991 | if (typeof text === 'string') { |
2946 | 2992 | // 文字列が ... から開始する場合にはインデントを減らす |
2947 | 2993 | if (text.match(/^\.\.\./) && indent.length > 0) { |
@@ -2963,7 +3009,7 @@ | ||
2963 | 3009 | } |
2964 | 3010 | document.getElementById(THIEF.conf.id + 'Debug').innerHTML = line; |
2965 | 3011 | document.getElementById(THIEF.conf.id + 'Debug').scrollTop = 0; |
2966 | - hist = []; | |
3012 | + //hist = []; | |
2967 | 3013 | //indent = ''; |
2968 | 3014 | |
2969 | 3015 | } |
@@ -3064,7 +3110,7 @@ | ||
3064 | 3110 | var mesg = THIEF.conf.id + 'Message'; // メッセージ欄(入力上部) |
3065 | 3111 | var maps = THIEF.conf.id + 'Map'; // マップ |
3066 | 3112 | var stus = THIEF.conf.id + 'Status'; // ステータス |
3067 | - var info = THIEF.conf.id + 'Infomation'; // 情報出力(インベントリの内容など) | |
3113 | + var info = THIEF.conf.id + 'Information'; // 情報出力(インベントリの内容など) | |
3068 | 3114 | var foot = THIEF.conf.id + 'Footer'; // |
3069 | 3115 | var dbug = THIEF.conf.id + 'Debug'; // デバッグ情報 |
3070 | 3116 | sheet.addStyle('#' + root, 'color', THIEF.conf.textColor); |
@@ -3165,7 +3211,7 @@ | ||
3165 | 3211 | |
3166 | 3212 | |
3167 | 3213 | // デバッグ画面 |
3168 | - if (THIEF.conf.debugmode) { | |
3214 | + if (THIEF.conf.debugMode) { | |
3169 | 3215 | line += '<p style="text-align:center;">Debug Info</p>\n'; |
3170 | 3216 | line += '<div id="' + dbug + '"></div>\n'; |
3171 | 3217 | } |
@@ -3485,7 +3531,7 @@ | ||
3485 | 3531 | displayName : function () { |
3486 | 3532 | var text = ''; |
3487 | 3533 | if (this.equiped) { |
3488 | - text += '[E] ' | |
3534 | + text += '[E] '; | |
3489 | 3535 | } |
3490 | 3536 | text += this.get(THIEF.PROP.name) + '(<span style="color:' + this.get(THIEF.PROP.color) + '">' + this.get(THIEF.PROP.symbol) + '</span>)'; |
3491 | 3537 | return text; |
@@ -3583,7 +3629,7 @@ | ||
3583 | 3629 | THIEF.Data.Obj.$Monster = { |
3584 | 3630 | isActive : true, |
3585 | 3631 | ct : 0, |
3586 | - maxct : 100, | |
3632 | + maxCT : 100, | |
3587 | 3633 | isMonster : true |
3588 | 3634 | }; |
3589 | 3635 |
@@ -4065,7 +4111,7 @@ | ||
4065 | 4111 | levelNum : 10, |
4066 | 4112 | startLevel : 2, |
4067 | 4113 | hierarchy : [ |
4068 | - {level : ['First', 'SmallRoom', 'Safety'], base : 2}, | |
4114 | + {level : ['First', 'SmallRoom', 'Safety'], base : 2, chance : 100}, | |
4069 | 4115 | {branch : 'SideRoad', base : 3, range : 1, branchDir : 'down'} |
4070 | 4116 | //{level : 'BigRoom', base : 4, range :3, chance : 50} |
4071 | 4117 | ] |