Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
xiaoxiaole
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wildfirecode13
xiaoxiaole
Commits
741d00ef
Commit
741d00ef
authored
Apr 15, 2020
by
zjz1994
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '猩猩' of
http://gitlab2.dui88.com/wanghongyuan/xiaoxiaole
into dev
parents
be58e00b
fb03a06e
Changes
21
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
1767 additions
and
143 deletions
+1767
-143
index.html
egret/index.html
+2
-2
MainBase.ts
egret/libs/new_wx/MainBase.ts
+2
-0
ele40.png
egret/resource/assets/mainScene/ele40.png
+0
-0
kuang.png
egret/resource/assets/mainScene/kuang.png
+0
-0
leftxingxing.svga
egret/resource/assets/svgas/leftxingxing.svga
+0
-0
rightxingxing.svga
egret/resource/assets/svgas/rightxingxing.svga
+0
-0
xingxing.svga
egret/resource/assets/svgas/xingxing.svga
+0
-0
xingxingjio.svga
egret/resource/assets/svgas/xingxingjio.svga
+0
-0
default.res.json
egret/resource/default.res.json
+10
-0
MainScene.ts
egret/src/mainScene/MainScene.ts
+1030
-132
doSandAI.ts
egret/src/mainScene/doSandAI.ts
+3
-2
Tool.ts
egret/src/something/Tool.ts
+10
-5
Chapter24.ts
egret/src/something/chapters/Chapter24.ts
+183
-0
getChapter.ts
egret/src/something/chapters/getChapter.ts
+3
-0
Element.ts
egret/src/something/class/Element.ts
+357
-1
ElementConfigType.ts
egret/src/something/enum/ElementConfigType.ts
+1
-1
ElementType.ts
egret/src/something/enum/ElementType.ts
+1
-0
RecoverName.ts
egret/src/something/enum/RecoverName.ts
+1
-0
StateType.ts
egret/src/something/enum/StateType.ts
+3
-0
PongoLockState.ts
egret/src/something/states/PongoLockState.ts
+36
-0
home.json
mock/happyclear/home.json
+125
-0
No files found.
egret/index.html
View file @
741d00ef
...
...
@@ -127,8 +127,8 @@
// localStorage.clear();
window
[
'imgver'
]
=
'11112'
;
//top 8 ,repeat 22 , bottom 3
window
[
'total_level'
]
=
8
+
3
+
22
*
2
7
;
window
[
'last_level'
]
=
6
00
;
window
[
'total_level'
]
=
8
+
3
+
22
*
2
8
;
window
[
'last_level'
]
=
6
25
;
var
sharePic
=
document
.
getElementById
(
'pic'
);
sharePic
.
onclick
=
function
()
{
...
...
egret/libs/new_wx/MainBase.ts
View file @
741d00ef
...
...
@@ -311,6 +311,8 @@ export default class MainBase extends eui.UILayer {
RES
.
getResAsync
(
"ele36_png"
);
RES
.
getResAsync
(
"ele38_png"
);
RES
.
getResAsync
(
"ele39_png"
);
RES
.
getResAsync
(
"ele40_png"
);
RES
.
getResAsync
(
"kuang_png"
);
for
(
var
i
=
1
;
i
<=
27
;
i
++
)
{
RES
.
getResAsync
(
"bonusFra"
+
i
+
"_png"
)
}
...
...
egret/resource/assets/mainScene/ele40.png
0 → 100644
View file @
741d00ef
9.45 KB
egret/resource/assets/mainScene/kuang.png
0 → 100644
View file @
741d00ef
23.5 KB
egret/resource/assets/svgas/leftxingxing.svga
0 → 100644
View file @
741d00ef
File added
egret/resource/assets/svgas/rightxingxing.svga
0 → 100644
View file @
741d00ef
File added
egret/resource/assets/svgas/xingxing.svga
0 → 100644
View file @
741d00ef
File added
egret/resource/assets/svgas/xingxingjio.svga
0 → 100644
View file @
741d00ef
File added
egret/resource/default.res.json
View file @
741d00ef
...
...
@@ -5386,6 +5386,16 @@
"url"
:
"assets/hbPrize/hbp_bg.png"
,
"type"
:
"image"
,
"name"
:
"hbp_bg_png"
},
{
"url"
:
"assets/mainScene/ele40.png"
,
"type"
:
"image"
,
"name"
:
"ele40_png"
},
{
"url"
:
"assets/mainScene/kuang.png"
,
"type"
:
"image"
,
"name"
:
"kuang_png"
}
]
}
\ No newline at end of file
egret/src/mainScene/MainScene.ts
View file @
741d00ef
...
...
@@ -72,7 +72,7 @@ import {
MonsterBaseElementType
,
monsterElementMap
,
submitTran
,
forwardDirection
forwardDirection
,
}
from
'../something/enum/ElementType'
;
import
{
isIce
,
isSpecialLattice
,
isSand
,
isBlock
}
from
'../something/enum/LatticeType'
;
import
{
PassType
}
from
'../something/enum/PassType'
;
...
...
@@ -162,6 +162,16 @@ let svgaParser;
const
movieClips
:
any
=
{};
let
cannomvdata
:
any
=
null
;
let
cannofire1mvdata
:
any
=
null
;
let
cannolightmvdata
:
any
=
null
;
let
cannoparticlemvdata
:
any
=
null
;
let
pongomvdata
:
any
=
null
;
let
pongolfootdata
:
any
=
null
;
let
pongorfootdata
:
any
=
null
;
let
pongojiodata
:
any
=
null
;
let
pongojioArr
:
Array
<
any
>
=
[];
//红包炸弹弹框名字
const
redBombPanelName
=
"RedBombAlert"
;
...
...
@@ -289,6 +299,8 @@ export default class MainScene extends Scene {
cannoEffect
:
Array
<
any
>
=
[];
//准备发射的炮台
readyCannoArr
:
number
[]
=
[];
//发射队列炮台
fireteamCannoArr
:
number
[]
=
[];
get
steps
():
number
{
return
this
.
_steps
}
...
...
@@ -439,7 +451,6 @@ export default class MainScene extends Scene {
var
mv
=
new
window
[
"SVGA"
].
EgretMovieClip
(
videoItem
);
mv
.
lockStep
=
true
;
if
(
svgas
[
i
]
==
"cannoblock"
){
// console.log("石头破裂动画",mv);
}
if
(
svgas
[
i
]
!=
"bonusTime"
)
{
mv
.
x
=
(
750
-
520
)
/
2
;
...
...
@@ -507,9 +518,55 @@ export default class MainScene extends Scene {
icannobox
.
rotation
=
roanum
;
for
(
let
j
=
0
;
j
<
svgas
.
length
;
j
++
){
let
jsvgname
=
svgas
[
j
];
let
mvdata
:
any
;
if
(
jsvgname
==
"cannofire1"
){
mvdata
=
cannofire1mvdata
;
}
else
if
(
jsvgname
==
"cannolight"
){
mvdata
=
cannolightmvdata
;
}
else
if
(
jsvgname
==
"cannoparticle"
){
mvdata
=
cannoparticlemvdata
;
}
if
(
mvdata
){
// console.log("复用mvdata,免加载");
let
mv
=
new
window
[
"SVGA"
].
EgretMovieClip
(
mvdata
);
this
.
initCannoMv
(
mv
,
jsvgname
,
i
);
}
else
{
svgaParser
.
load
(
resPath
+
'resource/assets/svgas/'
+
jsvgname
+
".svga"
,
(
videoItem
)
=>
{
let
mv
=
new
window
[
"SVGA"
].
EgretMovieClip
(
videoItem
);
// mv.lockStep = true;
if
(
jsvgname
==
"cannofire1"
&&!
cannofire1mvdata
){
cannofire1mvdata
=
videoItem
;
}
else
if
(
jsvgname
==
"cannolight"
&&!
cannolightmvdata
){
cannolightmvdata
=
videoItem
;
}
else
if
(
jsvgname
==
"cannoparticle"
&&!
cannoparticlemvdata
){
cannoparticlemvdata
=
videoItem
;
}
this
.
initCannoMv
(
mv
,
jsvgname
,
i
);
},
function
(
error
){
console
.
log
(
"炮台svg加载失败"
,
jsvgname
);
})
}
}
}
}
/**
* 加载猩猩脚印
*/
initPongoJioSvgas
(
call
:
any
=
null
){
if
(
pongojiodata
){
}
else
{
if
(
!
svgaParser
)
svgaParser
=
new
window
[
"SVGA"
].
Parser
();
svgaParser
.
load
(
resPath
+
'resource/assets/svgas/xingxingjio.svga'
,
(
videoItem
)
=>
{
pongojiodata
=
videoItem
;
call
&&
call
();
})
}
}
initCannoMv
(
mv
:
any
,
jsvgname
:
string
,
i
:
number
){
let
icannoboxwid
:
number
=
116
;
let
icannoboxhei
:
number
=
116
;
mv
.
gotoAndStop
(
1
);
mv
[
"cannoidx"
]
=
i
;
if
(
jsvgname
==
"cannofire1"
){
...
...
@@ -518,36 +575,27 @@ export default class MainScene extends Scene {
mv
.
x
=
icannoboxwid
-
8
;
mv
.
y
=
(
icannoboxhei
-
mvwidth
)
+
180
;
mv
.
rotation
=
90
;
// console.log("cannofireTotal-------",mv,mv.totalFrames);
mv
.
addEventListener
(
egret
.
Event
.
ENTER_FRAME
,
this
.
listenCnfire
,
this
);
}
else
if
(
jsvgname
==
"cannolight"
){
var
mvwidth
=
400
;
var
mvheight
=
400
;
mv
.
x
=
(
icannoboxwid
-
mvwidth
)
/
2
;
mv
.
y
=
(
icannoboxhei
-
mvheight
)
/
2
;
// console.log("cannolight-------",mv. totalFrames);
mv
.
addEventListener
(
egret
.
Event
.
ENTER_FRAME
,
this
.
listenCnlight
,
this
);
}
else
if
(
jsvgname
==
"cannoparticle"
){
mv
.
x
=
icannoboxwid
;
mv
.
y
=
-
icannoboxhei
/
2
;
mv
.
rotation
=
90
;
// console.log("cannoparticle-------",mv. totalFrames);
mv
.
addEventListener
(
egret
.
Event
.
ENTER_FRAME
,
this
.
listenCnparticle
,
this
);
}
this
.
cannoEffect
[
i
][
jsvgname
]
=
mv
;
},
function
(
error
){
console
.
log
(
"炮台svg加载失败"
,
jsvgname
);
})
}
}
}
listenCnfire
(
e
){
var
target
=
e
.
target
;
var
curframe
=
target
.
currentFrame
;
if
(
curframe
>=
30
){
// console.log("fire播放完成",target["cannoidx"]);
target
.
gotoAndStop
(
1
);
if
(
target
.
parent
){
target
.
parent
.
removeChild
(
target
);
...
...
@@ -562,7 +610,6 @@ export default class MainScene extends Scene {
var
target
=
e
.
target
;
var
curframe
=
target
.
currentFrame
;
if
(
curframe
>=
28
){
// console.log("light播放完成",target["cannoidx"]);
target
.
gotoAndStop
(
1
);
if
(
target
.
parent
){
target
.
parent
.
removeChild
(
target
);
...
...
@@ -577,7 +624,6 @@ export default class MainScene extends Scene {
var
target
=
e
.
target
;
var
curframe
=
target
.
currentFrame
;
if
(
curframe
>=
98
){
// console.log("particle播放完成",target["cannoidx"]);
target
.
gotoAndStop
(
1
);
if
(
target
.
parent
){
target
.
parent
.
removeChild
(
target
);
...
...
@@ -814,7 +860,6 @@ export default class MainScene extends Scene {
arrow
.
y
=
p
[
1
];
});
}
}
//初始化地图格子数据,包括生成口,联通口
...
...
@@ -911,6 +956,9 @@ export default class MainScene extends Scene {
this
.
cannoArr
=
new
Array
();
//没有就根据地图格子随机元素
var
elements
=
this
.
chapterData
.
map
.
elements
||
Tool
.
setNumber01
(
this
.
chapterData
.
map
.
lattices
.
slice
());
//猩猩初始时加入
var
pongoArr
:
Array
<
{
tl
:
number
,
tr
:
number
,
bl
:
number
,
br
:
number
}
>
=
new
Array
();
for
(
var
i
=
0
;
i
<
elements
.
length
;
i
++
)
{
//如果对应格子为空,直接跳过,
if
(
!
this
.
lattices
[
i
])
continue
;
...
...
@@ -1062,7 +1110,9 @@ export default class MainScene extends Scene {
}
else
{
if
(
!
svgaParser
)
svgaParser
=
new
window
[
"SVGA"
].
Parser
();
svgaParser
.
load
(
resPath
+
'resource/assets/svgas/canno1.svga'
,(
videoItem
)
=>
{
if
(
!
cannomvdata
){
cannomvdata
=
videoItem
;
}
canno
.
createCanno
(
cannomvdata
);
})
}
...
...
@@ -1074,6 +1124,91 @@ export default class MainScene extends Scene {
this
.
elementContainer
.
addChild
(
canno_block
);
this
.
lattices
[
i
].
element
=
canno_block
;
break
;
case
ElementConfigType
.
Pongo
:
let
inpart
=
this
.
checkEleInAcreatePongo
(
i
,
pongoArr
);
if
(
inpart
==
"tl"
){
//创建新猩猩
var
onepongodata
=
this
.
createOnePongoByTl
(
i
);
pongoArr
.
push
(
onepongodata
);
}
else
{
// console.log("是已经创建的猩猩的一部分")
}
//猩猩每部分默认被锁住
let
pongo
:
Element
=
Tool
.
getElement
(
ElementType
.
Pongo
);
pongo
.
x
=
p
[
0
];
pongo
.
y
=
p
[
1
];
this
.
elementContainer
.
addChild
(
pongo
);
pongo
.
setPongoPart
(
inpart
);
this
.
lattices
[
i
].
element
=
pongo
;
if
(
inpart
==
"tl"
){
if
(
pongomvdata
&&
pongolfootdata
&&
pongorfootdata
){
this
.
waitDataCreatePongo
(
pongo
);
}
else
{
if
(
!
svgaParser
)
svgaParser
=
new
window
[
"SVGA"
].
Parser
();
var
svgas
=
[
"xingxing"
,
"leftxingxing"
,
"rightxingxing"
];
for
(
let
pg
=
0
;
pg
<
svgas
.
length
;
pg
++
){
let
pgname
=
svgas
[
pg
];
if
(
pgname
==
"xingxing"
){
if
(
pongomvdata
){
var
iscreate
=
this
.
waitDataCreatePongo
(
pongo
);
if
(
iscreate
){
break
;
}
else
{
continue
;
}
}
}
else
if
(
pgname
==
"leftxingxing"
){
if
(
pongolfootdata
){
var
iscreate
=
this
.
waitDataCreatePongo
(
pongo
);
if
(
iscreate
){
break
;
}
else
{
continue
;
}
}
}
else
if
(
pgname
==
"rightxingxing"
){
if
(
pongorfootdata
){
var
iscreate
=
this
.
waitDataCreatePongo
(
pongo
);
if
(
iscreate
){
break
;
}
else
{
continue
;
}
}
}
svgaParser
.
load
(
resPath
+
'resource/assets/svgas/'
+
pgname
+
'.svga'
,(
videoItem
)
=>
{
if
(
pgname
==
"xingxing"
){
if
(
!
pongomvdata
){
pongomvdata
=
videoItem
;
}
}
else
if
(
pgname
==
"leftxingxing"
){
if
(
!
pongolfootdata
){
pongolfootdata
=
videoItem
;
}
}
else
if
(
pgname
==
"rightxingxing"
){
if
(
!
pongorfootdata
){
pongorfootdata
=
videoItem
;
}
}
var
pongoidx
=
pongo
.
index
;
var
createidx
=
this
.
havecreate
.
indexOf
(
pongoidx
);
if
(
createidx
==-
1
){
var
iscreate
=
this
.
waitDataCreatePongo
(
pongo
);
if
(
iscreate
){
this
.
havecreate
.
push
(
pongoidx
);
}
}
})
}
}
}
//加载猩猩的脚印
this
.
initPongoJioSvgas
();
break
;
default
:
//其他标识按空元素记
this
.
emptys
.
push
(
i
);
...
...
@@ -1081,7 +1216,16 @@ export default class MainScene extends Scene {
}
}
this
.
initCannoSvgas
(
this
.
cannoArr
);
// console.log("关卡大炮配置",this.cannoArr);
}
havecreate
:
Array
<
number
>
=
[];
//创建猩猩
waitDataCreatePongo
(
pongo
:
Element
){
if
(
pongomvdata
&&
pongolfootdata
&&
pongorfootdata
){
pongo
.
createPongo
(
pongomvdata
,
pongolfootdata
,
pongorfootdata
);
return
true
;
}
else
{
return
false
;
}
}
//重置基础元素及特效类型
...
...
@@ -1343,6 +1487,16 @@ export default class MainScene extends Scene {
// console.log(cannoele.cannoMoveClip.currentFrame);
// }
onTap_boomBtn
()
{
// this.pongoPaiKuang(38);
// return;
// for(var i=0;i<this.lattices.length;i++){
// var lat = this.lattices[i];
// if(lat&&lat.element&&lat.element.inPongoPart&&lat.element.inPongoPart=="tl"){
// var pongoele:Element = lat.element;
// pongoele.changePongoStop("add");
// }
// }
// return;
NetManager
.
ins
.
clickLog
(
getlogItem
(
7
));
if
(
this
.
propBtnCon
.
boomBtn
.
propNumShow
.
count
<=
0
)
{
//购买弹框
...
...
@@ -1353,6 +1507,14 @@ export default class MainScene extends Scene {
}
onTap_hammerBtn
()
{
// for(var i=0;i<this.lattices.length;i++){
// var lat = this.lattices[i];
// if(lat&&lat.element&&lat.element.inPongoPart&&lat.element.inPongoPart=="tl"){
// var pongoele:Element = lat.element;
// pongoele.changePongoStop("cut");
// }
// }
// return;
NetManager
.
ins
.
clickLog
(
getlogItem
(
10
));
if
(
this
.
propBtnCon
.
hammerBtn
.
propNumShow
.
count
<=
0
)
{
//购买弹框
...
...
@@ -1405,6 +1567,7 @@ export default class MainScene extends Scene {
// ele.type != ElementType.ROCK &&
ele
.
type
!=
ElementType
.
CANNO
&&
ele
.
type
!=
ElementType
.
CANNO_BLOCK
&&
ele
.
type
!=
ElementType
.
Pongo
&&
!
ele
.
hasState
(
StateType
.
BLOCK_LOCK
)
&&
//石门无法消除
ele
.
type
!=
ElementType
.
LOLLIPOP
)
{
this
.
elementContainer
.
removeEventListener
(
egret
.
TouchEvent
.
TOUCH_BEGIN
,
fun
,
this
);
...
...
@@ -1514,6 +1677,9 @@ export default class MainScene extends Scene {
}
}
}
//特效消除猩猩
this
.
checkPongoHVEle
(
rc
[
0
],
rc
[
1
],
"hor"
);
this
.
checkPongoHVEle
(
rc
[
0
],
rc
[
1
],
"vir"
);
setTimeout
(()
=>
{
this
.
_converyorTag
=
true
;
...
...
@@ -1634,7 +1800,6 @@ export default class MainScene extends Scene {
this
.
noActionCount
=
0
;
this
.
resetWarning
();
if
(
!
Tool
.
judgeChosen
(
e
.
target
.
parent
))
return
// console.log(e.target.parent)
if
(
self
.
SELECTED
&&
Tool
.
checkNeb
(
e
.
target
.
parent
,
self
.
SELECTED
))
{
self
.
exchangeElementAni
(
self
.
SELECTED
,
e
.
target
.
parent
,
self
.
callbackEx
);
self
.
SELECTED
.
removeChild
(
self
.
choosed
);
...
...
@@ -2342,28 +2507,6 @@ export default class MainScene extends Scene {
}
}
// if(this.eliminatedElements.length>0){
// for(var i=0;i<this.eliminatedElements.length;i++){
// var ielimidx = this.eliminatedElements[i];
// for(var p=0;p<this.cannoArr.length;p++){
// var pcannoidx = this.cannoArr[p].idx;
// var isnext = Tool.checkNebByidx(pcannoidx,ielimidx);
// if(isnext){
// var pcannoele = this.cannoArr[p].ele;
// pcannoele.addOneCannoStat();
// var pcannostat = pcannoele.checkCannoStat();
// if(pcannostat){
// if(this.readyCannoArr.indexOf(p)==-1){
// this.readyCannoArr.push(p);
// }
// }
// }
// }
// }
// }
return
this
.
eliminatedElements
.
length
>
0
;
}
...
...
@@ -2419,8 +2562,8 @@ export default class MainScene extends Scene {
},
200
)
}
else
{
//新大炮充能
// console.log("新炮台充能",JSON.parse(JSON.stringify(pcannostatArr)));
for
(
var
np
=
0
;
np
<
pcannostatArr
.
length
;
np
++
){
if
(
this
.
readyCannoArr
.
indexOf
(
np
)
==-
1
&&
this
.
fireteamCannoArr
.
indexOf
(
np
)
==-
1
){
var
npdata
=
pcannostatArr
[
np
];
var
npineffect
=
npdata
.
ineffect
;
var
npaddnum
=
npdata
.
addnum
;
...
...
@@ -2435,13 +2578,11 @@ export default class MainScene extends Scene {
}
}
var
npcanno
=
this
.
cannoArr
[
np
].
ele
;
// console.log("新炮台充能",np,npadd)
for
(
var
ap
=
0
;
ap
<
npadd
;
ap
++
){
var
lastpcannostatnum
:
number
=
npcanno
.
_cannoStat
npcanno
.
addOneCannoStat
();
var
newpcannostatnum
:
number
=
npcanno
.
_cannoStat
if
(
newpcannostatnum
>
lastpcannostatnum
){
// console.log('炮台充能------'+np,lastpcannostatnum,newpcannostatnum);
this
.
selectPlayCannoEffect
(
np
,
"cannolight"
);
}
var
pcannostat
=
npcanno
.
checkCannoStat
();
...
...
@@ -2452,6 +2593,7 @@ export default class MainScene extends Scene {
}
}
}
}
//没有可消除元素,执行掉落,
setTimeout
(()
=>
{
...
...
@@ -2467,6 +2609,91 @@ export default class MainScene extends Scene {
* 掉落完后的操作
*/
async
fallCallback
()
{
// //掉落后先走猩猩的消除
// if(this.gopongoArr.length>0){//消除猩猩,先播放猩猩消失的动画,后消除
// for(var cp=0;cp<this.gopongoArr.length;cp++){
// var cptl = this.gopongoArr[cp];
// var cptr = cptl+1;
// var cpbl = cptl+Tool.colNum;
// var cpbr = cpbl+1;
// var cpidxarr = [cptl,cptr,cpbl,cpbr];
// for(var a1=0;a1<cpidxarr.length;a1++){
// if(this.eliminatedElements.indexOf(cpidxarr[a1])==-1){
// this.eliminatedElements.push(cpidxarr[a1]);
// }
// }
// }
// this.gopongoArr = new Array();
// this.eliminate();
// return;
// }
if
(
this
.
freepongoArr
.
length
==
1
){
//拍块
console
.
log
(
"一只猩猩拍块"
);
// this.pongoPaiKuang(this.freepongoArr[0]);
// var pongotl = this.freepongoArr.shift();
// if(this.gopongoArr.indexOf(pongotl)==-1){
// this.gopongoArr.push(pongotl);
// }
for
(
var
cp
=
0
;
cp
<
this
.
freepongoArr
.
length
;
cp
++
){
var
cptl
=
this
.
freepongoArr
[
cp
];
if
(
this
.
lattices
[
cptl
]
&&
this
.
lattices
[
cptl
].
element
&&
this
.
lattices
[
cptl
].
element
.
inPongoPart
==
"tl"
){
var
pongoele
=
this
.
lattices
[
cptl
].
element
;
pongoele
.
mainScene
=
this
;
pongoele
.
changePongoStat
(
"body"
);
}
var
cptr
=
cptl
+
1
;
var
cpbl
=
cptl
+
Tool
.
colNum
;
var
cpbr
=
cpbl
+
1
;
var
cpidxarr
=
[
cptl
,
cptr
,
cpbl
,
cpbr
];
for
(
var
a1
=
0
;
a1
<
cpidxarr
.
length
;
a1
++
){
if
(
this
.
eliminatedElements
.
indexOf
(
cpidxarr
[
a1
])
==-
1
){
this
.
eliminatedElements
.
push
(
cpidxarr
[
a1
]);
}
}
}
// this.freepongoArr = new Array();
// this.eliminate();
return
;
}
if
(
this
.
freepongoArr
.
length
>
1
){
//清场
// console.log("多只猩猩清场",this.freepongoArr.length,JSON.stringify(this.freepongoArr));
// this.pongoClearScene();
// for(var fp=this.freepongoArr.length-1;fp>=0;fp--){
// var fptl = this.freepongoArr.splice(fp,1)[0];
// if(this.gopongoArr.indexOf(fptl)==-1){
// this.gopongoArr.push(fptl);
// }
// }
for
(
var
cp
=
0
;
cp
<
this
.
freepongoArr
.
length
;
cp
++
){
var
cptl
=
this
.
freepongoArr
[
cp
];
if
(
this
.
lattices
[
cptl
]
&&
this
.
lattices
[
cptl
].
element
&&
this
.
lattices
[
cptl
].
element
.
inPongoPart
==
"tl"
){
var
pongoele
=
this
.
lattices
[
cptl
].
element
;
pongoele
.
mainScene
=
this
;
pongoele
.
changePongoStat
(
"body"
);
}
var
cptr
=
cptl
+
1
;
var
cpbl
=
cptl
+
Tool
.
colNum
;
var
cpbr
=
cpbl
+
1
;
var
cpidxarr
=
[
cptl
,
cptr
,
cpbl
,
cpbr
];
for
(
var
a1
=
0
;
a1
<
cpidxarr
.
length
;
a1
++
){
if
(
this
.
eliminatedElements
.
indexOf
(
cpidxarr
[
a1
])
==-
1
){
this
.
eliminatedElements
.
push
(
cpidxarr
[
a1
]);
}
}
}
// this.freepongoArr = new Array();
// this.eliminate();
return
;
}
//掉落后有消除,执行消除
if
(
this
.
threeMatch
())
{
this
.
eliminate
();
...
...
@@ -2476,27 +2703,55 @@ export default class MainScene extends Scene {
//炮台充能发射
var
emitcanno
:
Element
;
if
(
this
.
readyCannoArr
.
length
>
0
){
var
readyCannoIdx
=
this
.
readyCannoArr
[
0
];
emitcanno
=
this
.
cannoArr
[
readyCannoIdx
].
ele
;
// var readyCannoIdx = this.readyCannoArr[0];
// emitcanno = this.cannoArr[readyCannoIdx].ele;
this
.
fireteamCannoArr
=
new
Array
();
// for(var p=0;p<this.readyCannoArr.length;p++){
// var preadyCannoIdx = this.readyCannoArr[p];
// var pemitcanno = this.cannoArr[preadyCannoIdx].ele;
// this.fireCanno(pemitcanno);
// }
// return;
for
(
var
p
=
0
;
p
<
this
.
readyCannoArr
.
length
;
p
++
){
var
preadyCannoIdx
=
this
.
readyCannoArr
[
p
];
var
pemitcanno
=
this
.
cannoArr
[
preadyCannoIdx
].
ele
;
this
.
fireCanno
(
pemitcanno
);
}
if
(
emitcanno
){
this
.
fireCanno
(
emitcanno
);
return
;
}
// if(emitcanno){
// this.fireCanno(emitcanno);
// return;
// }
if
(
this
.
_converyorTag
)
{
await
doConveyorAI
(
this
);
this
.
_converyorTag
=
false
;
}
//棒棒糖消除
var
recoverlp
:
number
=
0
;
for
(
var
lp
=
0
;
lp
<
this
.
recycleIndexs
.
length
;
lp
++
){
var
lpidx
=
this
.
recycleIndexs
[
lp
];
var
lplat
=
this
.
lattices
[
lpidx
];
if
(
lplat
&&
lplat
.
element
&&
lplat
.
element
.
type
==
ElementType
.
LOLLIPOP
){
recoverlp
+=
1
;
this
.
recoverEle
(
lpidx
);
this
.
lollipopCount
--
;
//通关目标还有棒棒糖,并且,图中不足,下次需要生成
if
(
this
.
passElements
&&
this
.
passElements
[
ElementType
.
LOLLIPOP
]
&&
this
.
lollipopCount
<
this
.
passElements
[
ElementType
.
LOLLIPOP
])
{
this
.
lollipopMark
=
true
}
}
}
if
(
recoverlp
>
0
){
console
.
log
(
"传送带棒棒糖消除"
);
this
.
fall
(()
=>
{
this
.
fallCallback
();
})
return
;
}
await
doSandAI
(
this
);
const
doHoneyPotAIResult
=
await
doHoneyPotAI
(
this
);
if
(
doHoneyPotAIResult
.
length
>
0
)
{
//如果有激活的罐子被消除,那么表示可以自动消除,则不需要进行下一步
...
...
@@ -2574,7 +2829,6 @@ export default class MainScene extends Scene {
}
//判断是否已达目标
this
.
hasPassed
=
this
.
judgePass
();
// console.log(this.hasPassed)
//如果已达目标
if
(
this
.
hasPassed
)
{
//连消基数为1
...
...
@@ -2639,6 +2893,86 @@ export default class MainScene extends Scene {
//大炮发射
fireCanno
(
canno
:
Element
){
// var cannodir = canno._cannoDir;
// var cannorow = canno.row;
// var cannocol = canno.column;
// var cannoFireArr:number[] = new Array();
// if(cannodir==forwardDirection.left){
// for(var i=cannocol;i>=0;i--){
// var iemitidx = Tool.rcToIndex(cannorow,i);
// cannoFireArr.push(iemitidx);
// }
// }else if(cannodir==forwardDirection.up){
// for(var i=cannorow;i>=0;i--){
// var iemitidx = Tool.rcToIndex(i,cannocol);
// cannoFireArr.push(iemitidx);
// }
// }else if(cannodir==forwardDirection.right){
// for(var i=cannocol;i<Tool.colNum;i++){
// var iemitidx = Tool.rcToIndex(cannorow,i);
// cannoFireArr.push(iemitidx);
// }
// }else if(cannodir==forwardDirection.down){
// for(var i=cannorow;i<Tool.rowNum;i++){
// var iemitidx = Tool.rcToIndex(i,cannocol);
// cannoFireArr.push(iemitidx);
// }
// }
// //特效消除猩猩--炮弹
// var lockPongoArr:Array<{idx:number,part:string}> = new Array();
// for(var j=0;j<cannoFireArr.length;j++){
// var jemitidx = cannoFireArr[j];
// var lat = this.lattices[jemitidx];
// var caneliminate = Tool.judgeEliminate(lat);
// var iscannoblock = Tool.judgeIscannoBlock(lat);
// if(lat&&(caneliminate||iscannoblock)){
// if(this.eliminatedElements.indexOf(jemitidx)==-1){
// this.eliminatedElements.push(jemitidx);
// }
// //加分
// if(iscannoblock){
// // console.log("炮台石头消除");
// break;
// }
// }
// //提前消除了,需要修改成炮台的消除时消除
// if(lat&&lat.element){
// var isbreak = this.solveOneTxPgEle(lat.element.row,lat.element.column,lockPongoArr);
// }
// }
canno
.
fireCanno
();
// var cannoidx = canno.index;
// var cannoarridx = this.getCannoArrByIdx(cannoidx);
// this.selectPlayCannoEffect(cannoarridx,"cannoparticle");
// setTimeout(()=>{
// this.eliminate();
// this.readyCannoArr.shift();
// canno.resetCannoStat();
// },200);
// this.solvePongoEle(lockPongoArr);
}
getCannoArrByIdx
(
cannoidx
:
number
){
var
arridx
:
number
=
0
;
for
(
var
i
=
0
;
i
<
this
.
cannoArr
.
length
;
i
++
){
var
icannoidx
=
this
.
cannoArr
[
i
].
idx
;
if
(
icannoidx
==
cannoidx
){
arridx
=
i
;
break
;
}
}
return
arridx
;
}
/**
* 炮台发射完毕,开始炮台消除
*/
callBackFireCanno
(
canno
:
Element
){
//炮台消除猩猩状态
var
cannodir
=
canno
.
_cannoDir
;
var
cannorow
=
canno
.
row
;
var
cannocol
=
canno
.
column
;
...
...
@@ -2664,6 +2998,9 @@ export default class MainScene extends Scene {
cannoFireArr
.
push
(
iemitidx
);
}
}
//特效消除猩猩--炮弹
var
lockPongoArr
:
Array
<
{
idx
:
number
,
part
:
string
}
>
=
new
Array
();
for
(
var
j
=
0
;
j
<
cannoFireArr
.
length
;
j
++
){
var
jemitidx
=
cannoFireArr
[
j
];
var
lat
=
this
.
lattices
[
jemitidx
];
...
...
@@ -2679,37 +3016,31 @@ export default class MainScene extends Scene {
break
;
}
}
}
canno
.
fireCanno
();
var
cannoidx
=
canno
.
index
;
var
cannoarridx
=
this
.
getCannoArrByIdx
(
cannoidx
);
// this.selectPlayCannoEffect(cannoarridx,"cannoparticle");
// setTimeout(()=>{
// this.eliminate();
// this.readyCannoArr.shift();
// canno.resetCannoStat();
// },200);
//提前消除了,需要修改成炮台的消除时消除
if
(
lat
&&
lat
.
element
){
var
isbreak
=
this
.
solveOneTxPgEle
(
lat
.
element
.
row
,
lat
.
element
.
column
,
lockPongoArr
);
}
getCannoArrByIdx
(
cannoidx
:
number
){
var
arridx
:
number
=
0
;
for
(
var
i
=
0
;
i
<
this
.
cannoArr
.
length
;
i
++
){
var
icannoidx
=
this
.
cannoArr
[
i
].
idx
;
if
(
icannoidx
==
cannoidx
){
arridx
=
i
;
break
;
}
this
.
solvePongoEle
(
lockPongoArr
);
var
firecannoidx
=
canno
.
index
;
if
(
this
.
fireteamCannoArr
.
indexOf
(
firecannoidx
)
==-
1
){
this
.
fireteamCannoArr
.
push
(
firecannoidx
);
}
return
arridx
;
}
/**
* 炮台发射完毕,开始炮台消除
*/
callBackFireCanno
(
canno
:
Element
){
if
(
this
.
fireteamCannoArr
.
length
==
this
.
readyCannoArr
.
length
){
this
.
eliminate
();
this
.
readyCannoArr
.
shift
();
canno
.
resetCannoStat
();
for
(
var
i
=
0
;
i
<
this
.
readyCannoArr
.
length
;
i
++
){
var
preadyCannoIdx
=
this
.
readyCannoArr
[
i
];
var
pemitcanno
=
this
.
cannoArr
[
preadyCannoIdx
].
ele
;
pemitcanno
.
resetCannoStat
();
}
this
.
readyCannoArr
=
new
Array
();
this
.
fireteamCannoArr
=
new
Array
();
}
// this.readyCannoArr.shift();
// canno.resetCannoStat();
// if(this.readyCannoArr.length==1){
// this.eliminate();
// }
...
...
@@ -2969,6 +3300,12 @@ export default class MainScene extends Scene {
}
}
}
//特效消除猩猩
this
.
checkPongoHVEle
(
lat1
.
row
,
lat1
.
column
,
"hor"
);
this
.
checkPongoHVEle
(
lat1
.
row
,
lat1
.
column
,
"vir"
);
}
//一个方向,一个爆炸
else
if
((
ele1
.
effectType
<
2
||
ele2
.
effectType
<
2
)
&&
...
...
@@ -2987,6 +3324,69 @@ export default class MainScene extends Scene {
npdata
.
addnum
=
1
;
}
}
//特效消除猩猩
var
pongor
=
[
{
row
:
lat1
.
row
-
1
,
col
:
lat1
.
column
},
{
row
:
lat1
.
row
,
col
:
lat1
.
column
},
{
row
:
lat1
.
row
+
1
,
col
:
lat1
.
column
}
];
var
pongoc
=
[
{
row
:
lat1
.
row
,
col
:
lat1
.
column
-
1
},
{
row
:
lat1
.
row
,
col
:
lat1
.
column
},
{
row
:
lat1
.
row
,
col
:
lat1
.
column
+
1
}
];
for
(
var
pr1
=
0
;
pr1
<
pongor
.
length
;
pr1
++
){
var
prcdata
=
pongor
[
pr1
];
var
prcrow
=
prcdata
.
row
;
var
prccol
=
prcdata
.
col
;
if
(
prcrow
>=
0
&&
prcrow
<
Tool
.
rowNum
&&
prccol
>=
0
&&
prccol
<
Tool
.
colNum
){
this
.
checkPongoHVEle
(
prcrow
,
prccol
,
"hor"
);
for
(
var
np
=
0
;
np
<
pcannostatArr
.
length
;
np
++
){
var
npdata
=
pcannostatArr
[
np
];
var
canaddhor
=
this
.
addCannoStatByHor
(
np
,
prcrow
,
prccol
);
if
(
canaddhor
){
npdata
.
ineffect
=
true
;
}
}
}
}
for
(
var
pc1
=
0
;
pc1
<
pongoc
.
length
;
pc1
++
){
var
prcdata
=
pongoc
[
pc1
];
var
prcrow
=
prcdata
.
row
;
var
prccol
=
prcdata
.
col
;
if
(
prcrow
>=
0
&&
prcrow
<
Tool
.
rowNum
&&
prccol
>=
0
&&
prccol
<
Tool
.
colNum
){
this
.
checkPongoHVEle
(
prcrow
,
prccol
,
"vir"
);
for
(
var
np
=
0
;
np
<
pcannostatArr
.
length
;
np
++
){
var
npdata
=
pcannostatArr
[
np
];
var
canaddver
=
this
.
addCannoStatByVer
(
np
,
prcrow
,
prccol
);
if
(
canaddver
){
npdata
.
ineffect
=
true
;
}
}
}
}
//回收
this
.
recoverEle
(
one
)
this
.
recoverEle
(
two
)
...
...
@@ -3005,6 +3405,8 @@ export default class MainScene extends Scene {
}
}
}
}
//如果两个爆炸
else
if
(
ele1
.
effectType
==
EffectType
.
EXPLOSIVE
&&
ele2
.
effectType
==
EffectType
.
EXPLOSIVE
)
{
...
...
@@ -3248,6 +3650,10 @@ export default class MainScene extends Scene {
else
if
(
ele
.
type
==
ElementType
.
CANNO_BLOCK
){
this
.
removeCannoBlock
(
index
);
}
//猩猩
else
if
(
ele
.
type
==
ElementType
.
Pongo
){
this
.
removePongo
(
index
);;
}
}
}
//从消除列表移除
...
...
@@ -3398,6 +3804,10 @@ export default class MainScene extends Scene {
npdata
.
ineffect
=
true
;
}
}
//特效消除猩猩
this
.
checkPongoHVEle
(
row
,
lat
.
column
,
"hor"
);
break
;
case
EffectType
.
VERTICAL
:
if
(
sounds
.
indexOf
(
SoundType
.
line
)
==
-
1
)
sounds
.
push
(
SoundType
.
line
)
...
...
@@ -3450,6 +3860,10 @@ export default class MainScene extends Scene {
npdata
.
ineffect
=
true
;
}
}
//特效消除猩猩
this
.
checkPongoHVEle
(
lat
.
row
,
col
,
"vir"
);
break
;
}
}
...
...
@@ -3926,6 +4340,397 @@ export default class MainScene extends Scene {
}
}
}
//自由的猩猩
freepongoArr
:
Array
<
number
>
=
[];
//准备离开的猩猩
gopongoArr
:
Array
<
number
>
=
[];
//相邻消除解救猩猩
checkPongoNebEle
(
lat0
:
Lattice
,
ele
?:
Element
)
{
if
(
!
lat0
||
!
ele
)
return
;
var
indexs
=
this
.
getNextIndexs
(
lat0
);
var
lockPongoArr
:
Array
<
{
idx
:
number
,
part
:
string
}
>
=
new
Array
();
for
(
let
i
=
0
;
i
<
indexs
.
length
;
i
++
)
{
let
index
=
indexs
[
i
];
let
lat
=
this
.
lattices
[
index
];
if
(
lat
&&
lat
.
element
&&
lat
.
element
.
type
==
ElementType
.
Pongo
)
{
const
type
=
ele
.
type
;
// if(this.passElements && this.passElements[type] != 0) {//不清楚是干啥的
if
(
lat
.
element
.
hasState
(
StateType
.
PongoLockState
)){
var
ilockpongo
=
{
idx
:
lat
.
element
.
index
,
part
:
lat
.
element
.
inPongoPart
}
// lockPongoArr.push(ilockpongo);
//解锁猩猩被锁状态
var
istrue
=
this
.
changePongoStat
(
lat
.
element
);
if
(
!
istrue
){
return
;
}
lockPongoArr
.
push
(
ilockpongo
);
}
// }
}
}
//本次全地图解锁的猩猩部分处理
this
.
solvePongoEle
(
lockPongoArr
);
}
//消除动画中的猩猩解锁状态
changePongoStat
(
ele
:
Element
){
var
pongopart
=
ele
.
inPongoPart
;
var
eleidx
=
ele
.
index
;
var
tlidx
:
number
;
switch
(
pongopart
){
case
"tl"
:
tlidx
=
eleidx
;
break
;
case
"tr"
:
tlidx
=
eleidx
-
1
;
break
;
case
"bl"
:
tlidx
=
eleidx
-
Tool
.
colNum
;
break
;
case
"br"
:
tlidx
=
eleidx
-
Tool
.
colNum
-
1
;
break
;
default
:
console
.
error
(
"未定义猩猩解锁"
);
break
;
}
if
(
this
.
lattices
[
tlidx
]
&&
this
.
lattices
[
tlidx
].
element
){
var
tlele
:
Element
=
this
.
lattices
[
tlidx
].
element
;
if
(
!
tlele
.
pongoMoveClip
){
return
false
;
}
tlele
.
changePongoStat
(
pongopart
);
}
ele
.
removePongoLockStat
();
return
true
;
}
//横纵特效穿过解救猩猩
checkPongoHVEle
(
row
:
number
,
col
:
number
,
dir
:
string
){
var
lockPongoArr
:
Array
<
{
idx
:
number
,
part
:
string
}
>
=
new
Array
();
if
(
dir
==
"hor"
){
//向左穿透猩猩
for
(
var
i
=
col
-
1
;
i
>=
0
;
i
--
){
var
isbreak
=
this
.
solveOneTxPgEle
(
row
,
i
,
lockPongoArr
);
if
(
isbreak
==
2
){
break
;
}
}
//向右穿透猩猩
for
(
var
i
=
col
+
1
;
i
<
Tool
.
colNum
;
i
++
){
var
isbreak
=
this
.
solveOneTxPgEle
(
row
,
i
,
lockPongoArr
);
if
(
isbreak
==
2
){
break
;
}
}
}
else
if
(
dir
==
"vir"
){
//向上
for
(
var
i
=
row
-
1
;
i
>=
0
;
i
--
){
var
isbreak
=
this
.
solveOneTxPgEle
(
i
,
col
,
lockPongoArr
);
if
(
isbreak
==
2
){
break
;
}
}
//向下
for
(
var
i
=
row
+
1
;
i
<
Tool
.
rowNum
;
i
++
){
var
isbreak
=
this
.
solveOneTxPgEle
(
i
,
col
,
lockPongoArr
);
if
(
isbreak
==
2
){
break
;
}
}
}
//本次特效消除的猩猩
this
.
solvePongoEle
(
lockPongoArr
);
}
solveOneTxPgEle
(
row
:
number
,
col
:
number
,
lockPongoArr
:
Array
<
{
idx
:
number
,
part
:
string
}
>
){
var
eleidx
=
Tool
.
rcToIndex
(
row
,
col
);
if
(
!
this
.
lattices
[
eleidx
]
||
!
this
.
lattices
[
eleidx
].
element
)
return
1
;
var
lat
=
this
.
lattices
[
eleidx
];
var
iscannoblock
=
Tool
.
judgeIscannoBlock
(
lat
);
if
(
iscannoblock
){
return
2
;
}
if
(
lat
&&
lat
.
element
&&
lat
.
element
.
type
==
ElementType
.
Pongo
)
{
//是猩猩
if
(
lat
.
element
.
hasState
(
StateType
.
PongoLockState
)){
var
ilockpongo
=
{
idx
:
lat
.
element
.
index
,
part
:
lat
.
element
.
inPongoPart
}
var
istrue
=
this
.
changePongoStat
(
lat
.
element
);
if
(
istrue
){
lockPongoArr
.
push
(
ilockpongo
);
}
else
{
}
}
}
return
3
;
}
solvePongoEle
(
lockPongoArr
:
Array
<
{
idx
:
number
,
part
:
string
}
>
){
//对本次解锁的猩猩部分,分成对应的几个猩猩
var
alockPongo
:
Array
<
number
>
=
[];
//只存左上
for
(
var
j
=
0
;
j
<
lockPongoArr
.
length
;
j
++
){
var
jpongodata
=
lockPongoArr
[
j
];
var
jpongoidx
=
jpongodata
.
idx
;
var
jpongopart
=
jpongodata
.
part
;
var
tlidx
:
number
;
if
(
jpongopart
==
"tl"
){
tlidx
=
jpongoidx
;
}
else
if
(
jpongopart
==
"tr"
){
tlidx
=
jpongoidx
-
1
;
}
else
if
(
jpongopart
==
"bl"
){
tlidx
=
jpongoidx
-
Tool
.
colNum
;
}
else
if
(
jpongopart
==
"br"
){
tlidx
=
jpongoidx
-
Tool
.
colNum
-
1
;
}
if
(
alockPongo
.
indexOf
(
tlidx
)
==-
1
){
alockPongo
.
push
(
tlidx
);
}
}
var
pglockstat
=
StateType
.
PongoLockState
;
//本次参与的消除的猩猩
//有几只猩猩自由了
for
(
var
p
=
0
;
p
<
alockPongo
.
length
;
p
++
){
var
tlpongoidx
=
alockPongo
[
p
];
var
trpongoidx
=
tlpongoidx
+
1
;
var
blpongoidx
=
tlpongoidx
+
Tool
.
colNum
;
var
brpongoidx
=
blpongoidx
+
1
;
var
tlpartstat
=
this
.
lattices
[
tlpongoidx
].
element
.
hasState
(
pglockstat
);
var
trpartstat
=
this
.
lattices
[
trpongoidx
].
element
.
hasState
(
pglockstat
);
var
blpartstat
=
this
.
lattices
[
blpongoidx
].
element
.
hasState
(
pglockstat
);
var
brpartstat
=
this
.
lattices
[
brpongoidx
].
element
.
hasState
(
pglockstat
);
//猩猩自由了
if
(
!
tlpartstat
&&!
trpartstat
&&!
blpartstat
&&!
brpartstat
){
if
(
this
.
freepongoArr
.
indexOf
(
tlpongoidx
)
==-
1
){
this
.
freepongoArr
.
push
(
tlpongoidx
);
}
}
}
}
/**
* 猩猩拍框,
* @param tlidx 拍框猩猩的左上
*/
pongoPaiKuang
(
tlidx
:
number
){
//随机发框
var
kuangarr
:
Array
<
number
>
=
new
Array
();
var
canusearr
:
Array
<
number
>
=
new
Array
();
//可以作为左上角的
var
allusearr
:
Array
<
number
>
=
new
Array
();
//所有的位置
var
tridx
=
tlidx
+
1
;
var
blidx
=
tlidx
+
Tool
.
colNum
;
var
bridx
=
blidx
+
1
;
var
pongoarr1
=
[
tlidx
,
tridx
,
blidx
,
bridx
];
for
(
var
k1row
=
0
;
k1row
<
Tool
.
rowNum
;
k1row
++
){
for
(
var
k1col
=
0
;
k1col
<
Tool
.
colNum
;
k1col
++
){
var
k1index
=
Tool
.
rcToIndex
(
k1row
,
k1col
);
var
isinpongo
=
pongoarr1
.
indexOf
(
k1index
);
if
(
isinpongo
==-
1
){
//粗略的去除拍的猩猩
if
(
k1row
<=
6
&&
k1col
<=
7
){
//全部可用左上
//需要去除会占到该猩猩的
canusearr
.
push
(
k1index
);
}
allusearr
.
push
(
k1index
);
}
}
}
// console.log("所有可作为左上角的",canusearr,"\n所有位置",allusearr);
//原来9*9
while
(
kuangarr
.
length
<
4
){
var
randkidx
=
Math
.
floor
(
Math
.
random
()
*
canusearr
.
length
);
var
randk
=
canusearr
[
randkidx
];
var
randkrc
=
Tool
.
indexToRc
(
randk
);
var
klatrow
=
randkrc
[
0
];
var
klatcol
=
randkrc
[
1
];
//把框占位的都加进去
var
k1idx
=
randk
;
var
k2idx
=
randk
+
1
;
var
k3idx
=
randk
+
Tool
.
colNum
;
var
k4idx
=
randk
+
Tool
.
colNum
+
1
;
var
k5idx
=
randk
+
Tool
.
colNum
*
2
;
var
k6idx
=
randk
+
Tool
.
colNum
*
2
+
1
;
var
kuangidxarr
=
[
k1idx
,
k2idx
,
k3idx
,
k4idx
,
k5idx
,
k6idx
];
var
allhave
:
boolean
=
true
;
var
haveele
:
boolean
=
false
;
for
(
var
k2
=
0
;
k2
<
kuangidxarr
.
length
;
k2
++
){
var
k2kuangidx
=
kuangidxarr
[
k2
];
var
lat
=
this
.
lattices
[
k2kuangidx
];
if
(
lat
){
haveele
=
true
;
}
var
k2kuanginuse
=
allusearr
.
indexOf
(
k2kuangidx
);
if
(
k2kuanginuse
==-
1
){
allhave
=
false
;
break
;
}
var
incanuseidx
=
canusearr
.
indexOf
(
k2kuangidx
);
if
(
incanuseidx
==-
1
){
}
}
if
(
allhave
&&
haveele
){
//所占框都可用
for
(
var
k3
=
0
;
k3
<
kuangidxarr
.
length
;
k3
++
){
var
k3kuangidx
=
kuangidxarr
[
k3
];
var
ellat
=
this
.
lattices
[
k3kuangidx
];
if
(
ellat
&&
Tool
.
judgeEliminate
(
ellat
)){
if
(
this
.
eliminatedElements
.
indexOf
(
k3kuangidx
)
==-
1
){
this
.
eliminatedElements
.
push
(
k3kuangidx
);
}
if
(
this
.
lattices
[
k3kuangidx
].
element
.
type
==
ElementType
.
FISH
)
{
this
.
lattices
[
k3kuangidx
].
element
.
nextFishState
();
}
}
var
k3allinuse
=
allusearr
.
indexOf
(
k3kuangidx
);
if
(
k3allinuse
==-
1
){
console
.
error
(
"出现了问题,检查"
);
}
else
{
allusearr
.
splice
(
k3allinuse
,
1
);
}
var
k3caninuse
=
canusearr
.
indexOf
(
k3kuangidx
);
if
(
k3caninuse
!=-
1
){
}
else
{
canusearr
.
splice
(
k3caninuse
,
1
);
}
}
kuangarr
.
push
(
k1idx
);
}
}
for
(
var
i
=
0
;
i
<
kuangarr
.
length
;
i
++
){
var
ikuang
=
kuangarr
[
i
];
var
pos
=
Tool
.
getPositionByIndex
(
ikuang
);
var
kuangpos
=
this
.
elementContainer
.
localToGlobal
(
pos
[
0
],
pos
[
1
]);
// let ikuangimg;
// if(this.pongoKarr.length>0){
// ikuangimg = this.pongoKarr.shift();
// }else{
// ikuangimg = new eui.Image("kuang_png");
// }
// this.addChild(ikuangimg);
// ikuangimg.x = kuangpos.x-40;
// ikuangimg.y = kuangpos.y-40;
// this.tweenKuangDis(ikuangimg);
if
(
pongojiodata
){
let
ikuangmv
;
if
(
pongojioArr
.
length
>
0
){
ikuangmv
=
pongojioArr
.
shift
();
}
else
{
ikuangmv
=
new
window
[
"SVGA"
].
EgretMovieClip
(
pongojiodata
);
}
ikuangmv
.
addEventListener
(
egret
.
Event
.
COMPLETE
,
this
.
playCompleteJio
,
this
);
this
.
addChild
(
ikuangmv
);
ikuangmv
.
x
=
kuangpos
.
x
-
160
;
ikuangmv
.
y
=
kuangpos
.
y
-
120
;
ikuangmv
.
gotoAndPlay
(
1
,
1
);
}
else
{
console
.
error
(
"无猩猩脚印data,一般不用处理"
);
this
.
initPongoJioSvgas
(
function
(){
let
ikuangmv
;
if
(
pongojioArr
.
length
>
0
){
ikuangmv
=
pongojioArr
.
shift
();
}
else
{
ikuangmv
=
new
window
[
"SVGA"
].
EgretMovieClip
(
pongojiodata
);
}
ikuangmv
.
addEventListener
(
egret
.
Event
.
COMPLETE
,
this
.
playCompleteJio
,
this
);
this
.
addChild
(
ikuangmv
);
ikuangmv
.
x
=
kuangpos
.
x
-
160
;
ikuangmv
.
y
=
kuangpos
.
y
-
120
;
ikuangmv
.
gotoAndPlay
(
1
,
1
);
}.
bind
(
this
));
}
}
}
playCompleteJio
(
e
){
// console.log("猩猩脚印播放完毕");
var
target
=
e
.
target
;
target
.
stop
();
target
.
removeEventListener
(
egret
.
Event
.
COMPLETE
,
this
.
playCompleteJio
,
this
);
if
(
target
.
parent
){
target
.
parent
.
removeChild
(
target
);
pongojioArr
.
push
(
target
);
}
}
//猩猩框的对象池
pongoKarr
:
Array
<
eui
.
Image
>
=
[];
tweenKuangDis
(
img
:
eui
.
Image
){
egret
.
Tween
.
get
(
img
)
.
set
({
alpha
:
1
})
.
to
({
alpha
:
0
},
6000
)
.
call
(()
=>
{
if
(
img
&&
img
.
parent
){
img
.
parent
.
removeChild
(
img
);
this
.
pongoKarr
.
push
(
img
);
}
})
}
/**
* 多猩猩清场
*/
pongoClearScene
(){
for
(
var
i
=
0
;
i
<
this
.
lattices
.
length
;
i
++
)
{
var
lat
=
this
.
lattices
[
i
];
if
(
Tool
.
judgeEliminate
(
lat
))
{
//本来没必要判断特效组合时是否有重复的消除元素,但是recoverEle里会有判断石头或果冻的加入,造成重复
if
(
this
.
eliminatedElements
.
indexOf
(
i
)
==
-
1
)
this
.
eliminatedElements
.
push
(
i
);
if
(
this
.
lattices
[
i
].
element
.
type
==
ElementType
.
FISH
)
{
this
.
lattices
[
i
].
element
.
nextFishState
();
}
//两个魔力鸟分数MM
if
(
Tool
.
judgeHasScore
(
lat
.
element
))
{
this
.
pushScoreAni
(
baseScore
*
this
.
effectContinuityTimes
*
effectBaseTimes
.
MM
,
Tool
.
getPositionByIndex
(
i
))
}
}
}
}
getNextIndexs
(
lat0
:
Lattice
){
var
indexMy
=
lat0
.
index
;
var
indexs
=
[
indexMy
-
Tool
.
colNum
,
indexMy
+
Tool
.
colNum
,
];
if
(
lat0
.
column
>
0
)
{
indexs
.
push
(
indexMy
-
1
)
}
if
(
lat0
.
column
<
Tool
.
colNum
-
1
)
{
indexs
.
push
(
indexMy
+
1
)
}
return
indexs
;
}
//检查附近所有元素
checkNebAll
(
latttice
:
Lattice
,
ele
?:
Element
)
{
...
...
@@ -3933,6 +4738,7 @@ export default class MainScene extends Scene {
this
.
checkLatticeBroken
(
latttice
);
this
.
checkFireworksNebEle
(
latttice
,
ele
);
this
.
checkFishNebEle
(
latttice
);
this
.
checkPongoNebEle
(
latttice
,
ele
);
//如果附近有石头
this
.
checkNebEle
(
latttice
,
(
lat
)
=>
{
return
lat
&&
lat
.
element
&&
lat
.
element
.
type
==
ElementType
.
ROCK
...
...
@@ -3994,6 +4800,12 @@ export default class MainScene extends Scene {
blockmv
.
gotoAndPlay
(
1
,
1
);
}
}
/**
* 猩猩的移除
*/
removePongo
(
index
:
number
){
this
.
removeOperation
(
index
);
}
/**
* 果冻的移除,包括动效
* @param index
...
...
@@ -4071,6 +4883,9 @@ export default class MainScene extends Scene {
//先赋值指向
let
ele
=
this
.
lattices
[
index
].
element
;
//猩猩新增,去除ticker
ele
.
addDisable
();
//添加进emptys
this
.
emptys
.
push
(
index
)
//从容器移除
...
...
@@ -4103,6 +4918,10 @@ export default class MainScene extends Scene {
// }
// }
// }
//消除
return
ele
}
...
...
@@ -4268,4 +5087,83 @@ export default class MainScene extends Scene {
}
return
addver
;
}
//新增大猩猩,猩猩有4部分组成
/**
* 判断当前idx是否是已经创建的大猩猩的一部分
* @param idx
* @param arr
*/
checkEleInAcreatePongo
(
idx
:
number
,
arr
:
Array
<
{
tl
:
number
,
tr
:
number
,
bl
:
number
,
br
:
number
}
>
){
var
inacreate
:
boolean
=
false
;
var
kpart
:
string
=
"tl"
;
for
(
var
i
=
0
;
i
<
arr
.
length
;
i
++
){
var
ipongo
=
arr
[
i
];
for
(
var
k
in
ipongo
){
var
kpar
=
ipongo
[
k
];
if
(
kpar
==
idx
){
kpart
=
k
;
inacreate
=
true
;
break
;
}
}
}
return
kpart
;
}
/**
* 创建一个大猩猩
* @param idx
*/
createOnePongoByTl
(
idx
:
number
){
var
tlpongorc
=
Tool
.
indexToRc
(
idx
);
var
tlpongorow
=
tlpongorc
[
0
];
var
tlpongocol
=
tlpongorc
[
1
];
var
trpongorow
=
tlpongorow
;
var
trpongocol
=
tlpongocol
+
1
;
var
blpongorow
=
tlpongorow
+
1
;
var
blpongocol
=
tlpongocol
;
var
brpongorow
=
blpongorow
;
var
brpongocol
=
blpongocol
+
1
;
var
pongodata
=
{
tl
:
idx
,
tr
:
Tool
.
rcToIndex
(
trpongorow
,
trpongocol
),
bl
:
Tool
.
rcToIndex
(
blpongorow
,
blpongocol
),
br
:
Tool
.
rcToIndex
(
brpongorow
,
brpongocol
)
}
return
pongodata
;
}
/**
* 猩猩的相关消除
*/
clearPongoEle
(
pongoidx
:
number
){
if
(
this
.
freepongoArr
.
length
==
1
){
this
.
pongoPaiKuang
(
this
.
freepongoArr
[
0
]);
}
else
if
(
this
.
freepongoArr
.
length
>
1
){
this
.
pongoClearScene
();
}
// if(this.gopongoArr.indexOf(pongoidx)==-1){
// this.gopongoArr.push(pongoidx);
// }
// if(this.gopongoArr.length==this.freepongoArr.length){
// console.log("猩猩开始消除",JSON.stringify(this.gopongoArr),JSON.stringify(this.freepongoArr))
// this.gopongoArr = new Array();
// this.freepongoArr = new Array();
// }
}
checkEliminatePongo
(
pongoidx
:
number
){
if
(
this
.
gopongoArr
.
indexOf
(
pongoidx
)
==-
1
){
this
.
gopongoArr
.
push
(
pongoidx
);
}
if
(
this
.
gopongoArr
.
length
==
this
.
freepongoArr
.
length
){
// console.log("猩猩开始消除",JSON.stringify(this.gopongoArr),JSON.stringify(this.freepongoArr))
this
.
gopongoArr
=
new
Array
();
this
.
freepongoArr
=
new
Array
();
this
.
eliminate
();
}
}
}
\ No newline at end of file
egret/src/mainScene/doSandAI.ts
View file @
741d00ef
...
...
@@ -63,13 +63,14 @@ const judgeActionIndex = (index: number, lattices: Lattice[]): number => {
while
(
arr
.
length
)
{
var
rand
=
Math
.
floor
(
Math
.
random
()
*
arr
.
length
);
var
i
=
arr
.
splice
(
rand
,
1
)[
0
];
if
(
Tool
.
judgeBaseEle
(
lattices
[
i
])
&&
if
(
(
Tool
.
judgeBaseEle
(
lattices
[
i
])
&&
!
lattices
[
i
].
element
.
hasAnyState
()
&&
!
lattices
[
i
].
element
.
candy
&&
!
lattices
[
i
].
sand
&&
!
lattices
[
i
].
block
&&
!
lattices
[
i
].
ice
&&
!
lattices
[
i
].
element
.
monster
!
lattices
[
i
].
element
.
monster
)
||
(
lattices
[
i
]
&&
lattices
[
i
].
element
&&
lattices
[
i
].
element
.
inPongoPart
)
//猩猩支持流沙
)
{
return
i
}
...
...
egret/src/something/Tool.ts
View file @
741d00ef
...
...
@@ -302,7 +302,8 @@ export class Tool {
lat
.
element
.
type
==
ElementType
.
FESTIVALELE_BIG
||
// lat.element.type == ElementType.FESTIVALELE_SMALL
lat
.
element
.
type
==
ElementType
.
CANNO
||
lat
.
element
.
type
==
ElementType
.
CANNO_BLOCK
lat
.
element
.
type
==
ElementType
.
CANNO_BLOCK
||
lat
.
element
.
type
==
ElementType
.
Pongo
)
{
return
false
}
...
...
@@ -366,7 +367,8 @@ export class Tool {
lat
.
element
.
type
==
ElementType
.
JELLY_MONSTER
||
lat
.
element
.
type
==
ElementType
.
FIREWORKS_SHOOTER
||
lat
.
element
.
type
==
ElementType
.
CANNO
||
lat
.
element
.
type
==
ElementType
.
CANNO_BLOCK
lat
.
element
.
type
==
ElementType
.
CANNO_BLOCK
||
lat
.
element
.
type
==
ElementType
.
Pongo
)
{
return
false
}
...
...
@@ -467,7 +469,8 @@ export class Tool {
ele
.
type
==
ElementType
.
FESTIVALELE_BIG
||
ele
.
type
==
ElementType
.
FESTIVALELE_SMALL
||
ele
.
type
==
ElementType
.
CANNO
||
ele
.
type
==
ElementType
.
CANNO_BLOCK
ele
.
type
==
ElementType
.
CANNO_BLOCK
||
ele
.
type
==
ElementType
.
Pongo
)
{
return
false
;
}
...
...
@@ -495,7 +498,8 @@ export class Tool {
ele
.
hasState
(
StateType
.
HAIRBALLBLACK
)
||
ele
.
hasState
(
StateType
.
HAIRBALLBROWN
)
||
ele
.
type
==
ElementType
.
CANNO
||
ele
.
type
==
ElementType
.
CANNO_BLOCK
ele
.
type
==
ElementType
.
CANNO_BLOCK
||
ele
.
type
==
ElementType
.
Pongo
)
{
return
false
;
}
...
...
@@ -517,7 +521,8 @@ export class Tool {
ele
.
hasState
(
StateType
.
HAIRBALLBLACK
)
||
ele
.
hasState
(
StateType
.
HAIRBALLBROWN
)
||
ele
.
type
==
ElementType
.
CANNO
||
ele
.
type
==
ElementType
.
CANNO_BLOCK
ele
.
type
==
ElementType
.
CANNO_BLOCK
||
ele
.
type
==
ElementType
.
Pongo
)
{
return
false
;
}
...
...
egret/src/something/chapters/Chapter24.ts
0 → 100644
View file @
741d00ef
import
{
ChapterData
}
from
"../interface/ChapterData"
;
//601-625
export
const
Chapters24
:
ChapterData
[]
=
[
//601
{
baseElementTypes
:
[
1
,
2
,
3
,
4
],
bubbleProbability
:
0
,
stepCount
:
25
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
9
,
count
:
78
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
3
,
3
,
0
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
61
,
6
,
61
,
6
,
61
,
6
,
61
,
6
,
61
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
3
],
connectedLats
:
[],
conveyor
:
[],
conveyorConnectedLats
:
[],
elements
:
[
1
,
2
,
1
,
2
,
2
,
2
,
1
,
2
,
1
,
1
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
1
,
1
,
23
,
23
,
1
,
1
,
1
,
23
,
23
,
1
,
1
,
23
,
23
,
1
,
1
,
1
,
23
,
23
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
1
,
2
,
2
,
2
,
2
],
baseElements
:
[
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
30
,
20
,
20
,
30
,
20
,
0
,
0
,
0
,
0
,
50
,
0
,
0
,
40
,
40
,
50
,
0
,
0
,
0
,
50
,
0
,
0
,
40
,
30
,
0
,
0
,
0
,
0
,
40
,
20
,
20
,
50
,
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
],
recycles
:
[],
generateLats
:
[
{
index
:
0
,
type
:
null
},
{
index
:
1
,
type
:
null
},
{
index
:
3
,
type
:
null
},
{
index
:
4
,
type
:
null
},
{
index
:
5
,
type
:
null
},
{
index
:
7
,
type
:
null
},
{
index
:
8
,
type
:
null
},
{
index
:
11
,
type
:
null
},
{
index
:
15
,
type
:
null
}
]
}
},
//602
{
baseElementTypes
:
[
1
,
2
,
3
,
4
],
bubbleProbability
:
5
,
stepCount
:
28
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
9
,
count
:
71
},
{
type
:
1
,
count
:
128
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
0
,
0
,
3
,
3
,
1
,
3
,
3
,
0
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
1
,
3
,
3
,
3
,
3
],
connectedLats
:
[
[
40
,
58
],
[
18
,
54
],
[
26
,
62
]
],
conveyor
:
[],
conveyorConnectedLats
:
[],
elements
:
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
23
,
23
,
1
,
23
,
23
,
1
,
1
,
1
,
1
,
23
,
23
,
1
,
23
,
23
,
1
,
1
,
1
,
1
,
2
,
2
,
6
,
2
,
2
,
1
,
1
,
4
,
4
,
2
,
2
,
2
,
2
,
2
,
4
,
4
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
6
,
1
,
1
,
1
,
1
],
baseElements
:
[
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
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
0
,
type
:
null
},
{
index
:
1
,
type
:
null
},
{
index
:
2
,
type
:
null
},
{
index
:
3
,
type
:
null
},
{
index
:
4
,
type
:
null
},
{
index
:
5
,
type
:
null
},
{
index
:
6
,
type
:
null
},
{
index
:
7
,
type
:
null
},
{
index
:
8
,
type
:
null
}
]
}
},
//603
{
baseElementTypes
:
[
1
,
2
,
3
,
4
],
bubbleProbability
:
0
,
stepCount
:
27
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
10
,
count
:
4
},
{
type
:
4
,
count
:
66
},
{
type
:
2
,
count
:
88
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
],
connectedLats
:
[
[
12
,
30
],
[
13
,
31
]
],
conveyor
:
[],
conveyorConnectedLats
:
[],
elements
:
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
8
,
8
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
8
,
2
,
8
,
2
,
1
,
1
,
1
],
baseElements
:
[
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
,
31
,
23
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
41
,
0
,
41
,
0
,
41
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
0
,
type
:
null
},
{
index
:
1
,
type
:
null
},
{
index
:
2
,
type
:
null
},
{
index
:
3
,
type
:
null
},
{
index
:
4
,
type
:
null
},
{
index
:
5
,
type
:
null
},
{
index
:
6
,
type
:
null
},
{
index
:
7
,
type
:
null
},
{
index
:
72
,
type
:
null
},
{
index
:
73
,
type
:
null
},
{
index
:
74
,
type
:
null
},
{
index
:
75
,
type
:
null
},
{
index
:
76
,
type
:
null
},
{
index
:
77
,
type
:
null
},
{
index
:
78
,
type
:
null
},
{
index
:
48
,
type
:
null
},
{
index
:
49
,
type
:
null
}
]
}
},
//604
{
baseElementTypes
:
[
0
,
1
,
3
,
4
],
bubbleProbability
:
0
,
stepCount
:
30
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
0
,
count
:
88
},
{
type
:
4
,
count
:
98
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
1
,
1
,
1
,
1
,
0
,
3
,
3
,
3
,
3
,
1
,
1
,
1
,
1
,
0
,
3
,
3
,
3
,
3
,
1
,
1
,
1
,
1
,
0
,
3
,
3
,
3
,
3
,
1
,
1
,
1
,
1
,
0
,
3
,
3
,
3
,
3
,
1
,
1
,
1
,
1
,
0
,
3
,
3
,
3
,
3
,
1
,
1
,
1
,
1
,
0
,
3
,
3
,
3
,
3
,
1
,
1
,
1
,
1
,
0
,
3
,
3
,
3
,
3
,
1
,
1
,
1
,
1
,
0
,
3
,
3
,
3
,
3
,
1
,
1
,
1
,
1
,
0
,
3
,
3
,
3
,
3
],
connectedLats
:
[],
conveyor
:
[],
conveyorConnectedLats
:
[],
elements
:
[
1
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
1
,
1
,
1
,
4
,
4
,
1
,
1
,
2
,
1
,
2
,
1
,
23
,
23
,
23
,
23
,
1
,
1
,
1
,
23
,
23
,
23
,
23
,
23
,
23
,
1
,
1
,
1
,
23
,
23
],
baseElements
:
[
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
13
,
11
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
12
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
0
,
type
:
null
},
{
index
:
1
,
type
:
null
},
{
index
:
2
,
type
:
null
},
{
index
:
3
,
type
:
null
},
{
index
:
5
,
type
:
null
},
{
index
:
6
,
type
:
null
},
{
index
:
7
,
type
:
null
},
{
index
:
8
,
type
:
null
}
]
}
},
//605
{
baseElementTypes
:
[
1
,
2
,
3
,
4
],
bubbleProbability
:
0
,
stepCount
:
24
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
36
,
count
:
53
},
{
type
:
34
,
count
:
25
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
0
,
0
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
0
,
7
,
7
,
7
,
7
],
connectedLats
:
[
[
2
,
20
]
],
conveyor
:
[
[
11
,
15
],
[
24
,
20
]
],
conveyorConnectedLats
:
[
[
15
,
11
],
[
20
,
24
]
],
elements
:
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
16
,
1
,
16
,
1
,
16
,
1
,
1
,
1
,
1
,
1
,
16
,
1
,
16
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
1
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
2
,
1
],
baseElements
:
[
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
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
2
,
type
:
null
},
{
index
:
3
,
type
:
null
},
{
index
:
4
,
type
:
null
},
{
index
:
5
,
type
:
null
},
{
index
:
6
,
type
:
null
},
{
index
:
27
,
type
:
null
},
{
index
:
28
,
type
:
null
},
{
index
:
34
,
type
:
null
},
{
index
:
35
,
type
:
null
}
]
}
},
//606
{
baseElementTypes
:
[
0
,
1
,
2
,
4
],
bubbleProbability
:
0
,
stepCount
:
25
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
9
,
count
:
71
},
{
type
:
2
,
count
:
68
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
6
,
6
,
6
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
0
,
0
,
3
,
3
,
3
,
0
,
0
,
0
,
3
,
0
,
3
,
0
,
0
,
0
],
connectedLats
:
[],
conveyor
:
[],
conveyorConnectedLats
:
[],
elements
:
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
23
,
23
,
1
,
1
,
1
,
23
,
23
,
1
,
1
,
23
,
23
,
1
,
1
,
1
,
23
,
23
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
9
,
1
,
9
,
1
,
9
,
1
,
9
,
1
,
9
,
2
,
2
,
2
,
1
,
1
,
1
,
2
,
2
,
2
,
1
,
1
,
1
,
2
,
1
,
2
,
1
,
1
,
1
],
baseElements
:
[
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
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
0
,
type
:
null
},
{
index
:
1
,
type
:
null
},
{
index
:
2
,
type
:
null
},
{
index
:
3
,
type
:
null
},
{
index
:
4
,
type
:
null
},
{
index
:
5
,
type
:
null
},
{
index
:
6
,
type
:
null
},
{
index
:
7
,
type
:
null
},
{
index
:
8
,
type
:
null
}
]
}
},
//607
{
baseElementTypes
:
[
0
,
1
,
3
,
4
],
bubbleProbability
:
0
,
stepCount
:
27
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
34
,
count
:
30
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
1
,
1
,
1
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
4
,
1
,
1
,
1
,
1
,
1
,
4
,
1
,
1
,
1
,
41
,
1
,
41
,
1
,
41
,
1
,
1
,
1
,
4
,
1
,
1
,
1
,
1
,
1
,
4
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
],
connectedLats
:
[],
conveyor
:
[],
conveyorConnectedLats
:
[],
elements
:
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
4
,
1
,
4
,
1
,
4
,
1
,
4
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
1
,
1
,
2
,
16
,
2
,
16
,
2
,
16
,
2
,
1
,
1
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
1
,
1
,
2
,
16
,
2
,
16
,
2
,
16
,
2
,
1
],
baseElements
:
[
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
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
0
,
type
:
null
},
{
index
:
1
,
type
:
null
},
{
index
:
2
,
type
:
null
},
{
index
:
6
,
type
:
null
},
{
index
:
7
,
type
:
null
},
{
index
:
8
,
type
:
null
},
{
index
:
12
,
type
:
null
},
{
index
:
13
,
type
:
null
},
{
index
:
14
,
type
:
null
}
]
}
},
//608
{
baseElementTypes
:
[
1
,
2
,
0
,
4
],
bubbleProbability
:
0
,
stepCount
:
33
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
0
,
count
:
98
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
],
connectedLats
:
[],
conveyor
:
[],
conveyorConnectedLats
:
[],
elements
:
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
6
,
1
,
23
,
23
,
1
,
6
,
1
,
1
,
1
,
1
,
6
,
23
,
23
,
6
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
1
],
baseElements
:
[
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
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
0
,
type
:
null
},
{
index
:
1
,
type
:
null
},
{
index
:
2
,
type
:
null
},
{
index
:
3
,
type
:
null
},
{
index
:
4
,
type
:
null
},
{
index
:
5
,
type
:
null
},
{
index
:
6
,
type
:
null
},
{
index
:
7
,
type
:
null
},
{
index
:
45
,
type
:
null
},
{
index
:
46
,
type
:
null
},
{
index
:
47
,
type
:
null
},
{
index
:
48
,
type
:
null
},
{
index
:
49
,
type
:
null
},
{
index
:
50
,
type
:
null
},
{
index
:
51
,
type
:
null
},
{
index
:
52
,
type
:
null
}
]
}
},
//609
{
baseElementTypes
:
[
1
,
2
,
3
,
4
],
bubbleProbability
:
0
,
stepCount
:
28
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
1
,
count
:
128
},
{
type
:
3
,
count
:
63
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
41
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
41
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
4
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
4
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
],
connectedLats
:
[],
conveyor
:
[
[
79
,
72
],
[
16
,
70
],
[
10
,
15
]
],
conveyorConnectedLats
:
[
[
72
,
10
],
[
15
,
16
],
[
70
,
72
]
],
elements
:
[
1
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
6
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
6
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
6
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
6
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
6
],
baseElements
:
[
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
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
1
,
type
:
null
},
{
index
:
2
,
type
:
null
},
{
index
:
3
,
type
:
null
},
{
index
:
4
,
type
:
null
},
{
index
:
5
,
type
:
null
},
{
index
:
6
,
type
:
null
},
{
index
:
7
,
type
:
null
},
{
index
:
9
,
type
:
null
}
]
}
},
//610
{
baseElementTypes
:
[
1
,
0
,
2
,
3
],
bubbleProbability
:
0
,
stepCount
:
31
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
9
,
count
:
51
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
0
,
0
,
3
,
3
,
3
,
3
,
3
,
0
,
0
,
0
,
0
,
0
,
3
,
3
,
3
,
0
,
0
,
0
,
0
,
3
,
0
,
3
,
3
,
3
,
0
,
3
,
0
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
0
,
0
,
3
,
3
,
3
,
3
,
3
,
0
,
0
,
0
,
0
,
3
,
3
,
3
,
3
,
3
,
0
,
0
],
connectedLats
:
[
[
19
,
55
],
[
25
,
61
]
],
conveyor
:
[],
conveyorConnectedLats
:
[],
elements
:
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
1
,
1
,
1
,
23
,
23
,
1
,
23
,
23
,
1
,
1
,
1
,
1
,
23
,
23
,
1
,
23
,
23
,
1
,
1
],
baseElements
:
[
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
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
2
,
type
:
null
},
{
index
:
3
,
type
:
null
},
{
index
:
4
,
type
:
null
},
{
index
:
5
,
type
:
null
},
{
index
:
6
,
type
:
null
},
{
index
:
19
,
type
:
null
},
{
index
:
25
,
type
:
null
},
{
index
:
27
,
type
:
null
},
{
index
:
35
,
type
:
null
}
]
}
},
//611
{
baseElementTypes
:
[
3
,
4
,
0
,
2
],
bubbleProbability
:
0
,
stepCount
:
23
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
9
,
count
:
65
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
0
,
0
,
0
,
0
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
0
],
connectedLats
:
[],
conveyor
:
[],
conveyorConnectedLats
:
[],
elements
:
[
1
,
1
,
1
,
1
,
2
,
2
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
14
,
2
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
1
,
1
,
1
,
2
,
1
,
1
,
1
,
1
,
2
,
1
,
1
,
2
,
1
,
2
,
2
,
2
,
2
,
1
,
1
,
2
,
1
,
2
,
0
,
0
,
0
,
0
,
1
,
2
,
1
,
2
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
2
,
0
,
0
,
0
,
0
,
0
,
1
,
1
],
baseElements
:
[
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
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
4
,
type
:
null
},
{
index
:
5
,
type
:
null
},
{
index
:
6
,
type
:
null
},
{
index
:
7
,
type
:
null
},
{
index
:
8
,
type
:
null
},
{
index
:
10
,
type
:
null
},
{
index
:
11
,
type
:
null
},
{
index
:
12
,
type
:
null
},
{
index
:
18
,
type
:
null
}
]
}
},
//612
{
baseElementTypes
:
[
1
,
2
,
0
,
3
],
bubbleProbability
:
0
,
stepCount
:
25
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
6
,
count
:
8
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
],
connectedLats
:
[
[
27
,
45
],
[
28
,
46
],
[
29
,
47
],
[
30
,
48
],
[
32
,
50
],
[
33
,
51
],
[
34
,
52
],
[
35
,
53
]
],
conveyor
:
[
[
71
,
66
],
[
65
,
74
],
[
62
,
56
],
[
55
,
73
],
[
53
,
46
],
[
45
,
72
]
],
conveyorConnectedLats
:
[
[
66
,
65
],
[
74
,
71
],
[
56
,
55
],
[
73
,
62
],
[
46
,
45
],
[
72
,
53
]
],
elements
:
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
3
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
],
baseElements
:
[
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
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
0
,
type
:
null
},
{
index
:
1
,
type
:
null
},
{
index
:
2
,
type
:
null
},
{
index
:
3
,
type
:
null
},
{
index
:
5
,
type
:
null
},
{
index
:
6
,
type
:
null
},
{
index
:
7
,
type
:
null
},
{
index
:
8
,
type
:
null
},
{
index
:
49
,
type
:
null
}
]
}
},
//613
{
baseElementTypes
:
[
1
,
0
,
3
,
4
],
bubbleProbability
:
0
,
stepCount
:
27
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
9
,
count
:
61
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
3
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
3
],
connectedLats
:
[],
conveyor
:
[],
conveyorConnectedLats
:
[],
elements
:
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
1
,
1
,
4
,
1
,
1
,
1
,
1
,
1
,
4
,
1
,
1
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
1
,
1
,
1
,
23
,
23
,
4
,
23
,
23
,
1
,
1
,
1
,
1
,
23
,
23
,
4
,
23
,
23
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
],
baseElements
:
[
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
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
0
,
type
:
null
},
{
index
:
8
,
type
:
null
},
{
index
:
10
,
type
:
null
},
{
index
:
11
,
type
:
null
},
{
index
:
12
,
type
:
null
},
{
index
:
13
,
type
:
null
},
{
index
:
14
,
type
:
null
},
{
index
:
15
,
type
:
null
},
{
index
:
16
,
type
:
null
},
{
index
:
72
,
type
:
null
},
{
index
:
80
,
type
:
null
}
]
}
},
//614
{
baseElementTypes
:
[
1
,
2
,
3
,
4
],
bubbleProbability
:
0
,
stepCount
:
18
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
36
,
count
:
55
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
0
,
0
,
0
,
0
,
0
,
0
,
0
,
7
,
7
,
0
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
0
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
0
,
0
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
0
,
0
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
0
,
0
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
0
,
0
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
0
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
0
,
7
,
7
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
connectedLats
:
[],
conveyor
:
[],
conveyorConnectedLats
:
[],
elements
:
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
8
,
9
,
1
,
9
,
1
,
1
,
1
,
1
,
8
,
8
,
8
,
1
,
1
,
1
,
1
,
1
,
8
,
8
,
8
,
1
,
1
,
1
,
1
,
1
,
8
,
8
,
8
,
1
,
1
,
1
,
1
,
1
,
8
,
9
,
8
,
1
,
1
,
1
,
1
,
1
,
8
,
9
,
8
,
1
,
1
,
1
,
1
,
1
,
8
,
8
,
8
,
1
,
1
,
1
,
1
,
1
,
1
,
8
,
1
,
1
,
1
,
1
,
1
,
9
,
1
,
9
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
],
baseElements
:
[
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
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
7
,
type
:
null
},
{
index
:
8
,
type
:
null
},
{
index
:
10
,
type
:
null
},
{
index
:
11
,
type
:
null
},
{
index
:
12
,
type
:
null
},
{
index
:
13
,
type
:
null
},
{
index
:
14
,
type
:
null
},
{
index
:
15
,
type
:
null
},
{
index
:
63
,
type
:
null
}
]
}
},
//615
{
baseElementTypes
:
[
1
,
2
,
3
,
4
],
bubbleProbability
:
0
,
stepCount
:
26
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
10
,
count
:
16
},
{
type
:
3
,
count
:
89
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
],
connectedLats
:
[
[
23
,
50
],
[
33
,
51
],
[
34
,
52
],
[
35
,
53
]
],
conveyor
:
[],
conveyorConnectedLats
:
[],
elements
:
[
1
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
12
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
2
,
1
,
8
,
8
,
8
,
9
,
2
,
23
,
23
,
2
,
1
,
8
,
8
,
8
,
9
,
2
,
23
,
23
,
2
,
1
,
8
,
8
,
8
,
9
,
2
,
2
,
2
,
2
,
1
,
8
,
8
,
8
,
9
],
baseElements
:
[
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
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
0
,
type
:
null
},
{
index
:
1
,
type
:
null
},
{
index
:
2
,
type
:
null
},
{
index
:
3
,
type
:
null
},
{
index
:
5
,
type
:
null
},
{
index
:
6
,
type
:
null
},
{
index
:
7
,
type
:
null
},
{
index
:
8
,
type
:
null
}
]
}
},
//616
{
baseElementTypes
:
[
1
,
2
,
3
,
4
],
bubbleProbability
:
0
,
stepCount
:
23
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
34
,
count
:
25
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
1
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
],
connectedLats
:
[
[
1
,
19
],
[
3
,
21
],
[
4
,
22
],
[
5
,
23
]
],
conveyor
:
[
[
26
,
19
],
[
18
,
36
],
[
37
,
43
],
[
44
,
62
],
[
61
,
55
],
[
54
,
72
],
[
73
,
80
]
],
conveyorConnectedLats
:
[
[
19
,
18
],
[
36
,
37
],
[
43
,
44
],
[
62
,
61
],
[
55
,
54
],
[
72
,
73
],
[
80
,
26
]
],
elements
:
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
16
,
1
,
16
,
16
,
16
,
1
,
16
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
],
baseElements
:
[
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
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
0
,
type
:
null
},
{
index
:
1
,
type
:
null
},
{
index
:
3
,
type
:
null
},
{
index
:
4
,
type
:
null
},
{
index
:
5
,
type
:
null
},
{
index
:
7
,
type
:
null
},
{
index
:
8
,
type
:
null
},
{
index
:
20
,
type
:
null
},
{
index
:
24
,
type
:
null
}
]
}
},
//617
{
baseElementTypes
:
[
0
,
2
,
3
,
4
],
bubbleProbability
:
0
,
stepCount
:
29
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
6
,
count
:
9
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
],
connectedLats
:
[],
conveyor
:
[],
conveyorConnectedLats
:
[],
elements
:
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
3
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
3
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
23
,
23
,
1
,
23
,
23
,
1
,
23
,
23
,
1
,
23
,
23
,
1
,
23
,
23
,
1
,
23
,
23
,
5
,
2
,
2
,
5
,
2
,
2
,
5
,
2
,
2
],
baseElements
:
[
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
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
0
,
type
:
null
},
{
index
:
1
,
type
:
null
},
{
index
:
2
,
type
:
null
},
{
index
:
3
,
type
:
null
},
{
index
:
4
,
type
:
null
},
{
index
:
5
,
type
:
null
},
{
index
:
6
,
type
:
null
},
{
index
:
7
,
type
:
null
},
{
index
:
8
,
type
:
null
}
]
}
},
//618
{
baseElementTypes
:
[
0
,
2
,
3
,
4
],
bubbleProbability
:
0
,
stepCount
:
25
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
9
,
count
:
74
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
61
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
6
,
3
,
61
,
3
,
3
,
3
,
3
,
3
,
6
,
3
,
3
,
3
,
61
,
3
,
3
,
3
,
6
,
3
,
3
,
3
,
3
,
3
,
61
,
3
,
6
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
],
connectedLats
:
[],
conveyor
:
[],
conveyorConnectedLats
:
[],
elements
:
[
1
,
2
,
2
,
1
,
1
,
1
,
2
,
2
,
1
,
1
,
1
,
2
,
2
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
4
,
8
,
8
,
8
,
4
,
1
,
2
,
2
,
2
,
1
,
4
,
8
,
4
,
1
,
2
,
2
,
2
,
2
,
2
,
1
,
4
,
1
,
2
,
2
,
2
],
baseElements
:
[
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
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
0
,
type
:
null
},
{
index
:
1
,
type
:
null
},
{
index
:
2
,
type
:
null
},
{
index
:
6
,
type
:
null
},
{
index
:
7
,
type
:
null
},
{
index
:
8
,
type
:
null
},
{
index
:
12
,
type
:
null
},
{
index
:
13
,
type
:
null
},
{
index
:
14
,
type
:
null
},
{
index
:
18
,
type
:
null
},
{
index
:
26
,
type
:
null
}
]
}
},
//619
{
baseElementTypes
:
[
0
,
1
,
3
,
4
],
bubbleProbability
:
0
,
stepCount
:
31
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
6
,
count
:
9
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
1
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
],
connectedLats
:
[
[
45
,
63
],
[
46
,
64
]
],
conveyor
:
[],
conveyorConnectedLats
:
[],
elements
:
[
1
,
1
,
1
,
1
,
1
,
3
,
3
,
3
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
4
,
1
,
4
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
12
,
2
,
2
,
2
,
2
,
2
,
23
,
23
,
1
,
12
,
2
,
2
,
2
,
2
,
2
,
23
,
23
,
1
,
12
,
2
,
2
,
2
,
2
,
2
],
baseElements
:
[
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
21
,
21
,
42
,
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
],
recycles
:
[],
generateLats
:
[
{
index
:
0
,
type
:
null
},
{
index
:
1
,
type
:
null
},
{
index
:
2
,
type
:
null
},
{
index
:
5
,
type
:
null
},
{
index
:
6
,
type
:
null
},
{
index
:
7
,
type
:
null
},
{
index
:
13
,
type
:
null
},
{
index
:
17
,
type
:
null
}
]
}
},
//620
{
baseElementTypes
:
[
1
,
2
,
3
,
4
],
bubbleProbability
:
0
,
stepCount
:
28
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
9
,
count
:
64
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
3
,
3
,
0
,
3
,
0
,
3
,
3
,
0
,
0
,
3
,
3
,
0
,
3
,
0
,
3
,
3
,
0
],
connectedLats
:
[],
conveyor
:
[],
conveyorConnectedLats
:
[],
elements
:
[
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
1
,
23
,
23
,
1
,
1
,
1
,
23
,
23
,
1
,
1
,
23
,
23
,
1
,
1
,
1
,
23
,
23
,
1
],
baseElements
:
[
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
,
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
,
23
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
21
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
0
,
type
:
null
},
{
index
:
1
,
type
:
null
},
{
index
:
2
,
type
:
null
},
{
index
:
3
,
type
:
null
},
{
index
:
4
,
type
:
null
},
{
index
:
5
,
type
:
null
},
{
index
:
6
,
type
:
null
},
{
index
:
7
,
type
:
null
},
{
index
:
8
,
type
:
null
},
{
index
:
64
,
type
:
null
},
{
index
:
65
,
type
:
null
},
{
index
:
67
,
type
:
null
},
{
index
:
69
,
type
:
null
},
{
index
:
70
,
type
:
null
}
]
}
},
//621
{
baseElementTypes
:
[
0
,
1
,
2
,
4
],
bubbleProbability
:
0
,
stepCount
:
34
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
9
,
count
:
72
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
],
connectedLats
:
[
[
3
,
21
],
[
13
,
31
],
[
23
,
41
],
[
33
,
51
],
[
43
,
61
],
[
53
,
71
]
],
conveyor
:
[],
conveyorConnectedLats
:
[],
elements
:
[
1
,
1
,
1
,
5
,
5
,
5
,
5
,
5
,
5
,
1
,
1
,
1
,
1
,
5
,
5
,
5
,
5
,
5
,
1
,
1
,
1
,
1
,
1
,
5
,
5
,
5
,
5
,
1
,
1
,
1
,
1
,
1
,
1
,
5
,
5
,
5
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
5
,
5
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
5
,
1
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
23
,
23
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
23
,
23
,
1
,
2
,
1
,
1
,
1
,
1
,
1
],
baseElements
:
[
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
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
0
,
type
:
null
},
{
index
:
1
,
type
:
null
},
{
index
:
3
,
type
:
null
},
{
index
:
4
,
type
:
null
},
{
index
:
5
,
type
:
null
},
{
index
:
6
,
type
:
null
},
{
index
:
7
,
type
:
null
},
{
index
:
8
,
type
:
null
},
{
index
:
11
,
type
:
null
}
]
}
},
//622
{
baseElementTypes
:
[
0
,
1
,
3
,
4
],
bubbleProbability
:
0
,
stepCount
:
25
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
9
,
count
:
72
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
3
,
3
,
0
,
0
,
0
,
0
,
0
,
3
,
3
,
3
,
3
,
3
,
0
,
0
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
61
,
3
,
6
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
6
,
3
,
61
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
],
connectedLats
:
[],
conveyor
:
[],
conveyorConnectedLats
:
[],
elements
:
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
2
,
2
,
1
,
1
,
1
,
2
,
2
,
2
,
2
,
2
,
2
,
1
,
1
,
1
,
2
,
2
,
2
,
2
,
2
,
2
,
5
,
5
,
5
,
2
,
2
,
2
,
2
,
14
,
2
,
1
,
5
,
1
,
2
,
14
,
2
,
2
,
2
,
2
,
5
,
5
,
5
,
2
,
2
,
2
],
baseElements
:
[
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
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
0
,
type
:
null
},
{
index
:
1
,
type
:
null
},
{
index
:
7
,
type
:
null
},
{
index
:
8
,
type
:
null
},
{
index
:
11
,
type
:
null
},
{
index
:
15
,
type
:
null
},
{
index
:
21
,
type
:
null
},
{
index
:
23
,
type
:
null
},
{
index
:
31
,
type
:
null
}
]
}
},
//623
{
baseElementTypes
:
[
1
,
2
,
3
,
4
],
bubbleProbability
:
0
,
stepCount
:
23
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
1
,
count
:
56
},
{
type
:
4
,
count
:
76
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
4
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
41
,
3
,
3
,
3
,
3
,
3
,
41
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
3
,
3
,
3
,
3
,
0
,
3
,
0
,
3
,
4
,
3
,
0
,
0
,
0
,
0
,
0
,
3
,
3
,
0
,
0
,
0
,
0
,
0
,
0
],
connectedLats
:
[],
conveyor
:
[],
conveyorConnectedLats
:
[],
elements
:
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
0
,
0
,
1
,
1
,
1
,
1
,
2
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
2
,
1
,
0
,
1
,
0
,
0
,
1
,
1
,
2
,
1
,
0
,
0
,
1
,
0
,
0
,
1
,
2
,
1
,
1
,
0
,
0
,
12
,
0
,
1
,
2
,
1
,
0
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
],
baseElements
:
[
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
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
0
,
type
:
null
},
{
index
:
1
,
type
:
null
},
{
index
:
2
,
type
:
null
},
{
index
:
3
,
type
:
null
},
{
index
:
4
,
type
:
null
},
{
index
:
5
,
type
:
null
},
{
index
:
6
,
type
:
null
},
{
index
:
7
,
type
:
null
},
{
index
:
17
,
type
:
null
},
{
index
:
25
,
type
:
null
},
{
index
:
41
,
type
:
null
},
{
index
:
49
,
type
:
null
}
]
}
},
//624
{
baseElementTypes
:
[
1
,
0
,
2
,
4
],
bubbleProbability
:
0
,
stepCount
:
24
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
36
,
count
:
69
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
0
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
0
,
7
,
0
,
7
,
7
,
7
,
7
,
7
,
0
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
41
,
41
,
0
,
7
,
7
,
7
,
0
,
4
,
4
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
0
,
7
,
7
,
7
,
7
,
7
,
0
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
],
connectedLats
:
[],
conveyor
:
[],
conveyorConnectedLats
:
[],
elements
:
[
1
,
16
,
1
,
1
,
1
,
1
,
1
,
16
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
4
,
4
,
4
,
1
,
1
,
1
,
5
,
5
,
1
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
4
,
4
,
4
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
4
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
],
baseElements
:
[
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
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
0
,
type
:
null
},
{
index
:
1
,
type
:
null
},
{
index
:
2
,
type
:
null
},
{
index
:
3
,
type
:
null
},
{
index
:
4
,
type
:
null
},
{
index
:
5
,
type
:
null
},
{
index
:
6
,
type
:
null
},
{
index
:
7
,
type
:
null
},
{
index
:
8
,
type
:
null
},
{
index
:
18
,
type
:
null
},
{
index
:
26
,
type
:
null
}
]
}
},
//625
{
baseElementTypes
:
[
0
,
2
,
3
,
4
],
bubbleProbability
:
0
,
stepCount
:
25
,
passTarget
:
{
type
:
1
,
elements
:
[
{
type
:
24
,
count
:
20
},
{
type
:
26
,
count
:
20
},
{
type
:
24
,
count
:
20
}
]
},
starScores
:
[
15000
,
20000
,
25000
],
map
:
{
lattices
:
[
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
],
connectedLats
:
[],
conveyor
:
[],
conveyorConnectedLats
:
[],
elements
:
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
13
,
13
,
13
,
13
,
13
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
1
,
2
,
2
,
1
,
1
,
1
,
2
,
2
,
1
,
2
,
1
,
2
,
2
,
2
,
2
,
2
,
1
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
],
baseElements
:
[
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
51
,
11
,
33
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
recycles
:
[],
generateLats
:
[
{
index
:
1
,
type
:
null
},
{
index
:
2
,
type
:
null
},
{
index
:
3
,
type
:
null
},
{
index
:
4
,
type
:
null
},
{
index
:
5
,
type
:
null
},
{
index
:
6
,
type
:
null
},
{
index
:
7
,
type
:
null
},
{
index
:
18
,
type
:
null
},
{
index
:
26
,
type
:
null
},
{
index
:
47
,
type
:
null
},
{
index
:
48
,
type
:
null
},
{
index
:
49
,
type
:
null
},
{
index
:
50
,
type
:
null
},
{
index
:
51
,
type
:
null
}
]
}
}
]
egret/src/something/chapters/getChapter.ts
View file @
741d00ef
...
...
@@ -25,6 +25,7 @@ import { Chapters20 } from "./Chapter20";
import
{
Chapters21
}
from
"./Chapter21"
;
import
{
Chapters22
}
from
"./Chapter22"
;
import
{
Chapters23
}
from
"./Chapter23"
;
import
{
Chapters24
}
from
"./Chapter24"
;
//所有的关卡
const
chapters
:
ChapterData
[]
=
[].
concat
(
...
...
@@ -51,6 +52,7 @@ const chapters: ChapterData[] = [].concat(
Chapters21
,
Chapters22
,
Chapters23
,
Chapters24
,
)
// console.log(chapters)
chapters
.
forEach
((
chapter
,
index
)
=>
{
...
...
@@ -71,6 +73,7 @@ chapters.forEach((chapter,index) => {
*/
export
function
getChapterData
(
index
:
number
):
ChapterData
{
//没有数据就返回第一关数据
// return chapters[612];
return
chapters
[
index
]
||
chapters
[
1
];
}
...
...
egret/src/something/class/Element.ts
View file @
741d00ef
...
...
@@ -31,6 +31,7 @@ import { State } from "./State";
import
wait
from
"../../../libs/new_tc/wait"
;
import
{
Fish
}
from
"./Fish"
;
import
MainScene
from
"../../mainScene/MainScene"
;
import
MovieClip
from
"../../movieclip/MovieClip"
;
/**
* 考虑到底继承白鹭的啥Component还是Container
* 坐标原点需要坐落在格子的中心点
...
...
@@ -39,6 +40,13 @@ import MainScene from "../../mainScene/MainScene";
//加载器
let
svgaParser
;
//猩猩新增草idx
enum
grassPongo
{
tl
=
"7,9"
,
tr
=
"4,6"
,
bl
=
"2"
,
br
=
"3"
}
export
class
Element
extends
eui
.
Component
{
private
_fishState
=
0
;
private
_isNeb
:
boolean
;
//是否
...
...
@@ -216,6 +224,349 @@ export class Element extends eui.Component {
var
roanum
=
Tool
.
getCannoRoaByDir
(
cannodir
);
this
.
cannobox
.
rotation
=
roanum
;
}
//猩猩的哪个部分
inPongoPart
:
string
;
pongoMoveClip
:
any
;
pongoMvLeftJio
:
any
;
pongoMvRightJio
:
any
;
/**
* 猩猩草的位置
* 2--左脚
* 3--右脚
* 4,6--右手
* 7,9--左手
*/
noseeimgs
:
Array
<
number
>
=
[];
// 剩余显示部分
lessPart
:
Array
<
string
>
=
[];
goFree
:
boolean
=
false
;
//暂给猩猩两种状态,normal正常,readyelm准备消除
/**
* 设置为猩猩的一部分
* @param part
*/
setPongoPart
(
part
:
string
){
this
.
inPongoPart
=
part
;
// console.log("我是猩猩的"+part);
if
(
part
==
"tl"
){
}
this
.
showImage
.
alpha
=
0.5
;
var
state
=
StateType
.
PongoLockState
;
if
(
this
.
hasState
(
state
)){
}
else
{
var
stateData
=
stateDatas
[
state
];
var
recoverName
:
RecoverName
=
stateData
.
recoverName
;
var
className
=
stateData
.
className
;
let
stateEx
=
Pool
.
takeOut
(
recoverName
);
if
(
!
stateEx
){
stateEx
=
new
className
();
}
this
.
states
[
state
]
=
stateEx
;
}
this
.
states
[
state
].
reset
(
part
);
//视图添加
this
.
addChild
(
this
.
states
[
state
]);
}
createPongo
(
pongomvdata
:
any
,
pongolfootdata
:
any
,
pongorfootdata
:
any
,){
if
(
this
.
pongoMoveClip
){
if
(
this
.
pongoMoveClip
.
parent
){
this
.
pongoMoveClip
.
parent
.
removeChild
(
this
.
pongoMoveClip
);
}
this
.
initPongoMoveClip
();
}
else
{
this
.
pongoMoveClip
=
new
window
[
"SVGA"
].
EgretMovieClip
(
pongomvdata
);
this
.
initPongoMoveClip
();
}
if
(
this
.
pongoMvLeftJio
){
if
(
this
.
pongoMvLeftJio
.
parent
){
this
.
pongoMvLeftJio
.
parent
.
removeChild
(
this
.
pongoMvLeftJio
);
}
this
.
initPongoMvLeftJio
();
}
else
{
this
.
pongoMvLeftJio
=
new
window
[
"SVGA"
].
EgretMovieClip
(
pongolfootdata
);
this
.
initPongoMvLeftJio
();
}
if
(
this
.
pongoMvRightJio
){
if
(
this
.
pongoMvRightJio
.
parent
){
this
.
pongoMvRightJio
.
parent
.
removeChild
(
this
.
pongoMvRightJio
);
}
this
.
initPongoMvRightJio
();
}
else
{
this
.
pongoMvRightJio
=
new
window
[
"SVGA"
].
EgretMovieClip
(
pongorfootdata
);
this
.
initPongoMvRightJio
();
}
}
initPongoMoveClip
(){
var
boxwidth
=
80
;
var
boxheight
=
80
;
var
mvwidth
=
161
;
var
mvheight
=
161
;
this
.
pongoMoveClip
.
x
=
(
boxwidth
-
mvwidth
)
/
2
;
this
.
pongoMoveClip
.
y
=
(
boxheight
-
mvheight
)
/
2
;
this
.
addChild
(
this
.
pongoMoveClip
);
// this.pongoMoveClip.gotoAndPlay(1);
this
.
pongoMoveClip
.
gotoAndStop
(
1
);
this
.
noseeimgs
=
new
Array
();
this
.
lessPart
=
[
"tl"
,
"tr"
,
"bl"
,
"br"
];
this
.
ispongoMvloop
=
true
;
this
.
goFree
=
false
;
this
.
pongoMvstart
=
1
;
this
.
pongoMvend
=
101
;
this
.
pongoMoveClip
.
addEventListener
(
egret
.
Event
.
ENTER_FRAME
,
this
.
pongoFrameAni
,
this
);
// egret.ticker.$startTick(this.update,this);
}
initPongoMvLeftJio
(){
var
boxwidth
=
80
;
var
boxheight
=
80
;
var
mvwidth
=
80
;
var
mvheight
=
80
;
this
.
pongoMvLeftJio
.
x
=
-
boxwidth
/
2
;
this
.
pongoMvLeftJio
.
y
=
boxheight
/
2
;
this
.
addChild
(
this
.
pongoMvLeftJio
);
this
.
pongoMvLeftJio
.
gotoAndStop
(
1
);
this
.
pongoMvLeftJio
.
addEventListener
(
egret
.
Event
.
COMPLETE
,
this
.
pongoRmLeftJio
,
this
);
}
initPongoMvRightJio
(){
var
boxwidth
=
80
;
var
boxheight
=
80
;
var
mvwidth
=
80
;
var
mvheight
=
80
;
this
.
pongoMvRightJio
.
x
=
boxwidth
/
2
;
this
.
pongoMvRightJio
.
y
=
boxheight
/
2
;
this
.
addChild
(
this
.
pongoMvRightJio
);
this
.
pongoMvRightJio
.
gotoAndStop
(
1
);
this
.
pongoMvRightJio
.
addEventListener
(
egret
.
Event
.
COMPLETE
,
this
.
pongoRmRightJio
,
this
);
}
//调整猩猩显示
changePongoStop
(
type
:
string
){
var
curframe
=
this
.
pongoMoveClip
.
currentFrame
;
// console.log("当前猩猩cur"+curframe);
if
(
type
==
"add"
){
curframe
+=
10
;
}
else
if
(
type
==
"cut"
){
curframe
-=
10
;
}
if
(
curframe
>=
481
){
curframe
=
481
;
}
else
if
(
curframe
<=
1
){
curframe
=
1
;
}
this
.
pongoMoveClip
.
gotoAndStop
(
curframe
);
}
/**
* 脚草的动画单独
*
* 上部俩手都在 tl,tr-------1-101;
*
* 俩手都在,放左手tr------121-171
* 放左手后,放右手 ------171-231
*
* 俩手都在,放右手tl-----241-291
* 放右手后,放左手 ------301-351
*
* 准备蹦 -------351-401
*/
//猩猩当前应处于的播放状态
//控制猩猩的播放
ispongoMvloop
:
boolean
=
false
;
pongoMvstart
:
number
=
1
;
pongoMvend
:
number
=
101
;
pongoFrameAni
(){
var
curframe
=
this
.
pongoMoveClip
.
currentFrame
;
//检测当前
// if(this.lessPart.indexOf("tl")!=-1&&this.lessPart.indexOf("tr")!=-1){
// this.ispongoMvloop = true;
// this.pongoMvstart = 1;
// this.pongoMvend = 101;
// }
// if(curframe<this.pongoMvend&&!this.pongoMoveClip.isPlaying){
// console.log("检测到动画暂停,继续播放");
// this.pongoMoveClip.gotoAndPlay(curframe,1);
// }
if
(
curframe
==
(
this
.
pongoMvend
-
1
)){
if
(
this
.
ispongoMvloop
){
// console.log("重播猩猩");
this
.
pongoMoveClip
.
gotoAndPlay
(
this
.
pongoMvstart
,
1
);
}
else
{
if
((
curframe
==
230
||
curframe
==
350
)
&&
this
.
goFree
){
this
.
pongoMvstart
=
351
;
this
.
pongoMvend
=
401
;
this
.
ispongoMvloop
=
false
;
this
.
pongoMoveClip
.
gotoAndPlay
(
this
.
pongoMvstart
,
1
);
}
else
{
this
.
pongoMoveClip
.
gotoAndStop
(
this
.
pongoMvend
);
if
(
curframe
==
400
){
this
.
mainScene
.
clearPongoEle
(
this
.
index
);
egret
.
Tween
.
get
(
this
.
pongoMoveClip
)
.
set
({
alpha
:
1
})
.
to
({
alpha
:
0.2
},
600
)
.
call
(()
=>
{
// this.mainScene.eliminate();
this
.
mainScene
.
checkEliminatePongo
(
this
.
index
);
})
}
}
}
}
}
//猩猩脚的动画
pongoRmLeftJio
(){
this
.
pongoMvLeftJio
.
stop
();
if
(
this
.
pongoMvLeftJio
.
parent
){
this
.
pongoMvLeftJio
.
parent
.
removeChild
(
this
.
pongoMvLeftJio
);
}
}
pongoRmRightJio
(){
this
.
pongoMvRightJio
.
stop
();
if
(
this
.
pongoMvRightJio
.
parent
){
this
.
pongoMvRightJio
.
parent
.
removeChild
(
this
.
pongoMvRightJio
);
}
}
changePongoStat
(
part
:
string
,
lock
:
string
=
"free"
){
var
partIarr
:
Array
<
number
>
=
[];
switch
(
part
){
case
"tl"
:
partIarr
=
grassPongo
.
tl
.
split
(
","
).
map
(
Number
);
break
;
case
"tr"
:
partIarr
=
grassPongo
.
tr
.
split
(
","
).
map
(
Number
);
break
;
case
"bl"
:
partIarr
=
grassPongo
.
bl
.
split
(
","
).
map
(
Number
);
break
;
case
"br"
:
partIarr
=
grassPongo
.
br
.
split
(
","
).
map
(
Number
);
break
;
case
"body"
:
break
;
default
:
console
.
error
(
"未定义猩猩解锁"
);
break
;
}
if
(
!
this
.
pongoMoveClip
){
return
;
}
if
(
lock
==
"free"
){
// for(var i=0;i<partIarr.length;i++){
// var ipart = partIarr[i];
// var ipartidx = this.noseeimgs.indexOf(ipart);
// if(ipartidx==-1){
// this.noseeimgs.push(ipart);
// }
// }
if
(
part
==
"body"
){
this
.
goFree
=
true
;
var
curframe
=
this
.
pongoMoveClip
.
currentFrame
;
if
(
this
.
pongoMoveClip
.
isPlaying
){
}
else
{
if
(
curframe
==
231
||
curframe
==
351
){
this
.
pongoMvstart
=
351
;
this
.
pongoMvend
=
401
;
this
.
ispongoMvloop
=
false
;
this
.
pongoMoveClip
.
gotoAndPlay
(
this
.
pongoMvstart
,
1
);
}
}
return
;
}
//检测切换动画
var
curframe
=
this
.
pongoMoveClip
.
currentFrame
;
if
(
part
==
"tl"
){
this
.
ispongoMvloop
=
false
;
if
(
this
.
lessPart
.
indexOf
(
"tr"
)
==-
1
){
this
.
pongoMvstart
=
301
;
this
.
pongoMvend
=
351
;
}
else
{
this
.
pongoMvstart
=
121
;
this
.
pongoMvend
=
171
;
}
this
.
pongoMoveClip
.
gotoAndPlay
(
curframe
,
1
);
}
else
if
(
part
==
"tr"
){
this
.
ispongoMvloop
=
false
;
if
(
this
.
lessPart
.
indexOf
(
"tl"
)
==-
1
){
this
.
pongoMvstart
=
171
;
this
.
pongoMvend
=
231
;
this
.
pongoMoveClip
.
gotoAndPlay
(
curframe
,
1
);
}
else
{
this
.
pongoMvstart
=
241
;
this
.
pongoMvend
=
291
;
this
.
pongoMoveClip
.
gotoAndPlay
(
this
.
pongoMvstart
,
1
);
}
}
else
if
(
part
==
"bl"
){
this
.
pongoMvLeftJio
.
gotoAndPlay
(
1
,
1
);
}
else
if
(
part
==
"br"
){
this
.
pongoMvRightJio
.
gotoAndPlay
(
1
,
1
);
}
var
inpart
=
this
.
lessPart
.
indexOf
(
part
);
if
(
inpart
!=-
1
){
this
.
lessPart
.
splice
(
inpart
,
1
);
}
}
else
{
//暂无猩猩被上枷锁功能
for
(
var
i
=
0
;
i
<
partIarr
.
length
;
i
++
){
var
ipart
=
partIarr
[
i
];
var
ipartidx
=
this
.
noseeimgs
.
indexOf
(
ipart
);
if
(
ipartidx
!=-
1
){
this
.
noseeimgs
.
splice
(
ipartidx
,
1
);
}
}
var
inpart
=
this
.
lessPart
.
indexOf
(
part
);
if
(
inpart
==-
1
){
this
.
lessPart
.
push
(
part
);
}
}
}
update
(
t
:
number
){
// if(this.pongoMoveClip&&this.pongoMoveClip.numChildren>10){
// for(let i=0;i<this.noseeimgs.length;i++){
// var noseeidx = this.noseeimgs[i];
// let noseeimg = this.pongoMoveClip.getChildAt(noseeidx) as egret.Bitmap;
// noseeimg.visible = false;
// }
// }
return
true
;
}
addDisable
(){
if
(
this
.
inPongoPart
&&
this
.
inPongoPart
==
"tl"
){
if
(
this
.
pongoMoveClip
&&
this
.
pongoMoveClip
.
parent
){
this
.
pongoMoveClip
.
parent
.
removeChild
(
this
.
pongoMoveClip
);
}
if
(
this
.
pongoMvLeftJio
&&
this
.
pongoMvLeftJio
.
parent
){
this
.
pongoMvLeftJio
.
parent
.
removeChild
(
this
.
pongoMvLeftJio
);
}
if
(
this
.
pongoMvRightJio
&&
this
.
pongoMvRightJio
.
parent
){
this
.
pongoMvRightJio
.
parent
.
removeChild
(
this
.
pongoMvRightJio
);
}
egret
.
ticker
.
$stopTick
(
this
.
update
,
this
);
}
}
removePongoLockStat
(){
var
state
=
StateType
.
PongoLockState
;
this
.
states
[
state
].
recover
();
this
.
states
[
state
]
=
null
;
}
changeShowCannoStat
(){
this
.
cannolab
.
text
=
this
.
_cannoStat
+
""
;
// this.changeMvPlay(this._cannoStat);
...
...
@@ -466,7 +817,12 @@ export class Element extends eui.Component {
this
.
_type
=
type
;
this
.
showImage
=
new
eui
.
Image
();
if
(
type
==
ElementType
.
Pongo
){
//猩猩不设默认图
}
else
{
this
.
changeSource
(
"ele"
+
this
.
type
+
"_png"
);
}
this
.
addChild
(
this
.
showImage
);
this
.
cannobox
=
new
eui
.
Group
();
...
...
egret/src/something/enum/ElementConfigType.ts
View file @
741d00ef
...
...
@@ -74,5 +74,5 @@ export enum ElementConfigType {
CANNO_DIR_RIGHT
=
21
,
/** 大炮石头 */
CANNO_BLOCK
=
22
,
xingxing
=
23
,
Pongo
=
23
,
}
\ No newline at end of file
egret/src/something/enum/ElementType.ts
View file @
741d00ef
...
...
@@ -60,6 +60,7 @@ export enum ElementType {
FLOWER
,
//37
CANNO
,
//38
CANNO_BLOCK
,
//39
Pongo
,
//40
}
export
const
isMonsterEle
=
(
t
:
ElementType
)
=>
{
...
...
egret/src/something/enum/RecoverName.ts
View file @
741d00ef
...
...
@@ -74,6 +74,7 @@ export enum RecoverName {
HAIRBALLGREY_STATE
=
"HairballGreyState"
,
HAIRBALLBLACK_STATE
=
"HairballBlackState"
,
HAIRBALLBROWN_STATE
=
"HairballBrownState"
,
PongoLock_State
=
"PongoLock_State"
,
BLOCK_STATE
=
"BLOCK_STATE"
,
...
...
egret/src/something/enum/StateType.ts
View file @
741d00ef
...
...
@@ -6,6 +6,7 @@ import { HairballBrownState } from "../states/HairballBrownState";
import
{
HairballBlackState
}
from
"../states/HairballBlackState"
;
import
{
BlockLockState
}
from
"../states/BlockLockState"
;
import
{
HoneyState
}
from
"../states/HoneyState"
;
import
{
PongoLockState
}
from
"../states/PongoLockState"
;
/**
* 状态类型
...
...
@@ -18,6 +19,7 @@ export enum StateType {
HAIRBALLBLACK
,
//黑色毛球 ,两次消除,一次闭眼
BLOCK_LOCK
,
//石门盖住状态
HONEY
,
//蜂蜜
PongoLockState
,
//猩猩部位被封住
}
...
...
@@ -30,4 +32,5 @@ export const stateDatas: { recoverName: RecoverName, className: any }[] = [
{
recoverName
:
RecoverName
.
HAIRBALLBLACK_STATE
,
className
:
HairballBlackState
},
{
recoverName
:
RecoverName
.
BLOCK_STATE
,
className
:
BlockLockState
},
{
recoverName
:
RecoverName
.
HONEY_STATE
,
className
:
HoneyState
},
{
recoverName
:
RecoverName
.
PongoLock_State
,
className
:
PongoLockState
},
]
\ No newline at end of file
egret/src/something/states/PongoLockState.ts
0 → 100644
View file @
741d00ef
import
{
State
}
from
"../class/State"
;
import
{
Pool
}
from
"../Pool"
;
import
{
RecoverName
}
from
"../enum/RecoverName"
;
export
class
PongoLockState
extends
State
{
private
showImage
:
egret
.
Bitmap
;
constructor
()
{
super
();
this
.
showImage
=
new
egret
.
Bitmap
();
this
.
addChild
(
this
.
showImage
);
}
/**
* 需要根据猩猩部分来区分显示
* @param inPongoPart
*/
reset
(
inPongoPart
:
string
)
{
this
.
once
(
egret
.
Event
.
ADDED
,
this
.
initShow
,
this
);
}
initShow
(){
this
.
alpha
=
0
;
var
texture
:
egret
.
Texture
=
RES
.
getRes
(
"lockVine_png"
);
this
.
showImage
.
texture
=
texture
;
this
.
showImage
.
x
=
-
texture
.
textureWidth
/
2
;
this
.
showImage
.
y
=
-
texture
.
textureHeight
/
2
}
recover
()
{
egret
.
Tween
.
get
(
this
)
.
to
({
alpha
:
0
},
300
)
.
call
(()
=>
{
if
(
this
.
parent
)
this
.
parent
.
removeChild
(
this
);
Pool
.
recover
(
RecoverName
.
PongoLock_State
,
this
);
})
}
}
\ No newline at end of file
mock/happyclear/home.json
View file @
741d00ef
...
...
@@ -3013,6 +3013,131 @@
"levelNum"
:
600
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
601
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
602
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
603
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
604
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
605
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
606
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
607
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
608
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
609
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
610
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
611
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
612
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
613
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
614
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
615
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
616
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
617
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
618
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
619
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
620
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
621
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
622
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
623
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
624
,
"maxScore"
:
47440
,
"stars"
:
1
},
{
"levelNum"
:
625
,
"maxScore"
:
47440
,
"stars"
:
1
}
],
"remainProp"
:
[
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment