1 /* second part of synchro.
3 * game logic for monsters.
5 * one giant switch statement to process everything.
7 * this whole thing is a major bottleneck. the compiler must use registers.
17 #define RANDOM (random = random << 31 | random >> 1)
18 #define PLAY(sample) { if ((unsigned int)(y - top) <= 12 && (unsigned int)(x - left) <= 20) play[sample] = 1; }
20 extern unsigned int screen_x;
21 extern unsigned int screen_y;
25 register unsigned int x = 0;
26 register unsigned int y = 1;
27 register unsigned long random = Random;
28 register unsigned short *cave_cache = Cave[y]; /* might be a win */
29 unsigned long score = 0;
31 unsigned int temp = 0; /* initialized to make compilers happy */
32 unsigned int left = screen_x / TILEX; /* only needed for sounds */
33 unsigned int top = screen_y / TILEY;
34 unsigned int dx; /* only needed to find closest player */
39 switch (cave_cache[++x])
44 /* --------------------------------------------------------------------- */
63 Cave[y][x] = Ystone_eB;
64 Cave[y][x+1] = Ystone_e;
66 Next[y][x+1] = Xstone_pause;
86 Cave[y][x] = Ystone_wB;
87 Cave[y][x-1] = Ystone_w;
89 Next[y][x-1] = Xstone_pause;
109 Cave[y][x] = Ynut_eB;
110 Cave[y][x+1] = Ynut_e;
112 Next[y][x+1] = Xnut_pause;
117 switch (Cave[y][x-1])
132 Cave[y][x] = Ynut_wB;
133 Cave[y][x-1] = Ynut_w;
135 Next[y][x-1] = Xnut_pause;
139 case Xspring_force_e:
140 switch (Cave[y][x+1])
150 Cave[y][x] = Xspring;
151 Next[y][x] = Xspring;
155 Cave[y][x] = Yspring_eB;
156 Cave[y][x+1] = Yspring_e;
160 Next[y][x+1] = Xspring_e;
162 Next[y][x+1] = Xspring_pause;
168 case Xspring_force_w:
169 switch (Cave[y][x-1])
179 Cave[y][x] = Xspring;
180 Next[y][x] = Xspring;
184 Cave[y][x] = Yspring_wB;
185 Cave[y][x-1] = Yspring_w;
189 Next[y][x-1] = Xspring_w;
191 Next[y][x-1] = Xspring_pause;
196 case Xemerald_force_e:
197 switch (Cave[y][x+1])
207 Cave[y][x] = Xemerald;
208 Next[y][x] = Xemerald;
212 Cave[y][x] = Yemerald_eB;
213 Cave[y][x+1] = Yemerald_e;
215 Next[y][x+1] = Xemerald_pause;
219 case Xemerald_force_w:
220 switch (Cave[y][x-1])
230 Cave[y][x] = Xemerald;
231 Next[y][x] = Xemerald;
235 Cave[y][x] = Yemerald_wB;
236 Cave[y][x-1] = Yemerald_w;
238 Next[y][x-1] = Xemerald_pause;
242 case Xdiamond_force_e:
243 switch (Cave[y][x+1])
253 Cave[y][x] = Xdiamond;
254 Next[y][x] = Xdiamond;
258 Cave[y][x] = Ydiamond_eB;
259 Cave[y][x+1] = Ydiamond_e;
261 Next[y][x+1] = Xdiamond_pause;
265 case Xdiamond_force_w:
266 switch (Cave[y][x-1])
276 Cave[y][x] = Xdiamond;
277 Next[y][x] = Xdiamond;
281 Cave[y][x] = Ydiamond_wB;
282 Cave[y][x-1] = Ydiamond_w;
284 Next[y][x-1] = Xdiamond_pause;
289 switch (Cave[y][x+1])
304 Cave[y][x] = Ybomb_eB;
305 Cave[y][x+1] = Ybomb_e;
307 Next[y][x+1] = Xbomb_pause;
312 switch (Cave[y][x-1])
327 Cave[y][x] = Ybomb_wB;
328 Cave[y][x-1] = Ybomb_w;
330 Next[y][x-1] = Xbomb_pause;
333 #endif /* BAD_ROLL */
335 /* --------------------------------------------------------------------- */
338 switch (Cave[y+1][x])
348 Cave[y][x] = Ystone_sB;
349 if (Cave[y][x+1] == Xblank)
350 Cave[y][x+1] = Yacid_splash_eB;
351 if (Cave[y][x-1] == Xblank)
352 Cave[y][x-1] = Yacid_splash_wB;
358 case Yacid_splash_eB:
359 case Yacid_splash_wB:
362 Cave[y][x] = Ystone_sB;
363 Cave[y+1][x] = Ystone_s;
365 Next[y+1][x] = Xstone_fall;
369 Cave[y][x] = Xsand_stonein_1;
370 Cave[y+1][x] = Xsand_sandstone_1;
371 Next[y][x] = Xsand_stonein_2;
372 Next[y+1][x] = Xsand_sandstone_2;
423 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
425 Cave[y][x] = Ystone_eB;
426 Cave[y][x+1] = Ystone_e;
428 Next[y][x+1] = Xstone_pause;
432 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
434 Cave[y][x] = Ystone_wB;
435 Cave[y][x-1] = Ystone_w;
437 Next[y][x-1] = Xstone_pause;
443 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
445 Cave[y][x] = Ystone_wB;
446 Cave[y][x-1] = Ystone_w;
448 Next[y][x-1] = Xstone_pause;
452 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
454 Cave[y][x] = Ystone_eB;
455 Cave[y][x+1] = Ystone_e;
457 Next[y][x+1] = Xstone_pause;
466 /* --------------------------------------------------------------------- */
469 switch (Cave[y+1][x])
479 Cave[y][x] = Ystone_sB;
480 if (Cave[y][x+1] == Xblank)
481 Cave[y][x+1] = Yacid_splash_eB;
482 if (Cave[y][x-1] == Xblank)
483 Cave[y][x-1] = Yacid_splash_wB;
489 case Yacid_splash_eB:
490 case Yacid_splash_wB:
491 Cave[y][x] = Ystone_sB;
492 Cave[y+1][x] = Ystone_s;
494 Next[y+1][x] = Xstone_fall;
503 /* --------------------------------------------------------------------- */
506 switch (Cave[y+1][x])
516 Cave[y][x] = Ystone_sB;
517 if (Cave[y][x+1] == Xblank)
518 Cave[y][x+1] = Yacid_splash_eB;
519 if (Cave[y][x-1] == Xblank)
520 Cave[y][x-1] = Yacid_splash_wB;
526 case Yacid_splash_eB:
527 case Yacid_splash_wB:
529 Cave[y][x] = Ystone_sB;
530 Cave[y+1][x] = Ystone_s;
532 Next[y+1][x] = Xstone_fall;
537 Cave[y+1][x] = Yemerald_stone;
539 Next[y+1][x] = Xemerald;
540 play[SAMPLE_crack] = 1;
541 score += lev.nut_score;
552 Cave[y][x] = Ystone_sB;
553 Cave[y+1][x] = Ybug_stone;
554 Next[y+1][x] = Znormal;
555 Boom[y][x-1] = Xemerald;
556 Boom[y][x] = Xemerald;
557 Boom[y][x+1] = Xemerald;
558 Boom[y+1][x-1] = Xemerald;
559 Boom[y+1][x] = Xdiamond;
560 Boom[y+1][x+1] = Xemerald;
561 Boom[y+2][x-1] = Xemerald;
562 Boom[y+2][x] = Xemerald;
563 Boom[y+2][x+1] = Xemerald;
564 score += lev.bug_score;
575 Cave[y][x] = Ystone_sB;
576 Cave[y+1][x] = Ytank_stone;
577 Next[y+1][x] = Znormal;
578 Boom[y][x-1] = Xblank;
580 Boom[y][x+1] = Xblank;
581 Boom[y+1][x-1] = Xblank;
582 Boom[y+1][x] = Xblank;
583 Boom[y+1][x+1] = Xblank;
584 Boom[y+2][x-1] = Xblank;
585 Boom[y+2][x] = Xblank;
586 Boom[y+2][x+1] = Xblank;
587 score += lev.tank_score;
593 switch (Cave[y+1][x+1])
596 case Yacid_splash_eB:
597 case Yacid_splash_wB:
600 Cave[y+1][x] = Xspring_e;
604 Cave[y+1][x] = Xspring_w;
610 switch (Cave[y+1][x-1])
613 case Yacid_splash_eB:
614 case Yacid_splash_wB:
617 Cave[y+1][x] = Xspring_w;
620 Cave[y+1][x] = Xspring_e;
632 Cave[y][x] = Ystone_sB;
633 Cave[y+1][x] = Yeater_stone;
634 Next[y+1][x] = Znormal;
635 Boom[y][x-1] = lev.eater_array[lev.eater_pos][0];
636 Boom[y][x] = lev.eater_array[lev.eater_pos][1];
637 Boom[y][x+1] = lev.eater_array[lev.eater_pos][2];
638 Boom[y+1][x-1] = lev.eater_array[lev.eater_pos][3];
639 Boom[y+1][x] = lev.eater_array[lev.eater_pos][4];
640 Boom[y+1][x+1] = lev.eater_array[lev.eater_pos][5];
641 Boom[y+2][x-1] = lev.eater_array[lev.eater_pos][6];
642 Boom[y+2][x] = lev.eater_array[lev.eater_pos][7];
643 Boom[y+2][x+1] = lev.eater_array[lev.eater_pos][8];
644 lev.eater_pos = (lev.eater_pos + 1) & 7;
645 score += lev.eater_score;
650 Cave[y][x] = Ystone_sB;
651 Cave[y+1][x] = Yalien_stone;
652 Next[y+1][x] = Znormal;
653 Boom[y][x-1] = Xblank;
655 Boom[y][x+1] = Xblank;
656 Boom[y+1][x-1] = Xblank;
657 Boom[y+1][x] = Xblank;
658 Boom[y+1][x+1] = Xblank;
659 Boom[y+2][x-1] = Xblank;
660 Boom[y+2][x] = Xblank;
661 Boom[y+2][x+1] = Xblank;
662 score += lev.alien_score;
667 switch (Cave[y+2][x])
670 case Yacid_splash_eB:
671 case Yacid_splash_wB:
720 Cave[y][x] = Ystone_sB;
721 Cave[y+1][x] = Ydiamond_stone;
723 Next[y+1][x] = Xstone_pause;
724 play[SAMPLE_squash] = 1;
729 Cave[y+1][x] = Ybomb_eat;
730 Next[y+1][x] = Znormal;
731 Boom[y][x-1] = Xblank;
733 Boom[y][x+1] = Xblank;
734 Boom[y+1][x-1] = Xblank;
735 Boom[y+1][x] = Xblank;
736 Boom[y+1][x+1] = Xblank;
737 Boom[y+2][x-1] = Xblank;
738 Boom[y+2][x] = Xblank;
739 Boom[y+2][x+1] = Xblank;
743 if (lev.wonderwall_time)
745 lev.wonderwall_state = 1;
746 Cave[y][x] = Ystone_sB;
748 if (tab_blank[Cave[y+2][x]])
750 Cave[y+2][x] = Yemerald_s;
751 Next[y+2][x] = Xemerald_fall;
755 play[SAMPLE_squash] = 1;
766 /* --------------------------------------------------------------------- */
769 switch (Cave[y+1][x])
779 Cave[y][x] = Ynut_sB;
780 if (Cave[y][x+1] == Xblank)
781 Cave[y][x+1] = Yacid_splash_eB;
782 if (Cave[y][x-1] == Xblank)
783 Cave[y][x-1] = Yacid_splash_wB;
789 case Yacid_splash_eB:
790 case Yacid_splash_wB:
791 Cave[y][x] = Ynut_sB;
792 Cave[y+1][x] = Ynut_s;
794 Next[y+1][x] = Xnut_fall;
843 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
845 Cave[y][x] = Ynut_eB;
846 Cave[y][x+1] = Ynut_e;
848 Next[y][x+1] = Xnut_pause;
852 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
854 Cave[y][x] = Ynut_wB;
855 Cave[y][x-1] = Ynut_w;
857 Next[y][x-1] = Xnut_pause;
863 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
865 Cave[y][x] = Ynut_wB;
866 Cave[y][x-1] = Ynut_w;
868 Next[y][x-1] = Xnut_pause;
872 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
874 Cave[y][x] = Ynut_eB;
875 Cave[y][x+1] = Ynut_e;
877 Next[y][x+1] = Xnut_pause;
886 /* --------------------------------------------------------------------- */
890 switch (Cave[y+1][x])
900 Cave[y][x] = Ynut_sB;
901 if (Cave[y][x+1] == Xblank)
902 Cave[y][x+1] = Yacid_splash_eB;
903 if (Cave[y][x-1] == Xblank)
904 Cave[y][x-1] = Yacid_splash_wB;
910 case Yacid_splash_eB:
911 case Yacid_splash_wB:
912 Cave[y][x] = Ynut_sB;
913 Cave[y+1][x] = Ynut_s;
915 Next[y+1][x] = Xnut_fall;
924 /* --------------------------------------------------------------------- */
927 switch (Cave[y+1][x])
937 Cave[y][x] = Ynut_sB;
938 if (Cave[y][x+1] == Xblank)
939 Cave[y][x+1] = Yacid_splash_eB;
940 if (Cave[y][x-1] == Xblank)
941 Cave[y][x-1] = Yacid_splash_wB;
947 case Yacid_splash_eB:
948 case Yacid_splash_wB:
950 Cave[y][x] = Ynut_sB;
951 Cave[y+1][x] = Ynut_s;
953 Next[y+1][x] = Xnut_fall;
963 /* --------------------------------------------------------------------- */
966 if (tab_ameuba[Cave[y-1][x]] ||
967 tab_ameuba[Cave[y][x+1]] ||
968 tab_ameuba[Cave[y+1][x]] ||
969 tab_ameuba[Cave[y][x-1]])
972 switch (Cave[y][x+1])
975 case Yacid_splash_eB:
976 case Yacid_splash_wB:
988 Cave[y][x] = Ybug_n_e;
989 Next[y][x] = Xbug_goe;
998 if (tab_ameuba[Cave[y-1][x]] ||
999 tab_ameuba[Cave[y][x+1]] ||
1000 tab_ameuba[Cave[y+1][x]] ||
1001 tab_ameuba[Cave[y][x-1]])
1006 switch (Cave[y-1][x])
1016 Cave[y][x] = Ybug_nB;
1017 if (Cave[y-2][x+1] == Xblank)
1018 Cave[y-2][x+1] = Yacid_splash_eB;
1019 if (Cave[y-2][x-1] == Xblank)
1020 Cave[y-2][x-1] = Yacid_splash_wB;
1021 Next[y][x] = Xblank;
1026 case Yacid_splash_eB:
1027 case Yacid_splash_wB:
1031 Cave[y][x] = Ybug_nB;
1032 Cave[y-1][x] = Ybug_n;
1033 Next[y][x] = Xblank;
1034 Next[y-1][x] = Xbug_n;
1039 Cave[y][x] = Ybug_n_w;
1040 Next[y][x] = Xbug_gow;
1045 /* --------------------------------------------------------------------- */
1048 if (tab_ameuba[Cave[y-1][x]] ||
1049 tab_ameuba[Cave[y][x+1]] ||
1050 tab_ameuba[Cave[y+1][x]] ||
1051 tab_ameuba[Cave[y][x-1]])
1054 switch (Cave[y+1][x])
1057 case Yacid_splash_eB:
1058 case Yacid_splash_wB:
1070 Cave[y][x] = Ybug_e_s;
1071 Next[y][x] = Xbug_gos;
1080 if (tab_ameuba[Cave[y-1][x]] ||
1081 tab_ameuba[Cave[y][x+1]] ||
1082 tab_ameuba[Cave[y+1][x]] ||
1083 tab_ameuba[Cave[y][x-1]])
1088 switch (Cave[y][x+1])
1098 Cave[y][x] = Ybug_eB;
1099 if (Cave[y-1][x+2] == Xblank)
1100 Cave[y-1][x+2] = Yacid_splash_eB;
1101 if (Cave[y-1][x] == Xblank)
1102 Cave[y-1][x] = Yacid_splash_wB;
1103 Next[y][x] = Xblank;
1108 case Yacid_splash_eB:
1109 case Yacid_splash_wB:
1113 Cave[y][x] = Ybug_eB;
1114 Cave[y][x+1] = Ybug_e;
1115 Next[y][x] = Xblank;
1116 Next[y][x+1] = Xbug_e;
1121 Cave[y][x] = Ybug_e_n;
1122 Next[y][x] = Xbug_gon;
1127 /* --------------------------------------------------------------------- */
1130 if (tab_ameuba[Cave[y-1][x]] ||
1131 tab_ameuba[Cave[y][x+1]] ||
1132 tab_ameuba[Cave[y+1][x]] ||
1133 tab_ameuba[Cave[y][x-1]])
1136 switch (Cave[y][x-1])
1139 case Yacid_splash_eB:
1140 case Yacid_splash_wB:
1152 Cave[y][x] = Ybug_s_w;
1153 Next[y][x] = Xbug_gow;
1162 if (tab_ameuba[Cave[y-1][x]] ||
1163 tab_ameuba[Cave[y][x+1]] ||
1164 tab_ameuba[Cave[y+1][x]] ||
1165 tab_ameuba[Cave[y][x-1]])
1170 switch (Cave[y+1][x])
1180 Cave[y][x] = Ybug_sB;
1181 if (Cave[y][x+1] == Xblank)
1182 Cave[y][x+1] = Yacid_splash_eB;
1183 if (Cave[y][x-1] == Xblank)
1184 Cave[y][x-1] = Yacid_splash_wB;
1185 Next[y][x] = Xblank;
1190 case Yacid_splash_eB:
1191 case Yacid_splash_wB:
1195 Cave[y][x] = Ybug_sB;
1196 Cave[y+1][x] = Ybug_s;
1197 Next[y][x] = Xblank;
1198 Next[y+1][x] = Xbug_s;
1203 Cave[y][x] = Ybug_s_e;
1204 Next[y][x] = Xbug_goe;
1209 /* --------------------------------------------------------------------- */
1212 if (tab_ameuba[Cave[y-1][x]] ||
1213 tab_ameuba[Cave[y][x+1]] ||
1214 tab_ameuba[Cave[y+1][x]] ||
1215 tab_ameuba[Cave[y][x-1]])
1218 switch (Cave[y-1][x])
1221 case Yacid_splash_eB:
1222 case Yacid_splash_wB:
1234 Cave[y][x] = Ybug_w_n;
1235 Next[y][x] = Xbug_gon;
1244 if (tab_ameuba[Cave[y-1][x]] ||
1245 tab_ameuba[Cave[y][x+1]] ||
1246 tab_ameuba[Cave[y+1][x]] ||
1247 tab_ameuba[Cave[y][x-1]])
1252 switch (Cave[y][x-1])
1262 Cave[y][x] = Ybug_wB;
1263 if (Cave[y-1][x] == Xblank)
1264 Cave[y-1][x] = Yacid_splash_eB;
1265 if (Cave[y-1][x-2] == Xblank)
1266 Cave[y-1][x-2] = Yacid_splash_wB;
1267 Next[y][x] = Xblank;
1272 case Yacid_splash_eB:
1273 case Yacid_splash_wB:
1277 Cave[y][x] = Ybug_wB;
1278 Cave[y][x-1] = Ybug_w;
1279 Next[y][x] = Xblank;
1280 Next[y][x-1] = Xbug_w;
1285 Cave[y][x] = Ybug_w_s;
1286 Next[y][x] = Xbug_gos;
1291 /* --------------------------------------------------------------------- */
1294 if (tab_ameuba[Cave[y-1][x]] ||
1295 tab_ameuba[Cave[y][x+1]] ||
1296 tab_ameuba[Cave[y+1][x]] ||
1297 tab_ameuba[Cave[y][x-1]])
1300 switch (Cave[y][x-1])
1303 case Yacid_splash_eB:
1304 case Yacid_splash_wB:
1316 Cave[y][x] = Ytank_n_w;
1317 Next[y][x] = Xtank_gow;
1326 if (tab_ameuba[Cave[y-1][x]] ||
1327 tab_ameuba[Cave[y][x+1]] ||
1328 tab_ameuba[Cave[y+1][x]] ||
1329 tab_ameuba[Cave[y][x-1]])
1334 switch (Cave[y-1][x])
1344 Cave[y][x] = Ytank_nB;
1345 if (Cave[y-2][x+1] == Xblank)
1346 Cave[y-2][x+1] = Yacid_splash_eB;
1347 if (Cave[y-2][x-1] == Xblank)
1348 Cave[y-2][x-1] = Yacid_splash_wB;
1349 Next[y][x] = Xblank;
1354 case Yacid_splash_eB:
1355 case Yacid_splash_wB:
1359 Cave[y][x] = Ytank_nB;
1360 Cave[y-1][x] = Ytank_n;
1361 Next[y][x] = Xblank;
1362 Next[y-1][x] = Xtank_n;
1367 Cave[y][x] = Ytank_n_e;
1368 Next[y][x] = Xtank_goe;
1373 /* --------------------------------------------------------------------- */
1376 if (tab_ameuba[Cave[y-1][x]] ||
1377 tab_ameuba[Cave[y][x+1]] ||
1378 tab_ameuba[Cave[y+1][x]] ||
1379 tab_ameuba[Cave[y][x-1]])
1382 switch (Cave[y-1][x])
1385 case Yacid_splash_eB:
1386 case Yacid_splash_wB:
1398 Cave[y][x] = Ytank_e_n;
1399 Next[y][x] = Xtank_gon;
1408 if (tab_ameuba[Cave[y-1][x]] ||
1409 tab_ameuba[Cave[y][x+1]] ||
1410 tab_ameuba[Cave[y+1][x]] ||
1411 tab_ameuba[Cave[y][x-1]])
1416 switch (Cave[y][x+1])
1426 Cave[y][x] = Ytank_eB;
1427 if (Cave[y-1][x+2] == Xblank)
1428 Cave[y-1][x+2] = Yacid_splash_eB;
1429 if (Cave[y-1][x] == Xblank)
1430 Cave[y-1][x] = Yacid_splash_wB;
1431 Next[y][x] = Xblank;
1436 case Yacid_splash_eB:
1437 case Yacid_splash_wB:
1441 Cave[y][x] = Ytank_eB;
1442 Cave[y][x+1] = Ytank_e;
1443 Next[y][x] = Xblank;
1444 Next[y][x+1] = Xtank_e;
1449 Cave[y][x] = Ytank_e_s;
1450 Next[y][x] = Xtank_gos;
1455 /* --------------------------------------------------------------------- */
1458 if (tab_ameuba[Cave[y-1][x]] ||
1459 tab_ameuba[Cave[y][x+1]] ||
1460 tab_ameuba[Cave[y+1][x]] ||
1461 tab_ameuba[Cave[y][x-1]])
1464 switch (Cave[y][x+1])
1467 case Yacid_splash_eB:
1468 case Yacid_splash_wB:
1480 Cave[y][x] = Ytank_s_e;
1481 Next[y][x] = Xtank_goe;
1490 if (tab_ameuba[Cave[y-1][x]] ||
1491 tab_ameuba[Cave[y][x+1]] ||
1492 tab_ameuba[Cave[y+1][x]] ||
1493 tab_ameuba[Cave[y][x-1]])
1498 switch (Cave[y+1][x])
1508 Cave[y][x] = Ytank_sB;
1509 if (Cave[y][x+1] == Xblank)
1510 Cave[y][x+1] = Yacid_splash_eB;
1511 if (Cave[y][x-1] == Xblank)
1512 Cave[y][x-1] = Yacid_splash_wB;
1513 Next[y][x] = Xblank;
1518 case Yacid_splash_eB:
1519 case Yacid_splash_wB:
1523 Cave[y][x] = Ytank_sB;
1524 Cave[y+1][x] = Ytank_s;
1525 Next[y][x] = Xblank;
1526 Next[y+1][x] = Xtank_s;
1531 Cave[y][x] = Ytank_s_w;
1532 Next[y][x] = Xtank_gow;
1537 /* --------------------------------------------------------------------- */
1540 if (tab_ameuba[Cave[y-1][x]] ||
1541 tab_ameuba[Cave[y][x+1]] ||
1542 tab_ameuba[Cave[y+1][x]] ||
1543 tab_ameuba[Cave[y][x-1]])
1546 switch (Cave[y+1][x])
1549 case Yacid_splash_eB:
1550 case Yacid_splash_wB:
1562 Cave[y][x] = Ytank_w_s;
1563 Next[y][x] = Xtank_gos;
1572 if (tab_ameuba[Cave[y-1][x]] ||
1573 tab_ameuba[Cave[y][x+1]] ||
1574 tab_ameuba[Cave[y+1][x]] ||
1575 tab_ameuba[Cave[y][x-1]])
1580 switch (Cave[y][x-1])
1590 Cave[y][x] = Ytank_wB;
1591 if (Cave[y-1][x] == Xblank)
1592 Cave[y-1][x] = Yacid_splash_eB;
1593 if (Cave[y-1][x-2] == Xblank)
1594 Cave[y-1][x-2] = Yacid_splash_wB;
1595 Next[y][x] = Xblank;
1600 case Yacid_splash_eB:
1601 case Yacid_splash_wB:
1605 Cave[y][x] = Ytank_wB;
1606 Cave[y][x-1] = Ytank_w;
1607 Next[y][x] = Xblank;
1608 Next[y][x-1] = Xtank_w;
1613 Cave[y][x] = Ytank_w_n;
1614 Next[y][x] = Xtank_gon;
1619 /* --------------------------------------------------------------------- */
1625 if (lev.android_clone_cnt == 0)
1627 if (Cave[y-1][x-1] != Xblank &&
1628 Cave[y-1][x] != Xblank &&
1629 Cave[y-1][x+1] != Xblank &&
1630 Cave[y][x-1] != Xblank &&
1631 Cave[y][x+1] != Xblank &&
1632 Cave[y+1][x-1] != Xblank &&
1633 Cave[y+1][x] != Xblank &&
1634 Cave[y+1][x+1] != Xblank)
1639 /* randomly find an object to clone */
1641 case 0: /* S,NE,W,NW,SE,E,SW,N */
1642 temp= lev.android_array[Cave[y+1][x]]; if (temp != Xblank) break;
1643 temp= lev.android_array[Cave[y-1][x+1]]; if (temp != Xblank) break;
1644 temp= lev.android_array[Cave[y][x-1]]; if (temp != Xblank) break;
1645 temp= lev.android_array[Cave[y-1][x-1]]; if (temp != Xblank) break;
1646 temp= lev.android_array[Cave[y+1][x+1]]; if (temp != Xblank) break;
1647 temp= lev.android_array[Cave[y][x+1]]; if (temp != Xblank) break;
1648 temp= lev.android_array[Cave[y+1][x-1]]; if (temp != Xblank) break;
1649 temp= lev.android_array[Cave[y-1][x]]; if (temp != Xblank) break;
1652 case 1: /* NW,SE,N,S,NE,SW,E,W */
1653 temp= lev.android_array[Cave[y-1][x-1]]; if (temp != Xblank) break;
1654 temp= lev.android_array[Cave[y+1][x+1]]; if (temp != Xblank) break;
1655 temp= lev.android_array[Cave[y-1][x]]; if (temp != Xblank) break;
1656 temp= lev.android_array[Cave[y+1][x]]; if (temp != Xblank) break;
1657 temp= lev.android_array[Cave[y-1][x+1]]; if (temp != Xblank) break;
1658 temp= lev.android_array[Cave[y+1][x-1]]; if (temp != Xblank) break;
1659 temp= lev.android_array[Cave[y][x+1]]; if (temp != Xblank) break;
1660 temp= lev.android_array[Cave[y][x-1]]; if (temp != Xblank) break;
1663 case 2: /* SW,E,S,W,N,NW,SE,NE */
1664 temp= lev.android_array[Cave[y+1][x-1]]; if (temp != Xblank) break;
1665 temp= lev.android_array[Cave[y][x+1]]; if (temp != Xblank) break;
1666 temp= lev.android_array[Cave[y+1][x]]; if (temp != Xblank) break;
1667 temp= lev.android_array[Cave[y][x-1]]; if (temp != Xblank) break;
1668 temp= lev.android_array[Cave[y-1][x]]; if (temp != Xblank) break;
1669 temp= lev.android_array[Cave[y-1][x-1]]; if (temp != Xblank) break;
1670 temp= lev.android_array[Cave[y+1][x+1]]; if (temp != Xblank) break;
1671 temp= lev.android_array[Cave[y-1][x+1]]; if (temp != Xblank) break;
1674 case 3: /* N,SE,NE,E,W,S,NW,SW */
1675 temp= lev.android_array[Cave[y-1][x]]; if (temp != Xblank) break;
1676 temp= lev.android_array[Cave[y+1][x+1]]; if (temp != Xblank) break;
1677 temp= lev.android_array[Cave[y-1][x+1]]; if (temp != Xblank) break;
1678 temp= lev.android_array[Cave[y][x+1]]; if (temp != Xblank) break;
1679 temp= lev.android_array[Cave[y][x-1]]; if (temp != Xblank) break;
1680 temp= lev.android_array[Cave[y+1][x]]; if (temp != Xblank) break;
1681 temp= lev.android_array[Cave[y-1][x-1]]; if (temp != Xblank) break;
1682 temp= lev.android_array[Cave[y+1][x-1]]; if (temp != Xblank) break;
1685 case 4: /* SE,NW,E,NE,SW,W,N,S */
1686 temp= lev.android_array[Cave[y+1][x+1]]; if (temp != Xblank) break;
1687 temp= lev.android_array[Cave[y-1][x-1]]; if (temp != Xblank) break;
1688 temp= lev.android_array[Cave[y][x+1]]; if (temp != Xblank) break;
1689 temp= lev.android_array[Cave[y-1][x+1]]; if (temp != Xblank) break;
1690 temp= lev.android_array[Cave[y+1][x-1]]; if (temp != Xblank) break;
1691 temp= lev.android_array[Cave[y][x-1]]; if (temp != Xblank) break;
1692 temp= lev.android_array[Cave[y-1][x]]; if (temp != Xblank) break;
1693 temp= lev.android_array[Cave[y+1][x]]; if (temp != Xblank) break;
1696 case 5: /* NE,W,SE,SW,S,N,E,NW */
1697 temp= lev.android_array[Cave[y-1][x+1]]; if (temp != Xblank) break;
1698 temp= lev.android_array[Cave[y][x-1]]; if (temp != Xblank) break;
1699 temp= lev.android_array[Cave[y+1][x+1]]; if (temp != Xblank) break;
1700 temp= lev.android_array[Cave[y+1][x-1]]; if (temp != Xblank) break;
1701 temp= lev.android_array[Cave[y+1][x]]; if (temp != Xblank) break;
1702 temp= lev.android_array[Cave[y-1][x]]; if (temp != Xblank) break;
1703 temp= lev.android_array[Cave[y][x+1]]; if (temp != Xblank) break;
1704 temp= lev.android_array[Cave[y-1][x-1]]; if (temp != Xblank) break;
1707 case 6: /* E,N,SW,S,NW,NE,SE,W */
1708 temp= lev.android_array[Cave[y][x+1]]; if (temp != Xblank) break;
1709 temp= lev.android_array[Cave[y-1][x]]; if (temp != Xblank) break;
1710 temp= lev.android_array[Cave[y+1][x-1]]; if (temp != Xblank) break;
1711 temp= lev.android_array[Cave[y+1][x]]; if (temp != Xblank) break;
1712 temp= lev.android_array[Cave[y-1][x-1]]; if (temp != Xblank) break;
1713 temp= lev.android_array[Cave[y-1][x+1]]; if (temp != Xblank) break;
1714 temp= lev.android_array[Cave[y+1][x+1]]; if (temp != Xblank) break;
1715 temp= lev.android_array[Cave[y][x-1]]; if (temp != Xblank) break;
1718 case 7: /* W,SW,NW,N,E,SE,NE,S */
1719 temp= lev.android_array[Cave[y][x-1]]; if (temp != Xblank) break;
1720 temp= lev.android_array[Cave[y+1][x-1]]; if (temp != Xblank) break;
1721 temp= lev.android_array[Cave[y-1][x-1]]; if (temp != Xblank) break;
1722 temp= lev.android_array[Cave[y-1][x]]; if (temp != Xblank) break;
1723 temp= lev.android_array[Cave[y][x+1]]; if (temp != Xblank) break;
1724 temp= lev.android_array[Cave[y+1][x+1]]; if (temp != Xblank) break;
1725 temp= lev.android_array[Cave[y-1][x+1]]; if (temp != Xblank) break;
1726 temp= lev.android_array[Cave[y+1][x]]; if (temp != Xblank) break;
1730 Next[y][x] = temp; /* the item we chose to clone */
1731 play[SAMPLE_android] = 1;
1735 /* randomly find a direction to move */
1737 case 0: /* S,NE,W,NW,SE,E,SW,N */
1738 if (Cave[y+1][x] == Xblank) goto android_s;
1739 if (Cave[y-1][x+1] == Xblank) goto android_ne;
1740 if (Cave[y][x-1] == Xblank) goto android_w;
1741 if (Cave[y-1][x-1] == Xblank) goto android_nw;
1742 if (Cave[y+1][x+1] == Xblank) goto android_se;
1743 if (Cave[y][x+1] == Xblank) goto android_e;
1744 if (Cave[y+1][x-1] == Xblank) goto android_sw;
1745 if (Cave[y-1][x] == Xblank) goto android_n;
1748 case 1: /* NW,SE,N,S,NE,SW,E,W */
1749 if (Cave[y-1][x-1] == Xblank) goto android_nw;
1750 if (Cave[y+1][x+1] == Xblank) goto android_se;
1751 if (Cave[y-1][x] == Xblank) goto android_n;
1752 if (Cave[y+1][x] == Xblank) goto android_s;
1753 if (Cave[y-1][x+1] == Xblank) goto android_ne;
1754 if (Cave[y+1][x-1] == Xblank) goto android_sw;
1755 if (Cave[y][x+1] == Xblank) goto android_e;
1756 if (Cave[y][x-1] == Xblank) goto android_w;
1759 case 2: /* SW,E,S,W,N,NW,SE,NE */
1760 if (Cave[y+1][x-1] == Xblank) goto android_sw;
1761 if (Cave[y][x+1] == Xblank) goto android_e;
1762 if (Cave[y+1][x] == Xblank) goto android_s;
1763 if (Cave[y][x-1] == Xblank) goto android_w;
1764 if (Cave[y-1][x] == Xblank) goto android_n;
1765 if (Cave[y-1][x-1] == Xblank) goto android_nw;
1766 if (Cave[y+1][x+1] == Xblank) goto android_se;
1767 if (Cave[y-1][x+1] == Xblank) goto android_ne;
1770 case 3: /* N,SE,NE,E,W,S,NW,SW */
1771 if (Cave[y-1][x] == Xblank) goto android_n;
1772 if (Cave[y+1][x+1] == Xblank) goto android_se;
1773 if (Cave[y-1][x+1] == Xblank) goto android_ne;
1774 if (Cave[y][x+1] == Xblank) goto android_e;
1775 if (Cave[y][x-1] == Xblank) goto android_w;
1776 if (Cave[y+1][x] == Xblank) goto android_s;
1777 if (Cave[y-1][x-1] == Xblank) goto android_nw;
1778 if (Cave[y+1][x-1] == Xblank) goto android_sw;
1781 case 4: /* SE,NW,E,NE,SW,W,N,S */
1782 if (Cave[y+1][x+1] == Xblank) goto android_se;
1783 if (Cave[y-1][x-1] == Xblank) goto android_nw;
1784 if (Cave[y][x+1] == Xblank) goto android_e;
1785 if (Cave[y-1][x+1] == Xblank) goto android_ne;
1786 if (Cave[y+1][x-1] == Xblank) goto android_sw;
1787 if (Cave[y][x-1] == Xblank) goto android_w;
1788 if (Cave[y-1][x] == Xblank) goto android_n;
1789 if (Cave[y+1][x] == Xblank) goto android_s;
1792 case 5: /* NE,W,SE,SW,S,N,E,NW */
1793 if (Cave[y-1][x+1] == Xblank) goto android_ne;
1794 if (Cave[y][x-1] == Xblank) goto android_w;
1795 if (Cave[y+1][x+1] == Xblank) goto android_se;
1796 if (Cave[y+1][x-1] == Xblank) goto android_sw;
1797 if (Cave[y+1][x] == Xblank) goto android_s;
1798 if (Cave[y-1][x] == Xblank) goto android_n;
1799 if (Cave[y][x+1] == Xblank) goto android_e;
1800 if (Cave[y-1][x-1] == Xblank) goto android_nw;
1803 case 6: /* E,N,SW,S,NW,NE,SE,W */
1804 if (Cave[y][x+1] == Xblank) goto android_e;
1805 if (Cave[y-1][x] == Xblank) goto android_n;
1806 if (Cave[y+1][x-1] == Xblank) goto android_sw;
1807 if (Cave[y+1][x] == Xblank) goto android_s;
1808 if (Cave[y-1][x-1] == Xblank) goto android_nw;
1809 if (Cave[y-1][x+1] == Xblank) goto android_ne;
1810 if (Cave[y+1][x+1] == Xblank) goto android_se;
1811 if (Cave[y][x-1] == Xblank) goto android_w;
1814 case 7: /* W,SW,NW,N,E,SE,NE,S */
1815 if (Cave[y][x-1] == Xblank) goto android_w;
1816 if (Cave[y+1][x-1] == Xblank) goto android_sw;
1817 if (Cave[y-1][x-1] == Xblank) goto android_nw;
1818 if (Cave[y-1][x] == Xblank) goto android_n;
1819 if (Cave[y][x+1] == Xblank) goto android_e;
1820 if (Cave[y+1][x+1] == Xblank) goto android_se;
1821 if (Cave[y-1][x+1] == Xblank) goto android_ne;
1822 if (Cave[y+1][x] == Xblank) goto android_s;
1828 if (lev.android_move_cnt == 0)
1830 if (Cave[y-1][x-1] == Zplayer ||
1831 Cave[y-1][x] == Zplayer ||
1832 Cave[y-1][x+1] == Zplayer ||
1833 Cave[y][x-1] == Zplayer ||
1834 Cave[y][x+1] == Zplayer ||
1835 Cave[y+1][x-1] == Zplayer ||
1836 Cave[y+1][x] == Zplayer ||
1837 Cave[y+1][x+1] == Zplayer)
1840 if (ply1.alive && ply2.alive)
1842 if ((ply1.x > x ? ply1.x - x : x - ply1.x) +
1843 (ply1.y > y ? ply1.y - y : y - ply1.y) <
1844 (ply2.x > x ? ply2.x - x : x - ply2.x) +
1845 (ply2.y > y ? ply2.y - y : y - ply2.y))
1856 else if (ply1.alive)
1861 else if (ply2.alive)
1872 Next[y][x] = Xblank; /* assume we will move */
1873 temp = ((x < dx) + 1 - (x > dx)) + ((y < dy) + 1 - (y > dy)) * 3;
1879 /* attempt clockwise move first if direct path is blocked */
1881 case 0: /* north west */
1882 if (tab_android_move[Cave[y-1][x-1]]) goto android_nw;
1883 if (tab_android_move[Cave[y-1][x]]) goto android_n;
1884 if (tab_android_move[Cave[y][x-1]]) goto android_w;
1888 if (tab_android_move[Cave[y-1][x]]) goto android_n;
1889 if (tab_android_move[Cave[y-1][x+1]]) goto android_ne;
1890 if (tab_android_move[Cave[y-1][x-1]]) goto android_nw;
1893 case 2: /* north east */
1894 if (tab_android_move[Cave[y-1][x+1]]) goto android_ne;
1895 if (tab_android_move[Cave[y][x+1]]) goto android_e;
1896 if (tab_android_move[Cave[y-1][x]]) goto android_n;
1900 if (tab_android_move[Cave[y][x-1]]) goto android_w;
1901 if (tab_android_move[Cave[y-1][x-1]]) goto android_nw;
1902 if (tab_android_move[Cave[y+1][x-1]]) goto android_sw;
1905 case 4: /* nowhere */
1909 if (tab_android_move[Cave[y][x+1]]) goto android_e;
1910 if (tab_android_move[Cave[y+1][x+1]]) goto android_se;
1911 if (tab_android_move[Cave[y-1][x+1]]) goto android_ne;
1914 case 6: /* south west */
1915 if (tab_android_move[Cave[y+1][x-1]]) goto android_sw;
1916 if (tab_android_move[Cave[y][x-1]]) goto android_w;
1917 if (tab_android_move[Cave[y+1][x]]) goto android_s;
1921 if (tab_android_move[Cave[y+1][x]]) goto android_s;
1922 if (tab_android_move[Cave[y+1][x-1]]) goto android_sw;
1923 if (tab_android_move[Cave[y+1][x+1]]) goto android_se;
1926 case 8: /* south east */
1927 if (tab_android_move[Cave[y+1][x+1]]) goto android_se;
1928 if (tab_android_move[Cave[y+1][x]]) goto android_s;
1929 if (tab_android_move[Cave[y][x+1]]) goto android_e;
1937 /* attempt counterclockwise move first if direct path is blocked */
1939 case 0: /* north west */
1940 if (tab_android_move[Cave[y-1][x-1]]) goto android_nw;
1941 if (tab_android_move[Cave[y][x-1]]) goto android_w;
1942 if (tab_android_move[Cave[y-1][x]]) goto android_n;
1946 if (tab_android_move[Cave[y-1][x]]) goto android_n;
1947 if (tab_android_move[Cave[y-1][x-1]]) goto android_nw;
1948 if (tab_android_move[Cave[y-1][x+1]]) goto android_ne;
1951 case 2: /* north east */
1952 if (tab_android_move[Cave[y-1][x+1]]) goto android_ne;
1953 if (tab_android_move[Cave[y-1][x]]) goto android_n;
1954 if (tab_android_move[Cave[y][x+1]]) goto android_e;
1958 if (tab_android_move[Cave[y][x-1]]) goto android_w;
1959 if (tab_android_move[Cave[y+1][x-1]]) goto android_sw;
1960 if (tab_android_move[Cave[y-1][x-1]]) goto android_nw;
1963 case 4: /* nowhere */
1967 if (tab_android_move[Cave[y][x+1]]) goto android_e;
1968 if (tab_android_move[Cave[y-1][x+1]]) goto android_ne;
1969 if (tab_android_move[Cave[y+1][x+1]]) goto android_se;
1972 case 6: /* south west */
1973 if (tab_android_move[Cave[y+1][x-1]]) goto android_sw;
1974 if (tab_android_move[Cave[y+1][x]]) goto android_s;
1975 if (tab_android_move[Cave[y][x-1]]) goto android_w;
1979 if (tab_android_move[Cave[y+1][x]]) goto android_s;
1980 if (tab_android_move[Cave[y+1][x+1]]) goto android_se;
1981 if (tab_android_move[Cave[y+1][x-1]]) goto android_sw;
1984 case 8: /* south east */
1985 if (tab_android_move[Cave[y+1][x+1]]) goto android_se;
1986 if (tab_android_move[Cave[y][x+1]]) goto android_e;
1987 if (tab_android_move[Cave[y+1][x]]) goto android_s;
1995 Next[y][x] = Xandroid;
2000 Cave[y][x] = Yandroid_nB;
2001 Cave[y-1][x] = Yandroid_n;
2002 Next[y-1][x] = Xandroid;
2008 Cave[y][x] = Yandroid_neB;
2009 Cave[y-1][x+1] = Yandroid_ne;
2010 Next[y-1][x+1] = Xandroid;
2016 Cave[y][x] = Yandroid_eB;
2017 Cave[y][x+1] = Yandroid_e;
2018 Next[y][x+1] = Xandroid;
2024 Cave[y][x] = Yandroid_seB;
2025 Cave[y+1][x+1] = Yandroid_se;
2026 Next[y+1][x+1] = Xandroid;
2032 Cave[y][x] = Yandroid_sB;
2033 Cave[y+1][x] = Yandroid_s;
2034 Next[y+1][x] = Xandroid;
2040 Cave[y][x] = Yandroid_swB;
2041 Cave[y+1][x-1] = Yandroid_sw;
2042 Next[y+1][x-1] = Xandroid;
2048 Cave[y][x] = Yandroid_wB;
2049 Cave[y][x-1] = Yandroid_w;
2050 Next[y][x-1] = Xandroid;
2056 Cave[y][x] = Yandroid_nwB;
2057 Cave[y-1][x-1] = Yandroid_nw;
2058 Next[y-1][x-1] = Xandroid;
2062 /* --------------------------------------------------------------------- */
2065 switch (Cave[y-1][x])
2075 Cave[y][x] = Yandroid_nB;
2076 if (Cave[y-2][x+1] == Xblank)
2077 Cave[y-2][x+1] = Yacid_splash_eB;
2078 if (Cave[y-2][x-1] == Xblank)
2079 Cave[y-2][x-1] = Yacid_splash_wB;
2080 Next[y][x] = Xblank;
2085 case Yacid_splash_eB:
2086 case Yacid_splash_wB:
2087 Cave[y][x] = Yandroid_nB;
2088 Cave[y-1][x] = Yandroid_n;
2089 Next[y][x] = Xblank;
2090 Next[y-1][x] = Xandroid;
2099 switch (Cave[y-1][x])
2109 Cave[y][x] = Yandroid_nB;
2110 if (Cave[y-2][x+1] == Xblank)
2111 Cave[y-2][x+1] = Yacid_splash_eB;
2112 if (Cave[y-2][x-1] == Xblank)
2113 Cave[y-2][x-1] = Yacid_splash_wB;
2114 Next[y][x] = Xblank;
2119 case Yacid_splash_eB:
2120 case Yacid_splash_wB:
2121 Cave[y][x] = Yandroid_nB;
2122 Cave[y-1][x] = Yandroid_n;
2123 Next[y][x] = Xblank;
2124 Next[y-1][x] = Xandroid_1_n;
2132 /* --------------------------------------------------------------------- */
2135 switch (Cave[y][x+1])
2145 Cave[y][x] = Yandroid_eB;
2146 if (Cave[y-1][x+2] == Xblank)
2147 Cave[y-1][x+2] = Yacid_splash_eB;
2148 if (Cave[y-1][x] == Xblank)
2149 Cave[y-1][x] = Yacid_splash_wB;
2150 Next[y][x] = Xblank;
2155 case Yacid_splash_eB:
2156 case Yacid_splash_wB:
2157 Cave[y][x] = Yandroid_eB;
2158 Cave[y][x+1] = Yandroid_e;
2159 Next[y][x] = Xblank;
2160 Next[y][x+1] = Xandroid;
2169 switch (Cave[y][x+1])
2179 Cave[y][x] = Yandroid_eB;
2180 if (Cave[y-1][x+2] == Xblank)
2181 Cave[y-1][x+2] = Yacid_splash_eB;
2182 if (Cave[y-1][x] == Xblank)
2183 Cave[y-1][x] = Yacid_splash_wB;
2184 Next[y][x] = Xblank;
2189 case Yacid_splash_eB:
2190 case Yacid_splash_wB:
2191 Cave[y][x] = Yandroid_eB;
2192 Cave[y][x+1] = Yandroid_e;
2193 Next[y][x] = Xblank;
2194 Next[y][x+1] = Xandroid_1_e;
2202 /* --------------------------------------------------------------------- */
2205 switch (Cave[y+1][x])
2215 Cave[y][x] = Yandroid_sB;
2216 if (Cave[y][x+1] == Xblank)
2217 Cave[y][x+1] = Yacid_splash_eB;
2218 if (Cave[y][x-1] == Xblank)
2219 Cave[y][x-1] = Yacid_splash_wB;
2220 Next[y][x] = Xblank;
2225 case Yacid_splash_eB:
2226 case Yacid_splash_wB:
2227 Cave[y][x] = Yandroid_sB;
2228 Cave[y+1][x] = Yandroid_s;
2229 Next[y][x] = Xblank;
2230 Next[y+1][x] = Xandroid;
2239 switch (Cave[y+1][x])
2249 Cave[y][x] = Yandroid_sB;
2250 if (Cave[y][x+1] == Xblank)
2251 Cave[y][x+1] = Yacid_splash_eB;
2252 if (Cave[y][x-1] == Xblank)
2253 Cave[y][x-1] = Yacid_splash_wB;
2254 Next[y][x] = Xblank;
2259 case Yacid_splash_eB:
2260 case Yacid_splash_wB:
2261 Cave[y][x] = Yandroid_sB;
2262 Cave[y+1][x] = Yandroid_s;
2263 Next[y][x] = Xblank;
2264 Next[y+1][x] = Xandroid_1_s;
2272 /* --------------------------------------------------------------------- */
2275 switch (Cave[y][x-1])
2285 Cave[y][x] = Yandroid_wB;
2286 if (Cave[y-1][x] == Xblank)
2287 Cave[y-1][x] = Yacid_splash_eB;
2288 if (Cave[y-1][x-2] == Xblank)
2289 Cave[y-1][x-2] = Yacid_splash_wB;
2290 Next[y][x] = Xblank;
2295 case Yacid_splash_eB:
2296 case Yacid_splash_wB:
2297 Cave[y][x] = Yandroid_wB;
2298 Cave[y][x-1] = Yandroid_w;
2299 Next[y][x] = Xblank;
2300 Next[y][x-1] = Xandroid;
2309 switch (Cave[y][x-1])
2319 Cave[y][x] = Yandroid_wB;
2320 if (Cave[y-1][x] == Xblank)
2321 Cave[y-1][x] = Yacid_splash_eB;
2322 if (Cave[y-1][x-2] == Xblank)
2323 Cave[y-1][x-2] = Yacid_splash_wB;
2324 Next[y][x] = Xblank;
2329 case Yacid_splash_eB:
2330 case Yacid_splash_wB:
2331 Cave[y][x] = Yandroid_wB;
2332 Cave[y][x-1] = Yandroid_w;
2333 Next[y][x] = Xblank;
2334 Next[y][x-1] = Xandroid_1_w;
2342 /* --------------------------------------------------------------------- */
2345 switch (Cave[y+1][x])
2355 Cave[y][x] = Yspring_sB;
2356 if (Cave[y][x+1] == Xblank)
2357 Cave[y][x+1] = Yacid_splash_eB;
2358 if (Cave[y][x-1] == Xblank)
2359 Cave[y][x-1] = Yacid_splash_wB;
2360 Next[y][x] = Xblank;
2365 case Yacid_splash_eB:
2366 case Yacid_splash_wB:
2369 Cave[y][x] = Yspring_sB;
2370 Cave[y+1][x] = Yspring_s;
2371 Next[y][x] = Xblank;
2372 Next[y+1][x] = Xspring_fall;
2391 case Xemerald_pause:
2393 case Xdiamond_pause:
2421 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
2423 Cave[y][x] = Yspring_eB;
2424 Cave[y][x+1] = Yspring_e;
2425 if (Cave[y+1][x] == Xbumper)
2426 Cave[y+1][x] = XbumperB;
2427 Next[y][x] = Xblank;
2430 Next[y][x+1] = Xspring_e;
2432 Next[y][x+1] = Xspring_pause;
2438 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
2440 Cave[y][x] = Yspring_wB;
2441 Cave[y][x-1] = Yspring_w;
2442 if (Cave[y+1][x] == Xbumper)
2443 Cave[y+1][x] = XbumperB;
2444 Next[y][x] = Xblank;
2447 Next[y][x-1] = Xspring_w;
2449 Next[y][x-1] = Xspring_pause;
2457 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
2459 Cave[y][x] = Yspring_wB;
2460 Cave[y][x-1] = Yspring_w;
2461 if (Cave[y+1][x] == Xbumper)
2462 Cave[y+1][x] = XbumperB;
2463 Next[y][x] = Xblank;
2466 Next[y][x-1] = Xspring_w;
2468 Next[y][x-1] = Xspring_pause;
2474 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
2476 Cave[y][x] = Yspring_eB;
2477 Cave[y][x+1] = Yspring_e;
2478 if (Cave[y+1][x] == Xbumper)
2479 Cave[y+1][x] = XbumperB;
2480 Next[y][x] = Xblank;
2483 Next[y][x+1] = Xspring_e;
2485 Next[y][x+1] = Xspring_pause;
2496 /* --------------------------------------------------------------------- */
2499 switch (Cave[y+1][x])
2509 Cave[y][x] = Yspring_sB;
2510 if (Cave[y][x+1] == Xblank)
2511 Cave[y][x+1] = Yacid_splash_eB;
2512 if (Cave[y][x-1] == Xblank)
2513 Cave[y][x-1] = Yacid_splash_wB;
2514 Next[y][x] = Xblank;
2519 case Yacid_splash_eB:
2520 case Yacid_splash_wB:
2521 Cave[y][x] = Yspring_sB;
2522 Cave[y+1][x] = Yspring_s;
2523 Next[y][x] = Xblank;
2524 Next[y+1][x] = Xspring_fall;
2528 Cave[y][x] = Xspring;
2529 Next[y][x] = Xspring;
2533 /* --------------------------------------------------------------------- */
2536 switch (Cave[y+1][x])
2546 Cave[y][x] = Yspring_sB;
2547 if (Cave[y][x+1] == Xblank)
2548 Cave[y][x+1] = Yacid_splash_eB;
2549 if (Cave[y][x-1] == Xblank)
2550 Cave[y][x-1] = Yacid_splash_wB;
2551 Next[y][x] = Xblank;
2556 case Yacid_splash_eB:
2557 case Yacid_splash_wB:
2558 Cave[y][x] = Yspring_sB;
2559 Cave[y+1][x] = Yspring_s;
2560 Next[y][x] = Xblank;
2561 Next[y+1][x] = Xspring_fall;
2565 Cave[y+1][x] = XbumperB;
2568 switch (Cave[y][x+1])
2578 Cave[y][x] = Yspring_eB;
2579 if (Cave[y-1][x+2] == Xblank)
2580 Cave[y-1][x+2] = Yacid_splash_eB;
2581 if (Cave[y-1][x] == Xblank)
2582 Cave[y-1][x] = Yacid_splash_wB;
2583 Next[y][x] = Xblank;
2588 case Yacid_splash_eB:
2589 case Yacid_splash_wB:
2594 Cave[y][x] = Yspring_eB;
2595 Cave[y][x+1] = Yspring_e;
2596 Next[y][x] = Xblank;
2597 Next[y][x+1] = Xspring_e;
2606 Cave[y][x] = Yspring_kill_eB;
2607 Cave[y][x+1] = Yspring_kill_e;
2608 Next[y][x] = Xblank;
2609 Next[y][x+1] = Xspring_e;
2610 play[SAMPLE_slurp] = 1;
2611 score += lev.slurp_score;
2616 Cave[y][x+1] = XbumperB;
2617 Next[y][x] = Xspring_w;
2618 PLAY(SAMPLE_spring);
2622 Cave[y][x] = Xspring;
2623 Next[y][x] = Xspring;
2624 PLAY(SAMPLE_spring);
2628 /* --------------------------------------------------------------------- */
2631 switch (Cave[y+1][x])
2641 Cave[y][x] = Yspring_sB;
2642 if (Cave[y][x+1] == Xblank)
2643 Cave[y][x+1] = Yacid_splash_eB;
2644 if (Cave[y][x-1] == Xblank)
2645 Cave[y][x-1] = Yacid_splash_wB;
2646 Next[y][x] = Xblank;
2651 case Yacid_splash_eB:
2652 case Yacid_splash_wB:
2653 Cave[y][x] = Yspring_sB;
2654 Cave[y+1][x] = Yspring_s;
2655 Next[y][x] = Xblank;
2656 Next[y+1][x] = Xspring_fall;
2660 Cave[y+1][x] = XbumperB;
2663 switch (Cave[y][x-1])
2673 Cave[y][x] = Yspring_wB;
2674 if (Cave[y-1][x] == Xblank)
2675 Cave[y-1][x] = Yacid_splash_eB;
2676 if (Cave[y-1][x-2] == Xblank)
2677 Cave[y-1][x-2] = Yacid_splash_wB;
2678 Next[y][x] = Xblank;
2683 case Yacid_splash_eB:
2684 case Yacid_splash_wB:
2689 Cave[y][x] = Yspring_wB;
2690 Cave[y][x-1] = Yspring_w;
2691 Next[y][x] = Xblank;
2692 Next[y][x-1] = Xspring_w;
2701 Cave[y][x] = Yspring_kill_wB;
2702 Cave[y][x-1] = Yspring_kill_w;
2703 Next[y][x] = Xblank;
2704 Next[y][x-1] = Xspring_w;
2705 play[SAMPLE_slurp] = 1;
2706 score += lev.slurp_score;
2711 Cave[y][x-1] = XbumperB;
2712 Next[y][x] = Xspring_e;
2713 PLAY(SAMPLE_spring);
2717 Cave[y][x] = Xspring;
2718 Next[y][x] = Xspring;
2719 PLAY(SAMPLE_spring);
2723 /* --------------------------------------------------------------------- */
2726 switch (Cave[y+1][x])
2736 Cave[y][x] = Yspring_sB;
2737 if (Cave[y][x+1] == Xblank)
2738 Cave[y][x+1] = Yacid_splash_eB;
2739 if (Cave[y][x-1] == Xblank)
2740 Cave[y][x-1] = Yacid_splash_wB;
2741 Next[y][x] = Xblank;
2746 case Yacid_splash_eB:
2747 case Yacid_splash_wB:
2749 Cave[y][x] = Yspring_sB;
2750 Cave[y+1][x] = Yspring_s;
2751 Next[y][x] = Xblank;
2752 Next[y+1][x] = Xspring_fall;
2757 Cave[y+1][x] = Ybomb_eat;
2758 Next[y+1][x] = Znormal;
2759 Boom[y][x-1] = Xblank;
2760 Boom[y][x] = Xblank;
2761 Boom[y][x+1] = Xblank;
2762 Boom[y+1][x-1] = Xblank;
2763 Boom[y+1][x] = Xblank;
2764 Boom[y+1][x+1] = Xblank;
2765 Boom[y+2][x-1] = Xblank;
2766 Boom[y+2][x] = Xblank;
2767 Boom[y+2][x+1] = Xblank;
2778 Cave[y][x] = Yspring_sB;
2779 Cave[y+1][x] = Ybug_spring;
2780 Next[y+1][x] = Znormal;
2781 Boom[y][x-1] = Xemerald;
2782 Boom[y][x] = Xemerald;
2783 Boom[y][x+1] = Xemerald;
2784 Boom[y+1][x-1] = Xemerald;
2785 Boom[y+1][x] = Xdiamond;
2786 Boom[y+1][x+1] = Xemerald;
2787 Boom[y+2][x-1] = Xemerald;
2788 Boom[y+2][x] = Xemerald;
2789 Boom[y+2][x+1] = Xemerald;
2790 score += lev.bug_score;
2801 Cave[y][x] = Yspring_sB;
2802 Cave[y+1][x] = Ytank_spring;
2803 Next[y+1][x] = Znormal;
2804 Boom[y][x-1] = Xblank;
2805 Boom[y][x] = Xblank;
2806 Boom[y][x+1] = Xblank;
2807 Boom[y+1][x-1] = Xblank;
2808 Boom[y+1][x] = Xblank;
2809 Boom[y+1][x+1] = Xblank;
2810 Boom[y+2][x-1] = Xblank;
2811 Boom[y+2][x] = Xblank;
2812 Boom[y+2][x+1] = Xblank;
2813 score += lev.tank_score;
2820 Cave[y][x] = Yspring_sB;
2821 Cave[y+1][x] = Yeater_spring;
2822 Next[y+1][x] = Znormal;
2823 Boom[y][x-1] = lev.eater_array[lev.eater_pos][0];
2824 Boom[y][x] = lev.eater_array[lev.eater_pos][1];
2825 Boom[y][x+1] = lev.eater_array[lev.eater_pos][2];
2826 Boom[y+1][x-1] = lev.eater_array[lev.eater_pos][3];
2827 Boom[y+1][x] = lev.eater_array[lev.eater_pos][4];
2828 Boom[y+1][x+1] = lev.eater_array[lev.eater_pos][5];
2829 Boom[y+2][x-1] = lev.eater_array[lev.eater_pos][6];
2830 Boom[y+2][x] = lev.eater_array[lev.eater_pos][7];
2831 Boom[y+2][x+1] = lev.eater_array[lev.eater_pos][8];
2832 lev.eater_pos = (lev.eater_pos + 1) & 7;
2833 score += lev.eater_score;
2838 Cave[y][x] = Yspring_sB;
2839 Cave[y+1][x] = Yalien_spring;
2840 Next[y+1][x] = Znormal;
2841 Boom[y][x-1] = Xblank;
2842 Boom[y][x] = Xblank;
2843 Boom[y][x+1] = Xblank;
2844 Boom[y+1][x-1] = Xblank;
2845 Boom[y+1][x] = Xblank;
2846 Boom[y+1][x+1] = Xblank;
2847 Boom[y+2][x-1] = Xblank;
2848 Boom[y+2][x] = Xblank;
2849 Boom[y+2][x+1] = Xblank;
2850 score += lev.alien_score;
2854 Cave[y][x] = Xspring;
2855 Next[y][x] = Xspring;
2856 PLAY(SAMPLE_spring);
2860 /* --------------------------------------------------------------------- */
2863 if (Cave[y][x+1] == Xdiamond)
2865 Cave[y][x+1] = Ydiamond_eat;
2866 Next[y][x+1] = Xblank;
2867 play[SAMPLE_eater] = 1;
2871 if (Cave[y+1][x] == Xdiamond)
2873 Cave[y+1][x] = Ydiamond_eat;
2874 Next[y+1][x] = Xblank;
2875 play[SAMPLE_eater] = 1;
2879 if (Cave[y][x-1] == Xdiamond)
2881 Cave[y][x-1] = Ydiamond_eat;
2882 Next[y][x-1] = Xblank;
2883 play[SAMPLE_eater] = 1;
2887 if (Cave[y-1][x] == Xdiamond)
2889 Cave[y-1][x] = Ydiamond_eat;
2890 Next[y-1][x] = Xblank;
2891 play[SAMPLE_eater] = 1;
2895 switch (Cave[y-1][x])
2905 Cave[y][x] = Yeater_nB;
2906 if (Cave[y-2][x+1] == Xblank)
2907 Cave[y-2][x+1] = Yacid_splash_eB;
2908 if (Cave[y-2][x-1] == Xblank)
2909 Cave[y-2][x-1] = Yacid_splash_wB;
2910 Next[y][x] = Xblank;
2915 case Yacid_splash_eB:
2916 case Yacid_splash_wB:
2920 Cave[y][x] = Yeater_nB;
2921 Cave[y-1][x] = Yeater_n;
2922 Next[y][x] = Xblank;
2923 Next[y-1][x] = Xeater_n;
2927 Next[y][x] = RANDOM & 1 ? Xeater_e : Xeater_w;
2932 /* --------------------------------------------------------------------- */
2935 if (Cave[y+1][x] == Xdiamond)
2937 Cave[y+1][x] = Ydiamond_eat;
2938 Next[y+1][x] = Xblank;
2939 play[SAMPLE_eater] = 1;
2943 if (Cave[y][x-1] == Xdiamond)
2945 Cave[y][x-1] = Ydiamond_eat;
2946 Next[y][x-1] = Xblank;
2947 play[SAMPLE_eater] = 1;
2951 if (Cave[y-1][x] == Xdiamond)
2953 Cave[y-1][x] = Ydiamond_eat;
2954 Next[y-1][x] = Xblank;
2955 play[SAMPLE_eater] = 1;
2959 if (Cave[y][x+1] == Xdiamond)
2961 Cave[y][x+1] = Ydiamond_eat;
2962 Next[y][x+1] = Xblank;
2963 play[SAMPLE_eater] = 1;
2967 switch (Cave[y][x+1])
2977 Cave[y][x] = Yeater_eB;
2978 if (Cave[y-1][x+2] == Xblank)
2979 Cave[y-1][x+2] = Yacid_splash_eB;
2980 if (Cave[y-1][x] == Xblank)
2981 Cave[y-1][x] = Yacid_splash_wB;
2982 Next[y][x] = Xblank;
2987 case Yacid_splash_eB:
2988 case Yacid_splash_wB:
2992 Cave[y][x] = Yeater_eB;
2993 Cave[y][x+1] = Yeater_e;
2994 Next[y][x] = Xblank;
2995 Next[y][x+1] = Xeater_e;
2999 Next[y][x] = RANDOM & 1 ? Xeater_n : Xeater_s;
3004 /* --------------------------------------------------------------------- */
3007 if (Cave[y][x-1] == Xdiamond)
3009 Cave[y][x-1] = Ydiamond_eat;
3010 Next[y][x-1] = Xblank;
3011 play[SAMPLE_eater] = 1;
3015 if (Cave[y-1][x] == Xdiamond)
3017 Cave[y-1][x] = Ydiamond_eat;
3018 Next[y-1][x] = Xblank;
3019 play[SAMPLE_eater] = 1;
3023 if (Cave[y][x+1] == Xdiamond)
3025 Cave[y][x+1] = Ydiamond_eat;
3026 Next[y][x+1] = Xblank;
3027 play[SAMPLE_eater] = 1;
3031 if (Cave[y+1][x] == Xdiamond)
3033 Cave[y+1][x] = Ydiamond_eat;
3034 Next[y+1][x] = Xblank;
3035 play[SAMPLE_eater] = 1;
3039 switch (Cave[y+1][x])
3049 Cave[y][x] = Yeater_sB;
3050 if (Cave[y][x+1] == Xblank)
3051 Cave[y][x+1] = Yacid_splash_eB;
3052 if (Cave[y][x-1] == Xblank)
3053 Cave[y][x-1] = Yacid_splash_wB;
3054 Next[y][x] = Xblank;
3059 case Yacid_splash_eB:
3060 case Yacid_splash_wB:
3064 Cave[y][x] = Yeater_sB;
3065 Cave[y+1][x] = Yeater_s;
3066 Next[y][x] = Xblank;
3067 Next[y+1][x] = Xeater_s;
3071 Next[y][x] = RANDOM & 1 ? Xeater_e : Xeater_w;
3076 /* --------------------------------------------------------------------- */
3079 if (Cave[y-1][x] == Xdiamond)
3081 Cave[y-1][x] = Ydiamond_eat;
3082 Next[y-1][x] = Xblank;
3083 play[SAMPLE_eater] = 1;
3087 if (Cave[y][x+1] == Xdiamond)
3089 Cave[y][x+1] = Ydiamond_eat;
3090 Next[y][x+1] = Xblank;
3091 play[SAMPLE_eater] = 1;
3095 if (Cave[y+1][x] == Xdiamond)
3097 Cave[y+1][x] = Ydiamond_eat;
3098 Next[y+1][x] = Xblank;
3099 play[SAMPLE_eater] = 1;
3103 if (Cave[y][x-1] == Xdiamond)
3105 Cave[y][x-1] = Ydiamond_eat;
3106 Next[y][x-1] = Xblank;
3107 play[SAMPLE_eater] = 1;
3111 switch (Cave[y][x-1])
3121 Cave[y][x] = Yeater_wB;
3122 if (Cave[y-1][x] == Xblank)
3123 Cave[y-1][x] = Yacid_splash_eB;
3124 if (Cave[y-1][x-2] == Xblank)
3125 Cave[y-1][x-2] = Yacid_splash_wB;
3126 Next[y][x] = Xblank;
3131 case Yacid_splash_eB:
3132 case Yacid_splash_wB:
3136 Cave[y][x] = Yeater_wB;
3137 Cave[y][x-1] = Yeater_w;
3138 Next[y][x] = Xblank;
3139 Next[y][x-1] = Xeater_w;
3143 Next[y][x] = RANDOM & 1 ? Xeater_n : Xeater_s;
3148 /* --------------------------------------------------------------------- */
3156 else if (ply1.alive && ply2.alive)
3158 if ((ply1.x > x ? ply1.x - x : x - ply1.x) +
3159 (ply1.y > y ? ply1.y - y : y - ply1.y) <
3160 (ply2.x > x ? ply2.x - x : x - ply2.x) +
3161 (ply2.y > y ? ply2.y - y : y - ply2.y))
3172 else if (ply1.alive)
3177 else if (ply2.alive)
3192 switch (Cave[y-1][x])
3202 Cave[y][x] = Yalien_nB;
3203 if (Cave[y-2][x+1] == Xblank)
3204 Cave[y-2][x+1] = Yacid_splash_eB;
3205 if (Cave[y-2][x-1] == Xblank)
3206 Cave[y-2][x-1] = Yacid_splash_wB;
3207 Next[y][x] = Xblank;
3212 case Yacid_splash_eB:
3213 case Yacid_splash_wB:
3217 Cave[y][x] = Yalien_nB;
3218 Cave[y-1][x] = Yalien_n;
3219 Next[y][x] = Xblank;
3220 Next[y-1][x] = Xalien_pause;
3227 switch (Cave[y+1][x])
3237 Cave[y][x] = Yalien_sB;
3238 Next[y][x] = Xblank;
3239 if (Cave[y][x+1] == Xblank)
3240 Cave[y][x+1] = Yacid_splash_eB;
3241 if (Cave[y][x-1] == Xblank)
3242 Cave[y][x-1] = Yacid_splash_wB;
3247 case Yacid_splash_eB:
3248 case Yacid_splash_wB:
3252 Cave[y][x] = Yalien_sB;
3253 Cave[y+1][x] = Yalien_s;
3254 Next[y][x] = Xblank;
3255 Next[y+1][x] = Xalien_pause;
3265 switch (Cave[y][x+1])
3275 Cave[y][x] = Yalien_eB;
3276 if (Cave[y-1][x+2] == Xblank)
3277 Cave[y-1][x+2] = Yacid_splash_eB;
3278 if (Cave[y-1][x] == Xblank)
3279 Cave[y-1][x] = Yacid_splash_wB;
3280 Next[y][x] = Xblank;
3285 case Yacid_splash_eB:
3286 case Yacid_splash_wB:
3290 Cave[y][x] = Yalien_eB;
3291 Cave[y][x+1] = Yalien_e;
3292 Next[y][x] = Xblank;
3293 Next[y][x+1] = Xalien_pause;
3300 switch (Cave[y][x-1])
3310 Cave[y][x] = Yalien_wB;
3311 if (Cave[y-1][x] == Xblank)
3312 Cave[y-1][x] = Yacid_splash_eB;
3313 if (Cave[y-1][x-2] == Xblank)
3314 Cave[y-1][x-2] = Yacid_splash_wB;
3315 Next[y][x] = Xblank;
3320 case Yacid_splash_eB:
3321 case Yacid_splash_wB:
3325 Cave[y][x] = Yalien_wB;
3326 Cave[y][x-1] = Yalien_w;
3327 Next[y][x] = Xblank;
3328 Next[y][x-1] = Xalien_pause;
3338 Next[y][x] = Xalien;
3341 /* --------------------------------------------------------------------- */
3344 switch (Cave[y+1][x])
3354 Cave[y][x] = Yemerald_sB;
3355 if (Cave[y][x+1] == Xblank)
3356 Cave[y][x+1] = Yacid_splash_eB;
3357 if (Cave[y][x-1] == Xblank)
3358 Cave[y][x-1] = Yacid_splash_wB;
3359 Next[y][x] = Xblank;
3364 case Yacid_splash_eB:
3365 case Yacid_splash_wB:
3366 Cave[y][x] = Yemerald_sB;
3367 Cave[y+1][x] = Yemerald_s;
3368 Next[y][x] = Xblank;
3369 Next[y+1][x] = Xemerald_fall;
3388 case Xemerald_pause:
3390 case Xdiamond_pause:
3427 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
3429 Cave[y][x] = Yemerald_eB;
3430 Cave[y][x+1] = Yemerald_e;
3431 Next[y][x] = Xblank;
3432 Next[y][x+1] = Xemerald_pause;
3436 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
3438 Cave[y][x] = Yemerald_wB;
3439 Cave[y][x-1] = Yemerald_w;
3440 Next[y][x] = Xblank;
3441 Next[y][x-1] = Xemerald_pause;
3447 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
3449 Cave[y][x] = Yemerald_wB;
3450 Cave[y][x-1] = Yemerald_w;
3451 Next[y][x] = Xblank;
3452 Next[y][x-1] = Xemerald_pause;
3456 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
3458 Cave[y][x] = Yemerald_eB;
3459 Cave[y][x+1] = Yemerald_e;
3460 Next[y][x] = Xblank;
3461 Next[y][x+1] = Xemerald_pause;
3467 if (++lev.shine_cnt > 50)
3469 lev.shine_cnt = RANDOM & 7;
3470 Cave[y][x] = Xemerald_shine;
3476 /* --------------------------------------------------------------------- */
3478 case Xemerald_pause:
3479 switch (Cave[y+1][x])
3489 Cave[y][x] = Yemerald_sB;
3490 if (Cave[y][x+1] == Xblank)
3491 Cave[y][x+1] = Yacid_splash_eB;
3492 if (Cave[y][x-1] == Xblank)
3493 Cave[y][x-1] = Yacid_splash_wB;
3494 Next[y][x] = Xblank;
3499 case Yacid_splash_eB:
3500 case Yacid_splash_wB:
3501 Cave[y][x] = Yemerald_sB;
3502 Cave[y+1][x] = Yemerald_s;
3503 Next[y][x] = Xblank;
3504 Next[y+1][x] = Xemerald_fall;
3508 Cave[y][x] = Xemerald;
3509 Next[y][x] = Xemerald;
3513 /* --------------------------------------------------------------------- */
3516 switch (Cave[y+1][x])
3526 Cave[y][x] = Yemerald_sB;
3527 if (Cave[y][x+1] == Xblank)
3528 Cave[y][x+1] = Yacid_splash_eB;
3529 if (Cave[y][x-1] == Xblank)
3530 Cave[y][x-1] = Yacid_splash_wB;
3531 Next[y][x] = Xblank;
3536 case Yacid_splash_eB:
3537 case Yacid_splash_wB:
3539 Cave[y][x] = Yemerald_sB;
3540 Cave[y+1][x] = Yemerald_s;
3541 Next[y][x] = Xblank;
3542 Next[y+1][x] = Xemerald_fall;
3546 if (lev.wonderwall_time)
3548 lev.wonderwall_state = 1;
3549 Cave[y][x] = Yemerald_sB;
3550 if (tab_blank[Cave[y+2][x]])
3552 Cave[y+2][x] = Ydiamond_s;
3553 Next[y+2][x] = Xdiamond_fall;
3556 Next[y][x] = Xblank;
3557 play[SAMPLE_squash] = 1;
3562 Cave[y][x] = Xemerald;
3563 Next[y][x] = Xemerald;
3564 PLAY(SAMPLE_diamond);
3568 /* --------------------------------------------------------------------- */
3571 switch (Cave[y+1][x])
3581 Cave[y][x] = Ydiamond_sB;
3582 if (Cave[y][x+1] == Xblank)
3583 Cave[y][x+1] = Yacid_splash_eB;
3584 if (Cave[y][x-1] == Xblank)
3585 Cave[y][x-1] = Yacid_splash_wB;
3586 Next[y][x] = Xblank;
3591 case Yacid_splash_eB:
3592 case Yacid_splash_wB:
3593 Cave[y][x] = Ydiamond_sB;
3594 Cave[y+1][x] = Ydiamond_s;
3595 Next[y][x] = Xblank;
3596 Next[y+1][x] = Xdiamond_fall;
3615 case Xemerald_pause:
3617 case Xdiamond_pause:
3654 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
3656 Cave[y][x] = Ydiamond_eB;
3657 Cave[y][x+1] = Ydiamond_e;
3658 Next[y][x] = Xblank;
3659 Next[y][x+1] = Xdiamond_pause;
3663 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
3665 Cave[y][x] = Ydiamond_wB;
3666 Cave[y][x-1] = Ydiamond_w;
3667 Next[y][x] = Xblank;
3668 Next[y][x-1] = Xdiamond_pause;
3674 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
3676 Cave[y][x] = Ydiamond_wB;
3677 Cave[y][x-1] = Ydiamond_w;
3678 Next[y][x] = Xblank;
3679 Next[y][x-1] = Xdiamond_pause;
3683 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
3685 Cave[y][x] = Ydiamond_eB;
3686 Cave[y][x+1] = Ydiamond_e;
3687 Next[y][x] = Xblank;
3688 Next[y][x+1] = Xdiamond_pause;
3694 if (++lev.shine_cnt > 50)
3696 lev.shine_cnt = RANDOM & 7;
3697 Cave[y][x] = Xdiamond_shine;
3703 /* --------------------------------------------------------------------- */
3705 case Xdiamond_pause:
3706 switch (Cave[y+1][x])
3716 Cave[y][x] = Ydiamond_sB;
3717 if (Cave[y][x+1] == Xblank)
3718 Cave[y][x+1] = Yacid_splash_eB;
3719 if (Cave[y][x-1] == Xblank)
3720 Cave[y][x-1] = Yacid_splash_wB;
3721 Next[y][x] = Xblank;
3726 case Yacid_splash_eB:
3727 case Yacid_splash_wB:
3728 Cave[y][x] = Ydiamond_sB;
3729 Cave[y+1][x] = Ydiamond_s;
3730 Next[y][x] = Xblank;
3731 Next[y+1][x] = Xdiamond_fall;
3735 Cave[y][x] = Xdiamond;
3736 Next[y][x] = Xdiamond;
3740 /* --------------------------------------------------------------------- */
3743 switch (Cave[y+1][x])
3753 Cave[y][x] = Ydiamond_sB;
3754 if (Cave[y][x+1] == Xblank)
3755 Cave[y][x+1] = Yacid_splash_eB;
3756 if (Cave[y][x-1] == Xblank)
3757 Cave[y][x-1] = Yacid_splash_wB;
3758 Next[y][x] = Xblank;
3763 case Yacid_splash_eB:
3764 case Yacid_splash_wB:
3766 Cave[y][x] = Ydiamond_sB;
3767 Cave[y+1][x] = Ydiamond_s;
3768 Next[y][x] = Xblank;
3769 Next[y+1][x] = Xdiamond_fall;
3773 if (lev.wonderwall_time)
3775 lev.wonderwall_state = 1;
3776 Cave[y][x] = Ydiamond_sB;
3777 if (tab_blank[Cave[y+2][x]])
3779 Cave[y+2][x] = Ystone_s;
3780 Next[y+2][x] = Xstone_fall;
3783 Next[y][x] = Xblank;
3784 play[SAMPLE_squash] = 1;
3789 Cave[y][x] = Xdiamond;
3790 Next[y][x] = Xdiamond;
3791 PLAY(SAMPLE_diamond);
3795 /* --------------------------------------------------------------------- */
3798 switch (Cave[y+1][x])
3808 Cave[y][x] = Ydrip_s1B;
3809 if (Cave[y][x+1] == Xblank)
3810 Cave[y][x+1] = Yacid_splash_eB;
3811 if (Cave[y][x-1] == Xblank)
3812 Cave[y][x-1] = Yacid_splash_wB;
3813 Next[y][x] = Xdrip_stretchB;
3818 case Yacid_splash_eB:
3819 case Yacid_splash_wB:
3823 Cave[y][x] = Ydrip_s1B;
3824 Cave[y+1][x] = Ydrip_s1;
3825 Next[y][x] = Xdrip_stretchB;
3826 Next[y+1][x] = Xdrip_stretch;
3867 play[SAMPLE_drip] = 1;
3871 /* --------------------------------------------------------------------- */
3874 Cave[y][x] = Ydrip_s2;
3875 Next[y][x] = Xdrip_fall;
3878 case Xdrip_stretchB:
3879 Cave[y][x] = Ydrip_s2B;
3880 Next[y][x] = Xblank;
3884 Next[y][x] = Xdrip_fall;
3887 /* --------------------------------------------------------------------- */
3890 switch (Cave[y+1][x])
3900 Cave[y][x] = Ybomb_sB;
3901 if (Cave[y][x+1] == Xblank)
3902 Cave[y][x+1] = Yacid_splash_eB;
3903 if (Cave[y][x-1] == Xblank)
3904 Cave[y][x-1] = Yacid_splash_wB;
3905 Next[y][x] = Xblank;
3910 case Yacid_splash_eB:
3911 case Yacid_splash_wB:
3912 Cave[y][x] = Ybomb_sB;
3913 Cave[y+1][x] = Ybomb_s;
3914 Next[y][x] = Xblank;
3915 Next[y+1][x] = Xbomb_fall;
3934 case Xemerald_pause:
3936 case Xdiamond_pause:
3964 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
3966 Cave[y][x] = Ybomb_eB;
3967 Cave[y][x+1] = Ybomb_e;
3968 Next[y][x] = Xblank;
3969 Next[y][x+1] = Xbomb_pause;
3973 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
3975 Cave[y][x] = Ybomb_wB;
3976 Cave[y][x-1] = Ybomb_w;
3977 Next[y][x] = Xblank;
3978 Next[y][x-1] = Xbomb_pause;
3984 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
3986 Cave[y][x] = Ybomb_wB;
3987 Cave[y][x-1] = Ybomb_w;
3988 Next[y][x] = Xblank;
3989 Next[y][x-1] = Xbomb_pause;
3993 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
3995 Cave[y][x] = Ybomb_eB;
3996 Cave[y][x+1] = Ybomb_e;
3997 Next[y][x] = Xblank;
3998 Next[y][x+1] = Xbomb_pause;
4007 /* --------------------------------------------------------------------- */
4010 switch (Cave[y+1][x])
4020 Cave[y][x] = Ybomb_sB;
4021 if (Cave[y][x+1] == Xblank)
4022 Cave[y][x+1] = Yacid_splash_eB;
4023 if (Cave[y][x-1] == Xblank)
4024 Cave[y][x-1] = Yacid_splash_wB;
4025 Next[y][x] = Xblank;
4030 case Yacid_splash_eB:
4031 case Yacid_splash_wB:
4032 Cave[y][x] = Ybomb_sB;
4033 Cave[y+1][x] = Ybomb_s;
4034 Next[y][x] = Xblank;
4035 Next[y+1][x] = Xbomb_fall;
4044 /* --------------------------------------------------------------------- */
4047 switch (Cave[y+1][x])
4057 Cave[y][x] = Ybomb_sB;
4058 if (Cave[y][x+1] == Xblank)
4059 Cave[y][x+1] = Yacid_splash_eB;
4060 if (Cave[y][x-1] == Xblank)
4061 Cave[y][x-1] = Yacid_splash_wB;
4062 Next[y][x] = Xblank;
4067 case Yacid_splash_eB:
4068 case Yacid_splash_wB:
4069 Cave[y][x] = Ybomb_sB;
4070 Cave[y+1][x] = Ybomb_s;
4071 Next[y][x] = Xblank;
4072 Next[y+1][x] = Xbomb_fall;
4076 Cave[y][x] = Ybomb_eat;
4077 Next[y][x] = Znormal;
4078 Boom[y-1][x-1] = Xblank;
4079 Boom[y-1][x] = Xblank;
4080 Boom[y-1][x+1] = Xblank;
4081 Boom[y][x-1] = Xblank;
4082 Boom[y][x] = Xblank;
4083 Boom[y][x+1] = Xblank;
4084 Boom[y+1][x-1] = Xblank;
4085 Boom[y+1][x] = Xblank;
4086 Boom[y+1][x+1] = Xblank;
4090 /* --------------------------------------------------------------------- */
4093 if (lev.wind_cnt == 0)
4096 switch (lev.wind_direction)
4099 switch (Cave[y-1][x])
4109 Cave[y][x] = Yballoon_nB;
4110 if (Cave[y-2][x+1] == Xblank)
4111 Cave[y-2][x+1] = Yacid_splash_eB;
4112 if (Cave[y-2][x-1] == Xblank)
4113 Cave[y-2][x-1] = Yacid_splash_wB;
4114 Next[y][x] = Xblank;
4119 case Yacid_splash_eB:
4120 case Yacid_splash_wB:
4121 Cave[y][x] = Yballoon_nB;
4122 Cave[y-1][x] = Yballoon_n;
4123 Next[y][x] = Xblank;
4124 Next[y-1][x] = Xballoon;
4132 switch (Cave[y][x+1])
4142 Cave[y][x] = Yballoon_eB;
4143 if (Cave[y-1][x+2] == Xblank)
4144 Cave[y-1][x+2] = Yacid_splash_eB;
4145 if (Cave[y-1][x] == Xblank)
4146 Cave[y-1][x] = Yacid_splash_wB;
4147 Next[y][x] = Xblank;
4152 case Yacid_splash_eB:
4153 case Yacid_splash_wB:
4154 Cave[y][x] = Yballoon_eB;
4155 Cave[y][x+1] = Yballoon_e;
4156 Next[y][x] = Xblank;
4157 Next[y][x+1] = Xballoon;
4165 switch (Cave[y+1][x])
4175 Cave[y][x] = Yballoon_sB;
4176 if (Cave[y][x+1] == Xblank)
4177 Cave[y][x+1] = Yacid_splash_eB;
4178 if (Cave[y][x-1] == Xblank)
4179 Cave[y][x-1] = Yacid_splash_wB;
4180 Next[y][x] = Xblank;
4185 case Yacid_splash_eB:
4186 case Yacid_splash_wB:
4187 Cave[y][x] = Yballoon_sB;
4188 Cave[y+1][x] = Yballoon_s;
4189 Next[y][x] = Xblank;
4190 Next[y+1][x] = Xballoon;
4198 switch (Cave[y][x-1])
4208 Cave[y][x] = Yballoon_wB;
4209 if (Cave[y-1][x] == Xblank)
4210 Cave[y-1][x] = Yacid_splash_eB;
4211 if (Cave[y-1][x-2] == Xblank)
4212 Cave[y-1][x-2] = Yacid_splash_wB;
4213 Next[y][x] = Xblank;
4218 case Yacid_splash_eB:
4219 case Yacid_splash_wB:
4220 Cave[y][x] = Yballoon_wB;
4221 Cave[y][x-1] = Yballoon_w;
4222 Next[y][x] = Xblank;
4223 Next[y][x-1] = Xballoon;
4231 /* --------------------------------------------------------------------- */
4234 Next[y][x] = Xacid_2;
4238 Next[y][x] = Xacid_3;
4242 Next[y][x] = Xacid_4;
4246 Next[y][x] = Xacid_5;
4250 Next[y][x] = Xacid_6;
4254 Next[y][x] = Xacid_7;
4258 Next[y][x] = Xacid_8;
4262 Next[y][x] = Xacid_1;
4265 /* --------------------------------------------------------------------- */
4268 if (lev.ball_state == 0)
4271 Cave[y][x] = Xball_1B;
4272 Next[y][x] = Xball_2;
4279 if (lev.ball_state == 0)
4282 Cave[y][x] = Xball_2B;
4283 Next[y][x] = Xball_1;
4291 play[SAMPLE_ball] = 1;
4292 if (lev.ball_random)
4297 if (lev.ball_array[lev.ball_pos][0] != Xblank &&
4298 tab_blank[Cave[y-1][x-1]])
4300 Cave[y-1][x-1] = Yball_eat;
4301 Next[y-1][x-1] = lev.ball_array[lev.ball_pos][0];
4306 if (lev.ball_array[lev.ball_pos][1] != Xblank &&
4307 tab_blank[Cave[y-1][x]])
4309 Cave[y-1][x] = Yball_eat;
4310 Next[y-1][x] = lev.ball_array[lev.ball_pos][1];
4315 if (lev.ball_array[lev.ball_pos][2] != Xblank &&
4316 tab_blank[Cave[y-1][x+1]])
4318 Cave[y-1][x+1] = Yball_eat;
4319 Next[y-1][x+1] = lev.ball_array[lev.ball_pos][2];
4324 if (lev.ball_array[lev.ball_pos][3] != Xblank &&
4325 tab_blank[Cave[y][x-1]])
4327 Cave[y][x-1] = Yball_eat;
4328 Next[y][x-1] = lev.ball_array[lev.ball_pos][3];
4333 if (lev.ball_array[lev.ball_pos][4] != Xblank &&
4334 tab_blank[Cave[y][x+1]])
4336 Cave[y][x+1] = Yball_eat;
4337 Next[y][x+1] = lev.ball_array[lev.ball_pos][4];
4342 if (lev.ball_array[lev.ball_pos][5] != Xblank &&
4343 tab_blank[Cave[y+1][x-1]])
4345 Cave[y+1][x-1] = Yball_eat;
4346 Next[y+1][x-1] = lev.ball_array[lev.ball_pos][5];
4351 if (lev.ball_array[lev.ball_pos][6] != Xblank &&
4352 tab_blank[Cave[y+1][x]])
4354 Cave[y+1][x] = Yball_eat;
4355 Next[y+1][x] = lev.ball_array[lev.ball_pos][6];
4360 if (lev.ball_array[lev.ball_pos][7] != Xblank &&
4361 tab_blank[Cave[y+1][x+1]])
4363 Cave[y+1][x+1] = Yball_eat;
4364 Next[y+1][x+1] = lev.ball_array[lev.ball_pos][7];
4371 if (lev.ball_array[lev.ball_pos][0] != Xblank &&
4372 tab_blank[Cave[y-1][x-1]])
4374 Cave[y-1][x-1] = Yball_eat;
4375 Next[y-1][x-1] = lev.ball_array[lev.ball_pos][0];
4378 if (lev.ball_array[lev.ball_pos][1] != Xblank &&
4379 tab_blank[Cave[y-1][x]])
4381 Cave[y-1][x] = Yball_eat;
4382 Next[y-1][x] = lev.ball_array[lev.ball_pos][1];
4385 if (lev.ball_array[lev.ball_pos][2] != Xblank &&
4386 tab_blank[Cave[y-1][x+1]])
4388 Cave[y-1][x+1] = Yball_eat;
4389 Next[y-1][x+1] = lev.ball_array[lev.ball_pos][2];
4392 if (lev.ball_array[lev.ball_pos][3] != Xblank &&
4393 tab_blank[Cave[y][x-1]])
4395 Cave[y][x-1] = Yball_eat;
4396 Next[y][x-1] = lev.ball_array[lev.ball_pos][3];
4399 if (lev.ball_array[lev.ball_pos][4] != Xblank &&
4400 tab_blank[Cave[y][x+1]])
4402 Cave[y][x+1] = Yball_eat;
4403 Next[y][x+1] = lev.ball_array[lev.ball_pos][4];
4406 if (lev.ball_array[lev.ball_pos][5] != Xblank &&
4407 tab_blank[Cave[y+1][x-1]])
4409 Cave[y+1][x-1] = Yball_eat;
4410 Next[y+1][x-1] = lev.ball_array[lev.ball_pos][5];
4413 if (lev.ball_array[lev.ball_pos][6] != Xblank &&
4414 tab_blank[Cave[y+1][x]])
4416 Cave[y+1][x] = Yball_eat;
4417 Next[y+1][x] = lev.ball_array[lev.ball_pos][6];
4420 if (lev.ball_array[lev.ball_pos][7] != Xblank &&
4421 tab_blank[Cave[y+1][x+1]])
4423 Cave[y+1][x+1] = Yball_eat;
4424 Next[y+1][x+1] = lev.ball_array[lev.ball_pos][7];
4428 lev.ball_pos = (lev.ball_pos + 1) & 7;
4431 /* --------------------------------------------------------------------- */
4434 if (tab_blank[Cave[y-1][x]])
4436 Cave[y-1][x] = Ygrow_ns_eat;
4437 Next[y-1][x] = Xgrow_ns;
4438 play[SAMPLE_grow] = 1;
4441 if (tab_blank[Cave[y+1][x]])
4443 Cave[y+1][x] = Ygrow_ns_eat;
4444 Next[y+1][x] = Xgrow_ns;
4445 play[SAMPLE_grow] = 1;
4451 if (tab_blank[Cave[y][x+1]])
4453 Cave[y][x+1] = Ygrow_ew_eat;
4454 Next[y][x+1] = Xgrow_ew;
4455 play[SAMPLE_grow] = 1;
4458 if (tab_blank[Cave[y][x-1]])
4460 Cave[y][x-1] = Ygrow_ew_eat;
4461 Next[y][x-1] = Xgrow_ew;
4462 play[SAMPLE_grow] = 1;
4467 /* --------------------------------------------------------------------- */
4470 if (lev.wonderwall_time && lev.wonderwall_state)
4472 Cave[y][x] = XwonderwallB;
4473 play[SAMPLE_wonder] = 1;
4478 /* --------------------------------------------------------------------- */
4481 if (lev.required > 0)
4487 Cave[y][x] = Xexit_1;
4488 Next[y][x] = Xexit_2;
4492 Cave[y][x] = Xexit_2;
4493 Next[y][x] = Xexit_3;
4497 Cave[y][x] = Xexit_3;
4498 Next[y][x] = Xexit_1;
4504 Next[y][x] = Xexit_2;
4508 Next[y][x] = Xexit_3;
4512 Next[y][x] = Xexit_1;
4515 /* --------------------------------------------------------------------- */
4518 play[SAMPLE_tick] = 1;
4519 Next[y][x] = Xdynamite_2;
4523 play[SAMPLE_tick] = 1;
4524 Next[y][x] = Xdynamite_3;
4528 play[SAMPLE_tick] = 1;
4529 Next[y][x] = Xdynamite_4;
4533 play[SAMPLE_tick] = 1;
4534 Next[y][x] = Zdynamite;
4535 Boom[y-1][x-1] = Xblank;
4536 Boom[y-1][x] = Xblank;
4537 Boom[y-1][x+1] = Xblank;
4538 Boom[y][x-1] = Xblank;
4539 Boom[y][x] = Xblank;
4540 Boom[y][x+1] = Xblank;
4541 Boom[y+1][x-1] = Xblank;
4542 Boom[y+1][x] = Xblank;
4543 Boom[y+1][x+1] = Xblank;
4546 /* --------------------------------------------------------------------- */
4549 if (lev.wheel_cnt && x == lev.wheel_x && y == lev.wheel_y)
4550 Cave[y][x] = XwheelB;
4553 /* --------------------------------------------------------------------- */
4557 Cave[y][x] = XswitchB;
4560 /* --------------------------------------------------------------------- */
4563 switch (Cave[y+1][x])
4573 Cave[y][x] = Xsand_stonesand_3;
4574 if (Cave[y][x+1] == Xblank)
4575 Cave[y][x+1] = Yacid_splash_eB;
4576 if (Cave[y][x-1] == Xblank)
4577 Cave[y][x-1] = Yacid_splash_wB;
4578 Next[y][x] = Xsand_stonesand_4;
4583 case Yacid_splash_eB:
4584 case Yacid_splash_wB:
4585 Cave[y][x] = Xsand_stonesand_3;
4586 Cave[y+1][x] = Xsand_stoneout_1;
4587 Next[y][x] = Xsand_stonesand_4;
4588 Next[y+1][x] = Xsand_stoneout_2;
4592 Cave[y][x] = Xsand_stonesand_1;
4593 Cave[y+1][x] = Xsand_sandstone_1;
4594 Next[y][x] = Xsand_stonesand_2;
4595 Next[y+1][x] = Xsand_sandstone_2;
4602 case Xsand_stonein_1:
4603 Next[y][x] = Xsand_stonein_2;
4606 case Xsand_stonein_2:
4607 Next[y][x] = Xsand_stonein_3;
4610 case Xsand_stonein_3:
4611 Next[y][x] = Xsand_stonein_4;
4614 case Xsand_stonein_4:
4615 Next[y][x] = Xblank;
4618 case Xsand_stonesand_1:
4619 Next[y][x] = Xsand_stonesand_2;
4622 case Xsand_stonesand_2:
4623 Next[y][x] = Xsand_stonesand_3;
4626 case Xsand_stonesand_3:
4627 Next[y][x] = Xsand_stonesand_4;
4630 case Xsand_stonesand_4:
4634 case Xsand_stoneout_1:
4635 Next[y][x] = Xsand_stoneout_2;
4638 case Xsand_stoneout_2:
4639 Next[y][x] = Xstone_fall;
4642 case Xsand_sandstone_1:
4643 Next[y][x] = Xsand_sandstone_2;
4646 case Xsand_sandstone_2:
4647 Next[y][x] = Xsand_sandstone_3;
4650 case Xsand_sandstone_3:
4651 Next[y][x] = Xsand_sandstone_4;
4654 case Xsand_sandstone_4:
4655 Next[y][x] = Xsand_stone;
4658 /* --------------------------------------------------------------------- */
4662 Cave[y][x] = XdripperB;
4665 /* --------------------------------------------------------------------- */
4669 Cave[y][x] = Xfake_blankB;
4672 /* --------------------------------------------------------------------- */
4675 if (lev.magnify_cnt)
4676 Cave[y][x] = Xfake_grassB;
4679 /* --------------------------------------------------------------------- */
4682 if (lev.magnify_cnt)
4683 Cave[y][x] = Xdoor_1;
4687 if (lev.magnify_cnt)
4688 Cave[y][x] = Xdoor_2;
4692 if (lev.magnify_cnt)
4693 Cave[y][x] = Xdoor_3;
4697 if (lev.magnify_cnt)
4698 Cave[y][x] = Xdoor_4;
4702 if (lev.magnify_cnt)
4703 Cave[y][x] = Xdoor_5;
4707 if (lev.magnify_cnt)
4708 Cave[y][x] = Xdoor_6;
4712 if (lev.magnify_cnt)
4713 Cave[y][x] = Xdoor_7;
4717 if (lev.magnify_cnt)
4718 Cave[y][x] = Xdoor_8;
4721 /* --------------------------------------------------------------------- */
4725 Next[y][x] = Znormal;
4726 Boom[y-1][x-1] = Xemerald;
4727 Boom[y-1][x] = Xemerald;
4728 Boom[y-1][x+1] = Xemerald;
4729 Boom[y][x-1] = Xemerald;
4730 Boom[y][x] = Xdiamond;
4731 Boom[y][x+1] = Xemerald;
4732 Boom[y+1][x-1] = Xemerald;
4733 Boom[y+1][x] = Xemerald;
4734 Boom[y+1][x+1] = Xemerald;
4741 Next[y][x] = Znormal;
4742 Boom[y-1][x-1] = Xblank;
4743 Boom[y-1][x] = Xblank;
4744 Boom[y-1][x+1] = Xblank;
4745 Boom[y][x-1] = Xblank;
4746 Boom[y][x] = Xblank;
4747 Boom[y][x+1] = Xblank;
4748 Boom[y+1][x-1] = Xblank;
4749 Boom[y+1][x] = Xblank;
4750 Boom[y+1][x+1] = Xblank;
4755 Next[y][x] = Xboom_2;
4756 play[SAMPLE_boom] = 1;
4760 Next[y][x] = Boom[y][x];
4763 /* --------------------------------------------------------------------- */
4766 if (++y < HEIGHT - 1)
4769 cave_cache = Cave[y];
4782 if (ply1.alive || ply2.alive)
4783 lev.score += score; /* only get a score if someone is alive */
4790 /* triple buffering */