Goo Tower and Zuma Changes

This commit is contained in:
Brian Fertig 2026-07-29 19:50:51 -06:00
parent 052417aa9a
commit a6573726ff
29 changed files with 4980 additions and 4867 deletions

View File

@ -28,30 +28,89 @@
1000
]
]
},
{
"kind": "solid",
"poly": [
[
287,
847
],
[
292,
463
],
[
517,
460
],
[
525,
540
],
[
335,
553
],
[
336,
852
]
]
},
{
"kind": "solid",
"poly": [
[
648,
461
],
[
636,
532
],
[
958,
534
],
[
955,
850
],
[
1056,
850
],
[
1055,
458
]
]
}
],
"balls": [
{
"x": 300,
"y": 836,
"type": "common",
"pinned": true
"x": 516,
"y": 828,
"type": "ivy",
"pinned": false
},
{
"x": 362,
"y": 836,
"type": "common",
"pinned": true
"x": 609,
"y": 827,
"type": "ivy",
"pinned": false
},
{
"x": 331,
"y": 782,
"type": "common"
"x": 563,
"y": 757,
"type": "ivy",
"pinned": false
}
],
"strands": [
[
2,
1,
0
],
[
@ -59,117 +118,117 @@
1
],
[
0,
1
2,
0
]
],
"pipe": {
"x": 660,
"y": 560,
"r": 46
},
"pile": [
{
"x": 540,
"y": 834,
"x": 702,
"y": 822,
"type": "ivy"
},
{
"x": 570,
"y": 834,
"x": 743,
"y": 820,
"type": "ivy"
},
{
"x": 600,
"y": 834,
"x": 779,
"y": 824,
"type": "ivy"
},
{
"x": 630,
"y": 834,
"x": 848,
"y": 825,
"type": "ivy"
},
{
"x": 660,
"y": 834,
"x": 891,
"y": 822,
"type": "ivy"
},
{
"x": 690,
"y": 834,
"x": 866,
"y": 795,
"type": "ivy"
},
{
"x": 540,
"y": 804,
"x": 821,
"y": 792,
"type": "ivy"
},
{
"x": 570,
"y": 804,
"x": 785,
"y": 789,
"type": "ivy"
},
{
"x": 600,
"y": 804,
"x": 752,
"y": 784,
"type": "ivy"
},
{
"x": 630,
"y": 804,
"x": 727,
"y": 786,
"type": "ivy"
},
{
"x": 660,
"y": 804,
"x": 810,
"y": 825,
"type": "ivy"
},
{
"x": 690,
"y": 804,
"x": 743,
"y": 742,
"type": "ivy"
},
{
"x": 860,
"y": 834,
"type": "common"
"x": 785,
"y": 764,
"type": "ivy"
},
{
"x": 890,
"y": 834,
"type": "common"
"x": 825,
"y": 762,
"type": "ivy"
},
{
"x": 920,
"y": 834,
"type": "common"
"x": 851,
"y": 762,
"type": "ivy"
},
{
"x": 950,
"y": 834,
"type": "common"
"x": 791,
"y": 728,
"type": "ivy"
},
{
"x": 980,
"y": 834,
"type": "common"
"x": 845,
"y": 742,
"type": "ivy"
},
{
"x": 1010,
"y": 834,
"type": "common"
"x": 825,
"y": 705,
"type": "ivy"
},
{
"x": 1040,
"y": 834,
"type": "common"
"x": 762,
"y": 707,
"type": "ivy"
},
{
"x": 1070,
"y": 834,
"type": "common"
"x": 803,
"y": 679,
"type": "ivy"
}
],
"pipe": {
"x": 598,
"y": 110,
"r": 46
},
"required": 4,
"ocdTarget": 9
}

View File

@ -1,160 +1,160 @@
{
"level": 1,
"name": "Temple Gate",
"frog": [
960,
580
],
"colors": 4,
"seed": 16838,
"starScores": [
820,
1230,
1640
],
"paths": [
{
"shape": "horseshoe",
"points": [
[
-80,
130
],
[
60,
130
],
[
960,
130
],
[
1191,
154
],
[
1398,
210
],
[
1565,
294
],
[
1680,
399
],
[
1734,
514
],
[
1727,
632
],
[
1659,
742
],
[
1538,
836
],
[
1375,
908
],
[
1185,
951
],
[
983,
964
],
[
785,
946
],
[
607,
900
],
[
462,
831
],
[
361,
743
],
[
311,
646
],
[
313,
547
],
[
366,
454
],
[
464,
374
],
[
598,
313
],
[
755,
275
],
[
923,
263
],
[
1087,
276
],
[
1235,
312
],
[
1356,
368
],
[
1441,
438
],
[
1485,
517
],
[
1485,
598
],
[
1445,
673
],
[
1368,
739
]
],
"tunnels": [],
"quota": 26,
"introBalls": 8,
"pushSpeed": 76,
"powerUpRate": 0.07
}
],
"background": "zuma-background-2"
"level": 1,
"name": "Temple Gate",
"frog": [
960,
580
],
"colors": 4,
"seed": 16838,
"starScores": [
820,
1230,
1640
],
"paths": [
{
"shape": "horseshoe",
"points": [
[
-80,
130
],
[
60,
130
],
[
960,
130
],
[
1191,
154
],
[
1398,
210
],
[
1565,
294
],
[
1680,
399
],
[
1734,
514
],
[
1727,
632
],
[
1659,
742
],
[
1538,
836
],
[
1375,
908
],
[
1185,
951
],
[
983,
964
],
[
785,
946
],
[
607,
900
],
[
462,
831
],
[
361,
743
],
[
311,
646
],
[
313,
547
],
[
366,
454
],
[
464,
374
],
[
598,
313
],
[
755,
275
],
[
923,
263
],
[
1087,
276
],
[
1235,
312
],
[
1356,
368
],
[
1441,
438
],
[
1485,
517
],
[
1485,
598
],
[
1445,
673
],
[
1368,
739
]
],
"tunnels": [],
"quota": 26,
"introBalls": 8,
"pushSpeed": 76,
"powerUpRate": 0.07
}
],
"background": "zuma-background-1"
}

View File

@ -1,75 +1,76 @@
{
"level": 2,
"name": "Temple River",
"frog": [
1626,
805
],
"colors": 4,
"seed": 12345,
"starScores": [
640,
960,
1280
],
"paths": [
{
"shape": "custom",
"points": [
[
-80,
300
],
[
650,
65
],
[
931,
83
],
[
993,
327
],
[
441,
559
],
[
423,
821
],
[
767,
838
],
[
1292,
130
],
[
1566,
73
],
[
1624,
288
],
[
1431,
544
],
[
1247,
907
]
],
"tunnels": [],
"quota": 24,
"introBalls": 8,
"pushSpeed": 45,
"powerUpRate": 0.06
}
]
"level": 2,
"name": "Temple River",
"frog": [
1626,
805
],
"colors": 4,
"seed": 12345,
"starScores": [
640,
960,
1280
],
"paths": [
{
"shape": "custom",
"points": [
[
-80,
300
],
[
650,
65
],
[
931,
83
],
[
993,
327
],
[
441,
559
],
[
423,
821
],
[
767,
838
],
[
1292,
130
],
[
1566,
73
],
[
1624,
288
],
[
1431,
544
],
[
1247,
907
]
],
"tunnels": [],
"quota": 24,
"introBalls": 8,
"pushSpeed": 45,
"powerUpRate": 0.06
}
],
"background": "zuma-background-1"
}

View File

@ -1,105 +1,106 @@
{
"level": 3,
"name": "Dual Strike",
"frog": [
966,
579
],
"colors": 4,
"seed": 12345,
"starScores": [
640,
960,
1280
],
"paths": [
{
"shape": "custom",
"points": [
[
-49,
235
],
[
669,
132
],
[
1515,
190
],
[
1726,
411
],
[
1710,
667
],
[
1210,
817
],
[
689,
813
],
[
482,
604
]
],
"tunnels": [],
"quota": 20,
"introBalls": 8,
"pushSpeed": 30,
"powerUpRate": 0.06
},
{
"shape": "custom",
"points": [
[
1995,
920
],
[
1113,
954
],
[
265,
940
],
[
113,
633
],
[
330,
341
],
[
628,
249
],
[
1103,
251
],
[
1361,
350
],
[
1466,
491
]
],
"tunnels": [],
"quota": 20,
"introBalls": 8,
"pushSpeed": 30,
"powerUpRate": 0.06
}
]
"level": 3,
"name": "Dual Strike",
"frog": [
966,
579
],
"colors": 4,
"seed": 12345,
"starScores": [
640,
960,
1280
],
"paths": [
{
"shape": "custom",
"points": [
[
-49,
235
],
[
669,
132
],
[
1515,
190
],
[
1726,
411
],
[
1710,
667
],
[
1210,
817
],
[
689,
813
],
[
482,
604
]
],
"tunnels": [],
"quota": 20,
"introBalls": 8,
"pushSpeed": 30,
"powerUpRate": 0.06
},
{
"shape": "custom",
"points": [
[
1995,
920
],
[
1113,
954
],
[
265,
940
],
[
113,
633
],
[
330,
341
],
[
628,
249
],
[
1103,
251
],
[
1361,
350
],
[
1466,
491
]
],
"tunnels": [],
"quota": 20,
"introBalls": 8,
"pushSpeed": 30,
"powerUpRate": 0.06
}
],
"background": "zuma-background-1"
}

View File

