Commit | Line | Data |
---|---|---|
bb0cfa24 DF |
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 | ||
4e84ca61 | 7 | #ifndef lint |
bb0cfa24 | 8 | static char sccsid[] = "@(#)win.c 5.1 (Berkeley) %G%"; |
4e84ca61 KM |
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 | } |