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 #if defined(TARGET_X11)
19 #define RANDOM (random = random << 31 | random >> 1)
20 #define PLAY(sample) { if ((unsigned int)(y - top) <= 12 && (unsigned int)(x - left) <= 20) play[sample] = 1; }
22 extern unsigned int screen_x;
23 extern unsigned int screen_y;
27 register unsigned int x = 0;
28 register unsigned int y = 1;
29 register unsigned long random = Random;
30 register unsigned short *cave_cache = Cave[y]; /* might be a win */
31 unsigned long score = 0;
33 unsigned int temp = 0; /* initialized to make compilers happy */
34 unsigned int left = screen_x / TILEX; /* only needed for sounds */
35 unsigned int top = screen_y / TILEY;
36 unsigned int dx; /* only needed to find closest player */
41 switch (cave_cache[++x])
46 /* --------------------------------------------------------------------- */
65 Cave[y][x] = Ystone_eB;
66 Cave[y][x+1] = Ystone_e;
68 Next[y][x+1] = Xstone_pause;
88 Cave[y][x] = Ystone_wB;
89 Cave[y][x-1] = Ystone_w;
91 Next[y][x-1] = Xstone_pause;
111 Cave[y][x] = Ynut_eB;
112 Cave[y][x+1] = Ynut_e;
114 Next[y][x+1] = Xnut_pause;
119 switch (Cave[y][x-1])
134 Cave[y][x] = Ynut_wB;
135 Cave[y][x-1] = Ynut_w;
137 Next[y][x-1] = Xnut_pause;
141 case Xspring_force_e:
142 switch (Cave[y][x+1])
152 Cave[y][x] = Xspring;
153 Next[y][x] = Xspring;
157 Cave[y][x] = Yspring_eB;
158 Cave[y][x+1] = Yspring_e;
162 Next[y][x+1] = Xspring_e;
164 Next[y][x+1] = Xspring_pause;
170 case Xspring_force_w:
171 switch (Cave[y][x-1])
181 Cave[y][x] = Xspring;
182 Next[y][x] = Xspring;
186 Cave[y][x] = Yspring_wB;
187 Cave[y][x-1] = Yspring_w;
191 Next[y][x-1] = Xspring_w;
193 Next[y][x-1] = Xspring_pause;
198 case Xemerald_force_e:
199 switch (Cave[y][x+1])
209 Cave[y][x] = Xemerald;
210 Next[y][x] = Xemerald;
214 Cave[y][x] = Yemerald_eB;
215 Cave[y][x+1] = Yemerald_e;
217 Next[y][x+1] = Xemerald_pause;
221 case Xemerald_force_w:
222 switch (Cave[y][x-1])
232 Cave[y][x] = Xemerald;
233 Next[y][x] = Xemerald;
237 Cave[y][x] = Yemerald_wB;
238 Cave[y][x-1] = Yemerald_w;
240 Next[y][x-1] = Xemerald_pause;
244 case Xdiamond_force_e:
245 switch (Cave[y][x+1])
255 Cave[y][x] = Xdiamond;
256 Next[y][x] = Xdiamond;
260 Cave[y][x] = Ydiamond_eB;
261 Cave[y][x+1] = Ydiamond_e;
263 Next[y][x+1] = Xdiamond_pause;
267 case Xdiamond_force_w:
268 switch (Cave[y][x-1])
278 Cave[y][x] = Xdiamond;
279 Next[y][x] = Xdiamond;
283 Cave[y][x] = Ydiamond_wB;
284 Cave[y][x-1] = Ydiamond_w;
286 Next[y][x-1] = Xdiamond_pause;
291 switch (Cave[y][x+1])
306 Cave[y][x] = Ybomb_eB;
307 Cave[y][x+1] = Ybomb_e;
309 Next[y][x+1] = Xbomb_pause;
314 switch (Cave[y][x-1])
329 Cave[y][x] = Ybomb_wB;
330 Cave[y][x-1] = Ybomb_w;
332 Next[y][x-1] = Xbomb_pause;
335 #endif /* BAD_ROLL */
337 /* --------------------------------------------------------------------- */
340 switch (Cave[y+1][x])
350 Cave[y][x] = Ystone_sB;
351 if (Cave[y][x+1] == Xblank)
352 Cave[y][x+1] = Yacid_splash_eB;
353 if (Cave[y][x-1] == Xblank)
354 Cave[y][x-1] = Yacid_splash_wB;
360 case Yacid_splash_eB:
361 case Yacid_splash_wB:
364 Cave[y][x] = Ystone_sB;
365 Cave[y+1][x] = Ystone_s;
367 Next[y+1][x] = Xstone_fall;
371 Cave[y][x] = Xsand_stonein_1;
372 Cave[y+1][x] = Xsand_sandstone_1;
373 Next[y][x] = Xsand_stonein_2;
374 Next[y+1][x] = Xsand_sandstone_2;
425 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
427 Cave[y][x] = Ystone_eB;
428 Cave[y][x+1] = Ystone_e;
430 Next[y][x+1] = Xstone_pause;
434 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
436 Cave[y][x] = Ystone_wB;
437 Cave[y][x-1] = Ystone_w;
439 Next[y][x-1] = Xstone_pause;
445 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
447 Cave[y][x] = Ystone_wB;
448 Cave[y][x-1] = Ystone_w;
450 Next[y][x-1] = Xstone_pause;
454 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
456 Cave[y][x] = Ystone_eB;
457 Cave[y][x+1] = Ystone_e;
459 Next[y][x+1] = Xstone_pause;
468 /* --------------------------------------------------------------------- */
471 switch (Cave[y+1][x])
481 Cave[y][x] = Ystone_sB;
482 if (Cave[y][x+1] == Xblank)
483 Cave[y][x+1] = Yacid_splash_eB;
484 if (Cave[y][x-1] == Xblank)
485 Cave[y][x-1] = Yacid_splash_wB;
491 case Yacid_splash_eB:
492 case Yacid_splash_wB:
493 Cave[y][x] = Ystone_sB;
494 Cave[y+1][x] = Ystone_s;
496 Next[y+1][x] = Xstone_fall;
505 /* --------------------------------------------------------------------- */
508 switch (Cave[y+1][x])
518 Cave[y][x] = Ystone_sB;
519 if (Cave[y][x+1] == Xblank)
520 Cave[y][x+1] = Yacid_splash_eB;
521 if (Cave[y][x-1] == Xblank)
522 Cave[y][x-1] = Yacid_splash_wB;
528 case Yacid_splash_eB:
529 case Yacid_splash_wB:
531 Cave[y][x] = Ystone_sB;
532 Cave[y+1][x] = Ystone_s;
534 Next[y+1][x] = Xstone_fall;
539 Cave[y+1][x] = Yemerald_stone;
541 Next[y+1][x] = Xemerald;
542 play[SAMPLE_crack] = 1;
543 score += lev.nut_score;
554 Cave[y][x] = Ystone_sB;
555 Cave[y+1][x] = Ybug_stone;
556 Next[y+1][x] = Znormal;
557 Boom[y][x-1] = Xemerald;
558 Boom[y][x] = Xemerald;
559 Boom[y][x+1] = Xemerald;
560 Boom[y+1][x-1] = Xemerald;
561 Boom[y+1][x] = Xdiamond;
562 Boom[y+1][x+1] = Xemerald;
563 Boom[y+2][x-1] = Xemerald;
564 Boom[y+2][x] = Xemerald;
565 Boom[y+2][x+1] = Xemerald;
566 score += lev.bug_score;
577 Cave[y][x] = Ystone_sB;
578 Cave[y+1][x] = Ytank_stone;
579 Next[y+1][x] = Znormal;
580 Boom[y][x-1] = Xblank;
582 Boom[y][x+1] = Xblank;
583 Boom[y+1][x-1] = Xblank;
584 Boom[y+1][x] = Xblank;
585 Boom[y+1][x+1] = Xblank;
586 Boom[y+2][x-1] = Xblank;
587 Boom[y+2][x] = Xblank;
588 Boom[y+2][x+1] = Xblank;
589 score += lev.tank_score;
595 switch (Cave[y+1][x+1])
598 case Yacid_splash_eB:
599 case Yacid_splash_wB:
602 Cave[y+1][x] = Xspring_e;
606 Cave[y+1][x] = Xspring_w;
612 switch (Cave[y+1][x-1])
615 case Yacid_splash_eB:
616 case Yacid_splash_wB:
619 Cave[y+1][x] = Xspring_w;
622 Cave[y+1][x] = Xspring_e;
634 Cave[y][x] = Ystone_sB;
635 Cave[y+1][x] = Yeater_stone;
636 Next[y+1][x] = Znormal;
637 Boom[y][x-1] = lev.eater_array[lev.eater_pos][0];
638 Boom[y][x] = lev.eater_array[lev.eater_pos][1];
639 Boom[y][x+1] = lev.eater_array[lev.eater_pos][2];
640 Boom[y+1][x-1] = lev.eater_array[lev.eater_pos][3];
641 Boom[y+1][x] = lev.eater_array[lev.eater_pos][4];
642 Boom[y+1][x+1] = lev.eater_array[lev.eater_pos][5];
643 Boom[y+2][x-1] = lev.eater_array[lev.eater_pos][6];
644 Boom[y+2][x] = lev.eater_array[lev.eater_pos][7];
645 Boom[y+2][x+1] = lev.eater_array[lev.eater_pos][8];
646 lev.eater_pos = (lev.eater_pos + 1) & 7;
647 score += lev.eater_score;
652 Cave[y][x] = Ystone_sB;
653 Cave[y+1][x] = Yalien_stone;
654 Next[y+1][x] = Znormal;
655 Boom[y][x-1] = Xblank;
657 Boom[y][x+1] = Xblank;
658 Boom[y+1][x-1] = Xblank;
659 Boom[y+1][x] = Xblank;
660 Boom[y+1][x+1] = Xblank;
661 Boom[y+2][x-1] = Xblank;
662 Boom[y+2][x] = Xblank;
663 Boom[y+2][x+1] = Xblank;
664 score += lev.alien_score;
669 switch (Cave[y+2][x])
672 case Yacid_splash_eB:
673 case Yacid_splash_wB:
722 Cave[y][x] = Ystone_sB;
723 Cave[y+1][x] = Ydiamond_stone;
725 Next[y+1][x] = Xstone_pause;
726 play[SAMPLE_squash] = 1;
731 Cave[y+1][x] = Ybomb_eat;
732 Next[y+1][x] = Znormal;
733 Boom[y][x-1] = Xblank;
735 Boom[y][x+1] = Xblank;
736 Boom[y+1][x-1] = Xblank;
737 Boom[y+1][x] = Xblank;
738 Boom[y+1][x+1] = Xblank;
739 Boom[y+2][x-1] = Xblank;
740 Boom[y+2][x] = Xblank;
741 Boom[y+2][x+1] = Xblank;
745 if (lev.wonderwall_time)
747 lev.wonderwall_state = 1;
748 Cave[y][x] = Ystone_sB;
750 if (tab_blank[Cave[y+2][x]])
752 Cave[y+2][x] = Yemerald_s;
753 Next[y+2][x] = Xemerald_fall;
757 play[SAMPLE_squash] = 1;
768 /* --------------------------------------------------------------------- */
771 switch (Cave[y+1][x])
781 Cave[y][x] = Ynut_sB;
782 if (Cave[y][x+1] == Xblank)
783 Cave[y][x+1] = Yacid_splash_eB;
784 if (Cave[y][x-1] == Xblank)
785 Cave[y][x-1] = Yacid_splash_wB;
791 case Yacid_splash_eB:
792 case Yacid_splash_wB:
793 Cave[y][x] = Ynut_sB;
794 Cave[y+1][x] = Ynut_s;
796 Next[y+1][x] = Xnut_fall;
845 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
847 Cave[y][x] = Ynut_eB;
848 Cave[y][x+1] = Ynut_e;
850 Next[y][x+1] = Xnut_pause;
854 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
856 Cave[y][x] = Ynut_wB;
857 Cave[y][x-1] = Ynut_w;
859 Next[y][x-1] = Xnut_pause;
865 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
867 Cave[y][x] = Ynut_wB;
868 Cave[y][x-1] = Ynut_w;
870 Next[y][x-1] = Xnut_pause;
874 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
876 Cave[y][x] = Ynut_eB;
877 Cave[y][x+1] = Ynut_e;
879 Next[y][x+1] = Xnut_pause;
888 /* --------------------------------------------------------------------- */
892 switch (Cave[y+1][x])
902 Cave[y][x] = Ynut_sB;
903 if (Cave[y][x+1] == Xblank)
904 Cave[y][x+1] = Yacid_splash_eB;
905 if (Cave[y][x-1] == Xblank)
906 Cave[y][x-1] = Yacid_splash_wB;
912 case Yacid_splash_eB:
913 case Yacid_splash_wB:
914 Cave[y][x] = Ynut_sB;
915 Cave[y+1][x] = Ynut_s;
917 Next[y+1][x] = Xnut_fall;
926 /* --------------------------------------------------------------------- */
929 switch (Cave[y+1][x])
939 Cave[y][x] = Ynut_sB;
940 if (Cave[y][x+1] == Xblank)
941 Cave[y][x+1] = Yacid_splash_eB;
942 if (Cave[y][x-1] == Xblank)
943 Cave[y][x-1] = Yacid_splash_wB;
949 case Yacid_splash_eB:
950 case Yacid_splash_wB:
952 Cave[y][x] = Ynut_sB;
953 Cave[y+1][x] = Ynut_s;
955 Next[y+1][x] = Xnut_fall;
965 /* --------------------------------------------------------------------- */
968 if (tab_ameuba[Cave[y-1][x]] ||
969 tab_ameuba[Cave[y][x+1]] ||
970 tab_ameuba[Cave[y+1][x]] ||
971 tab_ameuba[Cave[y][x-1]])
974 switch (Cave[y][x+1])
977 case Yacid_splash_eB:
978 case Yacid_splash_wB:
990 Cave[y][x] = Ybug_n_e;
991 Next[y][x] = Xbug_goe;
1000 if (tab_ameuba[Cave[y-1][x]] ||
1001 tab_ameuba[Cave[y][x+1]] ||
1002 tab_ameuba[Cave[y+1][x]] ||
1003 tab_ameuba[Cave[y][x-1]])
1008 switch (Cave[y-1][x])
1018 Cave[y][x] = Ybug_nB;
1019 if (Cave[y-2][x+1] == Xblank)
1020 Cave[y-2][x+1] = Yacid_splash_eB;
1021 if (Cave[y-2][x-1] == Xblank)
1022 Cave[y-2][x-1] = Yacid_splash_wB;
1023 Next[y][x] = Xblank;
1028 case Yacid_splash_eB:
1029 case Yacid_splash_wB:
1033 Cave[y][x] = Ybug_nB;
1034 Cave[y-1][x] = Ybug_n;
1035 Next[y][x] = Xblank;
1036 Next[y-1][x] = Xbug_n;
1041 Cave[y][x] = Ybug_n_w;
1042 Next[y][x] = Xbug_gow;
1047 /* --------------------------------------------------------------------- */
1050 if (tab_ameuba[Cave[y-1][x]] ||
1051 tab_ameuba[Cave[y][x+1]] ||
1052 tab_ameuba[Cave[y+1][x]] ||
1053 tab_ameuba[Cave[y][x-1]])
1056 switch (Cave[y+1][x])
1059 case Yacid_splash_eB:
1060 case Yacid_splash_wB:
1072 Cave[y][x] = Ybug_e_s;
1073 Next[y][x] = Xbug_gos;
1082 if (tab_ameuba[Cave[y-1][x]] ||
1083 tab_ameuba[Cave[y][x+1]] ||
1084 tab_ameuba[Cave[y+1][x]] ||
1085 tab_ameuba[Cave[y][x-1]])
1090 switch (Cave[y][x+1])
1100 Cave[y][x] = Ybug_eB;
1101 if (Cave[y-1][x+2] == Xblank)
1102 Cave[y-1][x+2] = Yacid_splash_eB;
1103 if (Cave[y-1][x] == Xblank)
1104 Cave[y-1][x] = Yacid_splash_wB;
1105 Next[y][x] = Xblank;
1110 case Yacid_splash_eB:
1111 case Yacid_splash_wB:
1115 Cave[y][x] = Ybug_eB;
1116 Cave[y][x+1] = Ybug_e;
1117 Next[y][x] = Xblank;
1118 Next[y][x+1] = Xbug_e;
1123 Cave[y][x] = Ybug_e_n;
1124 Next[y][x] = Xbug_gon;
1129 /* --------------------------------------------------------------------- */
1132 if (tab_ameuba[Cave[y-1][x]] ||
1133 tab_ameuba[Cave[y][x+1]] ||
1134 tab_ameuba[Cave[y+1][x]] ||
1135 tab_ameuba[Cave[y][x-1]])
1138 switch (Cave[y][x-1])
1141 case Yacid_splash_eB:
1142 case Yacid_splash_wB:
1154 Cave[y][x] = Ybug_s_w;
1155 Next[y][x] = Xbug_gow;
1164 if (tab_ameuba[Cave[y-1][x]] ||
1165 tab_ameuba[Cave[y][x+1]] ||
1166 tab_ameuba[Cave[y+1][x]] ||
1167 tab_ameuba[Cave[y][x-1]])
1172 switch (Cave[y+1][x])
1182 Cave[y][x] = Ybug_sB;
1183 if (Cave[y][x+1] == Xblank)
1184 Cave[y][x+1] = Yacid_splash_eB;
1185 if (Cave[y][x-1] == Xblank)
1186 Cave[y][x-1] = Yacid_splash_wB;
1187 Next[y][x] = Xblank;
1192 case Yacid_splash_eB:
1193 case Yacid_splash_wB:
1197 Cave[y][x] = Ybug_sB;
1198 Cave[y+1][x] = Ybug_s;
1199 Next[y][x] = Xblank;
1200 Next[y+1][x] = Xbug_s;
1205 Cave[y][x] = Ybug_s_e;
1206 Next[y][x] = Xbug_goe;
1211 /* --------------------------------------------------------------------- */
1214 if (tab_ameuba[Cave[y-1][x]] ||
1215 tab_ameuba[Cave[y][x+1]] ||
1216 tab_ameuba[Cave[y+1][x]] ||
1217 tab_ameuba[Cave[y][x-1]])
1220 switch (Cave[y-1][x])
1223 case Yacid_splash_eB:
1224 case Yacid_splash_wB:
1236 Cave[y][x] = Ybug_w_n;
1237 Next[y][x] = Xbug_gon;
1246 if (tab_ameuba[Cave[y-1][x]] ||
1247 tab_ameuba[Cave[y][x+1]] ||
1248 tab_ameuba[Cave[y+1][x]] ||
1249 tab_ameuba[Cave[y][x-1]])
1254 switch (Cave[y][x-1])
1264 Cave[y][x] = Ybug_wB;
1265 if (Cave[y-1][x] == Xblank)
1266 Cave[y-1][x] = Yacid_splash_eB;
1267 if (Cave[y-1][x-2] == Xblank)
1268 Cave[y-1][x-2] = Yacid_splash_wB;
1269 Next[y][x] = Xblank;
1274 case Yacid_splash_eB:
1275 case Yacid_splash_wB:
1279 Cave[y][x] = Ybug_wB;
1280 Cave[y][x-1] = Ybug_w;
1281 Next[y][x] = Xblank;
1282 Next[y][x-1] = Xbug_w;
1287 Cave[y][x] = Ybug_w_s;
1288 Next[y][x] = Xbug_gos;
1293 /* --------------------------------------------------------------------- */
1296 if (tab_ameuba[Cave[y-1][x]] ||
1297 tab_ameuba[Cave[y][x+1]] ||
1298 tab_ameuba[Cave[y+1][x]] ||
1299 tab_ameuba[Cave[y][x-1]])
1302 switch (Cave[y][x-1])
1305 case Yacid_splash_eB:
1306 case Yacid_splash_wB:
1318 Cave[y][x] = Ytank_n_w;
1319 Next[y][x] = Xtank_gow;
1328 if (tab_ameuba[Cave[y-1][x]] ||
1329 tab_ameuba[Cave[y][x+1]] ||
1330 tab_ameuba[Cave[y+1][x]] ||
1331 tab_ameuba[Cave[y][x-1]])
1336 switch (Cave[y-1][x])
1346 Cave[y][x] = Ytank_nB;
1347 if (Cave[y-2][x+1] == Xblank)
1348 Cave[y-2][x+1] = Yacid_splash_eB;
1349 if (Cave[y-2][x-1] == Xblank)
1350 Cave[y-2][x-1] = Yacid_splash_wB;
1351 Next[y][x] = Xblank;
1356 case Yacid_splash_eB:
1357 case Yacid_splash_wB:
1361 Cave[y][x] = Ytank_nB;
1362 Cave[y-1][x] = Ytank_n;
1363 Next[y][x] = Xblank;
1364 Next[y-1][x] = Xtank_n;
1369 Cave[y][x] = Ytank_n_e;
1370 Next[y][x] = Xtank_goe;
1375 /* --------------------------------------------------------------------- */
1378 if (tab_ameuba[Cave[y-1][x]] ||
1379 tab_ameuba[Cave[y][x+1]] ||
1380 tab_ameuba[Cave[y+1][x]] ||
1381 tab_ameuba[Cave[y][x-1]])
1384 switch (Cave[y-1][x])
1387 case Yacid_splash_eB:
1388 case Yacid_splash_wB:
1400 Cave[y][x] = Ytank_e_n;
1401 Next[y][x] = Xtank_gon;
1410 if (tab_ameuba[Cave[y-1][x]] ||
1411 tab_ameuba[Cave[y][x+1]] ||
1412 tab_ameuba[Cave[y+1][x]] ||
1413 tab_ameuba[Cave[y][x-1]])
1418 switch (Cave[y][x+1])
1428 Cave[y][x] = Ytank_eB;
1429 if (Cave[y-1][x+2] == Xblank)
1430 Cave[y-1][x+2] = Yacid_splash_eB;
1431 if (Cave[y-1][x] == Xblank)
1432 Cave[y-1][x] = Yacid_splash_wB;
1433 Next[y][x] = Xblank;
1438 case Yacid_splash_eB:
1439 case Yacid_splash_wB:
1443 Cave[y][x] = Ytank_eB;
1444 Cave[y][x+1] = Ytank_e;
1445 Next[y][x] = Xblank;
1446 Next[y][x+1] = Xtank_e;
1451 Cave[y][x] = Ytank_e_s;
1452 Next[y][x] = Xtank_gos;
1457 /* --------------------------------------------------------------------- */
1460 if (tab_ameuba[Cave[y-1][x]] ||
1461 tab_ameuba[Cave[y][x+1]] ||
1462 tab_ameuba[Cave[y+1][x]] ||
1463 tab_ameuba[Cave[y][x-1]])
1466 switch (Cave[y][x+1])
1469 case Yacid_splash_eB:
1470 case Yacid_splash_wB:
1482 Cave[y][x] = Ytank_s_e;
1483 Next[y][x] = Xtank_goe;
1492 if (tab_ameuba[Cave[y-1][x]] ||
1493 tab_ameuba[Cave[y][x+1]] ||
1494 tab_ameuba[Cave[y+1][x]] ||
1495 tab_ameuba[Cave[y][x-1]])
1500 switch (Cave[y+1][x])
1510 Cave[y][x] = Ytank_sB;
1511 if (Cave[y][x+1] == Xblank)
1512 Cave[y][x+1] = Yacid_splash_eB;
1513 if (Cave[y][x-1] == Xblank)
1514 Cave[y][x-1] = Yacid_splash_wB;
1515 Next[y][x] = Xblank;
1520 case Yacid_splash_eB:
1521 case Yacid_splash_wB:
1525 Cave[y][x] = Ytank_sB;
1526 Cave[y+1][x] = Ytank_s;
1527 Next[y][x] = Xblank;
1528 Next[y+1][x] = Xtank_s;
1533 Cave[y][x] = Ytank_s_w;
1534 Next[y][x] = Xtank_gow;
1539 /* --------------------------------------------------------------------- */
1542 if (tab_ameuba[Cave[y-1][x]] ||
1543 tab_ameuba[Cave[y][x+1]] ||
1544 tab_ameuba[Cave[y+1][x]] ||
1545 tab_ameuba[Cave[y][x-1]])
1548 switch (Cave[y+1][x])
1551 case Yacid_splash_eB:
1552 case Yacid_splash_wB:
1564 Cave[y][x] = Ytank_w_s;
1565 Next[y][x] = Xtank_gos;
1574 if (tab_ameuba[Cave[y-1][x]] ||
1575 tab_ameuba[Cave[y][x+1]] ||
1576 tab_ameuba[Cave[y+1][x]] ||
1577 tab_ameuba[Cave[y][x-1]])
1582 switch (Cave[y][x-1])
1592 Cave[y][x] = Ytank_wB;
1593 if (Cave[y-1][x] == Xblank)
1594 Cave[y-1][x] = Yacid_splash_eB;
1595 if (Cave[y-1][x-2] == Xblank)
1596 Cave[y-1][x-2] = Yacid_splash_wB;
1597 Next[y][x] = Xblank;
1602 case Yacid_splash_eB:
1603 case Yacid_splash_wB:
1607 Cave[y][x] = Ytank_wB;
1608 Cave[y][x-1] = Ytank_w;
1609 Next[y][x] = Xblank;
1610 Next[y][x-1] = Xtank_w;
1615 Cave[y][x] = Ytank_w_n;
1616 Next[y][x] = Xtank_gon;
1621 /* --------------------------------------------------------------------- */
1627 if (lev.android_clone_cnt == 0)
1629 if (Cave[y-1][x-1] != Xblank &&
1630 Cave[y-1][x] != Xblank &&
1631 Cave[y-1][x+1] != Xblank &&
1632 Cave[y][x-1] != Xblank &&
1633 Cave[y][x+1] != Xblank &&
1634 Cave[y+1][x-1] != Xblank &&
1635 Cave[y+1][x] != Xblank &&
1636 Cave[y+1][x+1] != Xblank)
1641 /* randomly find an object to clone */
1643 case 0: /* S,NE,W,NW,SE,E,SW,N */
1644 temp= lev.android_array[Cave[y+1][x]]; 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][x-1]]; if (temp != Xblank) break;
1647 temp= lev.android_array[Cave[y-1][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][x+1]]; if (temp != Xblank) break;
1650 temp= lev.android_array[Cave[y+1][x-1]]; if (temp != Xblank) break;
1651 temp= lev.android_array[Cave[y-1][x]]; if (temp != Xblank) break;
1654 case 1: /* NW,SE,N,S,NE,SW,E,W */
1655 temp= lev.android_array[Cave[y-1][x-1]]; if (temp != Xblank) break;
1656 temp= lev.android_array[Cave[y+1][x+1]]; if (temp != Xblank) break;
1657 temp= lev.android_array[Cave[y-1][x]]; if (temp != Xblank) break;
1658 temp= lev.android_array[Cave[y+1][x]]; if (temp != Xblank) break;
1659 temp= lev.android_array[Cave[y-1][x+1]]; if (temp != Xblank) break;
1660 temp= lev.android_array[Cave[y+1][x-1]]; if (temp != Xblank) break;
1661 temp= lev.android_array[Cave[y][x+1]]; if (temp != Xblank) break;
1662 temp= lev.android_array[Cave[y][x-1]]; if (temp != Xblank) break;
1665 case 2: /* SW,E,S,W,N,NW,SE,NE */
1666 temp= lev.android_array[Cave[y+1][x-1]]; 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][x-1]]; if (temp != Xblank) break;
1670 temp= lev.android_array[Cave[y-1][x]]; if (temp != Xblank) break;
1671 temp= lev.android_array[Cave[y-1][x-1]]; if (temp != Xblank) break;
1672 temp= lev.android_array[Cave[y+1][x+1]]; if (temp != Xblank) break;
1673 temp= lev.android_array[Cave[y-1][x+1]]; if (temp != Xblank) break;
1676 case 3: /* N,SE,NE,E,W,S,NW,SW */
1677 temp= lev.android_array[Cave[y-1][x]]; if (temp != Xblank) break;
1678 temp= lev.android_array[Cave[y+1][x+1]]; if (temp != Xblank) break;
1679 temp= lev.android_array[Cave[y-1][x+1]]; if (temp != Xblank) break;
1680 temp= lev.android_array[Cave[y][x+1]]; if (temp != Xblank) break;
1681 temp= lev.android_array[Cave[y][x-1]]; if (temp != Xblank) break;
1682 temp= lev.android_array[Cave[y+1][x]]; if (temp != Xblank) break;
1683 temp= lev.android_array[Cave[y-1][x-1]]; if (temp != Xblank) break;
1684 temp= lev.android_array[Cave[y+1][x-1]]; if (temp != Xblank) break;
1687 case 4: /* SE,NW,E,NE,SW,W,N,S */
1688 temp= lev.android_array[Cave[y+1][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][x+1]]; if (temp != Xblank) break;
1691 temp= lev.android_array[Cave[y-1][x+1]]; if (temp != Xblank) break;
1692 temp= lev.android_array[Cave[y+1][x-1]]; if (temp != Xblank) break;
1693 temp= lev.android_array[Cave[y][x-1]]; if (temp != Xblank) break;
1694 temp= lev.android_array[Cave[y-1][x]]; if (temp != Xblank) break;
1695 temp= lev.android_array[Cave[y+1][x]]; if (temp != Xblank) break;
1698 case 5: /* NE,W,SE,SW,S,N,E,NW */
1699 temp= lev.android_array[Cave[y-1][x+1]]; if (temp != Xblank) break;
1700 temp= lev.android_array[Cave[y][x-1]]; if (temp != Xblank) break;
1701 temp= lev.android_array[Cave[y+1][x+1]]; if (temp != Xblank) break;
1702 temp= lev.android_array[Cave[y+1][x-1]]; if (temp != Xblank) break;
1703 temp= lev.android_array[Cave[y+1][x]]; if (temp != Xblank) break;
1704 temp= lev.android_array[Cave[y-1][x]]; if (temp != Xblank) break;
1705 temp= lev.android_array[Cave[y][x+1]]; if (temp != Xblank) break;
1706 temp= lev.android_array[Cave[y-1][x-1]]; if (temp != Xblank) break;
1709 case 6: /* E,N,SW,S,NW,NE,SE,W */
1710 temp= lev.android_array[Cave[y][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]]; 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-1][x+1]]; if (temp != Xblank) break;
1716 temp= lev.android_array[Cave[y+1][x+1]]; if (temp != Xblank) break;
1717 temp= lev.android_array[Cave[y][x-1]]; if (temp != Xblank) break;
1720 case 7: /* W,SW,NW,N,E,SE,NE,S */
1721 temp= lev.android_array[Cave[y][x-1]]; if (temp != Xblank) break;
1722 temp= lev.android_array[Cave[y+1][x-1]]; if (temp != Xblank) break;
1723 temp= lev.android_array[Cave[y-1][x-1]]; if (temp != Xblank) break;
1724 temp= lev.android_array[Cave[y-1][x]]; if (temp != Xblank) break;
1725 temp= lev.android_array[Cave[y][x+1]]; if (temp != Xblank) break;
1726 temp= lev.android_array[Cave[y+1][x+1]]; if (temp != Xblank) break;
1727 temp= lev.android_array[Cave[y-1][x+1]]; if (temp != Xblank) break;
1728 temp= lev.android_array[Cave[y+1][x]]; if (temp != Xblank) break;
1732 Next[y][x] = temp; /* the item we chose to clone */
1733 play[SAMPLE_android] = 1;
1737 /* randomly find a direction to move */
1739 case 0: /* S,NE,W,NW,SE,E,SW,N */
1740 if (Cave[y+1][x] == Xblank) goto android_s;
1741 if (Cave[y-1][x+1] == Xblank) goto android_ne;
1742 if (Cave[y][x-1] == Xblank) goto android_w;
1743 if (Cave[y-1][x-1] == Xblank) goto android_nw;
1744 if (Cave[y+1][x+1] == Xblank) goto android_se;
1745 if (Cave[y][x+1] == Xblank) goto android_e;
1746 if (Cave[y+1][x-1] == Xblank) goto android_sw;
1747 if (Cave[y-1][x] == Xblank) goto android_n;
1750 case 1: /* NW,SE,N,S,NE,SW,E,W */
1751 if (Cave[y-1][x-1] == Xblank) goto android_nw;
1752 if (Cave[y+1][x+1] == Xblank) goto android_se;
1753 if (Cave[y-1][x] == Xblank) goto android_n;
1754 if (Cave[y+1][x] == Xblank) goto android_s;
1755 if (Cave[y-1][x+1] == Xblank) goto android_ne;
1756 if (Cave[y+1][x-1] == Xblank) goto android_sw;
1757 if (Cave[y][x+1] == Xblank) goto android_e;
1758 if (Cave[y][x-1] == Xblank) goto android_w;
1761 case 2: /* SW,E,S,W,N,NW,SE,NE */
1762 if (Cave[y+1][x-1] == Xblank) goto android_sw;
1763 if (Cave[y][x+1] == Xblank) goto android_e;
1764 if (Cave[y+1][x] == Xblank) goto android_s;
1765 if (Cave[y][x-1] == Xblank) goto android_w;
1766 if (Cave[y-1][x] == Xblank) goto android_n;
1767 if (Cave[y-1][x-1] == Xblank) goto android_nw;
1768 if (Cave[y+1][x+1] == Xblank) goto android_se;
1769 if (Cave[y-1][x+1] == Xblank) goto android_ne;
1772 case 3: /* N,SE,NE,E,W,S,NW,SW */
1773 if (Cave[y-1][x] == Xblank) goto android_n;
1774 if (Cave[y+1][x+1] == Xblank) goto android_se;
1775 if (Cave[y-1][x+1] == Xblank) goto android_ne;
1776 if (Cave[y][x+1] == Xblank) goto android_e;
1777 if (Cave[y][x-1] == Xblank) goto android_w;
1778 if (Cave[y+1][x] == Xblank) goto android_s;
1779 if (Cave[y-1][x-1] == Xblank) goto android_nw;
1780 if (Cave[y+1][x-1] == Xblank) goto android_sw;
1783 case 4: /* SE,NW,E,NE,SW,W,N,S */
1784 if (Cave[y+1][x+1] == Xblank) goto android_se;
1785 if (Cave[y-1][x-1] == Xblank) goto android_nw;
1786 if (Cave[y][x+1] == Xblank) goto android_e;
1787 if (Cave[y-1][x+1] == Xblank) goto android_ne;
1788 if (Cave[y+1][x-1] == Xblank) goto android_sw;
1789 if (Cave[y][x-1] == Xblank) goto android_w;
1790 if (Cave[y-1][x] == Xblank) goto android_n;
1791 if (Cave[y+1][x] == Xblank) goto android_s;
1794 case 5: /* NE,W,SE,SW,S,N,E,NW */
1795 if (Cave[y-1][x+1] == Xblank) goto android_ne;
1796 if (Cave[y][x-1] == Xblank) goto android_w;
1797 if (Cave[y+1][x+1] == Xblank) goto android_se;
1798 if (Cave[y+1][x-1] == Xblank) goto android_sw;
1799 if (Cave[y+1][x] == Xblank) goto android_s;
1800 if (Cave[y-1][x] == Xblank) goto android_n;
1801 if (Cave[y][x+1] == Xblank) goto android_e;
1802 if (Cave[y-1][x-1] == Xblank) goto android_nw;
1805 case 6: /* E,N,SW,S,NW,NE,SE,W */
1806 if (Cave[y][x+1] == Xblank) goto android_e;
1807 if (Cave[y-1][x] == Xblank) goto android_n;
1808 if (Cave[y+1][x-1] == Xblank) goto android_sw;
1809 if (Cave[y+1][x] == Xblank) goto android_s;
1810 if (Cave[y-1][x-1] == Xblank) goto android_nw;
1811 if (Cave[y-1][x+1] == Xblank) goto android_ne;
1812 if (Cave[y+1][x+1] == Xblank) goto android_se;
1813 if (Cave[y][x-1] == Xblank) goto android_w;
1816 case 7: /* W,SW,NW,N,E,SE,NE,S */
1817 if (Cave[y][x-1] == Xblank) goto android_w;
1818 if (Cave[y+1][x-1] == Xblank) goto android_sw;
1819 if (Cave[y-1][x-1] == Xblank) goto android_nw;
1820 if (Cave[y-1][x] == Xblank) goto android_n;
1821 if (Cave[y][x+1] == Xblank) goto android_e;
1822 if (Cave[y+1][x+1] == Xblank) goto android_se;
1823 if (Cave[y-1][x+1] == Xblank) goto android_ne;
1824 if (Cave[y+1][x] == Xblank) goto android_s;
1830 if (lev.android_move_cnt == 0)
1832 if (Cave[y-1][x-1] == Zplayer ||
1833 Cave[y-1][x] == Zplayer ||
1834 Cave[y-1][x+1] == Zplayer ||
1835 Cave[y][x-1] == Zplayer ||
1836 Cave[y][x+1] == Zplayer ||
1837 Cave[y+1][x-1] == Zplayer ||
1838 Cave[y+1][x] == Zplayer ||
1839 Cave[y+1][x+1] == Zplayer)
1842 if (ply1.alive && ply2.alive)
1844 if ((ply1.x > x ? ply1.x - x : x - ply1.x) +
1845 (ply1.y > y ? ply1.y - y : y - ply1.y) <
1846 (ply2.x > x ? ply2.x - x : x - ply2.x) +
1847 (ply2.y > y ? ply2.y - y : y - ply2.y))
1858 else if (ply1.alive)
1863 else if (ply2.alive)
1874 Next[y][x] = Xblank; /* assume we will move */
1875 temp = ((x < dx) + 1 - (x > dx)) + ((y < dy) + 1 - (y > dy)) * 3;
1881 /* attempt clockwise move first if direct path is blocked */
1883 case 0: /* north west */
1884 if (tab_android_move[Cave[y-1][x-1]]) goto android_nw;
1885 if (tab_android_move[Cave[y-1][x]]) goto android_n;
1886 if (tab_android_move[Cave[y][x-1]]) goto android_w;
1890 if (tab_android_move[Cave[y-1][x]]) goto android_n;
1891 if (tab_android_move[Cave[y-1][x+1]]) goto android_ne;
1892 if (tab_android_move[Cave[y-1][x-1]]) goto android_nw;
1895 case 2: /* north east */
1896 if (tab_android_move[Cave[y-1][x+1]]) goto android_ne;
1897 if (tab_android_move[Cave[y][x+1]]) goto android_e;
1898 if (tab_android_move[Cave[y-1][x]]) goto android_n;
1902 if (tab_android_move[Cave[y][x-1]]) goto android_w;
1903 if (tab_android_move[Cave[y-1][x-1]]) goto android_nw;
1904 if (tab_android_move[Cave[y+1][x-1]]) goto android_sw;
1907 case 4: /* nowhere */
1911 if (tab_android_move[Cave[y][x+1]]) goto android_e;
1912 if (tab_android_move[Cave[y+1][x+1]]) goto android_se;
1913 if (tab_android_move[Cave[y-1][x+1]]) goto android_ne;
1916 case 6: /* south west */
1917 if (tab_android_move[Cave[y+1][x-1]]) goto android_sw;
1918 if (tab_android_move[Cave[y][x-1]]) goto android_w;
1919 if (tab_android_move[Cave[y+1][x]]) goto android_s;
1923 if (tab_android_move[Cave[y+1][x]]) goto android_s;
1924 if (tab_android_move[Cave[y+1][x-1]]) goto android_sw;
1925 if (tab_android_move[Cave[y+1][x+1]]) goto android_se;
1928 case 8: /* south east */
1929 if (tab_android_move[Cave[y+1][x+1]]) goto android_se;
1930 if (tab_android_move[Cave[y+1][x]]) goto android_s;
1931 if (tab_android_move[Cave[y][x+1]]) goto android_e;
1939 /* attempt counterclockwise move first if direct path is blocked */
1941 case 0: /* north west */
1942 if (tab_android_move[Cave[y-1][x-1]]) goto android_nw;
1943 if (tab_android_move[Cave[y][x-1]]) goto android_w;
1944 if (tab_android_move[Cave[y-1][x]]) goto android_n;
1948 if (tab_android_move[Cave[y-1][x]]) goto android_n;
1949 if (tab_android_move[Cave[y-1][x-1]]) goto android_nw;
1950 if (tab_android_move[Cave[y-1][x+1]]) goto android_ne;
1953 case 2: /* north east */
1954 if (tab_android_move[Cave[y-1][x+1]]) goto android_ne;
1955 if (tab_android_move[Cave[y-1][x]]) goto android_n;
1956 if (tab_android_move[Cave[y][x+1]]) goto android_e;
1960 if (tab_android_move[Cave[y][x-1]]) goto android_w;
1961 if (tab_android_move[Cave[y+1][x-1]]) goto android_sw;
1962 if (tab_android_move[Cave[y-1][x-1]]) goto android_nw;
1965 case 4: /* nowhere */
1969 if (tab_android_move[Cave[y][x+1]]) goto android_e;
1970 if (tab_android_move[Cave[y-1][x+1]]) goto android_ne;
1971 if (tab_android_move[Cave[y+1][x+1]]) goto android_se;
1974 case 6: /* south west */
1975 if (tab_android_move[Cave[y+1][x-1]]) goto android_sw;
1976 if (tab_android_move[Cave[y+1][x]]) goto android_s;
1977 if (tab_android_move[Cave[y][x-1]]) goto android_w;
1981 if (tab_android_move[Cave[y+1][x]]) goto android_s;
1982 if (tab_android_move[Cave[y+1][x+1]]) goto android_se;
1983 if (tab_android_move[Cave[y+1][x-1]]) goto android_sw;
1986 case 8: /* south east */
1987 if (tab_android_move[Cave[y+1][x+1]]) goto android_se;
1988 if (tab_android_move[Cave[y][x+1]]) goto android_e;
1989 if (tab_android_move[Cave[y+1][x]]) goto android_s;
1997 Next[y][x] = Xandroid;
2002 Cave[y][x] = Yandroid_nB;
2003 Cave[y-1][x] = Yandroid_n;
2004 Next[y-1][x] = Xandroid;
2010 Cave[y][x] = Yandroid_neB;
2011 Cave[y-1][x+1] = Yandroid_ne;
2012 Next[y-1][x+1] = Xandroid;
2018 Cave[y][x] = Yandroid_eB;
2019 Cave[y][x+1] = Yandroid_e;
2020 Next[y][x+1] = Xandroid;
2026 Cave[y][x] = Yandroid_seB;
2027 Cave[y+1][x+1] = Yandroid_se;
2028 Next[y+1][x+1] = Xandroid;
2034 Cave[y][x] = Yandroid_sB;
2035 Cave[y+1][x] = Yandroid_s;
2036 Next[y+1][x] = Xandroid;
2042 Cave[y][x] = Yandroid_swB;
2043 Cave[y+1][x-1] = Yandroid_sw;
2044 Next[y+1][x-1] = Xandroid;
2050 Cave[y][x] = Yandroid_wB;
2051 Cave[y][x-1] = Yandroid_w;
2052 Next[y][x-1] = Xandroid;
2058 Cave[y][x] = Yandroid_nwB;
2059 Cave[y-1][x-1] = Yandroid_nw;
2060 Next[y-1][x-1] = Xandroid;
2064 /* --------------------------------------------------------------------- */
2067 switch (Cave[y-1][x])
2077 Cave[y][x] = Yandroid_nB;
2078 if (Cave[y-2][x+1] == Xblank)
2079 Cave[y-2][x+1] = Yacid_splash_eB;
2080 if (Cave[y-2][x-1] == Xblank)
2081 Cave[y-2][x-1] = Yacid_splash_wB;
2082 Next[y][x] = Xblank;
2087 case Yacid_splash_eB:
2088 case Yacid_splash_wB:
2089 Cave[y][x] = Yandroid_nB;
2090 Cave[y-1][x] = Yandroid_n;
2091 Next[y][x] = Xblank;
2092 Next[y-1][x] = Xandroid;
2101 switch (Cave[y-1][x])
2111 Cave[y][x] = Yandroid_nB;
2112 if (Cave[y-2][x+1] == Xblank)
2113 Cave[y-2][x+1] = Yacid_splash_eB;
2114 if (Cave[y-2][x-1] == Xblank)
2115 Cave[y-2][x-1] = Yacid_splash_wB;
2116 Next[y][x] = Xblank;
2121 case Yacid_splash_eB:
2122 case Yacid_splash_wB:
2123 Cave[y][x] = Yandroid_nB;
2124 Cave[y-1][x] = Yandroid_n;
2125 Next[y][x] = Xblank;
2126 Next[y-1][x] = Xandroid_1_n;
2134 /* --------------------------------------------------------------------- */
2137 switch (Cave[y][x+1])
2147 Cave[y][x] = Yandroid_eB;
2148 if (Cave[y-1][x+2] == Xblank)
2149 Cave[y-1][x+2] = Yacid_splash_eB;
2150 if (Cave[y-1][x] == Xblank)
2151 Cave[y-1][x] = Yacid_splash_wB;
2152 Next[y][x] = Xblank;
2157 case Yacid_splash_eB:
2158 case Yacid_splash_wB:
2159 Cave[y][x] = Yandroid_eB;
2160 Cave[y][x+1] = Yandroid_e;
2161 Next[y][x] = Xblank;
2162 Next[y][x+1] = Xandroid;
2171 switch (Cave[y][x+1])
2181 Cave[y][x] = Yandroid_eB;
2182 if (Cave[y-1][x+2] == Xblank)
2183 Cave[y-1][x+2] = Yacid_splash_eB;
2184 if (Cave[y-1][x] == Xblank)
2185 Cave[y-1][x] = Yacid_splash_wB;
2186 Next[y][x] = Xblank;
2191 case Yacid_splash_eB:
2192 case Yacid_splash_wB:
2193 Cave[y][x] = Yandroid_eB;
2194 Cave[y][x+1] = Yandroid_e;
2195 Next[y][x] = Xblank;
2196 Next[y][x+1] = Xandroid_1_e;
2204 /* --------------------------------------------------------------------- */
2207 switch (Cave[y+1][x])
2217 Cave[y][x] = Yandroid_sB;
2218 if (Cave[y][x+1] == Xblank)
2219 Cave[y][x+1] = Yacid_splash_eB;
2220 if (Cave[y][x-1] == Xblank)
2221 Cave[y][x-1] = Yacid_splash_wB;
2222 Next[y][x] = Xblank;
2227 case Yacid_splash_eB:
2228 case Yacid_splash_wB:
2229 Cave[y][x] = Yandroid_sB;
2230 Cave[y+1][x] = Yandroid_s;
2231 Next[y][x] = Xblank;
2232 Next[y+1][x] = Xandroid;
2241 switch (Cave[y+1][x])
2251 Cave[y][x] = Yandroid_sB;
2252 if (Cave[y][x+1] == Xblank)
2253 Cave[y][x+1] = Yacid_splash_eB;
2254 if (Cave[y][x-1] == Xblank)
2255 Cave[y][x-1] = Yacid_splash_wB;
2256 Next[y][x] = Xblank;
2261 case Yacid_splash_eB:
2262 case Yacid_splash_wB:
2263 Cave[y][x] = Yandroid_sB;
2264 Cave[y+1][x] = Yandroid_s;
2265 Next[y][x] = Xblank;
2266 Next[y+1][x] = Xandroid_1_s;
2274 /* --------------------------------------------------------------------- */
2277 switch (Cave[y][x-1])
2287 Cave[y][x] = Yandroid_wB;
2288 if (Cave[y-1][x] == Xblank)
2289 Cave[y-1][x] = Yacid_splash_eB;
2290 if (Cave[y-1][x-2] == Xblank)
2291 Cave[y-1][x-2] = Yacid_splash_wB;
2292 Next[y][x] = Xblank;
2297 case Yacid_splash_eB:
2298 case Yacid_splash_wB:
2299 Cave[y][x] = Yandroid_wB;
2300 Cave[y][x-1] = Yandroid_w;
2301 Next[y][x] = Xblank;
2302 Next[y][x-1] = Xandroid;
2311 switch (Cave[y][x-1])
2321 Cave[y][x] = Yandroid_wB;
2322 if (Cave[y-1][x] == Xblank)
2323 Cave[y-1][x] = Yacid_splash_eB;
2324 if (Cave[y-1][x-2] == Xblank)
2325 Cave[y-1][x-2] = Yacid_splash_wB;
2326 Next[y][x] = Xblank;
2331 case Yacid_splash_eB:
2332 case Yacid_splash_wB:
2333 Cave[y][x] = Yandroid_wB;
2334 Cave[y][x-1] = Yandroid_w;
2335 Next[y][x] = Xblank;
2336 Next[y][x-1] = Xandroid_1_w;
2344 /* --------------------------------------------------------------------- */
2347 switch (Cave[y+1][x])
2357 Cave[y][x] = Yspring_sB;
2358 if (Cave[y][x+1] == Xblank)
2359 Cave[y][x+1] = Yacid_splash_eB;
2360 if (Cave[y][x-1] == Xblank)
2361 Cave[y][x-1] = Yacid_splash_wB;
2362 Next[y][x] = Xblank;
2367 case Yacid_splash_eB:
2368 case Yacid_splash_wB:
2371 Cave[y][x] = Yspring_sB;
2372 Cave[y+1][x] = Yspring_s;
2373 Next[y][x] = Xblank;
2374 Next[y+1][x] = Xspring_fall;
2393 case Xemerald_pause:
2395 case Xdiamond_pause:
2423 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
2425 Cave[y][x] = Yspring_eB;
2426 Cave[y][x+1] = Yspring_e;
2427 if (Cave[y+1][x] == Xbumper)
2428 Cave[y+1][x] = XbumperB;
2429 Next[y][x] = Xblank;
2432 Next[y][x+1] = Xspring_e;
2434 Next[y][x+1] = Xspring_pause;
2440 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
2442 Cave[y][x] = Yspring_wB;
2443 Cave[y][x-1] = Yspring_w;
2444 if (Cave[y+1][x] == Xbumper)
2445 Cave[y+1][x] = XbumperB;
2446 Next[y][x] = Xblank;
2449 Next[y][x-1] = Xspring_w;
2451 Next[y][x-1] = Xspring_pause;
2459 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
2461 Cave[y][x] = Yspring_wB;
2462 Cave[y][x-1] = Yspring_w;
2463 if (Cave[y+1][x] == Xbumper)
2464 Cave[y+1][x] = XbumperB;
2465 Next[y][x] = Xblank;
2468 Next[y][x-1] = Xspring_w;
2470 Next[y][x-1] = Xspring_pause;
2476 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
2478 Cave[y][x] = Yspring_eB;
2479 Cave[y][x+1] = Yspring_e;
2480 if (Cave[y+1][x] == Xbumper)
2481 Cave[y+1][x] = XbumperB;
2482 Next[y][x] = Xblank;
2485 Next[y][x+1] = Xspring_e;
2487 Next[y][x+1] = Xspring_pause;
2498 /* --------------------------------------------------------------------- */
2501 switch (Cave[y+1][x])
2511 Cave[y][x] = Yspring_sB;
2512 if (Cave[y][x+1] == Xblank)
2513 Cave[y][x+1] = Yacid_splash_eB;
2514 if (Cave[y][x-1] == Xblank)
2515 Cave[y][x-1] = Yacid_splash_wB;
2516 Next[y][x] = Xblank;
2521 case Yacid_splash_eB:
2522 case Yacid_splash_wB:
2523 Cave[y][x] = Yspring_sB;
2524 Cave[y+1][x] = Yspring_s;
2525 Next[y][x] = Xblank;
2526 Next[y+1][x] = Xspring_fall;
2530 Cave[y][x] = Xspring;
2531 Next[y][x] = Xspring;
2535 /* --------------------------------------------------------------------- */
2538 switch (Cave[y+1][x])
2548 Cave[y][x] = Yspring_sB;
2549 if (Cave[y][x+1] == Xblank)
2550 Cave[y][x+1] = Yacid_splash_eB;
2551 if (Cave[y][x-1] == Xblank)
2552 Cave[y][x-1] = Yacid_splash_wB;
2553 Next[y][x] = Xblank;
2558 case Yacid_splash_eB:
2559 case Yacid_splash_wB:
2560 Cave[y][x] = Yspring_sB;
2561 Cave[y+1][x] = Yspring_s;
2562 Next[y][x] = Xblank;
2563 Next[y+1][x] = Xspring_fall;
2567 Cave[y+1][x] = XbumperB;
2570 switch (Cave[y][x+1])
2580 Cave[y][x] = Yspring_eB;
2581 if (Cave[y-1][x+2] == Xblank)
2582 Cave[y-1][x+2] = Yacid_splash_eB;
2583 if (Cave[y-1][x] == Xblank)
2584 Cave[y-1][x] = Yacid_splash_wB;
2585 Next[y][x] = Xblank;
2590 case Yacid_splash_eB:
2591 case Yacid_splash_wB:
2596 Cave[y][x] = Yspring_eB;
2597 Cave[y][x+1] = Yspring_e;
2598 Next[y][x] = Xblank;
2599 Next[y][x+1] = Xspring_e;
2608 Cave[y][x] = Yspring_kill_eB;
2609 Cave[y][x+1] = Yspring_kill_e;
2610 Next[y][x] = Xblank;
2611 Next[y][x+1] = Xspring_e;
2612 play[SAMPLE_slurp] = 1;
2613 score += lev.slurp_score;
2618 Cave[y][x+1] = XbumperB;
2619 Next[y][x] = Xspring_w;
2620 PLAY(SAMPLE_spring);
2624 Cave[y][x] = Xspring;
2625 Next[y][x] = Xspring;
2626 PLAY(SAMPLE_spring);
2630 /* --------------------------------------------------------------------- */
2633 switch (Cave[y+1][x])
2643 Cave[y][x] = Yspring_sB;
2644 if (Cave[y][x+1] == Xblank)
2645 Cave[y][x+1] = Yacid_splash_eB;
2646 if (Cave[y][x-1] == Xblank)
2647 Cave[y][x-1] = Yacid_splash_wB;
2648 Next[y][x] = Xblank;
2653 case Yacid_splash_eB:
2654 case Yacid_splash_wB:
2655 Cave[y][x] = Yspring_sB;
2656 Cave[y+1][x] = Yspring_s;
2657 Next[y][x] = Xblank;
2658 Next[y+1][x] = Xspring_fall;
2662 Cave[y+1][x] = XbumperB;
2665 switch (Cave[y][x-1])
2675 Cave[y][x] = Yspring_wB;
2676 if (Cave[y-1][x] == Xblank)
2677 Cave[y-1][x] = Yacid_splash_eB;
2678 if (Cave[y-1][x-2] == Xblank)
2679 Cave[y-1][x-2] = Yacid_splash_wB;
2680 Next[y][x] = Xblank;
2685 case Yacid_splash_eB:
2686 case Yacid_splash_wB:
2691 Cave[y][x] = Yspring_wB;
2692 Cave[y][x-1] = Yspring_w;
2693 Next[y][x] = Xblank;
2694 Next[y][x-1] = Xspring_w;
2703 Cave[y][x] = Yspring_kill_wB;
2704 Cave[y][x-1] = Yspring_kill_w;
2705 Next[y][x] = Xblank;
2706 Next[y][x-1] = Xspring_w;
2707 play[SAMPLE_slurp] = 1;
2708 score += lev.slurp_score;
2713 Cave[y][x-1] = XbumperB;
2714 Next[y][x] = Xspring_e;
2715 PLAY(SAMPLE_spring);
2719 Cave[y][x] = Xspring;
2720 Next[y][x] = Xspring;
2721 PLAY(SAMPLE_spring);
2725 /* --------------------------------------------------------------------- */
2728 switch (Cave[y+1][x])
2738 Cave[y][x] = Yspring_sB;
2739 if (Cave[y][x+1] == Xblank)
2740 Cave[y][x+1] = Yacid_splash_eB;
2741 if (Cave[y][x-1] == Xblank)
2742 Cave[y][x-1] = Yacid_splash_wB;
2743 Next[y][x] = Xblank;
2748 case Yacid_splash_eB:
2749 case Yacid_splash_wB:
2751 Cave[y][x] = Yspring_sB;
2752 Cave[y+1][x] = Yspring_s;
2753 Next[y][x] = Xblank;
2754 Next[y+1][x] = Xspring_fall;
2759 Cave[y+1][x] = Ybomb_eat;
2760 Next[y+1][x] = Znormal;
2761 Boom[y][x-1] = Xblank;
2762 Boom[y][x] = Xblank;
2763 Boom[y][x+1] = Xblank;
2764 Boom[y+1][x-1] = Xblank;
2765 Boom[y+1][x] = Xblank;
2766 Boom[y+1][x+1] = Xblank;
2767 Boom[y+2][x-1] = Xblank;
2768 Boom[y+2][x] = Xblank;
2769 Boom[y+2][x+1] = Xblank;
2780 Cave[y][x] = Yspring_sB;
2781 Cave[y+1][x] = Ybug_spring;
2782 Next[y+1][x] = Znormal;
2783 Boom[y][x-1] = Xemerald;
2784 Boom[y][x] = Xemerald;
2785 Boom[y][x+1] = Xemerald;
2786 Boom[y+1][x-1] = Xemerald;
2787 Boom[y+1][x] = Xdiamond;
2788 Boom[y+1][x+1] = Xemerald;
2789 Boom[y+2][x-1] = Xemerald;
2790 Boom[y+2][x] = Xemerald;
2791 Boom[y+2][x+1] = Xemerald;
2792 score += lev.bug_score;
2803 Cave[y][x] = Yspring_sB;
2804 Cave[y+1][x] = Ytank_spring;
2805 Next[y+1][x] = Znormal;
2806 Boom[y][x-1] = Xblank;
2807 Boom[y][x] = Xblank;
2808 Boom[y][x+1] = Xblank;
2809 Boom[y+1][x-1] = Xblank;
2810 Boom[y+1][x] = Xblank;
2811 Boom[y+1][x+1] = Xblank;
2812 Boom[y+2][x-1] = Xblank;
2813 Boom[y+2][x] = Xblank;
2814 Boom[y+2][x+1] = Xblank;
2815 score += lev.tank_score;
2822 Cave[y][x] = Yspring_sB;
2823 Cave[y+1][x] = Yeater_spring;
2824 Next[y+1][x] = Znormal;
2825 Boom[y][x-1] = lev.eater_array[lev.eater_pos][0];
2826 Boom[y][x] = lev.eater_array[lev.eater_pos][1];
2827 Boom[y][x+1] = lev.eater_array[lev.eater_pos][2];
2828 Boom[y+1][x-1] = lev.eater_array[lev.eater_pos][3];
2829 Boom[y+1][x] = lev.eater_array[lev.eater_pos][4];
2830 Boom[y+1][x+1] = lev.eater_array[lev.eater_pos][5];
2831 Boom[y+2][x-1] = lev.eater_array[lev.eater_pos][6];
2832 Boom[y+2][x] = lev.eater_array[lev.eater_pos][7];
2833 Boom[y+2][x+1] = lev.eater_array[lev.eater_pos][8];
2834 lev.eater_pos = (lev.eater_pos + 1) & 7;
2835 score += lev.eater_score;
2840 Cave[y][x] = Yspring_sB;
2841 Cave[y+1][x] = Yalien_spring;
2842 Next[y+1][x] = Znormal;
2843 Boom[y][x-1] = Xblank;
2844 Boom[y][x] = Xblank;
2845 Boom[y][x+1] = Xblank;
2846 Boom[y+1][x-1] = Xblank;
2847 Boom[y+1][x] = Xblank;
2848 Boom[y+1][x+1] = Xblank;
2849 Boom[y+2][x-1] = Xblank;
2850 Boom[y+2][x] = Xblank;
2851 Boom[y+2][x+1] = Xblank;
2852 score += lev.alien_score;
2856 Cave[y][x] = Xspring;
2857 Next[y][x] = Xspring;
2858 PLAY(SAMPLE_spring);
2862 /* --------------------------------------------------------------------- */
2865 if (Cave[y][x+1] == Xdiamond)
2867 Cave[y][x+1] = Ydiamond_eat;
2868 Next[y][x+1] = Xblank;
2869 play[SAMPLE_eater] = 1;
2873 if (Cave[y+1][x] == Xdiamond)
2875 Cave[y+1][x] = Ydiamond_eat;
2876 Next[y+1][x] = Xblank;
2877 play[SAMPLE_eater] = 1;
2881 if (Cave[y][x-1] == Xdiamond)
2883 Cave[y][x-1] = Ydiamond_eat;
2884 Next[y][x-1] = Xblank;
2885 play[SAMPLE_eater] = 1;
2889 if (Cave[y-1][x] == Xdiamond)
2891 Cave[y-1][x] = Ydiamond_eat;
2892 Next[y-1][x] = Xblank;
2893 play[SAMPLE_eater] = 1;
2897 switch (Cave[y-1][x])
2907 Cave[y][x] = Yeater_nB;
2908 if (Cave[y-2][x+1] == Xblank)
2909 Cave[y-2][x+1] = Yacid_splash_eB;
2910 if (Cave[y-2][x-1] == Xblank)
2911 Cave[y-2][x-1] = Yacid_splash_wB;
2912 Next[y][x] = Xblank;
2917 case Yacid_splash_eB:
2918 case Yacid_splash_wB:
2922 Cave[y][x] = Yeater_nB;
2923 Cave[y-1][x] = Yeater_n;
2924 Next[y][x] = Xblank;
2925 Next[y-1][x] = Xeater_n;
2929 Next[y][x] = RANDOM & 1 ? Xeater_e : Xeater_w;
2934 /* --------------------------------------------------------------------- */
2937 if (Cave[y+1][x] == Xdiamond)
2939 Cave[y+1][x] = Ydiamond_eat;
2940 Next[y+1][x] = Xblank;
2941 play[SAMPLE_eater] = 1;
2945 if (Cave[y][x-1] == Xdiamond)
2947 Cave[y][x-1] = Ydiamond_eat;
2948 Next[y][x-1] = Xblank;
2949 play[SAMPLE_eater] = 1;
2953 if (Cave[y-1][x] == Xdiamond)
2955 Cave[y-1][x] = Ydiamond_eat;
2956 Next[y-1][x] = Xblank;
2957 play[SAMPLE_eater] = 1;
2961 if (Cave[y][x+1] == Xdiamond)
2963 Cave[y][x+1] = Ydiamond_eat;
2964 Next[y][x+1] = Xblank;
2965 play[SAMPLE_eater] = 1;
2969 switch (Cave[y][x+1])
2979 Cave[y][x] = Yeater_eB;
2980 if (Cave[y-1][x+2] == Xblank)
2981 Cave[y-1][x+2] = Yacid_splash_eB;
2982 if (Cave[y-1][x] == Xblank)
2983 Cave[y-1][x] = Yacid_splash_wB;
2984 Next[y][x] = Xblank;
2989 case Yacid_splash_eB:
2990 case Yacid_splash_wB:
2994 Cave[y][x] = Yeater_eB;
2995 Cave[y][x+1] = Yeater_e;
2996 Next[y][x] = Xblank;
2997 Next[y][x+1] = Xeater_e;
3001 Next[y][x] = RANDOM & 1 ? Xeater_n : Xeater_s;
3006 /* --------------------------------------------------------------------- */
3009 if (Cave[y][x-1] == Xdiamond)
3011 Cave[y][x-1] = Ydiamond_eat;
3012 Next[y][x-1] = Xblank;
3013 play[SAMPLE_eater] = 1;
3017 if (Cave[y-1][x] == Xdiamond)
3019 Cave[y-1][x] = Ydiamond_eat;
3020 Next[y-1][x] = Xblank;
3021 play[SAMPLE_eater] = 1;
3025 if (Cave[y][x+1] == Xdiamond)
3027 Cave[y][x+1] = Ydiamond_eat;
3028 Next[y][x+1] = Xblank;
3029 play[SAMPLE_eater] = 1;
3033 if (Cave[y+1][x] == Xdiamond)
3035 Cave[y+1][x] = Ydiamond_eat;
3036 Next[y+1][x] = Xblank;
3037 play[SAMPLE_eater] = 1;
3041 switch (Cave[y+1][x])
3051 Cave[y][x] = Yeater_sB;
3052 if (Cave[y][x+1] == Xblank)
3053 Cave[y][x+1] = Yacid_splash_eB;
3054 if (Cave[y][x-1] == Xblank)
3055 Cave[y][x-1] = Yacid_splash_wB;
3056 Next[y][x] = Xblank;
3061 case Yacid_splash_eB:
3062 case Yacid_splash_wB:
3066 Cave[y][x] = Yeater_sB;
3067 Cave[y+1][x] = Yeater_s;
3068 Next[y][x] = Xblank;
3069 Next[y+1][x] = Xeater_s;
3073 Next[y][x] = RANDOM & 1 ? Xeater_e : Xeater_w;
3078 /* --------------------------------------------------------------------- */
3081 if (Cave[y-1][x] == Xdiamond)
3083 Cave[y-1][x] = Ydiamond_eat;
3084 Next[y-1][x] = Xblank;
3085 play[SAMPLE_eater] = 1;
3089 if (Cave[y][x+1] == Xdiamond)
3091 Cave[y][x+1] = Ydiamond_eat;
3092 Next[y][x+1] = Xblank;
3093 play[SAMPLE_eater] = 1;
3097 if (Cave[y+1][x] == Xdiamond)
3099 Cave[y+1][x] = Ydiamond_eat;
3100 Next[y+1][x] = Xblank;
3101 play[SAMPLE_eater] = 1;
3105 if (Cave[y][x-1] == Xdiamond)
3107 Cave[y][x-1] = Ydiamond_eat;
3108 Next[y][x-1] = Xblank;
3109 play[SAMPLE_eater] = 1;
3113 switch (Cave[y][x-1])
3123 Cave[y][x] = Yeater_wB;
3124 if (Cave[y-1][x] == Xblank)
3125 Cave[y-1][x] = Yacid_splash_eB;
3126 if (Cave[y-1][x-2] == Xblank)
3127 Cave[y-1][x-2] = Yacid_splash_wB;
3128 Next[y][x] = Xblank;
3133 case Yacid_splash_eB:
3134 case Yacid_splash_wB:
3138 Cave[y][x] = Yeater_wB;
3139 Cave[y][x-1] = Yeater_w;
3140 Next[y][x] = Xblank;
3141 Next[y][x-1] = Xeater_w;
3145 Next[y][x] = RANDOM & 1 ? Xeater_n : Xeater_s;
3150 /* --------------------------------------------------------------------- */
3158 else if (ply1.alive && ply2.alive)
3160 if ((ply1.x > x ? ply1.x - x : x - ply1.x) +
3161 (ply1.y > y ? ply1.y - y : y - ply1.y) <
3162 (ply2.x > x ? ply2.x - x : x - ply2.x) +
3163 (ply2.y > y ? ply2.y - y : y - ply2.y))
3174 else if (ply1.alive)
3179 else if (ply2.alive)
3194 switch (Cave[y-1][x])
3204 Cave[y][x] = Yalien_nB;
3205 if (Cave[y-2][x+1] == Xblank)
3206 Cave[y-2][x+1] = Yacid_splash_eB;
3207 if (Cave[y-2][x-1] == Xblank)
3208 Cave[y-2][x-1] = Yacid_splash_wB;
3209 Next[y][x] = Xblank;
3214 case Yacid_splash_eB:
3215 case Yacid_splash_wB:
3219 Cave[y][x] = Yalien_nB;
3220 Cave[y-1][x] = Yalien_n;
3221 Next[y][x] = Xblank;
3222 Next[y-1][x] = Xalien_pause;
3229 switch (Cave[y+1][x])
3239 Cave[y][x] = Yalien_sB;
3240 Next[y][x] = Xblank;
3241 if (Cave[y][x+1] == Xblank)
3242 Cave[y][x+1] = Yacid_splash_eB;
3243 if (Cave[y][x-1] == Xblank)
3244 Cave[y][x-1] = Yacid_splash_wB;
3249 case Yacid_splash_eB:
3250 case Yacid_splash_wB:
3254 Cave[y][x] = Yalien_sB;
3255 Cave[y+1][x] = Yalien_s;
3256 Next[y][x] = Xblank;
3257 Next[y+1][x] = Xalien_pause;
3267 switch (Cave[y][x+1])
3277 Cave[y][x] = Yalien_eB;
3278 if (Cave[y-1][x+2] == Xblank)
3279 Cave[y-1][x+2] = Yacid_splash_eB;
3280 if (Cave[y-1][x] == Xblank)
3281 Cave[y-1][x] = Yacid_splash_wB;
3282 Next[y][x] = Xblank;
3287 case Yacid_splash_eB:
3288 case Yacid_splash_wB:
3292 Cave[y][x] = Yalien_eB;
3293 Cave[y][x+1] = Yalien_e;
3294 Next[y][x] = Xblank;
3295 Next[y][x+1] = Xalien_pause;
3302 switch (Cave[y][x-1])
3312 Cave[y][x] = Yalien_wB;
3313 if (Cave[y-1][x] == Xblank)
3314 Cave[y-1][x] = Yacid_splash_eB;
3315 if (Cave[y-1][x-2] == Xblank)
3316 Cave[y-1][x-2] = Yacid_splash_wB;
3317 Next[y][x] = Xblank;
3322 case Yacid_splash_eB:
3323 case Yacid_splash_wB:
3327 Cave[y][x] = Yalien_wB;
3328 Cave[y][x-1] = Yalien_w;
3329 Next[y][x] = Xblank;
3330 Next[y][x-1] = Xalien_pause;
3340 Next[y][x] = Xalien;
3343 /* --------------------------------------------------------------------- */
3346 switch (Cave[y+1][x])
3356 Cave[y][x] = Yemerald_sB;
3357 if (Cave[y][x+1] == Xblank)
3358 Cave[y][x+1] = Yacid_splash_eB;
3359 if (Cave[y][x-1] == Xblank)
3360 Cave[y][x-1] = Yacid_splash_wB;
3361 Next[y][x] = Xblank;
3366 case Yacid_splash_eB:
3367 case Yacid_splash_wB:
3368 Cave[y][x] = Yemerald_sB;
3369 Cave[y+1][x] = Yemerald_s;
3370 Next[y][x] = Xblank;
3371 Next[y+1][x] = Xemerald_fall;
3390 case Xemerald_pause:
3392 case Xdiamond_pause:
3429 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
3431 Cave[y][x] = Yemerald_eB;
3432 Cave[y][x+1] = Yemerald_e;
3433 Next[y][x] = Xblank;
3434 Next[y][x+1] = Xemerald_pause;
3438 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
3440 Cave[y][x] = Yemerald_wB;
3441 Cave[y][x-1] = Yemerald_w;
3442 Next[y][x] = Xblank;
3443 Next[y][x-1] = Xemerald_pause;
3449 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
3451 Cave[y][x] = Yemerald_wB;
3452 Cave[y][x-1] = Yemerald_w;
3453 Next[y][x] = Xblank;
3454 Next[y][x-1] = Xemerald_pause;
3458 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
3460 Cave[y][x] = Yemerald_eB;
3461 Cave[y][x+1] = Yemerald_e;
3462 Next[y][x] = Xblank;
3463 Next[y][x+1] = Xemerald_pause;
3469 if (++lev.shine_cnt > 50)
3471 lev.shine_cnt = RANDOM & 7;
3472 Cave[y][x] = Xemerald_shine;
3478 /* --------------------------------------------------------------------- */
3480 case Xemerald_pause:
3481 switch (Cave[y+1][x])
3491 Cave[y][x] = Yemerald_sB;
3492 if (Cave[y][x+1] == Xblank)
3493 Cave[y][x+1] = Yacid_splash_eB;
3494 if (Cave[y][x-1] == Xblank)
3495 Cave[y][x-1] = Yacid_splash_wB;
3496 Next[y][x] = Xblank;
3501 case Yacid_splash_eB:
3502 case Yacid_splash_wB:
3503 Cave[y][x] = Yemerald_sB;
3504 Cave[y+1][x] = Yemerald_s;
3505 Next[y][x] = Xblank;
3506 Next[y+1][x] = Xemerald_fall;
3510 Cave[y][x] = Xemerald;
3511 Next[y][x] = Xemerald;
3515 /* --------------------------------------------------------------------- */
3518 switch (Cave[y+1][x])
3528 Cave[y][x] = Yemerald_sB;
3529 if (Cave[y][x+1] == Xblank)
3530 Cave[y][x+1] = Yacid_splash_eB;
3531 if (Cave[y][x-1] == Xblank)
3532 Cave[y][x-1] = Yacid_splash_wB;
3533 Next[y][x] = Xblank;
3538 case Yacid_splash_eB:
3539 case Yacid_splash_wB:
3541 Cave[y][x] = Yemerald_sB;
3542 Cave[y+1][x] = Yemerald_s;
3543 Next[y][x] = Xblank;
3544 Next[y+1][x] = Xemerald_fall;
3548 if (lev.wonderwall_time)
3550 lev.wonderwall_state = 1;
3551 Cave[y][x] = Yemerald_sB;
3552 if (tab_blank[Cave[y+2][x]])
3554 Cave[y+2][x] = Ydiamond_s;
3555 Next[y+2][x] = Xdiamond_fall;
3558 Next[y][x] = Xblank;
3559 play[SAMPLE_squash] = 1;
3564 Cave[y][x] = Xemerald;
3565 Next[y][x] = Xemerald;
3566 PLAY(SAMPLE_diamond);
3570 /* --------------------------------------------------------------------- */
3573 switch (Cave[y+1][x])
3583 Cave[y][x] = Ydiamond_sB;
3584 if (Cave[y][x+1] == Xblank)
3585 Cave[y][x+1] = Yacid_splash_eB;
3586 if (Cave[y][x-1] == Xblank)
3587 Cave[y][x-1] = Yacid_splash_wB;
3588 Next[y][x] = Xblank;
3593 case Yacid_splash_eB:
3594 case Yacid_splash_wB:
3595 Cave[y][x] = Ydiamond_sB;
3596 Cave[y+1][x] = Ydiamond_s;
3597 Next[y][x] = Xblank;
3598 Next[y+1][x] = Xdiamond_fall;
3617 case Xemerald_pause:
3619 case Xdiamond_pause:
3656 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
3658 Cave[y][x] = Ydiamond_eB;
3659 Cave[y][x+1] = Ydiamond_e;
3660 Next[y][x] = Xblank;
3661 Next[y][x+1] = Xdiamond_pause;
3665 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
3667 Cave[y][x] = Ydiamond_wB;
3668 Cave[y][x-1] = Ydiamond_w;
3669 Next[y][x] = Xblank;
3670 Next[y][x-1] = Xdiamond_pause;
3676 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
3678 Cave[y][x] = Ydiamond_wB;
3679 Cave[y][x-1] = Ydiamond_w;
3680 Next[y][x] = Xblank;
3681 Next[y][x-1] = Xdiamond_pause;
3685 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
3687 Cave[y][x] = Ydiamond_eB;
3688 Cave[y][x+1] = Ydiamond_e;
3689 Next[y][x] = Xblank;
3690 Next[y][x+1] = Xdiamond_pause;
3696 if (++lev.shine_cnt > 50)
3698 lev.shine_cnt = RANDOM & 7;
3699 Cave[y][x] = Xdiamond_shine;
3705 /* --------------------------------------------------------------------- */
3707 case Xdiamond_pause:
3708 switch (Cave[y+1][x])
3718 Cave[y][x] = Ydiamond_sB;
3719 if (Cave[y][x+1] == Xblank)
3720 Cave[y][x+1] = Yacid_splash_eB;
3721 if (Cave[y][x-1] == Xblank)
3722 Cave[y][x-1] = Yacid_splash_wB;
3723 Next[y][x] = Xblank;
3728 case Yacid_splash_eB:
3729 case Yacid_splash_wB:
3730 Cave[y][x] = Ydiamond_sB;
3731 Cave[y+1][x] = Ydiamond_s;
3732 Next[y][x] = Xblank;
3733 Next[y+1][x] = Xdiamond_fall;
3737 Cave[y][x] = Xdiamond;
3738 Next[y][x] = Xdiamond;
3742 /* --------------------------------------------------------------------- */
3745 switch (Cave[y+1][x])
3755 Cave[y][x] = Ydiamond_sB;
3756 if (Cave[y][x+1] == Xblank)
3757 Cave[y][x+1] = Yacid_splash_eB;
3758 if (Cave[y][x-1] == Xblank)
3759 Cave[y][x-1] = Yacid_splash_wB;
3760 Next[y][x] = Xblank;
3765 case Yacid_splash_eB:
3766 case Yacid_splash_wB:
3768 Cave[y][x] = Ydiamond_sB;
3769 Cave[y+1][x] = Ydiamond_s;
3770 Next[y][x] = Xblank;
3771 Next[y+1][x] = Xdiamond_fall;
3775 if (lev.wonderwall_time)
3777 lev.wonderwall_state = 1;
3778 Cave[y][x] = Ydiamond_sB;
3779 if (tab_blank[Cave[y+2][x]])
3781 Cave[y+2][x] = Ystone_s;
3782 Next[y+2][x] = Xstone_fall;
3785 Next[y][x] = Xblank;
3786 play[SAMPLE_squash] = 1;
3791 Cave[y][x] = Xdiamond;
3792 Next[y][x] = Xdiamond;
3793 PLAY(SAMPLE_diamond);
3797 /* --------------------------------------------------------------------- */
3800 switch (Cave[y+1][x])
3810 Cave[y][x] = Ydrip_s1B;
3811 if (Cave[y][x+1] == Xblank)
3812 Cave[y][x+1] = Yacid_splash_eB;
3813 if (Cave[y][x-1] == Xblank)
3814 Cave[y][x-1] = Yacid_splash_wB;
3815 Next[y][x] = Xdrip_stretchB;
3820 case Yacid_splash_eB:
3821 case Yacid_splash_wB:
3825 Cave[y][x] = Ydrip_s1B;
3826 Cave[y+1][x] = Ydrip_s1;
3827 Next[y][x] = Xdrip_stretchB;
3828 Next[y+1][x] = Xdrip_stretch;
3869 play[SAMPLE_drip] = 1;
3873 /* --------------------------------------------------------------------- */
3876 Cave[y][x] = Ydrip_s2;
3877 Next[y][x] = Xdrip_fall;
3880 case Xdrip_stretchB:
3881 Cave[y][x] = Ydrip_s2B;
3882 Next[y][x] = Xblank;
3886 Next[y][x] = Xdrip_fall;
3889 /* --------------------------------------------------------------------- */
3892 switch (Cave[y+1][x])
3902 Cave[y][x] = Ybomb_sB;
3903 if (Cave[y][x+1] == Xblank)
3904 Cave[y][x+1] = Yacid_splash_eB;
3905 if (Cave[y][x-1] == Xblank)
3906 Cave[y][x-1] = Yacid_splash_wB;
3907 Next[y][x] = Xblank;
3912 case Yacid_splash_eB:
3913 case Yacid_splash_wB:
3914 Cave[y][x] = Ybomb_sB;
3915 Cave[y+1][x] = Ybomb_s;
3916 Next[y][x] = Xblank;
3917 Next[y+1][x] = Xbomb_fall;
3936 case Xemerald_pause:
3938 case Xdiamond_pause:
3966 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
3968 Cave[y][x] = Ybomb_eB;
3969 Cave[y][x+1] = Ybomb_e;
3970 Next[y][x] = Xblank;
3971 Next[y][x+1] = Xbomb_pause;
3975 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
3977 Cave[y][x] = Ybomb_wB;
3978 Cave[y][x-1] = Ybomb_w;
3979 Next[y][x] = Xblank;
3980 Next[y][x-1] = Xbomb_pause;
3986 if (tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]])
3988 Cave[y][x] = Ybomb_wB;
3989 Cave[y][x-1] = Ybomb_w;
3990 Next[y][x] = Xblank;
3991 Next[y][x-1] = Xbomb_pause;
3995 if (tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]])
3997 Cave[y][x] = Ybomb_eB;
3998 Cave[y][x+1] = Ybomb_e;
3999 Next[y][x] = Xblank;
4000 Next[y][x+1] = Xbomb_pause;
4009 /* --------------------------------------------------------------------- */
4012 switch (Cave[y+1][x])
4022 Cave[y][x] = Ybomb_sB;
4023 if (Cave[y][x+1] == Xblank)
4024 Cave[y][x+1] = Yacid_splash_eB;
4025 if (Cave[y][x-1] == Xblank)
4026 Cave[y][x-1] = Yacid_splash_wB;
4027 Next[y][x] = Xblank;
4032 case Yacid_splash_eB:
4033 case Yacid_splash_wB:
4034 Cave[y][x] = Ybomb_sB;
4035 Cave[y+1][x] = Ybomb_s;
4036 Next[y][x] = Xblank;
4037 Next[y+1][x] = Xbomb_fall;
4046 /* --------------------------------------------------------------------- */
4049 switch (Cave[y+1][x])
4059 Cave[y][x] = Ybomb_sB;
4060 if (Cave[y][x+1] == Xblank)
4061 Cave[y][x+1] = Yacid_splash_eB;
4062 if (Cave[y][x-1] == Xblank)
4063 Cave[y][x-1] = Yacid_splash_wB;
4064 Next[y][x] = Xblank;
4069 case Yacid_splash_eB:
4070 case Yacid_splash_wB:
4071 Cave[y][x] = Ybomb_sB;
4072 Cave[y+1][x] = Ybomb_s;
4073 Next[y][x] = Xblank;
4074 Next[y+1][x] = Xbomb_fall;
4078 Cave[y][x] = Ybomb_eat;
4079 Next[y][x] = Znormal;
4080 Boom[y-1][x-1] = Xblank;
4081 Boom[y-1][x] = Xblank;
4082 Boom[y-1][x+1] = Xblank;
4083 Boom[y][x-1] = Xblank;
4084 Boom[y][x] = Xblank;
4085 Boom[y][x+1] = Xblank;
4086 Boom[y+1][x-1] = Xblank;
4087 Boom[y+1][x] = Xblank;
4088 Boom[y+1][x+1] = Xblank;
4092 /* --------------------------------------------------------------------- */
4095 if (lev.wind_cnt == 0)
4098 switch (lev.wind_direction)
4101 switch (Cave[y-1][x])
4111 Cave[y][x] = Yballoon_nB;
4112 if (Cave[y-2][x+1] == Xblank)
4113 Cave[y-2][x+1] = Yacid_splash_eB;
4114 if (Cave[y-2][x-1] == Xblank)
4115 Cave[y-2][x-1] = Yacid_splash_wB;
4116 Next[y][x] = Xblank;
4121 case Yacid_splash_eB:
4122 case Yacid_splash_wB:
4123 Cave[y][x] = Yballoon_nB;
4124 Cave[y-1][x] = Yballoon_n;
4125 Next[y][x] = Xblank;
4126 Next[y-1][x] = Xballoon;
4134 switch (Cave[y][x+1])
4144 Cave[y][x] = Yballoon_eB;
4145 if (Cave[y-1][x+2] == Xblank)
4146 Cave[y-1][x+2] = Yacid_splash_eB;
4147 if (Cave[y-1][x] == Xblank)
4148 Cave[y-1][x] = Yacid_splash_wB;
4149 Next[y][x] = Xblank;
4154 case Yacid_splash_eB:
4155 case Yacid_splash_wB:
4156 Cave[y][x] = Yballoon_eB;
4157 Cave[y][x+1] = Yballoon_e;
4158 Next[y][x] = Xblank;
4159 Next[y][x+1] = Xballoon;
4167 switch (Cave[y+1][x])
4177 Cave[y][x] = Yballoon_sB;
4178 if (Cave[y][x+1] == Xblank)
4179 Cave[y][x+1] = Yacid_splash_eB;
4180 if (Cave[y][x-1] == Xblank)
4181 Cave[y][x-1] = Yacid_splash_wB;
4182 Next[y][x] = Xblank;
4187 case Yacid_splash_eB:
4188 case Yacid_splash_wB:
4189 Cave[y][x] = Yballoon_sB;
4190 Cave[y+1][x] = Yballoon_s;
4191 Next[y][x] = Xblank;
4192 Next[y+1][x] = Xballoon;
4200 switch (Cave[y][x-1])
4210 Cave[y][x] = Yballoon_wB;
4211 if (Cave[y-1][x] == Xblank)
4212 Cave[y-1][x] = Yacid_splash_eB;
4213 if (Cave[y-1][x-2] == Xblank)
4214 Cave[y-1][x-2] = Yacid_splash_wB;
4215 Next[y][x] = Xblank;
4220 case Yacid_splash_eB:
4221 case Yacid_splash_wB:
4222 Cave[y][x] = Yballoon_wB;
4223 Cave[y][x-1] = Yballoon_w;
4224 Next[y][x] = Xblank;
4225 Next[y][x-1] = Xballoon;
4233 /* --------------------------------------------------------------------- */
4236 Next[y][x] = Xacid_2;
4240 Next[y][x] = Xacid_3;
4244 Next[y][x] = Xacid_4;
4248 Next[y][x] = Xacid_5;
4252 Next[y][x] = Xacid_6;
4256 Next[y][x] = Xacid_7;
4260 Next[y][x] = Xacid_8;
4264 Next[y][x] = Xacid_1;
4267 /* --------------------------------------------------------------------- */
4270 if (lev.ball_state == 0)
4273 Cave[y][x] = Xball_1B;
4274 Next[y][x] = Xball_2;
4281 if (lev.ball_state == 0)
4284 Cave[y][x] = Xball_2B;
4285 Next[y][x] = Xball_1;
4293 play[SAMPLE_ball] = 1;
4294 if (lev.ball_random)
4299 if (lev.ball_array[lev.ball_pos][0] != Xblank &&
4300 tab_blank[Cave[y-1][x-1]])
4302 Cave[y-1][x-1] = Yball_eat;
4303 Next[y-1][x-1] = lev.ball_array[lev.ball_pos][0];
4308 if (lev.ball_array[lev.ball_pos][1] != Xblank &&
4309 tab_blank[Cave[y-1][x]])
4311 Cave[y-1][x] = Yball_eat;
4312 Next[y-1][x] = lev.ball_array[lev.ball_pos][1];
4317 if (lev.ball_array[lev.ball_pos][2] != Xblank &&
4318 tab_blank[Cave[y-1][x+1]])
4320 Cave[y-1][x+1] = Yball_eat;
4321 Next[y-1][x+1] = lev.ball_array[lev.ball_pos][2];
4326 if (lev.ball_array[lev.ball_pos][3] != Xblank &&
4327 tab_blank[Cave[y][x-1]])
4329 Cave[y][x-1] = Yball_eat;
4330 Next[y][x-1] = lev.ball_array[lev.ball_pos][3];
4335 if (lev.ball_array[lev.ball_pos][4] != Xblank &&
4336 tab_blank[Cave[y][x+1]])
4338 Cave[y][x+1] = Yball_eat;
4339 Next[y][x+1] = lev.ball_array[lev.ball_pos][4];
4344 if (lev.ball_array[lev.ball_pos][5] != Xblank &&
4345 tab_blank[Cave[y+1][x-1]])
4347 Cave[y+1][x-1] = Yball_eat;
4348 Next[y+1][x-1] = lev.ball_array[lev.ball_pos][5];
4353 if (lev.ball_array[lev.ball_pos][6] != Xblank &&
4354 tab_blank[Cave[y+1][x]])
4356 Cave[y+1][x] = Yball_eat;
4357 Next[y+1][x] = lev.ball_array[lev.ball_pos][6];
4362 if (lev.ball_array[lev.ball_pos][7] != Xblank &&
4363 tab_blank[Cave[y+1][x+1]])
4365 Cave[y+1][x+1] = Yball_eat;
4366 Next[y+1][x+1] = lev.ball_array[lev.ball_pos][7];
4373 if (lev.ball_array[lev.ball_pos][0] != Xblank &&
4374 tab_blank[Cave[y-1][x-1]])
4376 Cave[y-1][x-1] = Yball_eat;
4377 Next[y-1][x-1] = lev.ball_array[lev.ball_pos][0];
4380 if (lev.ball_array[lev.ball_pos][1] != Xblank &&
4381 tab_blank[Cave[y-1][x]])
4383 Cave[y-1][x] = Yball_eat;
4384 Next[y-1][x] = lev.ball_array[lev.ball_pos][1];
4387 if (lev.ball_array[lev.ball_pos][2] != Xblank &&
4388 tab_blank[Cave[y-1][x+1]])
4390 Cave[y-1][x+1] = Yball_eat;
4391 Next[y-1][x+1] = lev.ball_array[lev.ball_pos][2];
4394 if (lev.ball_array[lev.ball_pos][3] != Xblank &&
4395 tab_blank[Cave[y][x-1]])
4397 Cave[y][x-1] = Yball_eat;
4398 Next[y][x-1] = lev.ball_array[lev.ball_pos][3];
4401 if (lev.ball_array[lev.ball_pos][4] != Xblank &&
4402 tab_blank[Cave[y][x+1]])
4404 Cave[y][x+1] = Yball_eat;
4405 Next[y][x+1] = lev.ball_array[lev.ball_pos][4];
4408 if (lev.ball_array[lev.ball_pos][5] != Xblank &&
4409 tab_blank[Cave[y+1][x-1]])
4411 Cave[y+1][x-1] = Yball_eat;
4412 Next[y+1][x-1] = lev.ball_array[lev.ball_pos][5];
4415 if (lev.ball_array[lev.ball_pos][6] != Xblank &&
4416 tab_blank[Cave[y+1][x]])
4418 Cave[y+1][x] = Yball_eat;
4419 Next[y+1][x] = lev.ball_array[lev.ball_pos][6];
4422 if (lev.ball_array[lev.ball_pos][7] != Xblank &&
4423 tab_blank[Cave[y+1][x+1]])
4425 Cave[y+1][x+1] = Yball_eat;
4426 Next[y+1][x+1] = lev.ball_array[lev.ball_pos][7];
4430 lev.ball_pos = (lev.ball_pos + 1) & 7;
4433 /* --------------------------------------------------------------------- */
4436 if (tab_blank[Cave[y-1][x]])
4438 Cave[y-1][x] = Ygrow_ns_eat;
4439 Next[y-1][x] = Xgrow_ns;
4440 play[SAMPLE_grow] = 1;
4443 if (tab_blank[Cave[y+1][x]])
4445 Cave[y+1][x] = Ygrow_ns_eat;
4446 Next[y+1][x] = Xgrow_ns;
4447 play[SAMPLE_grow] = 1;
4453 if (tab_blank[Cave[y][x+1]])
4455 Cave[y][x+1] = Ygrow_ew_eat;
4456 Next[y][x+1] = Xgrow_ew;
4457 play[SAMPLE_grow] = 1;
4460 if (tab_blank[Cave[y][x-1]])
4462 Cave[y][x-1] = Ygrow_ew_eat;
4463 Next[y][x-1] = Xgrow_ew;
4464 play[SAMPLE_grow] = 1;
4469 /* --------------------------------------------------------------------- */
4472 if (lev.wonderwall_time && lev.wonderwall_state)
4474 Cave[y][x] = XwonderwallB;
4475 play[SAMPLE_wonder] = 1;
4480 /* --------------------------------------------------------------------- */
4483 if (lev.required > 0)
4489 Cave[y][x] = Xexit_1;
4490 Next[y][x] = Xexit_2;
4494 Cave[y][x] = Xexit_2;
4495 Next[y][x] = Xexit_3;
4499 Cave[y][x] = Xexit_3;
4500 Next[y][x] = Xexit_1;
4506 Next[y][x] = Xexit_2;
4510 Next[y][x] = Xexit_3;
4514 Next[y][x] = Xexit_1;
4517 /* --------------------------------------------------------------------- */
4520 play[SAMPLE_tick] = 1;
4521 Next[y][x] = Xdynamite_2;
4525 play[SAMPLE_tick] = 1;
4526 Next[y][x] = Xdynamite_3;
4530 play[SAMPLE_tick] = 1;
4531 Next[y][x] = Xdynamite_4;
4535 play[SAMPLE_tick] = 1;
4536 Next[y][x] = Zdynamite;
4537 Boom[y-1][x-1] = Xblank;
4538 Boom[y-1][x] = Xblank;
4539 Boom[y-1][x+1] = Xblank;
4540 Boom[y][x-1] = Xblank;
4541 Boom[y][x] = Xblank;
4542 Boom[y][x+1] = Xblank;
4543 Boom[y+1][x-1] = Xblank;
4544 Boom[y+1][x] = Xblank;
4545 Boom[y+1][x+1] = Xblank;
4548 /* --------------------------------------------------------------------- */
4551 if (lev.wheel_cnt && x == lev.wheel_x && y == lev.wheel_y)
4552 Cave[y][x] = XwheelB;
4555 /* --------------------------------------------------------------------- */
4559 Cave[y][x] = XswitchB;
4562 /* --------------------------------------------------------------------- */
4565 switch (Cave[y+1][x])
4575 Cave[y][x] = Xsand_stonesand_3;
4576 if (Cave[y][x+1] == Xblank)
4577 Cave[y][x+1] = Yacid_splash_eB;
4578 if (Cave[y][x-1] == Xblank)
4579 Cave[y][x-1] = Yacid_splash_wB;
4580 Next[y][x] = Xsand_stonesand_4;
4585 case Yacid_splash_eB:
4586 case Yacid_splash_wB:
4587 Cave[y][x] = Xsand_stonesand_3;
4588 Cave[y+1][x] = Xsand_stoneout_1;
4589 Next[y][x] = Xsand_stonesand_4;
4590 Next[y+1][x] = Xsand_stoneout_2;
4594 Cave[y][x] = Xsand_stonesand_1;
4595 Cave[y+1][x] = Xsand_sandstone_1;
4596 Next[y][x] = Xsand_stonesand_2;
4597 Next[y+1][x] = Xsand_sandstone_2;
4604 case Xsand_stonein_1:
4605 Next[y][x] = Xsand_stonein_2;
4608 case Xsand_stonein_2:
4609 Next[y][x] = Xsand_stonein_3;
4612 case Xsand_stonein_3:
4613 Next[y][x] = Xsand_stonein_4;
4616 case Xsand_stonein_4:
4617 Next[y][x] = Xblank;
4620 case Xsand_stonesand_1:
4621 Next[y][x] = Xsand_stonesand_2;
4624 case Xsand_stonesand_2:
4625 Next[y][x] = Xsand_stonesand_3;
4628 case Xsand_stonesand_3:
4629 Next[y][x] = Xsand_stonesand_4;
4632 case Xsand_stonesand_4:
4636 case Xsand_stoneout_1:
4637 Next[y][x] = Xsand_stoneout_2;
4640 case Xsand_stoneout_2:
4641 Next[y][x] = Xstone_fall;
4644 case Xsand_sandstone_1:
4645 Next[y][x] = Xsand_sandstone_2;
4648 case Xsand_sandstone_2:
4649 Next[y][x] = Xsand_sandstone_3;
4652 case Xsand_sandstone_3:
4653 Next[y][x] = Xsand_sandstone_4;
4656 case Xsand_sandstone_4:
4657 Next[y][x] = Xsand_stone;
4660 /* --------------------------------------------------------------------- */
4664 Cave[y][x] = XdripperB;
4667 /* --------------------------------------------------------------------- */
4671 Cave[y][x] = Xfake_blankB;
4674 /* --------------------------------------------------------------------- */
4677 if (lev.magnify_cnt)
4678 Cave[y][x] = Xfake_grassB;
4681 /* --------------------------------------------------------------------- */
4684 if (lev.magnify_cnt)
4685 Cave[y][x] = Xdoor_1;
4689 if (lev.magnify_cnt)
4690 Cave[y][x] = Xdoor_2;
4694 if (lev.magnify_cnt)
4695 Cave[y][x] = Xdoor_3;
4699 if (lev.magnify_cnt)
4700 Cave[y][x] = Xdoor_4;
4704 if (lev.magnify_cnt)
4705 Cave[y][x] = Xdoor_5;
4709 if (lev.magnify_cnt)
4710 Cave[y][x] = Xdoor_6;
4714 if (lev.magnify_cnt)
4715 Cave[y][x] = Xdoor_7;
4719 if (lev.magnify_cnt)
4720 Cave[y][x] = Xdoor_8;
4723 /* --------------------------------------------------------------------- */
4727 Next[y][x] = Znormal;
4728 Boom[y-1][x-1] = Xemerald;
4729 Boom[y-1][x] = Xemerald;
4730 Boom[y-1][x+1] = Xemerald;
4731 Boom[y][x-1] = Xemerald;
4732 Boom[y][x] = Xdiamond;
4733 Boom[y][x+1] = Xemerald;
4734 Boom[y+1][x-1] = Xemerald;
4735 Boom[y+1][x] = Xemerald;
4736 Boom[y+1][x+1] = Xemerald;
4743 Next[y][x] = Znormal;
4744 Boom[y-1][x-1] = Xblank;
4745 Boom[y-1][x] = Xblank;
4746 Boom[y-1][x+1] = Xblank;
4747 Boom[y][x-1] = Xblank;
4748 Boom[y][x] = Xblank;
4749 Boom[y][x+1] = Xblank;
4750 Boom[y+1][x-1] = Xblank;
4751 Boom[y+1][x] = Xblank;
4752 Boom[y+1][x+1] = Xblank;
4757 Next[y][x] = Xboom_2;
4758 play[SAMPLE_boom] = 1;
4762 Next[y][x] = Boom[y][x];
4765 /* --------------------------------------------------------------------- */
4768 if (++y < HEIGHT - 1)
4771 cave_cache = Cave[y];
4784 if (ply1.alive || ply2.alive)
4785 lev.score += score; /* only get a score if someone is alive */
4792 /* triple buffering */