@ -1,84 +1,85 @@
{
"level": 21,
"name": "New Path",
"frog": [
1661,
544
],
"colors": 4,
"seed": 12345,
"starScores": [
640,
960,
1280
],
"paths": [
{
"shape": "custom",
"points": [
[
-65,
93
],
[
466,
132
],
[
1034,
374
],
[
1116,
817
],
[
706,
956
],
[
156,
663
],
[
316,
309
],
[
1095,
143
],
[
1484,
780
],
[
1210,
979
],
[
853,
719
],
[
552,
397
]
],
"tunnels": [
[
3182,
3834
],
[
5104,
5615
]
],
"quota": 24,
"introBalls": 8,
"pushSpeed": 30,
"powerUpRate": 0.06
}
]
"level": 21,
"name": "New Path",
"frog": [
1661,
544
],
"colors": 4,
"seed": 12345,
"starScores": [
640,
960,
1280
],
"paths": [
{
"shape": "custom",
"points": [
[
-65,
93
],
[
466,
132
],
[
1034,
374
],
[
1116,
817
],
[
706,
956
],
[
156,
663
],
[
316,
309
],
[
1095,
143
],
[
1484,
780
],
[
1210,
979
],
[
853,
719
],
[
552,
397
]
],
"tunnels": [
[
3182,
3834
],
[
5104,
5615
]
],
"quota": 24,
"introBalls": 8,
"pushSpeed": 30,
"powerUpRate": 0.06
}
],
"background": "zuma-background-4"
}

View File

@ -1,221 +1,221 @@
{
"level": 5,
"name": "Serpent Coil",
"frog": [
960,
575
],
"colors": 4,
"background": "zuma-background-1",
"seed": 40595,
"starScores": [
1250,
1870,
2490
],
"paths": [
{
"shape": "spiral",
"points": [
[
-80,
120
],
[
58,
120
],
[
960,
120
],
[
1195,
143
],
[
1406,
201
],
[
1577,
287
],
[
1694,
395
],
[
1749,
514
],
[
1739,
635
],
[
1667,
749
],
[
1541,
846
],
[
1370,
919
],
[
1171,
962
],
[
960,
973
],
[
754,
952
],
[
571,
901
],
[
423,
826
],
[
322,
732
],
[
276,
628
],
[
285,
523
],
[
349,
425
],
[
459,
341
],
[
607,
279
],
[
779,
243
],
[
960,
234
],
[
1136,
253
],
[
1292,
297
],
[
1417,
362
],
[
1502,
442
],
[
1540,
530
],
[
1530,
619
],
[
1475,
702
],
[
1381,
771
],
[
1256,
823
],
[
1111,
853
],
[
960,
859
],
[
814,
843
],
[
685,
806
],
[
583,
751
],
[
515,
685
],
[
485,
612
],
[
494,
539
],
[
541,
472
],
[
619,
416
],
[
721,
375
],
[
838,
352
],
[
960,
348
]
],
"tunnels": [
[
2633,
3291
]
],
"quota": 38,
"introBalls": 11,
"pushSpeed": 88,
"powerUpRate": 0.06
}
]
"level": 5,
"name": "Serpent Coil",
"frog": [
960,
575
],
"colors": 4,
"background": "zuma-background-1",
"seed": 40595,
"starScores": [
1250,
1870,
2490
],
"paths": [
{
"shape": "spiral",
"points": [
[
-80,
120
],
[
58,
120
],
[
960,
120
],
[
1195,
143
],
[
1406,
201
],
[
1577,
287
],
[
1694,
395
],
[
1749,
514
],
[
1739,
635
],
[
1667,
749
],
[
1541,
846
],
[
1370,
919
],
[
1171,
962
],
[
960,
973
],
[
754,
952
],
[
571,
901
],
[
423,
826
],
[
322,
732
],
[
276,
628
],
[
285,
523
],
[
349,
425
],
[
459,
341
],
[
607,
279
],
[
779,
243
],
[
960,
234
],
[
1136,
253
],
[
1292,
297
],
[
1417,
362
],
[
1502,
442
],
[
1540,
530
],
[
1530,
619
],
[
1475,
702
],
[
1381,
771
],
[
1256,
823
],
[
1111,
853
],
[
960,
859
],
[
814,
843
],
[
685,
806
],
[
583,
751
],
[
515,
685
],
[
485,
612
],
[
494,
539
],
[
541,
472
],
[
619,
416
],
[
721,
375
],
[
838,
352
],
[
960,
348
]
],
"tunnels": [
[
2633,
3291
]
],
"quota": 38,
"introBalls": 11,
"pushSpeed": 88,
"powerUpRate": 0.06
}
]
}

View File

@ -1,232 +1,232 @@
{
"level": 6,
"name": "Crossroads",
"frog": [
960,
990
],
"colors": 4,
"background": "zuma-background-2",
"seed": 48514,
"starScores": [
1120,
1670,
2230
],
"paths": [
{
"shape": "figureEight",
"points": [
[
-80,
830
],
[
60,
690
],
[
130,
505
],
[
136,
416
],
[
154,
333
],
[
183,
259
],
[
223,
199
],
[
274,
156
],
[
334,
134
],
[
404,
132
],
[
481,
152
],
[
565,
191
],
[
655,
249
],
[
749,
321
],
[
846,
403
],
[
945,
491
],
[
1044,
581
],
[
1142,
665
],
[
1237,
741
],
[
1328,
803
],
[
1414,
849
],
[
1494,
874
],
[
1566,
879
],
[
1629,
863
],
[
1683,
826
],
[
1726,
771
],
[
1759,
701
],
[
1780,
620
],
[
1789,
532
],
[
1787,
443
],
[
1773,
357
],
[
1747,
280
],
[
1710,
215
],
[
1663,
167
],
[
1605,
138
],
[
1538,
130
],
[
1463,
143
],
[
1381,
177
],
[
1293,
230
],
[
1200,
298
],
[
1103,
377
],
[
1005,
464
],
[
906,
554
],
[
808,
640
],
[
711,
719
],
[
619,
786
],
[
531,
837
],
[
449,
869
],
[
375,
880
],
[
309,
870
],
[
252,
839
]
],
"tunnels": [],
"quota": 34,
"introBalls": 10,
"pushSpeed": 88,
"powerUpRate": 0.06
}
]
"level": 6,
"name": "Crossroads",
"frog": [
960,
990
],
"colors": 4,
"background": "zuma-background-1",
"seed": 48514,
"starScores": [
1120,
1670,
2230
],
"paths": [
{
"shape": "figureEight",
"points": [
[
-80,
830
],
[
60,
690
],
[
130,
505
],
[
136,
416
],
[
154,
333
],
[
183,
259
],
[
223,
199
],
[
274,
156
],
[
334,
134
],
[
404,
132
],
[
481,
152
],
[
565,
191
],
[
655,
249
],
[
749,
321
],
[
846,
403
],
[
945,
491
],
[
1044,
581
],
[
1142,
665
],
[
1237,
741
],
[
1328,
803
],
[
1414,
849
],
[
1494,
874
],
[
1566,
879
],
[
1629,
863
],
[
1683,
826
],
[
1726,
771
],
[
1759,
701
],
[
1780,
620
],
[
1789,
532
],
[
1787,
443
],
[
1773,
357
],
[
1747,
280
],
[
1710,
215
],
[
1663,
167
],
[
1605,
138
],
[
1538,
130
],
[
1463,
143
],
[
1381,
177
],
[
1293,
230
],
[
1200,
298
],
[
1103,
377
],
[
1005,
464
],
[
906,
554
],
[
808,
640
],
[
711,
719
],
[
619,
786
],
[
531,
837
],
[
449,
869
],
[
375,
880
],
[
309,
870
],
[
252,
839
]
],
"tunnels": [],
"quota": 34,
"introBalls": 10,
"pushSpeed": 88,
"powerUpRate": 0.06
}
]
}

View File

