Showing preview only (1,286K chars total). Download the full file or copy to clipboard to get everything.
Repository: SimonHung/LodeRunner_TotalRecall
Branch: master
Commit: cceca5d5a15a
Files: 87
Total size: 1.2 MB
Directory structure:
gitextract_wygbf6yf/
├── README.md
├── cursor/
│ ├── closedhand.cur
│ └── openhand.cur
├── flag32Id.js
├── lodeRunner.colorSelector.js
├── lodeRunner.colorTheme.js
├── lodeRunner.def.js
├── lodeRunner.demo.js
├── lodeRunner.demoData1.js
├── lodeRunner.demoData2.js
├── lodeRunner.edit.js
├── lodeRunner.gameVerName.js
├── lodeRunner.gamepad.js
├── lodeRunner.guard.js
├── lodeRunner.hiscore.js
├── lodeRunner.html
├── lodeRunner.iconClass.js
├── lodeRunner.info.js
├── lodeRunner.key.js
├── lodeRunner.main.js
├── lodeRunner.menu.js
├── lodeRunner.misc.js
├── lodeRunner.preload.js
├── lodeRunner.runner.js
├── lodeRunner.share.js
├── lodeRunner.storage.js
├── lodeRunner.v.championship.js
├── lodeRunner.v.classic.js
├── lodeRunner.v.fanBookMod.js
├── lodeRunner.v.professional.js
├── lodeRunner.v.revenge.js
├── lodeRunner.wData.js
├── lodeRunner.win.js
├── sound/
│ ├── Theme/
│ │ ├── APPLE2/
│ │ │ ├── born.ogg
│ │ │ ├── dead.ogg
│ │ │ ├── dig.ogg
│ │ │ ├── down.ogg
│ │ │ ├── fall.ogg
│ │ │ ├── getGold.ogg
│ │ │ ├── pass.ogg
│ │ │ └── trap.ogg
│ │ ├── C64/
│ │ │ ├── born.ogg
│ │ │ ├── dead.ogg
│ │ │ ├── dig.ogg
│ │ │ ├── down.ogg
│ │ │ ├── fall.ogg
│ │ │ ├── fall.org.ogg
│ │ │ ├── getGold.ogg
│ │ │ ├── goldFinish1.ogg
│ │ │ ├── goldFinish2.ogg
│ │ │ ├── goldFinish3.ogg
│ │ │ ├── goldFinish4.ogg
│ │ │ ├── goldFinish5.ogg
│ │ │ ├── goldFinish6.ogg
│ │ │ ├── pass.ogg
│ │ │ └── trap.ogg
│ │ ├── fallSound-C64.js
│ │ └── goldFinish-C64.sid
│ ├── beep.ogg
│ ├── ending/
│ │ └── win.ogg
│ ├── ending.ogg
│ ├── goldFinish.ogg
│ ├── scoreBell.ogg
│ ├── scoreCount.ogg
│ └── scoreEnding.ogg
└── tools/
├── LodeRunnerDiskParser.cpp
├── apple2.dsk/
│ ├── Lode Runner Fan Book (4 Levels).do
│ ├── Lode_Runner_Apple-II.dsk
│ ├── Lode_Runner_Championship _Apple-II.dsk
│ ├── MYLODE.DSK
│ └── Revenge_of_Lode_Runner.dsk
├── c64.dsk/
│ ├── Atlantis Lode Runner (19xx)(-)[cr TBC].d64
│ ├── Extended Championship Lode Runner (1985)(Doug Smith & Dane Bigham)[cr The A-Team].d64
│ ├── LODERUN1.D64
│ ├── LODERUN2.D64
│ ├── LODERUN4.D64
│ ├── LODERUN5.D64
│ ├── LODERUN_CHAMP(FF).D64
│ ├── Lode Runner (1983)(Broderbund).d64
│ ├── LodeRunner[amg].fix.d64
│ ├── PROFLODE.D64
│ ├── PROLODER.D64
│ ├── Professional Lode Runner (1985)(Dodosoft).d64
│ ├── Professional Lode Runner (1985)(Dodosoft).fixed.d64
│ └── loderunner[amg].d64
├── cmpDate.cpp
└── pzlDiskParser.cpp
================================================
FILE CONTENTS
================================================
================================================
FILE: README.md
================================================
Lode Runner - Total Recall
=======================================
## (超級運動員 - 全面回憶)
This program build with Javascript + [CreateJS](http://www.createjs.com).
### * 3 GAME Mode & 1 DEMO Mode
<table>
<tr>
<td><b>1. Challenge Mode</b></td>
<td>Compete with other players.</td>
</tr>
<tr>
<td><b>2. Training Mode</b></td>
<td>Player can select any levels</td>
</tr>
<tr>
<td><b>3. Edit Mode</b></td>
<td>Player can create custom levels</td>
</tr>
<tr>
<td><b>4. Demo Mode</b></td>
<td>Demo passed levels</td>
</tr>
</table>
### * Include 5 Game Versions
<table>
<tr>
<td><b>1. <a target="_blank" href="https://en.wikipedia.org/wiki/Lode_Runner">Classic Lode Runner</a></b></td>
<td>(150 Levels)</td>
<td>Difficulty: 3</td>
</tr>
<tr>
<td><b>2. <a target="_blank" href="http://www.gb64.com/game.php?id=5906&d=42">Professional Lode Runner</a></b></td>
<td>(150 Levels)</td>
<td>Difficulty: 4</td>
</tr>
<tr>
<td><b>3. <a target="_blank" href="http://www.vizzed.com/play/revenge-of-lode-runner-appleii-online-apple-ii-6223-game">Revenge of Lode Runner</a></b></td>
<td>(17 Levels)</td>
<td>Difficulty: 4</td>
</tr>
<tr>
<td><b>4. <a target="_blank" href="http://www.spoonbillsoftware.com.au/loderunner.htm">Lode Runner Fan Book</a></b></td>
<td>(66 Levels)</td>
<td>Difficulty: 5</td>
</tr>
<tr>
<td><b>5. <a target="_blank" href="https://en.wikipedia.org/wiki/Championship_Lode_Runner">Championship Lode Runner</a></b></td>
<td>(51 Levels)</td>
<td>Difficulty: 5</td>
</tr>
</table>
### * Provide 2 Themes
<table>
<tr>
<td valign="middle">1.</td>
<td valign="middle"><img src="image/apple2.png" height="23" width="20"></td>
<td><b>APPLE-II</b></td>
</tr>
<tr>
<td valign="middle">2.</td>
<td valign="middle"><img src="image/commodore64.png" height="23" width="20"></td>
<td valign="middle"><b>Commodore 64</b></td>
</tr>
</table>
### * 2 Keyboard control mode
<table>
<tr>
<td valign="middle">1.</td>
<td valign="middle"><img src="image/repeatOn.png" height="24" width="24"></td>
<td valign="middle"><b>Repeat Actions On:</b> Like APPLE-II keyboard behavior</td>
</tr>
<tr>
<td valign="middle">2.</td>
<td valign="middle"><img src="image/repeatOff.png" height="24" width="24"></td>
<td valign="middle"><b>Repeat Actions Off:</b> Like NES keyboard behavior</td>
</tr>
</table>
### * Play on a Local Machine
#### A simple web server is required to play LoderRunner on a local machine; follow these instructions for Windows:
1. Download and extract the source code into a directory.
2. If Python is installed, open a command prompt, navigate to the LodeRunner directory, and run "`python -m http.server 8080`" to start an HTTP server.
3. Alternatively, download `sswws.zip` from [here](https://github.com/faustinoaq/sswws/releases/tag/v0.1.0), extract it into the LodeRunner directory, and run "`sswws.exe -p 8080`" from the command prompt.
4. Open a web browser and go to "`http://127.0.0.1:8080/lodeRunner.html`".
##### <font color="red">Note:</font><font color="blue"> Changing the HTTP port will cause the browser to store "status" or "custom levels" data in a separate storage.</font>
### * <a target="_blank" href="https://simonhung.github.io/LodeRunner_TotalRecall/lodeRunner.html">Play Online</a>
------------------------------------
================================================
FILE: flag32Id.js
================================================
var countryId = {
unknown: 0
, _African_Union: 1, _Arab_League: 2, _ASEAN: 3, _CARICOM: 4, _CIS: 5
, _Commonwealth: 6, _England: 7, _European_Union: 8, eu: 8, _Islamic_Conference: 9
, _Kosovo: 10, _NATO: 11, _Northern_Cyprus: 12, _Northern_Ireland: 13, _Olimpic_Movement: 14
, _OPEC: 15, _Red_Cross: 16, _Scotland: 17, _Somaliland: 18, _Tibet: 19
, _United_Nations: 20, _Wales: 21, ad: 22, ae: 23, af: 24
, ag: 25, ai: 26, al: 27, am: 28, ao: 29
, aq: 30, ar: 31, as: 32, at: 33, au: 34
, aw: 35, ax: 36, az: 37, ba: 38, bb: 39
, bd: 40, be: 41, bf: 42, bg: 43, bh: 44
, bi: 45, bj: 46, bm: 47, bn: 48, bo: 49
, br: 50, bs: 51, bt: 52, bw: 53, by: 54
, bz: 55, ca: 56, cd: 57, cf: 58, cg: 59
, ch: 60, ci: 61, ck: 62, cl: 63, cm: 64
, cn: 65, co: 66, cr: 67, cu: 68, cv: 69
, cy: 70, cz: 71, de: 72, dj: 73, dk: 74
, dm: 75, do: 76, dz: 77, ec: 78, ee: 79
, eg: 80, eh: 81, er: 82, es: 83, et: 84
, fi: 85, fj: 86, fm: 87, fo: 88, fr: 89
, bl: 89, cp: 89, mf: 89, yt: 89, ga: 90
, gb: 91, sh: 91, gd: 92, ge: 93, gg: 94
, gh: 95, gi: 96, gl: 97, gm: 98, gn: 99
, gp: 100, gq: 101, gr: 102, gt: 103, gu: 104
, gw: 105, gy: 106, hk: 107, hn: 108, hr: 109
, ht: 110, hu: 111, id: 112, mc: 112, ie: 113
, il: 114, im: 115, in: 116, iq: 117, ir: 118
, is: 119, it: 120, je: 121, jm: 122, jo: 123
, jp: 124, ke: 125, kg: 126, kh: 127, ki: 128
, km: 129, kn: 130, kp: 131, kr: 132, kw: 133
, ky: 134, kz: 135, la: 136, lb: 137, lc: 138
, li: 139, lk: 140, lr: 141, ls: 142, lt: 143
, lu: 144, lv: 145, ly: 146, ma: 147, md: 148
, me: 149, mg: 150, mh: 151, mk: 152, ml: 153
, mm: 154, mn: 155, mo: 156, mq: 157, mr: 158
, ms: 159, mt: 160, mu: 161, mv: 162, mw: 163
, mx: 164, my: 165, mz: 166, na: 167, nc: 168
, ne: 169, ng: 170, ni: 171, nl: 172, bq: 172
, no: 173, bv: 173, nq: 173, sj: 173, np: 174
, nr: 175, nz: 176, om: 177, pa: 178, pe: 179
, pf: 180, pg: 181, ph: 182, pk: 183, pl: 184
, pr: 185, ps: 186, pt: 187, pw: 188, py: 189
, qa: 190, re: 191, ro: 192, rs: 193, ru: 194
, rw: 195, sa: 196, sb: 197, sc: 198, sd: 199
, se: 200, sg: 201, si: 202, sk: 203, sl: 204
, sm: 205, sn: 206, so: 207, sr: 208, st: 209
, sv: 210, sy: 211, sz: 212, tc: 213, td: 214
, tg: 215, th: 216, tj: 217, tl: 218, tm: 219
, tn: 220, to: 221, tr: 222, tt: 223, tv: 224
, tw: 225, tz: 226, ua: 227, ug: 228, us: 229
, uy: 230, uz: 231, va: 232, vc: 233, ve: 234
, vg: 235, vi: 236, vn: 237, vu: 238, ws: 239
, ye: 240, za: 241, zm: 242, zw: 243, sx: 244
, cw: 245, ss: 246
};
================================================
FILE: lodeRunner.colorSelector.js
================================================
function colorSelectorClass(_screenX1, _screenY1, baseX)
{
var radius = baseX*3/4|0;
var px = (baseX *7/5)|0;
var py = (baseX *7/5)|0;
var left = screenBorder;
var top = baseX/4|0;
var colorCanvas, colorStage;
var colorSelector;
var colorShape=[];
var activeCircle;
var smallScale = 0.4;
var colorSelectorIsSmall = 0;
var outFocusTimer = null;
var colorStageTicker = null;
var self = this;
var enabled = 0;
var bgColor= backgroundColor;
init();
function init()
{
createColorCanvas();
createColorSelector();
}
this.enable = function ()
{
if(enabled) return;
enabled = 1;
colorSelector.set({alpha:1});
colorStage.enableMouseOver(30);
colorStage.update();
}
this.disable = function (hidden)
{
enabled = 0;
if(hidden) {
colorSelector.set({alpha:0});
} else {
colorSelector.set({alpha:1})
}
colorStage.enableMouseOver(0);
colorStage.update();
}
this.themeChange = function()
{
for(var i=0; i < maxThemeColor;i++) {
setColorShape(colorShape[i], i, pinker(getThemeTileColor(i)) );
}
setActiveCircle();
colorStage.update();
}
this.activeColorChange = function()
{
setActiveCircle();
colorStage.update();
}
function createColorCanvas()
{
colorCanvas = document.createElement('canvas');
colorCanvas.id = "theme_color_selector";
colorCanvas.width = px * 2;
colorCanvas.height = py * 2;
colorCanvas.style.left = left + "px";
colorCanvas.style.top = top + "px";
colorCanvas.style.position = "absolute";
document.body.appendChild(colorCanvas);
}
function createColorSelector()
{
var bgCircle = new createjs.Shape();
colorStage = new createjs.Stage(colorCanvas);
colorSelector = new createjs.Container();
bgCircle.graphics.beginFill(bgColor).drawCircle(px,py, radius*5/3|0);
colorSelector.addChild(bgCircle);
//colorSelector.regY =radius*5/3*2;
//colorSelector.y = radius*5/3*2;
addColorShape();
setColorSelectorMouseEvent();
colorSelectorTransform(1);
addActiveCircle();
setActiveCircleMouseEvent();
colorSelector.set({alpha:0}); //disabled
colorStage.addChild(colorSelector);
colorStage.update();
}
//= 2 =========================
function addColorShape()
{
for(var i=0; i < maxThemeColor;i++) createColorShape(i);
for(var i=0; i < maxThemeColor;i++) createBGBar(i);
function createColorShape(id)
{
var color = pinker( getThemeTileColor(i));
colorShape[id] = new createjs.Shape();
setColorShape(colorShape[id], id, color);
setColorShapeMouseEvent(colorShape[id], id)
colorSelector.addChild(colorShape[id]);
}
function createBGBar(id)
{
var s = Math.PI*2/5 + (2*Math.PI) * id/5;
var bar = new createjs.Shape();
bar.graphics.setStrokeStyle(baseX/6|0)
.beginStroke(bgColor).moveTo(px, py)
.lineTo(px+ Math.sin(s)*radius*3/2, py+Math.cos(s)*radius*3/2)
.endStroke();
colorSelector.addChild(bar);
}
}
function setColorSelectorMouseEvent()
{
colorSelector.on("mouseover", mouseOver);
colorSelector.on("mouseout", mouseOut);
colorSelector.on("click", mouseClick);
function mouseOver()
{
if(gameState == GAME_PAUSE || (gameState == GAME_WAITING && playMode != PLAY_EDIT)) {
colorSelector.cursor = "default";
return;
}
if(colorSelectorIsSmall) {
colorSelector.cursor = "pointer";
return;
}
setTransformTimeout(0); //clear timeout
}
function mouseOut()
{
if(colorSelectorIsSmall) return;
setTransformTimeout(1); //set timeout
}
function mouseClick()
{
if(gameState == GAME_PAUSE || (gameState == GAME_WAITING && playMode != PLAY_EDIT)) return;
if(!colorSelectorIsSmall) return;
colorSelectorTransform(0);
}
}
function addActiveCircle()
{
activeCircle = new createjs.Shape();
colorSelector.addChild(activeCircle);
setActiveCircle();
}
function setActiveCircleMouseEvent()
{
activeCircle.on("mouseover", function(){
if(gameState == GAME_PAUSE || (gameState == GAME_WAITING && playMode != PLAY_EDIT)) return;
if(colorSelectorIsSmall) return;
colorSelector.cursor = "pointer";
});
activeCircle.on("mouseout", function(){
if(colorSelectorIsSmall) return;
colorSelector.cursor = "default";
});
activeCircle.on("click",function() {
if(gameState == GAME_PAUSE || (gameState == GAME_WAITING && playMode != PLAY_EDIT)) return;
if(colorSelectorIsSmall) return;
setTransformTimeout(0); //clear timeout
colorSelectorTransform(0); //transform to small
});
}
function colorSelectorTransform(immediate)
{
if(colorSelectorIsSmall) {
colorCanvas.width = px * 2;
colorCanvas.height = py * 2;
if(immediate) {
colorSelector.scaleX = colorSelector.scaleY = 1;
colorSelectorIsSmall = 0;
colorSelector.cursor = "default";
} else {
createjs.Tween.get(colorSelector)
.to({scaleX: 1, scaleY: 1}, 100)
.call(function(){
colorSelectorIsSmall = 0;
setActiveCircle();
colorSelector.cursor = "default";
createjs.Ticker.off("tick", colorStageTicker);
colorStageTicker = null;
colorStage.update();
});
colorStageTicker = createjs.Ticker.on("tick", colorStage);
}
} else {
if(immediate) {
colorSelector.scaleX = colorSelector.scaleY = smallScale;
colorSelectorIsSmall = 1;
colorSelector.cursor = "pointer";
colorCanvas.width = px * 2 * smallScale;
colorCanvas.height = py * 2 * smallScale;
} else {
createjs.Tween.get(colorSelector)
.to({scaleX: smallScale, scaleY: smallScale}, 100)
.call(function(){
colorCanvas.width = px * 2 * smallScale;
colorCanvas.height = py * 2 * smallScale;
colorSelectorIsSmall = 1;
//setActiveCircle();
//self.themeChange();
colorSelector.cursor = "pointer";
createjs.Ticker.off("tick", colorStageTicker);
colorStageTicker = null;
colorStage.update();
});
colorStageTicker = createjs.Ticker.on("tick", colorStage);
}
}
}
//= 3 ===========================
function pinker(hexColor)
{
var orgRGB = hexToRGB(hexColor);
var percent = 1/2, whitePercent = 1-percent;
for(var i=0; i < 3; i++) {
orgRGB[i] = (orgRGB[i]*percent+255*whitePercent)|0;
if(orgRGB[i]>255) orgRGB[i]=255;
}
return rgbToHex(orgRGB)
}
function setColorShape(shape, id, color)
{
var s = (2*Math.PI) * id/5-(Math.PI)*7/10+(Math.PI)/40;
var e = (2*Math.PI) * (id+1)/5-(Math.PI)*7/10-(Math.PI)/40;
shape.graphics.clear().setStrokeStyle(radius-2)
.beginStroke(color).arc(px, py, radius, s, e).endStroke();
}
function setColorShapeMouseEvent(shape, id)
{
shape.on("mouseover", mouseOver, null, false, {id:id});
shape.on("mouseout", mouseOut, null, false, {id:id});
shape.on("click", mouseClick, null, false, {id:id});
function mouseOver(evt, data)
{
var id = data.id;
var curColorId = getCurColorId();
if(gameState == GAME_PAUSE || (gameState == GAME_WAITING && playMode != PLAY_EDIT)) return;
if(colorSelectorIsSmall) return;
colorSelector.cursor = "pointer";
setColorShape(colorShape[id], id, getThemeTileColor(id));
colorStage.update();
}
function mouseOut(evt, data)
{
var id = data.id;
var curColorId = getCurColorId();
if(gameState == GAME_PAUSE || (gameState == GAME_WAITING && playMode != PLAY_EDIT)) return;
if(colorSelectorIsSmall) return;
colorSelector.cursor = "default";
setColorShape(colorShape[id], id, pinker(getThemeTileColor(id)));
colorStage.update();
}
function mouseClick(evt, data)
{
var id = data.id;
var curColorId = getCurColorId();
if(gameState == GAME_PAUSE || (gameState == GAME_WAITING && playMode != PLAY_EDIT)) return;
if(colorSelectorIsSmall || curColorId == id) return;
themeColorChange(id);
setActiveCircle();
colorStage.update();
}
}
function setTransformTimeout(enable)
{
//clear timeout
if(outFocusTimer) {
clearTimeout(outFocusTimer);
outFocusTimer = null;
}
//set timeout
if(enable) {
outFocusTimer = setTimeout(function(){ colorSelectorTransform(0); }, 1000);
}
}
function setActiveCircle()
{
var color = getThemeTileColor(getCurColorId());
activeCircle.graphics.clear().beginFill(color).drawCircle(px,py, radius*3/8|0);
//activeCircle.alpha = colorSelectorIsSmall?0:1;
}
}
================================================
FILE: lodeRunner.colorTheme.js
================================================
var baseBitmapName = [
"empty", "brick", "solid", "ladder", "rope",
"trapBrick", "hladder", "gold", "redhat", "guard1", "runner1",
"runner", "guard", "hole", "ground", "over", "text"
];
var themeColor = {};
themeColor[THEME_APPLE2] = [
null, //original image color
"#60C0A0",
"#DD8D5D",
"#C080F0",
"#FF83BB",
];
themeColor[THEME_C64] = [
null, //original image color
"#DF5050",
"#F7993E",
"#4A4AFF",
"#2E8B57"
];
var maxThemeColor = themeColor[THEME_APPLE2].length;
var themeBaseBitmap = {};
var curColorId = {};
var orgImageColor = {};
var themeNameList = [THEME_APPLE2, THEME_C64];
function createBaseBitmapInstance()
{
for(var i = 0; i < themeNameList.length; i++) {
var themeName = themeNameList[i];
var id = curColorId[themeName];
orgImageColor[themeName] = getOrgImageColor(themeName);
createThemeBaseBitmap(themeName, hexToRGB(themeColor[themeName][id]), id);
}
//for edit mode only
themeBaseBitmap["eraser"] = createBitmap("eraser", null, null);
}
function createThemeBaseBitmap(themeName, newColor, id)
{
var oldColor = orgImageColor[themeName]; //get original image color
for(var i=0; i < baseBitmapName.length; i++){
var imageName = baseBitmapName[i]+themeName;
if( (imageName+id) in themeBaseBitmap)
return;
themeBaseBitmap[imageName+id] = createBitmap(imageName, oldColor, newColor);
}
}
function getThemeBitmap(name)
{
if(name == "eraser") return themeBaseBitmap[name].clone(); //for edit mode only
return themeBaseBitmap[name+ curTheme+curColorId[curTheme]].clone();
}
function getThemeImage(name)
{
return preload.getResult(name);
}
function getThemeTileColor(id)
{
var curId = (typeof id != 'undefined')?id:curColorId[curTheme];
if(curId == 0) return rgbToHex(orgImageColor[curTheme]); //original color
return themeColor[curTheme][curId];
}
function getCurColorId()
{
return curColorId[curTheme];
}
function getOrgImageColor(themeName)
{
var canvas = document.createElement('canvas');
var ctx=canvas.getContext("2d");
var stage = new createjs.Stage(canvas);
var bitmap = new createjs.Bitmap(getThemeImage("solid"+themeName)); //"solid" as sample image
var imgData, orgColor;
canvas.width = bitmap.getBounds().width;
canvas.height = bitmap.getBounds().height;
stage.addChild(bitmap);
stage.update();
stage.cache(0, 0, canvas.width, canvas.height);
imgData=ctx.getImageData(0, 0, canvas.width, canvas.height);
orgColor = [imgData.data[0], imgData.data[1], imgData.data[2] ];
stage.uncache();
stage.removeAllChildren();
stage.update();
return orgColor;
}
function createBitmap(imageName, oldColor, newColor)
{
var bitmap = new createjs.Bitmap(getThemeImage(imageName));
var newBitmap;
if(newColor != null && (newBitmap = changeBitmapColor(bitmap, oldColor, newColor)) != null)
return newBitmap; //color changed
else
return bitmap;
}
function changeBitmapColor(bitmap, oldColor, newColor)
{
var canvas = document.createElement('canvas');
var stage = new createjs.Stage(canvas);
var changed;
canvas.width = bitmap.getBounds().width;
canvas.height = bitmap.getBounds().height;
stage.addChild(bitmap);
stage.update();
stage.cache(0, 0, canvas.width, canvas.height);
changed = changeColor(canvas, oldColor, newColor);
stage.uncache();
stage.removeAllChildren();
if(changed) return (new createjs.Bitmap(stage.canvas));
else return null;
}
function changeColor(canvas, oldColor, newColor)
{
var ctx=canvas.getContext("2d");
var imgData=ctx.getImageData(0, 0, canvas.width, canvas.height);
var data = imgData.data;
var bitChanged = 0;
// add a range compare for fix browser (Brave) color have bit different ?, 6/3/2021
var oldMin = [oldColor[0]-2, oldColor[1]-2, oldColor[2]-2];
var oldMax = [oldColor[0]+2, oldColor[1]+2, oldColor[2]+2];
for (var i = 0; i < data.length; i += 4) {
var red = data[i + 0];
var green = data[i + 1];
var blue = data[i + 2];
var alpha = data[i + 3];
if(oldMin[0] <= red && red <= oldMax[0] &&
oldMin[1] <= green && green <= oldMax[1] &&
oldMin[2] <= blue && blue <= oldMax[2])
{
data[i+0] = newColor[0];
data[i+1] = newColor[1];
data[i+2] = newColor[2];
bitChanged = 1;
}
}
ctx.putImageData(imgData, 0, 0);
return bitChanged;
}
function themeColorChange(id)
{
var newColor;
if(curColorId[curTheme] == id) return; //don't need change
newColor = hexToRGB(themeColor[curTheme][id]);
curColorId[curTheme] = id;
createThemeBaseBitmap(curTheme, newColor, id)
themeDataReset(0); //don't need reset sound instance
setThemeColor();
themeColorObj.activeColorChange();
if(playMode == PLAY_EDIT) {
if(editLevelModified()) saveTestState();
stopEditTicker();
startEditMode();
} else {
changeThemeScreen(); //real time change theme screen
}
}
function hexToRGB(hex)
{
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result ? [
parseInt(result[1], 16),
parseInt(result[2], 16),
parseInt(result[3], 16)
] : null;
}
function rgbToHex(rgb)
{
return "#" +
("00" + rgb[0].toString(16)).slice(-2)+
("00" + rgb[1].toString(16)).slice(-2)+
("00" + rgb[2].toString(16)).slice(-2);
}
================================================
FILE: lodeRunner.def.js
================================================
var VERSION = "2.30e";
var AI_VERSION = 4;
var NO_OF_TILES_X = 28,
NO_OF_TILES_Y = 16;
var BASE_TILE_X = 40,
BASE_TILE_Y = 44;
var GROUND_TILE_X = 40,
GROUND_TILE_Y = 20,
TEXT_TILE_X = 40,
TEXT_TILE_Y = 44;
var BASE_SCREEN_X = (NO_OF_TILES_X * BASE_TILE_X);
var BASE_SCREEN_Y = (NO_OF_TILES_Y * BASE_TILE_Y + GROUND_TILE_Y + TEXT_TILE_Y);
var MIN_SCALE = 0.5,
MAX_SCALE = 3;
var MENU_ICON_X = 40, MENU_ICON_Y = 36, ICON_BORDER = 4;
var BASE_ICON_X = (MENU_ICON_X + ICON_BORDER * 2);
var KEYCODE_BKSPACE = 8, //backspace
KEYCODE_ENTER = 13,
KEYCODE_SPACE = 32,
KEYCODE_ESC = 27, //escape
KEYCODE_X = 88, //dig right
KEYCODE_Y = 89, //dig left (Y key to dig left, for German keyboards)
KEYCODE_Z = 90, //dig left
KEYCODE_LEFT = 37, //move left
KEYCODE_RIGHT = 39, //move right
KEYCODE_UP = 38, //move up
KEYCODE_DOWN = 40, //move down
KEYCODE_SUBTRACT = 109, //Add KEYCODE_SUBTRACT & KEYCODE_HYPHEN for support fireFox 'dash' keycode
KEYCODE_HYPHEN = 173, //
KEYCODE_DASH = 189, //'-'
KEYCODE_DOT = 190, //'.'
KEYCODE_U = 85, //dig left
KEYCODE_O = 79, //dig right
KEYCODE_J = 74, //move left
KEYCODE_L = 76, //move right
KEYCODE_I = 73, //move up
KEYCODE_K = 75, //move down
KEYCODE_PERIOD = 190, //'.'
KEYCODE_COMMA = 188, //','
KEYCODE_A = 65, //'A'
KEYCODE_C = 67, //'C'
KEYCODE_D = 68, //'D'
KEYCODE_E = 69, //'E'
KEYCODE_G = 71, //'G'
KEYCODE_H = 72, //'H'
KEYCODE_Q = 81, //'Q'
KEYCODE_R = 82, //'R'
KEYCODE_S = 83, //'S'
KEYCODE_T = 84, //'T'
KEYCODE_V = 86, //'V'
KEYCODE_W = 87; //'W'
var KEYCODE_0 = 48,
KEYCODE_1 = 49,
KEYCODE_2 = 50,
KEYCODE_3 = 51,
KEYCODE_4 = 52,
KEYCODE_5 = 53,
KEYCODE_6 = 54,
KEYCODE_7 = 55,
KEYCODE_8 = 56,
KEYCODE_9 = 57;
var SCORE_COMPLETE_LEVEL = 1500, SCORE_COUNTER = 15,
SCORE_GET_GOLD = 250,
SCORE_IN_HOLE = 75,
SCORE_GUARD_DEAD = 75,
SCORE_WIN_PER_MAN = 42500;
var SCORE_VALUE_PER_POINT = 100; //for modern & edit mode
var PLAY_NONE = 0, PLAY_CLASSIC = 1, PLAY_MODERN = 2, PLAY_DEMO = 3,
PLAY_EDIT = 4, PLAY_TEST = 5, PLAY_AUTO = 6, PLAY_DEMO_ONCE = 7;
var GAME_START = 0, GAME_RUNNING = 1,
GAME_FINISH = 2, GAME_FINISH_SCORE_COUNT= 3,
GAME_WAITING = 4, GAME_PAUSE = 5,
GAME_NEW_LEVEL = 6, GAME_RUNNER_DEAD = 7,
GAME_OVER_ANIMATION = 8, GAME_OVER = 9,
GAME_NEXT_LEVEL = 10, GAME_PREV_LEVEL = 11,
GAME_LOADING = 12, GAME_WIN_SCORE_COUNT = 13,
GAME_WIN = 14;
var ACT_UNKNOWN = -1, ACT_STOP = 0,
ACT_LEFT = 1, ACT_RIGHT = 2,
ACT_UP = 3, ACT_DOWN = 4,
ACT_FALL = 5, ACT_FALL_BAR = 6,
ACT_DIG_LEFT = 7, ACT_DIG_RIGHT = 8,
ACT_DIGGING = 9,
ACT_IN_HOLE = 10, ACT_CLIMB_OUT = 11,
ACT_REBORN = 12;
//value | Character | Type
//------+-----------+-----------
// 0x0 | <space> | Empty space
// 0x1 | # | Normal Brick
// 0x2 | @ | Solid Brick
// 0x3 | H | Ladder
// 0x4 | - | Hand-to-hand bar (Line of rope)
// 0x5 | X | False brick
// 0x6 | S | Ladder appears at end of level
// 0x7 | $ | Gold chest
// 0x8 | 0 | Guard
// 0x9 | & | Player
var EMPTY_T = 0x00;
var BLOCK_T = 0x01;
var SOLID_T = 0x02;
var LADDR_T = 0x03;
var BAR_T = 0x04;
var TRAP_T = 0x05;
var HLADR_T = 0x06;
var GOLD_T = 0x07;
var GUARD_T = 0x08;
var RUNNER_T = 0x09;
var REBORN_T = 0x10; //template: for reborn
var CLOSE_SCREEN_SPEED = 35; //20 ~ 80
var MAX_OLD_GUARD = 6; //maximum number of guards for AI Version 1 and 2
var MAX_NEW_GUARD = 5; //for AI Version >= 3
var RUNNER_LIFE = 5; //number of runner life
var RUNNER_MAX_LIFE = 100;
var MAX_TIME_COUNT = 999; //for moden mode
var TICK_COUNT_PER_TIME = 16;
var MAX_DEMO_WAIT_COUNT = 200 * TICK_COUNT_PER_TIME;
var MAX_EDIT_LEVEL = 120;
var MAX_HISCORE_RECORD = 10, MAX_HISCORE_NAME_LENGTH = 12;
//===========================
// Define value for playData
//===========================
var PLAY_DATA_USERDEF = 999;
//================================================
// Define themes string also as theme folder name
//================================================
var THEME_APPLE2 = "APPLE2";
var THEME_C64 = "C64";
//================================
// Below defined for LocalStorage
//================================
var STORAGE_LASTPLAY_MODE = "loderunner_lastplay";
var STORAGE_CLASSIC_INFO = "loderunner_classicInfo";
var STORAGE_MODERN_INFO = "loderunner_modernInfo";
var STORAGE_DEMO_INFO = "loderunner_demoInfo";
var STORAGE_FIRST_PLAY = "loderunner_firstRun";
var STORAGE_MODERN_SCORE_INFO = "loderunner_modernScore";
var STORAGE_USER_INFO = "loderunner_userInfo"; //user created
var STORAGE_USER_SCORE_INFO = "loderunner_userScore"; //user created
var STORAGE_EDIT_INFO = "loderunner_editInfo";
var STORAGE_USER_LEVEL = "loderunner_userLevel";
var STORAGE_TEST_LEVEL = "loderunner_testlevel";
var STORAGE_HISCORE_INFO = "loderunner_hiScore";
var STORAGE_LASTSCORE = "loderunner_lastScore";
var STORAGE_PLAYER_NAME = "loderunner_player";
var STORAGE_UID = "loderunner_uid";
var STORAGE_THEME_MODE = "loderunner_theme";
var STORAGE_THEME_COLOR = "loderunner_color_";
var STORAGE_REPEAT_ACTION = "loderunner_actRepeat";
var STORAGE_GAMEPAD_MODE = "loderunner_gamepadMode";
//================================
// backup & restore file header
//================================
var LRWG_FILE_START_INFO = "LODE RUNNER WEB GAME.";
================================================
FILE: lodeRunner.demo.js
================================================
//===============
// Auto Demo
//===============
var demoRecordIdx, demoGoldIdx, demoBornIdx;
var demoTickCount;
var demoRnd, demoIdx;
function initAutoDemoRnd()
{
demoRnd = [];
demoRnd[0] = new rangeRandom(0, demoData1.length-1, 0); //random range 0 .. demoData1.length-1
}
var demoRecord, demoGoldDrop, demoBornPos;
var demoLevel, demoData, demoCount, demoMaxCount;
function getAutoDemoLevel(initValue)
{
if(initValue) {
curScore = 0;
runnerLife = 1;
demoLevel = 1;
demoCount = 1;
demoMaxCount = 3;
demoData = demoData1;
levelData = playVersionInfo[0].verData;
demoIdx = 0;
} else {
demoLevel++;
demoCount++;
}
var idx = demoRnd[demoIdx].get();
demoRecord = demoData[idx].action;
demoGoldDrop = demoData[idx].goldDrop;
demoBornPos = demoData[idx].bornPos;
curLevel = demoData[idx].level;
curAiVersion = demoData[idx].ai; //07/04/2014
if("godMode" in demoData[idx])
godMode = demoData[idx].godMode; //07/09/2014
}
var demoCountTime = 0, demoCountEnable = 0;
function enableAutoDemoTimer()
{
demoCountEnable = 1;
demoCountTime = 0;
}
function disableAutoDemoTimer()
{
demoCountEnable = 0;
}
function countAutoDemoTimer()
{
if(demoCountEnable) {
demoCountTime++;
//debug(demoCountTime);
if(demoCountTime > MAX_DEMO_WAIT_COUNT) {
disableAutoDemoTimer();
gameState = GAME_WAITING;
showCoverPage();
}
}
}
//=====================================
// function for auto demo & demo mode
//=====================================
function initPlayDemo()
{
demoRecordIdx = demoGoldIdx = demoBornIdx = 0;
demoTickCount = 0;
playTickTimer = 0; //modern mode time counter
gameState = GAME_RUNNING;
if(playMode == PLAY_DEMO_ONCE) {
demoIconObj.disable(1);
selectIconObj.disable(1);
}
}
function playDemo()
{
if(demoRecordIdx < demoRecord.length) {
if(demoRecord[demoRecordIdx*2] == demoTickCount) {
//loadingTxt.text = demoRecordIdx + " " + demoTickCount ; //for debug
pressKey(demoRecord[demoRecordIdx*2+1]);
demoRecordIdx++;
}
}
demoTickCount++;
}
function getDemoGold(guard)
{
guard.hasGold = demoGoldDrop[demoGoldIdx++];
}
function getDemoBornPos()
{
if(demoBornPos[0] == 2) {
demoBornIdx += 2;
return { x: demoBornPos[demoBornIdx-1], y: demoBornPos[demoBornIdx] };
} else {
return { x: demoBornPos[++demoBornIdx], y: 1 };
}
}
//====================================
// for demo mode (User select level)
//====================================
var playerDemoData = [], wDemoData = [];
var demoPlayData = 0; //for syn demo data with current playData
var demoDataLoading = 0;
function initDemoData()
{
demoPlayData = playData;
playerDemoData = [];
wDemoData = [];
demoDataLoading = 1;
getDemoData(playData); //ajax
}
function setDemoData(jsonTxt)
{
if(jsonTxt.substring(0, 1) == "[" ) {
wDemoData = JSON.parse(jsonTxt);
for(var i = 0; i < wDemoData.length; i++) {
playerDemoData[wDemoData[i].level-1] = wDemoData[i];
}
} else {
error("Wrong Demo Data: " + jsonTxt);
}
demoDataLoading = 0;
if(playMode == PLAY_MODERN && gameState == GAME_START ) demoIconObj.enable();
}
function initDemoInfo()
{
var idx = curLevel - 1;
curScore = 0;
runnerLife = 1;
demoRecord = demoData[idx].action;
demoGoldDrop = demoData[idx].goldDrop;
demoBornPos = demoData[idx].bornPos;
assert(curLevel == demoData[idx].level, "curLevel != level of demoData");
curAiVersion = demoData[idx].ai; //07/04/2014
if("godMode" in demoData[idx])
godMode = demoData[idx].godMode; //07/09/2014
}
function getDemoOnceInfo() //for demo once
{
//DEMO ONCE in Training mode, so curLevel & levelData are same as training mode
demoData = playerDemoData;
initDemoInfo();
}
function getDemoInfo()
{
var infoJSON;
if (playData >= 1 && playData <= maxPlayId) {
infoJSON = getStorage(STORAGE_DEMO_INFO + playData);
levelData = getPlayVerData(playData);
//demoData = playerDemoData[playData-1];
demoData = playerDemoData;
} else {
error("design error, value =" + playData );
}
if(infoJSON == null) {
curLevel = 1;
} else {
var infoObj = JSON.parse(infoJSON);
curLevel = infoObj.l;
}
getValidDemoLevel();
initDemoInfo();
}
function setDemoInfo()
{
var infoObj = { l:curLevel};
var infoJSON = JSON.stringify(infoObj);
if (playData >= 1 && playData <= maxPlayId) {
setStorage(STORAGE_DEMO_INFO + playData, infoJSON);
} else {
error("design error, value =" + playData );
}
}
function getValidDemoLevel()
{
while(typeof demoData[curLevel-1] == "undefined") {
if(++curLevel > levelData.length) curLevel = 1;
}
}
function getNextDemoLevel()
{
getValidDemoLevel();
setDemoInfo();
initDemoInfo();
}
function curDemoLevelIsVaild()
{
if(playData == PLAY_DATA_USERDEF) return 0;
return (playerDemoData.length >= curLevel && typeof playerDemoData[curLevel-1] != "undefined");
}
function updatePlayerDemoData(playData, demoDataInfo)
{
var level = demoDataInfo.level;
playerDemoData[level-1] = {
level: demoDataInfo.level,
ai: demoDataInfo.ai,
time: demoDataInfo.time,
state: demoDataInfo.state,
action: demoDataInfo.action,
goldDrop: demoDataInfo.goldDrop,
bornPos: demoDataInfo.bornPos,
godMode: demoDataInfo.godMode,
player: playerName,
date: getLocalTime(),
location: "Unknown", //update by sendDemoData2Server() resp.
cId: "Unknown",
ip: "updating"
};
}
//======================
// resp from server
//======================
function respUpdatePlayerDemoData(jsonTxt)
{
var respObj, level;
if(jsonTxt.substring(0, 1) == "{" ) {
respObj = JSON.parse(jsonTxt);
level = respObj.level;
if(respObj.playData == playData && playerDemoData[level-1].ip == "updating") {
playerDemoData[level-1].ip = respObj.ip;
playerDemoData[level-1].location = respObj.location;
playerDemoData[level-1].cId = respObj.cId;
}
} else {
error("Wrong resp Data: " + jsonTxt);
}
}
//==============================
// Record play action for demo
//==============================
var RECORD_NONE = 0, RECORD_KEY = 1, RECORD_PLAY = 2;
var recordMode = RECORD_KEY;
//var recordMode = RECORD_NONE;
var recordCount, recordKeyCode = 0, lastKeyCode = -1;
var playRecord, goldRecord, bornRecord;
var goldRecordIdx, bornRecordIdx;
var playRecordTime, recordState;
function initRecordVariable()
{
recordCount = 0;
goldRecordIdx = 0;
bornRecordIdx = 0;
playRecordTime = 0;
switch(recordMode) {
case RECORD_KEY:
recordKeyCode = 0;
lastKeyCode = -1;
playRecord = [];
goldRecord = [];
bornRecord = [];
break;
case RECORD_PLAY:
recordIdx = 0;
gameState = GAME_RUNNING;
break;
}
}
var alwaysRecord = 0, keyPressed = 0;
function saveKeyCode(code, keyAction)
{
//-----------------------------------------------------------------------------
// Don't care repeat times, always record key when press dig-left or dig-right
// fixed by Simon 12/12/2014
//-----------------------------------------------------------------------------
alwaysRecord = 0;
if(keyAction == ACT_DIG_LEFT || keyAction == ACT_DIG_RIGHT) alwaysRecord = 1;
recordKeyCode = code;
keyPressed = 1;
}
function recordModeDump(state)
{
recordPlayTime(state);
remapActionKey();
convertBornPos();
dumpRecord();
}
function recordModeToggle(state)
{
if(recordMode == RECORD_KEY) {
if(playMode != PLAY_AUTO && playMode != PLAY_DEMO && playMode != PLAY_DEMO_ONCE) recordMode = RECORD_PLAY;
recordModeDump(state);
} else recordMode = RECORD_KEY;
}
function processRecordKey()
{
switch(recordMode) {
case RECORD_KEY: //record the play key action
recordKeyAction();
break;
case RECORD_PLAY: //play the record key
recordPlayDemo();
break;
}
recordCount++;
}
function recordKeyAction()
{
if(repeatAction) recordKeyAction1();
else recordKeyAction2()
}
//record key for "keyboard repeat on"
function recordKeyAction1()
{
if(!keyPressed) return;
if(recordKeyCode != lastKeyCode || alwaysRecord) {
playRecord.push(recordCount);
playRecord.push(recordKeyCode);
lastKeyCode = recordKeyCode;
}
keyPressed = 0;
}
//record key for "keyboard repeat off"
// keyPressed= 1:pressed, 0:released, -1:floating (do nothing till pressed again)
function recordKeyAction2()
{
switch(keyPressed) {
case 1: //pressed
if(recordKeyCode != lastKeyCode || alwaysRecord) {
playRecord.push(recordCount);
playRecord.push(recordKeyCode);
lastKeyCode = recordKeyCode;
}
if(alwaysRecord) keyPressed = -1; //floating
break;
case 0: //release
if(recordKeyCode != KEYCODE_SPACE) {
playRecord.push(recordCount);
playRecord.push(KEYCODE_SPACE);
lastKeyCode = recordKeyCode = KEYCODE_SPACE;
keyAction = ACT_STOP;
}
break;
}
}
var recordIdx;
function recordPlayDemo()
{
if(recordIdx < playRecord.length) {
if(playRecord[recordIdx*2] == recordCount) {
//loadingTxt.text = recordIdx; //for debug
pressKey(playRecord[recordIdx*2+1]);
recordIdx++;
}
}
}
function processRecordGold(guard)
{
switch(recordMode) {
case RECORD_KEY: //record the play key action, save gold
goldRecord.push(guard.hasGold);
break;
case RECORD_PLAY: //play the record key, get gold
guard.hasGold = goldRecord[goldRecordIdx++];
break;
}
}
function saveRecordBornPos(x, y)
{
bornRecord.push({ x:x, y:y });
}
function getRecordBornPos()
{
if(bornRecord[0] == 2) {
bornRecordIdx += 2;
return { x: bornRecord[bornRecordIdx-1], y: bornRecord[bornRecordIdx] };
} else {
return { x: bornRecord[++bornRecordIdx], y: 1 };
}
}
function recordPlayTime(state)
{
playRecordTime = recordCount;
recordState = (state == GAME_FINISH)?1:0; //finish or dead
}
var actionKeyMapping = [
[ KEYCODE_A, KEYCODE_LEFT], //move left
[ KEYCODE_D, KEYCODE_RIGHT], //move right
[ KEYCODE_W, KEYCODE_UP], //move up
[ KEYCODE_S, KEYCODE_DOWN], //move down
[ KEYCODE_Q, KEYCODE_Z], //dig left
[ KEYCODE_E, KEYCODE_X], //dig right
[ KEYCODE_COMMA, KEYCODE_Z], //dig left
[ KEYCODE_PERIOD, KEYCODE_X] //dig right
];
//Remap action key to orignal "left, right, up down and Z, X"
//for backward compatible
function remapActionKey()
{
for(var i = 0; i < playRecord.length; i+=2){
for(var j = 0; j < actionKeyMapping.length; j++) {
if(actionKeyMapping[j][0] == playRecord[i+1]) {
playRecord[i+1] = actionKeyMapping[j][1];
break;
}
}
}
}
function convertBornPos()
{
var len, offset = 1;
var tmpRecord = [];
if((len = bornRecord.length) <= 0) return;
for(var i = 0; i < len; i++) if(bornRecord[i].y != 1) offset = 2;
tmpRecord[0] = offset;
for(var i = 0; i < len; i++) {
tmpRecord[i*offset+1] = bornRecord[i].x;
if(offset == 2) tmpRecord[i*offset+2] = bornRecord[i].y;
}
bornRecord = tmpRecord;
}
var curDemoData = { ai: AI_VERSION, time: 0 }; //bug fixed: when press CTRL-C without demo data
function dumpRecord()
{
var txtStr;
curDemoData = {};
curDemoData.level = curLevel;
curDemoData.ai = AI_VERSION;
curDemoData.time = playRecordTime;
curDemoData.state = recordState; //game finish or not
curDemoData.action = [];
curDemoData.goldDrop = [];
curDemoData.bornPos = [];
curDemoData.godMode = godModeKeyPressed; //07/09/2014
for(var i = 0; i < playRecord.length; i++) {
curDemoData.action[i] = playRecord[i];
}
for(var i = 0; i < goldRecord.length; i++) {
curDemoData.goldDrop[i] = goldRecord[i];
}
for(var i = 0; i < bornRecord.length; i++) {
curDemoData.bornPos[i] = bornRecord[i];
}
debug(curDemoData);
debug(" { level: " + curLevel + ",");
debug(" ai: " + AI_VERSION + ",");
debug(" time: " + playRecordTime + ",");
debug(" state: " + recordState + ",");
debug(" godMode: " + godModeKeyPressed + ","); //07/09/2014
if(playRecord.length > 0) {
txtStr = " action: [ " + playRecord[0];
for(var i = 1; i < playRecord.length; i++) {
txtStr += ", " + playRecord[i];
}
debug(txtStr+ " ], //" + (playRecord.length/2));
} else {
debug(" action: [ ],");
}
if(goldRecord.length > 0) {
txtStr = " goldDrop: [ " + goldRecord[0];
for(var i = 1; i < goldRecord.length; i++) {
txtStr += ", " + goldRecord[i];
}
debug(txtStr+ " ],");
} else {
debug(" goldDrop: [ ],");
}
if( bornRecord.length > 0) {
txtStr = " bornPos: [ " + bornRecord[0];
for(var i = 1; i < bornRecord.length; i++) {
txtStr += ", " + bornRecord[i];
}
debug(txtStr+" ]");
} else {
debug(" bornPos: [ ]");
}
debug(" },");
}
================================================
FILE: lodeRunner.demoData1.js
================================================
var demoData1 = [
{ level: 11,
ai: 4,
time: 603,
state: 1,
godMode: 0,
action: [ 0, 39, 29, 32, 30, 37, 38, 39, 49, 37, 60, 38, 68, 39, 80, 38, 85, 32, 86, 37, 97, 38, 102, 32, 103, 39, 113, 38, 119, 37, 128, 38, 133, 32, 134, 39, 145, 38, 150, 37, 158, 38, 165, 39, 175, 38, 181, 37, 190, 38, 196, 39, 205, 38, 212, 37, 217, 38, 229, 39, 237, 90, 252, 39, 257, 90, 278, 39, 281, 90, 305, 39, 308, 90, 330, 39, 333, 90, 534, 37, 593, 38 ], //41
goldDrop: [ 26, 22, 24, 34 ],
bornPos: [ 1, 24, 3, 21, 0 ]
},
{ level: 12,
ai: 4,
time: 929,
state: 1,
godMode: 0,
action: [ 0, 39, 35, 38, 55, 88, 77, 39, 94, 37, 108, 38, 127, 39, 143, 37, 170, 88, 180, 37, 198, 39, 223, 38, 242, 39, 259, 37, 325, 39, 344, 38, 354, 37, 434, 90, 444, 39, 458, 90, 470, 37, 483, 90, 494, 39, 500, 90, 510, 39, 516, 90, 525, 37, 542, 90, 551, 39, 559, 90, 569, 37, 575, 90, 590, 37, 609, 39, 620, 90, 631, 37, 644, 39, 686, 90, 697, 39, 706, 37, 725, 39, 761, 38, 780, 39, 795, 40, 802, 39, 860, 38 ], //46
goldDrop: [ ],
bornPos: [ 1, 23 ]
},
{ level: 18,
ai: 4,
time: 1730,
state: 1,
godMode: 0,
action: [ 0, 39, 43, 88, 76, 37, 79, 88, 113, 39, 126, 38, 164, 39, 175, 38, 181, 39, 205, 90, 217, 37, 230, 39, 243, 37, 285, 38, 322, 39, 334, 38, 341, 39, 346, 38, 397, 39, 416, 38, 445, 37, 476, 38, 487, 37, 540, 38, 547, 37, 560, 88, 572, 39, 602, 88, 618, 37, 624, 88, 634, 39, 651, 90, 661, 37, 678, 90, 692, 37, 741, 38, 757, 39, 767, 37, 776, 40, 853, 37, 858, 90, 869, 39, 875, 90, 937, 39, 950, 88, 959, 37, 987, 39, 1008, 38, 1017, 39, 1102, 38, 1140, 39, 1149, 38, 1155, 39, 1197, 38, 1226, 37, 1259, 38, 1270, 37, 1289, 40, 1325, 39, 1357, 38, 1366, 40, 1402, 38, 1442, 39, 1453, 38, 1505, 39, 1542, 38, 1571, 37, 1603, 38, 1614, 37, 1666, 38, 1672, 37, 1720, 38 ], //72
goldDrop: [ 31 ],
bornPos: [ 1, 4, 24 ]
},
{ level: 22,
ai: 4,
time: 2124,
state: 1,
godMode: 0,
action: [ 0, 37, 30, 38, 44, 37, 59, 39, 163, 37, 198, 38, 217, 39, 277, 37, 303, 38, 307, 37, 331, 39, 337, 38, 348, 39, 353, 38, 360, 39, 372, 38, 383, 39, 411, 38, 427, 37, 484, 40, 496, 37, 529, 38, 549, 37, 609, 39, 620, 38, 633, 39, 637, 38, 648, 37, 652, 38, 664, 88, 699, 39, 750, 37, 758, 39, 783, 40, 796, 37, 803, 88, 814, 90, 837, 39, 847, 38, 861, 39, 893, 37, 915, 90, 935, 39, 939, 90, 993, 37, 1042, 38, 1049, 37, 1053, 38, 1067, 39, 1089, 88, 1128, 39, 1164, 88, 1183, 39, 1209, 37, 1235, 90, 1244, 39, 1272, 90, 1296, 37, 1385, 38, 1394, 37, 1397, 38, 1410, 39, 1454, 38, 1463, 37, 1556, 88, 1568, 39, 1616, 38, 1629, 39, 1656, 37, 1661, 38, 1672, 37, 1680, 38, 1696, 39, 1700, 88, 1710, 37, 1723, 88, 1733, 37, 1738, 40, 1744, 90, 1925, 38, 1929, 39, 1941, 88, 1952, 37, 1957, 88, 1968, 37, 1972, 88, 2028, 39, 2056, 38, 2069, 39, 2114, 38 ], //90
goldDrop: [ 35, 12, 32 ],
bornPos: [ 1, 22, 24, 19, 23 ]
},
{ level: 32,
ai: 4,
time: 1506,
state: 0,
godMode: 0,
action: [ 0, 37, 10, 38, 30, 39, 47, 38, 54, 39, 64, 38, 77, 40, 114, 37, 143, 38, 193, 37, 196, 88, 218, 40, 295, 39, 315, 90, 342, 37, 390, 39, 432, 38, 437, 39, 443, 37, 447, 38, 477, 37, 481, 38, 502, 39, 517, 38, 522, 39, 543, 88, 553, 39, 572, 90, 583, 37, 589, 40, 603, 39, 609, 37, 614, 38, 620, 39, 635, 40, 641, 39, 652, 37, 657, 38, 662, 39, 682, 40, 688, 39, 693, 38, 708, 37, 734, 38, 742, 39, 776, 40, 814, 39, 840, 90, 851, 37, 885, 38, 895, 90, 905, 40, 911, 90, 920, 37, 942, 39, 971, 88, 980, 37, 989, 88, 1005, 39, 1030, 40, 1085, 38, 1103, 39, 1113, 38, 1127, 39, 1144, 38, 1151, 37, 1153, 38, 1164, 37, 1165, 38, 1186, 39, 1193, 38, 1203, 37, 1233, 40, 1241, 39, 1246, 88, 1256, 39, 1264, 40, 1280, 39, 1285, 40, 1297, 37, 1311, 40, 1320, 90, 1328, 40, 1331, 90, 1340, 40, 1342, 90, 1353, 37, 1370, 90, 1400, 37, 1413, 38, 1422, 37, 1447, 39, 1469, 38, 1484, 39, 1502, 38 ], //95
goldDrop: [ 35 ],
bornPos: [ ]
},
{ level: 36,
ai: 4,
time: 2009,
state: 1,
godMode: 0,
action: [ 0, 37, 11, 39, 48, 37, 59, 38, 64, 37, 68, 38, 74, 39, 78, 38, 83, 37, 87, 38, 92, 39, 96, 38, 102, 37, 105, 38, 111, 39, 115, 38, 120, 37, 125, 38, 130, 39, 135, 38, 140, 37, 143, 39, 188, 40, 201, 37, 214, 90, 226, 39, 229, 90, 246, 37, 258, 88, 269, 37, 274, 88, 282, 39, 293, 88, 305, 37, 310, 88, 319, 39, 327, 88, 341, 37, 345, 88, 354, 39, 381, 37, 417, 90, 428, 39, 433, 90, 468, 37, 482, 38, 487, 37, 491, 38, 497, 39, 501, 38, 507, 37, 511, 38, 517, 39, 520, 38, 526, 37, 530, 38, 535, 39, 540, 38, 545, 37, 550, 38, 554, 39, 559, 38, 565, 37, 568, 38, 579, 39, 631, 38, 638, 39, 641, 38, 647, 37, 651, 38, 656, 39, 661, 38, 671, 37, 747, 38, 753, 39, 756, 38, 765, 37, 837, 39, 855, 37, 859, 90, 880, 37, 894, 38, 898, 39, 920, 90, 932, 39, 937, 90, 952, 39, 966, 88, 989, 37, 998, 90, 1011, 39, 1030, 38, 1036, 37, 1039, 38, 1045, 39, 1050, 38, 1055, 37, 1059, 38, 1065, 39, 1069, 38, 1074, 37, 1078, 38, 1083, 39, 1087, 38, 1093, 37, 1096, 38, 1101, 37, 1174, 39, 1182, 38, 1189, 39, 1192, 38, 1198, 37, 1202, 38, 1207, 39, 1211, 38, 1216, 37, 1220, 38, 1224, 39, 1227, 38, 1233, 37, 1236, 38, 1241, 39, 1244, 38, 1250, 37, 1254, 38, 1259, 39, 1262, 38, 1268, 37, 1271, 38, 1276, 39, 1278, 38, 1285, 37, 1291, 39, 1310, 38, 1315, 39, 1319, 38, 1326, 37, 1330, 38, 1334, 39, 1338, 38, 1344, 37, 1348, 38, 1359, 39, 1370, 37, 1416, 40, 1453, 39, 1457, 90, 1468, 39, 1473, 90, 1482, 37, 1497, 88, 1506, 39, 1580, 90, 1605, 37, 1615, 38, 1620, 39, 1625, 38, 1630, 37, 1635, 38, 1640, 39, 1644, 38, 1649, 37, 1653, 38, 1658, 39, 1662, 38, 1667, 37, 1671, 38, 1675, 39, 1679, 38, 1682, 37, 1698, 40, 1705, 37, 1710, 88, 1721, 37, 1726, 88, 1735, 39, 1744, 88, 1759, 39, 1809, 90, 1819, 39, 1839, 88, 1863, 39, 1883, 38, 1889, 37, 1893, 38, 1898, 39, 1903, 38, 1908, 37, 1912, 38, 1917, 39, 1921, 38, 1926, 37, 1930, 38, 1935, 39, 1938, 38, 1944, 37, 1948, 38, 1953, 39, 1956, 38, 1962, 37, 1965, 38, 1970, 39, 1973, 38, 1979, 37, 1982, 38, 1988, 39, 1991, 38, 2000, 37 ], //208
goldDrop: [ ],
bornPos: [ 1, 11, 21, 11, 21, 21, 11 ]
},
{ level: 41,
ai: 4,
time: 2282,
state: 1,
godMode: 0,
action: [ 0, 37, 6, 39, 16, 38, 21, 39, 26, 38, 30, 39, 46, 37, 51, 40, 58, 37, 87, 39, 132, 38, 139, 39, 142, 38, 148, 39, 152, 38, 157, 39, 162, 38, 167, 39, 204, 90, 215, 39, 230, 37, 237, 88, 269, 39, 279, 38, 289, 37, 304, 39, 326, 40, 348, 37, 358, 39, 374, 40, 384, 37, 398, 88, 409, 37, 419, 90, 452, 37, 471, 38, 480, 39, 554, 38, 594, 37, 604, 38, 610, 37, 613, 38, 619, 37, 622, 38, 628, 37, 632, 38, 636, 39, 662, 40, 680, 37, 690, 88, 700, 38, 708, 37, 712, 38, 718, 37, 721, 38, 727, 37, 730, 38, 736, 39, 753, 40, 769, 37, 775, 38, 780, 37, 784, 38, 790, 37, 793, 38, 799, 39, 820, 40, 825, 39, 852, 37, 866, 39, 877, 38, 896, 37, 905, 38, 909, 37, 914, 38, 918, 37, 928, 90, 938, 37, 973, 39, 978, 88, 988, 39, 1004, 37, 1095, 38, 1108, 37, 1118, 90, 1129, 39, 1134, 90, 1175, 39, 1180, 90, 1190, 39, 1311, 38, 1350, 39, 1394, 38, 1400, 90, 1437, 38, 1443, 90, 1457, 40, 1463, 90, 1474, 38, 1483, 90, 1496, 40, 1510, 37, 1529, 40, 1546, 39, 1568, 40, 1574, 38, 1621, 37, 1630, 38, 1635, 37, 1638, 38, 1645, 37, 1650, 38, 1655, 37, 1659, 38, 1665, 37, 1740, 40, 1747, 39, 1787, 40, 1814, 37, 1862, 38, 1875, 37, 1886, 90, 1899, 39, 1903, 90, 1972, 37, 1979, 39, 2059, 88, 2103, 39, 2119, 40, 2156, 38, 2171, 39, 2201, 38, 2241, 37, 2250, 38, 2256, 37, 2259, 38, 2265, 37, 2268, 38, 2274, 37, 2277, 38 ], //140
goldDrop: [ 24, 29, 36 ],
bornPos: [ 1, 25, 11, 26, 14, 12 ]
},
{ level: 44,
ai: 4,
time: 559,
state: 1,
godMode: 0,
action: [ 0, 39, 27, 40, 43, 37, 68, 38, 98, 40, 105, 39, 171, 38, 177, 39, 202, 38, 223, 39, 330, 38, 349, 39, 360, 38, 371, 90, 383, 39, 387, 90, 451, 37, 465, 40, 496, 39, 519, 38 ], //20
goldDrop: [ 35, 25 ],
bornPos: [ ]
},
{ level: 48,
ai: 4,
time: 1711,
state: 1,
godMode: 0,
action: [ 0, 37, 59, 38, 69, 39, 87, 38, 97, 37, 115, 38, 125, 39, 143, 38, 153, 37, 172, 88, 184, 39, 197, 37, 204, 40, 214, 88, 223, 39, 236, 37, 244, 40, 255, 88, 265, 39, 291, 37, 307, 40, 318, 39, 329, 37, 389, 38, 399, 39, 405, 38, 409, 39, 413, 38, 417, 39, 421, 38, 426, 39, 429, 38, 431, 39, 435, 38, 437, 39, 440, 38, 444, 39, 452, 38, 488, 88, 531, 39, 565, 38, 609, 39, 645, 38, 660, 37, 680, 39, 717, 37, 734, 40, 749, 39, 761, 88, 796, 39, 809, 40, 846, 37, 896, 38, 914, 39, 956, 40, 966, 37, 983, 39, 1001, 38, 1012, 37, 1052, 40, 1091, 38, 1098, 39, 1201, 40, 1208, 39, 1259, 38, 1265, 39, 1323, 38, 1350, 90, 1376, 37, 1411, 90, 1442, 37, 1519, 38, 1530, 37, 1551, 38, 1561, 39, 1581, 38, 1591, 37, 1611, 38, 1621, 39, 1641, 38, 1651, 37, 1671, 38, 1681, 39, 1701, 38 ], //84
goldDrop: [ 36 ],
bornPos: [ 1, 23 ]
},
{ level: 60,
ai: 4,
time: 908,
state: 0,
godMode: 0,
action: [ 0, 39, 5, 88, 15, 39, 36, 88, 45, 39, 85, 88, 107, 39, 113, 90, 122, 37, 136, 39, 149, 88, 159, 39, 203, 40, 220, 37, 230, 40, 270, 38, 292, 40, 315, 39, 335, 38, 409, 37, 423, 90, 434, 37, 477, 88, 497, 39, 509, 37, 521, 39, 532, 40, 561, 39, 591, 38, 659, 37, 714, 88, 726, 39, 746, 90, 772, 37, 820, 39, 858, 38, 867, 39, 881, 40, 889, 39 ], //39
goldDrop: [ 29, 16, 23, 26 ],
bornPos: [ ]
},
{ level: 64,
ai: 4,
time: 2974,
state: 1,
godMode: 0,
action: [ 0, 39, 15, 37, 48, 88, 57, 37, 65, 88, 76, 37, 80, 88, 89, 37, 95, 88, 105, 37, 110, 88, 120, 37, 126, 88, 135, 37, 141, 88, 150, 37, 156, 88, 166, 37, 172, 88, 180, 37, 194, 38, 208, 39, 253, 38, 263, 37, 304, 38, 314, 39, 430, 40, 439, 37, 474, 39, 508, 38, 519, 37, 563, 38, 572, 39, 606, 38, 615, 37, 640, 38, 650, 39, 671, 37, 771, 39, 780, 90, 790, 39, 796, 90, 805, 39, 811, 90, 821, 39, 827, 90, 837, 39, 844, 90, 855, 39, 862, 90, 872, 39, 877, 90, 887, 39, 892, 90, 1093, 37, 1133, 88, 1145, 37, 1149, 88, 1159, 37, 1165, 88, 1173, 37, 1180, 88, 1190, 37, 1198, 88, 1207, 37, 1214, 88, 1223, 37, 1230, 88, 1238, 37, 1262, 38, 1276, 39, 1322, 38, 1332, 37, 1373, 38, 1384, 39, 1414, 38, 1422, 37, 1443, 38, 1454, 39, 1509, 37, 1520, 40, 1530, 37, 1573, 40, 1588, 39, 1596, 88, 1631, 39, 1642, 88, 1652, 37, 1660, 88, 1670, 37, 1681, 88, 1693, 37, 1698, 88, 1709, 38, 1724, 39, 1787, 37, 1813, 90, 1823, 39, 1828, 90, 1841, 39, 1845, 90, 1856, 39, 1869, 90, 1879, 39, 1885, 90, 1895, 39, 1901, 90, 1911, 39, 1918, 90, 1928, 39, 1934, 90, 2134, 90, 2180, 37, 2203, 88, 2214, 37, 2220, 88, 2230, 37, 2235, 88, 2245, 37, 2251, 88, 2261, 37, 2266, 88, 2276, 37, 2281, 88, 2484, 39, 2517, 37, 2525, 88, 2539, 37, 2543, 88, 2557, 37, 2561, 88, 2706, 39, 2722, 37, 2777, 38, 2790, 39, 2846, 38, 2852, 90, 2860, 38, 2903, 39, 2969, 38 ], //140
goldDrop: [ 34, 16, 28, 29, 37, 13, 14, 21, 14, 18, 25, 13, 14, 14, 16, 14, 24, 24, 32, 12, 15, 29, 26, 28, 18, 35 ],
bornPos: [ 1, 13, 22, 26, 24, 23, 21, 18, 2, 5, 7, 19, 1, 3, 25, 9, 20, 4, 3, 16 ]
},
{ level: 95,
ai: 4,
time: 1384,
state: 1,
godMode: 0,
action: [ 0, 37, 62, 39, 90, 37, 107, 38, 141, 90, 191, 37, 206, 38, 236, 37, 240, 38, 260, 37, 281, 38, 424, 40, 454, 39, 520, 38, 531, 39, 540, 38, 547, 90, 634, 37, 644, 38, 674, 37, 679, 38, 698, 37, 764, 40, 785, 37, 791, 90, 801, 39, 833, 37, 847, 38, 856, 37, 876, 38, 912, 39, 961, 38, 1006, 37, 1064, 40, 1106, 37, 1113, 38, 1123, 88, 1208, 39, 1222, 40, 1233, 39, 1241, 37, 1250, 38, 1260, 37, 1275, 38, 1290, 39, 1297, 38, 1303, 39, 1319, 38, 1344, 37, 1364, 38 ], //50
goldDrop: [ 16, 18, 17, 22, 35, 26 ],
bornPos: [ ]
},
{ level: 114,
ai: 4,
time: 1845,
state: 1,
godMode: 0,
action: [ 0, 39, 6, 38, 46, 40, 59, 38, 67, 39, 75, 88, 101, 39, 110, 38, 167, 39, 173, 37, 176, 38, 181, 39, 191, 37, 201, 38, 207, 39, 240, 90, 251, 40, 258, 90, 268, 39, 273, 90, 284, 37, 294, 90, 305, 39, 313, 37, 351, 39, 362, 90, 372, 39, 377, 90, 388, 40, 396, 37, 401, 90, 410, 39, 417, 90, 428, 39, 433, 90, 443, 40, 451, 37, 461, 90, 471, 37, 545, 38, 566, 90, 633, 37, 667, 38, 735, 37, 745, 90, 757, 40, 763, 90, 773, 39, 777, 90, 785, 39, 789, 90, 799, 37, 810, 90, 821, 39, 825, 90, 837, 39, 842, 90, 851, 37, 867, 90, 877, 39, 883, 90, 895, 39, 900, 90, 909, 37, 925, 90, 936, 39, 941, 90, 953, 39, 958, 90, 967, 37, 984, 90, 994, 39, 1000, 90, 1012, 39, 1018, 90, 1027, 37, 1044, 90, 1054, 39, 1060, 90, 1072, 39, 1078, 90, 1089, 37, 1104, 90, 1114, 39, 1121, 90, 1134, 39, 1139, 90, 1147, 37, 1164, 90, 1175, 39, 1181, 90, 1193, 39, 1199, 90, 1209, 37, 1235, 39, 1241, 90, 1253, 39, 1258, 90, 1270, 39, 1274, 90, 1286, 39, 1290, 90, 1300, 37, 1330, 39, 1355, 38, 1403, 39, 1419, 88, 1429, 37, 1434, 88, 1445, 37, 1450, 88, 1459, 39, 1476, 88, 1486, 37, 1492, 88, 1502, 39, 1511, 88, 1520, 39, 1570, 37, 1594, 39, 1619, 38, 1623, 39, 1661, 37, 1673, 39, 1681, 90, 1692, 39, 1696, 90, 1751, 37, 1767, 38, 1786, 37, 1791, 39, 1796, 38 ], //132
goldDrop: [ 15, 22, 34 ],
bornPos: [ ]
},
{ level: 118,
ai: 4,
time: 686,
state: 0,
godMode: 0,
action: [ 0, 39, 30, 88, 41, 37, 69, 88, 80, 37, 83, 88, 95, 90, 134, 39, 145, 38, 160, 37, 164, 38, 194, 39, 198, 38, 207, 37, 262, 40, 289, 39, 354, 88, 386, 39, 401, 38, 415, 37, 420, 38, 449, 39, 454, 38, 462, 37, 520, 40, 528, 37, 566, 40, 582, 88, 595, 37, 599, 88, 610, 37, 615, 88, 671, 39 ], //33
goldDrop: [ 22, 19, 16 ],
bornPos: [ 1, 0 ]
},
{ level: 118,
ai: 4,
time: 2640,
state: 1,
godMode: 0,
action: [ 0, 39, 31, 88, 46, 37, 56, 38, 76, 39, 80, 90, 95, 39, 110, 37, 139, 38, 155, 37, 159, 38, 189, 39, 194, 38, 206, 37, 264, 40, 272, 39, 357, 88, 369, 37, 374, 88, 410, 39, 430, 38, 445, 37, 448, 38, 478, 39, 482, 38, 493, 37, 546, 40, 561, 39, 651, 38, 665, 37, 669, 38, 698, 39, 703, 38, 713, 37, 778, 40, 800, 37, 814, 40, 833, 39, 842, 88, 854, 37, 858, 88, 869, 37, 874, 88, 927, 39, 1001, 38, 1016, 37, 1019, 38, 1049, 39, 1054, 38, 1065, 37, 1115, 40, 1150, 39, 1217, 38, 1231, 37, 1235, 38, 1264, 39, 1268, 38, 1279, 37, 1350, 40, 1402, 39, 1408, 88, 1419, 37, 1424, 88, 1475, 39, 1501, 88, 1533, 39, 1578, 38, 1593, 37, 1597, 38, 1618, 39, 1633, 38, 1634, 90, 1645, 39, 1664, 40, 1678, 39, 1700, 40, 1710, 37, 1746, 90, 1767, 37, 1780, 38, 1795, 37, 1800, 38, 1831, 39, 1835, 38, 1844, 37, 1919, 40, 1972, 39, 1985, 88, 1997, 37, 2001, 88, 2045, 39, 2076, 88, 2104, 39, 2144, 38, 2159, 37, 2162, 38, 2192, 39, 2196, 38, 2206, 37, 2246, 40, 2293, 37, 2304, 88, 2330, 39, 2374, 38, 2389, 37, 2392, 38, 2422, 39, 2425, 38, 2436, 37, 2480, 40, 2530, 39, 2579, 38, 2595, 37, 2598, 38, 2627, 39, 2630, 38 ], //116
goldDrop: [ 31, 17, 12, 13 ],
bornPos: [ 1, 0, 27, 15, 10 ]
}
];
================================================
FILE: lodeRunner.demoData2.js
================================================
var demoData2 = [
{
level: 1,
ai:1,
time: 7396,
state: 1,
action: [0, 37, 46, 88, 59, 40, 64, 88, 75, 40, 80, 88, 91, 40, 95, 88, 268, 40, 273, 88, 286, 38, 305, 39, 316, 38, 320, 39, 403, 37, 474, 38, 490, 39, 506, 38, 525, 37, 796, 38, 870, 39, 1013, 40, 1024, 39, 1038, 40, 1048, 39, 1057, 40, 1064, 39, 1072, 40, 1078, 39, 1087, 40, 1091, 39, 1109, 38, 1122, 40, 1128, 39, 1177, 40, 1192, 90, 1236, 37, 1243, 39, 1252, 38, 1294, 37, 1304, 38, 1394, 40, 1426, 39, 1439, 39, 1440, 39, 1441, 39, 1445, 38, 1484, 37, 1499, 40, 1533, 39, 1548, 40, 1557, 39, 1565, 37, 1575, 88, 1617, 39, 1628, 38, 1673, 37, 1694, 38, 1794, 40, 1819, 39, 1833, 39, 1834, 39, 1835, 39, 1836, 39, 1837, 39, 1838, 39, 1839, 39, 1840, 39, 1841, 39, 1842, 39, 1843, 39, 1853, 38, 1892, 37, 1918, 38, 2009, 40, 2038, 39, 2052, 39, 2053, 39, 2054, 39, 2055, 39, 2056, 39, 2057, 39, 2058, 39, 2059, 39, 2060, 39, 2061, 39, 2062, 39, 2063, 39, 2064, 39, 2072, 38, 2111, 37, 2151, 38, 2280, 40, 2317, 39, 2361, 38, 2399, 37, 2449, 38, 2594, 40, 2619, 39, 2633, 39, 2634, 39, 2635, 39, 2636, 39, 2637, 39, 2638, 39, 2639, 39, 2640, 39, 2641, 39, 2698, 40, 2702, 90, 2773, 37, 2781, 39, 2792, 38, 2835, 37, 2894, 38, 3015, 40, 3039, 39, 3114, 38, 3154, 37, 3219, 38, 3377, 40, 3403, 39, 3417, 39, 3418, 39, 3419, 39, 3420, 39, 3421, 39, 3422, 39, 3423, 39, 3424, 39, 3425, 39, 3426, 39, 3427, 39, 3482, 38, 3524, 37, 3598, 38, 3724, 40, 3756, 37, 3830, 38, 3870, 39, 3930, 38, 4083, 40, 4121, 37, 4183, 38, 4221, 39, 4272, 38, 4433, 40, 4461, 37, 4475, 37, 4476, 37, 4477, 37, 4478, 37, 4479, 37, 4480, 37, 4481, 37, 4521, 38, 4561, 39, 4607, 38, 4745, 40, 4774, 37, 4831, 38, 4872, 39, 4913, 38, 5038, 40, 5069, 37, 5120, 38, 5159, 39, 5194, 38, 5310, 40, 5343, 37, 5386, 38, 5427, 39, 5453, 38, 5552, 40, 5578, 37, 5617, 38, 5656, 39, 5676, 38, 5757, 40, 5784, 37, 5798, 37, 5799, 37, 5800, 37, 5801, 37, 5802, 37, 5803, 37, 5804, 37, 5812, 38, 5851, 39, 5865, 38, 5945, 40, 5975, 37, 5999, 38, 6038, 39, 6049, 38, 6122, 40, 6157, 37, 6171, 40, 6177, 88, 6227, 39, 6233, 37, 6241, 38, 6285, 39, 6383, 40, 6395, 39, 6409, 39, 6410, 39, 6411, 39, 6412, 39, 6413, 39, 6414, 39, 6415, 39, 6416, 39, 6417, 39, 6418, 39, 6419, 39, 6420, 39, 6421, 39, 6422, 39, 6423, 39, 6424, 39, 6425, 39, 6426, 39, 6427, 39, 6428, 39, 6429, 39, 6430, 39, 6431, 39, 6432, 39, 6433, 39, 6434, 39, 6435, 39, 6436, 39, 6437, 39, 6438, 39, 6439, 39, 6440, 39, 6441, 39, 6442, 39, 6443, 39, 6444, 39, 6445, 39, 6446, 39, 6447, 39, 6448, 39, 6454, 38, 6467, 90, 6472, 39, 6682, 38, 6696, 38, 6697, 38, 6698, 38, 6699, 38, 6700, 38, 6701, 38, 6702, 38, 6703, 38, 6704, 38, 6705, 38, 6706, 38, 6707, 38, 6739, 40, 6801, 39, 6900, 38, 6910, 90, 6921, 40, 6927, 90, 6939, 40, 6943, 90, 6954, 40, 6960, 90, 7129, 40, 7132, 90, 7142, 38, 7165, 37, 7245, 39, 7319, 38], //277
goldDrop: [35, 30, 36]
},
{
level: 2,
ai:1,
time: 11607,
state: 1,
action: [0, 39, 17, 38, 41, 37, 61, 38, 139, 40, 176, 37, 184, 40, 205, 37, 214, 40, 242, 39, 279, 38, 338, 37, 489, 40, 502, 40, 503, 40, 504, 40, 505, 40, 506, 40, 507, 40, 508, 40, 509, 40, 552, 39, 600, 38, 804, 37, 835, 38, 851, 40, 868, 37, 965, 40, 988, 37, 992, 38, 1007, 40, 1047, 37, 1071, 39, 1143, 38, 1200, 37, 1316, 40, 1330, 37, 1365, 38, 1398, 39, 1430, 37, 1434, 38, 1496, 39, 1534, 37, 1554, 38, 1616, 40, 1630, 40, 1631, 40, 1632, 40, 1633, 40, 1634, 40, 1635, 40, 1636, 40, 1637, 40, 1638, 40, 1639, 40, 1640, 40, 1649, 37, 1749, 38, 1833, 39, 1863, 40, 1874, 37, 1882, 40, 1895, 39, 1909, 39, 1926, 38, 1960, 39, 1983, 38, 2089, 39, 2114, 40, 2127, 37, 2252, 40, 2264, 37, 2275, 38, 2276, 39, 2296, 37, 2302, 38, 2320, 40, 2357, 37, 2367, 40, 2393, 37, 2455, 38, 2510, 39, 2575, 38, 2759, 40, 2795, 37, 2811, 39, 2834, 37, 2848, 38, 2860, 40, 2873, 38, 2980, 39, 3005, 37, 3031, 40, 3038, 37, 3047, 37, 3185, 39, 3190, 38, 3227, 40, 3232, 90, 3394, 39, 3405, 37, 3412, 38, 3420, 39, 3434, 37, 3446, 40, 3460, 40, 3461, 40, 3462, 40, 3463, 40, 3464, 40, 3465, 40, 3466, 40, 3467, 40, 3468, 40, 3469, 40, 3470, 40, 3471, 40, 3472, 40, 3473, 40, 3474, 40, 3482, 37, 3577, 38, 3634, 39, 3694, 38, 3698, 38, 3706, 39, 3708, 38, 3722, 39, 3724, 38, 3862, 37, 3899, 39, 3906, 40, 3915, 37, 4057, 40, 4102, 37, 4108, 40, 4120, 39, 4239, 38, 4463, 37, 4521, 39, 4531, 38, 4584, 40, 4605, 37, 4662, 39, 4671, 38, 4684, 37, 4690, 40, 4744, 39, 4785, 38, 4800, 40, 4842, 38, 5018, 37, 5047, 38, 5189, 40, 5210, 37, 5307, 40, 5358, 39, 5511, 38, 5590, 37, 5616, 38, 5834, 40, 5855, 37, 5897, 40, 5912, 37, 5944, 38, 5955, 40, 5969, 38, 5976, 37, 5988, 39, 5999, 37, 6006, 39, 6015, 37, 6025, 39, 6036, 38, 6081, 40, 6086, 39, 6098, 40, 6109, 37, 6240, 39, 6248, 38, 6270, 37, 6275, 38, 6285, 37, 6302, 39, 6312, 37, 6327, 39, 6343, 90, 6449, 40, 6454, 37, 6551, 39, 6563, 40, 6583, 37, 6597, 37, 6598, 37, 6667, 38, 6728, 39, 6772, 40, 6775, 39, 6810, 37, 6828, 39, 6845, 38, 6922, 39, 7021, 40, 7035, 40, 7036, 40, 7037, 40, 7038, 40, 7039, 40, 7040, 40, 7041, 40, 7042, 40, 7043, 40, 7044, 40, 7045, 40, 7046, 40, 7047, 40, 7048, 40, 7049, 40, 7050, 40, 7051, 40, 7052, 40, 7053, 40, 7054, 40, 7055, 40, 7056, 40, 7057, 40, 7058, 40, 7059, 40, 7060, 40, 7061, 40, 7062, 40, 7063, 40, 7064, 40, 7065, 40, 7066, 40, 7067, 40, 7068, 40, 7069, 40, 7070, 40, 7079, 37, 7195, 38, 7268, 40, 7286, 39, 7349, 38, 7587, 40, 7611, 37, 7685, 40, 7690, 39, 7808, 40, 7820, 37, 7830, 40, 7844, 40, 7845, 40, 7846, 40, 7847, 40, 7848, 40, 7849, 40, 7850, 40, 7851, 40, 7852, 40, 7853, 40, 7854, 40, 7855, 40, 7863, 37, 7877, 37, 7878, 37, 7879, 37, 7880, 37, 7881, 37, 7882, 37, 7883, 37, 7884, 37, 8004, 38, 8060, 39, 8129, 38, 8141, 37, 8144, 38, 8365, 40, 8447, 39, 8741, 38, 8776, 40, 8792, 39, 8804, 40, 8809, 39, 8820, 40, 8825, 39, 9155, 38, 9202, 37, 9303, 40, 9315, 37, 9355, 38, 9376, 39, 9385, 38, 9449, 40, 9463, 40, 9464, 40, 9465, 40, 9466, 40, 9467, 40, 9468, 40, 9469, 40, 9470, 40, 9471, 40, 9472, 40, 9473, 40, 9474, 40, 9475, 40, 9476, 40, 9477, 40, 9478, 40, 9485, 39, 9685, 38, 9747, 40, 9800, 39, 10232, 40, 10246, 40, 10451, 38, 10681, 37, 10713, 38, 10788, 39, 10792, 40, 10814, 37, 10832, 40, 10846, 37, 10884, 40, 10889, 37, 11018, 39, 11027, 40, 11049, 37, 11169, 38, 11224, 39, 11250, 38, 11371, 40, 11430, 37, 11456, 38, 11513, 39, 11579, 38], //337
goldDrop: [38, 31, 35, 19, 14, 15, 24, 27, 27, 30, 33, 25, 28, 28, 22, 32, 14, 23, 14, 31]
},
{
level: 3,
ai:1,
time: 3536,
state: 1,
action: [0, 37, 25, 40, 41, 37, 55, 37, 56, 37, 57, 37, 58, 37, 59, 37, 64, 38, 79, 37, 92, 37, 93, 37, 94, 37, 95, 37, 96, 37, 105, 40, 118, 40, 119, 40, 120, 40, 121, 40, 122, 40, 131, 38, 145, 38, 146, 38, 147, 38, 148, 38, 149, 38, 150, 38, 151, 38, 156, 40, 169, 37, 178, 40, 192, 40, 195, 39, 208, 39, 209, 39, 210, 39, 211, 39, 212, 39, 213, 39, 214, 39, 215, 39, 216, 39, 217, 39, 218, 39, 330, 40, 342, 37, 356, 40, 372, 39, 388, 40, 402, 40, 403, 40, 404, 40, 405, 40, 411, 37, 451, 39, 465, 38, 487, 37, 494, 38, 509, 37, 543, 40, 561, 37, 576, 38, 593, 40, 603, 38, 609, 39, 625, 37, 630, 38, 651, 40, 665, 37, 679, 37, 680, 37, 681, 37, 689, 38, 706, 37, 731, 40, 753, 39, 778, 38, 787, 37, 799, 39, 809, 40, 829, 38, 848, 39, 859, 40, 863, 37, 870, 40, 883, 40, 941, 37, 944, 40, 956, 39, 970, 39, 971, 39, 972, 39, 973, 39, 974, 39, 976, 39, 993, 40, 1002, 39, 1034, 90, 1172, 37, 1240, 39, 1249, 37, 1266, 38, 1281, 39, 1284, 40, 1297, 40, 1348, 37, 1395, 38, 1417, 40, 1431, 40, 1440, 39, 1447, 37, 1457, 38, 1482, 39, 1495, 39, 1496, 40, 1509, 40, 1510, 40, 1511, 40, 1512, 40, 1513, 40, 1514, 40, 1518, 39, 1532, 39, 1533, 39, 1534, 39, 1543, 40, 1549, 39, 1592, 90, 1625, 38, 1649, 40, 1669, 38, 1684, 40, 1758, 37, 1828, 38, 1845, 39, 1856, 40, 1954, 37, 1960, 40, 1969, 39, 1983, 39, 1984, 39, 2036, 40, 2048, 90, 2229, 37, 2280, 40, 2290, 37, 2304, 38, 2316, 39, 2337, 38, 2342, 39, 2347, 40, 2447, 37, 2451, 40, 2459, 39, 2472, 40, 2476, 39, 2543, 40, 2594, 90, 2631, 38, 2648, 40, 2659, 38, 2671, 40, 2682, 38, 2699, 40, 2775, 37, 2840, 38, 2849, 39, 2880, 37, 2901, 38, 2908, 39, 2924, 37, 2939, 40, 2945, 39, 2962, 38, 2970, 39, 2974, 40, 3063, 37, 3094, 40, 3182, 38, 3196, 38, 3201, 39, 3214, 39, 3216, 39, 3217, 39, 3218, 39, 3219, 39, 3220, 39, 3221, 39, 3222, 39, 3223, 39, 3224, 39, 3225, 39, 3226, 39, 3227, 39, 3228, 39, 3229, 39, 3230, 39, 3231, 39, 3232, 39, 3308, 40, 3319, 39, 3335, 38, 3343, 39, 3352, 38, 3392, 37, 3508, 38], //207
goldDrop: [24, 22, 16, 24],
bornPos: [1, 26, 27, 25]
},
{ level: 4,
ai: 1,
time: 2124,
state: 1,
action: [ 0, 37, 36, 38, 58, 39, 106, 38, 114, 39, 145, 88, 156, 37, 162, 88, 193, 37, 198, 88, 220, 39, 262, 37, 316, 38, 421, 40, 427, 38, 445, 40, 452, 39, 571, 38, 578, 39, 590, 88, 601, 37, 606, 88, 617, 37, 621, 88, 633, 40, 655, 39, 662, 37, 668, 88, 716, 39, 724, 37, 840, 37, 847, 38, 869, 39, 916, 38, 923, 39, 1017, 38, 1039, 37, 1094, 38, 1102, 37, 1122, 90, 1168, 39, 1171, 90, 1208, 37, 1250, 39, 1406, 38, 1413, 37, 1418, 90, 1430, 39, 1434, 90, 1446, 40, 1464, 39, 1546, 38, 1570, 37, 1625, 38, 1655, 37, 1742, 38, 1766, 39, 1824, 38, 1831, 39, 1846, 37, 1855, 38, 2023, 39, 2025, 88, 2100, 39, 2106, 37, 2113, 38 ], //66
goldDrop: [ 38, 20 ]
},
{
level: 5,
ai:1,
time: 6878,
state: 1,
action: [0, 40, 288, 38, 293, 39, 347, 88, 356, 37, 359, 88, 371, 37, 376, 88, 388, 37, 393, 88, 406, 37, 411, 88, 423, 37, 429, 88, 441, 37, 447, 88, 459, 37, 464, 88, 477, 37, 482, 88, 496, 37, 500, 88, 515, 37, 518, 88, 535, 37, 550, 88, 623, 40, 637, 40, 638, 40, 639, 40, 640, 40, 641, 40, 642, 40, 643, 40, 644, 40, 645, 40, 646, 40, 647, 40, 648, 40, 649, 40, 650, 40, 651, 40, 652, 40, 776, 38, 783, 39, 835, 88, 844, 37, 851, 88, 862, 37, 868, 88, 880, 37, 885, 88, 898, 37, 902, 88, 916, 37, 919, 88, 932, 37, 937, 88, 949, 37, 954, 88, 967, 37, 972, 88, 985, 37, 989, 88, 1012, 37, 1018, 88, 1115, 40, 1137, 38, 1159, 39, 1181, 38, 1217, 90, 1265, 37, 1285, 40, 1295, 39, 1438, 40, 1446, 39, 1497, 88, 1506, 37, 1514, 88, 1524, 37, 1530, 88, 1540, 37, 1546, 88, 1558, 37, 1564, 88, 1575, 37, 1581, 88, 1592, 37, 1598, 88, 1610, 37, 1615, 88, 1629, 37, 1634, 88, 1644, 37, 1649, 88, 1661, 37, 1666, 88, 1773, 38, 1806, 39, 1830, 38, 1897, 90, 1964, 37, 1991, 40, 2000, 39, 2127, 40, 2141, 40, 2142, 40, 2143, 40, 2144, 40, 2145, 40, 2146, 40, 2147, 40, 2148, 40, 2149, 40, 2150, 40, 2151, 40, 2152, 40, 2153, 40, 2154, 40, 2155, 40, 2156, 40, 2157, 40, 2158, 40, 2159, 40, 2160, 40, 2161, 40, 2162, 40, 2163, 40, 2164, 40, 2322, 38, 2339, 40, 2373, 38, 2396, 40, 2433, 38, 2442, 39, 2453, 40, 2456, 39, 2509, 88, 2519, 37, 2522, 88, 2533, 37, 2539, 88, 2550, 37, 2556, 88, 2567, 37, 2574, 88, 2585, 37, 2591, 88, 2601, 37, 2608, 88, 2619, 37, 2626, 88, 2637, 37, 2643, 88, 2654, 37, 2660, 88, 2672, 37, 2678, 88, 2687, 37, 2694, 88, 2782, 38, 2829, 39, 2851, 38, 2971, 90, 3018, 37, 3039, 40, 3048, 39, 3190, 40, 3204, 40, 3478, 38, 3484, 39, 3535, 88, 3545, 37, 3552, 88, 3563, 37, 3570, 88, 3582, 37, 3588, 88, 3601, 37, 3606, 88, 3617, 37, 3623, 88, 3635, 37, 3640, 88, 3652, 37, 3657, 88, 3669, 37, 3674, 88, 3685, 37, 3690, 88, 3700, 37, 3706, 88, 3791, 38, 3860, 39, 3876, 38, 3918, 39, 3927, 38, 3937, 37, 3947, 38, 4015, 90, 4056, 37, 4070, 40, 4080, 39, 4241, 38, 4262, 39, 4333, 37, 4339, 88, 4350, 37, 4416, 40, 4430, 39, 4496, 37, 4503, 88, 4513, 37, 4576, 40, 4588, 39, 4600, 40, 4604, 39, 4665, 37, 4672, 88, 4681, 37, 4741, 40, 4756, 39, 4811, 37, 4817, 88, 4827, 37, 4879, 40, 4894, 39, 5029, 38, 5096, 90, 5107, 40, 5112, 90, 5123, 40, 5128, 90, 5141, 40, 5145, 90, 5158, 40, 5162, 90, 5174, 40, 5179, 90, 5191, 40, 5196, 90, 5208, 40, 5213, 90, 5226, 40, 5230, 90, 5244, 40, 5248, 90, 5260, 37, 5278, 39, 5290, 38, 5347, 37, 5387, 90, 5399, 39, 5404, 90, 5416, 39, 5421, 90, 5433, 39, 5439, 90, 5451, 39, 5457, 90, 5468, 39, 5474, 90, 5485, 39, 5490, 90, 5497, 37, 5535, 90, 5546, 39, 5551, 90, 5563, 39, 5568, 90, 5581, 39, 5586, 90, 5597, 39, 5603, 90, 5612, 39, 5622, 90, 5631, 37, 5654, 90, 5667, 39, 5671, 90, 5685, 39, 5689, 90, 5702, 37, 5718, 90, 5728, 39, 5735, 90, 5748, 37, 5768, 88, 5780, 40, 5786, 88, 5799, 40, 5803, 88, 5817, 40, 5822, 88, 5834, 40, 5839, 88, 5852, 40, 5857, 88, 5873, 40, 5881, 39, 5897, 90, 5908, 37, 5918, 39, 5963, 38, 6028, 37, 6048, 88, 6059, 37, 6066, 88, 6076, 37, 6082, 88, 6094, 37, 6100, 88, 6111, 37, 6117, 88, 6128, 37, 6134, 88, 6145, 37, 6151, 88, 6161, 39, 6190, 88, 6201, 37, 6208, 88, 6219, 37, 6225, 88, 6237, 37, 6243, 88, 6254, 37, 6262, 88, 6273, 39, 6293, 88, 6302, 37, 6310, 88, 6322, 37, 6329, 88, 6337, 39, 6354, 88, 6367, 39, 6384, 90, 6395, 40, 6401, 90, 6414, 40, 6418, 90, 6432, 40, 6436, 90, 6450, 40, 6454, 90, 6467, 40, 6471, 90, 6490, 40, 6501, 90, 6514, 37, 6525, 39, 6554, 38, 6620, 37, 6666, 90, 6681, 37, 6746, 39, 6801, 38], //358
bornPos: [1, 27, 27]
},
{
level: 6,
ai:1,
time: 6375,
state: 1,
action: [0, 39, 6, 38, 24, 37, 138, 40, 173, 39, 182, 38, 196, 37, 211, 39, 218, 38, 231, 39, 236, 38, 320, 39, 337, 37, 374, 38, 459, 39, 596, 40, 611, 90, 622, 38, 640, 37, 655, 40, 708, 37, 716, 39, 730, 38, 744, 38, 756, 39, 769, 39, 770, 39, 771, 39, 772, 39, 773, 39, 774, 39, 775, 39, 776, 39, 777, 39, 778, 39, 779, 39, 780, 39, 781, 39, 782, 39, 783, 39, 784, 39, 785, 39, 833, 39, 837, 38, 847, 90, 887, 38, 953, 40, 969, 38, 976, 90, 987, 38, 1007, 37, 1058, 39, 1072, 38, 1105, 40, 1131, 37, 1135, 88, 1207, 39, 1220, 39, 1246, 37, 1322, 39, 1401, 39, 1493, 38, 1573, 40, 1585, 38, 1600, 40, 1614, 38, 1622, 39, 1632, 40, 1641, 39, 1652, 90, 1667, 37, 1686, 88, 1762, 39, 1777, 38, 1812, 37, 1857, 38, 1887, 39, 1896, 40, 1920, 39, 1923, 90, 1962, 37, 1984, 39, 2037, 39, 2068, 38, 2152, 37, 2213, 39, 2224, 38, 2272, 37, 2279, 40, 2297, 39, 2320, 37, 2358, 39, 2429, 38, 2514, 37, 2655, 40, 2687, 88, 2699, 38, 2733, 39, 2815, 38, 3000, 40, 3021, 90, 3078, 37, 3084, 39, 3109, 37, 3149, 39, 3162, 39, 3163, 39, 3331, 38, 3475, 37, 3539, 40, 3551, 39, 3595, 37, 3718, 39, 3725, 90, 3734, 39, 3748, 39, 3749, 39, 3750, 39, 3812, 38, 3895, 37, 3951, 38, 4310, 40, 4360, 39, 4383, 37, 4419, 39, 4491, 38, 4575, 37, 4668, 40, 4692, 39, 4696, 40, 4710, 37, 4720, 39, 4743, 37, 4760, 39, 4765, 88, 4774, 37, 4826, 39, 4853, 37, 4856, 88, 4869, 37, 4875, 38, 4905, 39, 4914, 38, 4958, 39, 4972, 39, 4973, 39, 4992, 90, 5006, 37, 5009, 90, 5017, 39, 5034, 37, 5059, 39, 5111, 38, 5196, 37, 5269, 39, 5287, 38, 5657, 40, 5675, 90, 5739, 37, 5743, 39, 5753, 38, 5765, 39, 5776, 37, 5813, 39, 5827, 39, 5828, 39, 5829, 39, 5894, 38, 5983, 37, 6073, 40, 6085, 90, 6103, 37, 6114, 39, 6146, 90, 6159, 39, 6164, 90, 6178, 37, 6185, 39, 6230, 37, 6292, 38], //180
goldDrop: [29, 35, 27, 35, 23]
},
{
level: 7,
ai:1,
time: 10949,
state: 1,
action: [0, 38, 4, 38, 9, 38, 14, 38, 19, 38, 29, 38, 81, 37, 95, 37, 96, 37, 97, 37, 140, 38, 222, 39, 241, 38, 284, 39, 287, 38, 395, 39, 399, 38, 600, 40, 651, 39, 902, 37, 918, 39, 936, 37, 986, 38, 1073, 39, 1099, 38, 1469, 40, 1516, 39, 1597, 37, 1615, 39, 1638, 37, 1665, 38, 1751, 39, 1810, 40, 1833, 37, 1857, 39, 1874, 37, 1878, 90, 1888, 39, 1948, 37, 1973, 39, 1981, 37, 1992, 39, 2000, 90, 2009, 39, 2042, 37, 2050, 39, 2084, 37, 2095, 39, 2167, 37, 2181, 39, 2228, 38, 2234, 39, 2325, 38, 2411, 37, 2464, 38, 2480, 39, 2496, 38, 2541, 39, 2548, 38, 2847, 40, 2890, 38, 3020, 39, 3041, 39, 3081, 37, 3097, 39, 3140, 38, 3187, 40, 3262, 38, 3348, 37, 3460, 38, 3488, 39, 3490, 38, 3665, 40, 3706, 39, 3711, 39, 3724, 39, 3725, 39, 3726, 39, 3757, 37, 3771, 39, 3830, 38, 3837, 39, 3891, 37, 3898, 39, 3935, 37, 4039, 38, 4052, 37, 4142, 38, 4226, 39, 4291, 38, 4306, 40, 4337, 37, 4378, 39, 4386, 90, 4397, 39, 4452, 37, 4485, 39, 4491, 90, 4501, 39, 4603, 37, 4638, 39, 4695, 38, 4702, 39, 4710, 88, 4762, 39, 4891, 38, 4977, 37, 5018, 38, 5046, 39, 5064, 38, 5139, 37, 5144, 38, 5400, 40, 5441, 38, 5511, 39, 5545, 37, 5564, 39, 5596, 38, 5657, 39, 5668, 40, 5675, 39, 5685, 40, 5706, 38, 5723, 40, 5740, 38, 5791, 37, 5852, 40, 5871, 39, 5896, 37, 5904, 88, 5913, 37, 5934, 39, 5941, 38, 5983, 39, 6007, 37, 6024, 39, 6027, 88, 6038, 37, 6052, 37, 6082, 39, 6088, 38, 6137, 39, 6151, 38, 6201, 39, 6215, 37, 6263, 38, 6269, 37, 6417, 38, 6500, 39, 6516, 40, 6571, 37, 6613, 38, 6696, 39, 6764, 38, 6811, 39, 6813, 38, 6865, 40, 6971, 39, 6978, 38, 6994, 39, 7018, 37, 7059, 39, 7091, 37, 7105, 39, 7115, 37, 7292, 39, 7295, 88, 7301, 37, 7315, 37, 7316, 37, 7317, 37, 7318, 37, 7319, 37, 7372, 39, 7396, 37, 7429, 38, 7436, 37, 7526, 38, 7607, 40, 7626, 37, 7648, 38, 7686, 39, 7755, 40, 7793, 39, 7816, 37, 7842, 39, 7845, 88, 7852, 37, 7866, 37, 7867, 37, 7868, 37, 7886, 39, 7892, 38, 7915, 39, 7984, 38, 8158, 37, 8176, 40, 8242, 37, 8255, 39, 8270, 37, 8303, 38, 8309, 37, 8399, 38, 8512, 39, 8603, 37, 8634, 38, 8679, 37, 8731, 40, 8807, 39, 8853, 38, 8862, 39, 8954, 38, 9061, 37, 9123, 39, 9143, 38, 9169, 39, 9179, 38, 9474, 40, 9511, 38, 9618, 39, 9664, 37, 9677, 39, 9712, 38, 9797, 37, 9862, 38, 9874, 40, 9909, 39, 9964, 88, 9975, 37, 10050, 39, 10075, 37, 10106, 38, 10112, 37, 10125, 38, 10153, 88, 10220, 39, 10292, 38, 10399, 37, 10454, 40, 10479, 39, 10512, 88, 10524, 37, 10641, 39, 10651, 38, 10659, 39, 10712, 37, 10723, 39, 10738, 37, 10771, 38, 10777, 37, 10866, 38], //251
goldDrop: [37, 26, 31, 17, 35, 17, 15, 25],
bornPos: [1, 10]
},
{
level: 8,
ai:1,
time: 2738,
state: 1,
action: [0, 37, 6, 38, 40, 37, 79, 38, 100, 39, 112, 90, 145, 37, 158, 38, 185, 39, 192, 37, 200, 40, 210, 39, 226, 38, 231, 39, 241, 38, 245, 39, 274, 90, 288, 37, 294, 40, 301, 39, 312, 38, 318, 39, 328, 38, 332, 39, 346, 37, 360, 40, 370, 37, 380, 39, 391, 90, 399, 37, 410, 40, 426, 37, 444, 88, 489, 39, 501, 38, 507, 39, 516, 38, 522, 39, 534, 38, 541, 39, 550, 38, 555, 39, 572, 37, 612, 39, 627, 90, 763, 37, 767, 40, 781, 40, 782, 37, 792, 88, 829, 39, 839, 38, 846, 39, 856, 38, 864, 39, 873, 38, 881, 39, 896, 37, 916, 40, 924, 90, 995, 37, 1001, 40, 1015, 40, 1018, 37, 1032, 88, 1069, 40, 1078, 37, 1089, 40, 1097, 37, 1107, 88, 1207, 40, 1220, 40, 1221, 40, 1328, 38, 1337, 39, 1346, 38, 1353, 39, 1363, 38, 1369, 39, 1378, 38, 1384, 39, 1396, 37, 1409, 40, 1417, 37, 1427, 40, 1438, 37, 1444, 40, 1457, 37, 1462, 40, 1474, 37, 1507, 40, 1520, 37, 1530, 40, 1541, 37, 1551, 40, 1566, 37, 1576, 40, 1607, 90, 1618, 37, 1625, 40, 1639, 40, 1640, 40, 1641, 40, 1644, 90, 1649, 37, 1657, 40, 1667, 37, 1677, 40, 1689, 39, 1702, 38, 1709, 39, 1719, 38, 1726, 39, 1736, 38, 1744, 39, 1754, 90, 1763, 37, 1775, 40, 1788, 37, 1797, 39, 1812, 38, 1818, 39, 1830, 38, 1834, 39, 1843, 90, 1853, 37, 1866, 40, 1874, 39, 1887, 38, 1894, 39, 1903, 38, 1911, 39, 1921, 38, 1928, 39, 1946, 90, 1958, 37, 1968, 40, 1974, 39, 1987, 38, 1993, 39, 2003, 90, 2014, 37, 2024, 40, 2033, 39, 2046, 38, 2114, 37, 2218, 40, 2230, 37, 2242, 40, 2276, 90, 2315, 38, 2369, 40, 2400, 37, 2413, 40, 2424, 37, 2435, 40, 2446, 37, 2458, 40, 2472, 40, 2591, 38, 2600, 39, 2629, 38, 2635, 39, 2651, 38, 2659, 39, 2670, 38, 2680, 39, 2688, 38, 2697, 39, 2707, 38, 2721, 39, 2727, 38], //172
goldDrop: [14]
},
{
level: 9,
ai:1,
time: 7861,
state: 1,
action: [0, 90, 20, 37, 38, 40, 45, 90, 58, 88, 64, 40, 69, 90, 89, 39, 92, 90, 106, 37, 116, 39, 184, 37, 187, 88, 197, 39, 211, 39, 212, 39, 213, 39, 214, 39, 215, 39, 216, 39, 217, 39, 218, 39, 222, 38, 228, 39, 236, 37, 240, 38, 249, 37, 252, 38, 261, 37, 264, 38, 273, 37, 276, 38, 284, 37, 287, 38, 296, 37, 300, 38, 309, 37, 312, 38, 323, 37, 328, 90, 340, 37, 360, 39, 365, 90, 379, 37, 393, 88, 403, 39, 426, 90, 435, 37, 466, 90, 477, 37, 501, 38, 506, 37, 514, 39, 519, 38, 525, 39, 530, 38, 539, 39, 543, 38, 551, 39, 555, 38, 562, 39, 565, 38, 572, 39, 575, 38, 595, 39, 602, 38, 610, 39, 622, 90, 636, 37, 666, 39, 678, 37, 708, 90, 721, 37, 742, 38, 751, 90, 769, 40, 770, 90, 788, 40, 795, 37, 806, 39, 814, 38, 826, 39, 828, 38, 858, 39, 865, 38, 871, 39, 878, 38, 883, 39, 889, 38, 894, 39, 900, 38, 905, 39, 910, 38, 915, 39, 917, 38, 928, 39, 933, 38, 940, 39, 945, 90, 953, 39, 958, 90, 970, 39, 976, 90, 989, 40, 997, 39, 1008, 37, 1014, 38, 1095, 37, 1109, 37, 1110, 37, 1111, 37, 1112, 37, 1113, 37, 1114, 37, 1115, 37, 1116, 37, 1117, 37, 1118, 37, 1119, 37, 1120, 37, 1121, 37, 1122, 37, 1123, 37, 1124, 37, 1125, 37, 1126, 37, 1127, 37, 1128, 37, 1216, 39, 1220, 90, 1233, 37, 1246, 37, 1252, 38, 1303, 40, 1307, 90, 1332, 40, 1388, 38, 1400, 39, 1407, 38, 1414, 39, 1420, 38, 1426, 39, 1432, 38, 1438, 39, 1444, 38, 1449, 39, 1456, 38, 1461, 39, 1465, 38, 1485, 39, 1495, 38, 1514, 90, 1531, 39, 1536, 90, 1558, 40, 1565, 39, 1673, 40, 1686, 39, 1691, 40, 1701, 39, 1707, 40, 1716, 39, 1722, 40, 1731, 39, 1737, 40, 1746, 39, 1754, 40, 1763, 88, 1773, 38, 1776, 88, 1787, 40, 1823, 38, 1834, 37, 1838, 38, 1847, 37, 1851, 38, 1860, 37, 1864, 38, 1873, 37, 1877, 38, 1886, 37, 1889, 38, 1898, 37, 1904, 38, 1913, 37, 1922, 88, 1976, 39, 1983, 37, 1995, 88, 2003, 40, 2014, 37, 2216, 39, 2224, 38, 2229, 39, 2246, 40, 2254, 39, 2264, 40, 2273, 39, 2279, 40, 2287, 39, 2295, 40, 2301, 39, 2308, 40, 2315, 39, 2322, 40, 2329, 39, 2341, 40, 2348, 39, 2359, 37, 2364, 88, 2378, 40, 2425, 38, 2435, 37, 2440, 38, 2448, 37, 2453, 38, 2461, 37, 2465, 38, 2475, 37, 2478, 38, 2487, 37, 2490, 38, 2500, 37, 2505, 38, 2519, 37, 2526, 38, 2537, 37, 2540, 88, 2580, 39, 2587, 37, 2599, 88, 2607, 40, 2619, 37, 2821, 39, 2827, 38, 2832, 39, 2846, 40, 2854, 39, 2860, 40, 2868, 39, 2875, 40, 2882, 39, 2888, 40, 2896, 39, 2902, 40, 2908, 39, 2915, 40, 2920, 39, 2928, 40, 2936, 88, 2956, 40, 3022, 38, 3034, 37, 3039, 38, 3046, 37, 3052, 38, 3060, 37, 3063, 38, 3073, 37, 3076, 38, 3085, 37, 3089, 38, 3099, 37, 3104, 38, 3119, 37, 3127, 88, 3161, 37, 3166, 88, 3180, 40, 3192, 38, 3245, 40, 3256, 37, 3262, 40, 3268, 37, 3273, 40, 3277, 37, 3281, 40, 3285, 37, 3289, 40, 3293, 37, 3297, 40, 3300, 37, 3304, 40, 3308, 37, 3318, 39, 3325, 90, 3388, 38, 3396, 39, 3402, 38, 3407, 39, 3413, 38, 3419, 39, 3425, 38, 3429, 39, 3434, 38, 3439, 39, 3443, 38, 3446, 39, 3450, 38, 3454, 39, 3463, 39, 3474, 40, 3482, 39, 3487, 40, 3493, 39, 3499, 40, 3504, 39, 3510, 40, 3515, 39, 3521, 40, 3525, 39, 3531, 40, 3536, 39, 3543, 40, 3549, 88, 3562, 40, 3569, 39, 3577, 40, 3588, 37, 3594, 40, 3601, 37, 3617, 39, 3621, 38, 3636, 37, 3640, 38, 3648, 37, 3653, 38, 3660, 37, 3664, 38, 3673, 37, 3676, 38, 3685, 37, 3689, 38, 3698, 37, 3702, 38, 3735, 37, 3742, 88, 3751, 37, 3755, 88, 3764, 37, 3777, 40, 3786, 37, 3791, 40, 3795, 37, 3801, 40, 3804, 37, 3807, 40, 3809, 37, 3812, 40, 3814, 37, 3817, 40, 3819, 37, 3822, 40, 3823, 37, 3826, 40, 3828, 37, 3831, 40, 3833, 37, 3840, 37, 3847, 40, 3853, 90, 3863, 37, 3891, 38, 3897, 37, 3910, 38, 3931, 40, 3961, 38, 4007, 40, 4021, 40, 4022, 40, 4023, 40, 4048, 38, 4134, 40, 4184, 39, 4200, 37, 4208, 38, 4217, 39, 4226, 38, 4231, 39, 4236, 38, 4239, 39, 4243, 38, 4246, 39, 4250, 38, 4253, 39, 4257, 38, 4259, 39, 4263, 38, 4265, 39, 4269, 38, 4274, 39, 4277, 38, 4287, 37, 4363, 38, 4371, 39, 4385, 38, 4395, 37, 4403, 38, 4414, 39, 4421, 38, 4427, 39, 4434, 38, 4438, 39, 4441, 38, 4451, 37, 4470, 38, 4480, 39, 4488, 38, 4494, 39, 4499, 38, 4504, 39, 4509, 38, 4513, 39, 4517, 38, 4522, 39, 4525, 38, 4529, 39, 4532, 38, 4536, 39, 4540, 38, 4544, 39, 4547, 38, 4552, 39, 4555, 38, 4558, 39, 4561, 38, 4563, 39, 4566, 38, 4584, 39, 4590, 88, 4612, 39, 4625, 39, 4626, 39, 4627, 39, 4628, 39, 4629, 39, 4630, 39, 4631, 39, 4632, 39, 4633, 39, 4634, 39, 4635, 39, 4636, 39, 4637, 39, 4639, 40, 4646, 39, 4651, 40, 4671, 38, 4676, 37, 4681, 38, 4686, 90, 4729, 37, 4745, 40, 4752, 37, 4763, 39, 4768, 38, 4773, 88, 4781, 40, 4794, 37, 4802, 40, 4816, 40, 4817, 40, 4830, 38, 4998, 39, 5003, 38, 5007, 39, 5020, 40, 5027, 39, 5031, 40, 5036, 39, 5042, 40, 5047, 39, 5051, 40, 5059, 39, 5063, 40, 5067, 39, 5069, 40, 5073, 39, 5075, 40, 5079, 39, 5082, 40, 5084, 39, 5087, 40, 5091, 39, 5099, 38, 5106, 37, 5110, 88, 5121, 39, 5134, 39, 5135, 39, 5136, 39, 5137, 39, 5138, 39, 5139, 39, 5140, 39, 5141, 39, 5142, 39, 5143, 39, 5148, 38, 5163, 37, 5165, 38, 5171, 37, 5177, 38, 5186, 37, 5190, 38, 5199, 37, 5202, 38, 5211, 37, 5213, 38, 5225, 37, 5227, 38, 5237, 37, 5243, 38, 5250, 37, 5254, 38, 5264, 37, 5268, 38, 5276, 37, 5279, 38, 5287, 37, 5291, 38, 5299, 37, 5419, 38, 5430, 39, 5440, 38, 5450, 39, 5453, 38, 5463, 39, 5467, 38, 5476, 39, 5480, 38, 5488, 39, 5496, 38, 5510, 37, 5566, 38, 5576, 39, 5584, 38, 5595, 39, 5599, 38, 5610, 39, 5614, 38, 5624, 39, 5628, 38, 5637, 39, 5641, 38, 5650, 39, 5655, 38, 5663, 39, 5668, 38, 5677, 39, 5681, 38, 5689, 39, 5694, 38, 5704, 39, 5708, 38, 5730, 37, 5739, 40, 5749, 37, 5831, 40, 5842, 39, 5852, 38, 5861, 39, 5866, 38, 5873, 39, 5879, 38, 5887, 39, 5892, 38, 5900, 39, 5905, 38, 5913, 39, 5919, 38, 5926, 39, 5934, 38, 5951, 37, 6025, 38, 6034, 39, 6042, 38, 6051, 39, 6054, 38, 6062, 39, 6065, 38, 6076, 39, 6079, 38, 6089, 39, 6093, 38, 6101, 39, 6104, 38, 6117, 39, 6122, 38, 6131, 39, 6135, 38, 6143, 39, 6147, 38, 6158, 39, 6162, 38, 6178, 37, 6203, 40, 6212, 37, 6260, 40, 6292, 39, 6301, 38, 6310, 39, 6313, 38, 6322, 39, 6325, 38, 6339, 39, 6344, 38, 6353, 39, 6358, 38, 6367, 39, 6372, 38, 6381, 39, 6385, 38, 6394, 39, 6398, 38, 6408, 39, 6412, 38, 6423, 39, 6427, 38, 6442, 37, 6482, 90, 6517, 37, 6531, 39, 6536, 90, 6549, 37, 6568, 88, 6580, 39, 6595, 37, 6609, 40, 6640, 39, 6650, 38, 6660, 39, 6663, 38, 6671, 39, 6681, 39, 6696, 37, 6733, 38, 6744, 39, 6754, 38, 6763, 39, 6767, 38, 6777, 39, 6781, 38, 6790, 39, 6794, 38, 6803, 39, 6808, 38, 6820, 39, 6825, 38, 6834, 39, 6839, 38, 6848, 39, 6853, 38, 6863, 39, 6868, 38, 6877, 39, 6882, 38, 6892, 39, 6930, 38, 6946, 88, 6959, 39, 7055, 40, 7078, 37, 7088, 38, 7098, 37, 7102, 38, 7111, 37, 7115, 38, 7124, 37, 7125, 38, 7137, 37, 7141, 38, 7150, 37, 7154, 38, 7163, 37, 7167, 38, 7177, 37, 7180, 38, 7189, 37, 7193, 38, 7202, 37, 7204, 38, 7216, 37, 7220, 38, 7228, 37, 7233, 38, 7266, 39, 7285, 88, 7297, 39, 7311, 37, 7318, 88, 7327, 39, 7344, 37, 7350, 88, 7360, 39, 7377, 37, 7383, 88, 7392, 39, 7410, 37, 7418, 88, 7428, 39, 7444, 37, 7452, 88, 7463, 39, 7479, 90, 7497, 37, 7505, 39, 7519, 39, 7520, 39, 7521, 39, 7526, 40, 7550, 37, 7561, 38, 7571, 37, 7575, 38, 7584, 37, 7587, 38, 7597, 37, 7599, 38, 7610, 37, 7614, 38, 7624, 37, 7628, 38, 7637, 37, 7640, 38, 7649, 37, 7652, 38, 7662, 37, 7664, 38, 7676, 37, 7680, 38, 7690, 37, 7696, 38, 7706, 37, 7710, 38, 7738, 39, 7779, 88, 7809, 39, 7823, 39, 7826, 37, 7838, 39, 7850, 38], //742
goldDrop: [16, 19, 35, 28, 25, 36, 15, 28, 24, 18],
bornPos: [1, 21]
},
{
level: 10,
ai:1,
time: 3605,
state: 1,
action: [0, 39, 55, 38, 84, 37, 89, 38, 98, 37, 102, 38, 138, 39, 154, 40, 159, 37, 191, 38, 211, 39, 233, 37, 276, 39, 298, 88, 308, 37, 315, 88, 326, 39, 335, 90, 347, 39, 353, 90, 365, 39, 371, 90, 388, 37, 403, 88, 416, 37, 420, 88, 438, 39, 454, 90, 468, 37, 475, 39, 492, 37, 496, 88, 507, 39, 524, 90, 537, 37, 551, 88, 561, 39, 578, 90, 588, 37, 603, 88, 614, 39, 631, 90, 642, 37, 657, 88, 665, 39, 685, 90, 695, 37, 726, 38, 770, 37, 773, 38, 784, 37, 788, 38, 824, 39, 843, 88, 856, 39, 867, 37, 872, 88, 877, 88, 889, 39, 905, 37, 913, 88, 922, 39, 941, 90, 953, 37, 969, 39, 976, 37, 983, 88, 994, 39, 1009, 90, 1021, 37, 1037, 88, 1046, 39, 1063, 90, 1076, 37, 1089, 88, 1102, 39, 1115, 90, 1127, 37, 1142, 88, 1159, 39, 1178, 37, 1186, 88, 1203, 39, 1227, 38, 1243, 37, 1248, 39, 1251, 38, 1269, 37, 1273, 38, 1285, 39, 1289, 38, 1300, 37, 1305, 38, 1316, 39, 1321, 38, 1331, 37, 1336, 38, 1347, 39, 1352, 38, 1365, 37, 1368, 38, 1380, 39, 1384, 38, 1394, 39, 1398, 38, 1418, 39, 1448, 37, 1456, 39, 1468, 37, 1473, 39, 1479, 40, 1494, 39, 1511, 40, 1545, 39, 1565, 37, 1570, 88, 1584, 39, 1606, 40, 1611, 39, 1633, 38, 1672, 88, 1788, 40, 1794, 88, 1876, 40, 1879, 88, 1890, 38, 1903, 39, 1918, 88, 1928, 39, 1942, 37, 1968, 38, 1986, 37, 2014, 38, 2035, 88, 2047, 40, 2051, 88, 2061, 39, 2084, 38, 2089, 88, 2100, 39, 2121, 38, 2126, 88, 2138, 39, 2159, 38, 2172, 37, 2228, 38, 2249, 39, 2254, 38, 2266, 39, 2270, 38, 2305, 40, 2308, 37, 2324, 40, 2328, 37, 2336, 40, 2365, 39, 2390, 90, 2537, 40, 2543, 90, 2627, 40, 2631, 90, 2652, 38, 2662, 37, 2674, 88, 2683, 37, 2692, 90, 2702, 37, 2713, 39, 2726, 39, 2727, 39, 2728, 39, 2729, 39, 2730, 39, 2731, 39, 2732, 39, 2733, 39, 2734, 39, 2735, 39, 2736, 39, 2746, 38, 2764, 39, 2772, 90, 2782, 39, 2789, 90, 2801, 39, 2807, 90, 3004, 37, 3018, 37, 3019, 37, 3020, 37, 3021, 37, 3022, 37, 3023, 37, 3024, 37, 3025, 37, 3026, 37, 3027, 37, 3028, 37, 3029, 37, 3030, 37, 3031, 37, 3032, 37, 3033, 37, 3034, 37, 3035, 37, 3048, 38, 3062, 38, 3063, 38, 3064, 38, 3065, 38, 3066, 38, 3067, 38, 3068, 38, 3069, 38, 3070, 38, 3071, 38, 3072, 38, 3073, 38, 3074, 38, 3075, 38, 3076, 38, 3077, 38, 3078, 38, 3082, 39, 3086, 38, 3141, 39, 3145, 38, 3239, 40, 3242, 37, 3314, 40, 3318, 37, 3324, 40, 3351, 88, 3363, 39, 3390, 90, 3402, 37, 3416, 37, 3417, 37, 3418, 37, 3420, 40, 3434, 37, 3507, 38, 3553, 37, 3557, 38, 3566, 37, 3572, 38], //246
bornPos: [1, 2]
},
{
level: 11,
ai:1,
time: 3836,
state: 1,
action: [0, 88, 12, 39, 23, 37, 32, 88, 43, 39, 64, 37, 112, 39, 130, 37, 207, 38, 250, 39, 293, 37, 298, 88, 328, 39, 350, 37, 362, 39, 367, 90, 463, 37, 494, 38, 508, 38, 511, 37, 518, 38, 577, 37, 630, 39, 665, 37, 670, 88, 690, 39, 714, 37, 719, 88, 754, 39, 766, 38, 875, 39, 891, 37, 948, 38, 1028, 39, 1083, 40, 1088, 90, 1101, 37, 1115, 90, 1135, 37, 1153, 88, 1163, 39, 1186, 90, 1195, 37, 1217, 88, 1227, 39, 1249, 90, 1261, 37, 1328, 38, 1407, 39, 1493, 40, 1500, 88, 1512, 39, 1527, 37, 1534, 88, 1545, 39, 1565, 90, 1575, 37, 1597, 88, 1608, 39, 1628, 90, 1639, 37, 1660, 88, 1670, 39, 1739, 38, 1818, 37, 1863, 40, 2026, 39, 2078, 37, 2082, 88, 2097, 39, 2119, 88, 2130, 37, 2133, 88, 2211, 39, 2218, 38, 2417, 39, 2461, 38, 2541, 37, 2586, 38, 2598, 40, 2892, 39, 2905, 38, 2961, 39, 2987, 37, 2992, 88, 3002, 39, 3026, 90, 3252, 37, 3258, 88, 3282, 39, 3318, 38, 3398, 37, 3413, 40, 3422, 90, 3438, 37, 3448, 88, 3531, 39, 3539, 38, 3694, 39, 3759, 38] //100
},
{
level: 13,
ai:1,
time: 9521,
state: 1,
action: [0, 39, 85, 40, 100, 39, 112, 40, 136, 39, 162, 38, 198, 37, 270, 40, 284, 39, 304, 38, 309, 39, 341, 37, 373, 40, 400, 37, 412, 40, 416, 37, 430, 39, 445, 40, 459, 40, 468, 39, 494, 37, 501, 38, 513, 38, 528, 37, 529, 38, 539, 39, 584, 38, 628, 37, 668, 40, 684, 39, 690, 39, 693, 37, 704, 38, 717, 39, 758, 38, 798, 39, 836, 40, 850, 40, 851, 40, 852, 40, 853, 40, 854, 40, 920, 38, 930, 37, 1008, 40, 1022, 40, 1023, 40, 1024, 40, 1029, 39, 1061, 40, 1084, 37, 1105, 40, 1118, 39, 1130, 40, 1144, 37, 1165, 40, 1178, 39, 1239, 38, 1260, 37, 1268, 39, 1280, 38, 1290, 39, 1301, 40, 1315, 40, 1316, 40, 1317, 40, 1318, 40, 1319, 40, 1320, 40, 1321, 40, 1323, 40, 1324, 40, 1325, 40, 1326, 40, 1327, 40, 1328, 40, 1342, 37, 1356, 40, 1364, 37, 1396, 39, 1428, 38, 1474, 37, 1484, 40, 1498, 40, 1499, 40, 1500, 40, 1501, 40, 1502, 40, 1503, 40, 1504, 40, 1505, 40, 1506, 40, 1507, 40, 1508, 40, 1509, 40, 1510, 40, 1511, 40, 1512, 40, 1513, 40, 1514, 40, 1515, 40, 1516, 40, 1517, 40, 1518, 40, 1522, 37, 1583, 38, 1595, 39, 1616, 38, 1629, 37, 1648, 38, 1671, 37, 1681, 39, 1709, 37, 1727, 40, 1741, 40, 1752, 37, 1763, 40, 1777, 40, 1778, 40, 1779, 40, 1780, 40, 1781, 40, 1782, 40, 1783, 40, 1784, 40, 1785, 40, 1786, 40, 1787, 40, 1788, 40, 1789, 40, 1790, 40, 1798, 39, 1821, 37, 1847, 38, 1881, 39, 1901, 38, 1915, 39, 1935, 38, 1993, 37, 2035, 38, 2104, 40, 2120, 39, 2152, 40, 2166, 40, 2167, 40, 2168, 40, 2174, 37, 2188, 37, 2189, 37, 2190, 37, 2197, 40, 2211, 37, 2231, 39, 2241, 38, 2268, 39, 2394, 37, 2413, 40, 2427, 40, 2428, 40, 2429, 40, 2435, 39, 2457, 40, 2468, 37, 2482, 37, 2483, 37, 2484, 37, 2489, 40, 2502, 39, 2506, 39, 2510, 37, 2518, 38, 2530, 39, 2543, 39, 2550, 38, 2560, 40, 2592, 38, 2604, 37, 2611, 38, 2624, 37, 2628, 38, 2644, 39, 2678, 38, 2726, 37, 2757, 38, 2779, 39, 2855, 38, 3007, 40, 3019, 39, 3023, 40, 3037, 40, 3079, 39, 3088, 40, 3102, 40, 3103, 40, 3104, 40, 3105, 40, 3106, 40, 3107, 40, 3108, 40, 3109, 40, 3110, 40, 3111, 40, 3112, 40, 3113, 40, 3114, 40, 3115, 40, 3116, 40, 3117, 40, 3118, 40, 3119, 40, 3175, 38, 3187, 39, 3277, 40, 3290, 40, 3291, 40, 3292, 40, 3293, 40, 3320, 39, 3337, 40, 3351, 40, 3352, 40, 3360, 39, 3365, 40, 3379, 40, 3380, 40, 3381, 40, 3382, 40, 3383, 40, 3384, 40, 3385, 40, 3386, 40, 3387, 40, 3388, 40, 3389, 40, 3390, 40, 3391, 40, 3392, 40, 3393, 40, 3394, 40, 3395, 40, 3396, 40, 3458, 38, 3480, 37, 3498, 38, 3519, 37, 3531, 38, 3540, 37, 3554, 37, 3583, 40, 3598, 39, 3602, 40, 3661, 38, 3686, 40, 4243, 38, 4301, 37, 4340, 40, 4352, 39, 4381, 40, 4400, 37, 4413, 37, 4418, 40, 4424, 37, 4444, 40, 4455, 39, 4464, 40, 4474, 37, 4488, 37, 4489, 37, 4490, 37, 4491, 37, 4495, 40, 4509, 40, 4510, 40, 4511, 40, 4523, 39, 4583, 38, 4604, 37, 4615, 38, 4635, 39, 4662, 37, 4689, 40, 4703, 40, 4704, 40, 4710, 39, 4725, 38, 4735, 39, 4746, 40, 4764, 39, 4776, 40, 4780, 39, 4798, 40, 4811, 40, 4812, 40, 4821, 37, 4839, 39, 4890, 37, 4899, 38, 4921, 37, 4942, 38, 4968, 37, 4981, 40, 4995, 40, 4996, 40, 4997, 40, 4998, 40, 4999, 40, 5000, 40, 5001, 40, 5002, 40, 5003, 40, 5004, 40, 5005, 40, 5006, 40, 5007, 40, 5008, 40, 5009, 40, 5010, 40, 5011, 40, 5012, 40, 5013, 40, 5047, 37, 5061, 37, 5062, 37, 5111, 38, 5124, 39, 5146, 38, 5161, 37, 5170, 38, 5196, 40, 5240, 38, 5290, 40, 5328, 38, 5354, 40, 5391, 38, 5422, 40, 5459, 38, 5503, 40, 5540, 38, 5576, 39, 5594, 38, 5628, 40, 5642, 40, 5643, 40, 5644, 40, 5645, 40, 5646, 40, 5647, 40, 5648, 40, 5649, 40, 5650, 40, 5651, 40, 5652, 40, 5653, 40, 5654, 40, 5692, 37, 5714, 40, 5728, 39, 5740, 40, 5754, 40, 5776, 37, 5798, 40, 5814, 39, 5876, 38, 5911, 39, 5923, 40, 5936, 40, 5937, 40, 5938, 40, 5939, 40, 5940, 40, 5941, 40, 5942, 40, 5943, 40, 5944, 40, 5945, 40, 5946, 40, 5947, 40, 5948, 40, 5949, 40, 5950, 40, 5951, 40, 5952, 40, 5953, 40, 5954, 40, 5955, 40, 5956, 40, 5957, 40, 5958, 40, 5959, 40, 5960, 40, 5961, 40, 5962, 40, 5963, 40, 5964, 40, 5965, 40, 5966, 40, 5967, 40, 5968, 40, 5969, 40, 5970, 40, 6058, 38, 6127, 40, 6141, 40, 6142, 40, 6143, 40, 6144, 40, 6145, 40, 6146, 40, 6147, 40, 6148, 40, 6149, 40, 6150, 40, 6151, 40, 6152, 40, 6153, 40, 6154, 40, 6155, 40, 6156, 40, 6157, 40, 6158, 40, 6159, 40, 6160, 40, 6161, 40, 6162, 40, 6163, 40, 6164, 40, 6165, 40, 6242, 38, 6314, 37, 6329, 40, 6338, 37, 6442, 38, 6501, 40, 6552, 38, 6633, 40, 6647, 40, 6648, 40, 6649, 40, 6650, 40, 6651, 40, 6652, 40, 6653, 40, 6662, 39, 6673, 40, 6710, 37, 6848, 38, 6860, 39, 6879, 38, 6894, 37, 6904, 38, 6923, 39, 6973, 38, 7000, 37, 7094, 38, 7105, 39, 7185, 38, 7202, 40, 7216, 40, 7217, 40, 7218, 40, 7219, 40, 7220, 40, 7221, 40, 7222, 40, 7223, 40, 7224, 40, 7290, 38, 7299, 37, 7378, 40, 7392, 40, 7393, 40, 7394, 40, 7395, 40, 7396, 40, 7397, 40, 7398, 40, 7399, 40, 7405, 39, 7439, 40, 7460, 37, 7478, 40, 7490, 39, 7501, 40, 7511, 37, 7530, 40, 7544, 39, 7610, 38, 7646, 39, 7658, 40, 7678, 39, 7740, 37, 7757, 38, 7774, 37, 7778, 38, 7780, 37, 7785, 38, 7803, 37, 7818, 40, 7828, 37, 7842, 38, 7866, 39, 7894, 40, 7907, 40, 7908, 40, 7909, 40, 7910, 40, 7911, 40, 7912, 40, 7913, 40, 7973, 39, 8000, 40, 8013, 40, 8014, 40, 8015, 40, 8016, 40, 8017, 40, 8018, 40, 8019, 40, 8020, 40, 8463, 38, 8491, 37, 8520, 38, 8534, 39, 8607, 38, 8647, 40, 8655, 39, 8671, 40, 8685, 40, 8686, 40, 8690, 38, 8718, 40, 8727, 37, 8750, 40, 8763, 40, 8764, 40, 8765, 40, 8766, 40, 8767, 40, 8768, 40, 8769, 40, 8770, 40, 8809, 39, 8828, 40, 8847, 38, 8869, 37, 8878, 39, 8890, 40, 8921, 38, 8932, 39, 8979, 40, 8992, 40, 8993, 40, 8994, 40, 8995, 40, 8996, 40, 8997, 40, 8998, 40, 8999, 40, 9000, 40, 9001, 40, 9002, 40, 9003, 40, 9004, 40, 9005, 40, 9006, 40, 9007, 40, 9008, 40, 9009, 40, 9010, 40, 9019, 39, 9027, 40, 9040, 40, 9041, 40, 9042, 40, 9043, 40, 9044, 40, 9045, 40, 9046, 40, 9047, 40, 9048, 40, 9090, 38, 9100, 37, 9112, 38, 9133, 37, 9155, 38, 9177, 37, 9208, 40, 9222, 40, 9223, 40, 9228, 39, 9240, 40, 9253, 40, 9254, 40, 9255, 40, 9264, 37, 9327, 38, 9338, 39, 9360, 38, 9374, 37, 9384, 38, 9395, 39, 9414, 38, 9439, 37, 9466, 38, 9486, 37, 9490, 38, 9503, 37, 9515, 38], //608
goldDrop: [18, 24, 39, 32, 37, 17, 39, 29, 38, 39]
},
{
level: 14,
ai:1,
time: 3067,
state: 1,
action: [0, 39, 12, 40, 26, 40, 30, 39, 40, 40, 53, 40, 61, 39, 73, 40, 94, 39, 108, 39, 109, 39, 116, 37, 123, 88, 133, 37, 147, 37, 148, 37, 149, 37, 150, 37, 151, 37, 152, 37, 155, 88, 165, 37, 178, 37, 179, 37, 180, 37, 181, 37, 182, 37, 183, 37, 189, 88, 204, 37, 223, 39, 237, 38, 245, 40, 254, 39, 267, 38, 271, 39, 290, 38, 312, 39, 332, 38, 356, 39, 392, 38, 410, 39, 433, 38, 447, 40, 459, 39, 480, 40, 523, 37, 594, 39, 604, 38, 625, 39, 640, 38, 680, 37, 686, 40, 700, 40, 701, 40, 702, 40, 703, 40, 704, 40, 710, 39, 717, 90, 763, 37, 770, 39, 795, 90, 813, 39, 833, 90, 959, 39, 969, 38, 1011, 40, 1019, 38, 1030, 37, 1052, 38, 1063, 40, 1072, 37, 1074, 38, 1114, 40, 1121, 39, 1176, 40, 1190, 40, 1191, 40, 1192, 40, 1193, 40, 1194, 40, 1195, 40, 1196, 40, 1197, 40, 1198, 40, 1199, 40, 1200, 40, 1201, 40, 1202, 40, 1203, 40, 1204, 40, 1205, 40, 1206, 40, 1207, 40, 1208, 40, 1209, 40, 1210, 40, 1211, 40, 1212, 40, 1213, 40, 1214, 40, 1215, 40, 1216, 40, 1217, 40, 1218, 40, 1219, 40, 1220, 40, 1221, 40, 1222, 40, 1235, 37, 1251, 88, 1263, 37, 1276, 37, 1277, 37, 1278, 37, 1279, 37, 1280, 37, 1281, 37, 1283, 88, 1296, 37, 1316, 88, 1327, 37, 1348, 88, 1516, 37, 1522, 38, 1544, 39, 1564, 38, 1590, 39, 1600, 40, 1604, 39, 1631, 37, 1636, 38, 1651, 39, 1713, 40, 1727, 40, 1728, 40, 1729, 40, 1730, 40, 1731, 40, 1732, 40, 1733, 40, 1734, 40, 1735, 40, 1736, 40, 1737, 40, 1738, 40, 1739, 40, 1740, 40, 1741, 40, 1742, 40, 1743, 40, 1744, 40, 1745, 40, 1746, 40, 1747, 40, 1748, 40, 1749, 40, 1750, 40, 1751, 40, 1752, 40, 1753, 40, 1754, 40, 1755, 40, 1756, 40, 1757, 40, 1758, 40, 1759, 40, 1760, 40, 1761, 40, 1762, 40, 1763, 40, 1772, 39, 1808, 37, 1828, 90, 1841, 39, 1864, 90, 1873, 37, 1876, 90, 1889, 39, 1911, 90, 1973, 39, 2098, 38, 2111, 38, 2143, 37, 2201, 38, 2215, 39, 2307, 40, 2321, 40, 2322, 40, 2323, 40, 2324, 40, 2325, 40, 2326, 40, 2327, 40, 2328, 40, 2329, 40, 2330, 40, 2331, 40, 2332, 40, 2333, 40, 2334, 40, 2335, 40, 2336, 40, 2337, 40, 2338, 40, 2339, 40, 2340, 40, 2341, 40, 2342, 40, 2343, 40, 2344, 40, 2345, 40, 2346, 40, 2347, 40, 2348, 40, 2349, 40, 2350, 40, 2351, 40, 2352, 40, 2353, 40, 2354, 40, 2355, 40, 2356, 40, 2357, 40, 2365, 39, 2388, 37, 2393, 90, 2402, 37, 2405, 90, 2415, 39, 2440, 90, 2451, 90, 2454, 37, 2457, 90, 2469, 39, 2492, 90, 2505, 37, 2507, 90, 2564, 39, 2574, 38, 2620, 37, 2669, 38, 2723, 40, 2737, 40, 2738, 40, 2739, 40, 2740, 40, 2741, 40, 2742, 40, 2743, 40, 2744, 40, 2745, 40, 2746, 40, 2747, 40, 2748, 40, 2749, 40, 2750, 40, 2751, 40, 2752, 40, 2753, 40, 2754, 40, 2755, 40, 2756, 40, 2757, 40, 2758, 40, 2759, 40, 2760, 40, 2761, 40, 2762, 40, 2763, 40, 2764, 40, 2769, 37, 2775, 88, 2848, 39, 2853, 37, 2866, 37, 2901, 38, 2923, 39, 2942, 38, 2964, 39, 3045, 38], //282
goldDrop: [37, 39, 38, 30, 29, 23, 24, 27, 25, 24],
bornPos: [2, 23, 5, 23, 5, 23, 6, 15, 5, 23, 5, 7, 5, 23, 5, 23, 5, 23, 5]
},
{
level: 15,
ai:1,
time: 2482,
state: 1,
action: [0, 39, 76, 38, 146, 39, 223, 38, 289, 39, 361, 38, 423, 39, 488, 38, 545, 39, 605, 38, 656, 39, 711, 38, 755, 39, 804, 38, 843, 39, 888, 38, 916, 39, 960, 40, 975, 39, 982, 40, 1188, 38, 1231, 37, 1271, 90, 1275, 39, 1289, 39, 1290, 39, 1291, 39, 1292, 39, 1316, 37, 1330, 90, 1357, 37, 1406, 90, 1412, 39, 1426, 39, 1427, 39, 1488, 37, 1494, 39, 1502, 37, 1512, 37, 1556, 38, 1626, 39, 1703, 38, 1765, 39, 1835, 38, 1895, 39, 1961, 38, 2013, 39, 2070, 38, 2115, 39, 2163, 38, 2175, 39, 2179, 38, 2224, 39, 2274, 38, 2311, 39, 2357, 38, 2411, 39, 2449, 38], //58
goldDrop: [38]
},
{
level: 16,
ai:1,
time: 5396,
state: 1,
action: [0, 39, 5, 90, 16, 37, 33, 90, 45, 37, 60, 39, 64, 90, 75, 37, 91, 39, 95, 90, 107, 37, 121, 88, 132, 39, 168, 38, 242, 37, 258, 38, 264, 37, 286, 38, 317, 40, 333, 39, 362, 37, 379, 39, 395, 39, 403, 37, 413, 39, 423, 38, 446, 37, 507, 40, 515, 39, 603, 40, 628, 38, 643, 90, 678, 38, 682, 90, 709, 38, 718, 90, 770, 38, 784, 38, 785, 38, 786, 38, 787, 38, 788, 38, 789, 38, 800, 37, 882, 40, 892, 39, 1000, 39, 1012, 38, 1020, 90, 1058, 38, 1072, 90, 1120, 38, 1147, 37, 1188, 39, 1203, 40, 1231, 39, 1264, 39, 1270, 40, 1300, 38, 1312, 90, 1353, 38, 1366, 90, 1377, 38, 1405, 37, 1506, 40, 1519, 39, 1532, 39, 1533, 39, 1534, 39, 1535, 39, 1536, 39, 1537, 39, 1538, 39, 1539, 39, 1540, 39, 1541, 39, 1542, 39, 1543, 39, 1544, 39, 1553, 38, 1559, 39, 1567, 38, 1572, 39, 1594, 37, 1598, 88, 1609, 39, 1625, 37, 1640, 39, 1659, 90, 1664, 37, 1677, 39, 1683, 37, 1691, 88, 1705, 39, 1722, 37, 1731, 38, 1739, 37, 1746, 38, 1753, 37, 1762, 38, 1772, 37, 1782, 38, 1793, 37, 1803, 38, 1812, 37, 1821, 38, 1832, 37, 1845, 38, 1863, 37, 1875, 40, 1887, 39, 2003, 40, 2014, 37, 2028, 37, 2029, 37, 2030, 37, 2031, 37, 2032, 37, 2033, 37, 2052, 40, 2148, 38, 2162, 37, 2178, 40, 2184, 37, 2198, 38, 2278, 39, 2312, 37, 2321, 38, 2339, 90, 2360, 37, 2374, 39, 2383, 37, 2394, 39, 2408, 39, 2409, 39, 2410, 39, 2411, 39, 2412, 39, 2413, 39, 2414, 39, 2415, 39, 2416, 39, 2417, 39, 2418, 39, 2419, 39, 2462, 37, 2478, 40, 2547, 39, 2566, 38, 2579, 37, 2630, 40, 2637, 37, 2704, 40, 2781, 39, 2801, 40, 2832, 38, 2861, 40, 2897, 38, 2919, 37, 2944, 40, 2954, 37, 2971, 38, 3057, 39, 3080, 38, 3118, 90, 3130, 37, 3138, 90, 3156, 37, 3166, 88, 3180, 37, 3181, 88, 3196, 37, 3198, 88, 3220, 39, 3332, 38, 3339, 39, 3514, 38, 3521, 39, 3567, 40, 3590, 39, 3630, 38, 3637, 39, 3645, 38, 3652, 39, 3661, 38, 3666, 39, 3700, 37, 3713, 40, 3794, 38, 3800, 39, 3807, 40, 3830, 39, 3845, 90, 3859, 37, 3921, 40, 3928, 37, 3977, 38, 3989, 37, 4001, 40, 4008, 37, 4022, 38, 4099, 39, 4188, 38, 4274, 37, 4451, 40, 4628, 39, 4644, 40, 4679, 39, 4687, 38, 4728, 37, 4892, 40, 4906, 39, 4982, 37, 5007, 38, 5019, 37, 5028, 38, 5036, 37, 5044, 38, 5053, 37, 5062, 38, 5070, 37, 5078, 38, 5087, 37, 5094, 38, 5106, 37, 5110, 38, 5118, 37, 5127, 38, 5135, 37, 5142, 38, 5151, 37, 5154, 38, 5197, 39, 5282, 40, 5294, 39, 5363, 38], //236
goldDrop: [30, 22, 28, 31, 20, 23, 16, 28, 27, 26, 32],
bornPos: [1, 2, 10]
},
{
level: 17,
ai:1,
time: 4628,
state: 1,
action: [0, 37, 6, 38, 18, 39, 33, 38, 38, 39, 42, 88, 68, 39, 134, 38, 141, 39, 157, 38, 162, 39, 177, 40, 203, 39, 210, 40, 226, 39, 241, 90, 252, 37, 273, 37, 283, 38, 289, 37, 306, 38, 313, 37, 329, 38, 335, 37, 341, 38, 352, 39, 376, 37, 390, 37, 391, 37, 392, 37, 397, 38, 403, 37, 411, 38, 430, 39, 433, 38, 443, 39, 450, 38, 465, 39, 467, 38, 471, 39, 488, 37, 506, 38, 513, 37, 519, 38, 529, 39, 540, 38, 549, 37, 563, 40, 582, 39, 591, 38, 602, 39, 609, 38, 620, 39, 624, 38, 638, 37, 653, 38, 662, 39, 677, 38, 683, 39, 699, 38, 704, 39, 730, 37, 739, 38, 745, 37, 756, 88, 765, 37, 768, 88, 813, 39, 828, 40, 852, 39, 860, 40, 866, 39, 880, 37, 889, 40, 907, 37, 958, 38, 967, 37, 1071, 40, 1080, 39, 1095, 38, 1119, 37, 1212, 38, 1218, 37, 1223, 38, 1233, 39, 1248, 38, 1343, 37, 1355, 38, 1361, 37, 1367, 38, 1377, 39, 1386, 38, 1397, 37, 1411, 38, 1418, 37, 1433, 38, 1439, 37, 1453, 38, 1459, 37, 1483, 40, 1502, 37, 1513, 40, 1523, 37, 1541, 40, 1555, 40, 1556, 40, 1557, 40, 1558, 40, 1559, 40, 1560, 40, 1561, 40, 1562, 40, 1563, 40, 1564, 40, 1565, 40, 1566, 40, 1567, 40, 1568, 40, 1569, 40, 1587, 37, 1608, 40, 1727, 38, 1736, 39, 1802, 38, 1807, 39, 1831, 38, 1836, 39, 1852, 38, 1857, 39, 1873, 38, 1878, 39, 1888, 38, 1899, 37, 1917, 38, 1928, 39, 1937, 37, 1967, 38, 1978, 37, 1985, 90, 2006, 37, 2014, 40, 2028, 40, 2047, 39, 2156, 40, 2161, 90, 2182, 40, 2201, 37, 2248, 38, 2266, 39, 2286, 38, 2292, 39, 2308, 40, 2315, 39, 2328, 37, 2340, 38, 2350, 39, 2368, 38, 2375, 39, 2385, 38, 2399, 37, 2415, 38, 2424, 37, 2446, 38, 2454, 37, 2473, 40, 2481, 37, 2491, 40, 2500, 39, 2509, 90, 2524, 37, 2540, 39, 2569, 40, 2598, 37, 2632, 38, 2644, 39, 2661, 38, 2666, 39, 2669, 88, 2701, 39, 2714, 38, 2720, 39, 2780, 38, 2795, 39, 2804, 38, 2858, 37, 2872, 38, 2885, 37, 2906, 38, 2912, 37, 2934, 38, 2941, 37, 2956, 38, 2970, 39, 2987, 38, 2993, 39, 3046, 40, 3073, 37, 3094, 40, 3104, 37, 3112, 40, 3136, 37, 3156, 40, 3159, 37, 3173, 37, 3174, 37, 3175, 37, 3176, 37, 3177, 37, 3178, 37, 3179, 37, 3180, 37, 3181, 37, 3182, 37, 3183, 37, 3184, 37, 3185, 37, 3220, 38, 3232, 39, 3247, 38, 3251, 39, 3255, 88, 3286, 39, 3297, 38, 3303, 39, 3323, 38, 3330, 39, 3344, 38, 3398, 37, 3440, 38, 3446, 37, 3463, 38, 3471, 37, 3486, 38, 3491, 37, 3502, 38, 3513, 39, 3529, 38, 3534, 39, 3606, 40, 3632, 37, 3649, 37, 3663, 37, 3666, 38, 3671, 37, 3687, 38, 3696, 39, 3705, 38, 3719, 37, 3734, 38, 3760, 37, 3782, 38, 3788, 37, 3807, 38, 3815, 37, 3827, 38, 3849, 39, 3866, 38, 3872, 39, 4058, 40, 4071, 39, 4083, 40, 4086, 39, 4100, 39, 4101, 39, 4102, 39, 4103, 39, 4104, 39, 4105, 39, 4106, 39, 4107, 39, 4108, 39, 4109, 39, 4110, 39, 4111, 39, 4112, 39, 4113, 39, 4114, 39, 4115, 39, 4116, 39, 4117, 39, 4149, 37, 4162, 37, 4163, 37, 4167, 38, 4263, 37, 4266, 90, 4282, 37, 4320, 88, 4330, 37, 4343, 37, 4344, 37, 4345, 37, 4346, 37, 4347, 37, 4348, 37, 4349, 37, 4352, 88, 4402, 39, 4434, 37, 4448, 38, 4463, 39, 4477, 38, 4487, 37, 4504, 38, 4511, 37, 4519, 38, 4538, 39, 4542, 38, 4554, 39, 4562, 38, 4572, 37, 4586, 38, 4596, 39, 4611, 38], //314
goldDrop: [26, 17, 17, 24, 25, 33, 36, 26, 25]
},
{
level: 18,
ai:1,
time: 1579,
state: 1,
action: [0, 39, 14, 88, 24, 39, 84, 38, 130, 39, 141, 88, 155, 39, 169, 90, 187, 37, 200, 88, 225, 40, 231, 88, 243, 37, 248, 88, 256, 39, 274, 90, 287, 37, 299, 39, 322, 38, 368, 39, 379, 88, 391, 39, 407, 90, 417, 40, 422, 90, 438, 40, 443, 90, 454, 40, 459, 90, 477, 40, 481, 90, 495, 40, 499, 90, 516, 40, 521, 90, 537, 40, 542, 37, 559, 39, 581, 38, 632, 39, 636, 88, 654, 39, 678, 37, 719, 38, 860, 39, 871, 88, 882, 39, 899, 90, 916, 37, 924, 88, 948, 39, 957, 37, 962, 88, 974, 37, 979, 88, 989, 37, 996, 88, 1009, 39, 1024, 88, 1034, 37, 1044, 88, 1058, 39, 1068, 88, 1080, 39, 1094, 90, 1110, 37, 1138, 37, 1165, 39, 1180, 40, 1193, 40, 1194, 40, 1195, 40, 1196, 40, 1197, 40, 1198, 40, 1199, 40, 1200, 40, 1201, 40, 1376, 37, 1392, 38, 1414, 39, 1496, 38] //82
},
{
level: 19,
ai:1,
time: 5077,
state: 1,
action: [0, 37, 14, 38, 25, 39, 34, 38, 47, 39, 58, 38, 65, 88, 79, 39, 90, 37, 96, 88, 107, 39, 123, 90, 135, 39, 139, 90, 148, 37, 164, 88, 175, 37, 183, 88, 191, 39, 208, 90, 220, 37, 251, 38, 263, 39, 270, 38, 282, 37, 289, 38, 296, 37, 303, 38, 311, 37, 317, 38, 325, 37, 331, 38, 338, 37, 345, 38, 352, 37, 358, 38, 372, 39, 393, 88, 432, 39, 454, 38, 472, 37, 478, 38, 485, 37, 489, 38, 497, 37, 506, 90, 518, 37, 534, 39, 539, 90, 551, 37, 572, 38, 583, 90, 596, 40, 601, 90, 616, 40, 626, 37, 645, 39, 648, 90, 660, 37, 700, 39, 715, 40, 719, 90, 731, 40, 736, 90, 746, 38, 760, 37, 771, 40, 785, 39, 797, 38, 804, 39, 818, 37, 823, 88, 835, 37, 839, 88, 848, 39, 863, 90, 875, 39, 879, 90, 889, 37, 905, 88, 916, 37, 921, 88, 931, 39, 946, 90, 957, 37, 984, 39, 1007, 38, 1013, 39, 1025, 38, 1032, 39, 1039, 38, 1051, 37, 1059, 38, 1066, 37, 1073, 38, 1081, 37, 1088, 38, 1098, 37, 1105, 38, 1114, 37, 1121, 38, 1130, 37, 1137, 38, 1149, 39, 1168, 88, 1210, 39, 1232, 38, 1252, 37, 1257, 38, 1265, 37, 1271, 38, 1278, 37, 1288, 90, 1300, 37, 1320, 88, 1335, 39, 1350, 37, 1359, 88, 1369, 39, 1383, 90, 1398, 37, 1409, 88, 1422, 39, 1436, 39, 1445, 88, 1459, 39, 1477, 37, 1482, 88, 1493, 39, 1515, 37, 1528, 38, 1536, 37, 1543, 38, 1550, 37, 1556, 38, 1565, 37, 1573, 38, 1581, 37, 1588, 38, 1596, 37, 1602, 38, 1640, 39, 1658, 88, 1701, 39, 1724, 38, 1732, 88, 1744, 38, 1747, 88, 1759, 40, 1765, 88, 1775, 39, 1804, 90, 1816, 37, 1832, 37, 1872, 38, 1881, 37, 1888, 38, 1898, 37, 1903, 38, 1913, 37, 1919, 38, 1928, 37, 1934, 38, 1943, 37, 1948, 38, 1964, 39, 2005, 38, 2023, 37, 2030, 38, 2038, 37, 2044, 38, 2053, 39, 2061, 88, 2074, 39, 2117, 38, 2123, 39, 2130, 38, 2145, 37, 2152, 90, 2163, 37, 2166, 90, 2178, 37, 2212, 88, 2228, 40, 2232, 88, 2259, 39, 2288, 88, 2315, 39, 2321, 88, 2338, 39, 2355, 90, 2368, 37, 2438, 38, 2449, 37, 2454, 38, 2464, 37, 2470, 38, 2479, 37, 2485, 38, 2494, 37, 2499, 38, 2509, 37, 2514, 38, 2528, 39, 2569, 38, 2582, 39, 2608, 38, 2616, 39, 2626, 38, 2641, 88, 2656, 40, 2661, 88, 2672, 40, 2860, 88, 2873, 38, 2884, 88, 2901, 39, 2925, 37, 2932, 88, 2948, 39, 2975, 40, 2994, 39, 3016, 40, 3022, 39, 3035, 40, 3042, 39, 3050, 40, 3063, 40, 3064, 40, 3065, 40, 3066, 40, 3067, 40, 3068, 40, 3069, 40, 3070, 40, 3078, 37, 3089, 38, 3099, 37, 3103, 38, 3111, 39, 3118, 38, 3125, 39, 3131, 38, 3138, 39, 3143, 38, 3154, 37, 3159, 38, 3184, 37, 3203, 90, 3213, 39, 3251, 37, 3265, 88, 3274, 39, 3301, 38, 3310, 39, 3316, 38, 3323, 39, 3329, 38, 3337, 39, 3342, 38, 3352, 37, 3357, 38, 3366, 37, 3372, 38, 3381, 37, 3410, 40, 3416, 37, 3441, 40, 3453, 39, 3459, 88, 3479, 39, 3493, 90, 3504, 88, 3519, 39, 3540, 37, 3563, 39, 3581, 88, 3591, 39, 3616, 38, 3626, 39, 3634, 38, 3641, 39, 3649, 38, 3655, 39, 3662, 38, 3681, 37, 3687, 38, 3698, 37, 3704, 38, 3718, 37, 3722, 37, 3741, 38, 3760, 37, 3772, 40, 3780, 37, 3816, 38, 3824, 37, 3838, 37, 3839, 37, 3840, 37, 3841, 37, 3842, 37, 3863, 38, 3871, 37, 3877, 38, 3887, 37, 3893, 38, 3901, 37, 3906, 38, 3914, 37, 3920, 38, 3929, 37, 3934, 38, 3947, 39, 3961, 39, 3992, 38, 4006, 39, 4036, 38, 4044, 39, 4052, 38, 4069, 88, 4082, 40, 4087, 88, 4098, 40, 4106, 88, 4125, 39, 4155, 37, 4161, 88, 4171, 39, 4207, 38, 4220, 39, 4225, 38, 4234, 39, 4239, 38, 4248, 39, 4263, 37, 4280, 38, 4290, 39, 4295, 38, 4306, 37, 4317, 90, 4328, 37, 4344, 39, 4353, 90, 4363, 37, 4379, 88, 4391, 39, 4410, 38, 4423, 39, 4429, 38, 4442, 39, 4448, 38, 4458, 39, 4465, 38, 4481, 39, 4491, 88, 4505, 39, 4512, 90, 4527, 37, 4536, 90, 4549, 37, 4561, 88, 4574, 39, 4593, 90, 4603, 37, 4623, 39, 4685, 37, 4692, 38, 4699, 37, 4705, 38, 4712, 37, 4717, 38, 4725, 37, 4730, 38, 4739, 37, 4743, 38, 4753, 37, 4784, 40, 4791, 37, 4798, 40, 4807, 90, 4849, 37, 4864, 38, 4876, 37, 4913, 38, 4921, 37, 4926, 38, 4935, 37, 4940, 38, 4948, 37, 4956, 38, 4964, 37, 4969, 38, 4978, 37, 4983, 38, 4995, 39, 5035, 38, 5052, 37, 5059, 38, 5066, 37, 5071, 38] //401
},
{
level: 20,
ai:1,
time: 7612,
state: 1,
action: [0, 37, 15, 38, 336, 39, 395, 37, 398, 88, 409, 39, 420, 37, 493, 40, 504, 38, 581, 39, 590, 38, 610, 40, 620, 39, 688, 37, 711, 90, 723, 39, 727, 90, 740, 39, 744, 90, 757, 39, 761, 90, 776, 39, 779, 90, 793, 39, 797, 90, 859, 37, 912, 38, 959, 90, 977, 39, 981, 90, 997, 39, 1001, 90, 1018, 39, 1021, 90, 1033, 39, 1039, 90, 1084, 39, 1090, 38, 1226, 39, 1232, 38, 1272, 90, 1275, 39, 1292, 90, 1334, 37, 1361, 90, 1373, 37, 1402, 38, 1412, 90, 1468, 37, 1491, 40, 1499, 39, 1518, 40, 1522, 39, 1640, 90, 1729, 37, 1744, 88, 1757, 37, 1771, 37, 1772, 37, 1773, 37, 1774, 37, 1775, 37, 1776, 37, 1777, 37, 1778, 37, 1779, 37, 1780, 37, 1781, 37, 1782, 37, 1783, 37, 1784, 37, 1785, 37, 1786, 37, 1787, 37, 1788, 37, 1789, 37, 1804, 40, 1818, 40, 1819, 40, 1957, 38, 1975, 39, 2020, 37, 2038, 38, 2042, 90, 2093, 37, 2122, 38, 2272, 39, 2280, 38, 2329, 39, 2368, 40, 2379, 37, 2388, 39, 2410, 37, 2424, 39, 2464, 39, 2559, 37, 2567, 88, 2592, 37, 2595, 88, 2652, 39, 2671, 38, 2745, 37, 2755, 38, 2767, 40, 2782, 37, 2791, 40, 2797, 39, 2816, 39, 2820, 37, 2834, 37, 2835, 37, 2836, 37, 2871, 39, 2910, 40, 2923, 37, 2986, 39, 3046, 88, 3090, 39, 3106, 38, 3179, 37, 3204, 38, 3229, 40, 3247, 37, 3293, 39, 3323, 90, 3335, 37, 3380, 39, 3385, 90, 3394, 37, 3443, 39, 3495, 88, 3552, 39, 3572, 38, 3702, 37, 3746, 38, 3779, 40, 3808, 37, 3827, 39, 3837, 90, 3850, 37, 3892, 39, 3935, 37, 3946, 38, 4016, 37, 4021, 88, 4079, 39, 4127, 38, 4246, 37, 4299, 40, 4329, 39, 4335, 37, 4405, 39, 4419, 39, 4420, 39, 4466, 37, 4503, 38, 4576, 88, 4638, 39, 4652, 90, 4662, 39, 4669, 90, 4677, 39, 4691, 39, 4692, 39, 4693, 39, 4694, 39, 4695, 39, 4696, 39, 4697, 39, 4698, 39, 4714, 40, 4728, 40, 4926, 38, 4942, 37, 4947, 39, 4973, 37, 4978, 90, 5071, 37, 5085, 37, 5086, 37, 5087, 37, 5120, 39, 5153, 88, 5177, 39, 5185, 37, 5198, 88, 5212, 37, 5217, 88, 5231, 37, 5236, 88, 5249, 37, 5254, 88, 5268, 37, 5272, 88, 5287, 37, 5291, 88, 5305, 37, 5309, 88, 5323, 37, 5328, 88, 5341, 37, 5346, 88, 5520, 37, 5532, 88, 5580, 39, 5691, 90, 5744, 38, 5817, 37, 5828, 40, 5840, 90, 5851, 37, 5882, 39, 5902, 37, 5932, 38, 5939, 39, 5963, 37, 5978, 38, 6022, 39, 6027, 90, 6041, 37, 6098, 39, 6154, 88, 6216, 39, 6240, 40, 6295, 38, 6379, 37, 6423, 40, 6448, 37, 6469, 39, 6479, 90, 6489, 37, 6537, 39, 6549, 38, 6693, 88, 6737, 39, 6794, 40, 6808, 40, 7037, 38, 7118, 37, 7207, 40, 7219, 37, 7259, 40, 7270, 39, 7332, 37, 7350, 38, 7390, 90, 7403, 37, 7414, 90, 7427, 37, 7459, 38, 7468, 90, 7526, 37, 7546, 38], //253
goldDrop: [37, 25, 19, 23, 22, 26, 16, 22, 30, 38, 35, 37, 22, 23, 38, 26, 28, 16, 16, 33, 15, 16, 18, 33, 20, 24],
bornPos: [1, 2, 3, 1, 9, 26, 7, 5, 4, 6, 13]
},
{
level: 21,
ai:1,
time: 1941,
state: 1,
action: [0, 90, 12, 39, 16, 90, 29, 37, 37, 90, 48, 37, 75, 88, 82, 39, 102, 90, 111, 37, 151, 39, 166, 88, 186, 39, 200, 39, 201, 39, 202, 39, 203, 39, 204, 39, 206, 38, 224, 39, 228, 88, 239, 39, 249, 37, 254, 88, 266, 37, 270, 88, 278, 39, 295, 37, 300, 88, 313, 37, 317, 88, 328, 37, 333, 88, 341, 37, 358, 39, 380, 88, 390, 37, 396, 88, 401, 37, 414, 37, 415, 37, 416, 37, 417, 37, 418, 37, 419, 37, 420, 37, 425, 39, 441, 88, 449, 37, 463, 37, 464, 37, 470, 39, 499, 88, 563, 39, 604, 38, 674, 37, 714, 40, 729, 90, 741, 39, 745, 90, 756, 37, 773, 88, 779, 39, 801, 90, 811, 37, 831, 88, 840, 39, 859, 90, 869, 37, 887, 88, 896, 39, 914, 90, 925, 37, 942, 88, 953, 39, 971, 90, 982, 37, 1000, 88, 1012, 39, 1047, 38, 1079, 88, 1114, 39, 1142, 38, 1215, 37, 1247, 40, 1258, 88, 1270, 37, 1275, 88, 1283, 39, 1300, 37, 1306, 88, 1319, 39, 1335, 37, 1342, 88, 1352, 39, 1371, 37, 1378, 88, 1391, 39, 1405, 90, 1416, 37, 1433, 39, 1440, 90, 1451, 37, 1470, 88, 1481, 39, 1500, 37, 1507, 88, 1519, 39, 1532, 90, 1543, 37, 1562, 88, 1573, 39, 1592, 38, 1616, 88, 1651, 39, 1667, 38, 1743, 39, 1775, 88, 1821, 39, 1858, 38] //120
},
{
level: 22,
ai:1,
time: 5279,
state: 1,
action: [0, 39, 19, 37, 102, 40, 121, 39, 348, 38, 536, 40, 616, 39, 741, 38, 816, 37, 879, 40, 895, 38, 903, 40, 911, 37, 918, 39, 934, 37, 941, 38, 956, 37, 995, 39, 1034, 40, 1049, 39, 1067, 38, 1075, 39, 1089, 37, 1098, 39, 1108, 37, 1133, 39, 1143, 38, 1147, 39, 1158, 88, 1168, 39, 1180, 38, 1221, 37, 1247, 38, 1276, 37, 1281, 38, 1290, 39, 1299, 38, 1384, 40, 1394, 37, 1399, 40, 1431, 39, 1438, 40, 1555, 38, 1568, 37, 1572, 38, 1606, 39, 1615, 38, 1625, 39, 1637, 88, 1656, 39, 1665, 38, 1709, 37, 1733, 38, 1779, 38, 1784, 37, 1791, 38, 1801, 39, 1807, 38, 1853, 40, 1863, 37, 1868, 40, 1902, 39, 1907, 40, 1919, 40, 1920, 40, 1921, 40, 1922, 40, 1923, 40, 1924, 40, 2023, 38, 2035, 37, 2041, 38, 2078, 39, 2086, 38, 2093, 39, 2189, 37, 2242, 38, 2254, 37, 2258, 38, 2272, 39, 2282, 37, 2283, 39, 2295, 40, 2299, 39, 2308, 37, 2316, 39, 2326, 37, 2338, 38, 2359, 39, 2366, 38, 2377, 39, 2387, 88, 2396, 39, 2431, 37, 2444, 39, 2462, 40, 2478, 38, 2493, 37, 2518, 40, 2527, 39, 2540, 39, 2553, 38, 2564, 37, 2597, 39, 2624, 38, 2655, 37, 2725, 39, 2736, 38, 2746, 37, 2754, 38, 2766, 37, 2862, 39, 2901, 38, 2913, 39, 2921, 38, 2931, 37, 2946, 39, 2957, 38, 2979, 37, 2986, 38, 2998, 37, 3007, 90, 3017, 37, 3075, 39, 3079, 39, 3085, 37, 3096, 39, 3122, 37, 3144, 39, 3162, 37, 3187, 38, 3218, 39, 3229, 39, 3230, 39, 3267, 40, 3307, 37, 3323, 39, 3633, 38, 3710, 37, 3772, 38, 3857, 37, 3860, 40, 3867, 39, 3898, 38, 4042, 40, 4119, 40, 4201, 37, 4307, 38, 4386, 39, 4446, 40, 4451, 39, 4631, 38, 4781, 40, 4793, 40, 4794, 40, 4795, 40, 4796, 40, 4797, 40, 4798, 40, 4799, 40, 4800, 40, 4801, 40, 4802, 40, 4803, 40, 4974, 37, 5073, 38, 5151, 39, 5242, 37, 5273, 38], //169
goldDrop: [24, 19, 34, 37, 17, 16, 25, 21, 34, 25, 19, 35]
},
{
level: 23,
ai:1,
time: 3015,
state: 1,
action: [0, 88, 20, 39, 33, 37, 47, 88, 54, 39, 97, 38, 111, 88, 124, 40, 130, 88, 142, 38, 152, 37, 157, 38, 173, 39, 190, 37, 198, 90, 209, 37, 219, 38, 291, 40, 332, 38, 349, 88, 375, 40, 384, 88, 398, 38, 400, 88, 413, 40, 419, 88, 431, 38, 443, 37, 448, 38, 464, 39, 483, 38, 491, 88, 500, 39, 535, 37, 544, 90, 555, 37, 573, 90, 585, 37, 634, 38, 653, 37, 659, 38, 719, 39, 742, 38, 778, 39, 806, 88, 817, 39, 853, 38, 863, 88, 874, 39, 912, 38, 929, 90, 940, 37, 987, 88, 1003, 39, 1043, 38, 1060, 40, 1069, 37, 1077, 88, 1087, 37, 1093, 88, 1102, 39, 1113, 88, 1130, 39, 1152, 37, 1162, 88, 1173, 39, 1214, 38, 1248, 37, 1263, 39, 1272, 38, 1307, 37, 1322, 39, 1330, 38, 1352, 40, 1356, 37, 1375, 88, 1388, 37, 1406, 39, 1416, 40, 1422, 37, 1430, 40, 1447, 39, 1467, 38, 1484, 39, 1502, 38, 1540, 40, 1545, 39, 1601, 37, 1615, 37, 1616, 37, 1617, 37, 1618, 37, 1619, 37, 1620, 37, 1621, 37, 1622, 37, 1623, 37, 1624, 37, 1625, 37, 1626, 37, 1627, 37, 1628, 37, 1629, 37, 1630, 37, 1631, 37, 1632, 37, 1633, 37, 1634, 37, 1635, 37, 1636, 37, 1637, 37, 1638, 37, 1639, 37, 1640, 37, 1641, 37, 1642, 37, 1643, 37, 1644, 37, 1645, 37, 1646, 37, 1647, 37, 1654, 90, 1665, 37, 1693, 90, 1719, 37, 1755, 90, 1767, 39, 1771, 90, 1784, 39, 1787, 90, 1800, 37, 1814, 88, 1826, 40, 1830, 88, 1841, 38, 1852, 37, 1865, 39, 1921, 37, 1933, 90, 1948, 37, 1959, 39, 1978, 37, 1996, 38, 2169, 39, 2183, 39, 2184, 39, 2188, 38, 2195, 88, 2207, 39, 2213, 88, 2225, 39, 2240, 37, 2279, 38, 2284, 90, 2295, 37, 2344, 38, 2363, 90, 2376, 40, 2382, 90, 2392, 40, 2407, 39, 2453, 40, 2502, 38, 2508, 90, 2525, 37, 2577, 38, 2584, 90, 2594, 38, 2606, 37, 2612, 90, 2622, 37, 2634, 39, 2698, 38, 2744, 39, 2758, 39, 2766, 38, 2834, 39, 2868, 37, 2873, 88, 2882, 39, 2938, 38] //181
},
{
level: 26, //OK
ai:1,
time: 6562,
state: 1,
action: [0, 39, 16, 88, 71, 37, 86, 38, 131, 88, 184, 39, 199, 38, 214, 90, 250, 39, 265, 38, 305, 90, 365, 37, 379, 88, 390, 40, 395, 88, 405, 40, 411, 88, 425, 39, 443, 90, 597, 37, 618, 38, 630, 39, 688, 39, 707, 38, 713, 39, 746, 40, 761, 37, 800, 38, 814, 37, 855, 39, 866, 88, 922, 37, 926, 88, 938, 40, 943, 88, 955, 40, 960, 88, 974, 39, 992, 90, 1154, 37, 1169, 38, 1180, 39, 1244, 38, 1256, 39, 1272, 90, 1350, 37, 1365, 88, 1375, 40, 1381, 88, 1392, 40, 1397, 88, 1410, 39, 1429, 38, 1489, 90, 1585, 37, 1603, 38, 1614, 39, 2092, 38, 2106, 39, 2118, 37, 2129, 88, 2276, 40, 2282, 88, 2341, 40, 2346, 88, 2356, 38, 2370, 39, 2379, 88, 2394, 39, 2430, 37, 2518, 38, 2557, 40, 2563, 39, 2603, 38, 2612, 39, 2619, 88, 2691, 37, 2695, 88, 2707, 40, 2713, 88, 2727, 40, 2731, 88, 2745, 39, 2764, 38, 2858, 90, 2931, 37, 2944, 37, 2945, 37, 2946, 37, 2947, 37, 2948, 37, 2949, 37, 2953, 38, 2960, 39, 2972, 38, 2976, 39, 3089, 38, 3108, 90, 3345, 37, 3352, 90, 3575, 37, 3580, 90, 3600, 37, 3608, 39, 3621, 39, 3622, 39, 3623, 39, 3624, 39, 3625, 39, 3626, 39, 3628, 90, 3645, 37, 3655, 90, 3671, 37, 3679, 39, 3693, 39, 3716, 90, 3740, 88, 3758, 39, 3766, 37, 3842, 39, 3909, 38, 3916, 39, 3923, 38, 3928, 39, 3935, 38, 3940, 39, 3946, 38, 3951, 39, 3959, 38, 3963, 39, 3971, 38, 3999, 37, 4006, 40, 4016, 39, 4030, 39, 4031, 39, 4035, 38, 4058, 37, 4069, 40, 4082, 39, 4100, 38, 4121, 37, 4136, 40, 4153, 37, 4160, 38, 4170, 37, 4174, 38, 4214, 37, 4285, 40, 4303, 39, 4339, 38, 4356, 39, 4384, 38, 4404, 90, 4460, 39, 4464, 90, 4475, 40, 4479, 90, 4493, 40, 4496, 90, 4510, 37, 4525, 38, 4594, 37, 4598, 88, 4689, 39, 4705, 38, 4716, 39, 4800, 38, 4808, 37, 4842, 40, 4858, 39, 4901, 38, 4918, 39, 4947, 90, 5019, 39, 5022, 90, 5032, 40, 5037, 90, 5049, 40, 5053, 90, 5072, 37, 5088, 38, 5159, 88, 5239, 39, 5250, 38, 5267, 37, 5286, 38, 5417, 37, 5431, 88, 5476, 39, 5509, 38, 5524, 37, 5536, 39, 5545, 90, 5603, 39, 5606, 90, 5617, 40, 5622, 90, 5636, 40, 5639, 90, 5654, 37, 5673, 38, 5760, 88, 5832, 39, 5848, 38, 5860, 39, 5983, 38, 5988, 90, 5996, 40, 6002, 90, 6012, 40, 6016, 90, 6028, 40, 6032, 90, 6042, 37, 6079, 39, 6106, 38, 6215, 37, 6255, 40, 6280, 39, 6293, 38, 6306, 39, 6309, 38, 6333, 37, 6344, 40, 6360, 39, 6372, 38, 6385, 39, 6388, 38, 6412, 37, 6428, 40, 6445, 39, 6460, 38, 6478, 37, 6497, 38, 6529, 39, 6535, 38, 6542, 39, 6546, 38, 6552, 39, 6556, 38], //242
bornPos: [1, 8, 12]
},
{
level: 27, //OK
ai:1,
time: 2831,
state: 1,
action: [0, 39, 18, 38, 51, 90, 239, 39, 253, 39, 254, 39, 255, 39, 256, 39, 257, 39, 258, 39, 259, 39, 260, 39, 261, 39, 262, 39, 364, 37, 468, 38, 621, 37, 629, 39, 643, 39, 644, 39, 645, 39, 646, 39, 647, 39, 648, 39, 649, 39, 760, 37, 880, 38, 959, 39, 971, 38, 978, 39, 1114, 37, 1227, 38, 1309, 39, 1366, 39, 1399, 37, 1440, 39, 1504, 37, 1547, 37, 1558, 38, 1604, 90, 1623, 40, 1625, 90, 1642, 39, 1644, 90, 1760, 39, 1767, 38, 2092, 39, 2106, 39, 2107, 39, 2108, 39, 2109, 39, 2110, 39, 2111, 39, 2112, 39, 2113, 39, 2114, 39, 2115, 39, 2116, 39, 2117, 39, 2118, 39, 2119, 39, 2120, 39, 2121, 39, 2122, 39, 2123, 39, 2212, 40, 2221, 37, 2315, 39, 2405, 38, 2416, 37, 2512, 39, 2525, 37, 2542, 39, 2697, 37, 2748, 38], //75
goldDrop: [38, 17]
},
{
level: 28, //OK
ai:1,
time: 1012,
state: 1,
action: [0, 39, 18, 38, 84, 39, 98, 39, 99, 39, 100, 39, 101, 39, 102, 39, 103, 39, 104, 39, 159, 88, 178, 39, 195, 90, 209, 37, 220, 38, 253, 37, 334, 38, 350, 39, 365, 38, 378, 37, 402, 38, 423, 37, 434, 38, 456, 90, 469, 40, 475, 90, 488, 40, 492, 90, 563, 40, 567, 90, 581, 40, 585, 90, 641, 40, 645, 37, 656, 90, 665, 39, 667, 90, 679, 39, 683, 90, 695, 40, 699, 90, 709, 37, 734, 39, 756, 88, 768, 37, 773, 88, 821, 39, 841, 38, 858, 39, 872, 38, 886, 37, 911, 38, 930, 37, 941, 38, 955, 37, 975, 38, 989, 39, 1001, 38] //58
},
{
level: 29,
ai:1,
time: 6605,
state: 1,
action: [0, 88, 333, 39, 383, 40, 390, 39, 441, 37, 459, 38, 473, 37, 492, 38, 505, 37, 516, 38, 767, 37, 776, 39, 822, 40, 861, 90, 1005, 38, 1037, 37, 1060, 38, 1073, 37, 1094, 38, 1110, 37, 1145, 40, 1161, 39, 1212, 38, 1358, 40, 1396, 39, 1419, 40, 1428, 39, 1450, 40, 1459, 39, 1496, 38, 1503, 37, 1524, 40, 1528, 90, 1671, 38, 1701, 37, 1721, 38, 1736, 37, 1747, 40, 1765, 37, 1792, 40, 1798, 39, 1813, 40, 1822, 39, 1859, 38, 1891, 37, 1902, 40, 1931, 38, 1949, 40, 1953, 39, 1963, 38, 1997, 37, 2017, 40, 2039, 37, 2049, 39, 2063, 37, 2086, 40, 2089, 39, 2096, 38, 2115, 39, 2118, 38, 2149, 37, 2170, 38, 2179, 37, 2193, 40, 2225, 37, 2260, 40, 2264, 39, 2280, 40, 2285, 39, 2303, 40, 2306, 39, 2333, 40, 2336, 39, 2371, 38, 2403, 37, 2425, 38, 2439, 37, 2471, 38, 2480, 37, 2484, 40, 2531, 38, 2549, 40, 2552, 39, 2573, 40, 2585, 39, 2620, 38, 2652, 37, 2672, 38, 2683, 37, 2702, 38, 2713, 37, 2722, 40, 2752, 37, 2762, 39, 2802, 40, 2807, 37, 2825, 38, 2858, 39, 2870, 40, 2894, 39, 2931, 40, 2936, 37, 2956, 38, 2992, 39, 3010, 40, 3039, 39, 3065, 40, 3070, 37, 3089, 38, 3194, 37, 3246, 39, 3250, 90, 3261, 39, 3265, 90, 3276, 39, 3280, 90, 3291, 40, 3296, 90, 3313, 40, 3317, 90, 3369, 37, 3393, 40, 3399, 39, 3409, 40, 3416, 39, 3421, 38, 3429, 37, 3445, 38, 3454, 37, 3464, 40, 3475, 37, 3497, 38, 3524, 39, 3537, 38, 3543, 37, 3557, 38, 3566, 39, 3577, 38, 3598, 39, 3601, 38, 3616, 39, 3619, 38, 3736, 39, 3793, 39, 3811, 90, 3822, 40, 3835, 39, 3849, 90, 3859, 39, 3865, 90, 3878, 40, 3885, 39, 3897, 40, 3905, 39, 3925, 40, 3931, 37, 3937, 38, 3947, 39, 4032, 37, 4041, 39, 4051, 38, 4060, 39, 4077, 38, 4092, 39, 4104, 38, 4118, 39, 4127, 37, 4146, 39, 4160, 39, 4161, 39, 4162, 39, 4163, 39, 4164, 39, 4165, 39, 4166, 39, 4167, 39, 4168, 39, 4173, 38, 4183, 37, 4190, 40, 4203, 40, 4204, 40, 4205, 40, 4206, 40, 4207, 40, 4208, 40, 4209, 40, 4213, 37, 4271, 38, 4318, 37, 4336, 38, 4346, 37, 4366, 38, 4377, 39, 4388, 37, 4398, 38, 4409, 37, 4431, 38, 4449, 37, 4463, 38, 4467, 37, 4474, 38, 4494, 39, 4498, 38, 4572, 39, 4621, 39, 4632, 90, 4642, 39, 4645, 90, 4658, 39, 4661, 90, 4674, 39, 4678, 90, 4688, 40, 4695, 90, 4715, 39, 4725, 38, 4736, 39, 4741, 90, 4753, 39, 4757, 90, 4768, 39, 4771, 90, 4785, 39, 4786, 90, 4832, 40, 4838, 90, 4862, 38, 4908, 39, 4997, 38, 5002, 39, 5015, 38, 5105, 39, 5116, 38, 5341, 37, 5355, 37, 5356, 37, 5357, 37, 5358, 37, 5359, 37, 5360, 37, 5361, 37, 5362, 37, 5363, 37, 5364, 37, 5365, 37, 5366, 37, 5367, 37, 5368, 37, 5369, 37, 5370, 37, 5371, 37, 5372, 37, 5373, 37, 5374, 37, 5375, 37, 5376, 37, 5377, 37, 5378, 37, 5379, 37, 5380, 37, 5381, 37, 5382, 37, 5383, 37, 5384, 37, 5385, 37, 5386, 37, 5387, 37, 5388, 37, 5389, 37, 5390, 37, 5391, 37, 5392, 37, 5393, 37, 5394, 37, 5395, 37, 5396, 37, 5397, 37, 5398, 37, 5399, 37, 5400, 37, 5401, 37, 5402, 37, 5403, 37, 5404, 37, 5405, 37, 5406, 37, 5407, 37, 5408, 37, 5409, 37, 5410, 37, 5411, 37, 5412, 37, 5413, 37, 5414, 37, 5415, 37, 5416, 37, 5417, 37, 5418, 37, 5419, 37, 5420, 37, 5421, 37, 5426, 38, 5433, 37, 5443, 38, 5451, 37, 5457, 38, 5465, 37, 5481, 39, 5503, 40, 5517, 40, 5518, 40, 5519, 40, 5557, 38, 5638, 37, 5670, 38, 5716, 37, 5737, 38, 5748, 37, 5770, 38, 5790, 37, 5799, 38, 5811, 39, 5814, 38, 5840, 39, 5845, 38, 5905, 39, 5963, 39, 5968, 90, 5980, 39, 5984, 90, 5995, 39, 5999, 90, 6092, 39, 6105, 38, 6120, 39, 6124, 90, 6137, 39, 6142, 90, 6154, 39, 6158, 90, 6223, 39, 6241, 38, 6267, 39, 6275, 40, 6332, 38, 6341, 39, 6360, 39, 6366, 38, 6384, 39, 6391, 38, 6405, 37, 6433, 38, 6440, 37, 6455, 38, 6464, 37, 6470, 38, 6476, 37, 6493, 38, 6504, 37, 6507, 38, 6521, 37, 6541, 38, 6561, 37, 6567, 38, 6583, 39, 6588, 38], //367
goldDrop: [31, 37, 33, 26, 36, 35, 38, 39, 31, 35, 39, 36, 20, 14, 16, 39, 29, 18, 30, 39, 15, 16, 15, 23, 36],
bornPos: [1, 14, 5, 6, 7, 13]
},
{
level: 34,
ai:1,
time: 8419,
state: 1,
action: [0, 39, 16, 38, 29, 90, 44, 38, 47, 90, 61, 37, 75, 38, 131, 90, 160, 40, 174, 39, 185, 38, 257, 37, 308, 38, 321, 90, 326, 37, 368, 40, 373, 37, 378, 40, 384, 40, 429, 39, 434, 37, 440, 38, 448, 38, 491, 39, 495, 38, 503, 39, 541, 37, 552, 38, 568, 90, 576, 37, 613, 40, 619, 37, 622, 40, 627, 40, 643, 39, 648, 37, 652, 38, 676, 39, 682, 38, 687, 39, 719, 38, 792, 90, 801, 37, 838, 40, 845, 37, 847, 40, 858, 37, 862, 40, 895, 39, 901, 37, 906, 38, 941, 39, 948, 38, 953, 39, 985, 38, 1015, 90, 1024, 37, 1042, 90, 1052, 37, 1058, 40, 1094, 37, 1103, 40, 1109, 37, 1117, 39, 1123, 38, 1136, 39, 1146, 38, 1170, 37, 1176, 38, 1183, 37, 1188, 38, 1209, 39, 1223, 39, 1224, 39, 1225, 39, 1226, 39, 1227, 39, 1228, 39, 1229, 39, 1230, 39, 1231, 39, 1232, 39, 1233, 39, 1234, 39, 1235, 39, 1237, 38, 1249, 37, 1253, 38, 1275, 90, 1287, 37, 1302, 90, 1315, 37, 1321, 40, 1346, 37, 1363, 39, 1367, 38, 1383, 37, 1389, 39, 1422, 38, 1444, 37, 1450, 38, 1457, 37, 1461, 38, 1473, 39, 1487, 39, 1488, 39, 1489, 39, 1490, 39, 1491, 39, 1492, 39, 1493, 39, 1494, 39, 1495, 39, 1496, 39, 1497, 39, 1498, 39, 1499, 39, 1500, 38, 1512, 37, 1516, 38, 1535, 90, 1545, 37, 1562, 90, 1575, 37, 1583, 40, 1590, 39, 1603, 40, 1620, 37, 1627, 38, 1637, 37, 1640, 38, 1656, 37, 1661, 38, 1669, 37, 1672, 38, 1684, 39, 1698, 39, 1699, 39, 1701, 39, 1702, 39, 1709, 38, 1784, 90, 1792, 37, 1809, 90, 1820, 37, 1833, 39, 1846, 40, 1850, 39, 1861, 40, 1875, 37, 1881, 38, 1900, 37, 1904, 38, 1913, 37, 1916, 38, 1928, 39, 1941, 39, 1942, 39, 1943, 39, 1951, 38, 2041, 90, 2051, 37, 2067, 90, 2078, 37, 2088, 40, 2094, 39, 2120, 37, 2144, 38, 2162, 37, 2166, 38, 2175, 37, 2180, 38, 2191, 39, 2216, 38, 2266, 39, 2306, 88, 2316, 37, 2321, 88, 2332, 37, 2337, 88, 2346, 39, 2363, 88, 2373, 37, 2379, 88, 2389, 39, 2399, 88, 2412, 39, 2419, 40, 2454, 37, 2460, 39, 2465, 38, 2500, 37, 2509, 38, 2521, 37, 2526, 38, 2563, 39, 2575, 88, 2585, 37, 2590, 88, 2601, 37, 2606, 88, 2622, 39, 2636, 88, 2646, 37, 2652, 88, 2661, 39, 2676, 88, 2686, 37, 2689, 88, 2700, 39, 2709, 40, 2730, 37, 2739, 40, 2751, 39, 2762, 38, 2795, 37, 2805, 38, 2818, 37, 2828, 38, 2842, 39, 2855, 88, 2866, 37, 2868, 88, 2877, 37, 2884, 88, 2895, 37, 2899, 88, 2908, 39, 2925, 88, 2934, 37, 2941, 88, 2949, 39, 2960, 88, 2974, 39, 2983, 40, 3002, 37, 3012, 38, 3026, 40, 3035, 39, 3041, 39, 3046, 38, 3068, 37, 3077, 38, 3089, 37, 3095, 38, 3129, 39, 3140, 88, 3150, 37, 3155, 88, 3166, 37, 3170, 88, 3178, 39, 3196, 88, 3206, 37, 3211, 88, 3222, 39, 3231, 88, 3249, 37, 3255, 40, 3268, 37, 3273, 40, 3293, 39, 3310, 38, 3334, 37, 3344, 38, 3358, 37, 3365, 38, 3446, 39, 3471, 40, 3523, 90, 3534, 40, 3537, 90, 3548, 37, 3561, 90, 3574, 39, 3585, 40, 3663, 38, 3736, 37, 3813, 38, 3841, 40, 3869, 38, 3898, 90, 3908, 37, 3948, 39, 3957, 38, 3991, 40, 3995, 90, 4026, 38, 4033, 39, 4046, 39, 4047, 39, 4048, 39, 4049, 39, 4050, 39, 4051, 39, 4052, 39, 4053, 39, 4054, 39, 4055, 39, 4082, 40, 4131, 38, 4173, 39, 4198, 40, 4269, 37, 4275, 90, 4284, 37, 4371, 38, 4380, 40, 4388, 39, 4471, 38, 4651, 90, 4664, 37, 4696, 38, 4762, 39, 4859, 38, 4929, 90, 4941, 37, 4985, 38, 5034, 39, 5123, 38, 5168, 90, 5184, 37, 5239, 38, 5277, 39, 5364, 38, 5459, 90, 5471, 37, 5525, 38, 5537, 39, 5598, 38, 5605, 39, 5610, 38, 5821, 40, 5893, 37, 5898, 90, 5908, 37, 5975, 38, 6003, 39, 6088, 38, 6094, 39, 6098, 38, 6195, 40, 6268, 37, 6271, 90, 6280, 37, 6357, 38, 6377, 39, 6391, 39, 6393, 40, 6410, 39, 6415, 39, 6471, 38, 6477, 39, 6482, 38, 6510, 40, 6522, 90, 6531, 37, 6545, 90, 6555, 37, 6558, 90, 6570, 37, 6589, 38, 6608, 40, 6624, 39, 6640, 38, 6649, 39, 6659, 38, 6703, 39, 6719, 37, 6727, 40, 6737, 39, 6743, 37, 6751, 40, 6760, 39, 6772, 37, 6780, 40, 6790, 39, 6801, 37, 6809, 40, 6818, 39, 6831, 37, 6846, 38, 6889, 90, 7084, 40, 7295, 38, 7350, 39, 7360, 38, 7440, 39, 7475, 37, 7486, 37, 7500, 39, 7539, 40, 7546, 37, 7561, 38, 7580, 88, 7603, 37, 7607, 88, 7678, 39, 7708, 38, 7766, 37, 7782, 39, 7815, 37, 7837, 39, 7851, 39, 7852, 39, 7853, 39, 7854, 39, 7855, 39, 7856, 39, 7857, 39, 7903, 40, 7917, 40, 7935, 37, 7962, 39, 7972, 88, 8018, 39, 8050, 38, 8098, 37, 8111, 39, 8135, 37, 8140, 39, 8160, 40, 8170, 37, 8175, 39, 8184, 40, 8193, 37, 8199, 39, 8206, 40, 8216, 37, 8222, 39, 8231, 40, 8241, 37, 8274, 38, 8283, 37, 8295, 38, 8362, 37, 8413, 38], //437
bornPos: [1, 5]
},
{
level: 38,
ai:1,
time: 15166,
state: 1,
action: [0, 40, 21, 39, 62, 37, 66, 88, 384, 88, 400, 39, 414, 39, 415, 39, 416, 39, 417, 39, 418, 39, 419, 39, 420, 39, 424, 40, 438, 39, 452, 39, 453, 39, 454, 39, 455, 39, 456, 39, 457, 39, 458, 39, 459, 39, 460, 39, 461, 39, 462, 39, 463, 39, 464, 39, 465, 39, 466, 39, 467, 39, 468, 39, 470, 39, 471, 39, 472, 39, 473, 39, 474, 39, 475, 39, 476, 39, 477, 39, 478, 39, 536, 38, 762, 37, 817, 39, 875, 37, 905, 38, 938, 40, 945, 90, 970, 38, 979, 39, 1374, 40, 1388, 37, 1437, 38, 1459, 39, 1480, 37, 1500, 38, 1781, 40, 1826, 38, 1993, 37, 2069, 39, 2103, 38, 2370, 40, 2390, 37, 2518, 39, 2525, 38, 2549, 37, 2557, 39, 2577, 39, 2586, 38, 2598, 37, 2604, 39, 2618, 39, 2619, 39, 2622, 38, 2633, 39, 2639, 38, 2740, 39, 2780, 40, 2797, 39, 2813, 37, 2842, 39, 2856, 37, 2912, 38, 2998, 39, 3015, 38, 3052, 39, 3059, 38, 3248, 39, 3291, 37, 3306, 39, 3321, 38, 3485, 40, 3493, 37, 3496, 40, 3509, 38, 3523, 38, 3529, 37, 3606, 38, 3613, 39, 3624, 38, 3643, 39, 3650, 38, 3675, 39, 3699, 38, 3717, 40, 3750, 37, 3757, 39, 3784, 37, 3812, 38, 3823, 37, 3855, 38, 3870, 40, 3895, 38, 3904, 39, 3911, 38, 3983, 40, 3997, 40, 3998, 40, 3999, 40, 4000, 40, 4001, 40, 4002, 40, 4003, 40, 4004, 40, 4005, 40, 4006, 40, 4007, 40, 4008, 40, 4009, 40, 4010, 40, 4011, 40, 4012, 40, 4165, 38, 4172, 39, 4201, 38, 4294, 40, 4316, 39, 4366, 38, 4411, 37, 4417, 39, 4422, 38, 4443, 37, 4486, 38, 4509, 37, 4531, 38, 4580, 39, 4589, 38, 4609, 40, 4634, 39, 4646, 38, 4744, 39, 4764, 38, 4819, 40, 4829, 37, 4840, 39, 4848, 40, 4858, 37, 4862, 40, 4877, 39, 4883, 37, 4903, 39, 4963, 38, 5229, 40, 5336, 38, 5568, 37, 5708, 40, 5817, 38, 5822, 39, 5881, 38, 6120, 40, 6143, 39, 6193, 38, 6219, 37, 6232, 40, 6236, 37, 6254, 39, 6258, 37, 6268, 39, 6282, 39, 6290, 39, 6313, 38, 6336, 37, 6346, 38, 6357, 37, 6364, 38, 6405, 39, 6421, 38, 6488, 39, 6492, 37, 6501, 39, 6512, 37, 6528, 38, 6670, 39, 6706, 40, 6714, 39, 6726, 40, 6748, 37, 6819, 38, 6857, 40, 6879, 39, 6928, 38, 6983, 37, 6995, 38, 7014, 39, 7044, 40, 7054, 39, 7061, 38, 7081, 40, 7097, 37, 7103, 40, 7139, 37, 7178, 38, 7189, 37, 7206, 38, 7261, 39, 7285, 37, 7336, 37, 7343, 38, 7360, 37, 7392, 38, 7445, 37, 7475, 38, 7498, 37, 7503, 38, 7559, 40, 7574, 39, 7619, 40, 7624, 39, 7635, 38, 7651, 39, 7657, 38, 7672, 39, 7697, 40, 7707, 39, 7735, 40, 7807, 39, 7818, 40, 7834, 39, 7839, 40, 7862, 37, 7893, 38, 7905, 37, 7968, 37, 7973, 38, 7984, 39, 7988, 38, 7998, 37, 8015, 38, 8023, 37, 8030, 38, 8043, 40, 8058, 39, 8086, 38, 8137, 37, 8146, 38, 8161, 39, 8187, 40, 8196, 39, 8223, 38, 8244, 40, 8357, 37, 8370, 39, 8389, 37, 8420, 38, 8432, 37, 8476, 38, 8494, 37, 8495, 38, 8504, 37, 8507, 38, 8517, 37, 8542, 38, 8547, 37, 8551, 38, 8570, 40, 8589, 39, 8770, 40, 8784, 40, 8785, 40, 8786, 40, 8787, 40, 8788, 40, 8789, 40, 8790, 40, 8791, 40, 8792, 40, 8793, 40, 8794, 40, 8795, 40, 8796, 40, 8912, 38, 9073, 37, 9110, 38, 9130, 37, 9243, 40, 9256, 40, 9257, 40, 9258, 40, 9259, 40, 9380, 37, 9396, 39, 9410, 39, 9411, 39, 9412, 39, 9413, 39, 9414, 39, 9433, 39, 9438, 38, 9463, 39, 9540, 40, 9553, 40, 9554, 40, 9555, 40, 9556, 40, 9557, 40, 9558, 40, 9559, 40, 9585, 37, 9610, 40, 9697, 38, 9704, 39, 9785, 38, 9839, 39, 9911, 38, 9923, 37, 9965, 38, 9978, 40, 9988, 39, 10007, 38, 10015, 40, 10025, 39, 10038, 38, 10058, 40, 10074, 39, 10101, 38, 10395, 40, 10461, 37, 10480, 39, 10496, 38, 10511, 39, 10514, 38, 10532, 40, 10541, 39, 10583, 40, 10596, 40, 10597, 40, 10598, 40, 10599, 40, 10600, 40, 10737, 38, 10831, 37, 10861, 38, 10876, 37, 10881, 38, 10903, 37, 10937, 38, 10943, 37, 10964, 40, 10984, 39, 10988, 90, 10997, 39, 11000, 90, 11041, 88, 11053, 37, 11059, 88, 11069, 39, 11085, 90, 11097, 37, 11117, 37, 11125, 39, 11134, 40, 11166, 40, 11170, 39, 11247, 38, 11369, 40, 11382, 40, 11383, 40, 11384, 40, 11385, 40, 11386, 40, 11387, 40, 11388, 40, 11389, 40, 11390, 40, 11396, 37, 11421, 40, 11442, 38, 11449, 39, 11490, 38, 11505, 40, 11514, 39, 11597, 38, 11739, 40, 11757, 37, 11796, 38, 11809, 38, 11817, 39, 11831, 39, 11832, 39, 11833, 39, 11834, 39, 11835, 39, 11836, 39, 11837, 39, 11838, 39, 11839, 39, 11841, 38, 11855, 39, 11861, 38, 11885, 39, 11909, 38, 11933, 37, 11950, 38, 11976, 38, 11998, 39, 12021, 38, 12039, 39, 12050, 38, 12120, 40, 12133, 40, 12134, 40, 12135, 40, 12136, 40, 12137, 40, 12140, 37, 12148, 40, 12164, 39, 12216, 38, 12482, 37, 12620, 40, 12700, 37, 12705, 38, 12711, 39, 12719, 38, 12727, 37, 12731, 38, 12741, 39, 12754, 38, 12766, 39, 12780, 39, 12781, 39, 12782, 39, 12783, 39, 12784, 39, 12786, 38, 12797, 39, 12803, 38, 12879, 39, 12919, 38, 13074, 40, 13097, 37, 13104, 40, 13116, 39, 13174, 38, 13236, 40, 13272, 39, 13279, 37, 13310, 38, 13445, 40, 13459, 40, 13460, 40, 13461, 40, 13462, 40, 13463, 40, 13464, 40, 13465, 40, 13466, 40, 13467, 40, 13468, 40, 13469, 40, 13470, 40, 13471, 40, 13472, 40, 13473, 40, 13558, 38, 13578, 40, 13589, 38, 13865, 40, 13971, 38, 14217, 37, 14357, 40, 14474, 38, 14480, 39, 14536, 38, 14603, 40, 14617, 40, 14618, 40, 14619, 40, 14620, 40, 14621, 40, 14622, 40, 14623, 40, 14624, 40, 14632, 39, 14683, 40, 14729, 38, 14742, 40, 14756, 40, 14757, 40, 14758, 40, 14759, 40, 14760, 40, 14794, 38, 14816, 37, 14824, 38, 14843, 37, 14846, 88, 14859, 37, 14863, 88, 14876, 37, 14880, 88, 15015, 37, 15033, 39, 15047, 39, 15048, 39, 15049, 39, 15050, 39, 15051, 39, 15052, 39, 15053, 39, 15064, 38, 15084, 37, 15089, 39, 15095, 38, 15139, 37, 15149, 38], //526
goldDrop: [26, 28, 14, 35, 15, 32, 16, 35, 26, 15, 20, 31, 18, 33, 23, 27, 31, 15, 38, 31, 20, 25, 37, 38, 16],
bornPos: [1, 19]
},
{
level: 39,
ai:1,
time: 3527,
state: 1,
action: [0, 37, 12, 40, 287, 37, 291, 88, 337, 39, 363, 90, 374, 40, 380, 90, 511, 40, 518, 90, 536, 38, 588, 37, 603, 39, 611, 37, 620, 90, 630, 37, 642, 39, 671, 38, 849, 37, 872, 38, 918, 37, 931, 38, 937, 37, 948, 38, 952, 37, 977, 90, 987, 39, 992, 90, 1004, 39, 1009, 90, 1021, 39, 1026, 90, 1036, 37, 1055, 90, 1066, 39, 1071, 90, 1084, 39, 1089, 90, 1099, 37, 1114, 90, 1124, 39, 1131, 90, 1141, 37, 1149, 90, 1163, 37, 1175, 39, 1224, 37, 1251, 39, 1258, 88, 1272, 37, 1278, 88, 1288, 39, 1296, 88, 1311, 39, 1470, 38, 1497, 37, 1522, 38, 1568, 37, 1582, 38, 1605, 37, 1629, 38, 1726, 37, 1827, 39, 1843, 37, 1850, 90, 1861, 39, 1866, 90, 1878, 37, 1886, 90, 1897, 37, 1928, 38, 1946, 37, 1951, 90, 1980, 39, 1983, 90, 2043, 37, 2061, 88, 2074, 37, 2079, 88, 2091, 38, 2135, 39, 2151, 38, 2174, 39, 2203, 88, 2213, 37, 2219, 88, 2229, 37, 2235, 88, 2247, 37, 2251, 88, 2259, 39, 2282, 88, 2294, 37, 2299, 88, 2313, 37, 2318, 88, 2328, 39, 2345, 88, 2357, 37, 2364, 88, 2375, 39, 2384, 88, 2397, 39, 2420, 37, 2444, 39, 2457, 39, 2458, 39, 2459, 39, 2460, 39, 2461, 39, 2462, 39, 2463, 39, 2464, 39, 2465, 39, 2468, 90, 2476, 39, 2479, 90, 2490, 39, 2496, 90, 2506, 37, 2517, 90, 2527, 37, 2560, 38, 2573, 38, 2574, 38, 2577, 90, 2607, 37, 2620, 88, 2634, 37, 2638, 88, 2652, 37, 2656, 88, 2904, 39, 2940, 90, 2954, 40, 2960, 90, 3151, 40, 3156, 90, 3169, 38, 3186, 37, 3195, 90, 3207, 37, 3216, 39, 3241, 38, 3419, 37, 3446, 38, 3490, 39, 3505, 38], //148
bornPos: [1, 26, 24]
},
{
level: 46,
ai:1,
time: 4227,
state: 1,
action: [0, 40, 20, 39, 127, 37, 137, 38, 177, 40, 191, 40, 192, 40, 205, 38, 213, 39, 220, 38, 226, 39, 235, 37, 284, 90, 296, 40, 302, 90, 314, 40, 319, 90, 333, 40, 338, 90, 349, 38, 368, 39, 378, 38, 403, 90, 447, 37, 454, 39, 492, 38, 556, 40, 569, 40, 570, 40, 571, 40, 572, 40, 573, 40, 574, 40, 575, 40, 576, 40, 577, 40, 578, 40, 579, 40, 596, 38, 603, 39, 611, 38, 620, 88, 639, 40, 651, 39, 664, 38, 702, 88, 752, 39, 782, 40, 814, 37, 823, 38, 904, 88, 969, 39, 981, 38, 1014, 37, 1034, 90, 1048, 37, 1057, 39, 1071, 90, 1082, 37, 1103, 39, 1127, 37, 1148, 90, 1160, 37, 1166, 38, 1187, 39, 1192, 40, 1263, 38, 1269, 39, 1303, 38, 1336, 37, 1368, 90, 1380, 39, 1385, 90, 1395, 37, 1406, 90, 1421, 37, 1436, 88, 1447, 39, 1472, 88, 1483, 39, 1497, 39, 1498, 39, 1499, 39, 1500, 39, 1511, 37, 1533, 90, 1543, 39, 1554, 90, 1562, 39, 1576, 39, 1577, 39, 1578, 39, 1579, 39, 1580, 39, 1581, 39, 1582, 39, 1583, 39, 1584, 39, 1585, 39, 1586, 39, 1587, 39, 1588, 39, 1589, 39, 1590, 39, 1609, 38, 1618, 38, 1635, 40, 1644, 39, 1660, 38, 1703, 90, 1716, 40, 1721, 90, 1732, 37, 1756, 38, 1766, 90, 1779, 37, 1827, 40, 1836, 37, 1840, 38, 1856, 39, 1860, 38, 1868, 37, 1880, 90, 1891, 37, 1894, 90, 1983, 40, 1987, 90, 2013, 40, 2018, 90, 2115, 40, 2120, 90, 2130, 38, 2147, 37, 2177, 39, 2187, 38, 2220, 37, 2231, 90, 2243, 37, 2272, 90, 2284, 39, 2289, 90, 2301, 39, 2306, 90, 2318, 39, 2322, 90, 2331, 37, 2353, 90, 2364, 39, 2369, 90, 2381, 39, 2388, 90, 2401, 37, 2415, 88, 2430, 37, 2433, 88, 2443, 39, 2454, 88, 2465, 39, 2503, 90, 2515, 37, 2524, 39, 2548, 38, 2609, 37, 2620, 90, 2635, 37, 2663, 90, 2676, 39, 2681, 90, 2694, 39, 2698, 90, 2711, 39, 2715, 90, 2724, 37, 2746, 90, 2759, 39, 2764, 90, 2776, 39, 2783, 90, 2796, 37, 2811, 88, 2825, 37, 2828, 88, 2838, 39, 2857, 90, 2869, 37, 2902, 88, 2910, 39, 2958, 38, 3019, 37, 3029, 90, 3041, 37, 3058, 88, 3070, 37, 3075, 88, 3088, 37, 3092, 88, 3104, 37, 3108, 88, 3116, 39, 3141, 88, 3152, 37, 3159, 88, 3171, 37, 3177, 88, 3191, 39, 3204, 90, 3217, 39, 3221, 90, 3233, 37, 3249, 88, 3259, 39, 3283, 88, 3295, 39, 3326, 38, 3389, 37, 3399, 90, 3410, 37, 3491, 38, 3521, 39, 3553, 37, 3569, 38, 3579, 39, 3598, 40, 3612, 37, 3619, 40, 3632, 39, 3682, 38, 3731, 39, 3764, 38, 3783, 37, 3786, 40, 3800, 40, 3809, 37, 3830, 39, 3838, 88, 3850, 39, 3857, 40, 3866, 37, 3874, 40, 3888, 39, 3931, 88, 3942, 39, 3977, 38, 4034, 90, 4044, 40, 4050, 90, 4061, 37, 4085, 38, 4096, 90, 4107, 37, 4171, 38, 4191, 39, 4205, 38, 4215, 39, 4221, 38], //255
goldDrop: [16, 37]
},
{
level: 47,
ai:1,
time: 6562,
state: 1,
action: [0, 37, 48, 88, 59, 37, 63, 88, 71, 37, 79, 38, 91, 39, 110, 88, 121, 37, 125, 88, 132, 37, 149, 39, 170, 88, 180, 37, 185, 88, 194, 37, 214, 39, 234, 88, 245, 37, 250, 88, 258, 37, 283, 39, 302, 88, 313, 37, 318, 88, 328, 37, 350, 39, 370, 88, 381, 37, 386, 88, 395, 37, 424, 39, 443, 88, 453, 37, 458, 88, 466, 37, 492, 39, 513, 88, 523, 37, 529, 88, 538, 37, 560, 39, 580, 88, 590, 37, 597, 88, 605, 37, 619, 37, 620, 37, 633, 39, 652, 88, 663, 37, 668, 88, 676, 37, 703, 39, 723, 88, 732, 37, 738, 88, 746, 37, 760, 37, 761, 37, 762, 37, 779, 39, 801, 37, 809, 88, 821, 37, 865, 39, 872, 38, 940, 39, 954, 90, 991, 37, 1122, 38, 1175, 40, 1191, 90, 1285, 38, 1324, 88, 1335, 39, 1344, 88, 1357, 39, 1366, 88, 1377, 39, 1384, 88, 1396, 39, 1404, 88, 1418, 39, 1425, 88, 1439, 39, 1446, 88, 1459, 39, 1468, 88, 1481, 39, 1489, 88, 1502, 39, 1510, 88, 1524, 39, 1531, 88, 1545, 39, 1555, 88, 1567, 39, 1584, 90, 1592, 37, 1671, 38, 1732, 88, 1743, 39, 1752, 88, 1763, 39, 1772, 88, 1784, 39, 1792, 88, 1805, 39, 1813, 88, 1826, 39, 1834, 88, 1847, 39, 1855, 88, 1868, 39, 1876, 88, 1890, 39, 1898, 88, 1913, 39, 1929, 90, 1937, 37, 2001, 38, 2044, 88, 2057, 39, 2067, 88, 2078, 39, 2088, 88, 2100, 39, 2109, 88, 2120, 39, 2128, 88, 2142, 39, 2151, 88, 2162, 39, 2179, 90, 2191, 37, 2237, 38, 2262, 88, 2274, 39, 2283, 88, 2295, 39, 2304, 88, 2314, 39, 2332, 90, 2342, 37, 2375, 38, 2466, 39, 2528, 88, 2540, 37, 2545, 88, 2553, 37, 2563, 38, 2575, 39, 2597, 88, 2608, 37, 2613, 88, 2621, 37, 2643, 39, 2662, 88, 2673, 37, 2679, 88, 2686, 37, 2709, 39, 2730, 88, 2740, 37, 2746, 88, 2754, 37, 2768, 37, 2769, 37, 2777, 39, 2797, 88, 2809, 37, 2814, 88, 2823, 37, 2845, 39, 2865, 88, 2875, 37, 2882, 88, 2890, 37, 2911, 39, 2932, 88, 2943, 37, 2949, 88, 2957, 37, 2980, 39, 3000, 88, 3010, 37, 3016, 88, 3025, 37, 3038, 37, 3048, 39, 3068, 88, 3079, 37, 3085, 88, 3092, 37, 3106, 37, 3107, 37, 3119, 39, 3139, 88, 3149, 37, 3156, 88, 3166, 37, 3179, 37, 3187, 39, 3207, 88, 3217, 37, 3224, 88, 3230, 37, 3244, 37, 3245, 37, 3246, 37, 3247, 37, 3248, 37, 3249, 37, 3250, 37, 3260, 39, 3282, 88, 3292, 37, 3294, 88, 3305, 37, 3312, 88, 3318, 37, 3332, 37, 3333, 37, 3334, 37, 3335, 37, 3336, 37, 3337, 37, 3338, 37, 3339, 37, 3340, 37, 3368, 39, 3373, 38, 3470, 39, 3482, 37, 3497, 90, 3543, 37, 3690, 38, 3784, 40, 3806, 39, 3822, 38, 3828, 90, 3839, 38, 3846, 90, 4103, 38, 4133, 39, 4180, 88, 4190, 37, 4195, 88, 4202, 37, 4213, 38, 4226, 39, 4247, 88, 4257, 37, 4262, 88, 4269, 37, 4283, 37, 4284, 37, 4285, 37, 4294, 39, 4312, 88, 4321, 37, 4328, 88, 4334, 37, 4357, 39, 4377, 88, 4386, 37, 4392, 88, 4399, 37, 4413, 37, 4424, 39, 4443, 88, 4453, 37, 4460, 88, 4466, 37, 4480, 37, 4492, 39, 4511, 88, 4521, 37, 4528, 88, 4535, 37, 4548, 37, 4549, 37, 4557, 39, 4576, 88, 4586, 37, 4592, 88, 4600, 37, 4614, 37, 4615, 37, 4622, 39, 4641, 88, 4650, 37, 4657, 88, 4663, 37, 4677, 37, 4678, 37, 4685, 39, 4704, 88, 4713, 37, 4720, 88, 4727, 37, 4750, 39, 4770, 88, 4780, 37, 4788, 88, 4794, 37, 4808, 37, 4809, 37, 4810, 37, 4811, 37, 4812, 37, 4818, 39, 4837, 88, 4846, 37, 4854, 88, 4861, 37, 4875, 37, 4892, 39, 4907, 88, 4918, 37, 4932, 37, 4933, 37, 4934, 37, 5003, 39, 5028, 37, 5042, 88, 5088, 39, 5095, 37, 5209, 38, 5230, 39, 5342, 38, 5412, 39, 5445, 88, 5455, 37, 5458, 88, 5470, 37, 5474, 88, 5482, 37, 5492, 38, 5504, 39, 5525, 88, 5534, 37, 5541, 88, 5548, 37, 5569, 39, 5588, 88, 5597, 37, 5605, 88, 5612, 37, 5626, 37, 5637, 39, 5657, 88, 5667, 37, 5675, 88, 5683, 37, 5707, 39, 5728, 88, 5739, 37, 5745, 88, 5754, 37, 5767, 37, 5768, 37, 5769, 37, 5770, 37, 5778, 39, 5798, 88, 5808, 37, 5815, 88, 5824, 37, 5845, 39, 5866, 88, 5875, 37, 5882, 88, 5892, 37, 5912, 39, 5932, 88, 5942, 37, 5949, 88, 5958, 37, 5979, 39, 5999, 88, 6009, 37, 6016, 88, 6024, 37, 6037, 37, 6038, 37, 6045, 39, 6064, 88, 6075, 37, 6081, 88, 6090, 37, 6110, 39, 6129, 88, 6140, 37, 6146, 88, 6154, 37, 6177, 39, 6196, 88, 6206, 37, 6213, 88, 6221, 37, 6235, 37, 6236, 37, 6237, 37, 6238, 37, 6299, 39, 6323, 37, 6330, 88, 6344, 37, 6356, 39, 6374, 37, 6460, 38, 6484, 39, 6509, 38], //415
goldDrop: [28, 27, 37, 19]
},
{
level: 48,
ai: 1,
time: 5605,
state: 1,
action: [ 0, 39, 12, 88, 23, 37, 28, 88, 42, 37, 45, 88, 58, 37, 61, 88, 74, 37, 77, 88, 272, 37, 277, 38, 297, 39, 311, 39, 312, 39, 313, 39, 314, 39, 315, 39, 316, 39, 317, 39, 318, 39, 319, 39, 320, 39, 321, 39, 322, 39, 323, 39, 324, 39, 325, 39, 326, 39, 327, 39, 328, 39, 329, 39, 330, 39, 331, 39, 332, 39, 333, 39, 334, 39, 335, 39, 336, 39, 352, 88, 396, 39, 421, 38, 436, 37, 441, 38, 463, 37, 469, 38, 497, 37, 523, 88, 531, 37, 534, 88, 569, 39, 574, 38, 584, 37, 595, 38, 632, 39, 751, 37, 761, 88, 772, 39, 785, 37, 798, 37, 836, 90, 846, 39, 851, 90, 863, 39, 867, 90, 879, 39, 882, 90, 894, 39, 897, 90, 909, 39, 912, 90, 923, 39, 927, 90, 939, 39, 943, 90, 955, 39, 958, 90, 969, 39, 973, 90, 1048, 38, 1067, 37, 1070, 38, 1086, 40, 1100, 39, 1114, 40, 1127, 40, 1128, 40, 1129, 40, 1130, 40, 1131, 40, 1132, 40, 1133, 40, 1134, 40, 1204, 37, 1255, 90, 1307, 37, 1323, 38, 1342, 39, 1347, 38, 1369, 39, 1375, 38, 1404, 39, 1412, 38, 1425, 39, 1432, 38, 1460, 39, 1464, 90, 1509, 37, 1562, 39, 1575, 37, 1591, 39, 1596, 90, 1609, 37, 1632, 39, 1693, 38, 1713, 37, 1716, 38, 1733, 37, 1737, 38, 1760, 37, 1765, 38, 1815, 39, 1852, 90, 1935, 37, 1948, 39, 1977, 90, 2063, 37, 2084, 39, 2106, 37, 2109, 88, 2122, 39, 2135, 37, 2143, 40, 2152, 37, 2162, 38, 2168, 37, 2215, 90, 2226, 39, 2230, 90, 2242, 39, 2246, 90, 2257, 39, 2261, 90, 2272, 39, 2276, 90, 2288, 39, 2292, 90, 2301, 39, 2306, 90, 2322, 39, 2325, 90, 2336, 39, 2340, 90, 2404, 39, 2413, 38, 2557, 37, 2653, 40, 2773, 38, 2782, 39, 2803, 37, 2820, 38, 2839, 39, 2852, 39, 2853, 39, 2854, 39, 2881, 90, 2893, 39, 2898, 90, 2910, 39, 2915, 90, 2927, 39, 2932, 90, 2943, 39, 2949, 90, 2959, 39, 2964, 90, 3003, 39, 3018, 38, 3036, 37, 3041, 38, 3074, 37, 3078, 38, 3106, 40, 3136, 39, 3150, 40, 3184, 37, 3222, 90, 3232, 39, 3238, 90, 3248, 39, 3252, 90, 3262, 39, 3265, 90, 3276, 39, 3281, 90, 3291, 39, 3296, 90, 3306, 39, 3311, 90, 3323, 39, 3434, 37, 3440, 38, 3487, 37, 3492, 38, 3511, 40, 3529, 39, 3536, 40, 3550, 40, 3551, 40, 3552, 40, 3553, 40, 3557, 39, 3565, 40, 3573, 39, 3582, 38, 3591, 39, 3599, 88, 3609, 37, 3614, 88, 3623, 37, 3629, 88, 3639, 40, 3653, 37, 3855, 38, 3866, 37, 3941, 40, 3947, 37, 3958, 38, 3965, 37, 3975, 90, 3985, 39, 3990, 90, 4000, 39, 4006, 90, 4017, 40, 4027, 39, 4037, 38, 4049, 39, 4063, 38, 4082, 39, 4137, 38, 4152, 37, 4157, 38, 4178, 37, 4183, 38, 4239, 40, 4264, 39, 4272, 40, 4309, 37, 4315, 88, 4326, 37, 4331, 88, 4341, 37, 4346, 88, 4398, 37, 4445, 38, 4458, 38, 4465, 39, 4470, 38, 4484, 38, 4485, 38, 4495, 39, 4502, 38, 4573, 40, 4658, 38, 4683, 88, 4690, 40, 4699, 88, 4706, 40, 4720, 40, 4721, 40, 4722, 40, 4723, 40, 4724, 40, 4725, 40, 4726, 40, 4727, 40, 4728, 40, 4729, 40, 4730, 40, 4731, 40, 4732, 40, 4733, 37, 4741, 40, 4755, 40, 4756, 40, 4757, 40, 4758, 40, 4759, 40, 4760, 40, 4761, 40, 4762, 40, 4763, 40, 4798, 39, 4802, 90, 4816, 39, 4819, 90, 4831, 39, 4835, 90, 5085, 37, 5105, 38, 5126, 39, 5132, 38, 5158, 39, 5163, 38, 5193, 37, 5238, 88, 5283, 39, 5290, 38, 5327, 37, 5349, 88, 5384, 39, 5389, 38, 5438, 37, 5452, 39, 5457, 90, 5469, 37, 5477, 40, 5485, 39, 5490, 40, 5498, 39, 5508, 38, 5515, 39, 5520, 38, 5536, 39, 5540, 38, 5562, 39, 5566, 38 ],
goldDrop: [],
bornPos: [ 1, 16, 9, 13, 0, 20, 15, 4, 8, 25, 1, 19, 11, 6 ]
},
{
level: 50,
ai:1,
time: 5390,
state: 1,
action: [0, 39, 8, 90, 17, 39, 31, 39, 32, 39, 33, 39, 34, 39, 35, 39, 36, 39, 37, 39, 38, 39, 39, 39, 40, 39, 43, 38, 48, 39, 57, 40, 71, 38, 125, 40, 139, 40, 140, 40, 141, 40, 142, 40, 143, 40, 149, 39, 157, 40, 169, 37, 173, 40, 183, 37, 290, 38, 300, 88, 311, 39, 334, 37, 344, 88, 360, 37, 379, 40, 421, 88, 433, 38, 499, 37, 502, 38, 635, 88, 659, 39, 667, 40, 680, 37, 684, 40, 707, 39, 713, 38, 719, 37, 733, 37, 734, 37, 743, 38, 754, 37, 773, 40, 778, 39, 825, 38, 908, 39, 919, 90, 1056, 39, 1067, 88, 1080, 37, 1084, 88, 1097, 37, 1118, 88, 1130, 40, 1136, 88, 1145, 38, 1159, 39, 1173, 39, 1174, 39, 1175, 39, 1176, 39, 1190, 90, 1202, 40, 1206, 90, 1215, 39, 1229, 37, 1241, 88, 1253, 37, 1258, 88, 1269, 37, 1275, 88, 1285, 37, 1301, 88, 1312, 40, 1319, 88, 1327, 38, 1341, 38, 1342, 38, 1343, 38, 1344, 38, 1345, 38, 1346, 38, 1347, 38, 1348, 38, 1349, 38, 1350, 38, 1351, 38, 1352, 38, 1359, 39, 1370, 88, 1379, 39, 1407, 88, 1421, 40, 1425, 88, 1434, 39, 1460, 37, 1495, 88, 1507, 40, 1511, 88, 1521, 39, 1539, 37, 1558, 39, 1601, 38, 1621, 90, 1632, 40, 1637, 90, 1646, 37, 1664, 39, 1672, 38, 1683, 38, 1698, 39, 1701, 38, 1758, 37, 1763, 38, 1777, 39, 1793, 37, 1802, 38, 1840, 39, 1843, 88, 1853, 37, 1858, 38, 1870, 39, 1876, 38, 1898, 39, 1903, 38, 1913, 39, 1927, 39, 1928, 39, 1929, 39, 1935, 38, 1948, 37, 1953, 38, 1989, 39, 2034, 37, 2039, 88, 2050, 37, 2055, 88, 2065, 39, 2080, 90, 2093, 39, 2096, 90, 2105, 37, 2131, 39, 2139, 90, 2150, 39, 2155, 90, 2166, 37, 2182, 90, 2189, 39, 2192, 90, 2206, 39, 2210, 90, 2219, 38, 2235, 39, 2241, 38, 2256, 39, 2272, 37, 2279, 88, 2289, 37, 2301, 40, 2324, 37, 2352, 39, 2357, 90, 2368, 37, 2379, 40, 2408, 39, 2431, 37, 2438, 88, 2670, 39, 2682, 37, 2689, 88, 2701, 37, 2706, 88, 2716, 40, 2723, 88, 2735, 39, 2755, 38, 2762, 39, 2772, 38, 2784, 39, 2797, 37, 2806, 88, 2817, 40, 2824, 88, 2834, 40, 2840, 37, 2869, 38, 2876, 37, 2880, 38, 2891, 39, 2893, 38, 2906, 38, 2911, 39, 2916, 38, 2939, 39, 2946, 88, 2954, 37, 2962, 88, 2977, 40, 2982, 88, 2991, 39, 3005, 39, 3006, 39, 3007, 39, 3008, 39, 3009, 39, 3010, 39, 3011, 39, 3012, 39, 3013, 39, 3014, 38, 3020, 39, 3030, 88, 3041, 90, 3052, 38, 3065, 39, 3070, 88, 3080, 39, 3098, 37, 3138, 40, 3162, 39, 3173, 38, 3193, 39, 3199, 88, 3210, 37, 3215, 88, 3227, 39, 3237, 88, 3247, 37, 3253, 88, 3264, 39, 3292, 38, 3309, 39, 3323, 37, 3334, 88, 3344, 40, 3351, 88, 3360, 37, 3392, 38, 3439, 39, 3444, 88, 3457, 37, 3461, 88, 3475, 39, 3483, 88, 3496, 37, 3501, 88, 3512, 39, 3525, 39, 3526, 39, 3527, 39, 3528, 39, 3529, 39, 3530, 39, 3531, 39, 3540, 38, 3545, 88, 3555, 38, 3567, 39, 3572, 88, 3584, 39, 3598, 37, 3648, 38, 3658, 39, 3663, 38, 3678, 39, 3683, 38, 3704, 37, 3708, 38, 3721, 90, 3743, 40, 3757, 39, 3766, 90, 3782, 38, 3791, 37, 3795, 38, 3805, 37, 3812, 40, 3828, 39, 3836, 90, 3847, 37, 3868, 39, 3875, 90, 3888, 39, 3893, 38, 3921, 37, 3946, 39, 3952, 90, 3963, 39, 3970, 38, 3996, 37, 4021, 38, 4241, 39, 4249, 38, 4270, 90, 4279, 40, 4303, 37, 4313, 40, 4379, 38, 4391, 39, 4400, 38, 4442, 37, 4451, 38, 4482, 39, 4494, 40, 4518, 39, 4524, 88, 4537, 39, 4554, 88, 4568, 39, 4582, 90, 4595, 37, 4611, 39, 4618, 90, 4630, 37, 4641, 38, 4662, 37, 4688, 38, 4697, 39, 4708, 38, 4749, 37, 4759, 38, 4790, 39, 4813, 40, 4839, 37, 4842, 40, 4860, 37, 4864, 88, 4877, 39, 4894, 88, 4911, 39, 4925, 90, 4941, 37, 4953, 39, 4965, 90, 4977, 37, 5026, 39, 5038, 37, 5042, 38, 5052, 39, 5062, 38, 5106, 37, 5117, 38, 5149, 39, 5198, 37, 5203, 88, 5218, 39, 5231, 39, 5240, 38, 5251, 88, 5265, 40, 5271, 88, 5288, 40, 5290, 88, 5305, 40, 5308, 88, 5332, 39, 5345, 39, 5346, 39, 5347, 39, 5348, 39, 5349, 39, 5350, 39, 5351, 39, 5352, 39, 5353, 39, 5354, 39, 5355, 39, 5368, 38] //378
}
];
================================================
FILE: lodeRunner.edit.js
================================================
var emptyTile, actTile;
var cursorTileObj;
var editMap;
var MAX_EDIT_GUARD = 5; //maximum number of guards
var EMPTY_ID = 0, GUARD_ID = 8, RUNNER_ID = 9;
var EDIT_PADDING = 1;
//value | Character | Type
//------+-----------+-----------
// 0x0 | <space> | Empty space
// 0x1 | # | Normal Brick
// 0x2 | @ | Solid Brick
// 0x3 | H | Ladder
// 0x4 | - | Hand-to-hand bar (Line of rope)
// 0x5 | X | False brick
// 0x6 | S | Ladder appears at end of level
// 0x7 | $ | Gold chest
// 0x8 | 0 | Guard
// 0x9 | & | Player
var tileIdMapping = { ' ':0, '#':1, '@':2, 'H':3, '-':4, 'X':5, 'S':6, '$':7, '0':8, '&':9 };
var tileInfo = [
[ "eraser", ' ' ], //(0), empty
[ "brick", '#' ], //(1)
[ "solid", '@' ], //(2)
[ "ladder", 'H' ], //(3)
[ "rope", '-' ], //(4)
[ "trapBrick",'X' ], //(5)
[ "hladder", 'S' ], //(6)
[ "gold", '$' ], //(7)
[ "guard1", '0' ], //(8)
[ "runner1", '&' ] //(9)
];
var baseTile=[];
var lastRunner = null;
var lastGuardList = [];
var editBorder, editStartX;
var testLevelInfo = {level: -1};
var mouseInStage = 1;
//var mouseOver = 0;
var mouseDown = 0;
var lastDown = {x:-1, y:-1};
var testButton, newButton, saveButton, loadButton;
var editorTile =[], editorActiveTileId = -1;
var editorButton = [], editorButtonMouseOverId = -1;
var editInNarrowScreen = 0;
var editMapIsEmpty = 1;
function startEditMode()
{
playMode = PLAY_EDIT;
playData = PLAY_DATA_USERDEF; //for title name only
mainStage.removeAllChildren();
document.onkeydown = editHandleKeyDown;
editInNarrowScreen = canvasEditReSize();
soundIconObj.disable(1);
repeatActionIconObj.disable(1);
if(editInNarrowScreen) themeColorObj.disable(1);
//if(gamepadIconObj) gamepadIconObj.disable(1);
setEditSelectMenu();
createBaseTile();
createEditMap();
checkEditMapEmpty(); // 2021/04
startEditTicker();
setButtonState();
initForPlay();
}
function setEditSelectMenu()
{
if(editLevels>0)selectIconObj.enable();
else selectIconObj.disable(1);
}
function canvasEditReSize()
{
var menuIconAreaX = screenBorder + BASE_ICON_X * tileScale; //current icon size X
var toolAreaX = BASE_TILE_X*3/2; //edit tool size X
var canvas = document.getElementById('canvas');
var narrowScreen = 0;
//(1) try use scale same as play mode
canvasX = (BASE_SCREEN_X+toolAreaX) * tileScale + EDIT_PADDING * (NO_OF_TILES_X+1);
canvasY = BASE_SCREEN_Y * tileScale + EDIT_PADDING * (NO_OF_TILES_Y+1);
if(canvasX > (screenX1 - menuIconAreaX) || canvasY > screenY1) {
//(2) can not fit, find new scale
for (var scale = MAX_SCALE*100; scale >= MIN_SCALE*100; scale -= 10) {
tileScale = scale/100; //new scale
canvasX = (BASE_SCREEN_X+toolAreaX) * tileScale + EDIT_PADDING * (NO_OF_TILES_X+1);
canvasY = BASE_SCREEN_Y * tileScale + EDIT_PADDING * (NO_OF_TILES_Y+1);
if (canvasX <= (screenX1 - menuIconAreaX) && canvasY <= screenY1 || tileScale <= MIN_SCALE) break;
}
}
debug("EDIT SCALE = " + tileScale);
var left = ((screenX1 - canvasX)/2|0),
top = ((screenY1 - canvasY)/2|0);
if(left < menuIconAreaX) {
narrowScreen = 1;
left = ((screenX1 - canvasX - menuIconAreaX)/2|0);
}
canvas.width = canvasX;
canvas.height = canvasY;
canvas.style.left = (left>0?left:0) + "px";
canvas.style.top = (top>0?top:0) + "px";
canvas.style.position = "absolute";
canvas.style.cursor = "default";
tileWScale = BASE_TILE_X * tileScale;
tileHScale = BASE_TILE_Y * tileScale;
editBorder = 4 * tileScale;
editStartX = (tileWScale + W2 * tileScale);
return narrowScreen;
}
function createBaseTile()
{
for(var id = 0; id < tileInfo.length; id++) {
baseTile[id] = { image: getThemeBitmap(tileInfo[id][0]).image, id: id };
}
emptyTile = { image: getThemeBitmap("empty").image, id: 0 };
actTile = baseTile[1];
}
function createEditMap()
{
var tile, backColor, bitmap;
setCanvasBackground();
setEditBackground(editStartX,0,
(tileWScale+EDIT_PADDING)*NO_OF_TILES_X+EDIT_PADDING,
(tileHScale+EDIT_PADDING)*NO_OF_TILES_Y+EDIT_PADDING
);
initMapInfo();
getTestLevel(testLevelInfo);
//(1) create empty map[x][y] array;
editMap = [];
for(var x = 0; x < NO_OF_TILES_X; x++) {
editMap[x] = [];
}
//(2) draw map
var index = 0;
for(var y = 0; y < NO_OF_TILES_Y; y++) {
for(var x = 0; x < NO_OF_TILES_X; x++) {
var id = tile2Id(testLevelInfo.levelMap.charAt(index++));
tile = new createjs.Container();
backColor = new createjs.Shape();
backColor.graphics.beginFill("black").drawRect(0, 0, tileWScale, tileHScale).endFill();
if(id == 0) {
bitmap = new createjs.Bitmap(emptyTile.image);
} else {
bitmap = new createjs.Bitmap(baseTile[id].image);
}
bitmap.scaleX = bitmap.scaleY = tileScale;
tile.addChild(backColor, bitmap);
tile.x = (tileWScale + EDIT_PADDING) * x+EDIT_PADDING + editStartX;
tile.y = (tileHScale + EDIT_PADDING) * y+EDIT_PADDING;
editMap[x][y] = { tile: tile, id: id };
mainStage.addChild(tile);
addManCheck(id, x, y);
}
}
drawEditGround();
drawEditBlock(editStartX,0, canvasX-editStartX-1,
(tileHScale+EDIT_PADDING)*NO_OF_TILES_Y+EDIT_PADDING
);
addSelectIcon();
addCursorTile();
drawEditLevel();
addEditorButton();
mouseInStage = 1;
mainStage.on("stagemouseup", stageMouseUp);
mainStage.on("stagemousedown", stageMouseDown);
mainStage.on("mouseleave", function() { mouseInStage = 0; });
mainStage.on("mouseenter", function() { mouseInStage = 1; });
}
function clearEditMap()
{
initMapInfo();
for(var y = 0; y < NO_OF_TILES_Y; y++) {
for(var x = 0; x < NO_OF_TILES_X; x++) {
var tileObj = editMap[x][y];
tileObj.tile.getChildAt(1).image = emptyTile.image;
tileObj.id = emptyTile.id;
}
}
editMapIsEmpty = 1;
}
function tile2Id(tileChar)
{
if( tileIdMapping.hasOwnProperty(tileChar)) {
return tileIdMapping[tileChar];
} else {
return 0;
}
}
function setCanvasBackground()
{
//set background color
var background = new createjs.Shape();
background.graphics.beginFill("black").drawRect(0, 0, canvas.width, canvas.height);
mainStage.addChild(background);
document.body.style.background = backgroundColor;
}
function setEditBackground(startX, startY, width, height)
{
var editBack = new createjs.Shape();
editBack.alpha = 0.6;
editBack.graphics.beginFill("gold").drawRect(startX, startY, width, height);
mainStage.addChild(editBack);
}
function drawEditBlock(startX, startY, width, height)
{
var editBlock = new createjs.Shape();
editBlock.alpha = 0.6;
editBlock.graphics.setStrokeStyle(2);
editBlock.graphics.beginStroke("red");
editBlock.graphics.moveTo(startX, startY);
editBlock.graphics.lineTo(startX+width, startY);
editBlock.graphics.lineTo(startX+width, startY+height);
editBlock.graphics.lineTo(startX, startY+height);
editBlock.graphics.lineTo(startX, startY);
editBlock.graphics.endStroke();
mainStage.addChild(editBlock);
}
function drawEditGround()
{
var groundTile;
var x = (tileWScale + EDIT_PADDING) * NO_OF_TILES_X+EDIT_PADDING + editStartX;
var y = (tileHScale + EDIT_PADDING) * NO_OF_TILES_Y+EDIT_PADDING;
groundTile = new createjs.Shape();
groundTile.graphics.beginFill(getThemeTileColor()).drawRect(0, 0, x, 10*tileScale);
groundTile.x = 0;
groundTile.y = y;
mainStage.addChild(groundTile);
}
function addSelectIcon()
{
var x = W4 * tileScale;
var y;
for(var i = 1; i < baseTile.length; i++) {
y = (tileHScale*5/3)*(i-1) + tileHScale/10;
drawSelectIcon(i, x, y);
}
y = (tileHScale*5/3)*(i-1) + tileHScale/10;
drawSelectIcon(0, x, y);
}
function addCursorTile()
{
var backColor, bitmap;
cursorTileObj = new createjs.Container();
backColor = new createjs.Shape();
backColor.graphics.beginFill("black").drawRect(0, 0, tileWScale, tileHScale).endFill();
bitmap = new createjs.Bitmap(actTile.image);
bitmap.scaleX = bitmap.scaleY = tileScale;
cursorTileObj.addChild(backColor, bitmap);
cursorTileObj.alpha = 0;
mainStage.addChild(cursorTileObj);
}
//var gameTicker = null; ....//same as playTicker
function startEditTicker()
{
stopEditTicker();
createjs.Ticker.setFPS(60);
mainStage.enableMouseOver(0);
gameTicker = createjs.Ticker.on("tick", editTick);
}
function stopEditTicker()
{
if(gameTicker) {
createjs.Ticker.off("tick", gameTicker);
mainStage.enableMouseOver(0);
//mainStage.cursor = 'default';
gameTicker = null;
}
}
function drawSelectIcon(id, x, y)
{
var tile, border, backColor, bitmap;
var selColor;
tile = new createjs.Container();
//child id = 0
border = new createjs.Shape();
if(id == actTile.id) {
selColor = "red";
selectedTile = tile;
} else {
selColor = "black";
}
border.graphics.beginFill(selColor).drawRect(-editBorder, -editBorder, tileWScale+editBorder*2, tileHScale+editBorder*2).endFill();
//child id = 1
backColor = new createjs.Shape();
backColor.graphics.beginFill("black").drawRect(0, 0, tileWScale, tileHScale).endFill();
//child id = 2
if(id == 0) {
bitmap = new createjs.Bitmap(preload.getResult("eraser")); //id=2
} else {
bitmap = new createjs.Bitmap(baseTile[id].image); //id=2
}
bitmap.scaleX = bitmap.scaleY = tileScale;
tile.addChild(border, backColor, bitmap);
tile.x = x;
tile.y = y;
tile.myId = id;
tile.on('click', selectTileClick);
mainStage.addChild(tile);
tile.x1 = x + tileWScale;
tile.y1 = y + tileHScale;
editorTile[id] = tile;
}
function selectTileClick()
{
var actBorder = this.getChildAt(0);
var inActBorder = selectedTile.getChildAt(0);
inActBorder.graphics.clear();
inActBorder.graphics.beginFill("black").drawRect(-editBorder, -editBorder, tileWScale+editBorder*2, tileHScale+editBorder*2).endFill();
actBorder.graphics.clear();
actBorder.graphics.beginFill("red").drawRect(-editBorder, -editBorder, tileWScale+editBorder*2, tileHScale+editBorder*2).endFill();
actTile = baseTile[this.myId];
cursorTileObj.getChildAt(1).image = actTile.image;
selectedTile = this;
}
function drawEditLevel()
{
var x = 17.2*(tileWScale+EDIT_PADDING)+EDIT_PADDING;
var y = canvas.height - tileHScale - editBorder;
drawText(x, y, "EDIT", mainStage);
x += 4.3*(tileWScale+EDIT_PADDING);
drawText(x, y, "LEVEL", mainStage);
drawEditLevelNo();
}
var editLevelNoObj = [];
function drawEditLevelNo()
{
var y = canvas.height - tileHScale - editBorder;
for(var i = 0; i < editLevelNoObj.length; i++)
mainStage.removeChild(editLevelNoObj[i]);
editLevelNoObj = drawText(26.5*(tileWScale+EDIT_PADDING), y, ("00"+(testLevelInfo.level)).slice(-3), mainStage);
}
function addEditorButton()
{
editorButton = [];
editorButtonMouseOverId = -1;
drawNewButton();
drawLoadButton();
drawTestButton();
drawSaveButton();
enableTestButton();
}
function drawNewButton()
{
var border, backColor, text;
var textSting = "NEW";
var width = textSting.length * tileWScale;
var x = 0.5*(tileWScale+EDIT_PADDING)+EDIT_PADDING;
var y = canvas.height - tileHScale - editBorder;
newButton = new createjs.Container();
//child id = 0
border = new createjs.Shape();
border.graphics.beginFill("#40F").drawRect(-editBorder, -editBorder, width+editBorder*2, tileHScale+editBorder*2).endFill();
//child id = 1
backColor = new createjs.Shape();
backColor.graphics.beginFill("#FFF").drawRect(0, 0, width, tileHScale).endFill();
newButton.addChild(border, backColor);
//child id = 2
drawText(0, 0, textSting, newButton);
newButton.x = x;
newButton.y = y;
newButton.on('click', newButtonClick);
mainStage.addChild(newButton);
newButton.x1 = x + width;
newButton.y1 = y + tileHScale;
editorButton[editorButton.length] = newButton;
function newLevel(rc)
{
if(rc) {
clearEditMap();
if(testLevelInfo.level <= editLevels) { //edit exist level
testLevelInfo.level = editLevels+1;
drawEditLevelNo();
}
if(testLevelInfo.level > MAX_EDIT_LEVEL) {
setButtonState();
} else {
disableTestButton();
}
setPasteIconState();
clearTestLevel();
testLevelInfo.fromPlayData = -1;
testLevelInfo.fromLevel = -1;
}
startEditTicker();
gameResume();
}
function newButtonClick()
{
gamePause();
stopEditTicker();
if(testLevelInfo.modified) {
yesNoDialog(["Abort current editing ?"], yesBitmap, noBitmap, mainStage, tileScale, newLevel);
} else {
newLevel(1);
}
}
}
function drawLoadButton()
{
var border, backColor, text;
var textSting = "LOAD";
var width = textSting.length * tileWScale;
var x = 4*(tileWScale+EDIT_PADDING)+EDIT_PADDING;
var y = canvas.height - tileHScale - editBorder;
var saveStateObj;
var loadLevelData, loadPlayData;
var editGameVersionList = [
{ activeItem: 0 } //game version menu ID
];
loadButton = new createjs.Container();
//child id = 0
border = new createjs.Shape();
border.graphics.beginFill("#40F").drawRect(-editBorder, -editBorder, width+editBorder*2, tileHScale+editBorder*2).endFill();
//child id = 1
backColor = new createjs.Shape();
backColor.graphics.beginFill("#FFF").drawRect(0, 0, width, tileHScale).endFill();
loadButton.addChild(border, backColor);
//child id = 2
drawText(0, 0, textSting, loadButton);
loadButton.x = x;
loadButton.y = y;
loadButton.on('click', loadButtonClick);
mainStage.addChild(loadButton);
initLoadVariable();
loadButton.x1 = x + width;
loadButton.y1 = y + tileHScale;
editorButton[editorButton.length] = loadButton;
function saveState()
{
//saveStateObj = saveKeyHandler(noKeyDown);
gamePause();
stopEditTicker();
}
function restoreState()
{
//restoreKeyHandler(saveStateObj);
startEditTicker();
gameResume();
}
function initLoadVariable()
{
for(var i = 0; i < playVersionInfo.length; i++) {
editGameVersionList.push(
{
name: playVersionInfo[i].name + " (" + playVersionInfo[i].verData.length + " Levels) ",
id :playVersionInfo[i].id,
activeFun: loadSelectMenu
});
}
}
function menuId2GameVersionId(id)
{
return editGameVersionList[id+1].id;
}
function loadSelectLevel(level)
{
restoreState();
testLevelInfo.levelMap = loadLevelData[level-1];
testLevelInfo.pass = 1;
testLevelInfo.fromPlayData = loadPlayData;
testLevelInfo.fromLevel = level;
setTestLevel(testLevelInfo);
startEditMode();
}
function loadSelectMenu(id, callbackFun)
{
loadPlayData = menuId2GameVersionId(id);
var titleName = playDataToTitleName(loadPlayData);
loadLevelData = getPlayVerData(loadPlayData);
titleName = "Load From: " + titleName;
selectDialog(titleName, checkBitmap, loadLevelData, 1, screenX1, screenY1,
mainStage, tileScale, loadSelectLevel, null, restoreState)
}
function loadExistLevel(yes)
{
if(yes) {
menuDialog("Load Game Version ", editGameVersionList, mainStage, tileScale, 1, restoreState, null);
} else {
restoreState();
}
}
function loadButtonClick()
{
saveState();
if(!editMapIsEmpty) {
yesNoDialog(["Abort current editing ?"], yesBitmap, noBitmap, mainStage, tileScale, loadExistLevel);
} else {
loadExistLevel(1);
}
}
}
function drawTestButton()
{
var border, backColor, text;
var textSting = "TEST";
var width = textSting.length * tileWScale;
var x = 8.5*(tileWScale+EDIT_PADDING)+EDIT_PADDING;
var y = canvas.height - tileHScale - editBorder;
testButton = new createjs.Container();
//child id = 0
border = new createjs.Shape();
border.graphics.beginFill("#40F").drawRect(-editBorder, -editBorder, width+editBorder*2, tileHScale+editBorder*2).endFill();
//child id = 1
backColor = new createjs.Shape();
backColor.graphics.beginFill("#FFF").drawRect(0, 0, width, tileHScale).endFill();
testButton.addChild(border, backColor);
//child id = 2
drawText(0, 0, textSting, testButton);
testButton.x = x;
testButton.y = y;
testButton.on('click', testButtonClick);
testButton.alpha = 0;
mainStage.addChild(testButton);
testButton.x1 = x + width;
testButton.y1 = y + tileHScale;
editorButton[editorButton.length] = testButton;
function testButtonClick()
{
//mainStage.cursor = 'default';
startTestMode();
}
}
function drawSaveButton()
{
var border, backColor, text;
var textSting = "SAVE";
var width = textSting.length * tileWScale;
var x = 13*(tileWScale+EDIT_PADDING)+EDIT_PADDING;
var y = canvas.height - tileHScale - editBorder;
saveButton = new createjs.Container();
//child id = 0
border = new createjs.Shape();
border.graphics.beginFill("#40F").drawRect(-editBorder, -editBorder, width+editBorder*2, tileHScale+editBorder*2).endFill();
//child id = 1
backColor = new createjs.Shape();
backColor.graphics.beginFill("#FFF").drawRect(0, 0, width, tileHScale).endFill();
saveButton.addChild(border, backColor);
//child id = 2
drawText(0, 0, textSting, saveButton);
saveButton.x = x;
saveButton.y = y;
saveButton.on('click', saveButtonClick);
saveButton.alpha = 0;
mainStage.addChild(saveButton);
saveButton.x1 = x + width;
saveButton.y1 = y + tileHScale;
editorButton[editorButton.length] = saveButton;
function saveButtonClick()
{
gamePause();
stopEditTicker();
saveEditLevel();
yesNoDialog(["Save Successful", "Play It ?"], yesBitmap, noBitmap, mainStage, tileScale, playConfirm);
}
function playConfirm(rc)
{
gameResume();
if(rc) { //yes
clearTestLevel(); //clear current edit level
startPlayUserLevel();
} else { //no
setButtonState();
startEditTicker();
}
}
function startPlayUserLevel()
{
playMode = PLAY_MODERN;
playData = PLAY_DATA_USERDEF;
curLevel = testLevelInfo.level;
setModernInfo();
canvasReSize();
document.onkeydown = handleKeyDown;
initShowDataMsg();
startGame();
}
}
//=======================
// BEGIN for TEST Mode
//=======================
function startTestMode()
{
playMode = PLAY_TEST;
playData = PLAY_DATA_USERDEF;
curLevel = testLevelInfo.level;
stopEditTicker();
saveTestState();
canvasReSize();
document.onkeydown = handleKeyDown; //key press
selectIconObj.disable(1);
initShowDataMsg();
startGame();
}
function saveTestState()
{
map2LevelData();
setTestLevel(testLevelInfo);
}
function back2EditMode(rc)
{
if(rc == 1) { //pass
testLevelInfo.pass = 1;
setTestLevel(testLevelInfo);
//enableSaveButton();
} else { //fail
//if(testLevelInfo.pass && !testLevelInfo.modified) enableSaveButton();
}
startEditMode();
}
function getTestLevelMap(initValue)
{
return testLevelInfo.levelMap;
}
function enableTestButton()
{
if(lastRunner) testButton.alpha = 1;
}
//==========================
function editLevelModified()
{
return (testLevelInfo.modified);
}
function editConfirmAbortState(callbackFun)
{
gamePause();
stopEditTicker();
yesNoDialog(["Abort current editing ?"], yesBitmap, noBitmap, mainStage, tileScale,
function(rc) { gameResume(); if(rc) callbackFun(); else startEditTicker(); } );
}
function disableTestButton()
{
testButton.alpha = 0;
saveButton.alpha = 0;
}
function clearUserLevelScore()
{
playData = PLAY_DATA_USERDEF;
getModernScoreInfo();
modernScoreInfo[testLevelInfo.level-1] = -1;
setModernScoreInfo();
}
function delUserLevelScore(level)
{
playData = PLAY_DATA_USERDEF;
getModernScoreInfo();
modernScoreInfo.splice(level-1, 1);
modernScoreInfo[MAX_EDIT_LEVEL-1] = -1;
setModernScoreInfo();
}
function saveEditLevel()
{
map2LevelData();
if(testLevelInfo.level > editLevels) { // new level
addEditLevel(testLevelInfo.levelMap);
} else {
setEditLevel(testLevelInfo.level, testLevelInfo.levelMap);
}
clearUserLevelScore(); //clear score
testLevelInfo.modified = 0;
setEditSelectMenu();
}
function stageMouseDown(event)
{
var e = event.nativeEvent;
// ------------------------------------------------------------------------
// nativeEvent: https://createjs.com/docs/easeljs/classes/MouseEvent.html
// which: https://www.w3schools.com/jsref/event_which.asp
// ------------------------------------------------------------------------
if( e.which === undefined || e.which == 1 ) { // 1: left, 2: middle, 3: right
// only support left mouse button
mouseDown = 1;
//console.log(e.which)
//console.log("DOWN");
}
}
function stageMouseUp(event)
{
var e = event.nativeEvent;
// ------------------------------------------------------------------------
// nativeEvent: https://createjs.com/docs/easeljs/classes/MouseEvent.html
// which: https://www.w3schools.com/jsref/event_which.asp
// ------------------------------------------------------------------------
if( e.which === undefined || e.which == 1 ) { // 1: left, 2: middle, 3: right
// only support left mouse button
mouseDown = 0;
lastDown = {x:-1, y:-1};
//console.log(e.which)
//console.log("UP");
}
}
function initMapInfo()
{
lastRunner = null;
lastGuardList = [];
testLevelInfo.modified = 0;
testLevelInfo.pass = 0;
}
function addManCheck(id, x, y)
{
switch(id) {
case RUNNER_ID:
if (lastRunner && (lastRunner.x != x || lastRunner.y != y)) {
var lastRunnerTile = editMap[lastRunner.x][lastRunner.y];
lastRunnerTile.tile.getChildAt(1).image = emptyTile.image;
lastRunnerTile.id = emptyTile.id;
}
lastRunner = { x:x, y:y };
break;
case GUARD_ID:
var sameGuard=0, guardNo = lastGuardList.length;
for(var i = 0; i < guardNo; i++) {
if(lastGuardList[i].x == x && lastGuardList[i].y == y) {
sameGuard = 1;
break;
}
}
if(!sameGuard) {
if(guardNo >= MAX_EDIT_GUARD) { //too many guards remove first one
var x1 = lastGuardList[0].x, y1 = lastGuardList[0].y;
var guardTile = editMap[x1][y1];
guardTile.tile.getChildAt(1).image = emptyTile.image;
guardTile.id = emptyTile.id;
lastGuardList.splice(0,1); //remove first one from array
}
lastGuardList.push({x:x, y:y});
}
break;
}
}
function delManCheck(id, x, y)
{
switch(id) {
case RUNNER_ID:
//assert(lastRunner != null, "runner == null error");
var lastRunnerTile = editMap[lastRunner.x][lastRunner.y];
lastRunnerTile.tile.getChildAt(1).image = emptyTile.image;
lastRunnerTile.id = emptyTile.id;
lastRunner = null;
disableTestButton();
break;
case GUARD_ID:
var removeId = -1, guardNo = lastGuardList.length;
for(var i = 0; i < guardNo; i++) {
if(lastGuardList[i].x == x && lastGuardList[i].y == y) {
removeId = i;
break;
}
}
if(removeId >= 0) {
var x1 = lastGuardList[removeId].x, y1 = lastGuardList[removeId].y;
var guardTile = editMap[x1][y1];
guardTile.tile.getChildAt(1).image = emptyTile.image;
guardTile.id = emptyTile.id;
lastGuardList.splice(removeId,1);
} else {
error("design error !");
}
break;
}
}
//state: = 0: no change, < 0: level deleted, > 0 level change to newLevel
function editSelectMenuClose(levelDeleted, newLevel, state)
{
if(levelDeleted) {
setEditSelectMenu();
startEditMode();
/*
Bug fixed: If player delete some custom levels and restart the program immediate will cause
testLevel inconsistent, must del or shift testlevel immediate.
==> so move below statements into function delLevel(level).
switch(true) {
case (state > 0): //level number changed
//getTestLevel(testLevelInfo);
//testLevelInfo.level = newLevel;
//setTestLevel(testLevelInfo);
startEditMode();
break;
case (state < 0): //level deleted
//clearTestLevel();
setEditSelectMenu();
startEditMode();
break;
case (state == 0 && newLevel == 0): //newLevel = 0 : meanings edit new level just need change level id
//if(testLevelInfo.modified == 1) {
// testLevelInfo.level = editLevels+1;
// setTestLevel(testLevelInfo);
//}
startEditMode();
break;
}
*/
}
}
function editSelectLevel(level)
{
testLevelInfo.level = level;
testLevelInfo.levelMap = editLevelData[level-1];
testLevelInfo.fromPlayData = testLevelInfo.fromLevel = -1;
setTestLevel(testLevelInfo);
startEditMode();
}
function map2LevelData()
{
var i=0;
testLevelInfo.levelMap = "";
for(var y = 0; y < NO_OF_TILES_Y; y++) {
for(var x = 0; x < NO_OF_TILES_X; x++) {
testLevelInfo.levelMap += tileInfo[editMap[x][y].id][1];
}
}
}
function checkEditMapEmpty()
{
editMapIsEmpty = 1;
mapCheckLoop:
for(var y = 0; y < NO_OF_TILES_Y; y++) {
for(var x = 0; x < NO_OF_TILES_X; x++) {
if(editMap[x][y].id != emptyTile.id) {
editMapIsEmpty = 0;
break mapCheckLoop;
}
}
}
setPasteIconState();
}
function setPasteIconState()
{
if (editMapIsEmpty && copyLevelMap != null && testLevelInfo.level <= MAX_EDIT_LEVEL)
pasteIconObj.enable();
else
pasteIconObj.disable();
}
function copyEditingMap()
{
var curEditMap = "";
for(var y = 0; y < NO_OF_TILES_Y; y++) {
for(var x = 0; x < NO_OF_TILES_X; x++) {
curEditMap += tileInfo[editMap[x][y].id][1];
}
}
return curEditMap;
}
//==============================
// Too many user created Levels
//==============================
var editWarningText = null;
function editWarningMsg(hidden)
{
var width, height;
if(editWarningText == null)
editWarningText = new createjs.Text("Too many custom levels !",
"bold " + (64*tileScale) + "px Helvetica", "#fc5c1c");
width = editWarningText.getBounds().width;
height = editWarningText.getBounds().height;
editWarningText.x = ((NO_OF_TILES_X+2)*(tileWScale+EDIT_PADDING) - width) / 2 | 0;
editWarningText.y = (NO_OF_TILES_Y*tileHScale - height) / 2 | 0;
editWarningText.shadow = new createjs.Shadow("white", tileScale, 2*tileScale, 1);
if(hidden) {
mainStage.removeChild(editWarningText);
} else {
mainStage.addChild(editWarningText);
}
mainStage.update();
}
var copyLevelMap = null, copyLevelPassed = 0;
function editHandleKeyDown(event)
{
if(!event){ event = window.event; } //cross browser issues exist
if (event.ctrlKey) {
switch(event.keyCode) {
case KEYCODE_C: //CTRL-C : copy current level
if (!editMapIsEmpty) {
copyLevelMap = copyEditingMap();
copyLevelPassed = (!testLevelInfo.modified && lastRunner) || testLevelInfo.pass;
setTimeout(function() { showTipsText("COPY MAP", 1500);}, 50);
}
break;
case KEYCODE_V: //CTRL-V : paste copy map
if(copyLevelMap != null && editMapIsEmpty && testLevelInfo.level <= MAX_EDIT_LEVEL) {
editPasteMap();
}
break;
}
}
return true;
}
function editPasteMap()
{
testLevelInfo.levelMap = copyLevelMap;
testLevelInfo.modified = 1;
testLevelInfo.pass = copyLevelPassed;
testLevelInfo.fromPlayData = testLevelInfo.fromLevel = -1;
setTestLevel(testLevelInfo);
copyLevelMap = null; //clear copy map after paste
startEditMode();
////setButtonState();
setTimeout(function() { showTipsText("PASTE MAP", 1500);}, 50);
}
function checkTileMouseOver(x, y)
{
var curTile;
for(var i = 0; i < editorTile.length; i++) {
curTile = editorTile[i];
if(curTile.x <= x && curTile.y <= y && curTile.x1 >= x && curTile.y1 >= y) {
if(editorActiveTileId == i) return;
selectTileMouseOver(curTile);
if(editorActiveTileId >= 0) selectTileMouseOut(editorTile[editorActiveTileId]);
editorActiveTileId = i;
return;
}
}
if(editorActiveTileId >= 0) selectTileMouseOut(editorTile[editorActiveTileId]);
editorActiveTileId = -1;
}
function selectTileMouseOver(tile)
{
var border = tile.getChildAt(0);
border.graphics.clear();
border.graphics.beginFill("gold").drawRect(-editBorder, -editBorder, tileWScale+editBorder*2, tileHScale+editBorder*2).endFill();
canvas.style.cursor = "pointer";
//mouseOver = 1;
}
function selectTileMouseOut(tile)
{
var border = tile.getChildAt(0);
var color = (actTile.id == tile.myId)?"red":"black";
border.graphics.clear();
border.graphics.beginFill(color).drawRect(-editBorder, -editBorder, tileWScale+editBorder*2, tileHScale+editBorder*2).endFill();
canvas.style.cursor = "default";
//mouseOver = 0;
}
function checkButtonMouseOver(x, y)
{
var curButton;
for(var i = 0; i < editorButton.length; i++) {
curButton = editorButton[i];
if(curButton.x <= x && curButton.y <= y && curButton.x1 >= x && curButton.y1 >= y) {
if(editorButtonMouseOverId == i) return;
editorButtonMouseOver(curButton);
if(editorButtonMouseOverId >= 0) editorButtonMouseOut(editorButton[editorButtonMouseOverId]);
editorButtonMouseOverId = i;
return;
}
}
if(editorButtonMouseOverId >= 0) editorButtonMouseOut(editorButton[editorButtonMouseOverId]);
editorButtonMouseOverId = -1;
}
function editorButtonMouseOver(button)
{
var border = button.getChildAt(0);
var width = button.x1-button.x;
border.graphics.clear();
border.graphics.beginFill("red").drawRect(-editBorder, -editBorder, width+editBorder*2, tileHScale+editBorder*2).endFill();
var backColor = button.getChildAt(1);
backColor.graphics.clear();
backColor.graphics.beginFill("#ffa").drawRect(0, 0, width, tileHScale).endFill();
if (button.alpha)
canvas.style.cursor = "pointer";
//mouseOver = 1;
}
function editorButtonMouseOut(button)
{
var border = button.getChildAt(0);
var width = button.x1-button.x;
border.graphics.clear();
border.graphics.beginFill("#40F").drawRect(-editBorder, -editBorder, width+editBorder*2, tileHScale+editBorder*2).endFill();
var backColor = button.getChildAt(1);
backColor.graphics.clear();
backColor.graphics.beginFill("#fff").drawRect(0, 0, width, tileHScale).endFill();
canvas.style.cursor = "default";
//mouseOver = 0;
}
function setButtonState()
{
if(testLevelInfo.level > MAX_EDIT_LEVEL) {
newButton.alpha = 0;
loadButton.alpha = 0;
testButton.alpha = 0;
saveButton.alpha = 0;
canvas.style.cursor = "default";
editWarningMsg(0);
return;
} else {
newButton.alpha = 1;
editWarningMsg(1);
}
if(testLevelInfo.modified) {
enableTestButton();
if(testLevelInfo.pass) {
saveButton.alpha = 1;
} else {
saveButton.alpha = 0;
}
} else {
testLevelInfo.pass = 0;
saveButton.alpha = 0;
}
}
function editTick()
{
var x = ((mainStage.mouseX-EDIT_PADDING - editStartX)/(tileWScale+EDIT_PADDING));
var x = (x < 0)?-1:(x|0);
var y = ((mainStage.mouseY-EDIT_PADDING) / (tileHScale+EDIT_PADDING) )| 0;
if(testLevelInfo.level <= MAX_EDIT_LEVEL) {
//debug(mainStage.mouseX,editStartX, x,y);
if(mouseInStage && x >= 0 && x < NO_OF_TILES_X && y >= 0 && y < NO_OF_TILES_Y) {
//edit area
if(editorActiveTileId >= 0) selectTileMouseOut(editorTile[editorActiveTileId]);
if(editorButtonMouseOverId >= 0) editorButtonMouseOut(editorButton[editorButtonMouseOverId]);
if( x != lastDown.x || y != lastDown.y) {
cursorTileObj.alpha = 1;
cursorTileObj.x = (tileWScale + EDIT_PADDING) * x+EDIT_PADDING + editStartX;
cursorTileObj.y = (tileHScale + EDIT_PADDING) * y+EDIT_PADDING;
if(mouseDown) {
var clickTile = editMap[x][y];
if(!actTile.id || clickTile.id == actTile.id) {
if(actTile.id) cursorTileObj.alpha = 0.1;
delManCheck(clickTile.id, x, y);
clickTile.tile.getChildAt(1).image = emptyTile.image;
clickTile.id = emptyTile.id;
} else {
delManCheck(clickTile.id, x, y);
clickTile.tile.getChildAt(1).image = actTile.image;
clickTile.id = actTile.id;
addManCheck(actTile.id, x, y);
}
lastDown = {x:x, y:y};
checkEditMapEmpty();
if(testLevelInfo.pass || actTile.id == RUNNER_ID || testLevelInfo.modified == 0) {
testLevelInfo.modified = 1;
testLevelInfo.pass = 0;
setButtonState();
}
}
}
} else {
checkTileMouseOver(mainStage.mouseX, mainStage.mouseY);
checkButtonMouseOver(mainStage.mouseX, mainStage.mouseY);
cursorTileObj.alpha = 0;
}
}
mainStage.update();
}
function levelMapIsEmpty(levelMap)
{
for(i =0; i < levelMap.length; i++) {
if (levelMap[i] != ' ') return 0;
}
return 1;
}
//========================================================
//
// Copy share level to test level or copy map for editig
//
//=========================================================
function copyShareLevelForEditing()
{
getTestLevel(testLevelInfo);
if(testLevelInfo.level <= MAX_EDIT_LEVEL && levelMapIsEmpty(testLevelInfo.levelMap)) {
//test map is empty, replace test map with share level map
testLevelInfo.levelMap = shareLevelData[0];
testLevelInfo.modified = 1;
testLevelInfo.pass = 1;
testLevelInfo.fromPlayData = testLevelInfo.fromLevel = -1;
setTestLevel(testLevelInfo);
} else {
if (shareLevelData[0] != testLevelInfo.levelMap) {
//(testMap != empty and testMap != shareMap) ==> keep shareLevel map to copyMap
copyLevelMap = shareLevelData[0];
copyLevelPassed = 1;
}
}
}
function editShareLevel()
{
editEdit(0, null);
}
================================================
FILE: lodeRunner.gameVerName.js
================================================
var gameVersionName = [ " Classic Lode Runner ", " Championship Lode Runner ", " Professional Lode Runner ", " Revenge of Lode Runner ", " Lode Runner Fan Book " ];
================================================
FILE: lodeRunner.gamepad.js
================================================
var MAX_CONTROLLER = 4;
var gamepadReady = 0;
var gamepadPollingId = null;
var gamepadLastId = -1; //for send to server only
var requestAnimationFrame = window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame;
var cancelRequestAnimationFrame = window.cancelRequestAnimationFrame ||
window.webkitCancelRequestAnimationFrame ||
window.mozCancelRequestAnimationFrame;
function gamepadEnable()
{
if(!gamepadSupport()) return;
window.addEventListener("gamepadconnected",gamepadConnectFun, false);
window.addEventListener("gamepaddisconnected", gamepadDisconnectFun, false);
gamepadPollingId = setInterval(gamepadCheck, 500);
}
function gamepadSupport()
{
return ("getGamepads" in navigator) || ("webkitGetGamepads" in navigator);
}
function gamepadConnectFun(e)
{
//console.log("Gamepad connected at index %d: %s. %d buttons, %d axes.",
// e.gamepad.index, e.gamepad.id,
// e.gamepad.buttons.length, e.gamepad.axes.length);
gamepadReady = 1;
if(gamepadPollingId) {
clearInterval(gamepadPollingId);
gamepadPollingId = null;
}
requestAnimationFrame(gamepadRequestState);
}
function gamepadDisconnectFun(e)
{
console.log("disconnection game port#%d", e.gamepad.index );
gamepadReady = 0;
if(!gamepadPollingId) gamepadPollingId = setInterval(gamepadCheck, 500);
}
function gamepadCheck()
{
gamepad = gamepadGetInstance();
for(var id=0; id < MAX_CONTROLLER; id ++) {
if(gamepad[id]) {
if(!gamepadReady) {
gamepadConnectTrigger(gamepad[id]);
}
}
}
}
function gamepadGetInstance()
{
return ("getGamepads" in navigator) ?
navigator.getGamepads() :
(("webkitGetGamepads" in navigator) ? navigator.webkitGetGamepads() : []);
}
//=================================
// Generate gamepadconnected event
//=================================
function gamepadConnectTrigger(gamepad)
{
var event = document.createEvent('Event');
event.initEvent("gamepadconnected", true, true); //can bubble, and is cancellable
event.gamepad = gamepad;
dispatchEvent(event);
}
function gamepadDisable()
{
if(!gamepadSupport()) return;
window.removeEventListener("gamepadconnected",gamepadConnectFun, false);
window.removeEventListener("gamepaddisconnected", gamepadDisconnectFun, false);
if(gamepadPollingId) {
clearInterval(gamepadPollingId);
gamepadPollingId = null;
}
gamepadReady = 0;
}
function getLastGamepadInfo()
{
var gamepadInfo = null;
if(gamepadLastId >= 0 && gamepadLastId < MAX_CONTROLLER ) {
var gamepad = gamepadGetInstance()[gamepadLastId];
if(gamepad) {
gamepadInfo =gamepad.index + "." + gamepad.id +
(gamepad.mapping != ""?("." +gamepad.mapping):"");
}
}
return gamepadInfo;
}
//===========================================================================
var keyCodeMapping = [
//[[keyCode1, ctrl, shift], [keyCode2, ctrl, shift]
[[KEYCODE_UP, 0, 0], [KEYCODE_UP, 0, 0]], //up
[[KEYCODE_DOWN, 0, 0], [KEYCODE_DOWN, 0, 0]], //down
[[KEYCODE_LEFT, 0, 0], [KEYCODE_LEFT, 0, 0]], //left
[[KEYCODE_RIGHT, 0, 0], [KEYCODE_RIGHT, 0, 0]], //right
[[KEYCODE_Z, 0, 0], [KEYCODE_ENTER, 0, 0]], //dig-left
[[KEYCODE_X, 0, 0], [KEYCODE_ENTER, 0, 0]], //dig-right
[[KEYCODE_ESC, 0, 0], [KEYCODE_ENTER, 0, 0]], //pause
[[KEYCODE_ENTER, 0, 0], [KEYCODE_ENTER, 0, 0]], //enter
[[KEYCODE_A, 1, 0], [KEYCODE_ENTER, 0, 0]] //game abort
];
var gameButtonMapping = [
//index[0] buttonMethod: 0: don't repeat, 1: repeat, 2: combine button
[ 1, ['B', 12],['A', 1, "<", -0.6],['B', 16]], //UP
[ 1, ['B', 13],['A', 1, ">", 0.6],['B', 17]], //DOWN
[ 1, ['B', 14],['A', 0, "<", -0.6],['B', 18]], //LEFT
[ 1, ['B', 15],['A', 0, ">", 0.6],['B', 19]], //RIGHT
[ 1, ['B', 2],['B', 3]], //DIG-LEFT
[ 1, ['B', 1]], //DIG-RIGHT
[ 0, ['B', 8],['B', 11]], //PAUSE (ESC)
[ 0, ['B', 9]], //Enter (Accept)
[ 2, ['B', 4],['B', 5], ['B', 6],['B', 7]] //GAME ABORT (CTRL-A)
];
var lastButtonState = [
[ 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0]
];
function gamepadRequestState()
{
var i, j;
var gamepad, curButtonState;
var buttonMethod;
for(var id=0; id < MAX_CONTROLLER; id ++) {
gamepad = gamepadGetInstance()[id];
curButtonState = [];
if(gamepad) {
for(i = 0; i < gameButtonMapping.length; i++) {
curButtonState[i] = 0;
buttonMethod = gameButtonMapping[i][0];
for(j = 1; j < gameButtonMapping[i].length && !curButtonState[i]; j++) {
var curButtonMapping = gameButtonMapping[i][j];
switch(curButtonMapping[0]) {
case 'A': //axes
var axesId = curButtonMapping[1];
if(gamepad.axes.length > axesId) {
var axesCmpSign = curButtonMapping[2];
var axesCmpValue = curButtonMapping[3];
var axesValue = Math.trunc(gamepad.axes[axesId]*100)/100;
if(typeof axesValue != 'undefined' ) {
if( (axesCmpSign == ">" && axesValue > axesCmpValue && axesValue <= 1.05)
||(axesCmpSign == "<" && axesValue < axesCmpValue && axesValue >= -1.05) )
{
//console.log("axes#%d = %f", axesId, axesValue );
curButtonState[i] = 1;
}
}
}
break;
case 'B': //button
var buttonId = curButtonMapping[1];
var button = gamepad.buttons[buttonId];
if(buttonPressed(button))
curButtonState[i] = 1;
if(buttonMethod == 2) { //combine mode
j++;
if(curButtonState[i]) {
curButtonMapping = gameButtonMapping[i][j];
buttonId = curButtonMapping[1];
button = gamepad.buttons[buttonId];
if(buttonPressed(button)) {
curButtonState[i] = 1;
} else {
curButtonState[i] = 0;
}
}
}
break;
}
}
switch(buttonMethod) {
case 1: //repeat
if(document.onkeydown == handleKeyDown || document.onkeydown == anyKeyDown) {
if(curButtonState[i])sendKeyDown(keyCodeMapping[i], id);
else if(lastButtonState[id][i]) sendKeyUp(keyCodeMapping[i], id);
break;
}
case 0: //don't repeat
case 2:
if(lastButtonState[id][i] != curButtonState[i]) {
if(curButtonState[i])sendKeyDown(keyCodeMapping[i], id);
else if(lastButtonState[id][i]) sendKeyUp(keyCodeMapping[i], id);
}
break;
}
}
lastButtonState[id] = curButtonState;
}
}
if(gamepadReady) requestAnimationFrame(gamepadRequestState);
}
function buttonPressed(button)
{
var pressed = button == 1.0;
if (typeof(button) == "object") {
pressed = button.pressed;
}
return pressed;
}
function gamepadClearId()
{
gamepadLastId = -1;
}
function sendKeyUp(twinKey, id)
{
var key = (inputNameState)? twinKey[1]:twinKey[0];
if(key[0] == null) return;
var event = {keyCode: key[0], ctrlKey: key[1], shiftKey: key[2]};
//console.log("sendKeyUp = %d",keyCode );
if(typeof document.onkeydown == "function" ) document.onkeyup(event);
gamepadLastId = id;
}
function sendKeyDown(twinKey, id)
{
var key = (inputNameState)? twinKey[1]:twinKey[0];
if(key[0] == null) return;
var event = {keyCode: key[0], ctrlKey: key[1], shiftKey: key[2]};
//console.log("sendKeyDown = %d",keyCode );
if(typeof document.onkeydown == "function" ) document.onkeydown(event);
gamepadLastId = id;
}
================================================
FILE: lodeRunner.guard.js
================================================
//=============================================================================
// AI reference book: "玩 Lode Runner 學 C 語言"
// http://www.kingstone.com.tw/book/book_page.asp?kmcode=2014710650538
//=============================================================================
var movePolicy = [ [0, 0, 0, 0, 0, 0], //* move_map is used to find *//
[0, 1, 1, 0, 1, 1], //* wheather to move a enm *//
[1, 1, 1, 1, 1, 1], //* by indexing into it with *//
[1, 2, 1, 1, 2, 1], //* enm_byte + num_enm + *//
[1, 2, 2, 1, 2, 2], //* set_num to get a byte. *//
[2, 2, 2, 2, 2, 2], //* then that byte is checked*//
[2, 2, 3, 2, 2, 3], //* for !=0 and then decrmnt *//
[2, 3, 3, 2, 3, 3], //* for next test until = 0 *//
[3, 3, 3, 3, 3, 3],
[3, 3, 4, 3, 3, 4],
[3, 4, 4, 3, 4, 4],
[4, 4, 4, 4, 4, 4]
];
var moveOffset = 0;
var moveId = 0; //current guard id
var numOfMoveItems = movePolicy[0].length;
//********************************
//initial guard start move value
//********************************
function initGuardVariable()
{
moveOffset = moveId = 0;
}
function moveGuard()
{
var moves;
var curGuard;
var x, y, yOffset;
if(!guardCount) return; //no guard
if( ++moveOffset >= numOfMoveItems ) moveOffset = 0;
moves = movePolicy[guardCount][moveOffset]; // get next moves
while ( moves-- > 0) { // slows guard relative to runner
if(++moveId >= guardCount) moveId = 0;
curGuard = guard[moveId];
if(curGuard.action == ACT_IN_HOLE || curGuard.action == ACT_REBORN) {
continue;
}
guardMoveStep(moveId, bestMove(moveId));
}
}
function guardMoveStep( id, action)
{
var curGuard = guard[id];
var x = curGuard.pos.x;
var xOffset = curGuard.pos.xOffset;
var y = curGuard.pos.y;
var yOffset = curGuard.pos.yOffset;
var curToken, nextToken;
var centerX, centerY;
var curShape, newShape;
var stayCurrPos;
centerX = centerY = ACT_STOP;
curShape = newShape = curGuard.shape;
if(curGuard.action == ACT_CLIMB_OUT && action == ACT_STOP)
curGuard.action = ACT_STOP; //for level 16, 30, guard will stock in hole
switch(action) {
case ACT_UP:
case ACT_DOWN:
case ACT_FALL:
if ( action == ACT_UP ) {
stayCurrPos = ( y <= 0 ||
(nextToken = map[x][y-1].act) == BLOCK_T ||
nextToken == SOLID_T || nextToken == TRAP_T ||
nextToken == GUARD_T);
if( yOffset <= 0 && stayCurrPos)
action = ACT_STOP;
} else { //ACT_DOWN || ACT_FALL
stayCurrPos = ( y >= maxTileY ||
(nextToken = map[x][y+1].act) == BLOCK_T ||
nextToken == SOLID_T || nextToken == GUARD_T);
if( action == ACT_FALL && yOffset < 0 && map[x][y].base == BLOCK_T) {
action = ACT_IN_HOLE;
stayCurrPos = 1;
} else {
if ( yOffset >= 0 && stayCurrPos)
action = ACT_STOP;
}
}
if ( action != ACT_STOP ) {
if ( xOffset > 0)
centerX = ACT_LEFT;
else if ( xOffset < 0)
centerX = ACT_RIGHT;
}
break;
case ACT_LEFT:
case ACT_RIGHT:
if ( action == ACT_LEFT ) {
/* original source code from book
stayCurrPos = ( x <= 0 ||
(nextToken = map[x-1][y].act) == BLOCK_T ||
nextToken == SOLID_T || nextToken == TRAP_T ||
nextToken == GUARD_T);
*/
// change check TRAP_T from base,
// for support level 41==> runner in trap will cause guard move
stayCurrPos = ( x <= 0 ||
(nextToken = map[x-1][y].act) == BLOCK_T ||
nextToken == SOLID_T || nextToken == GUARD_T ||
map[x-1][y].base == TRAP_T);
if (xOffset <= 0 && stayCurrPos)
action = ACT_STOP;
} else { //ACT_RIGHT
/* original source code from book
stayCurrPos = ( x >= maxTileX ||
(nextToken = map[x+1][y].act) == BLOCK_T ||
nextToken == SOLID_T || nextToken == TRAP_T ||
nextToken == GUARD_T);
*/
// change check TRAP_T from base,
// for support level 41==> runner in trap will cause guard move
stayCurrPos = ( x >= maxTileX ||
(nextToken = map[x+1][y].act) == BLOCK_T ||
nextToken == SOLID_T || nextToken == GUARD_T ||
map[x+1][y].base == TRAP_T);
if (xOffset >= 0 && stayCurrPos)
action = ACT_STOP;
}
if ( action != ACT_STOP ) {
if ( yOffset > 0 )
centerY = ACT_UP;
else if ( yOffset < 0)
centerY = ACT_DOWN;
}
break;
}
curToken = map[x][y].base;
if ( action == ACT_UP ) {
yOffset -= yMove;
if(stayCurrPos && yOffset < 0) yOffset = 0; //stay on current position
else if(yOffset < -H2) { //move to y-1 position
if ( curToken == BLOCK_T || curToken == HLADR_T ) curToken = EMPTY_T; //in hole or hide laddr
map[x][y].act = curToken; //runner move to [x][y-1], so set [x][y].act to previous state
y--;
yOffset = tileH + yOffset;
if(map[x][y].act == RUNNER_T) setRunnerDead(); //collision
//map[x][y].act = GUARD_T;
}
if( yOffset <= 0 && yOffset > -yMove) {
dropGold(id); //decrease count
}
newShape = "runUpDn";
}
if ( centerY == ACT_UP ) {
yOffset -= yMove;
if( yOffset < 0) yOffset = 0; //move to center Y
}
if ( action == ACT_DOWN || action == ACT_FALL || action == ACT_IN_HOLE) {
var holdOnBar = 0;
if(curToken == BAR_T) {
if( yOffset < 0) holdOnBar = 1;
else if(action == ACT_DOWN && y < maxTileY && map[x][y+1].act != LADDR_T) {
action = ACT_FALL; //shape fixed: 2014/03/27
}
}
yOffset += yMove;
if(holdOnBar == 1 && yOffset >= 0) {
yOffset = 0; //fall and hold on bar
action = ACT_FALL_BAR;
}
if(stayCurrPos && yOffset > 0 ) yOffset = 0; //stay on current position
else if(yOffset > H2) { //move to y+1 position
if(curToken == BLOCK_T || curToken == HLADR_T) curToken = EMPTY_T; //in hole or hide laddr
map[x][y].act = curToken; //runner move to [x][y+1], so set [x][y].act to previous state
y++;
yOffset = yOffset - tileH;
if(map[x][y].act == RUNNER_T) setRunnerDead(); //collision
//map[x][y].act = GUARD_T;
}
//add condition: AI version >= 3 will decrease drop count while guard fall
if( ((curAiVersion >= 3 && action == ACT_FALL) || action == ACT_DOWN) &&
yOffset >= 0 && yOffset < yMove)
{ //try drop gold
dropGold(id); //decrease count
}
if(action == ACT_IN_HOLE) { //check in hole or still falling
if (yOffset < 0) {
action = ACT_FALL; //still falling
//----------------------------------------------------------------------
//For AI version >= 4, drop gold before guard failing into hole totally
if(curAiVersion >= 4 && curGuard.hasGold > 0) {
if(map[x][y-1].base == EMPTY_T) {
//drop gold above
addGold(x, y-1);
} else
decGold(); //gold disappear
curGuard.hasGold = 0;
guardRemoveRedhat(curGuard); //9/4/2016
}
//----------------------------------------------------------------------
} else { //fall into hole (yOffset MUST = 0)
//----------------------------------------------------------------------
//For AI version < 4, drop gold after guard failing into hole totally
if( curGuard.hasGold > 0 ) {
if(map[x][y-1].base == EMPTY_T) {
//drop gold above
addGold(x, y-1);
} else
decGold(); //gold disappear
}
curGuard.hasGold = 0;
guardRemoveRedhat(curGuard); //9/4/2016
//----------------------------------------------------------------------
if( curShape == "fallRight") newShape = "shakeRight";
else newShape = "shakeLeft";
themeSoundPlay("trap");
shakeTimeStart = recordCount; //for debug
if(curAiVersion < 3) {
curGuard.sprite.on("animationend", function() { climbOut(id); });
} else {
add2GuardShakeQueue(id, newShape);
}
if(playMode == PLAY_CLASSIC || playMode == PLAY_AUTO || playMode == PLAY_DEMO) {
drawScore(SCORE_IN_HOLE);
} else {
//for modem mode & edit mode
//drawGuard(1); //only guard dead need add count
}
}
}
if(action == ACT_DOWN) {
newShape = "runUpDn";
} else { //ACT_FALL or ACT_FALL_BAR
if (action == ACT_FALL_BAR) {
if(curGuard.lastLeftRight == ACT_LEFT) newShape = "barLeft";
else newShape = "barRight";
} else {
if(action == ACT_FALL && curShape != "fallLeft" && curShape != "fallRight") {
if (curGuard.lastLeftRight == ACT_LEFT) newShape = "fallLeft";
else newShape = "fallRight";
}
}
}
}
if ( centerY == ACT_DOWN ) {
yOffset += yMove;
if ( yOffset > 0 ) yOffset = 0; //move to center Y
}
if ( action == ACT_LEFT) {
xOffset -= xMove;
if(stayCurrPos && xOffset < 0) xOffset = 0; //stay on current position
else if ( xOffset < -W2) { //move to x-1 position
if(curToken == BLOCK_T || curToken == HLADR_T) curToken = EMPTY_T; //in hole or hide laddr
map[x][y].act = curToken; //runner move to [x-1][y], so set [x][y].act to previous state
x--;
xOffset = tileW + xOffset;
if(map[x][y].act == RUNNER_T) setRunnerDead(); //collision
//map[x][y].act = GUARD_T;
}
if( xOffset <= 0 && xOffset > -xMove) {
dropGold(id); //try to drop gold
}
if(curToken == BAR_T) newShape = "barLeft";
else newShape = "runLeft";
}
if ( centerX == ACT_LEFT ) {
xOffset -= xMove;
if ( xOffset < 0) xOffset = 0; //move to center X
}
if ( action == ACT_RIGHT ) {
xOffset += xMove;
if(stayCurrPos && xOffset > 0) xOffset = 0; //stay on current position
else if ( xOffset > W2) { //move to x+1 position
if(curToken == BLOCK_T || curToken == HLADR_T) curToken = EMPTY_T; //in hole or hide laddr
map[x][y].act = curToken; //runner move to [x+1][y], so set [x][y].act to previous state
x++;
xOffset = xOffset - tileW;
if(map[x][y].act == RUNNER_T) setRunnerDead(); //collision
//map[x][y].act = GUARD_T;
}
if( xOffset >= 0 && xOffset < xMove) {
dropGold(id);
}
if(curToken == BAR_T) newShape = "barRight";
else newShape = "runRight";
}
if ( centerX == ACT_RIGHT ) {
xOffset += xMove;
if ( xOffset > 0) xOffset = 0; //move to center X
}
//if(curGuard == ACT_CLIMB_OUT) action == ACT_CLIMB_OUT;
if(action == ACT_STOP) {
if(curGuard.action != ACT_STOP){
curGuard.sprite.stop();
if(curGuard.action != ACT_CLIMB_OUT) curGuard.action = ACT_STOP;
}
} else {
if(curGuard.action == ACT_CLIMB_OUT) action = ACT_CLIMB_OUT;
curGuard.sprite.x = (x * tileW + xOffset) * tileScale | 0;
curGuard.sprite.y = (y * tileH + yOffset) * tileScale | 0;
curGuard.pos = { x:x, y:y, xOffset:xOffset, yOffset:yOffset};
if(curShape != newShape) {
curGuard.sprite.gotoAndPlay(newShape);
curGuard.shape = newShape;
}
if(action != curGuard.action){
curGuard.sprite.play();
}
curGuard.action = action;
if(action == ACT_LEFT || action == ACT_RIGHT) curGuard.lastLeftRight = action;
}
map[x][y].act = GUARD_T;
// Check to get gold and carry
if(map[x][y].base == GOLD_T && curGuard.hasGold == 0 &&
((!xOffset && yOffset >= 0 && yOffset < H4) ||
(!yOffset && xOffset >= 0 && xOffset < W4) ||
(y < maxTileY && map[x][y+1].base == LADDR_T && yOffset < H4) // gold above laddr
)
)
{
//curGuard.hasGold = ((Math.random()*26)+14)|0; //14 - 39
curGuard.hasGold = ((Math.random()*26)+12)|0; //12 - 37 change gold drop steps
guardWearRedhat(curGuard); //9/4/2016
if(playMode == PLAY_AUTO || playMode == PLAY_DEMO || playMode == PLAY_DEMO_ONCE) getDemoGold(curGuard);
if(recordMode) processRecordGold(curGuard);
removeGold(x, y);
//debug ("get, (x,y) = " + x + "," + y + ", offset = " + xOffset);
}
//check collision again
//checkCollision(runner.pos.x, runner.pos.y);
}
//meanings: guard with gold
function guardWearRedhat(guard)
{
if(redhatMode) guard.sprite.spriteSheet = redhatData;
}
//meanings: guard without gold
function guardRemoveRedhat(guard)
{
if(redhatMode) guard.sprite.spriteSheet = guardData;
}
function dropGold(id)
{
var curGuard = guard[id];
var nextToken;
var drop = 0;
switch (true) {
case (curGuard.hasGold > 1):
curGuard.hasGold--; // count > 1, don't drop it only decrease count
//loadingTxt.text = "(" + id + ") = " + curGuard.hasGold;
break;
case (curGuard.hasGold == 1): //drop gold
var x = curGuard.pos.x, y = curGuard.pos.y;
if(map[x][y].base == EMPTY_T && ( y >= maxTileY ||
((nextToken = map[x][y+1].base) == BLOCK_T ||
nextToken == SOLID_T || nextToken == LADDR_T) )
) {
addGold(x,y);
curGuard.hasGold = -1; //for record play action always use value = -1
//curGuard.hasGold = -(((Math.random()*10)+1)|0); //-1 ~ -10; //waiting time for get gold
guardRemoveRedhat(curGuard); //9/4/2016
drop = 1;
}
break;
case (curGuard.hasGold < 0):
curGuard.hasGold++; //wait, don't get gold till count = 0
//loadingTxt.text = "(" + id + ") = " + curGuard.hasGold;
break;
}
return drop;
}
//=============================================
// BEGIN NEW SHAKE METHOD for AI version >= 3
//=============================================
var DEBUG_TIME = 0;
var shakeRight = [ 8, 9, 10, 9, 10, 8 ];
var shakeLeft = [ 30, 31, 32, 31, 32, 30 ];
var shakeTime = [ 36, 3, 3, 3, 3, 3 ];
var shakingGuardList = [];
function initStillFrameVariable()
{
initGuardShakeVariable();
initFillHoleVariable();
initRebornVariable();
}
function initGuardShakeVariable()
{
shakingGuardList = [];
//-------------------------------------------------------------------------
// Shake time extension when guard in hole,
// so the runner can dig three hold for three guards and pass through them.
// The behavior almost same as original lode runner (APPLE-II version).
// 2016/06/04
//-------------------------------------------------------------------------
if(curAiVersion <= 3) shakeTime = [ 36, 3, 3, 3, 3, 3 ]; //for AI VERSION = 3
else shakeTime = [ 51, 3, 3, 3, 3, 3 ]; //for AI VERSION > 3
}
function add2GuardShakeQueue(id, shape)
{
var curGuard = guard[id];
if(shape == "shakeRight") {
curGuard.shapeFrame = shakeRight;
} else {
curGuard.shapeFrame = shakeLeft;
}
curGuard.curFrameIdx = 0;
curGuard.curFrameTime = -1; //for init
shakingGuardList.push(id);
//error("push id =" + id + "(" + shakingGuardList + ")" );
}
function processGuardShake()
{
var curGuard, curIdx;
for(var i = 0; i < shakingGuardList.length;) {
curGuard = guard[shakingGuardList[i]];
curIdx = curGuard.curFrameIdx;
if( curGuard.curFrameTime < 0) { //start shake => set still frame
curGuard.curFrameTime = 0;
curGuard.sprite.gotoAndStop(curGuard.shapeFrame[curIdx]);
} else {
if(++curGuard.curFrameTime >= shakeTime[curIdx]) {
if(++curGuard.curFrameIdx < curGuard.shapeFrame.length) {
//change frame
curGuard.curFrameTime = 0;
curGuard.sprite.gotoAndStop(curGuard.shapeFrame[curGuard.curFrameIdx]);
} else {
//shake time out
var id = shakingGuardList[i];
shakingGuardList.splice(i, 1); //remove from list
//error("remove id =" + id + "(" + shakingGuardList + ")" );
climbOut(id); //climb out
continue;
}
}
}
i++;
}
}
function removeFromShake(id)
{
for(var i = 0; i < shakingGuardList.length;i++) {
if(shakingGuardList[i] == id) {
shakingGuardList.splice(i, 1); //remove from list
//error("remove id =" + id + "(" + shakingGuardList + ")" );
return;
}
}
error("design error id =" + id + "(" + shakingGuardList + ")" );
}
//======================
// END NEW SHAKE METHOD
//======================
function climbOut(id)
{
var curGuard = guard[id]
curGuard.action = ACT_CLIMB_OUT;
curGuard.sprite.removeAllEventListeners ("animationend");
curGuard.sprite.gotoAndPlay("runUpDn");
curGuard.shape = "runUpDn";
cu
gitextract_wygbf6yf/
├── README.md
├── cursor/
│ ├── closedhand.cur
│ └── openhand.cur
├── flag32Id.js
├── lodeRunner.colorSelector.js
├── lodeRunner.colorTheme.js
├── lodeRunner.def.js
├── lodeRunner.demo.js
├── lodeRunner.demoData1.js
├── lodeRunner.demoData2.js
├── lodeRunner.edit.js
├── lodeRunner.gameVerName.js
├── lodeRunner.gamepad.js
├── lodeRunner.guard.js
├── lodeRunner.hiscore.js
├── lodeRunner.html
├── lodeRunner.iconClass.js
├── lodeRunner.info.js
├── lodeRunner.key.js
├── lodeRunner.main.js
├── lodeRunner.menu.js
├── lodeRunner.misc.js
├── lodeRunner.preload.js
├── lodeRunner.runner.js
├── lodeRunner.share.js
├── lodeRunner.storage.js
├── lodeRunner.v.championship.js
├── lodeRunner.v.classic.js
├── lodeRunner.v.fanBookMod.js
├── lodeRunner.v.professional.js
├── lodeRunner.v.revenge.js
├── lodeRunner.wData.js
├── lodeRunner.win.js
├── sound/
│ ├── Theme/
│ │ ├── APPLE2/
│ │ │ ├── born.ogg
│ │ │ ├── dead.ogg
│ │ │ ├── dig.ogg
│ │ │ ├── down.ogg
│ │ │ ├── fall.ogg
│ │ │ ├── getGold.ogg
│ │ │ ├── pass.ogg
│ │ │ └── trap.ogg
│ │ ├── C64/
│ │ │ ├── born.ogg
│ │ │ ├── dead.ogg
│ │ │ ├── dig.ogg
│ │ │ ├── down.ogg
│ │ │ ├── fall.ogg
│ │ │ ├── fall.org.ogg
│ │ │ ├── getGold.ogg
│ │ │ ├── goldFinish1.ogg
│ │ │ ├── goldFinish2.ogg
│ │ │ ├── goldFinish3.ogg
│ │ │ ├── goldFinish4.ogg
│ │ │ ├── goldFinish5.ogg
│ │ │ ├── goldFinish6.ogg
│ │ │ ├── pass.ogg
│ │ │ └── trap.ogg
│ │ ├── fallSound-C64.js
│ │ └── goldFinish-C64.sid
│ ├── beep.ogg
│ ├── ending/
│ │ └── win.ogg
│ ├── ending.ogg
│ ├── goldFinish.ogg
│ ├── scoreBell.ogg
│ ├── scoreCount.ogg
│ └── scoreEnding.ogg
└── tools/
├── LodeRunnerDiskParser.cpp
├── apple2.dsk/
│ ├── Lode Runner Fan Book (4 Levels).do
│ ├── Lode_Runner_Apple-II.dsk
│ ├── Lode_Runner_Championship _Apple-II.dsk
│ ├── MYLODE.DSK
│ └── Revenge_of_Lode_Runner.dsk
├── c64.dsk/
│ ├── Atlantis Lode Runner (19xx)(-)[cr TBC].d64
│ ├── Extended Championship Lode Runner (1985)(Doug Smith & Dane Bigham)[cr The A-Team].d64
│ ├── LODERUN1.D64
│ ├── LODERUN2.D64
│ ├── LODERUN4.D64
│ ├── LODERUN5.D64
│ ├── LODERUN_CHAMP(FF).D64
│ ├── Lode Runner (1983)(Broderbund).d64
│ ├── LodeRunner[amg].fix.d64
│ ├── PROFLODE.D64
│ ├── PROLODER.D64
│ ├── Professional Lode Runner (1985)(Dodosoft).d64
│ ├── Professional Lode Runner (1985)(Dodosoft).fixed.d64
│ └── loderunner[amg].d64
├── cmpDate.cpp
└── pzlDiskParser.cpp
SYMBOL INDEX (411 symbols across 21 files) FILE: lodeRunner.colorSelector.js function colorSelectorClass (line 1) | function colorSelectorClass(_screenX1, _screenY1, baseX) FILE: lodeRunner.colorTheme.js function createBaseBitmapInstance (line 32) | function createBaseBitmapInstance() function createThemeBaseBitmap (line 45) | function createThemeBaseBitmap(themeName, newColor, id) function getThemeBitmap (line 57) | function getThemeBitmap(name) function getThemeImage (line 64) | function getThemeImage(name) function getThemeTileColor (line 69) | function getThemeTileColor(id) function getCurColorId (line 78) | function getCurColorId() function getOrgImageColor (line 83) | function getOrgImageColor(themeName) function createBitmap (line 106) | function createBitmap(imageName, oldColor, newColor) function changeBitmapColor (line 117) | function changeBitmapColor(bitmap, oldColor, newColor) function changeColor (line 137) | function changeColor(canvas, oldColor, newColor) function themeColorChange (line 167) | function themeColorChange(id) function hexToRGB (line 190) | function hexToRGB(hex) function rgbToHex (line 200) | function rgbToHex(rgb) FILE: lodeRunner.demo.js function initAutoDemoRnd (line 9) | function initAutoDemoRnd() function getAutoDemoLevel (line 17) | function getAutoDemoLevel(initValue) function enableAutoDemoTimer (line 45) | function enableAutoDemoTimer() function disableAutoDemoTimer (line 51) | function disableAutoDemoTimer() function countAutoDemoTimer (line 56) | function countAutoDemoTimer() function initPlayDemo (line 73) | function initPlayDemo() function playDemo (line 86) | function playDemo() function getDemoGold (line 98) | function getDemoGold(guard) function getDemoBornPos (line 103) | function getDemoBornPos() function initDemoData (line 121) | function initDemoData() function setDemoData (line 130) | function setDemoData(jsonTxt) function initDemoInfo (line 144) | function initDemoInfo() function getDemoOnceInfo (line 161) | function getDemoOnceInfo() //for demo once function getDemoInfo (line 168) | function getDemoInfo() function setDemoInfo (line 191) | function setDemoInfo() function getValidDemoLevel (line 203) | function getValidDemoLevel() function getNextDemoLevel (line 210) | function getNextDemoLevel() function curDemoLevelIsVaild (line 217) | function curDemoLevelIsVaild() function updatePlayerDemoData (line 223) | function updatePlayerDemoData(playData, demoDataInfo) function respUpdatePlayerDemoData (line 247) | function respUpdatePlayerDemoData(jsonTxt) function initRecordVariable (line 278) | function initRecordVariable() function saveKeyCode (line 301) | function saveKeyCode(code, keyAction) function recordModeDump (line 314) | function recordModeDump(state) function recordModeToggle (line 322) | function recordModeToggle(state) function processRecordKey (line 330) | function processRecordKey() function recordKeyAction (line 343) | function recordKeyAction() function recordKeyAction1 (line 350) | function recordKeyAction1() function recordKeyAction2 (line 363) | function recordKeyAction2() function recordPlayDemo (line 387) | function recordPlayDemo() function processRecordGold (line 398) | function processRecordGold(guard) function saveRecordBornPos (line 411) | function saveRecordBornPos(x, y) function getRecordBornPos (line 416) | function getRecordBornPos() function recordPlayTime (line 426) | function recordPlayTime(state) function remapActionKey (line 445) | function remapActionKey() function convertBornPos (line 457) | function convertBornPos() function dumpRecord (line 475) | function dumpRecord() FILE: lodeRunner.edit.js function startEditMode (line 55) | function startEditMode() function setEditSelectMenu (line 80) | function setEditSelectMenu() function canvasEditReSize (line 86) | function canvasEditReSize() function createBaseTile (line 133) | function createBaseTile() function createEditMap (line 143) | function createEditMap() function clearEditMap (line 205) | function clearEditMap() function tile2Id (line 218) | function tile2Id(tileChar) function setCanvasBackground (line 227) | function setCanvasBackground() function setEditBackground (line 236) | function setEditBackground(startX, startY, width, height) function drawEditBlock (line 244) | function drawEditBlock(startX, startY, width, height) function drawEditGround (line 261) | function drawEditGround() function addSelectIcon (line 275) | function addSelectIcon() function addCursorTile (line 287) | function addCursorTile() function startEditTicker (line 305) | function startEditTicker() function stopEditTicker (line 313) | function stopEditTicker() function drawSelectIcon (line 323) | function drawSelectIcon(id, x, y) function selectTileClick (line 365) | function selectTileClick() function drawEditLevel (line 381) | function drawEditLevel() function drawEditLevelNo (line 393) | function drawEditLevelNo() function addEditorButton (line 403) | function addEditorButton() function drawNewButton (line 416) | function drawNewButton() function drawLoadButton (line 482) | function drawLoadButton() function drawTestButton (line 594) | function drawTestButton() function drawSaveButton (line 635) | function drawSaveButton() function startTestMode (line 708) | function startTestMode() function saveTestState (line 723) | function saveTestState() function back2EditMode (line 729) | function back2EditMode(rc) function getTestLevelMap (line 741) | function getTestLevelMap(initValue) function enableTestButton (line 746) | function enableTestButton() function editLevelModified (line 752) | function editLevelModified() function editConfirmAbortState (line 757) | function editConfirmAbortState(callbackFun) function disableTestButton (line 765) | function disableTestButton() function clearUserLevelScore (line 771) | function clearUserLevelScore() function delUserLevelScore (line 779) | function delUserLevelScore(level) function saveEditLevel (line 788) | function saveEditLevel() function stageMouseDown (line 801) | function stageMouseDown(event) function stageMouseUp (line 816) | function stageMouseUp(event) function initMapInfo (line 832) | function initMapInfo() function addManCheck (line 841) | function addManCheck(id, x, y) function delManCheck (line 876) | function delManCheck(id, x, y) function editSelectMenuClose (line 911) | function editSelectMenuClose(levelDeleted, newLevel, state) function editSelectLevel (line 946) | function editSelectLevel(level) function map2LevelData (line 955) | function map2LevelData() function checkEditMapEmpty (line 967) | function checkEditMapEmpty() function setPasteIconState (line 983) | function setPasteIconState() function copyEditingMap (line 991) | function copyEditingMap() function editWarningMsg (line 1007) | function editWarningMsg(hidden) function editHandleKeyDown (line 1030) | function editHandleKeyDown(event) function editPasteMap (line 1053) | function editPasteMap() function checkTileMouseOver (line 1066) | function checkTileMouseOver(x, y) function selectTileMouseOver (line 1083) | function selectTileMouseOver(tile) function selectTileMouseOut (line 1093) | function selectTileMouseOut(tile) function checkButtonMouseOver (line 1104) | function checkButtonMouseOver(x, y) function editorButtonMouseOver (line 1121) | function editorButtonMouseOver(button) function editorButtonMouseOut (line 1137) | function editorButtonMouseOut(button) function setButtonState (line 1152) | function setButtonState() function editTick (line 1180) | function editTick() function levelMapIsEmpty (line 1231) | function levelMapIsEmpty(levelMap) function copyShareLevelForEditing (line 1244) | function copyShareLevelForEditing() function editShareLevel (line 1265) | function editShareLevel() FILE: lodeRunner.gamepad.js function gamepadEnable (line 15) | function gamepadEnable() function gamepadSupport (line 24) | function gamepadSupport() function gamepadConnectFun (line 29) | function gamepadConnectFun(e) function gamepadDisconnectFun (line 42) | function gamepadDisconnectFun(e) function gamepadCheck (line 49) | function gamepadCheck() function gamepadGetInstance (line 61) | function gamepadGetInstance() function gamepadConnectTrigger (line 71) | function gamepadConnectTrigger(gamepad) function gamepadDisable (line 79) | function gamepadDisable() function getLastGamepadInfo (line 92) | function getLastGamepadInfo() function gamepadRequestState (line 143) | function gamepadRequestState() function buttonPressed (line 219) | function buttonPressed(button) function gamepadClearId (line 230) | function gamepadClearId() function sendKeyUp (line 235) | function sendKeyUp(twinKey, id) function sendKeyDown (line 246) | function sendKeyDown(twinKey, id) FILE: lodeRunner.guard.js function initGuardVariable (line 28) | function initGuardVariable() function moveGuard (line 33) | function moveGuard() function guardMoveStep (line 56) | function guardMoveStep( id, action) function guardWearRedhat (line 376) | function guardWearRedhat(guard) function guardRemoveRedhat (line 382) | function guardRemoveRedhat(guard) function dropGold (line 387) | function dropGold(id) function initStillFrameVariable (line 431) | function initStillFrameVariable() function initGuardShakeVariable (line 438) | function initGuardShakeVariable() function add2GuardShakeQueue (line 452) | function add2GuardShakeQueue(id, shape) function processGuardShake (line 470) | function processGuardShake() function removeFromShake (line 502) | function removeFromShake(id) function climbOut (line 518) | function climbOut(id) function bestMove (line 531) | function bestMove(id) function scanFloor (line 631) | function scanFloor(id) function scanDown (line 719) | function scanDown(x, curPath ) function scanUp (line 776) | function scanUp( x, curPath ) function initRnd (line 827) | function initRnd() function getGuardId (line 833) | function getGuardId(x, y) function guardReborn (line 845) | function guardReborn(x, y) function rebornComplete (line 901) | function rebornComplete(id) function setRunnerDead (line 918) | function setRunnerDead() function initRebornVariable (line 931) | function initRebornVariable() function add2RebornQueue (line 936) | function add2RebornQueue(id) function processReborn (line 947) | function processReborn() FILE: lodeRunner.hiscore.js function showScoreTable (line 3) | function showScoreTable(_playData, _curScoreInfo, _callbackFun, _waitTime) function inputPlayerName (line 379) | function inputPlayerName(_stage, _callbackFun) function vaildPlayerName (line 437) | function vaildPlayerName(playerArray) function inputString (line 458) | function inputString(_stage, _maxSize, _startX, _startY, _defaultString,... FILE: lodeRunner.iconClass.js function mainMenuIconClass (line 4) | function mainMenuIconClass( _screenX1, _screenY1, _scale, _mainMenuBitmap) function selectIconClass (line 154) | function selectIconClass( _screenX1, _screenY1, _scale, _bitmap) function demoIconClass (line 342) | function demoIconClass( _screenX1, _screenY1, _scale, _bitmap) function soundIconClass (line 495) | function soundIconClass( _screenX1, _screenY1, _scale, _soundOnBitmap, _... function repeatActionIconClass (line 644) | function repeatActionIconClass( _screenX1, _screenY1, _scale, _repeatAct... function infoIconClass (line 781) | function infoIconClass( _screenX1, _screenY1, _scale, _bitmap) function helpIconClass (line 933) | function helpIconClass( _screenX1, _screenY1, _scale, _bitmap) function themeIconClass (line 1086) | function themeIconClass( _screenX1, _screenY1, _scale, _themeBitmapApple... function themeColorIconUpdate (line 1245) | function themeColorIconUpdate() function pasteIconClass (line 1251) | function pasteIconClass( _screenX1, _screenY1, _scale, _bitmap) function changeThemeScreen (line 1380) | function changeThemeScreen() function rebuildMap (line 1411) | function rebuildMap() function clearGround (line 1454) | function clearGround() function clearInfo (line 1460) | function clearInfo() FILE: lodeRunner.info.js function createDemoInfo (line 80) | function createDemoInfo() function infoMenu (line 101) | function infoMenu(callbackFun, args) function infoMenuClass (line 133) | function infoMenuClass(_stage, _scale) FILE: lodeRunner.key.js function pressShiftKey (line 5) | function pressShiftKey(code) function pressCtrlKey (line 36) | function pressCtrlKey(code) function debugKeyPress (line 94) | function debugKeyPress(code) function initHotKeyVariable (line 138) | function initHotKeyVariable() function toggleRepeatAction (line 145) | function toggleRepeatAction() function toggleGamepadMode (line 157) | function toggleGamepadMode(textMsg) function toggleRedhatMode (line 174) | function toggleRedhatMode() function toggleGodMode (line 193) | function toggleGodMode() function setSpeed (line 206) | function setSpeed(v) function helpCallBack (line 215) | function helpCallBack() //help complete call back function pressKey (line 220) | function pressKey(code) function gameResume (line 284) | function gameResume() function gamePause (line 291) | function gamePause() function handleKeyDown (line 299) | function handleKeyDown(event) function handleKeyUp (line 328) | function handleKeyUp(event) FILE: lodeRunner.main.js function init (line 64) | function init() function loadStoreVariable (line 86) | function loadStoreVariable() function canvasReSize (line 99) | function canvasReSize() function createStage (line 144) | function createStage() function setBackground (line 155) | function setBackground() function showCoverPage (line 164) | function showCoverPage() function clearIdleDemoTimer (line 179) | function clearIdleDemoTimer() function waitIdleDemo (line 185) | function waitIdleDemo(maxIdleTime) function anyKeyStopDemo (line 192) | function anyKeyStopDemo() function stopDemoAndPlay (line 198) | function stopDemoAndPlay() function enableStageClickEvent (line 219) | function enableStageClickEvent() function disableStageClickEvent (line 228) | function disableStageClickEvent() function noKeyDown (line 240) | function noKeyDown() function anyKeyDown (line 245) | function anyKeyDown() function checkIdleTime (line 250) | function checkIdleTime(maxIdleTime) function getLastPlayInfo (line 265) | function getLastPlayInfo() function selectGame (line 284) | function selectGame(showDataMsg) function startPlayTicker (line 296) | function startPlayTicker() function stopPlayTicker (line 308) | function stopPlayTicker() function startGame (line 316) | function startGame(noCycle) function initVariable (line 369) | function initVariable() function buildLevelMap (line 389) | function buildLevelMap(levelMap) function moveSprite2Top (line 501) | function moveSprite2Top() function buildGroundInfo (line 522) | function buildGroundInfo() function drawGround (line 529) | function drawGround() function initModernVariable (line 558) | function initModernVariable() function initInfoVariable (line 564) | function initInfoVariable() function drawInfo (line 589) | function drawInfo() function drawScoreTxt (line 623) | function drawScoreTxt() function drawLifeTxt (line 628) | function drawLifeTxt() function drawLevelTxt (line 633) | function drawLevelTxt() function drawDemoTxt (line 641) | function drawDemoTxt() function drawGoldTxt (line 647) | function drawGoldTxt() function drawGuardTxt (line 652) | function drawGuardTxt() function drawTimeTxt (line 657) | function drawTimeTxt() function drawScore (line 663) | function drawScore(addScore) function drawLife (line 674) | function drawLife() function drawLevel (line 682) | function drawLevel() function drawGold (line 698) | function drawGold(addGold) function drawGuard (line 707) | function drawGuard(addGuard) function countTime (line 718) | function countTime(addTime) function drawTime (line 725) | function drawTime(addTime) function setGroundInfoOrder (line 734) | function setGroundInfoOrder() function drawText (line 765) | function drawText(x, y, str, parentObj, numberType) function playGame (line 817) | function playGame(deltaS) function showLevel (line 846) | function showLevel(levelMap) function showTipsText (line 864) | function showTipsText(text, time, text1) function toggleTrapTile (line 943) | function toggleTrapTile() function startAllSpriteObj (line 967) | function startAllSpriteObj() function stopAllSpriteObj (line 987) | function stopAllSpriteObj() function gameOverAnimation (line 1012) | function gameOverAnimation() function initCycVariable (line 1067) | function initCycVariable() function addCycScreen (line 1075) | function addCycScreen() function removeCycScreen (line 1083) | function removeCycScreen() function newLevel (line 1088) | function newLevel(r) function closingScreen (line 1098) | function closingScreen(r) function menuIconEnable (line 1129) | function menuIconEnable() function menuIconDisable (line 1149) | function menuIconDisable(hidden) function initShowDataMsg (line 1165) | function initShowDataMsg(showMsg) function showDataMsg (line 1171) | function showDataMsg() function showHelpMenu (line 1204) | function showHelpMenu() function initForPlay (line 1214) | function initForPlay() function openingScreen (line 1220) | function openingScreen(r) function beginPlay (line 1237) | function beginPlay() function incLevel (line 1263) | function incLevel(incValue, passed) function decLevel (line 1274) | function decLevel(decValue) function updateModernScoreInfo (line 1283) | function updateModernScoreInfo() function gameFinishActiveNew (line 1298) | function gameFinishActiveNew(level) function gameFinishCloseIcon (line 1305) | function gameFinishCloseIcon() function gameFinishCallback (line 1310) | function gameFinishCallback(selectMode) function gameFinishTestModeCallback (line 1330) | function gameFinishTestModeCallback() function mainTick (line 1338) | function mainTick(event) FILE: lodeRunner.menu.js function saveKeyHandler (line 1) | function saveKeyHandler(newHandler) function restoreKeyHandler (line 12) | function restoreKeyHandler(stateObj) function helpMenuClass (line 18) | function helpMenuClass(_stage, _bitmap, _editBitmap, _scale) function closeIconClass (line 209) | function closeIconClass(_width, _height, _stage, _scale, _activeColor, _... function selectDialog (line 340) | function selectDialog(_titleName, _checkBitmap, _levelData, _activeLevel... function handleMenuKeyDown (line 1310) | function handleMenuKeyDown(event) function menuDialog (line 1338) | function menuDialog(_titleName, _itemList, _stage, _scale, _closeIconEna... function mainMenuClose (line 1599) | function mainMenuClose(callbackFun) function getCustomItemInfo (line 1620) | function getCustomItemInfo(withLevel) function initMenuVariable (line 1633) | function initMenuVariable() function getPlayVerData (line 1651) | function getPlayVerData(id) function getPlayVerInfo (line 1661) | function getPlayVerInfo(id) function defaultLevelData (line 1671) | function defaultLevelData() function menuIdToPlayData (line 1676) | function menuIdToPlayData(menuId) function playDataToTitleName (line 1687) | function playDataToTitleName(verId) function mainMenu (line 1699) | function mainMenu(callbackFun) function gameVersionMenu (line 1705) | function gameVersionMenu(id, callbackFun) function playData2GameVersionMenuId (line 1712) | function playData2GameVersionMenuId() function addMenuItem (line 1734) | function addMenuItem(menuList, addItemObj, addPosition) function gameMenu (line 1743) | function gameMenu(callbackFun) function subGameMenu (line 1810) | function subGameMenu(id, callbackFun) function subEditMenu (line 1825) | function subEditMenu(id, callbackFun) function classicPlay (line 1832) | function classicPlay(id, callbackFun) function modernPlay (line 1850) | function modernPlay(id, callbackFun) function demoPlay (line 1866) | function demoPlay(id, callbackFun) function editPlay (line 1883) | function editPlay(id, callbackFun) function editEdit (line 1906) | function editEdit(id, callbackFun) function helpMenu (line 1921) | function helpMenu(callbackFun) function activeSelectMenu (line 1933) | function activeSelectMenu(activeFun, postFun) function levelPassDialog (line 1952) | function levelPassDialog(_level, _getGold, _guardDead, _time, _hiScore, function yesNoDialog (line 2338) | function yesNoDialog(_txtMsg, _yesBitmap, _noBitmap, _stage, _scale, _ca... function backupDialog (line 2539) | function backupDialog(id, _callBackFun) function restoreDialog (line 2801) | function restoreDialog(id, _callBackFun) FILE: lodeRunner.misc.js function debug (line 7) | function debug(string) function assert (line 12) | function assert(expression, msg) function error (line 17) | function error(string) function getScreenSize (line 22) | function getScreenSize() function showTipsMsg (line 50) | function showTipsMsg(_tipsTxt, _stage, _scale, _tipsTxt1) function moveChild2Top (line 91) | function moveChild2Top(stage, obj) function themeSoundPlay (line 101) | function themeSoundPlay(name) function soundDisable (line 106) | function soundDisable() function soundPlay (line 113) | function soundPlay(name) function soundStop (line 125) | function soundStop(name) function soundPause (line 134) | function soundPause(name) function soundResume (line 145) | function soundResume(name) function phpTimeZone (line 159) | function phpTimeZone() function getLocalTime (line 178) | function getLocalTime(d) function getLocalTimeZone (line 189) | function getLocalTimeZone(d) function rangeRandom (line 205) | function rangeRandom(minValue, maxValue, seedValue) function getDemoData (line 275) | function getDemoData(playData) function resumeAudioContext (line 306) | function resumeAudioContext() FILE: lodeRunner.preload.js function showLoadingPage (line 38) | function showLoadingPage() function createRunnerSpriteSheet (line 93) | function createRunnerSpriteSheet(runnerImage) function preloadResource (line 143) | function preloadResource() function createSoundInstance (line 444) | function createSoundInstance() function setSpeedByAiVersion (line 466) | function setSpeedByAiVersion() function themeDataReset (line 496) | function themeDataReset(resetAll) function createSpriteSheet (line 502) | function createSpriteSheet() function createPreloadSpriteSheet (line 510) | function createPreloadSpriteSheet() function createGuardObj (line 589) | function createGuardObj(imageName) function createHoleObj (line 643) | function createHoleObj() function createFlagSpriteSheet (line 659) | function createFlagSpriteSheet() FILE: lodeRunner.runner.js function moveRunner (line 8) | function moveRunner() function runnerMoveStep (line 117) | function runnerMoveStep(action, stayCurrPos ) function decGold (line 327) | function decGold() function removeGold (line 338) | function removeGold(x,y) function addGold (line 345) | function addGold(x, y) function showHideLaddr (line 357) | function showHideLaddr() function checkCollision (line 374) | function checkCollision(runnerX, runnerY) function ok2Dig (line 425) | function ok2Dig(nextMove) function processDigHole (line 459) | function processDigHole() function digHole (line 477) | function digHole(action) function isDigging (line 523) | function isDigging() function stopDigging (line 565) | function stopDigging(x,y) function digComplete (line 595) | function digComplete() function fillHole (line 611) | function fillHole(x, y) function moveFillHoleObj2Top (line 632) | function moveFillHoleObj2Top() function fillComplete (line 639) | function fillComplete(evt, data) function removeFillHoleObj (line 681) | function removeFillHoleObj(spriteObj) function initFillHoleVariable (line 699) | function initFillHoleVariable() function processFillHole (line 704) | function processFillHole() function guardAlive (line 735) | function guardAlive(x, y) FILE: lodeRunner.share.js function getQueryStringParameterValue (line 23) | function getQueryStringParameterValue(queryString, parameterName) function getShareChecksum (line 38) | function getShareChecksum(strData) function getShareVerInfo (line 47) | function getShareVerInfo(encUrlVerData) function getShareUrlInfo (line 83) | function getShareUrlInfo() function converLevel2ShareUrl (line 127) | function converLevel2ShareUrl(level, shareMode, creator) function value2OutValue (line 150) | function value2OutValue(value) function appendZipTile (line 162) | function appendZipTile(tileType, tileCount) function zipLevelMap (line 185) | function zipLevelMap(level) function unzipLevelMap (line 218) | function unzipLevelMap(zipLevel) function backupCustomLevelData (line 306) | function backupCustomLevelData(date) FILE: lodeRunner.storage.js function setLastPlayMode (line 8) | function setLastPlayMode() function initClassicInfo (line 16) | function initClassicInfo() function base64Decode (line 25) | function base64Decode(str) function getClassicInfo (line 39) | function getClassicInfo() function setClassicInfo (line 94) | function setClassicInfo(passed) function clearClassicInfo (line 111) | function clearClassicInfo() function getModernInfo (line 116) | function getModernInfo() function setModernInfo (line 155) | function setModernInfo() function clearModernInfo (line 173) | function clearModernInfo() function getModernScoreInfo (line 188) | function getModernScoreInfo() function setModernScoreInfo (line 216) | function setModernScoreInfo() function getFirstPlayInfo (line 233) | function getFirstPlayInfo() function setFirstPlayInfo (line 244) | function setFirstPlayInfo() function delEditLevel (line 255) | function delEditLevel(level) function addEditLevel (line 278) | function addEditLevel(levelMap) function setEditLevel (line 287) | function setEditLevel(level, levelMap) function initEditLevelInfo (line 293) | function initEditLevelInfo() function getEditLevelInfo (line 302) | function getEditLevelInfo() function setEditLevelInfo (line 337) | function setEditLevelInfo() function clearEditLevelInfo (line 345) | function clearEditLevelInfo() function initNewLevelInfo (line 350) | function initNewLevelInfo(testInfo) function compareWithExist (line 362) | function compareWithExist(existLevelMap, testLevelMap) function getTestLevel (line 370) | function getTestLevel(testInfo) function setTestLevel (line 429) | function setTestLevel(testInfo) function clearTestLevel (line 442) | function clearTestLevel() function createUserDefaultLevel (line 447) | function createUserDefaultLevel() function getRepeatAction (line 473) | function getRepeatAction() function setRepeatAction (line 482) | function setRepeatAction() function getGamepadMode (line 490) | function getGamepadMode() function setGamepadMode (line 500) | function setGamepadMode() function getThemeColor (line 508) | function getThemeColor() function setThemeColor (line 524) | function setThemeColor() function getThemeMode (line 532) | function getThemeMode() function setThemeMode (line 541) | function setThemeMode(themeName) function getPlayerName (line 549) | function getPlayerName() function setPlayerName (line 558) | function setPlayerName(name) function getUid (line 566) | function getUid() function setUid (line 575) | function setUid(uid) function genUserLevel (line 583) | function genUserLevel(levels) function setStorage (line 620) | function setStorage(key, value) function getStorage (line 627) | function getStorage(key) function clearStorage (line 636) | function clearStorage(key) FILE: lodeRunner.win.js function loadEndingMusic (line 2) | function loadEndingMusic() function endingMusicPlay (line 16) | function endingMusicPlay() function endingMusicStop (line 21) | function endingMusicStop() FILE: tools/LodeRunnerDiskParser.cpp function allZero (line 198) | int allZero(unsigned char *levelData) function goodLevel (line 208) | int goodLevel(unsigned char *levelData) function dumpTitle (line 235) | void dumpTitle(void) function dumpLevel (line 247) | void dumpLevel(int level, unsigned char *levelData) function dumpLevel4JavaScript (line 266) | void dumpLevel4JavaScript(int level, unsigned char *levelData) FILE: tools/cmpDate.cpp function main (line 18) | int main ( int argc, char *argv[]) FILE: tools/pzlDiskParser.cpp function checkHead (line 60) | int checkHead(FILE *fp) function pzlDecompress (line 78) | int pzlDecompress(BYTE *pzlCompBuf, int pzlCompSize) function dspArray (line 151) | void dspArray(int idx, int len) function getTile (line 179) | int getTile(int x, int y, int layer) function dspLayerArray (line 189) | void dspLayerArray(int layer) function displayTextPzl (line 209) | void displayTextPzl(int pzlNumber) function mapClassicAddGuy (line 301) | int mapClassicAddGuy() function online2Classic (line 370) | int online2Classic(int pzlNumber) function dumpPuzzlLevel (line 453) | int dumpPuzzlLevel(FILE *fp) function dumpAllLevels (line 504) | void dumpAllLevels(FILE *fp) function usage (line 517) | void usage(char *fileName) function main (line 522) | int main(int argc, char *argv[])
Condensed preview — 87 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,401K chars).
[
{
"path": "README.md",
"chars": 3260,
"preview": "Lode Runner - Total Recall\n=======================================\n## (超級運動員 - 全面回憶)\n\nThis program build with Javascript"
},
{
"path": "flag32Id.js",
"chars": 2516,
"preview": "var countryId = { \n\tunknown: 0\n\t, _African_Union: 1, _Arab_League: 2, _ASEAN: 3, _CARICOM: 4, _CIS: 5\n\t, _Commonwealth: "
},
{
"path": "lodeRunner.colorSelector.js",
"chars": 8335,
"preview": "function colorSelectorClass(_screenX1, _screenY1, baseX)\n{\n\tvar radius = baseX*3/4|0;\n\tvar px = (baseX *7/5)|0;\n\tvar py "
},
{
"path": "lodeRunner.colorTheme.js",
"chars": 5176,
"preview": "\nvar baseBitmapName = [\n\t\"empty\", \"brick\", \"solid\", \"ladder\", \"rope\",\n\t\"trapBrick\", \"hladder\", \"gold\", \"redhat\", \"guard1"
},
{
"path": "lodeRunner.def.js",
"chars": 5415,
"preview": "var VERSION = \"2.30e\";\nvar AI_VERSION = 4;\n\nvar NO_OF_TILES_X = 28,\n\tNO_OF_TILES_Y = 16;\n\nvar BASE_TILE_X = 40,\n\tBASE_TI"
},
{
"path": "lodeRunner.demo.js",
"chars": 12352,
"preview": "//===============\n// Auto Demo \n//===============\n\nvar demoRecordIdx, demoGoldIdx, demoBornIdx;\nvar\tdemoTickCount;\nvar d"
},
{
"path": "lodeRunner.demoData1.js",
"chars": 14266,
"preview": "\nvar demoData1 = [\n{ level: 11,\n\tai: 4,\n\ttime: 603,\n\tstate: 1,\n\tgodMode: 0,\n\taction: [ 0, 39, 29, 32, 30, 37, 38, 39, 49"
},
{
"path": "lodeRunner.demoData2.js",
"chars": 90885,
"preview": "var demoData2 = [\n\t{\n\t\tlevel: 1,\n\t\tai:1,\n\t\ttime: 7396,\n\t\tstate: 1,\n\t\taction: [0, 37, 46, 88, 59, 40, 64, 88, 75, 40, 80,"
},
{
"path": "lodeRunner.edit.js",
"chars": 32583,
"preview": "var emptyTile, actTile;\nvar cursorTileObj;\nvar editMap;\n\t\nvar MAX_EDIT_GUARD = 5; //maximum number of guards\nvar EMP"
},
{
"path": "lodeRunner.gameVerName.js",
"chars": 164,
"preview": "var gameVersionName = [ \" Classic Lode Runner \", \" Championship Lode Runner \", \" Professional Lode Runner \", \" Revenge o"
},
{
"path": "lodeRunner.gamepad.js",
"chars": 7506,
"preview": "var MAX_CONTROLLER = 4;\n\nvar gamepadReady = 0;\nvar gamepadPollingId = null;\nvar gamepadLastId = -1; //for send to server"
},
{
"path": "lodeRunner.guard.js",
"chars": 28870,
"preview": "//=============================================================================\n// AI reference book: \"玩 Lode Runner 學 C"
},
{
"path": "lodeRunner.hiscore.js",
"chars": 15983,
"preview": "var inputNameState = 0;\n\nfunction showScoreTable(_playData, _curScoreInfo, _callbackFun, _waitTime)\n{\n\tvar hiScoreInfo;\n"
},
{
"path": "lodeRunner.html",
"chars": 3462,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n\t<title>Lode Runner Web Game</title>\n\t<!--\n\t* ============================================"
},
{
"path": "lodeRunner.iconClass.js",
"chars": 34393,
"preview": "\nvar mouseOverBGColor = \"#fefef1\"; //icon background color while mouse over it\n\nfunction mainMenuIconClass( _screenX1, _"
},
{
"path": "lodeRunner.info.js",
"chars": 15258,
"preview": "var classicInfo = [\n\t{type: 'TITLE', contain: \" Classic Lode Runner \" },\n\t{type: 'TEXT' , contain: \"Release year : 1983,"
},
{
"path": "lodeRunner.key.js",
"chars": 7678,
"preview": "var keyAction = ACT_STOP; //// keyLastLeftRight = ACT_RIGHT;\nvar shiftLevelNum = 0;\nvar runnerDebug = 0;\n\nfunction press"
},
{
"path": "lodeRunner.main.js",
"chars": 38692,
"preview": "/** \n * @license ================================================================================== \n * Lode Runner main"
},
{
"path": "lodeRunner.menu.js",
"chars": 113646,
"preview": "function saveKeyHandler(newHandler)\n{\n\tvar keyHandler, clickState; \n\t\n\tkeyHandler = document.onkeydown;\n\tclickState = di"
},
{
"path": "lodeRunner.misc.js",
"chars": 8453,
"preview": "//============\n// MISC\n//============\nvar DEBUG = 0;\nvar demoSoundOff = 1;\n\nfunction debug(string) \n{\n\tif(DEBUG) console"
},
{
"path": "lodeRunner.preload.js",
"chars": 25068,
"preview": "var RUNNER_SPEED = 0.65; \nvar DIG_SPEED = 0.68; //for support champLevel, change DIG_SPEED and FILL_SPEED, 2014/04/1"
},
{
"path": "lodeRunner.runner.js",
"chars": 19957,
"preview": "//=============================================================================\n// AI reference book: \"玩 Lode Runner 學 C"
},
{
"path": "lodeRunner.share.js",
"chars": 10659,
"preview": "//=================================================================================\n// For share custom level to other p"
},
{
"path": "lodeRunner.storage.js",
"chars": 15126,
"preview": "\nvar modernScoreInfo, editScoreInfo;\n\n//=======================\n// LOCAL STORAGE SET/GET \n//=======================\n\nfun"
},
{
"path": "lodeRunner.v.championship.js",
"chars": 28937,
"preview": "//************************************************************\n//* All levels extract from: \n//* Championship Lode Runne"
},
{
"path": "lodeRunner.v.classic.js",
"chars": 84401,
"preview": "//************************************************************\n//* All levels extract from: \n//* Lode Runner (Apple-II 1"
},
{
"path": "lodeRunner.v.fanBookMod.js",
"chars": 53085,
"preview": "//******************************************************************\n//* All levels convert from: LR Fan Book.lms\n//* re"
},
{
"path": "lodeRunner.v.professional.js",
"chars": 84581,
"preview": "//************************************************************\n//* All levels extract from: \n//* Lode Runner I (C64) DIS"
},
{
"path": "lodeRunner.v.revenge.js",
"chars": 15211,
"preview": "//************************************************************\n//* All levels extract from: \n//* Revenge of Lode Runner "
},
{
"path": "lodeRunner.win.js",
"chars": 560,
"preview": "var endingLoadFinish=0;\nfunction loadEndingMusic()\n{\n\tif(endingLoadFinish) return;\n\tcreatejs.Sound.alternateExtensions ="
},
{
"path": "sound/Theme/fallSound-C64.js",
"chars": 410,
"preview": "//http://jsfiddle.net/s3mrkayp/1/\nvar audioContext = new (AudioContext || webkitAudioContext),\n \nosc1 = []\n\nwide = 0.0"
},
{
"path": "tools/LodeRunnerDiskParser.cpp",
"chars": 9460,
"preview": "/**********************************************************************************\nRead Lode Runner APPLE-II DISK IMAGE"
},
{
"path": "tools/c64.dsk/Extended Championship Lode Runner (1985)(Doug Smith & Dane Bigham)[cr The A-Team].d64",
"chars": 135627,
"preview": "K\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"
},
{
"path": "tools/c64.dsk/LODERUN1.D64",
"chars": 164990,
"preview": "K\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"
},
{
"path": "tools/c64.dsk/LODERUN4.D64",
"chars": 161319,
"preview": "K\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"
},
{
"path": "tools/cmpDate.cpp",
"chars": 1227,
"preview": "/**************************************************\ncompare two files modify date\nif file1 > file2 return > 0\nif file1 <"
},
{
"path": "tools/pzlDiskParser.cpp",
"chars": 14406,
"preview": "#include <stdio.h>\n#include <string.h>\n\n#define WORD unsigned __int16\n#define BYTE unsigned __int8\n\n#define IMAGE_HEAD_S"
}
]
// ... and 50 more files (download for full content)
About this extraction
This page contains the full source code of the SimonHung/LodeRunner_TotalRecall GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 87 files (1.2 MB), approximately 751.9k tokens, and a symbol index with 411 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.