xref: /original-bsd/games/monop/jail.c (revision 28301386)
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[] = "@(#)jail.c	5.2 (Berkeley) 06/18/88";
20 #endif /* not lint */
21 
22 # include	"monop.ext"
23 
24 /*
25  *	This routine uses a get-out-of-jail-free card to get the
26  * player out of jail.
27  */
28 card() {
29 
30 	if (cur_p->loc != JAIL) {
31 		printf("But you're not IN Jail\n");
32 		return;
33 	}
34 	if (cur_p->num_gojf == 0) {
35 		printf("But you don't HAVE a get out of jail free card\n");
36 		return;
37 	}
38 	ret_card(cur_p);
39 	cur_p->loc = 10;			/* just visiting	*/
40 	cur_p->in_jail = 0;
41 }
42 /*
43  *	This routine returns the players get-out-of-jail-free card
44  * to a deck.
45  */
46 ret_card(plr)
47 reg PLAY	*plr; {
48 
49 	plr->num_gojf--;
50 	if (CC_D.gojf_used)
51 		CC_D.gojf_used = FALSE;
52 	else
53 		CH_D.gojf_used = FALSE;
54 }
55 /*
56  *	This routine deals with paying your way out of jail.
57  */
58 pay() {
59 
60 	if (cur_p->loc != JAIL) {
61 		printf("But you're not IN Jail\n");
62 		return;
63 	}
64 	cur_p->loc = 10;
65 	cur_p->money -= 50;
66 	cur_p->in_jail = 0;
67 	printf("That cost you $50\n");
68 }
69 /*
70  *	This routine deals with a move in jail
71  */
72 move_jail(r1, r2)
73 reg int	r1, r2; {
74 
75 	if (r1 != r2) {
76 		printf("Sorry, that doesn't get you out\n");
77 		if (++(cur_p->in_jail) == 3) {
78 			printf("It's your third turn and you didn't roll doubles.  You have to pay $50\n");
79 			cur_p->money -= 50;
80 moveit:
81 			cur_p->loc = 10;
82 			cur_p->in_jail = 0;
83 			move(r1+r2);
84 			r1 = r2 - 1;	/* kludge: stop new roll w/doub	*/
85 			return TRUE;
86 		}
87 		return FALSE;
88 	}
89 	else {
90 		printf("Double roll gets you out.\n");
91 		goto moveit;
92 	}
93 }
94 printturn() {
95 
96 	if (cur_p->loc != JAIL)
97 		return;
98 	printf("(This is your ");
99 	switch (cur_p->in_jail) {
100 	  case 0:
101 		printf("1st");
102 		break;
103 	  case 1:
104 		printf("2nd");
105 		break;
106 	  case 2:
107 		printf("3rd (and final)");
108 		break;
109 	}
110 	printf(" turn in JAIL)\n");
111 }
112