@ -1,384 +1,384 @@
{
"level": 7,
"name": "Rapids",
"frog": [
880,
770
],
"colors": 4,
"background": "zuma-background-1",
"seed": 56433,
"starScores": [
910,
1360,
1810
],
"paths": [
{
"shape": "sCurve",
"points": [
[
-80,
140
],
[
-11,
140
],
[
57,
140
],
[
126,
140
],
[
195,
140
],
[
263,
140
],
[
332,
140
],
[
401,
140
],
[
470,
140
],
[
538,
140
],
[
607,
140
],
[
676,
140
],
[
744,
140
],
[
813,
140
],
[
882,
140
],
[
950,
140
],
[
1019,
140
],
[
1088,
140
],
[
1157,
140
],
[
1225,
140
],
[
1294,
140
],
[
1363,
140
],
[
1431,
140
],
[
1500,
140
],
[
1572,
153
],
[
1635,
189
],
[
1682,
245
],
[
1707,
314
],
[
1707,
386
],
[
1682,
455
],
[
1635,
511
],
[
1572,
547
],
[
1500,
560
],
[
1431,
560
],
[
1362,
560
],
[
1293,
560
],
[
1224,
560
],
[
1156,
560
],
[
1087,
560
],
[
1018,
560
],
[
949,
560
],
[
880,
560
],
[
811,
560
],
[
742,
560
],
[
673,
560
],
[
604,
560
],
[
536,
560
],
[
467,
560
],
[
398,
560
],
[
329,
560
],
[
260,
560
],
[
188,
573
],
[
125,
609
],
[
78,
665
],
[
53,
734
],
[
53,
806
],
[
78,
875
],
[
125,
931
],
[
188,
967
],
[
260,
980
],
[
329,
980
],
[
398,
980
],
[
467,
980
],
[
536,
980
],
[
604,
980
],
[
673,
980
],
[
742,
980
],
[
811,
980
],
[
880,
980
],
[
949,
980
],
[
1018,
980
],
[
1087,
980
],
[
1156,
980
],
[
1224,
980
],
[
1293,
980
],
[
1362,
980
],
[
1431,
980
],
[
1500,
980
],
[
1573,
966
],
[
1634,
924
],
[
1676,
863
],
[
1690,
790
],
[
1690,
717
],
[
1690,
643
],
[
1690,
570
],
[
1678,
509
],
[
1643,
457
],
[
1591,
422
],
[
1530,
410
]
],
"tunnels": [],
"quota": 26,
"introBalls": 8,
"pushSpeed": 108,
"powerUpRate": 0.06
}
]
"level": 7,
"name": "Rapids",
"frog": [
880,
770
],
"colors": 4,
"background": "zuma-background-2",
"seed": 56433,
"starScores": [
910,
1360,
1810
],
"paths": [
{
"shape": "sCurve",
"points": [
[
-80,
140
],
[
-11,
140
],
[
57,
140
],
[
126,
140
],
[
195,
140
],
[
263,
140
],
[
332,
140
],
[
401,
140
],
[
470,
140
],
[
538,
140
],
[
607,
140
],
[
676,
140
],
[
744,
140
],
[
813,
140
],
[
882,
140
],
[
950,
140
],
[
1019,
140
],
[
1088,
140
],
[
1157,
140
],
[
1225,
140
],
[
1294,
140
],
[
1363,
140
],
[
1431,
140
],
[
1500,
140
],
[
1572,
153
],
[
1635,
189
],
[
1682,
245
],
[
1707,
314
],
[
1707,
386
],
[
1682,
455
],
[
1635,
511
],
[
1572,
547
],
[
1500,
560
],
[
1431,
560
],
[
1362,
560
],
[
1293,
560
],
[
1224,
560
],
[
1156,
560
],
[
1087,
560
],
[
1018,
560
],
[
949,
560
],
[
880,
560
],
[
811,
560
],
[
742,
560
],
[
673,
560
],
[
604,
560
],
[
536,
560
],
[
467,
560
],
[
398,
560
],
[
329,
560
],
[
260,
560
],
[
188,
573
],
[
125,
609
],
[
78,
665
],
[
53,
734
],
[
53,
806
],
[
78,
875
],
[
125,
931
],
[
188,
967
],
[
260,
980
],
[
329,
980
],
[
398,
980
],
[
467,
980
],
[
536,
980
],
[
604,
980
],
[
673,
980
],
[
742,
980
],
[
811,
980
],
[
880,
980
],
[
949,
980
],
[
1018,
980
],
[
1087,
980
],
[
1156,
980
],
[
1224,
980
],
[
1293,
980
],
[
1362,
980
],
[
1431,
980
],
[
1500,
980
],
[
1573,
966
],
[
1634,
924
],
[
1676,
863
],
[
1690,
790
],
[
1690,
717
],
[
1690,
643
],
[
1690,
570
],
[
1678,
509
],
[
1643,
457
],
[
1591,
422
],
[
1530,
410
]
],
"tunnels": [],
"quota": 26,
"introBalls": 8,
"pushSpeed": 108,
"powerUpRate": 0.06
}
]
}

View File

@ -1,165 +1,165 @@
{
"level": 8,
"name": "Sun Court",
"frog": [
960,
580
],
"colors": 5,
"background": "zuma-background-2",
"seed": 64352,
"starScores": [
1010,
1520,
2020
],
"paths": [
{
"shape": "horseshoe",
"points": [
[
-80,
130
],
[
60,
130
],
[
960,
130
],
[
1191,
154
],
[
1398,
210
],
[
1565,
294
],
[
1680,
399
],
[
1734,
514
],
[
1727,
632
],
[
1659,
742
],
[
1538,
836
],
[
1375,
908
],
[
1185,
951
],
[
983,
964
],
[
785,
946
],
[
607,
900
],
[
462,
831
],
[
361,
743
],
[
311,
646
],
[
313,
547
],
[
366,
454
],
[
464,
374
],
[
598,
313
],
[
755,
275
],
[
923,
263
],
[
1087,
276
],
[
1235,
312
],
[
1356,
368
],
[
1441,
438
],
[
1485,
517
],
[
1485,
598
],
[
1445,
673
],
[
1368,
739
]
],
"tunnels": [
[
1857,
2403
]
],
"quota": 30,
"introBalls": 9,
"pushSpeed": 96,
"powerUpRate": 0.055
}
]
"level": 8,
"name": "Sun Court",
"frog": [
960,
580
],
"colors": 5,
"background": "zuma-background-2",
"seed": 64352,
"starScores": [
1010,
1520,
2020
],
"paths": [
{
"shape": "horseshoe",
"points": [
[
-80,
130
],
[
60,
130
],
[
960,
130
],
[
1191,
154
],
[
1398,
210
],
[
1565,
294
],
[
1680,
399
],
[
1734,
514
],
[
1727,
632
],
[
1659,
742
],
[
1538,
836
],
[
1375,
908
],
[
1185,
951
],
[
983,
964
],
[
785,
946
],
[
607,
900
],
[
462,
831
],
[
361,
743
],
[
311,
646
],
[
313,
547
],
[
366,
454
],
[
464,
374
],
[
598,
313
],
[
755,
275
],
[
923,
263
],
[
1087,
276
],
[
1235,
312
],
[
1356,
368
],
[
1441,
438
],
[
1485,
517
],
[
1485,
598
],
[
1445,
673
],
[
1368,
739
]
],
"tunnels": [
[
1857,
2403
]
],
"quota": 30,
"introBalls": 9,
"pushSpeed": 96,
"powerUpRate": 0.055
}
]
}

View File

@ -1,364 +1,364 @@
{
"level": 9,
"name": "Thunder Steps",
"frog": [
1620,
550
],
"colors": 5,
"background": "zuma-background-1",
"seed": 72271,
"starScores": [
1210,
1820,
2420
],
"paths": [
{
"shape": "zigzag",
"points": [
[
-80,
130
],
[
-11,
130
],
[
58,
130
],
[
126,
130
],
[
195,
130
],
[
264,
130
],
[
333,
130
],
[
401,
130
],
[
470,
130
],
[
539,
130
],
[
608,
130
],
[
676,
130
],
[
745,
130
],
[
814,
130
],
[
882,
130
],
[
951,
130
],
[
1020,
130
],
[
1089,
130
],
[
1158,
130
],
[
1226,
130
],
[
1295,
130
],
[
1365,
149
],
[
1416,
200
],
[
1435,
270
],
[
1416,
340
],
[
1365,
391
],
[
1295,
410
],
[
1225,
410
],
[
1156,
410
],
[
1086,
410
],
[
1016,
410
],
[
947,
410
],
[
877,
410
],
[
807,
410
],
[
738,
410
],
[
668,
410
],
[
598,
410
],
[
529,
410
],
[
459,
410
],
[
389,
410
],
[
320,
410
],
[
250,
410
],
[
180,
429
],
[
129,
480
],
[
110,
550
],
[
129,
620
],
[
180,
671
],
[
250,
690
],
[
320,
690
],
[
389,
690
],
[
459,
690
],
[
529,
690
],
[
598,
690
],
[
668,
690
],
[
738,
690
],
[
807,
690
],
[
877,
690
],
[
947,
690
],
[
1016,
690
],
[
1086,
690
],
[
1156,
690
],
[
1225,
690
],
[
1295,
690
],
[
1365,
709
],
[
1416,
760
],
[
1435,
830
],
[
1416,
900
],
[
1365,
951
],
[
1295,
970
],
[
1225,
970
],
[
1156,
970
],
[
1086,
970
],
[
1016,
970
],
[
947,
970
],
[
877,
970
],
[
807,
970
],
[
738,
970
],
[
668,
970
],
[
598,
970
],
[
529,
970
],
[
459,
970
],
[
389,
970
],
[
320,
970
],
[
250,
970
]
],
"tunnels": [],
"quota": 36,
"introBalls": 11,
"pushSpeed": 96,
"powerUpRate": 0.055
}
]
"level": 9,
"name": "Thunder Steps",
"frog": [
1620,
550
],
"colors": 5,
"background": "zuma-background-2",
"seed": 72271,
"starScores": [
1210,
1820,
2420
],
"paths": [
{
"shape": "zigzag",
"points": [
[
-80,
130
],
[
-11,
130
],
[
58,
130
],
[
126,
130
],
[
195,
130
],
[
264,
130
],
[
333,
130
],
[
401,
130
],
[
470,
130
],
[
539,
130
],
[
608,
130
],
[
676,
130
],
[
745,
130
],
[
814,
130
],
[
882,
130
],
[
951,
130
],
[
1020,
130
],
[
1089,
130
],
[
1158,
130
],
[
1226,
130
],
[
1295,
130
],
[
1365,
149
],
[
1416,
200
],
[
1435,
270
],
[
1416,
340
],
[
1365,
391
],
[
1295,
410
],
[
1225,
410
],
[
1156,
410
],
[
1086,
410
],
[
1016,
410
],
[
947,
410
],
[
877,
410
],
[
807,
410
],
[
738,
410
],
[
668,
410
],
[
598,
410
],
[
529,
410
],
[
459,
410
],
[
389,
410
],
[
320,
410
],
[
250,
410
],
[
180,
429
],
[
129,
480
],
[
110,
550
],
[
129,
620
],
[
180,
671
],
[
250,
690
],
[
320,
690
],
[
389,
690
],
[
459,
690
],
[
529,
690
],
[
598,
690
],
[
668,
690
],
[
738,
690
],
[
807,
690
],
[
877,
690
],
[
947,
690
],
[
1016,
690
],
[
1086,
690
],
[
1156,
690
],
[
1225,
690
],
[
1295,
690
],
[
1365,
709
],
[
1416,
760
],
[
1435,
830
],
[
1416,
900
],
[
1365,
951
],
[
1295,
970
],
[
1225,
970
],
[
1156,
970
],
[
1086,
970
],
[
1016,
970
],
[
947,
970
],
[
877,
970
],
[
807,
970
],
[
738,
970
],
[
668,
970
],
[
598,
970
],
[
529,
970
],
[
459,
970
],
[
389,
970
],
[
320,
970
],
[
250,
970
]
],
"tunnels": [],
"quota": 36,
"introBalls": 11,
"pushSpeed": 96,
"powerUpRate": 0.055
}
]
}

