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