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