View File

@ -1,405 +1,405 @@
{
"level": 10,
"name": "Twin Serpents",
"frog": [
620,
600
],
"colors": 5,
"background": "zuma-background-2",
"seed": 80190,
"starScores": [
1170,
1760,
2340
],
"paths": [
{
"shape": "doubleLoop",
"points": [
[
-80,
300
],
[
-10,
300
],
[
60,
300
],
[
130,
300
],
[
200,
300
],
[
270,
300
],
[
340,
300
],
[
410,
300
],
[
480,
300
],
[
550,
300
],
[
620,
300
],
[
689,
308
],
[
755,
332
],
[
813,
370
],
[
861,
421
],
[
895,
481
],
[
915,
548
],
[
919,
617
],
[
907,
686
],
[
880,
750
],
[
838,
806
],
[
785,
851
],
[
723,
882
],
[
655,
898
],
[
585,
898
],
[
517,
882
],
[
455,
851
],
[
402,
806
],
[
360,
750
],
[
333,
686
],
[
321,
617
],
[
325,
548
],
[
345,
481
],
[
379,
421
],
[
427,
370
],
[
485,
332
],
[
551,
308
],
[
620,
300
],
[
691,
300
],
[
762,
300
],
[
833,
300
],
[
904,
300
],
[
975,
300
],
[
1045,
300
],
[
1116,
300
],
[
1187,
300
],
[
1258,
300
],
[
1329,
300
],
[
1400,
300
],
[
1469,
308
],
[
1535,
332
],
[
1593,
370
],
[
1641,
421
],
[
1675,
481
],
[
1695,
548
],
[
1699,
617
],
[
1687,
686
],
[
1660,
750
],
[
1618,
806
],
[
1565,
851
],
[
1503,
882
],
[
1435,
898
],
[
1365,
898
],
[
1297,
882
],
[
1235,
851
],
[
1182,
806
],
[
1140,
750
],
[
1113,
686
],
[
1101,
617
],
[
1105,
548
],
[
1125,
481
],
[
1159,
421
],
[
1207,
370
],
[
1265,
332
],
[
1331,
308
],
[
1400,
300
],
[
1473,
300
],
[
1547,
300
],
[
1620,
300
],
[
1691,
311
],
[
1755,
344
],
[
1806,
395
],
[
1839,
459
],
[
1850,
530
],
[
1839,
601
],
[
1806,
665
],
[
1755,
716
],
[
1691,
749
],
[
1620,
760
],
[
1555,
760
],
[
1490,
760
],
[
1425,
760
],
[
1360,
760
]
],
"tunnels": [
[
2581,
3226
]
],
"quota": 34,
"introBalls": 10,
"pushSpeed": 104,
"powerUpRate": 0.055
}
]
"level": 10,
"name": "Twin Serpents",
"frog": [
620,
600
],
"colors": 5,
"background": "zuma-background-2",
"seed": 80190,
"starScores": [
1170,
1760,
2340
],
"paths": [
{
"shape": "doubleLoop",
"points": [
[
-80,
300
],
[
-10,
300
],
[
60,
300
],
[
130,
300
],
[
200,
300
],
[
270,
300
],
[
340,
300
],
[
410,
300
],
[
480,
300
],
[
550,
300
],
[
620,
300
],
[
689,
308
],
[
755,
332
],
[
813,
370
],
[
861,
421
],
[
895,
481
],
[
915,
548
],
[
919,
617
],
[
907,
686
],
[
880,
750
],
[
838,
806
],
[
785,
851
],
[
723,
882
],
[
655,
898
],
[
585,
898
],
[
517,
882
],
[
455,
851
],
[
402,
806
],
[
360,
750
],
[
333,
686
],
[
321,
617
],
[
325,
548
],
[
345,
481
],
[
379,
421
],
[
427,
370
],
[
485,
332
],
[
551,
308
],
[
620,
300
],
[
691,
300
],
[
762,
300
],
[
833,
300
],
[
904,
300
],
[
975,
300
],
[
1045,
300
],
[
1116,
300
],
[
1187,
300
],
[
1258,
300
],
[
1329,
300
],
[
1400,
300
],
[
1469,
308
],
[
1535,
332
],
[
1593,
370
],
[
1641,
421
],
[
1675,
481
],
[
1695,
548
],
[
1699,
617
],
[
1687,
686
],
[
1660,
750
],
[
1618,
806
],
[
1565,
851
],
[
1503,
882
],
[
1435,
898
],
[
1365,
898
],
[
1297,
882
],
[
1235,
851
],
[
1182,
806
],
[
1140,
750
],
[
1113,
686
],
[
1101,
617
],
[
1105,
548
],
[
1125,
481
],
[
1159,
421
],
[
1207,
370
],
[
1265,
332
],
[
1331,
308
],
[
1400,
300
],
[
1473,
300
],
[
1547,
300
],
[
1620,
300
],
[
1691,
311
],
[
1755,
344
],
[
1806,
395
],
[
1839,
459
],
[
1850,
530
],
[
1839,
601
],
[
1806,
665
],
[
1755,
716
],
[
1691,
749
],
[
1620,
760
],
[
1555,
760
],
[
1490,
760
],
[
1425,
760
],
[
1360,
760
]
],
"tunnels": [
[
2581,
3226
]
],
"quota": 34,
"introBalls": 10,
"pushSpeed": 104,
"powerUpRate": 0.055
}
]
}

View File

@ -1,221 +1,221 @@
{
"level": 11,
"name": "Deep Coil",
"frog": [
960,
575
],
"colors": 5,
"background": "zuma-background-1",
"seed": 88109,
"starScores": [
1450,
2170,
2890
],
"paths": [
{
"shape": "spiral",
"points": [
[
-80,
120
],
[
58,
120
],
[
960,
120
],
[
1195,
143
],
[
1406,
201
],
[
1577,
287
],
[
1694,
395
],
[
1749,
514
],
[
1739,
635
],
[
1667,
749
],
[
1541,
846
],
[
1370,
919
],
[
1171,
962
],
[
960,
973
],
[
754,
952
],
[
571,
901
],
[
423,
826
],
[
322,
732
],
[
276,
628
],
[
285,
523
],
[
349,
425
],
[
459,
341
],
[
607,
279
],
[
779,
243
],
[
960,
234
],
[
1136,
253
],
[
1292,
297
],
[
1417,
362
],
[
1502,
442
],
[
1540,
530
],
[
1530,
619
],
[
1475,
702
],
[
1381,
771
],
[
1256,
823
],
[
1111,
853
],
[
960,
859
],
[
814,
843
],
[
685,
806
],
[
583,
751
],
[
515,
685
],
[
485,
612
],
[
494,
539
],
[
541,
472
],
[
619,
416
],
[
721,
375
],
[
838,
352
],
[
960,
348
]
],
"tunnels": [
[
2194,
2925
]
],
"quota": 42,
"introBalls": 12,
"pushSpeed": 104,
"powerUpRate": 0.05
}
]
"level": 11,
"name": "Deep Coil",
"frog": [
960,
575
],
"colors": 5,
"background": "zuma-background-2",
"seed": 88109,
"starScores": [
1450,
2170,
2890
],
"paths": [
{
"shape": "spiral",
"points": [
[
-80,
120
],
[
58,
120
],
[
960,
120
],
[
1195,
143
],
[
1406,
201
],
[
1577,
287
],
[
1694,
395
],
[
1749,
514
],
[
1739,
635
],
[
1667,
749
],
[
1541,
846
],
[
1370,
919
],
[
1171,
962
],
[
960,
973
],
[
754,
952
],
[
571,
901
],
[
423,
826
],
[
322,
732
],
[
276,
628
],
[
285,
523
],
[
349,
425
],
[
459,
341
],
[
607,
279
],
[
779,
243
],
[
960,
234
],
[
1136,
253
],
[
1292,
297
],
[
1417,
362
],
[
1502,
442
],
[
1540,
530
],
[
1530,
619
],
[
1475,
702
],
[
1381,
771
],
[
1256,
823
],
[
1111,
853
],
[
960,
859
],
[
814,
843
],
[
685,
806
],
[
583,
751
],
[
515,
685
],
[
485,
612
],
[
494,
539
],
[
541,
472
],
[
619,
416
],
[
721,
375
],
[
838,
352
],
[
960,
348
]
],
"tunnels": [
[
2194,
2925
]
],
"quota": 42,
"introBalls": 12,
"pushSpeed": 104,
"powerUpRate": 0.05
}
]
}

View File

