1 /* 2 * Copyright (c) 1980 Regents of the University of California. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms are permitted 6 * provided that the above copyright notice and this paragraph are 7 * duplicated in all such forms and that any documentation, 8 * advertising materials, and other materials related to such 9 * distribution and use acknowledge that the software was developed 10 * by the University of California, Berkeley. The name of the 11 * University may not be used to endorse or promote products derived 12 * from this software without specific prior written permission. 13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 15 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 16 */ 17 18 #ifndef lint 19 static char sccsid[] = "@(#)win.c 5.3 (Berkeley) 06/18/88"; 20 #endif /* not lint */ 21 22 # include "trek.h" 23 # include "getpar.h" 24 25 /* 26 ** Signal game won 27 ** 28 ** This routine prints out the win message, arranges to print out 29 ** your score, tells you if you have a promotion coming to you, 30 ** cleans up the current input line, and arranges to have you 31 ** asked whether or not you want another game (via the reset() 32 ** call). 33 ** 34 ** Pretty straightforward, although the promotion algorithm is 35 ** pretty off the wall. 36 */ 37 38 win() 39 { 40 long s; 41 extern long score(); 42 extern struct cvntab Skitab[]; 43 register struct cvntab *p; 44 45 sleep(1); 46 printf("\nCongratulations, you have saved the Federation\n"); 47 Move.endgame = 1; 48 49 /* print and return the score */ 50 s = score(); 51 52 /* decide if she gets a promotion */ 53 if (Game.helps == 0 && Game.killb == 0 && Game.killinhab == 0 && 5 * Game.kills + Game.deaths < 100 && 54 s >= 1000 && Ship.ship == ENTERPRISE) 55 { 56 printf("In fact, you are promoted one step in rank,\n"); 57 if (Game.skill >= 6) 58 printf("to the exalted rank of Commodore Emeritus\n"); 59 else 60 { 61 p = &Skitab[Game.skill - 1]; 62 printf("from %s%s ", p->abrev, p->full); 63 p++; 64 printf("to %s%s\n", p->abrev, p->full); 65 } 66 } 67 68 /* clean out input, and request new game */ 69 skiptonl(0); 70 reset(); 71 } 72