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