@ -1,232 +1,232 @@
{
"level": 12,
"name": "Tangled Path",
"frog": [
960,
990
],
"colors": 5,
"background": "zuma-background-2",
"seed": 96028,
"starScores": [
1320,
1980,
2640
],
"paths": [
{
"shape": "figureEight",
"points": [
[
-80,
830
],
[
60,
690
],
[
130,
505
],
[
136,
416
],
[
154,
333
],
[
183,
259
],
[
223,
199
],
[
274,
156
],
[
334,
134
],
[
404,
132
],
[
481,
152
],
[
565,
191
],
[
655,
249
],
[
749,
321
],
[
846,
403
],
[
945,
491
],
[
1044,
581
],
[
1142,
665
],
[
1237,
741
],
[
1328,
803
],
[
1414,
849
],
[
1494,
874
],
[
1566,
879
],
[
1629,
863
],
[
1683,
826
],
[
1726,
771
],
[
1759,
701
],
[
1780,
620
],
[
1789,
532
],
[
1787,
443
],
[
1773,
357
],
[
1747,
280
],
[
1710,
215
],
[
1663,
167
],
[
1605,
138
],
[
1538,
130
],
[
1463,
143
],
[
1381,
177
],
[
1293,
230
],
[
1200,
298
],
[
1103,
377
],
[
1005,
464
],
[
906,
554
],
[
808,
640
],
[
711,
719
],
[
619,
786
],
[
531,
837
],
[
449,
869
],
[
375,
880
],
[
309,
870
],
[
252,
839
]
],
"tunnels": [],
"quota": 38,
"introBalls": 11,
"pushSpeed": 108,
"powerUpRate": 0.05
}
]
"level": 12,
"name": "Tangled Path",
"frog": [
960,
990
],
"colors": 5,
"background": "zuma-background-2",
"seed": 96028,
"starScores": [
1320,
1980,
2640
],
"paths": [
{
"shape": "figureEight",
"points": [
[
-80,
830
],
[
60,
690
],
[
130,
505
],
[
136,
416
],
[
154,
333
],
[
183,
259
],
[
223,
199
],
[
274,
156
],
[
334,
134
],
[
404,
132
],
[
481,
152
],
[
565,
191
],
[
655,
249
],
[
749,
321
],
[
846,
403
],
[
945,
491
],
[
1044,
581
],
[
1142,
665
],
[
1237,
741
],
[
1328,
803
],
[
1414,
849
],
[
1494,
874
],
[
1566,
879
],
[
1629,
863
],
[
1683,
826
],
[
1726,
771
],
[
1759,
701
],
[
1780,
620
],
[
1789,
532
],
[
1787,
443
],
[
1773,
357
],
[
1747,
280
],
[
1710,
215
],
[
1663,
167
],
[
1605,
138
],
[
1538,
130
],
[
1463,
143
],
[
1381,
177
],
[
1293,
230
],
[
1200,
298
],
[
1103,
377
],
[
1005,
464
],
[
906,
554
],
[
808,
640
],
[
711,
719
],
[
619,
786
],
[
531,
837
],
[
449,
869
],
[
375,
880
],
[
309,
870
],
[
252,
839
]
],
"tunnels": [],
"quota": 38,
"introBalls": 11,
"pushSpeed": 108,
"powerUpRate": 0.05
}
]
}

View File

@ -1,364 +1,364 @@
{
"level": 13,
"name": "Lightning Run",
"frog": [
1620,
550
],
"colors": 5,
"background": "zuma-background-1",
"seed": 103947,
"starScores": [
1210,
1820,
2420
],
"paths": [
{
"shape": "zigzag",
"points": [
[
-80,
130
],
[
-11,
130
],
[
58,
130
],
[
126,
130
],
[
195,
130
],
[
264,
130
],
[
333,
130
],
[
401,
130
],
[
470,
130
],
[
539,
130
],
[
608,
130
],
[
676,
130
],
[
745,
130
],
[
814,
130
],
[
882,
130
],
[
951,
130
],
[
1020,
130
],
[
1089,
130
],
[
1158,
130
],
[
1226,
130
],
[
1295,
130
],
[
1365,
149
],
[
1416,
200
],
[
1435,
270
],
[
1416,
340
],
[
1365,
391
],
[
1295,
410
],
[
1225,
410
],
[
1156,
410
],
[
1086,
410
],
[
1016,
410
],
[
947,
410
],
[
877,
410
],
[
807,
410
],
[
738,
410
],
[
668,
410
],
[
598,
410
],
[
529,
410
],
[
459,
410
],
[
389,
410
],
[
320,
410
],
[
250,
410
],
[
180,
429
],
[
129,
480
],
[
110,
550
],
[
129,
620
],
[
180,
671
],
[
250,
690
],
[
320,
690
],
[
389,
690
],
[
459,
690
],
[
529,
690
],
[
598,
690
],
[
668,
690
],
[
738,
690
],
[
807,
690
],
[
877,
690
],
[
947,
690
],
[
1016,
690
],
[
1086,
690
],
[
1156,
690
],
[
1225,
690
],
[
1295,
690
],
[
1365,
709
],
[
1416,
760
],
[
1435,
830
],
[
1416,
900
],
[
1365,
951
],
[
1295,
970
],
[
1225,
970
],
[
1156,
970
],
[
1086,
970
],
[
1016,
970
],
[
947,
970
],
[
877,
970
],
[
807,
970
],
[
738,
970
],
[
668,
970
],
[
598,
970
],
[
529,
970
],
[
459,
970
],
[
389,
970
],
[
320,
970
],
[
250,
970
]
],
"tunnels": [],
"quota": 34,
"introBalls": 10,
"pushSpeed": 116,
"powerUpRate": 0.05
}
]
"level": 13,
"name": "Lightning Run",
"frog": [
1620,
550
],
"colors": 5,
"background": "zuma-background-3",
"seed": 103947,
"starScores": [
1210,
1820,
2420
],
"paths": [
{
"shape": "zigzag",
"points": [
[
-80,
130
],
[
-11,
130
],
[
58,
130
],
[
126,
130
],
[
195,
130
],
[
264,
130
],
[
333,
130
],
[
401,
130
],
[
470,
130
],
[
539,
130
],
[
608,
130
],
[
676,
130
],
[
745,
130
],
[
814,
130
],
[
882,
130
],
[
951,
130
],
[
1020,
130
],
[
1089,
130
],
[
1158,
130
],
[
1226,
130
],
[
1295,
130
],
[
1365,
149
],
[
1416,
200
],
[
1435,
270
],
[
1416,
340
],
[
1365,
391
],
[
1295,
410
],
[
1225,
410
],
[
1156,
410
],
[
1086,
410
],
[
1016,
410
],
[
947,
410
],
[
877,
410
],
[
807,
410
],
[
738,
410
],
[
668,
410
],
[
598,
410
],
[
529,
410
],
[
459,
410
],
[
389,
410
],
[
320,
410
],
[
250,
410
],
[
180,
429
],
[
129,
480
],
[
110,
550
],
[
129,
620
],
[
180,
671
],
[
250,
690
],
[
320,
690
],
[
389,
690
],
[
459,
690
],
[
529,
690
],
[
598,
690
],
[
668,
690
],
[
738,
690
],
[
807,
690
],
[
877,
690
],
[
947,
690
],
[
1016,
690
],
[
1086,
690
],
[
1156,
690
],
[
1225,
690
],
[
1295,
690
],
[
1365,
709
],
[
1416,
760
],
[
1435,
830
],
[
1416,
900
],
[
1365,
951
],
[
1295,
970
],
[
1225,
970
],
[
1156,
970
],
[
1086,
970
],
[
1016,
970
],
[
947,
970
],
[
877,
970
],
[
807,
970
],
[
738,
970
],
[
668,
970
],
[
598,
970
],
[
529,
970
],
[
459,
970
],
[
389,
970
],
[
320,
970
],
[
250,
970
]
],
"tunnels": [],
"quota": 34,
"introBalls": 10,
"pushSpeed": 116,
"powerUpRate": 0.05
}
]
}

View File

@ -1,225 +1,225 @@
{
"level": 14,
"name": "Whirlpool",
"frog": [
960,
575
],
"colors": 5,
"background": "zuma-background-2",
"seed": 111866,
"starScores": [
1640,
2460,
3280
],
"paths": [
{
"shape": "spiral",
"points": [
[
-80,
120
],
[
58,
120
],
[
960,
120
],
[
1195,
143
],
[
1406,
201
],
[
1577,
287
],
[
1694,
395
],
[
1749,
514
],
[
1739,
635
],
[
1667,
749
],
[
1541,
846
],
[
1370,
919
],
[
1171,
962
],
[
960,
973
],
[
754,
952
],
[
571,
901
],
[
423,
826
],
[
322,
732
],
[
276,
628
],
[
285,
523
],
[
349,
425
],
[
459,
341
],
[
607,
279
],
[
779,
243
],
[
960,
234
],
[
1136,
253
],
[
1292,
297
],
[
1417,
362
],
[
1502,
442
],
[
1540,
530
],
[
1530,
619
],
[
1475,
702
],
[
1381,
771
],
[
1256,
823
],
[
1111,
853
],
[
960,
859
],
[
814,
843
],
[
685,
806
],
[
583,
751
],
[
515,
685
],
[
485,
612
],
[
494,
539
],
[
541,
472
],
[
619,
416
],
[
721,
375
],
[
838,
352
],
[
960,
348
]
],
"tunnels": [
[
1901,
2633
],
[
4388,
5119
]
],
"quota": 46,
"introBalls": 13,
"pushSpeed": 116,
"powerUpRate": 0.05
}
]
"level": 14,
"name": "Whirlpool",
"frog": [
960,
575
],
"colors": 5,
"background": "zuma-background-3",
"seed": 111866,
"starScores": [
1640,
2460,
3280
],
"paths": [
{
"shape": "spiral",
"points": [
[
-80,
120
],
[
58,
120
],
[
960,
120
],
[
1195,
143
],
[
1406,
201
],
[
1577,
287
],
[
1694,
395
],
[
1749,
514
],
[
1739,
635
],
[
1667,
749
],
[
1541,
846
],
[
1370,
919
],
[
1171,
962
],
[
960,
973
],
[
754,
952
],
[
571,
901
],
[
423,
826
],
[
322,
732
],
[
276,
628
],
[
285,
523
],
[
349,
425
],
[
459,
341
],
[
607,
279
],
[
779,
243
],
[
960,
234
],
[
1136,
253
],
[
1292,
297
],
[
1417,
362
],
[
1502,
442
],
[
1540,
530
],
[
1530,
619
],
[
1475,
702
],
[
1381,
771
],
[
1256,
823
],
[
1111,
853
],
[
960,
859
],
[
814,
843
],
[
685,
806
],
[
583,
751
],
[
515,
685
],
[
485,
612
],
[
494,
539
],
[
541,
472
],
[
619,
416
],
[
721,
375
],
[
838,
352
],
[
960,
348
]
],
"tunnels": [
[
1901,
2633
],
[
4388,
5119
]
],
"quota": 46,
"introBalls": 13,
"pushSpeed": 116,
"powerUpRate": 0.05
}
]
}

