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 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": [ "balls": [
{ {
"x": 300, "x": 516,
"y": 836, "y": 828,
"type": "common", "type": "ivy",
"pinned": true "pinned": false
}, },
{ {
"x": 362, "x": 609,
"y": 836, "y": 827,
"type": "common", "type": "ivy",
"pinned": true "pinned": false
}, },
{ {
"x": 331, "x": 563,
"y": 782, "y": 757,
"type": "common" "type": "ivy",
"pinned": false
} }
], ],
"strands": [ "strands": [
[ [
2, 1,
0 0
], ],
[ [
@ -59,117 +118,117 @@
1 1
], ],
[ [
0, 2,
1 0
] ]
], ],
"pipe": {
"x": 660,
"y": 560,
"r": 46
},
"pile": [ "pile": [
{ {
"x": 540, "x": 702,
"y": 834, "y": 822,
"type": "ivy" "type": "ivy"
}, },
{ {
"x": 570, "x": 743,
"y": 834, "y": 820,
"type": "ivy" "type": "ivy"
}, },
{ {
"x": 600, "x": 779,
"y": 834, "y": 824,
"type": "ivy" "type": "ivy"
}, },
{ {
"x": 630, "x": 848,
"y": 834, "y": 825,
"type": "ivy" "type": "ivy"
}, },
{ {
"x": 660, "x": 891,
"y": 834, "y": 822,
"type": "ivy" "type": "ivy"
}, },
{ {
"x": 690, "x": 866,
"y": 834, "y": 795,
"type": "ivy" "type": "ivy"
}, },
{ {
"x": 540, "x": 821,
"y": 804, "y": 792,
"type": "ivy" "type": "ivy"
}, },
{ {
"x": 570, "x": 785,
"y": 804, "y": 789,
"type": "ivy" "type": "ivy"
}, },
{ {
"x": 600, "x": 752,
"y": 804, "y": 784,
"type": "ivy" "type": "ivy"
}, },
{ {
"x": 630, "x": 727,
"y": 804, "y": 786,
"type": "ivy" "type": "ivy"
}, },
{ {
"x": 660, "x": 810,
"y": 804, "y": 825,
"type": "ivy" "type": "ivy"
}, },
{ {
"x": 690, "x": 743,
"y": 804, "y": 742,
"type": "ivy" "type": "ivy"
}, },
{ {
"x": 860, "x": 785,
"y": 834, "y": 764,
"type": "common" "type": "ivy"
}, },
{ {
"x": 890, "x": 825,
"y": 834, "y": 762,
"type": "common" "type": "ivy"
}, },
{ {
"x": 920, "x": 851,
"y": 834, "y": 762,
"type": "common" "type": "ivy"
}, },
{ {
"x": 950, "x": 791,
"y": 834, "y": 728,
"type": "common" "type": "ivy"
}, },
{ {
"x": 980, "x": 845,
"y": 834, "y": 742,
"type": "common" "type": "ivy"
}, },
{ {
"x": 1010, "x": 825,
"y": 834, "y": 705,
"type": "common" "type": "ivy"
}, },
{ {
"x": 1040, "x": 762,
"y": 834, "y": 707,
"type": "common" "type": "ivy"
}, },
{ {
"x": 1070, "x": 803,
"y": 834, "y": 679,
"type": "common" "type": "ivy"
} }
], ],
"pipe": {
"x": 598,
"y": 110,
"r": 46
},
"required": 4, "required": 4,
"ocdTarget": 9 "ocdTarget": 9
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,216 +1,216 @@
{ {
"level": 20, "level": 20,
"name": "The Final Coil", "name": "The Final Coil",
"frog": [ "frog": [
960, 960,
575 575
], ],
"colors": 6, "colors": 6,
"background": "zuma-background-2", "background": "zuma-background-4",
"seed": 159380, "seed": 159380,
"starScores": [ "starScores": [
2040, 2040,
3060, 3060,
4080 4080
], ],
"paths": [ "paths": [
{ {
"shape": "spiral", "shape": "spiral",
"points": [ "points": [
[ [
-80, -80,
120 120
], ],
[ [
58, 58,
120 120
], ],
[ [
960, 960,
120 120
], ],
[ [
1195, 1195,
143 143
], ],
[ [
1406, 1406,
201 201
], ],
[ [
1577, 1577,
287 287
], ],
[ [
1694, 1694,
395 395
], ],
[ [
1749, 1749,
514 514
], ],
[ [
1739, 1739,
635 635
], ],
[ [
1667, 1667,
749 749
], ],
[ [
1541, 1541,
846 846
], ],
[ [
1370, 1370,
919 919
], ],
[ [
1171, 1171,
962 962
], ],
[ [
960, 960,
973 973
], ],
[ [
754, 754,
952 952
], ],
[ [
571, 571,
901 901
], ],
[ [
423, 423,
826 826
], ],
[ [
322, 322,
732 732
], ],
[ [
276, 276,
628 628
], ],
[ [
285, 285,
523 523
], ],
[ [
349, 349,
425 425
], ],
[ [
459, 459,
341 341
], ],
[ [
607, 607,
279 279
], ],
[ [
779, 779,
243 243
], ],
[ [
960, 960,
234 234
], ],
[ [
1136, 1136,
253 253
], ],
[ [
1292, 1292,
297 297
], ],
[ [
1417, 1417,
362 362
], ],
[ [
1502, 1502,
442 442
], ],
[ [
1540, 1540,
530 530
], ],
[ [
1530, 1530,
619 619
], ],
[ [
1475, 1475,
702 702
], ],
[ [
1381, 1381,
771 771
], ],
[ [
1256, 1256,
823 823
], ],
[ [
1111, 1111,
853 853
], ],
[ [
960, 960,
859 859
], ],
[ [
814, 814,
843 843
], ],
[ [
685, 685,
806 806
], ],
[ [
583, 583,
751 751
], ],
[ [
515, 515,
685 685
], ],
[ [
485, 485,
612 612
], ],
[ [
494, 494,
539 539
], ],
[ [
541, 541,
472 472
], ],
[ [
619, 619,
416 416
], ],
[ [
721, 721,
375 375
], ],
[ [
838, 838,
352 352
], ],
[ [
960, 960,
348 348
] ]
], ],
"tunnels": [], "tunnels": [],
"quota": 52, "quota": 52,
"introBalls": 14, "introBalls": 14,
"pushSpeed": 152, "pushSpeed": 152,
"powerUpRate": 0.045 "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.state = null;
this.accum = 0; this.accum = 0;
this.held = null; this.held = null;
this.wasAttached = false; // true when held ball was detached from structure
this.boardObjs = []; this.boardObjs = [];
this.overlayUp = false; this.overlayUp = false;
this.finished = false; this.finished = false;
@ -183,6 +184,7 @@ export default class GooTowerGame extends Phaser.Scene {
this.viewMode = 'select'; this.viewMode = 'select';
this.state = null; this.state = null;
this.held = null; this.held = null;
this.wasAttached = false;
this.clearBoard(); this.clearBoard();
const cx = GAME_WIDTH / 2; const cx = GAME_WIDTH / 2;
@ -328,6 +330,7 @@ export default class GooTowerGame extends Phaser.Scene {
this.state = createState(def, 0x60071e + level); this.state = createState(def, 0x60071e + level);
this.accum = 0; this.accum = 0;
this.held = null; this.held = null;
this.wasAttached = false;
this.overlayUp = false; this.overlayUp = false;
this.finished = false; this.finished = false;
@ -561,6 +564,7 @@ export default class GooTowerGame extends Phaser.Scene {
if (!ball) return; if (!ball) return;
if (beginDrag(this.state, ball, null)) { if (beginDrag(this.state, ball, null)) {
this.held = ball; this.held = ball;
this.wasAttached = ball.wasDetached; // only true for detached balls
playSound(this, SFX.UI_PICK); playSound(this, SFX.UI_PICK);
} }
} }
@ -584,9 +588,11 @@ export default class GooTowerGame extends Phaser.Scene {
if (!this.held || !this.state) return; if (!this.held || !this.state) return;
const w = this.toWorld(p); const w = this.toWorld(p);
const ball = this.held; const ball = this.held;
const wasAttached = this.wasAttached;
this.held = null; this.held = null;
this.wasAttached = false;
const events = []; 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); playSound(this, stuck ? SFX.UI_PLACE : SFX.SQUISH);
this.handleEvents(events); this.handleEvents(events);
} }

View File

@ -315,6 +315,8 @@ export function addBall(state, x, y, type = 'common', opts = {}) {
exploded: false, exploded: false,
held: false, // under the player's cursor; physics leaves it alone held: false, // under the player's cursor; physics leaves it alone
grounded: false, 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 // crawling
walking: false, walking: false,
onStrand: -1, onStrand: -1,
@ -979,24 +981,49 @@ export function placeBall(state, ball, x, y, events = null) {
return true; return true;
} }
// The nearest ball the player is allowed to pick up: anything loose, plus // The nearest ball the player is allowed to pick up:
// attached goo of a detachable type. //
// 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) { export function pickBallAt(state, x, y, reach = 42) {
let best = null; let bestLoose = null;
let bestD = Infinity; let bestLooseD = Infinity;
let bestDirect = null;
let bestDirectD = Infinity;
for (const b of state.balls) { for (const b of state.balls) {
if (b.dead) continue; if (b.dead) continue;
if (b.attached && !gooType(b.type).detachable) continue; if (b.attached && !gooType(b.type).detachable) continue;
const d = Math.hypot(b.x - x, b.y - y); const d = Math.hypot(b.x - x, b.y - y);
if (d > reach + b.r || d >= bestD) continue; if (b.attached) {
bestD = d; // Attached detachable: only count if clicked DIRECTLY on the ball
best = b; // (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) { export function beginDrag(state, ball, events = null) {
if (!ball || ball.dead) return false; 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 (ball.attached) {
if (!gooType(ball.type).detachable) return false; if (!gooType(ball.type).detachable) return false;
for (const sid of ball.strands.slice()) { for (const sid of ball.strands.slice()) {
@ -1005,6 +1032,7 @@ export function beginDrag(state, ball, events = null) {
} }
ball.strands = []; ball.strands = [];
ball.attached = false; 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); if (!state.pile.includes(ball.id)) state.pile.push(ball.id);
} }
ball.held = true; 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 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 // Returns true when the ball stuck to the structure; false means it was
// released into the world as loose goo again. // 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 (!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; if (placeBall(state, ball, x, y, events)) return true;
ball.held = false; ball.held = false;
ball.x = x; ball.y = y; ball.px = x; ball.py = y; ball.x = x; ball.y = y; ball.px = x; ball.py = y;