xref: /original-bsd/games/trek/win.c (revision 7e7b101a)
1 #ifndef lint
2 static char sccsid[] = "@(#)win.c	4.1	(Berkeley)	03/23/83";
3 #endif not lint
4 
5 # include	"trek.h"
6 # include	"getpar.h"
7 
8 /*
9 **  Signal game won
10 **
11 **	This routine prints out the win message, arranges to print out
12 **	your score, tells you if you have a promotion coming to you,
13 **	cleans up the current input line, and arranges to have you
14 **	asked whether or not you want another game (via the reset()
15 **	call).
16 **
17 **	Pretty straightforward, although the promotion algorithm is
18 **	pretty off the wall.
19 */
20 
21 win()
22 {
23 	long			s;
24 	extern long		score();
25 	extern struct cvntab	Skitab[];
26 	register struct cvntab	*p;
27 
28 	sleep(1);
29 	printf("\nCongratulations, you have saved the Federation\n");
30 	Move.endgame = 1;
31 
32 	/* print and return the score */
33 	s = score();
34 
35 	/* decide if she gets a promotion */
36 	if (Game.helps == 0 && Game.killb == 0 && Game.killinhab == 0 && 5 * Game.kills + Game.deaths < 100 &&
37 			s >= 1000 && Ship.ship == ENTERPRISE)
38 	{
39 		printf("In fact, you are promoted one step in rank,\n");
40 		if (Game.skill >= 6)
41 			printf("to the exalted rank of Commodore Emeritus\n");
42 		else
43 		{
44 			p = &Skitab[Game.skill - 1];
45 			printf("from %s%s ", p->abrev, p->full);
46 			p++;
47 			printf("to %s%s\n", p->abrev, p->full);
48 		}
49 	}
50 
51 	/* clean out input, and request new game */
52 	skiptonl(0);
53 	reset();
54 }
55