View File

@ -1,160 +1,160 @@
{
"level": 15,
"name": "Obsidian Gate",
"frog": [
960,
580
],
"colors": 6,
"background": "zuma-background-1",
"seed": 119785,
"starScores": [
1170,
1750,
2330
],
"paths": [
{
"shape": "horseshoe",
"points": [
[
-80,
130
],
[
60,
130
],
[
960,
130
],
[
1191,
154
],
[
1398,
210
],
[
1565,
294
],
[
1680,
399
],
[
1734,
514
],
[
1727,
632
],
[
1659,
742
],
[
1538,
836
],
[
1375,
908
],
[
1185,
951
],
[
983,
964
],
[
785,
946
],
[
607,
900
],
[
462,
831
],
[
361,
743
],
[
311,
646
],
[
313,
547
],
[
366,
454
],
[
464,
374
],
[
598,
313
],
[
755,
275
],
[
923,
263
],
[
1087,
276
],
[
1235,
312
],
[
1356,
368
],
[
1441,
438
],
[
1485,
517
],
[
1485,
598
],
[
1445,
673
],
[
1368,
739
]
],
"tunnels": [],
"quota": 32,
"introBalls": 9,
"pushSpeed": 124,
"powerUpRate": 0.05
}
]
"level": 15,
"name": "Obsidian Gate",
"frog": [
960,
580
],
"colors": 6,
"background": "zuma-background-3",
"seed": 119785,
"starScores": [
1170,
1750,
2330
],
"paths": [
{
"shape": "horseshoe",
"points": [
[
-80,
130
],
[
60,
130
],
[
960,
130
],
[
1191,
154
],
[
1398,
210
],
[
1565,
294
],
[
1680,
399
],
[
1734,
514
],
[
1727,
632
],
[
1659,
742
],
[
1538,
836
],
[
1375,
908
],
[
1185,
951
],
[
983,
964
],
[
785,
946
],
[
607,
900
],
[
462,
831
],
[
361,
743
],
[
311,
646
],
[
313,
547
],
[
366,
454
],
[
464,
374
],
[
598,
313
],
[
755,
275
],
[
923,
263
],
[
1087,
276
],
[
1235,
312
],
[
1356,
368
],
[
1441,
438
],
[
1485,
517
],
[
1485,
598
],
[
1445,
673
],
[
1368,
739
]
],
"tunnels": [],
"quota": 32,
"introBalls": 9,
"pushSpeed": 124,
"powerUpRate": 0.05
}
]
}

View File

@ -1,405 +1,405 @@
{
"level": 16,
"name": "Twin Tempests",
"frog": [
620,
600
],
"colors": 6,
"background": "zuma-background-2",
"seed": 127704,
"starScores": [
1400,
2100,
2800
],
"paths": [
{
"shape": "doubleLoop",
"points": [
[
-80,
300
],
[
-10,
300
],
[
60,
300
],
[
130,
300
],
[
200,
300
],
[
270,
300
],
[
340,
300
],
[
410,
300
],
[
480,
300
],
[
550,
300
],
[
620,
300
],
[
689,
308
],
[
755,
332
],
[
813,
370
],
[
861,
421
],
[
895,
481
],
[
915,
548
],
[
919,
617
],
[
907,
686
],
[
880,
750
],
[
838,
806
],
[
785,
851
],
[
723,
882
],
[
655,
898
],
[
585,
898
],
[
517,
882
],
[
455,
851
],
[
402,
806
],
[
360,
750
],
[
333,
686
],
[
321,
617
],
[
325,
548
],
[
345,
481
],
[
379,
421
],
[
427,
370
],
[
485,
332
],
[
551,
308
],
[
620,
300
],
[
691,
300
],
[
762,
300
],
[
833,
300
],
[
904,
300
],
[
975,
300
],
[
1045,
300
],
[
1116,
300
],
[
1187,
300
],
[
1258,
300
],
[
1329,
300
],
[
1400,
300
],
[
1469,
308
],
[
1535,
332
],
[
1593,
370
],
[
1641,
421
],
[
1675,
481
],
[
1695,
548
],
[
1699,
617
],
[
1687,
686
],
[
1660,
750
],
[
1618,
806
],
[
1565,
851
],
[
1503,
882
],
[
1435,
898
],
[
1365,
898
],
[
1297,
882
],
[
1235,
851
],
[
1182,
806
],
[
1140,
750
],
[
1113,
686
],
[
1101,
617
],
[
1105,
548
],
[
1125,
481
],
[
1159,
421
],
[
1207,
370
],
[
1265,
332
],
[
1331,
308
],
[
1400,
300
],
[
1473,
300
],
[
1547,
300
],
[
1620,
300
],
[
1691,
311
],
[
1755,
344
],
[
1806,
395
],
[
1839,
459
],
[
1850,
530
],
[
1839,
601
],
[
1806,
665
],
[
1755,
716
],
[
1691,
749
],
[
1620,
760
],
[
1555,
760
],
[
1490,
760
],
[
1425,
760
],
[
1360,
760
]
],
"tunnels": [
[
2452,
2968
]
],
"quota": 38,
"introBalls": 11,
"pushSpeed": 128,
"powerUpRate": 0.05
}
]
"level": 16,
"name": "Twin Tempests",
"frog": [
620,
600
],
"colors": 6,
"background": "zuma-background-3",
"seed": 127704,
"starScores": [
1400,
2100,
2800
],
"paths": [
{
"shape": "doubleLoop",
"points": [
[
-80,
300
],
[
-10,
300
],
[
60,
300
],
[
130,
300
],
[
200,
300
],
[
270,
300
],
[
340,
300
],
[
410,
300
],
[
480,
300
],
[
550,
300
],
[
620,
300
],
[
689,
308
],
[
755,
332
],
[
813,
370
],
[
861,
421
],
[
895,
481
],
[
915,
548
],
[
919,
617
],
[
907,
686
],
[
880,
750
],
[
838,
806
],
[
785,
851
],
[
723,
882
],
[
655,
898
],
[
585,
898
],
[
517,
882
],
[
455,
851
],
[
402,
806
],
[
360,
750
],
[
333,
686
],
[
321,
617
],
[
325,
548
],
[
345,
481
],
[
379,
421
],
[
427,
370
],
[
485,
332
],
[
551,
308
],
[
620,
300
],
[
691,
300
],
[
762,
300
],
[
833,
300
],
[
904,
300
],
[
975,
300
],
[
1045,
300
],
[
1116,
300
],
[
1187,
300
],
[
1258,
300
],
[
1329,
300
],
[
1400,
300
],
[
1469,
308
],
[
1535,
332
],
[
1593,
370
],
[
1641,
421
],
[
1675,
481
],
[
1695,
548
],
[
1699,
617
],
[
1687,
686
],
[
1660,
750
],
[
1618,
806
],
[
1565,
851
],
[
1503,
882
],
[
1435,
898
],
[
1365,
898
],
[
1297,
882
],
[
1235,
851
],
[
1182,
806
],
[
1140,
750
],
[
1113,
686
],
[
1101,
617
],
[
1105,
548
],
[
1125,
481
],
[
1159,
421
],
[
1207,
370
],
[
1265,
332
],
[
1331,
308
],
[
1400,
300
],
[
1473,
300
],
[
1547,
300
],
[
1620,
300
],
[
1691,
311
],
[
1755,
344
],
[
1806,
395
],
[
1839,
459
],
[
1850,
530
],
[
1839,
601
],
[
1806,
665
],
[
1755,
716
],
[
1691,
749
],
[
1620,
760
],
[
1555,
760
],
[
1490,
760
],
[
1425,
760
],
[
1360,
760
]
],
"tunnels": [
[
2452,
2968
]
],
"quota": 38,
"introBalls": 11,
"pushSpeed": 128,
"powerUpRate": 0.05
}
]
}

View File

