diff options
Diffstat (limited to 'taipan.c')
-rw-r--r-- | taipan.c | 72 |
1 files changed, 33 insertions, 39 deletions
@@ -8,7 +8,7 @@ /* define this for testing sea_battle(). it causes a pirate attack every time you leave port. Don't leave defined for a release!! */ -// #define COMBAT_TEST +#define COMBAT_TEST /**** atari-specific stuff */ @@ -126,10 +126,11 @@ void quit(void); void overload(void); void fancy_numbers(unsigned long num, char *fancy); int sea_battle(int id, int num_ships); -extern void __fastcall__ draw_lorcha(int which, int displacement, int mask); -void clear_lorcha(int x, int y); -void draw_blast(int x, int y); -void sink_lorcha(int which); +extern void __fastcall__ draw_lorcha(int which); +extern void __fastcall__ flash_lorcha(int which); +extern void __fastcall__ damage_lorcha(int which); +extern void __fastcall__ sink_lorcha(int which); +extern void __fastcall__ clear_lorcha(int which); void fight_stats(int ships, int orders); void mchenry(void); void retire(void); @@ -482,14 +483,6 @@ void fight_stats(int ships, int orders) return; } -void sink_lorcha(int which) { - int i; - for(i = 1; i < 8; i++) { - draw_lorcha(which, i, 0); - jsleep(5); - } -} - /* print an inverse video plus if there are offscreen ships, or clear it to a space if not. */ void plus_or_space(unsigned char b) { @@ -550,7 +543,7 @@ int sea_battle(int id, int num_ships) { if (ships_on_screen[i] == 0) { jsleep(5); ships_on_screen[i] = (randi() % ec) + 20; - draw_lorcha(i, 0, 0); + draw_lorcha(i); num_on_screen++; } } @@ -560,7 +553,7 @@ int sea_battle(int id, int num_ships) { gotoxy(0, 16); cputs("\r\n"); - timed_getch(TMOUT_3S); + input = timed_getch(TMOUT_3S); if(input == 'f') { orders = 1; @@ -571,7 +564,7 @@ int sea_battle(int id, int num_ships) { } if(orders == 0) { - timed_getch(TMOUT_3S); + input = timed_getch(TMOUT_3S); if (input == 'f') { @@ -635,7 +628,7 @@ int sea_battle(int id, int num_ships) { if (num_ships > num_on_screen) { if(ships_on_screen[j] == 0) { ships_on_screen[j] = randclamp(ec) + 20; - draw_lorcha(j, 0, 0); + draw_lorcha(j); num_on_screen++; } } @@ -653,17 +646,21 @@ int sea_battle(int id, int num_ships) { targeted = randi()%10; } - draw_lorcha(targeted, 0, 0x80); - jsleep(5); - - draw_lorcha(targeted, 0, 0); - jsleep(5); - - draw_lorcha(targeted, 0, 0x80); - jsleep(5); - - draw_lorcha(targeted, 0, 0); - jsleep(5); + /* flash_lorcha must be called an even number of times + to leave the lorcha in an unflashed state after. */ + flash_lorcha(targeted); + jsleep(2); + flash_lorcha(targeted); + jsleep(2); + flash_lorcha(targeted); + jsleep(2); + flash_lorcha(targeted); + jsleep(2); + flash_lorcha(targeted); + jsleep(2); + flash_lorcha(targeted); + jsleep(2); + damage_lorcha(targeted); ships_on_screen[targeted] -= randi()%30 + 10; @@ -676,12 +673,6 @@ int sea_battle(int id, int num_ships) { sink_lorcha(targeted); plus_or_space(num_ships > num_on_screen); - /* - if(num_ships == num_on_screen) { - gotoxy(39, 7); - cputc(' '); - } - */ fight_stats(num_ships, orders); } @@ -721,7 +712,7 @@ int sea_battle(int id, int num_ships) { ships_on_screen[i] = 0; num_on_screen--; - draw_lorcha(i, 7, 0); + clear_lorcha(i); jsleep(5); } } @@ -886,7 +877,7 @@ int sea_battle(int id, int num_ships) { ships_on_screen[i] = 0; num_on_screen--; - draw_lorcha(i, 7, 0); + clear_lorcha(i); jsleep(5); } } @@ -930,11 +921,13 @@ int sea_battle(int id, int num_ships) { } fight_stats(num_ships, orders); + /* XXX: I don't think this is needed at all! for(i = 0; i <= 9; i++) { if(ships_on_screen[i] > 0) { - draw_lorcha(i, 0, 0); + draw_lorcha(i); } } + */ plus_or_space(num_ships > num_on_screen); @@ -1270,8 +1263,8 @@ void splash_intro(void) { int i; - for(i=0; i<3; i++) draw_lorcha(i, 0, 0); - for(i=5; i<8; i++) draw_lorcha(i, 0, 0); + for(i=0; i<3; i++) draw_lorcha(i); + for(i=5; i<8; i++) draw_lorcha(i); timed_getch(TMOUT_5M); @@ -1726,6 +1719,7 @@ void quit(void) cputs(" I think we're going down!!\r\n\n"); timed_getch(TMOUT_3S); + // FIXME: the randclamp() version of this is broken badly! // if (((damage / capacity * 3) * ((float) randi() / RAND_MAX)) >= 1) if(randclamp(damage / capacity * 3) >= 1) { |