2 /* second part of synchro.
4 * game logic for monsters.
6 * one giant switch statement to process everything.
8 * this whole thing is a major bottleneck. the compiler must use registers. compilers suck.
16 extern unsigned int screen_x;
17 extern unsigned int screen_y;
21 register unsigned int x = 0;
22 register unsigned int y = 1;
23 register unsigned long random = Random;
24 register unsigned short *cave_cache = Cave[y]; /* might be a win */
25 unsigned long score = 0;
27 unsigned int temp = 0; /* initialized to make compilers happy */
28 unsigned int left = screen_x / TILEX; /* only needed for sounds */
29 unsigned int top = screen_y / TILEY;
30 unsigned int dx; /* only needed to find closest player */
33 #define RANDOM (random = random << 31 | random >> 1)
34 #define PLAY(sample) { if((unsigned int)(y - top) <= 12 && (unsigned int)(x - left) <= 20) play[sample] = 1; }
37 switch(cave_cache[++x]) {
40 /* ---------------------------------------------------------------------- */
43 switch(Cave[y][x+1]) {
56 Cave[y][x] = Ystone_eB;
57 Cave[y][x+1] = Ystone_e;
59 Next[y][x+1] = Xstone_pause;
63 switch(Cave[y][x-1]) {
76 Cave[y][x] = Ystone_wB;
77 Cave[y][x-1] = Ystone_w;
79 Next[y][x-1] = Xstone_pause;
83 switch(Cave[y][x+1]) {
97 Cave[y][x+1] = Ynut_e;
99 Next[y][x+1] = Xnut_pause;
103 switch(Cave[y][x-1]) {
116 Cave[y][x] = Ynut_wB;
117 Cave[y][x-1] = Ynut_w;
119 Next[y][x-1] = Xnut_pause;
122 case Xspring_force_e:
123 switch(Cave[y][x+1]) {
132 Cave[y][x] = Xspring;
133 Next[y][x] = Xspring;
136 Cave[y][x] = Yspring_eB;
137 Cave[y][x+1] = Yspring_e;
140 Next[y][x+1] = Xspring_e;
142 Next[y][x+1] = Xspring_pause;
146 case Xspring_force_w:
147 switch(Cave[y][x-1]) {
156 Cave[y][x] = Xspring;
157 Next[y][x] = Xspring;
160 Cave[y][x] = Yspring_wB;
161 Cave[y][x-1] = Yspring_w;
164 Next[y][x-1] = Xspring_w;
166 Next[y][x-1] = Xspring_pause;
170 case Xemerald_force_e:
171 switch(Cave[y][x+1]) {
180 Cave[y][x] = Xemerald;
181 Next[y][x] = Xemerald;
184 Cave[y][x] = Yemerald_eB;
185 Cave[y][x+1] = Yemerald_e;
187 Next[y][x+1] = Xemerald_pause;
190 case Xemerald_force_w:
191 switch(Cave[y][x-1]) {
200 Cave[y][x] = Xemerald;
201 Next[y][x] = Xemerald;
204 Cave[y][x] = Yemerald_wB;
205 Cave[y][x-1] = Yemerald_w;
207 Next[y][x-1] = Xemerald_pause;
210 case Xdiamond_force_e:
211 switch(Cave[y][x+1]) {
220 Cave[y][x] = Xdiamond;
221 Next[y][x] = Xdiamond;
224 Cave[y][x] = Ydiamond_eB;
225 Cave[y][x+1] = Ydiamond_e;
227 Next[y][x+1] = Xdiamond_pause;
230 case Xdiamond_force_w:
231 switch(Cave[y][x-1]) {
240 Cave[y][x] = Xdiamond;
241 Next[y][x] = Xdiamond;
244 Cave[y][x] = Ydiamond_wB;
245 Cave[y][x-1] = Ydiamond_w;
247 Next[y][x-1] = Xdiamond_pause;
251 switch(Cave[y][x+1]) {
264 Cave[y][x] = Ybomb_eB;
265 Cave[y][x+1] = Ybomb_e;
267 Next[y][x+1] = Xbomb_pause;
271 switch(Cave[y][x-1]) {
284 Cave[y][x] = Ybomb_wB;
285 Cave[y][x-1] = Ybomb_w;
287 Next[y][x-1] = Xbomb_pause;
291 /* ---------------------------------------------------------------------- */
293 switch(Cave[y+1][x]) {
302 Cave[y][x] = Ystone_sB;
303 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
304 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
309 case Yacid_splash_eB:
310 case Yacid_splash_wB:
313 Cave[y][x] = Ystone_sB;
314 Cave[y+1][x] = Ystone_s;
316 Next[y+1][x] = Xstone_fall;
319 Cave[y][x] = Xsand_stonein_1;
320 Cave[y+1][x] = Xsand_sandstone_1;
321 Next[y][x] = Xsand_stonein_2;
322 Next[y+1][x] = Xsand_sandstone_2;
371 if(tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]]) {
372 Cave[y][x] = Ystone_eB;
373 Cave[y][x+1] = Ystone_e;
375 Next[y][x+1] = Xstone_pause;
378 if(tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]]) {
379 Cave[y][x] = Ystone_wB;
380 Cave[y][x-1] = Ystone_w;
382 Next[y][x-1] = Xstone_pause;
386 if(tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]]) {
387 Cave[y][x] = Ystone_wB;
388 Cave[y][x-1] = Ystone_w;
390 Next[y][x-1] = Xstone_pause;
393 if(tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]]) {
394 Cave[y][x] = Ystone_eB;
395 Cave[y][x+1] = Ystone_e;
397 Next[y][x+1] = Xstone_pause;
404 /* ---------------------------------------------------------------------- */
406 switch(Cave[y+1][x]) {
415 Cave[y][x] = Ystone_sB;
416 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
417 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
422 case Yacid_splash_eB:
423 case Yacid_splash_wB:
424 Cave[y][x] = Ystone_sB;
425 Cave[y+1][x] = Ystone_s;
427 Next[y+1][x] = Xstone_fall;
434 /* ---------------------------------------------------------------------- */
436 switch(Cave[y+1][x]) {
445 Cave[y][x] = Ystone_sB;
446 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
447 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
452 case Yacid_splash_eB:
453 case Yacid_splash_wB:
455 Cave[y][x] = Ystone_sB;
456 Cave[y+1][x] = Ystone_s;
458 Next[y+1][x] = Xstone_fall;
462 Cave[y+1][x] = Yemerald_stone;
464 Next[y+1][x] = Xemerald;
465 play[SAMPLE_crack] = 1;
466 score += lev.nut_score;
476 Cave[y][x] = Ystone_sB;
477 Cave[y+1][x] = Ybug_stone;
478 Next[y+1][x] = Znormal;
479 Boom[y][x-1] = Xemerald;
480 Boom[y][x] = Xemerald;
481 Boom[y][x+1] = Xemerald;
482 Boom[y+1][x-1] = Xemerald;
483 Boom[y+1][x] = Xdiamond;
484 Boom[y+1][x+1] = Xemerald;
485 Boom[y+2][x-1] = Xemerald;
486 Boom[y+2][x] = Xemerald;
487 Boom[y+2][x+1] = Xemerald;
488 score += lev.bug_score;
498 Cave[y][x] = Ystone_sB;
499 Cave[y+1][x] = Ytank_stone;
500 Next[y+1][x] = Znormal;
501 Boom[y][x-1] = Xblank;
503 Boom[y][x+1] = Xblank;
504 Boom[y+1][x-1] = Xblank;
505 Boom[y+1][x] = Xblank;
506 Boom[y+1][x+1] = Xblank;
507 Boom[y+2][x-1] = Xblank;
508 Boom[y+2][x] = Xblank;
509 Boom[y+2][x+1] = Xblank;
510 score += lev.tank_score;
514 switch(Cave[y+1][x+1]) {
516 case Yacid_splash_eB:
517 case Yacid_splash_wB:
520 Cave[y+1][x] = Xspring_e; break;
522 Cave[y+1][x] = Xspring_w; break;
525 switch(Cave[y+1][x-1]) {
527 case Yacid_splash_eB:
528 case Yacid_splash_wB:
531 Cave[y+1][x] = Xspring_w; break;
533 Cave[y+1][x] = Xspring_e; break;
542 Cave[y][x] = Ystone_sB;
543 Cave[y+1][x] = Yeater_stone;
544 Next[y+1][x] = Znormal;
545 Boom[y][x-1] = lev.eater_array[lev.eater_pos][0];
546 Boom[y][x] = lev.eater_array[lev.eater_pos][1];
547 Boom[y][x+1] = lev.eater_array[lev.eater_pos][2];
548 Boom[y+1][x-1] = lev.eater_array[lev.eater_pos][3];
549 Boom[y+1][x] = lev.eater_array[lev.eater_pos][4];
550 Boom[y+1][x+1] = lev.eater_array[lev.eater_pos][5];
551 Boom[y+2][x-1] = lev.eater_array[lev.eater_pos][6];
552 Boom[y+2][x] = lev.eater_array[lev.eater_pos][7];
553 Boom[y+2][x+1] = lev.eater_array[lev.eater_pos][8];
554 lev.eater_pos = (lev.eater_pos + 1) & 7;
555 score += lev.eater_score;
559 Cave[y][x] = Ystone_sB;
560 Cave[y+1][x] = Yalien_stone;
561 Next[y+1][x] = Znormal;
562 Boom[y][x-1] = Xblank;
564 Boom[y][x+1] = Xblank;
565 Boom[y+1][x-1] = Xblank;
566 Boom[y+1][x] = Xblank;
567 Boom[y+1][x+1] = Xblank;
568 Boom[y+2][x-1] = Xblank;
569 Boom[y+2][x] = Xblank;
570 Boom[y+2][x+1] = Xblank;
571 score += lev.alien_score;
575 switch(Cave[y+2][x]) {
577 case Yacid_splash_eB:
578 case Yacid_splash_wB:
626 Cave[y][x] = Ystone_sB;
627 Cave[y+1][x] = Ydiamond_stone;
629 Next[y+1][x] = Xstone_pause;
630 play[SAMPLE_squash] = 1;
634 Cave[y+1][x] = Ybomb_eat;
635 Next[y+1][x] = Znormal;
636 Boom[y][x-1] = Xblank;
638 Boom[y][x+1] = Xblank;
639 Boom[y+1][x-1] = Xblank;
640 Boom[y+1][x] = Xblank;
641 Boom[y+1][x+1] = Xblank;
642 Boom[y+2][x-1] = Xblank;
643 Boom[y+2][x] = Xblank;
644 Boom[y+2][x+1] = Xblank;
647 if(lev.wonderwall_time) {
648 lev.wonderwall_state = 1;
649 Cave[y][x] = Ystone_sB;
650 if(tab_blank[Cave[y+2][x]]) {
651 Cave[y+2][x] = Yemerald_s;
652 Next[y+2][x] = Xemerald_fall;
655 play[SAMPLE_squash] = 1;
664 /* ---------------------------------------------------------------------- */
666 switch(Cave[y+1][x]) {
675 Cave[y][x] = Ynut_sB;
676 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
677 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
682 case Yacid_splash_eB:
683 case Yacid_splash_wB:
684 Cave[y][x] = Ynut_sB;
685 Cave[y+1][x] = Ynut_s;
687 Next[y+1][x] = Xnut_fall;
734 if(tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]]) {
735 Cave[y][x] = Ynut_eB;
736 Cave[y][x+1] = Ynut_e;
738 Next[y][x+1] = Xnut_pause;
741 if(tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]]) {
742 Cave[y][x] = Ynut_wB;
743 Cave[y][x-1] = Ynut_w;
745 Next[y][x-1] = Xnut_pause;
749 if(tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]]) {
750 Cave[y][x] = Ynut_wB;
751 Cave[y][x-1] = Ynut_w;
753 Next[y][x-1] = Xnut_pause;
756 if(tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]]) {
757 Cave[y][x] = Ynut_eB;
758 Cave[y][x+1] = Ynut_e;
760 Next[y][x+1] = Xnut_pause;
767 /* ---------------------------------------------------------------------- */
769 switch(Cave[y+1][x]) {
778 Cave[y][x] = Ynut_sB;
779 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
780 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
785 case Yacid_splash_eB:
786 case Yacid_splash_wB:
787 Cave[y][x] = Ynut_sB;
788 Cave[y+1][x] = Ynut_s;
790 Next[y+1][x] = Xnut_fall;
797 /* ---------------------------------------------------------------------- */
799 switch(Cave[y+1][x]) {
808 Cave[y][x] = Ynut_sB;
809 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
810 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
815 case Yacid_splash_eB:
816 case Yacid_splash_wB:
818 Cave[y][x] = Ynut_sB;
819 Cave[y+1][x] = Ynut_s;
821 Next[y+1][x] = Xnut_fall;
829 /* ---------------------------------------------------------------------- */
831 if(tab_ameuba[Cave[y-1][x]] || tab_ameuba[Cave[y][x+1]] || tab_ameuba[Cave[y+1][x]] || tab_ameuba[Cave[y][x-1]]) goto bug_boom;
832 switch(Cave[y][x+1]) {
834 case Yacid_splash_eB:
835 case Yacid_splash_wB:
847 Cave[y][x] = Ybug_n_e;
848 Next[y][x] = Xbug_goe;
855 if(tab_ameuba[Cave[y-1][x]] || tab_ameuba[Cave[y][x+1]] || tab_ameuba[Cave[y+1][x]] || tab_ameuba[Cave[y][x-1]]) goto bug_boom;
857 switch(Cave[y-1][x]) {
866 Cave[y][x] = Ybug_nB;
867 if(Cave[y-2][x+1] == Xblank) Cave[y-2][x+1] = Yacid_splash_eB;
868 if(Cave[y-2][x-1] == Xblank) Cave[y-2][x-1] = Yacid_splash_wB;
873 case Yacid_splash_eB:
874 case Yacid_splash_wB:
878 Cave[y][x] = Ybug_nB;
879 Cave[y-1][x] = Ybug_n;
881 Next[y-1][x] = Xbug_n;
885 Cave[y][x] = Ybug_n_w;
886 Next[y][x] = Xbug_gow;
890 /* ---------------------------------------------------------------------- */
892 if(tab_ameuba[Cave[y-1][x]] || tab_ameuba[Cave[y][x+1]] || tab_ameuba[Cave[y+1][x]] || tab_ameuba[Cave[y][x-1]]) goto bug_boom;
893 switch(Cave[y+1][x]) {
895 case Yacid_splash_eB:
896 case Yacid_splash_wB:
908 Cave[y][x] = Ybug_e_s;
909 Next[y][x] = Xbug_gos;
916 if(tab_ameuba[Cave[y-1][x]] || tab_ameuba[Cave[y][x+1]] || tab_ameuba[Cave[y+1][x]] || tab_ameuba[Cave[y][x-1]]) goto bug_boom;
918 switch(Cave[y][x+1]) {
927 Cave[y][x] = Ybug_eB;
928 if(Cave[y-1][x+2] == Xblank) Cave[y-1][x+2] = Yacid_splash_eB;
929 if(Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_wB;
934 case Yacid_splash_eB:
935 case Yacid_splash_wB:
939 Cave[y][x] = Ybug_eB;
940 Cave[y][x+1] = Ybug_e;
942 Next[y][x+1] = Xbug_e;
946 Cave[y][x] = Ybug_e_n;
947 Next[y][x] = Xbug_gon;
951 /* ---------------------------------------------------------------------- */
953 if(tab_ameuba[Cave[y-1][x]] || tab_ameuba[Cave[y][x+1]] || tab_ameuba[Cave[y+1][x]] || tab_ameuba[Cave[y][x-1]]) goto bug_boom;
954 switch(Cave[y][x-1]) {
956 case Yacid_splash_eB:
957 case Yacid_splash_wB:
969 Cave[y][x] = Ybug_s_w;
970 Next[y][x] = Xbug_gow;
977 if(tab_ameuba[Cave[y-1][x]] || tab_ameuba[Cave[y][x+1]] || tab_ameuba[Cave[y+1][x]] || tab_ameuba[Cave[y][x-1]]) goto bug_boom;
979 switch(Cave[y+1][x]) {
988 Cave[y][x] = Ybug_sB;
989 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
990 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
995 case Yacid_splash_eB:
996 case Yacid_splash_wB:
1000 Cave[y][x] = Ybug_sB;
1001 Cave[y+1][x] = Ybug_s;
1002 Next[y][x] = Xblank;
1003 Next[y+1][x] = Xbug_s;
1007 Cave[y][x] = Ybug_s_e;
1008 Next[y][x] = Xbug_goe;
1012 /* ---------------------------------------------------------------------- */
1014 if(tab_ameuba[Cave[y-1][x]] || tab_ameuba[Cave[y][x+1]] || tab_ameuba[Cave[y+1][x]] || tab_ameuba[Cave[y][x-1]]) goto bug_boom;
1015 switch(Cave[y-1][x]) {
1017 case Yacid_splash_eB:
1018 case Yacid_splash_wB:
1030 Cave[y][x] = Ybug_w_n;
1031 Next[y][x] = Xbug_gon;
1038 if(tab_ameuba[Cave[y-1][x]] || tab_ameuba[Cave[y][x+1]] || tab_ameuba[Cave[y+1][x]] || tab_ameuba[Cave[y][x-1]]) goto bug_boom;
1040 switch(Cave[y][x-1]) {
1049 Cave[y][x] = Ybug_wB;
1050 if(Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_eB;
1051 if(Cave[y-1][x-2] == Xblank) Cave[y-1][x-2] = Yacid_splash_wB;
1052 Next[y][x] = Xblank;
1056 case Yacid_splash_eB:
1057 case Yacid_splash_wB:
1061 Cave[y][x] = Ybug_wB;
1062 Cave[y][x-1] = Ybug_w;
1063 Next[y][x] = Xblank;
1064 Next[y][x-1] = Xbug_w;
1068 Cave[y][x] = Ybug_w_s;
1069 Next[y][x] = Xbug_gos;
1073 /* ---------------------------------------------------------------------- */
1075 if(tab_ameuba[Cave[y-1][x]] || tab_ameuba[Cave[y][x+1]] || tab_ameuba[Cave[y+1][x]] || tab_ameuba[Cave[y][x-1]]) goto tank_boom;
1076 switch(Cave[y][x-1]) {
1078 case Yacid_splash_eB:
1079 case Yacid_splash_wB:
1091 Cave[y][x] = Ytank_n_w;
1092 Next[y][x] = Xtank_gow;
1099 if(tab_ameuba[Cave[y-1][x]] || tab_ameuba[Cave[y][x+1]] || tab_ameuba[Cave[y+1][x]] || tab_ameuba[Cave[y][x-1]]) goto tank_boom;
1101 switch(Cave[y-1][x]) {
1110 Cave[y][x] = Ytank_nB;
1111 if(Cave[y-2][x+1] == Xblank) Cave[y-2][x+1] = Yacid_splash_eB;
1112 if(Cave[y-2][x-1] == Xblank) Cave[y-2][x-1] = Yacid_splash_wB;
1113 Next[y][x] = Xblank;
1117 case Yacid_splash_eB:
1118 case Yacid_splash_wB:
1122 Cave[y][x] = Ytank_nB;
1123 Cave[y-1][x] = Ytank_n;
1124 Next[y][x] = Xblank;
1125 Next[y-1][x] = Xtank_n;
1129 Cave[y][x] = Ytank_n_e;
1130 Next[y][x] = Xtank_goe;
1134 /* ---------------------------------------------------------------------- */
1136 if(tab_ameuba[Cave[y-1][x]] || tab_ameuba[Cave[y][x+1]] || tab_ameuba[Cave[y+1][x]] || tab_ameuba[Cave[y][x-1]]) goto tank_boom;
1137 switch(Cave[y-1][x]) {
1139 case Yacid_splash_eB:
1140 case Yacid_splash_wB:
1152 Cave[y][x] = Ytank_e_n;
1153 Next[y][x] = Xtank_gon;
1160 if(tab_ameuba[Cave[y-1][x]] || tab_ameuba[Cave[y][x+1]] || tab_ameuba[Cave[y+1][x]] || tab_ameuba[Cave[y][x-1]]) goto tank_boom;
1162 switch(Cave[y][x+1]) {
1171 Cave[y][x] = Ytank_eB;
1172 if(Cave[y-1][x+2] == Xblank) Cave[y-1][x+2] = Yacid_splash_eB;
1173 if(Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_wB;
1174 Next[y][x] = Xblank;
1178 case Yacid_splash_eB:
1179 case Yacid_splash_wB:
1183 Cave[y][x] = Ytank_eB;
1184 Cave[y][x+1] = Ytank_e;
1185 Next[y][x] = Xblank;
1186 Next[y][x+1] = Xtank_e;
1190 Cave[y][x] = Ytank_e_s;
1191 Next[y][x] = Xtank_gos;
1195 /* ---------------------------------------------------------------------- */
1197 if(tab_ameuba[Cave[y-1][x]] || tab_ameuba[Cave[y][x+1]] || tab_ameuba[Cave[y+1][x]] || tab_ameuba[Cave[y][x-1]]) goto tank_boom;
1198 switch(Cave[y][x+1]) {
1200 case Yacid_splash_eB:
1201 case Yacid_splash_wB:
1213 Cave[y][x] = Ytank_s_e;
1214 Next[y][x] = Xtank_goe;
1221 if(tab_ameuba[Cave[y-1][x]] || tab_ameuba[Cave[y][x+1]] || tab_ameuba[Cave[y+1][x]] || tab_ameuba[Cave[y][x-1]]) goto tank_boom;
1223 switch(Cave[y+1][x]) {
1232 Cave[y][x] = Ytank_sB;
1233 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
1234 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
1235 Next[y][x] = Xblank;
1239 case Yacid_splash_eB:
1240 case Yacid_splash_wB:
1244 Cave[y][x] = Ytank_sB;
1245 Cave[y+1][x] = Ytank_s;
1246 Next[y][x] = Xblank;
1247 Next[y+1][x] = Xtank_s;
1251 Cave[y][x] = Ytank_s_w;
1252 Next[y][x] = Xtank_gow;
1256 /* ---------------------------------------------------------------------- */
1258 if(tab_ameuba[Cave[y-1][x]] || tab_ameuba[Cave[y][x+1]] || tab_ameuba[Cave[y+1][x]] || tab_ameuba[Cave[y][x-1]]) goto tank_boom;
1259 switch(Cave[y+1][x]) {
1261 case Yacid_splash_eB:
1262 case Yacid_splash_wB:
1274 Cave[y][x] = Ytank_w_s;
1275 Next[y][x] = Xtank_gos;
1282 if(tab_ameuba[Cave[y-1][x]] || tab_ameuba[Cave[y][x+1]] || tab_ameuba[Cave[y+1][x]] || tab_ameuba[Cave[y][x-1]]) goto tank_boom;
1284 switch(Cave[y][x-1]) {
1293 Cave[y][x] = Ytank_wB;
1294 if(Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_eB;
1295 if(Cave[y-1][x-2] == Xblank) Cave[y-1][x-2] = Yacid_splash_wB;
1296 Next[y][x] = Xblank;
1300 case Yacid_splash_eB:
1301 case Yacid_splash_wB:
1305 Cave[y][x] = Ytank_wB;
1306 Cave[y][x-1] = Ytank_w;
1307 Next[y][x] = Xblank;
1308 Next[y][x-1] = Xtank_w;
1312 Cave[y][x] = Ytank_w_n;
1313 Next[y][x] = Xtank_gon;
1317 /* ---------------------------------------------------------------------- */
1320 if(lev.android_clone_cnt == 0) {
1321 if(Cave[y-1][x-1] != Xblank && Cave[y-1][x] != Xblank &&
1322 Cave[y-1][x+1] != Xblank && Cave[y][x-1] != Xblank &&
1323 Cave[y][x+1] != Xblank && Cave[y+1][x-1] != Xblank &&
1324 Cave[y+1][x] != Xblank && Cave[y+1][x+1] != Xblank) goto android_move;
1326 switch(RANDOM & 7) { /* randomly find an object to clone */
1327 case 0: /* S,NE,W,NW,SE,E,SW,N */
1328 temp = lev.android_array[Cave[y+1][x]]; if(temp != Xblank) break;
1329 temp = lev.android_array[Cave[y-1][x+1]]; if(temp != Xblank) break;
1330 temp = lev.android_array[Cave[y][x-1]]; if(temp != Xblank) break;
1331 temp = lev.android_array[Cave[y-1][x-1]]; if(temp != Xblank) break;
1332 temp = lev.android_array[Cave[y+1][x+1]]; if(temp != Xblank) break;
1333 temp = lev.android_array[Cave[y][x+1]]; if(temp != Xblank) break;
1334 temp = lev.android_array[Cave[y+1][x-1]]; if(temp != Xblank) break;
1335 temp = lev.android_array[Cave[y-1][x]]; if(temp != Xblank) break;
1337 case 1: /* NW,SE,N,S,NE,SW,E,W */
1338 temp = lev.android_array[Cave[y-1][x-1]]; if(temp != Xblank) break;
1339 temp = lev.android_array[Cave[y+1][x+1]]; if(temp != Xblank) break;
1340 temp = lev.android_array[Cave[y-1][x]]; if(temp != Xblank) break;
1341 temp = lev.android_array[Cave[y+1][x]]; if(temp != Xblank) break;
1342 temp = lev.android_array[Cave[y-1][x+1]]; if(temp != Xblank) break;
1343 temp = lev.android_array[Cave[y+1][x-1]]; if(temp != Xblank) break;
1344 temp = lev.android_array[Cave[y][x+1]]; if(temp != Xblank) break;
1345 temp = lev.android_array[Cave[y][x-1]]; if(temp != Xblank) break;
1347 case 2: /* SW,E,S,W,N,NW,SE,NE */
1348 temp = lev.android_array[Cave[y+1][x-1]]; if(temp != Xblank) break;
1349 temp = lev.android_array[Cave[y][x+1]]; if(temp != Xblank) break;
1350 temp = lev.android_array[Cave[y+1][x]]; if(temp != Xblank) break;
1351 temp = lev.android_array[Cave[y][x-1]]; if(temp != Xblank) break;
1352 temp = lev.android_array[Cave[y-1][x]]; if(temp != Xblank) break;
1353 temp = lev.android_array[Cave[y-1][x-1]]; if(temp != Xblank) break;
1354 temp = lev.android_array[Cave[y+1][x+1]]; if(temp != Xblank) break;
1355 temp = lev.android_array[Cave[y-1][x+1]]; if(temp != Xblank) break;
1357 case 3: /* N,SE,NE,E,W,S,NW,SW */
1358 temp = lev.android_array[Cave[y-1][x]]; if(temp != Xblank) break;
1359 temp = lev.android_array[Cave[y+1][x+1]]; if(temp != Xblank) break;
1360 temp = lev.android_array[Cave[y-1][x+1]]; if(temp != Xblank) break;
1361 temp = lev.android_array[Cave[y][x+1]]; if(temp != Xblank) break;
1362 temp = lev.android_array[Cave[y][x-1]]; if(temp != Xblank) break;
1363 temp = lev.android_array[Cave[y+1][x]]; if(temp != Xblank) break;
1364 temp = lev.android_array[Cave[y-1][x-1]]; if(temp != Xblank) break;
1365 temp = lev.android_array[Cave[y+1][x-1]]; if(temp != Xblank) break;
1367 case 4: /* SE,NW,E,NE,SW,W,N,S */
1368 temp = lev.android_array[Cave[y+1][x+1]]; if(temp != Xblank) break;
1369 temp = lev.android_array[Cave[y-1][x-1]]; if(temp != Xblank) break;
1370 temp = lev.android_array[Cave[y][x+1]]; if(temp != Xblank) break;
1371 temp = lev.android_array[Cave[y-1][x+1]]; if(temp != Xblank) break;
1372 temp = lev.android_array[Cave[y+1][x-1]]; if(temp != Xblank) break;
1373 temp = lev.android_array[Cave[y][x-1]]; if(temp != Xblank) break;
1374 temp = lev.android_array[Cave[y-1][x]]; if(temp != Xblank) break;
1375 temp = lev.android_array[Cave[y+1][x]]; if(temp != Xblank) break;
1377 case 5: /* NE,W,SE,SW,S,N,E,NW */
1378 temp = lev.android_array[Cave[y-1][x+1]]; if(temp != Xblank) break;
1379 temp = lev.android_array[Cave[y][x-1]]; if(temp != Xblank) break;
1380 temp = lev.android_array[Cave[y+1][x+1]]; if(temp != Xblank) break;
1381 temp = lev.android_array[Cave[y+1][x-1]]; if(temp != Xblank) break;
1382 temp = lev.android_array[Cave[y+1][x]]; if(temp != Xblank) break;
1383 temp = lev.android_array[Cave[y-1][x]]; if(temp != Xblank) break;
1384 temp = lev.android_array[Cave[y][x+1]]; if(temp != Xblank) break;
1385 temp = lev.android_array[Cave[y-1][x-1]]; if(temp != Xblank) break;
1387 case 6: /* E,N,SW,S,NW,NE,SE,W */
1388 temp = lev.android_array[Cave[y][x+1]]; if(temp != Xblank) break;
1389 temp = lev.android_array[Cave[y-1][x]]; if(temp != Xblank) break;
1390 temp = lev.android_array[Cave[y+1][x-1]]; if(temp != Xblank) break;
1391 temp = lev.android_array[Cave[y+1][x]]; if(temp != Xblank) break;
1392 temp = lev.android_array[Cave[y-1][x-1]]; if(temp != Xblank) break;
1393 temp = lev.android_array[Cave[y-1][x+1]]; if(temp != Xblank) break;
1394 temp = lev.android_array[Cave[y+1][x+1]]; if(temp != Xblank) break;
1395 temp = lev.android_array[Cave[y][x-1]]; if(temp != Xblank) break;
1397 case 7: /* W,SW,NW,N,E,SE,NE,S */
1398 temp = lev.android_array[Cave[y][x-1]]; if(temp != Xblank) break;
1399 temp = lev.android_array[Cave[y+1][x-1]]; if(temp != Xblank) break;
1400 temp = lev.android_array[Cave[y-1][x-1]]; if(temp != Xblank) break;
1401 temp = lev.android_array[Cave[y-1][x]]; if(temp != Xblank) break;
1402 temp = lev.android_array[Cave[y][x+1]]; if(temp != Xblank) break;
1403 temp = lev.android_array[Cave[y+1][x+1]]; if(temp != Xblank) break;
1404 temp = lev.android_array[Cave[y-1][x+1]]; if(temp != Xblank) break;
1405 temp = lev.android_array[Cave[y+1][x]]; if(temp != Xblank) break;
1408 Next[y][x] = temp; /* the item we chose to clone */
1409 play[SAMPLE_android] = 1;
1410 switch(RANDOM & 7) { /* randomly find a direction to move */
1411 case 0: /* S,NE,W,NW,SE,E,SW,N */
1412 if(Cave[y+1][x] == Xblank) goto android_s;
1413 if(Cave[y-1][x+1] == Xblank) goto android_ne;
1414 if(Cave[y][x-1] == Xblank) goto android_w;
1415 if(Cave[y-1][x-1] == Xblank) goto android_nw;
1416 if(Cave[y+1][x+1] == Xblank) goto android_se;
1417 if(Cave[y][x+1] == Xblank) goto android_e;
1418 if(Cave[y+1][x-1] == Xblank) goto android_sw;
1419 if(Cave[y-1][x] == Xblank) goto android_n;
1421 case 1: /* NW,SE,N,S,NE,SW,E,W */
1422 if(Cave[y-1][x-1] == Xblank) goto android_nw;
1423 if(Cave[y+1][x+1] == Xblank) goto android_se;
1424 if(Cave[y-1][x] == Xblank) goto android_n;
1425 if(Cave[y+1][x] == Xblank) goto android_s;
1426 if(Cave[y-1][x+1] == Xblank) goto android_ne;
1427 if(Cave[y+1][x-1] == Xblank) goto android_sw;
1428 if(Cave[y][x+1] == Xblank) goto android_e;
1429 if(Cave[y][x-1] == Xblank) goto android_w;
1431 case 2: /* SW,E,S,W,N,NW,SE,NE */
1432 if(Cave[y+1][x-1] == Xblank) goto android_sw;
1433 if(Cave[y][x+1] == Xblank) goto android_e;
1434 if(Cave[y+1][x] == Xblank) goto android_s;
1435 if(Cave[y][x-1] == Xblank) goto android_w;
1436 if(Cave[y-1][x] == Xblank) goto android_n;
1437 if(Cave[y-1][x-1] == Xblank) goto android_nw;
1438 if(Cave[y+1][x+1] == Xblank) goto android_se;
1439 if(Cave[y-1][x+1] == Xblank) goto android_ne;
1441 case 3: /* N,SE,NE,E,W,S,NW,SW */
1442 if(Cave[y-1][x] == Xblank) goto android_n;
1443 if(Cave[y+1][x+1] == Xblank) goto android_se;
1444 if(Cave[y-1][x+1] == Xblank) goto android_ne;
1445 if(Cave[y][x+1] == Xblank) goto android_e;
1446 if(Cave[y][x-1] == Xblank) goto android_w;
1447 if(Cave[y+1][x] == Xblank) goto android_s;
1448 if(Cave[y-1][x-1] == Xblank) goto android_nw;
1449 if(Cave[y+1][x-1] == Xblank) goto android_sw;
1451 case 4: /* SE,NW,E,NE,SW,W,N,S */
1452 if(Cave[y+1][x+1] == Xblank) goto android_se;
1453 if(Cave[y-1][x-1] == Xblank) goto android_nw;
1454 if(Cave[y][x+1] == Xblank) goto android_e;
1455 if(Cave[y-1][x+1] == Xblank) goto android_ne;
1456 if(Cave[y+1][x-1] == Xblank) goto android_sw;
1457 if(Cave[y][x-1] == Xblank) goto android_w;
1458 if(Cave[y-1][x] == Xblank) goto android_n;
1459 if(Cave[y+1][x] == Xblank) goto android_s;
1461 case 5: /* NE,W,SE,SW,S,N,E,NW */
1462 if(Cave[y-1][x+1] == Xblank) goto android_ne;
1463 if(Cave[y][x-1] == Xblank) goto android_w;
1464 if(Cave[y+1][x+1] == Xblank) goto android_se;
1465 if(Cave[y+1][x-1] == Xblank) goto android_sw;
1466 if(Cave[y+1][x] == Xblank) goto android_s;
1467 if(Cave[y-1][x] == Xblank) goto android_n;
1468 if(Cave[y][x+1] == Xblank) goto android_e;
1469 if(Cave[y-1][x-1] == Xblank) goto android_nw;
1471 case 6: /* E,N,SW,S,NW,NE,SE,W */
1472 if(Cave[y][x+1] == Xblank) goto android_e;
1473 if(Cave[y-1][x] == Xblank) goto android_n;
1474 if(Cave[y+1][x-1] == Xblank) goto android_sw;
1475 if(Cave[y+1][x] == Xblank) goto android_s;
1476 if(Cave[y-1][x-1] == Xblank) goto android_nw;
1477 if(Cave[y-1][x+1] == Xblank) goto android_ne;
1478 if(Cave[y+1][x+1] == Xblank) goto android_se;
1479 if(Cave[y][x-1] == Xblank) goto android_w;
1481 case 7: /* W,SW,NW,N,E,SE,NE,S */
1482 if(Cave[y][x-1] == Xblank) goto android_w;
1483 if(Cave[y+1][x-1] == Xblank) goto android_sw;
1484 if(Cave[y-1][x-1] == Xblank) goto android_nw;
1485 if(Cave[y-1][x] == Xblank) goto android_n;
1486 if(Cave[y][x+1] == Xblank) goto android_e;
1487 if(Cave[y+1][x+1] == Xblank) goto android_se;
1488 if(Cave[y-1][x+1] == Xblank) goto android_ne;
1489 if(Cave[y+1][x] == Xblank) goto android_s;
1494 if(lev.android_move_cnt == 0) {
1495 if(Cave[y-1][x-1] == Zplayer || Cave[y-1][x] == Zplayer ||
1496 Cave[y-1][x+1] == Zplayer || Cave[y][x-1] == Zplayer ||
1497 Cave[y][x+1] == Zplayer || Cave[y+1][x-1] == Zplayer ||
1498 Cave[y+1][x] == Zplayer || Cave[y+1][x+1] == Zplayer) goto android_still;
1500 if(ply1.alive && ply2.alive) {
1501 if( (ply1.x > x ? ply1.x - x : x - ply1.x) + (ply1.y > y ? ply1.y - y : y - ply1.y) < (ply2.x > x ? ply2.x - x : x - ply2.x) + (ply2.y > y ? ply2.y - y : y - ply2.y) ) {
1508 } else if(ply1.alive) {
1511 } else if(ply2.alive) {
1518 Next[y][x] = Xblank; /* assume we will move */
1519 temp = ((x < dx) + 1 - (x > dx)) + ((y < dy) + 1 - (y > dy)) * 3;
1521 switch(temp) { /* attempt clockwise move first if direct path is blocked */
1522 case 0: /* north west */
1523 if(tab_android_move[Cave[y-1][x-1]]) goto android_nw;
1524 if(tab_android_move[Cave[y-1][x]]) goto android_n;
1525 if(tab_android_move[Cave[y][x-1]]) goto android_w;
1528 if(tab_android_move[Cave[y-1][x]]) goto android_n;
1529 if(tab_android_move[Cave[y-1][x+1]]) goto android_ne;
1530 if(tab_android_move[Cave[y-1][x-1]]) goto android_nw;
1532 case 2: /* north east */
1533 if(tab_android_move[Cave[y-1][x+1]]) goto android_ne;
1534 if(tab_android_move[Cave[y][x+1]]) goto android_e;
1535 if(tab_android_move[Cave[y-1][x]]) goto android_n;
1538 if(tab_android_move[Cave[y][x-1]]) goto android_w;
1539 if(tab_android_move[Cave[y-1][x-1]]) goto android_nw;
1540 if(tab_android_move[Cave[y+1][x-1]]) goto android_sw;
1542 case 4: /* nowhere */
1545 if(tab_android_move[Cave[y][x+1]]) goto android_e;
1546 if(tab_android_move[Cave[y+1][x+1]]) goto android_se;
1547 if(tab_android_move[Cave[y-1][x+1]]) goto android_ne;
1549 case 6: /* south west */
1550 if(tab_android_move[Cave[y+1][x-1]]) goto android_sw;
1551 if(tab_android_move[Cave[y][x-1]]) goto android_w;
1552 if(tab_android_move[Cave[y+1][x]]) goto android_s;
1555 if(tab_android_move[Cave[y+1][x]]) goto android_s;
1556 if(tab_android_move[Cave[y+1][x-1]]) goto android_sw;
1557 if(tab_android_move[Cave[y+1][x+1]]) goto android_se;
1559 case 8: /* south east */
1560 if(tab_android_move[Cave[y+1][x+1]]) goto android_se;
1561 if(tab_android_move[Cave[y+1][x]]) goto android_s;
1562 if(tab_android_move[Cave[y][x+1]]) goto android_e;
1566 switch(temp) { /* attempt counter clockwise move first if direct path is blocked */
1567 case 0: /* north west */
1568 if(tab_android_move[Cave[y-1][x-1]]) goto android_nw;
1569 if(tab_android_move[Cave[y][x-1]]) goto android_w;
1570 if(tab_android_move[Cave[y-1][x]]) goto android_n;
1573 if(tab_android_move[Cave[y-1][x]]) goto android_n;
1574 if(tab_android_move[Cave[y-1][x-1]]) goto android_nw;
1575 if(tab_android_move[Cave[y-1][x+1]]) goto android_ne;
1577 case 2: /* north east */
1578 if(tab_android_move[Cave[y-1][x+1]]) goto android_ne;
1579 if(tab_android_move[Cave[y-1][x]]) goto android_n;
1580 if(tab_android_move[Cave[y][x+1]]) goto android_e;
1583 if(tab_android_move[Cave[y][x-1]]) goto android_w;
1584 if(tab_android_move[Cave[y+1][x-1]]) goto android_sw;
1585 if(tab_android_move[Cave[y-1][x-1]]) goto android_nw;
1587 case 4: /* nowhere */
1590 if(tab_android_move[Cave[y][x+1]]) goto android_e;
1591 if(tab_android_move[Cave[y-1][x+1]]) goto android_ne;
1592 if(tab_android_move[Cave[y+1][x+1]]) goto android_se;
1594 case 6: /* south west */
1595 if(tab_android_move[Cave[y+1][x-1]]) goto android_sw;
1596 if(tab_android_move[Cave[y+1][x]]) goto android_s;
1597 if(tab_android_move[Cave[y][x-1]]) goto android_w;
1600 if(tab_android_move[Cave[y+1][x]]) goto android_s;
1601 if(tab_android_move[Cave[y+1][x+1]]) goto android_se;
1602 if(tab_android_move[Cave[y+1][x-1]]) goto android_sw;
1604 case 8: /* south east */
1605 if(tab_android_move[Cave[y+1][x+1]]) goto android_se;
1606 if(tab_android_move[Cave[y][x+1]]) goto android_e;
1607 if(tab_android_move[Cave[y+1][x]]) goto android_s;
1613 Next[y][x] = Xandroid;
1616 Cave[y][x] = Yandroid_nB;
1617 Cave[y-1][x] = Yandroid_n;
1618 Next[y-1][x] = Xandroid;
1622 Cave[y][x] = Yandroid_neB;
1623 Cave[y-1][x+1] = Yandroid_ne;
1624 Next[y-1][x+1] = Xandroid;
1628 Cave[y][x] = Yandroid_eB;
1629 Cave[y][x+1] = Yandroid_e;
1630 Next[y][x+1] = Xandroid;
1634 Cave[y][x] = Yandroid_seB;
1635 Cave[y+1][x+1] = Yandroid_se;
1636 Next[y+1][x+1] = Xandroid;
1640 Cave[y][x] = Yandroid_sB;
1641 Cave[y+1][x] = Yandroid_s;
1642 Next[y+1][x] = Xandroid;
1646 Cave[y][x] = Yandroid_swB;
1647 Cave[y+1][x-1] = Yandroid_sw;
1648 Next[y+1][x-1] = Xandroid;
1652 Cave[y][x] = Yandroid_wB;
1653 Cave[y][x-1] = Yandroid_w;
1654 Next[y][x-1] = Xandroid;
1658 Cave[y][x] = Yandroid_nwB;
1659 Cave[y-1][x-1] = Yandroid_nw;
1660 Next[y-1][x-1] = Xandroid;
1663 /* ---------------------------------------------------------------------- */
1665 switch(Cave[y-1][x]) {
1674 Cave[y][x] = Yandroid_nB;
1675 if(Cave[y-2][x+1] == Xblank) Cave[y-2][x+1] = Yacid_splash_eB;
1676 if(Cave[y-2][x-1] == Xblank) Cave[y-2][x-1] = Yacid_splash_wB;
1677 Next[y][x] = Xblank;
1681 case Yacid_splash_eB:
1682 case Yacid_splash_wB:
1683 Cave[y][x] = Yandroid_nB;
1684 Cave[y-1][x] = Yandroid_n;
1685 Next[y][x] = Xblank;
1686 Next[y-1][x] = Xandroid;
1693 switch(Cave[y-1][x]) {
1702 Cave[y][x] = Yandroid_nB;
1703 if(Cave[y-2][x+1] == Xblank) Cave[y-2][x+1] = Yacid_splash_eB;
1704 if(Cave[y-2][x-1] == Xblank) Cave[y-2][x-1] = Yacid_splash_wB;
1705 Next[y][x] = Xblank;
1709 case Yacid_splash_eB:
1710 case Yacid_splash_wB:
1711 Cave[y][x] = Yandroid_nB;
1712 Cave[y-1][x] = Yandroid_n;
1713 Next[y][x] = Xblank;
1714 Next[y-1][x] = Xandroid_1_n;
1720 /* ---------------------------------------------------------------------- */
1722 switch(Cave[y][x+1]) {
1731 Cave[y][x] = Yandroid_eB;
1732 if(Cave[y-1][x+2] == Xblank) Cave[y-1][x+2] = Yacid_splash_eB;
1733 if(Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_wB;
1734 Next[y][x] = Xblank;
1738 case Yacid_splash_eB:
1739 case Yacid_splash_wB:
1740 Cave[y][x] = Yandroid_eB;
1741 Cave[y][x+1] = Yandroid_e;
1742 Next[y][x] = Xblank;
1743 Next[y][x+1] = Xandroid;
1750 switch(Cave[y][x+1]) {
1759 Cave[y][x] = Yandroid_eB;
1760 if(Cave[y-1][x+2] == Xblank) Cave[y-1][x+2] = Yacid_splash_eB;
1761 if(Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_wB;
1762 Next[y][x] = Xblank;
1766 case Yacid_splash_eB:
1767 case Yacid_splash_wB:
1768 Cave[y][x] = Yandroid_eB;
1769 Cave[y][x+1] = Yandroid_e;
1770 Next[y][x] = Xblank;
1771 Next[y][x+1] = Xandroid_1_e;
1777 /* ---------------------------------------------------------------------- */
1779 switch(Cave[y+1][x]) {
1788 Cave[y][x] = Yandroid_sB;
1789 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
1790 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
1791 Next[y][x] = Xblank;
1795 case Yacid_splash_eB:
1796 case Yacid_splash_wB:
1797 Cave[y][x] = Yandroid_sB;
1798 Cave[y+1][x] = Yandroid_s;
1799 Next[y][x] = Xblank;
1800 Next[y+1][x] = Xandroid;
1807 switch(Cave[y+1][x]) {
1816 Cave[y][x] = Yandroid_sB;
1817 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
1818 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
1819 Next[y][x] = Xblank;
1823 case Yacid_splash_eB:
1824 case Yacid_splash_wB:
1825 Cave[y][x] = Yandroid_sB;
1826 Cave[y+1][x] = Yandroid_s;
1827 Next[y][x] = Xblank;
1828 Next[y+1][x] = Xandroid_1_s;
1834 /* ---------------------------------------------------------------------- */
1836 switch(Cave[y][x-1]) {
1845 Cave[y][x] = Yandroid_wB;
1846 if(Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_eB;
1847 if(Cave[y-1][x-2] == Xblank) Cave[y-1][x-2] = Yacid_splash_wB;
1848 Next[y][x] = Xblank;
1852 case Yacid_splash_eB:
1853 case Yacid_splash_wB:
1854 Cave[y][x] = Yandroid_wB;
1855 Cave[y][x-1] = Yandroid_w;
1856 Next[y][x] = Xblank;
1857 Next[y][x-1] = Xandroid;
1864 switch(Cave[y][x-1]) {
1873 Cave[y][x] = Yandroid_wB;
1874 if(Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_eB;
1875 if(Cave[y-1][x-2] == Xblank) Cave[y-1][x-2] = Yacid_splash_wB;
1876 Next[y][x] = Xblank;
1880 case Yacid_splash_eB:
1881 case Yacid_splash_wB:
1882 Cave[y][x] = Yandroid_wB;
1883 Cave[y][x-1] = Yandroid_w;
1884 Next[y][x] = Xblank;
1885 Next[y][x-1] = Xandroid_1_w;
1891 /* ---------------------------------------------------------------------- */
1893 switch(Cave[y+1][x]) {
1902 Cave[y][x] = Yspring_sB;
1903 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
1904 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
1905 Next[y][x] = Xblank;
1909 case Yacid_splash_eB:
1910 case Yacid_splash_wB:
1913 Cave[y][x] = Yspring_sB;
1914 Cave[y+1][x] = Yspring_s;
1915 Next[y][x] = Xblank;
1916 Next[y+1][x] = Xspring_fall;
1934 case Xemerald_pause:
1936 case Xdiamond_pause:
1963 if(tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]]) {
1964 Cave[y][x] = Yspring_eB;
1965 Cave[y][x+1] = Yspring_e;
1966 if(Cave[y+1][x] == Xbumper) Cave[y+1][x] = XbumperB;
1967 Next[y][x] = Xblank;
1969 Next[y][x+1] = Xspring_e;
1971 Next[y][x+1] = Xspring_pause;
1975 if(tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]]) {
1976 Cave[y][x] = Yspring_wB;
1977 Cave[y][x-1] = Yspring_w;
1978 if(Cave[y+1][x] == Xbumper) Cave[y+1][x] = XbumperB;
1979 Next[y][x] = Xblank;
1981 Next[y][x-1] = Xspring_w;
1983 Next[y][x-1] = Xspring_pause;
1988 if(tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]]) {
1989 Cave[y][x] = Yspring_wB;
1990 Cave[y][x-1] = Yspring_w;
1991 if(Cave[y+1][x] == Xbumper) Cave[y+1][x] = XbumperB;
1992 Next[y][x] = Xblank;
1994 Next[y][x-1] = Xspring_w;
1996 Next[y][x-1] = Xspring_pause;
2000 if(tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]]) {
2001 Cave[y][x] = Yspring_eB;
2002 Cave[y][x+1] = Yspring_e;
2003 if(Cave[y+1][x] == Xbumper) Cave[y+1][x] = XbumperB;
2004 Next[y][x] = Xblank;
2006 Next[y][x+1] = Xspring_e;
2008 Next[y][x+1] = Xspring_pause;
2016 /* ---------------------------------------------------------------------- */
2018 switch(Cave[y+1][x]) {
2027 Cave[y][x] = Yspring_sB;
2028 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
2029 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
2030 Next[y][x] = Xblank;
2034 case Yacid_splash_eB:
2035 case Yacid_splash_wB:
2036 Cave[y][x] = Yspring_sB;
2037 Cave[y+1][x] = Yspring_s;
2038 Next[y][x] = Xblank;
2039 Next[y+1][x] = Xspring_fall;
2042 Cave[y][x] = Xspring;
2043 Next[y][x] = Xspring;
2046 /* ---------------------------------------------------------------------- */
2048 switch(Cave[y+1][x]) {
2057 Cave[y][x] = Yspring_sB;
2058 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
2059 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
2060 Next[y][x] = Xblank;
2064 case Yacid_splash_eB:
2065 case Yacid_splash_wB:
2066 Cave[y][x] = Yspring_sB;
2067 Cave[y+1][x] = Yspring_s;
2068 Next[y][x] = Xblank;
2069 Next[y+1][x] = Xspring_fall;
2072 Cave[y+1][x] = XbumperB;
2074 switch(Cave[y][x+1]) {
2083 Cave[y][x] = Yspring_eB;
2084 if(Cave[y-1][x+2] == Xblank) Cave[y-1][x+2] = Yacid_splash_eB;
2085 if(Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_wB;
2086 Next[y][x] = Xblank;
2090 case Yacid_splash_eB:
2091 case Yacid_splash_wB:
2096 Cave[y][x] = Yspring_eB;
2097 Cave[y][x+1] = Yspring_e;
2098 Next[y][x] = Xblank;
2099 Next[y][x+1] = Xspring_e;
2107 Cave[y][x] = Yspring_kill_eB;
2108 Cave[y][x+1] = Yspring_kill_e;
2109 Next[y][x] = Xblank;
2110 Next[y][x+1] = Xspring_e;
2111 play[SAMPLE_slurp] = 1;
2112 score += lev.slurp_score;
2116 Cave[y][x+1] = XbumperB;
2117 Next[y][x] = Xspring_w;
2118 PLAY(SAMPLE_spring);
2121 Cave[y][x] = Xspring;
2122 Next[y][x] = Xspring;
2123 PLAY(SAMPLE_spring);
2126 /* ---------------------------------------------------------------------- */
2128 switch(Cave[y+1][x]) {
2137 Cave[y][x] = Yspring_sB;
2138 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
2139 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
2140 Next[y][x] = Xblank;
2144 case Yacid_splash_eB:
2145 case Yacid_splash_wB:
2146 Cave[y][x] = Yspring_sB;
2147 Cave[y+1][x] = Yspring_s;
2148 Next[y][x] = Xblank;
2149 Next[y+1][x] = Xspring_fall;
2152 Cave[y+1][x] = XbumperB;
2154 switch(Cave[y][x-1]) {
2163 Cave[y][x] = Yspring_wB;
2164 if(Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_eB;
2165 if(Cave[y-1][x-2] == Xblank) Cave[y-1][x-2] = Yacid_splash_wB;
2166 Next[y][x] = Xblank;
2170 case Yacid_splash_eB:
2171 case Yacid_splash_wB:
2176 Cave[y][x] = Yspring_wB;
2177 Cave[y][x-1] = Yspring_w;
2178 Next[y][x] = Xblank;
2179 Next[y][x-1] = Xspring_w;
2187 Cave[y][x] = Yspring_kill_wB;
2188 Cave[y][x-1] = Yspring_kill_w;
2189 Next[y][x] = Xblank;
2190 Next[y][x-1] = Xspring_w;
2191 play[SAMPLE_slurp] = 1;
2192 score += lev.slurp_score;
2196 Cave[y][x-1] = XbumperB;
2197 Next[y][x] = Xspring_e;
2198 PLAY(SAMPLE_spring);
2201 Cave[y][x] = Xspring;
2202 Next[y][x] = Xspring;
2203 PLAY(SAMPLE_spring);
2206 /* ---------------------------------------------------------------------- */
2208 switch(Cave[y+1][x]) {
2217 Cave[y][x] = Yspring_sB;
2218 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
2219 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
2220 Next[y][x] = Xblank;
2224 case Yacid_splash_eB:
2225 case Yacid_splash_wB:
2227 Cave[y][x] = Yspring_sB;
2228 Cave[y+1][x] = Yspring_s;
2229 Next[y][x] = Xblank;
2230 Next[y+1][x] = Xspring_fall;
2234 Cave[y+1][x] = Ybomb_eat;
2235 Next[y+1][x] = Znormal;
2236 Boom[y][x-1] = Xblank;
2237 Boom[y][x] = Xblank;
2238 Boom[y][x+1] = Xblank;
2239 Boom[y+1][x-1] = Xblank;
2240 Boom[y+1][x] = Xblank;
2241 Boom[y+1][x+1] = Xblank;
2242 Boom[y+2][x-1] = Xblank;
2243 Boom[y+2][x] = Xblank;
2244 Boom[y+2][x+1] = Xblank;
2254 Cave[y][x] = Yspring_sB;
2255 Cave[y+1][x] = Ybug_spring;
2256 Next[y+1][x] = Znormal;
2257 Boom[y][x-1] = Xemerald;
2258 Boom[y][x] = Xemerald;
2259 Boom[y][x+1] = Xemerald;
2260 Boom[y+1][x-1] = Xemerald;
2261 Boom[y+1][x] = Xdiamond;
2262 Boom[y+1][x+1] = Xemerald;
2263 Boom[y+2][x-1] = Xemerald;
2264 Boom[y+2][x] = Xemerald;
2265 Boom[y+2][x+1] = Xemerald;
2266 score += lev.bug_score;
2276 Cave[y][x] = Yspring_sB;
2277 Cave[y+1][x] = Ytank_spring;
2278 Next[y+1][x] = Znormal;
2279 Boom[y][x-1] = Xblank;
2280 Boom[y][x] = Xblank;
2281 Boom[y][x+1] = Xblank;
2282 Boom[y+1][x-1] = Xblank;
2283 Boom[y+1][x] = Xblank;
2284 Boom[y+1][x+1] = Xblank;
2285 Boom[y+2][x-1] = Xblank;
2286 Boom[y+2][x] = Xblank;
2287 Boom[y+2][x+1] = Xblank;
2288 score += lev.tank_score;
2294 Cave[y][x] = Yspring_sB;
2295 Cave[y+1][x] = Yeater_spring;
2296 Next[y+1][x] = Znormal;
2297 Boom[y][x-1] = lev.eater_array[lev.eater_pos][0];
2298 Boom[y][x] = lev.eater_array[lev.eater_pos][1];
2299 Boom[y][x+1] = lev.eater_array[lev.eater_pos][2];
2300 Boom[y+1][x-1] = lev.eater_array[lev.eater_pos][3];
2301 Boom[y+1][x] = lev.eater_array[lev.eater_pos][4];
2302 Boom[y+1][x+1] = lev.eater_array[lev.eater_pos][5];
2303 Boom[y+2][x-1] = lev.eater_array[lev.eater_pos][6];
2304 Boom[y+2][x] = lev.eater_array[lev.eater_pos][7];
2305 Boom[y+2][x+1] = lev.eater_array[lev.eater_pos][8];
2306 lev.eater_pos = (lev.eater_pos + 1) & 7;
2307 score += lev.eater_score;
2311 Cave[y][x] = Yspring_sB;
2312 Cave[y+1][x] = Yalien_spring;
2313 Next[y+1][x] = Znormal;
2314 Boom[y][x-1] = Xblank;
2315 Boom[y][x] = Xblank;
2316 Boom[y][x+1] = Xblank;
2317 Boom[y+1][x-1] = Xblank;
2318 Boom[y+1][x] = Xblank;
2319 Boom[y+1][x+1] = Xblank;
2320 Boom[y+2][x-1] = Xblank;
2321 Boom[y+2][x] = Xblank;
2322 Boom[y+2][x+1] = Xblank;
2323 score += lev.alien_score;
2326 Cave[y][x] = Xspring;
2327 Next[y][x] = Xspring;
2328 PLAY(SAMPLE_spring);
2331 /* ---------------------------------------------------------------------- */
2333 if(Cave[y][x+1] == Xdiamond) {
2334 Cave[y][x+1] = Ydiamond_eat;
2335 Next[y][x+1] = Xblank;
2336 play[SAMPLE_eater] = 1;
2339 if(Cave[y+1][x] == Xdiamond) {
2340 Cave[y+1][x] = Ydiamond_eat;
2341 Next[y+1][x] = Xblank;
2342 play[SAMPLE_eater] = 1;
2345 if(Cave[y][x-1] == Xdiamond) {
2346 Cave[y][x-1] = Ydiamond_eat;
2347 Next[y][x-1] = Xblank;
2348 play[SAMPLE_eater] = 1;
2351 if(Cave[y-1][x] == Xdiamond) {
2352 Cave[y-1][x] = Ydiamond_eat;
2353 Next[y-1][x] = Xblank;
2354 play[SAMPLE_eater] = 1;
2357 switch(Cave[y-1][x]) {
2366 Cave[y][x] = Yeater_nB;
2367 if(Cave[y-2][x+1] == Xblank) Cave[y-2][x+1] = Yacid_splash_eB;
2368 if(Cave[y-2][x-1] == Xblank) Cave[y-2][x-1] = Yacid_splash_wB;
2369 Next[y][x] = Xblank;
2373 case Yacid_splash_eB:
2374 case Yacid_splash_wB:
2378 Cave[y][x] = Yeater_nB;
2379 Cave[y-1][x] = Yeater_n;
2380 Next[y][x] = Xblank;
2381 Next[y-1][x] = Xeater_n;
2384 Next[y][x] = RANDOM & 1 ? Xeater_e : Xeater_w;
2388 /* ---------------------------------------------------------------------- */
2390 if(Cave[y+1][x] == Xdiamond) {
2391 Cave[y+1][x] = Ydiamond_eat;
2392 Next[y+1][x] = Xblank;
2393 play[SAMPLE_eater] = 1;
2396 if(Cave[y][x-1] == Xdiamond) {
2397 Cave[y][x-1] = Ydiamond_eat;
2398 Next[y][x-1] = Xblank;
2399 play[SAMPLE_eater] = 1;
2402 if(Cave[y-1][x] == Xdiamond) {
2403 Cave[y-1][x] = Ydiamond_eat;
2404 Next[y-1][x] = Xblank;
2405 play[SAMPLE_eater] = 1;
2408 if(Cave[y][x+1] == Xdiamond) {
2409 Cave[y][x+1] = Ydiamond_eat;
2410 Next[y][x+1] = Xblank;
2411 play[SAMPLE_eater] = 1;
2414 switch(Cave[y][x+1]) {
2423 Cave[y][x] = Yeater_eB;
2424 if(Cave[y-1][x+2] == Xblank) Cave[y-1][x+2] = Yacid_splash_eB;
2425 if(Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_wB;
2426 Next[y][x] = Xblank;
2430 case Yacid_splash_eB:
2431 case Yacid_splash_wB:
2435 Cave[y][x] = Yeater_eB;
2436 Cave[y][x+1] = Yeater_e;
2437 Next[y][x] = Xblank;
2438 Next[y][x+1] = Xeater_e;
2441 Next[y][x] = RANDOM & 1 ? Xeater_n : Xeater_s;
2445 /* ---------------------------------------------------------------------- */
2447 if(Cave[y][x-1] == Xdiamond) {
2448 Cave[y][x-1] = Ydiamond_eat;
2449 Next[y][x-1] = Xblank;
2450 play[SAMPLE_eater] = 1;
2453 if(Cave[y-1][x] == Xdiamond) {
2454 Cave[y-1][x] = Ydiamond_eat;
2455 Next[y-1][x] = Xblank;
2456 play[SAMPLE_eater] = 1;
2459 if(Cave[y][x+1] == Xdiamond) {
2460 Cave[y][x+1] = Ydiamond_eat;
2461 Next[y][x+1] = Xblank;
2462 play[SAMPLE_eater] = 1;
2465 if(Cave[y+1][x] == Xdiamond) {
2466 Cave[y+1][x] = Ydiamond_eat;
2467 Next[y+1][x] = Xblank;
2468 play[SAMPLE_eater] = 1;
2471 switch(Cave[y+1][x]) {
2480 Cave[y][x] = Yeater_sB;
2481 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
2482 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
2483 Next[y][x] = Xblank;
2487 case Yacid_splash_eB:
2488 case Yacid_splash_wB:
2492 Cave[y][x] = Yeater_sB;
2493 Cave[y+1][x] = Yeater_s;
2494 Next[y][x] = Xblank;
2495 Next[y+1][x] = Xeater_s;
2498 Next[y][x] = RANDOM & 1 ? Xeater_e : Xeater_w;
2502 /* ---------------------------------------------------------------------- */
2504 if(Cave[y-1][x] == Xdiamond) {
2505 Cave[y-1][x] = Ydiamond_eat;
2506 Next[y-1][x] = Xblank;
2507 play[SAMPLE_eater] = 1;
2510 if(Cave[y][x+1] == Xdiamond) {
2511 Cave[y][x+1] = Ydiamond_eat;
2512 Next[y][x+1] = Xblank;
2513 play[SAMPLE_eater] = 1;
2516 if(Cave[y+1][x] == Xdiamond) {
2517 Cave[y+1][x] = Ydiamond_eat;
2518 Next[y+1][x] = Xblank;
2519 play[SAMPLE_eater] = 1;
2522 if(Cave[y][x-1] == Xdiamond) {
2523 Cave[y][x-1] = Ydiamond_eat;
2524 Next[y][x-1] = Xblank;
2525 play[SAMPLE_eater] = 1;
2528 switch(Cave[y][x-1]) {
2537 Cave[y][x] = Yeater_wB;
2538 if(Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_eB;
2539 if(Cave[y-1][x-2] == Xblank) Cave[y-1][x-2] = Yacid_splash_wB;
2540 Next[y][x] = Xblank;
2544 case Yacid_splash_eB:
2545 case Yacid_splash_wB:
2549 Cave[y][x] = Yeater_wB;
2550 Cave[y][x-1] = Yeater_w;
2551 Next[y][x] = Xblank;
2552 Next[y][x-1] = Xeater_w;
2555 Next[y][x] = RANDOM & 1 ? Xeater_n : Xeater_s;
2559 /* ---------------------------------------------------------------------- */
2564 } else if(ply1.alive && ply2.alive) {
2565 if( (ply1.x > x ? ply1.x - x : x - ply1.x) + (ply1.y > y ? ply1.y - y : y - ply1.y) < (ply2.x > x ? ply2.x - x : x - ply2.x) + (ply2.y > y ? ply2.y - y : y - ply2.y) ) {
2572 } else if(ply1.alive) {
2575 } else if(ply2.alive) {
2584 switch(Cave[y-1][x]) {
2593 Cave[y][x] = Yalien_nB;
2594 if(Cave[y-2][x+1] == Xblank) Cave[y-2][x+1] = Yacid_splash_eB;
2595 if(Cave[y-2][x-1] == Xblank) Cave[y-2][x-1] = Yacid_splash_wB;
2596 Next[y][x] = Xblank;
2600 case Yacid_splash_eB:
2601 case Yacid_splash_wB:
2605 Cave[y][x] = Yalien_nB;
2606 Cave[y-1][x] = Yalien_n;
2607 Next[y][x] = Xblank;
2608 Next[y-1][x] = Xalien_pause;
2613 switch(Cave[y+1][x]) {
2622 Cave[y][x] = Yalien_sB;
2623 Next[y][x] = Xblank;
2624 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
2625 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
2629 case Yacid_splash_eB:
2630 case Yacid_splash_wB:
2634 Cave[y][x] = Yalien_sB;
2635 Cave[y+1][x] = Yalien_s;
2636 Next[y][x] = Xblank;
2637 Next[y+1][x] = Xalien_pause;
2644 switch(Cave[y][x+1]) {
2653 Cave[y][x] = Yalien_eB;
2654 if(Cave[y-1][x+2] == Xblank) Cave[y-1][x+2] = Yacid_splash_eB;
2655 if(Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_wB;
2656 Next[y][x] = Xblank;
2660 case Yacid_splash_eB:
2661 case Yacid_splash_wB:
2665 Cave[y][x] = Yalien_eB;
2666 Cave[y][x+1] = Yalien_e;
2667 Next[y][x] = Xblank;
2668 Next[y][x+1] = Xalien_pause;
2673 switch(Cave[y][x-1]) {
2682 Cave[y][x] = Yalien_wB;
2683 if(Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_eB;
2684 if(Cave[y-1][x-2] == Xblank) Cave[y-1][x-2] = Yacid_splash_wB;
2685 Next[y][x] = Xblank;
2689 case Yacid_splash_eB:
2690 case Yacid_splash_wB:
2694 Cave[y][x] = Yalien_wB;
2695 Cave[y][x-1] = Yalien_w;
2696 Next[y][x] = Xblank;
2697 Next[y][x-1] = Xalien_pause;
2705 Next[y][x] = Xalien;
2707 /* ---------------------------------------------------------------------- */
2709 switch(Cave[y+1][x]) {
2718 Cave[y][x] = Yemerald_sB;
2719 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
2720 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
2721 Next[y][x] = Xblank;
2725 case Yacid_splash_eB:
2726 case Yacid_splash_wB:
2727 Cave[y][x] = Yemerald_sB;
2728 Cave[y+1][x] = Yemerald_s;
2729 Next[y][x] = Xblank;
2730 Next[y+1][x] = Xemerald_fall;
2748 case Xemerald_pause:
2750 case Xdiamond_pause:
2786 if(tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]]) {
2787 Cave[y][x] = Yemerald_eB;
2788 Cave[y][x+1] = Yemerald_e;
2789 Next[y][x] = Xblank;
2790 Next[y][x+1] = Xemerald_pause;
2793 if(tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]]) {
2794 Cave[y][x] = Yemerald_wB;
2795 Cave[y][x-1] = Yemerald_w;
2796 Next[y][x] = Xblank;
2797 Next[y][x-1] = Xemerald_pause;
2801 if(tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]]) {
2802 Cave[y][x] = Yemerald_wB;
2803 Cave[y][x-1] = Yemerald_w;
2804 Next[y][x] = Xblank;
2805 Next[y][x-1] = Xemerald_pause;
2808 if(tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]]) {
2809 Cave[y][x] = Yemerald_eB;
2810 Cave[y][x+1] = Yemerald_e;
2811 Next[y][x] = Xblank;
2812 Next[y][x+1] = Xemerald_pause;
2817 if(++lev.shine_cnt > 50) {
2818 lev.shine_cnt = RANDOM & 7;
2819 Cave[y][x] = Xemerald_shine;
2823 /* ---------------------------------------------------------------------- */
2824 case Xemerald_pause:
2825 switch(Cave[y+1][x]) {
2834 Cave[y][x] = Yemerald_sB;
2835 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
2836 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
2837 Next[y][x] = Xblank;
2841 case Yacid_splash_eB:
2842 case Yacid_splash_wB:
2843 Cave[y][x] = Yemerald_sB;
2844 Cave[y+1][x] = Yemerald_s;
2845 Next[y][x] = Xblank;
2846 Next[y+1][x] = Xemerald_fall;
2849 Cave[y][x] = Xemerald;
2850 Next[y][x] = Xemerald;
2853 /* ---------------------------------------------------------------------- */
2855 switch(Cave[y+1][x]) {
2864 Cave[y][x] = Yemerald_sB;
2865 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
2866 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
2867 Next[y][x] = Xblank;
2871 case Yacid_splash_eB:
2872 case Yacid_splash_wB:
2874 Cave[y][x] = Yemerald_sB;
2875 Cave[y+1][x] = Yemerald_s;
2876 Next[y][x] = Xblank;
2877 Next[y+1][x] = Xemerald_fall;
2880 if(lev.wonderwall_time) {
2881 lev.wonderwall_state = 1;
2882 Cave[y][x] = Yemerald_sB;
2883 if(tab_blank[Cave[y+2][x]]) {
2884 Cave[y+2][x] = Ydiamond_s;
2885 Next[y+2][x] = Xdiamond_fall;
2887 Next[y][x] = Xblank;
2888 play[SAMPLE_squash] = 1;
2892 Cave[y][x] = Xemerald;
2893 Next[y][x] = Xemerald;
2894 PLAY(SAMPLE_diamond);
2897 /* ---------------------------------------------------------------------- */
2899 switch(Cave[y+1][x]) {
2908 Cave[y][x] = Ydiamond_sB;
2909 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
2910 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
2911 Next[y][x] = Xblank;
2915 case Yacid_splash_eB:
2916 case Yacid_splash_wB:
2917 Cave[y][x] = Ydiamond_sB;
2918 Cave[y+1][x] = Ydiamond_s;
2919 Next[y][x] = Xblank;
2920 Next[y+1][x] = Xdiamond_fall;
2938 case Xemerald_pause:
2940 case Xdiamond_pause:
2976 if(tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]]) {
2977 Cave[y][x] = Ydiamond_eB;
2978 Cave[y][x+1] = Ydiamond_e;
2979 Next[y][x] = Xblank;
2980 Next[y][x+1] = Xdiamond_pause;
2983 if(tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]]) {
2984 Cave[y][x] = Ydiamond_wB;
2985 Cave[y][x-1] = Ydiamond_w;
2986 Next[y][x] = Xblank;
2987 Next[y][x-1] = Xdiamond_pause;
2991 if(tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]]) {
2992 Cave[y][x] = Ydiamond_wB;
2993 Cave[y][x-1] = Ydiamond_w;
2994 Next[y][x] = Xblank;
2995 Next[y][x-1] = Xdiamond_pause;
2998 if(tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]]) {
2999 Cave[y][x] = Ydiamond_eB;
3000 Cave[y][x+1] = Ydiamond_e;
3001 Next[y][x] = Xblank;
3002 Next[y][x+1] = Xdiamond_pause;
3007 if(++lev.shine_cnt > 50) {
3008 lev.shine_cnt = RANDOM & 7;
3009 Cave[y][x] = Xdiamond_shine;
3013 /* ---------------------------------------------------------------------- */
3014 case Xdiamond_pause:
3015 switch(Cave[y+1][x]) {
3024 Cave[y][x] = Ydiamond_sB;
3025 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
3026 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
3027 Next[y][x] = Xblank;
3031 case Yacid_splash_eB:
3032 case Yacid_splash_wB:
3033 Cave[y][x] = Ydiamond_sB;
3034 Cave[y+1][x] = Ydiamond_s;
3035 Next[y][x] = Xblank;
3036 Next[y+1][x] = Xdiamond_fall;
3039 Cave[y][x] = Xdiamond;
3040 Next[y][x] = Xdiamond;
3043 /* ---------------------------------------------------------------------- */
3045 switch(Cave[y+1][x]) {
3054 Cave[y][x] = Ydiamond_sB;
3055 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
3056 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
3057 Next[y][x] = Xblank;
3061 case Yacid_splash_eB:
3062 case Yacid_splash_wB:
3064 Cave[y][x] = Ydiamond_sB;
3065 Cave[y+1][x] = Ydiamond_s;
3066 Next[y][x] = Xblank;
3067 Next[y+1][x] = Xdiamond_fall;
3070 if(lev.wonderwall_time) {
3071 lev.wonderwall_state = 1;
3072 Cave[y][x] = Ydiamond_sB;
3073 if(tab_blank[Cave[y+2][x]]) {
3074 Cave[y+2][x] = Ystone_s;
3075 Next[y+2][x] = Xstone_fall;
3077 Next[y][x] = Xblank;
3078 play[SAMPLE_squash] = 1;
3082 Cave[y][x] = Xdiamond;
3083 Next[y][x] = Xdiamond;
3084 PLAY(SAMPLE_diamond);
3087 /* ---------------------------------------------------------------------- */
3089 switch(Cave[y+1][x]) {
3098 Cave[y][x] = Ydrip_s1B;
3099 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
3100 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
3101 Next[y][x] = Xdrip_stretchB;
3105 case Yacid_splash_eB:
3106 case Yacid_splash_wB:
3110 Cave[y][x] = Ydrip_s1B;
3111 Cave[y+1][x] = Ydrip_s1;
3112 Next[y][x] = Xdrip_stretchB;
3113 Next[y+1][x] = Xdrip_stretch;
3116 switch(RANDOM & 7) {
3117 case 0: temp = Xameuba_1; break;
3118 case 1: temp = Xameuba_2; break;
3119 case 2: temp = Xameuba_3; break;
3120 case 3: temp = Xameuba_4; break;
3121 case 4: temp = Xameuba_5; break;
3122 case 5: temp = Xameuba_6; break;
3123 case 6: temp = Xameuba_7; break;
3124 case 7: temp = Xameuba_8; break;
3128 play[SAMPLE_drip] = 1;
3131 /* ---------------------------------------------------------------------- */
3133 Cave[y][x] = Ydrip_s2;
3134 Next[y][x] = Xdrip_fall;
3136 case Xdrip_stretchB:
3137 Cave[y][x] = Ydrip_s2B;
3138 Next[y][x] = Xblank;
3141 Next[y][x] = Xdrip_fall;
3143 /* ---------------------------------------------------------------------- */
3145 switch(Cave[y+1][x]) {
3154 Cave[y][x] = Ybomb_sB;
3155 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
3156 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
3157 Next[y][x] = Xblank;
3161 case Yacid_splash_eB:
3162 case Yacid_splash_wB:
3163 Cave[y][x] = Ybomb_sB;
3164 Cave[y+1][x] = Ybomb_s;
3165 Next[y][x] = Xblank;
3166 Next[y+1][x] = Xbomb_fall;
3184 case Xemerald_pause:
3186 case Xdiamond_pause:
3213 if(tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]]) {
3214 Cave[y][x] = Ybomb_eB;
3215 Cave[y][x+1] = Ybomb_e;
3216 Next[y][x] = Xblank;
3217 Next[y][x+1] = Xbomb_pause;
3220 if(tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]]) {
3221 Cave[y][x] = Ybomb_wB;
3222 Cave[y][x-1] = Ybomb_w;
3223 Next[y][x] = Xblank;
3224 Next[y][x-1] = Xbomb_pause;
3228 if(tab_blank[Cave[y][x-1]] && tab_acid[Cave[y+1][x-1]]) {
3229 Cave[y][x] = Ybomb_wB;
3230 Cave[y][x-1] = Ybomb_w;
3231 Next[y][x] = Xblank;
3232 Next[y][x-1] = Xbomb_pause;
3235 if(tab_blank[Cave[y][x+1]] && tab_acid[Cave[y+1][x+1]]) {
3236 Cave[y][x] = Ybomb_eB;
3237 Cave[y][x+1] = Ybomb_e;
3238 Next[y][x] = Xblank;
3239 Next[y][x+1] = Xbomb_pause;
3246 /* ---------------------------------------------------------------------- */
3248 switch(Cave[y+1][x]) {
3257 Cave[y][x] = Ybomb_sB;
3258 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
3259 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
3260 Next[y][x] = Xblank;
3264 case Yacid_splash_eB:
3265 case Yacid_splash_wB:
3266 Cave[y][x] = Ybomb_sB;
3267 Cave[y+1][x] = Ybomb_s;
3268 Next[y][x] = Xblank;
3269 Next[y+1][x] = Xbomb_fall;
3276 /* ---------------------------------------------------------------------- */
3278 switch(Cave[y+1][x]) {
3287 Cave[y][x] = Ybomb_sB;
3288 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
3289 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
3290 Next[y][x] = Xblank;
3294 case Yacid_splash_eB:
3295 case Yacid_splash_wB:
3296 Cave[y][x] = Ybomb_sB;
3297 Cave[y+1][x] = Ybomb_s;
3298 Next[y][x] = Xblank;
3299 Next[y+1][x] = Xbomb_fall;
3302 Cave[y][x] = Ybomb_eat;
3303 Next[y][x] = Znormal;
3304 Boom[y-1][x-1] = Xblank;
3305 Boom[y-1][x] = Xblank;
3306 Boom[y-1][x+1] = Xblank;
3307 Boom[y][x-1] = Xblank;
3308 Boom[y][x] = Xblank;
3309 Boom[y][x+1] = Xblank;
3310 Boom[y+1][x-1] = Xblank;
3311 Boom[y+1][x] = Xblank;
3312 Boom[y+1][x+1] = Xblank;
3315 /* ---------------------------------------------------------------------- */
3317 if(lev.wind_cnt == 0) goto loop;
3318 switch(lev.wind_direction) {
3320 switch(Cave[y-1][x]) {
3329 Cave[y][x] = Yballoon_nB;
3330 if(Cave[y-2][x+1] == Xblank) Cave[y-2][x+1] = Yacid_splash_eB;
3331 if(Cave[y-2][x-1] == Xblank) Cave[y-2][x-1] = Yacid_splash_wB;
3332 Next[y][x] = Xblank;
3336 case Yacid_splash_eB:
3337 case Yacid_splash_wB:
3338 Cave[y][x] = Yballoon_nB;
3339 Cave[y-1][x] = Yballoon_n;
3340 Next[y][x] = Xblank;
3341 Next[y-1][x] = Xballoon;
3347 switch(Cave[y][x+1]) {
3356 Cave[y][x] = Yballoon_eB;
3357 if(Cave[y-1][x+2] == Xblank) Cave[y-1][x+2] = Yacid_splash_eB;
3358 if(Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_wB;
3359 Next[y][x] = Xblank;
3363 case Yacid_splash_eB:
3364 case Yacid_splash_wB:
3365 Cave[y][x] = Yballoon_eB;
3366 Cave[y][x+1] = Yballoon_e;
3367 Next[y][x] = Xblank;
3368 Next[y][x+1] = Xballoon;
3374 switch(Cave[y+1][x]) {
3383 Cave[y][x] = Yballoon_sB;
3384 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
3385 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
3386 Next[y][x] = Xblank;
3390 case Yacid_splash_eB:
3391 case Yacid_splash_wB:
3392 Cave[y][x] = Yballoon_sB;
3393 Cave[y+1][x] = Yballoon_s;
3394 Next[y][x] = Xblank;
3395 Next[y+1][x] = Xballoon;
3401 switch(Cave[y][x-1]) {
3410 Cave[y][x] = Yballoon_wB;
3411 if(Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_eB;
3412 if(Cave[y-1][x-2] == Xblank) Cave[y-1][x-2] = Yacid_splash_wB;
3413 Next[y][x] = Xblank;
3417 case Yacid_splash_eB:
3418 case Yacid_splash_wB:
3419 Cave[y][x] = Yballoon_wB;
3420 Cave[y][x-1] = Yballoon_w;
3421 Next[y][x] = Xblank;
3422 Next[y][x-1] = Xballoon;
3428 /* ---------------------------------------------------------------------- */
3430 Next[y][x] = Xacid_2;
3433 Next[y][x] = Xacid_3;
3436 Next[y][x] = Xacid_4;
3439 Next[y][x] = Xacid_5;
3442 Next[y][x] = Xacid_6;
3445 Next[y][x] = Xacid_7;
3448 Next[y][x] = Xacid_8;
3451 Next[y][x] = Xacid_1;
3453 /* ---------------------------------------------------------------------- */
3455 if(lev.ball_state == 0) goto loop;
3456 Cave[y][x] = Xball_1B;
3457 Next[y][x] = Xball_2;
3458 if(lev.ball_cnt) goto loop;
3461 if(lev.ball_state == 0) goto loop;
3462 Cave[y][x] = Xball_2B;
3463 Next[y][x] = Xball_1;
3464 if(lev.ball_cnt) goto loop;
3467 play[SAMPLE_ball] = 1;
3468 if(lev.ball_random) {
3469 switch(RANDOM & 7) {
3471 if(lev.ball_array[lev.ball_pos][0] != Xblank && tab_blank[Cave[y-1][x-1]]) {
3472 Cave[y-1][x-1] = Yball_eat;
3473 Next[y-1][x-1] = lev.ball_array[lev.ball_pos][0];
3477 if(lev.ball_array[lev.ball_pos][1] != Xblank && tab_blank[Cave[y-1][x]]) {
3478 Cave[y-1][x] = Yball_eat;
3479 Next[y-1][x] = lev.ball_array[lev.ball_pos][1];
3483 if(lev.ball_array[lev.ball_pos][2] != Xblank && tab_blank[Cave[y-1][x+1]]) {
3484 Cave[y-1][x+1] = Yball_eat;
3485 Next[y-1][x+1] = lev.ball_array[lev.ball_pos][2];
3489 if(lev.ball_array[lev.ball_pos][3] != Xblank && tab_blank[Cave[y][x-1]]) {
3490 Cave[y][x-1] = Yball_eat;
3491 Next[y][x-1] = lev.ball_array[lev.ball_pos][3];
3495 if(lev.ball_array[lev.ball_pos][4] != Xblank && tab_blank[Cave[y][x+1]]) {
3496 Cave[y][x+1] = Yball_eat;
3497 Next[y][x+1] = lev.ball_array[lev.ball_pos][4];
3501 if(lev.ball_array[lev.ball_pos][5] != Xblank && tab_blank[Cave[y+1][x-1]]) {
3502 Cave[y+1][x-1] = Yball_eat;
3503 Next[y+1][x-1] = lev.ball_array[lev.ball_pos][5];
3507 if(lev.ball_array[lev.ball_pos][6] != Xblank && tab_blank[Cave[y+1][x]]) {
3508 Cave[y+1][x] = Yball_eat;
3509 Next[y+1][x] = lev.ball_array[lev.ball_pos][6];
3513 if(lev.ball_array[lev.ball_pos][7] != Xblank && tab_blank[Cave[y+1][x+1]]) {
3514 Cave[y+1][x+1] = Yball_eat;
3515 Next[y+1][x+1] = lev.ball_array[lev.ball_pos][7];
3520 if(lev.ball_array[lev.ball_pos][0] != Xblank && tab_blank[Cave[y-1][x-1]]) {
3521 Cave[y-1][x-1] = Yball_eat;
3522 Next[y-1][x-1] = lev.ball_array[lev.ball_pos][0];
3524 if(lev.ball_array[lev.ball_pos][1] != Xblank && tab_blank[Cave[y-1][x]]) {
3525 Cave[y-1][x] = Yball_eat;
3526 Next[y-1][x] = lev.ball_array[lev.ball_pos][1];
3528 if(lev.ball_array[lev.ball_pos][2] != Xblank && tab_blank[Cave[y-1][x+1]]) {
3529 Cave[y-1][x+1] = Yball_eat;
3530 Next[y-1][x+1] = lev.ball_array[lev.ball_pos][2];
3532 if(lev.ball_array[lev.ball_pos][3] != Xblank && tab_blank[Cave[y][x-1]]) {
3533 Cave[y][x-1] = Yball_eat;
3534 Next[y][x-1] = lev.ball_array[lev.ball_pos][3];
3536 if(lev.ball_array[lev.ball_pos][4] != Xblank && tab_blank[Cave[y][x+1]]) {
3537 Cave[y][x+1] = Yball_eat;
3538 Next[y][x+1] = lev.ball_array[lev.ball_pos][4];
3540 if(lev.ball_array[lev.ball_pos][5] != Xblank && tab_blank[Cave[y+1][x-1]]) {
3541 Cave[y+1][x-1] = Yball_eat;
3542 Next[y+1][x-1] = lev.ball_array[lev.ball_pos][5];
3544 if(lev.ball_array[lev.ball_pos][6] != Xblank && tab_blank[Cave[y+1][x]]) {
3545 Cave[y+1][x] = Yball_eat;
3546 Next[y+1][x] = lev.ball_array[lev.ball_pos][6];
3548 if(lev.ball_array[lev.ball_pos][7] != Xblank && tab_blank[Cave[y+1][x+1]]) {
3549 Cave[y+1][x+1] = Yball_eat;
3550 Next[y+1][x+1] = lev.ball_array[lev.ball_pos][7];
3553 lev.ball_pos = (lev.ball_pos + 1) & 7;
3555 /* ---------------------------------------------------------------------- */
3557 if(tab_blank[Cave[y-1][x]]) {
3558 Cave[y-1][x] = Ygrow_ns_eat;
3559 Next[y-1][x] = Xgrow_ns;
3560 play[SAMPLE_grow] = 1;
3562 if(tab_blank[Cave[y+1][x]]) {
3563 Cave[y+1][x] = Ygrow_ns_eat;
3564 Next[y+1][x] = Xgrow_ns;
3565 play[SAMPLE_grow] = 1;
3569 if(tab_blank[Cave[y][x+1]]) {
3570 Cave[y][x+1] = Ygrow_ew_eat;
3571 Next[y][x+1] = Xgrow_ew;
3572 play[SAMPLE_grow] = 1;
3574 if(tab_blank[Cave[y][x-1]]) {
3575 Cave[y][x-1] = Ygrow_ew_eat;
3576 Next[y][x-1] = Xgrow_ew;
3577 play[SAMPLE_grow] = 1;
3580 /* ---------------------------------------------------------------------- */
3582 if(lev.wonderwall_time && lev.wonderwall_state) {
3583 Cave[y][x] = XwonderwallB;
3584 play[SAMPLE_wonder] = 1;
3587 /* ---------------------------------------------------------------------- */
3589 if(lev.required > 0) goto loop;
3592 Cave[y][x] = Xexit_1;
3593 Next[y][x] = Xexit_2;
3594 } else if(temp < 42) {
3595 Cave[y][x] = Xexit_2;
3596 Next[y][x] = Xexit_3;
3598 Cave[y][x] = Xexit_3;
3599 Next[y][x] = Xexit_1;
3603 Next[y][x] = Xexit_2;
3606 Next[y][x] = Xexit_3;
3609 Next[y][x] = Xexit_1;
3611 /* ---------------------------------------------------------------------- */
3613 play[SAMPLE_tick] = 1;
3614 Next[y][x] = Xdynamite_2;
3617 play[SAMPLE_tick] = 1;
3618 Next[y][x] = Xdynamite_3;
3621 play[SAMPLE_tick] = 1;
3622 Next[y][x] = Xdynamite_4;
3625 play[SAMPLE_tick] = 1;
3626 Next[y][x] = Zdynamite;
3627 Boom[y-1][x-1] = Xblank;
3628 Boom[y-1][x] = Xblank;
3629 Boom[y-1][x+1] = Xblank;
3630 Boom[y][x-1] = Xblank;
3631 Boom[y][x] = Xblank;
3632 Boom[y][x+1] = Xblank;
3633 Boom[y+1][x-1] = Xblank;
3634 Boom[y+1][x] = Xblank;
3635 Boom[y+1][x+1] = Xblank;
3637 /* ---------------------------------------------------------------------- */
3639 if(lev.wheel_cnt && x == lev.wheel_x && y == lev.wheel_y) Cave[y][x] = XwheelB;
3641 /* ---------------------------------------------------------------------- */
3643 if(lev.ball_state) Cave[y][x] = XswitchB;
3645 /* ---------------------------------------------------------------------- */
3647 switch(Cave[y+1][x]) {
3656 Cave[y][x] = Xsand_stonesand_3;
3657 if(Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB;
3658 if(Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB;
3659 Next[y][x] = Xsand_stonesand_4;
3663 case Yacid_splash_eB:
3664 case Yacid_splash_wB:
3665 Cave[y][x] = Xsand_stonesand_3;
3666 Cave[y+1][x] = Xsand_stoneout_1;
3667 Next[y][x] = Xsand_stonesand_4;
3668 Next[y+1][x] = Xsand_stoneout_2;
3671 Cave[y][x] = Xsand_stonesand_1;
3672 Cave[y+1][x] = Xsand_sandstone_1;
3673 Next[y][x] = Xsand_stonesand_2;
3674 Next[y+1][x] = Xsand_sandstone_2;
3679 case Xsand_stonein_1:
3680 Next[y][x] = Xsand_stonein_2;
3682 case Xsand_stonein_2:
3683 Next[y][x] = Xsand_stonein_3;
3685 case Xsand_stonein_3:
3686 Next[y][x] = Xsand_stonein_4;
3688 case Xsand_stonein_4:
3689 Next[y][x] = Xblank;
3691 case Xsand_stonesand_1:
3692 Next[y][x] = Xsand_stonesand_2;
3694 case Xsand_stonesand_2:
3695 Next[y][x] = Xsand_stonesand_3;
3697 case Xsand_stonesand_3:
3698 Next[y][x] = Xsand_stonesand_4;
3700 case Xsand_stonesand_4:
3703 case Xsand_stoneout_1:
3704 Next[y][x] = Xsand_stoneout_2;
3706 case Xsand_stoneout_2:
3707 Next[y][x] = Xstone_fall;
3709 case Xsand_sandstone_1:
3710 Next[y][x] = Xsand_sandstone_2;
3712 case Xsand_sandstone_2:
3713 Next[y][x] = Xsand_sandstone_3;
3715 case Xsand_sandstone_3:
3716 Next[y][x] = Xsand_sandstone_4;
3718 case Xsand_sandstone_4:
3719 Next[y][x] = Xsand_stone;
3721 /* ---------------------------------------------------------------------- */
3723 if(lev.lenses_cnt) Cave[y][x] = XdripperB;
3725 /* ---------------------------------------------------------------------- */
3727 if(lev.lenses_cnt) Cave[y][x] = Xfake_blankB;
3729 /* ---------------------------------------------------------------------- */
3731 if(lev.magnify_cnt) Cave[y][x] = Xfake_grassB;
3733 /* ---------------------------------------------------------------------- */
3735 if(lev.magnify_cnt) Cave[y][x] = Xdoor_1;
3738 if(lev.magnify_cnt) Cave[y][x] = Xdoor_2;
3741 if(lev.magnify_cnt) Cave[y][x] = Xdoor_3;
3744 if(lev.magnify_cnt) Cave[y][x] = Xdoor_4;
3747 if(lev.magnify_cnt) Cave[y][x] = Xdoor_5;
3750 if(lev.magnify_cnt) Cave[y][x] = Xdoor_6;
3753 if(lev.magnify_cnt) Cave[y][x] = Xdoor_7;
3756 if(lev.magnify_cnt) Cave[y][x] = Xdoor_8;
3758 /* ---------------------------------------------------------------------- */
3761 Next[y][x] = Znormal;
3762 Boom[y-1][x-1] = Xemerald;
3763 Boom[y-1][x] = Xemerald;
3764 Boom[y-1][x+1] = Xemerald;
3765 Boom[y][x-1] = Xemerald;
3766 Boom[y][x] = Xdiamond;
3767 Boom[y][x+1] = Xemerald;
3768 Boom[y+1][x-1] = Xemerald;
3769 Boom[y+1][x] = Xemerald;
3770 Boom[y+1][x+1] = Xemerald;
3774 Next[y][x] = Znormal;
3775 Boom[y-1][x-1] = Xblank;
3776 Boom[y-1][x] = Xblank;
3777 Boom[y-1][x+1] = Xblank;
3778 Boom[y][x-1] = Xblank;
3779 Boom[y][x] = Xblank;
3780 Boom[y][x+1] = Xblank;
3781 Boom[y+1][x-1] = Xblank;
3782 Boom[y+1][x] = Xblank;
3783 Boom[y+1][x+1] = Xblank;
3787 Next[y][x] = Xboom_2;
3788 play[SAMPLE_boom] = 1;
3791 Next[y][x] = Boom[y][x];
3793 /* ---------------------------------------------------------------------- */
3795 if(++y < HEIGHT - 1) {
3797 cave_cache = Cave[y];
3808 if(ply1.alive || ply2.alive) lev.score += score; /* only get a score if someone is alive */
3811 void *temp = Cave; Cave = Next; Next = Draw; Draw = temp; /* triple buffering */