@ -1,364 +1,364 @@
{
"level": 17,
"name": "Stormsteps",
"frog": [
1620,
550
],
"colors": 6,
"background": "zuma-background-1",
"seed": 135623,
"starScores": [
1230,
1840,
2450
],
"paths": [
{
"shape": "zigzag",
"points": [
[
-80,
130
],
[
-11,
130
],
[
58,
130
],
[
126,
130
],
[
195,
130
],
[
264,
130
],
[
333,
130
],
[
401,
130
],
[
470,
130
],
[
539,
130
],
[
608,
130
],
[
676,
130
],
[
745,
130
],
[
814,
130
],
[
882,
130
],
[
951,
130
],
[
1020,
130
],
[
1089,
130
],
[
1158,
130
],
[
1226,
130
],
[
1295,
130
],
[
1365,
149
],
[
1416,
200
],
[
1435,
270
],
[
1416,
340
],
[
1365,
391
],
[
1295,
410
],
[
1225,
410
],
[
1156,
410
],
[
1086,
410
],
[
1016,
410
],
[
947,
410
],
[
877,
410
],
[
807,
410
],
[
738,
410
],
[
668,
410
],
[
598,
410
],
[
529,
410
],
[
459,
410
],
[
389,
410
],
[
320,
410
],
[
250,
410
],
[
180,
429
],
[
129,
480
],
[
110,
550
],
[
129,
620
],
[
180,
671
],
[
250,
690
],
[
320,
690
],
[
389,
690
],
[
459,
690
],
[
529,
690
],
[
598,
690
],
[
668,
690
],
[
738,
690
],
[
807,
690
],
[
877,
690
],
[
947,
690
],
[
1016,
690
],
[
1086,
690
],
[
1156,
690
],
[
1225,
690
],
[
1295,
690
],
[
1365,
709
],
[
1416,
760
],
[
1435,
830
],
[
1416,
900
],
[
1365,
951
],
[
1295,
970
],
[
1225,
970
],
[
1156,
970
],
[
1086,
970
],
[
1016,
970
],
[
947,
970
],
[
877,
970
],
[
807,
970
],
[
738,
970
],
[
668,
970
],
[
598,
970
],
[
529,
970
],
[
459,
970
],
[
389,
970
],
[
320,
970
],
[
250,
970
]
],
"tunnels": [],
"quota": 34,
"introBalls": 10,
"pushSpeed": 120,
"powerUpRate": 0.045
}
]
"level": 17,
"name": "Stormsteps",
"frog": [
1620,
550
],
"colors": 6,
"background": "zuma-background-3",
"seed": 135623,
"starScores": [
1230,
1840,
2450
],
"paths": [
{
"shape": "zigzag",
"points": [
[
-80,
130
],
[
-11,
130
],
[
58,
130
],
[
126,
130
],
[
195,
130
],
[
264,
130
],
[
333,
130
],
[
401,
130
],
[
470,
130
],
[
539,
130
],
[
608,
130
],
[
676,
130
],
[
745,
130
],
[
814,
130
],
[
882,
130
],
[
951,
130
],
[
1020,
130
],
[
1089,
130
],
[
1158,
130
],
[
1226,
130
],
[
1295,
130
],
[
1365,
149
],
[
1416,
200
],
[
1435,
270
],
[
1416,
340
],
[
1365,
391
],
[
1295,
410
],
[
1225,
410
],
[
1156,
410
],
[
1086,
410
],
[
1016,
410
],
[
947,
410
],
[
877,
410
],
[
807,
410
],
[
738,
410
],
[
668,
410
],
[
598,
410
],
[
529,
410
],
[
459,
410
],
[
389,
410
],
[
320,
410
],
[
250,
410
],
[
180,
429
],
[
129,
480
],
[
110,
550
],
[
129,
620
],
[
180,
671
],
[
250,
690
],
[
320,
690
],
[
389,
690
],
[
459,
690
],
[
529,
690
],
[
598,
690
],
[
668,
690
],
[
738,
690
],
[
807,
690
],
[
877,
690
],
[
947,
690
],
[
1016,
690
],
[
1086,
690
],
[
1156,
690
],
[
1225,
690
],
[
1295,
690
],
[
1365,
709
],
[
1416,
760
],
[
1435,
830
],
[
1416,
900
],
[
1365,
951
],
[
1295,
970
],
[
1225,
970
],
[
1156,
970
],
[
1086,
970
],
[
1016,
970
],
[
947,
970
],
[
877,
970
],
[
807,
970
],
[
738,
970
],
[
668,
970
],
[
598,
970
],
[
529,
970
],
[
459,
970
],
[
389,
970
],
[
320,
970
],
[
250,
970
]
],
"tunnels": [],
"quota": 34,
"introBalls": 10,
"pushSpeed": 120,
"powerUpRate": 0.045
}
]
}

View File

@ -1,232 +1,232 @@
{
"level": 18,
"name": "Maelstrom Cross",
"frog": [
960,
990
],
"colors": 6,
"background": "zuma-background-2",
"seed": 143542,
"starScores": [
1440,
2160,
2880
],
"paths": [
{
"shape": "figureEight",
"points": [
[
-80,
830
],
[
60,
690
],
[
130,
505
],
[
136,
416
],
[
154,
333
],
[
183,
259
],
[
223,
199
],
[
274,
156
],
[
334,
134
],
[
404,
132
],
[
481,
152
],
[
565,
191
],
[
655,
249
],
[
749,
321
],
[
846,
403
],
[
945,
491
],
[
1044,
581
],
[
1142,
665
],
[
1237,
741
],
[
1328,
803
],
[
1414,
849
],
[
1494,
874
],
[
1566,
879
],
[
1629,
863
],
[
1683,
826
],
[
1726,
771
],
[
1759,
701
],
[
1780,
620
],
[
1789,
532
],
[
1787,
443
],
[
1773,
357
],
[
1747,
280
],
[
1710,
215
],
[
1663,
167
],
[
1605,
138
],
[
1538,
130
],
[
1463,
143
],
[
1381,
177
],
[
1293,
230
],
[
1200,
298
],
[
1103,
377
],
[
1005,
464
],
[
906,
554
],
[
808,
640
],
[
711,
719
],
[
619,
786
],
[
531,
837
],
[
449,
869
],
[
375,
880
],
[
309,
870
],
[
252,
839
]
],
"tunnels": [],
"quota": 40,
"introBalls": 11,
"pushSpeed": 120,
"powerUpRate": 0.045
}
]
"level": 18,
"name": "Maelstrom Cross",
"frog": [
960,
990
],
"colors": 6,
"background": "zuma-background-3",
"seed": 143542,
"starScores": [
1440,
2160,
2880
],
"paths": [
{
"shape": "figureEight",
"points": [
[
-80,
830
],
[
60,
690
],
[
130,
505
],
[
136,
416
],
[
154,
333
],
[
183,
259
],
[
223,
199
],
[
274,
156
],
[
334,
134
],
[
404,
132
],
[
481,
152
],
[
565,
191
],
[
655,
249
],
[
749,
321
],
[
846,
403
],
[
945,
491
],
[
1044,
581
],
[
1142,
665
],
[
1237,
741
],
[
1328,
803
],
[
1414,
849
],
[
1494,
874
],
[
1566,
879
],
[
1629,
863
],
[
1683,
826
],
[
1726,
771
],
[
1759,
701
],
[
1780,
620
],
[
1789,
532
],
[
1787,
443
],
[
1773,
357
],
[
1747,
280
],
[
1710,
215
],
[
1663,
167
],
[
1605,
138
],
[
1538,
130
],
[
1463,
143
],
[
1381,
177
],
[
1293,
230
],
[
1200,
298
],
[
1103,
377
],
[
1005,
464
],
[
906,
554
],
[
808,
640
],
[
711,
719
],
[
619,
786
],
[
531,
837
],
[
449,
869
],
[
375,
880
],
[
309,
870
],
[
252,
839
]
],
"tunnels": [],
"quota": 40,
"introBalls": 11,
"pushSpeed": 120,
"powerUpRate": 0.045
}
]
}

View File

@ -1,216 +1,216 @@
{
"level": 19,
"name": "Abyss Coil",
"frog": [
960,
575
],
"colors": 6,
"background": "zuma-background-1",
"seed": 151461,
"starScores": [
1940,
2910,
3880
],
"paths": [
{
"shape": "spiral",
"points": [
[
-80,
120
],
[
58,
120
],
[
960,
120
],
[
1195,
143
],
[
1406,
201
],
[
1577,
287
],
[
1694,
395
],
[
1749,
514
],
[
1739,
635
],
[
1667,
749
],
[
1541,
846
],
[
1370,
919
],
[
1171,
962
],
[
960,
973
],
[
754,
952
],
[
571,
901
],
[
423,
826
],
[
322,
732
],
[
276,
628
],
[
285,
523
],
[
349,
425
],
[
459,
341
],
[
607,
279
],
[
779,
243
],
[
960,
234
],
[
1136,
253
],
[
1292,
297
],
[
1417,
362
],
[
1502,
442
],
[
1540,
530
],
[
1530,
619
],
[
1475,
702
],
[
1381,
771
],
[
1256,
823
],
[
1111,
853
],
[
960,
859
],
[
814,
843
],
[
685,
806
],
[
583,
751
],
[
515,
685
],
[
485,
612
],
[
494,
539
],
[
541,
472
],
[
619,
416
],
[
721,
375
],
[
838,
352
],
[
960,
348
]
],
"tunnels": [],
"quota": 50,
"introBalls": 14,
"pushSpeed": 148,
"powerUpRate": 0.045
}
]
"level": 19,
"name": "Abyss Coil",
"frog": [
960,
575
],
"colors": 6,
"background": "zuma-background-4",
"seed": 151461,
"starScores": [
1940,
2910,
3880
],
"paths": [
{
"shape": "spiral",
"points": [
[
-80,
120
],
[
58,
120
],
[
960,
120
],
[
1195,
143
],
[
1406,
201
],
[
1577,
287
],
[
1694,
395
],
[
1749,
514
],
[
1739,
635
],
[
1667,
749
],
[
1541,
846
],
[
1370,
919
],
[
1171,
962
],
[
960,
973
],
[
754,
952
],
[
571,
901
],
[
423,
826
],
[
322,
732
],
[
276,
628
],
[
285,
523
],
[
349,
425
],
[
459,
341
],
[
607,
279
],
[
779,
243
],
[
960,
234
],
[
1136,
253
],
[
1292,
297
],
[
1417,
362
],
[
1502,
442
],
[
1540,
530
],
[
1530,
619
],
[
1475,
702
],
[
1381,
771
],
[
1256,
823
],
[
1111,
853
],
[
960,
859
],
[
814,
843
],
[
685,
806
],
[
583,
751
],
[
515,
685
],
[
485,
612
],
[
494,
539
],
[
541,
472
],
[
619,
416
],
[
721,
375
],
[
838,
352
],
[
960,
348
]
],
"tunnels": [],
"quota": 50,
"introBalls": 14,
"pushSpeed": 148,
"powerUpRate": 0.045
}
]
}

View File

@ -1,216 +1,216 @@
{
"level": 20,
"name": "The Final Coil",
"frog": [
960,
575
],
"colors": 6,
"background": "zuma-background-2",
"seed": 159380,
"starScores": [
2040,
3060,
4080
],
"paths": [
{
"shape": "spiral",
"points": [
[
-80,
120
],
[
58,
120
],
[
960,
120
],
[
1195,
143
],
[
1406,
201
],
[
1577,
287
],
[
1694,
395
],
[
1749,
514
],
[
1739,
635
],
[
1667,
749
],
[
1541,
846
],
[
1370,
919
],
[
1171,
962
],
[
960,
973
],
[
754,
952
],
[
571,
901
],
[
423,
826
],
[
322,
732
],
[
276,
628
],
[
285,
523
],
[
349,
425
],
[
459,
341
],
[
607,
279
],
[
779,
243
],
[
960,
234
],
[
1136,
253
],
[
1292,
297
],
[
1417,
362
],
[
1502,
442
],
[
1540,
530
],
[
1530,
619
],
[
1475,
702
],
[
1381,
771
],
[
1256,
823
],
[
1111,
853
],
[
960,
859
],
[
814,
843
],
[
685,
806
],
[
583,
751
],
[
515,
685
],
[
485,
612
],
[
494,
539
],
[
541,
472
],
[
619,
416
],
[
721,
375
],
[
838,
352
],
[
960,
348
]
],
"tunnels": [],
"quota": 52,
"introBalls": 14,
"pushSpeed": 152,
"powerUpRate": 0.045
}
]
"level": 20,
"name": "The Final Coil",
"frog": [
960,
575
],
"colors": 6,
"background": "zuma-background-4",
"seed": 159380,
"starScores": [
2040,
3060,
4080
],
"paths": [
{
"shape": "spiral",
"points": [
[
-80,
120
],
[
58,
120
],
[
960,
120
],
[
1195,
143
],
[
1406,
201
],
[
1577,
287
],
[
1694,
395
],
[
1749,
514
],
[
1739,
635
],
[
1667,
749
],
[
1541,
846
],
[
1370,
919
],
[
1171,
962
],
[
960,
973
],
[
754,
952
],
[
571,
901
],
[
423,
826
],
[
322,
732
],
[
276,
628
],
[
285,
523
],
[
349,
425
],
[
459,
341
],
[
607,
279
],
[
779,
243
],
[
960,
234
],
[
1136,
253
],
[
1292,
297
],
[
1417,
362
],
[
1502,
442
],
[
1540,
530
],
[
1530,
619
],
[
1475,
702
],
[
1381,
771
],
[
1256,
823
],
[
1111,
853
],
[
960,
859
],
[
814,
843
],
[
685,
806
],
[
583,
751
],
[
515,
685
],
[
485,
612
],
[
494,
539
],
[
541,
472
],
[
619,
416
],
[
721,
375
],
[
838,
352
],
[
960,
348
]
],
"tunnels": [],
"quota": 52,
"introBalls": 14,
"pushSpeed": 152,
"powerUpRate": 0.045
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 343 KiB

After

Width:  |  Height:  |  Size: 347 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

View File

@ -102,6 +102,7 @@ export default class GooTowerGame extends Phaser.Scene {
this.state = null;
this.accum = 0;
this.held = null;
this.wasAttached = false; // true when held ball was detached from structure
this.boardObjs = [];
this.overlayUp = false;
this.finished = false;
@ -183,6 +184,7 @@ export default class GooTowerGame extends Phaser.Scene {
this.viewMode = 'select';
this.state = null;
this.held = null;
this.wasAttached = false;
this.clearBoard();
const cx = GAME_WIDTH / 2;
@ -328,6 +330,7 @@ export default class GooTowerGame extends Phaser.Scene {
this.state = createState(def, 0x60071e + level);
this.accum = 0;
this.held = null;
this.wasAttached = false;
this.overlayUp = false;
this.finished = false;
@ -561,6 +564,7 @@ export default class GooTowerGame extends Phaser.Scene {
if (!ball) return;
if (beginDrag(this.state, ball, null)) {
this.held = ball;
this.wasAttached = ball.wasDetached; // only true for detached balls
playSound(this, SFX.UI_PICK);
}
}
@ -584,9 +588,11 @@ export default class GooTowerGame extends Phaser.Scene {
if (!this.held || !this.state) return;
const w = this.toWorld(p);
const ball = this.held;
const wasAttached = this.wasAttached;
this.held = null;
this.wasAttached = false;
const events = [];
const stuck = endDrag(this.state, ball, w.x, w.y, events);
const stuck = endDrag(this.state, ball, w.x, w.y, events, wasAttached);
playSound(this, stuck ? SFX.UI_PLACE : SFX.SQUISH);
this.handleEvents(events);
}

View File

@ -315,6 +315,8 @@ export function addBall(state, x, y, type = 'common', opts = {}) {
exploded: false,
held: false, // under the player's cursor; physics leaves it alone
grounded: false,
wasDetached: false, // true when an attached ball was detached mid-drag
detachTime: 0, // simulation clock time when detached (0 = not recently detached)
// crawling
walking: false,
onStrand: -1,
@ -979,24 +981,49 @@ export function placeBall(state, ball, x, y, events = null) {
return true;
}
// The nearest ball the player is allowed to pick up: anything loose, plus
// attached goo of a detachable type.
// The nearest ball the player is allowed to pick up:
//
// 1. Loose (unattached) balls within reach — preferred so you can grab crawlers
// without accidentally detaching structural balls.
// 2. Attached detachable balls ONLY when clicked directly on them (center-to-
// center distance ≤ ball radius). A glancing pick near the edge does NOT
// detach them — this prevents the "oops I ripped off my ivy" problem.
//
// Non-detachable attached balls are never returned.
export function pickBallAt(state, x, y, reach = 42) {
let best = null;
let bestD = Infinity;
let bestLoose = null;
let bestLooseD = Infinity;
let bestDirect = null;
let bestDirectD = Infinity;
for (const b of state.balls) {
if (b.dead) continue;
if (b.attached && !gooType(b.type).detachable) continue;
const d = Math.hypot(b.x - x, b.y - y);
if (d > reach + b.r || d >= bestD) continue;
bestD = d;
best = b;
if (b.attached) {
// Attached detachable: only count if clicked DIRECTLY on the ball
// (center-to-center ≤ radius). No grace perimeter.
if (d <= b.r && d < bestDirectD) { bestDirectD = d; bestDirect = b; }
} else {
// Loose ball: standard reach radius
if (d <= reach + b.r && d < bestLooseD) { bestLooseD = d; bestLoose = b; }
}
}
return best;
// Prefer a loose ball; only return an attached one if clicked directly on it
// and there's no loose ball closer.
if (bestLoose) return bestLoose;
return bestDirect;
}
export function beginDrag(state, ball, events = null) {
if (!ball || ball.dead) return false;
// Cooldown check: if recently detached, block pickup until cooldown expires
if (ball.detachTime > 0) {
const elapsed = state.clock - ball.detachTime;
if (elapsed < DETACH_COOLDOWN) return false;
// Cooldown expired — allow normal handling
ball.wasDetached = false;
ball.detachTime = 0;
}
if (ball.attached) {
if (!gooType(ball.type).detachable) return false;
for (const sid of ball.strands.slice()) {
@ -1005,6 +1032,7 @@ export function beginDrag(state, ball, events = null) {
}
ball.strands = [];
ball.attached = false;
ball.wasDetached = true; // mark so endDrag knows to drop as loose
if (!state.pile.includes(ball.id)) state.pile.push(ball.id);
}
ball.held = true;
@ -1021,10 +1049,27 @@ export function dragTo(state, ball, x, y) {
ball.px = x; ball.py = y; // dropped goo starts from rest, never flung
}
// Cooldown in seconds before a detached ball can be re-attached.
export const DETACH_COOLDOWN = 2;
// Returns true when the ball stuck to the structure; false means it was
// released into the world as loose goo again.
export function endDrag(state, ball, x, y, events = null) {
//
// When `wasAttached` is true the ball was detached mid-drag and must NOT
// re-attach on drop — it goes straight back to the pile as loose goo.
export function endDrag(state, ball, x, y, events = null, wasAttached = false) {
if (!ball) return false;
if (wasAttached) {
// Detached ball drops as loose goo — no re-attachment.
// Start the cooldown timer (use clock + 0.001 to avoid 0 issue).
ball.wasDetached = false;
ball.detachTime = state.clock + 0.001;
ball.held = false;
ball.x = x; ball.y = y; ball.px = x; ball.py = y;
if (!ball.attached && !state.pile.includes(ball.id)) state.pile.push(ball.id);
if (events) events.push({ type: 'placeFailed', ball: ball.id });
return false;
}
if (placeBall(state, ball, x, y, events)) return true;
ball.held = false;
ball.x = x; ball.y = y; ball.px = x; ball.py = y;