xref: /netbsd-src/games/monop/rent.c (revision c34afa686bf074a6dcc7f17157faae72111dde9a)
1*c34afa68Sdholland /*	$NetBSD: rent.c,v 1.9 2012/06/19 05:35:32 dholland Exp $	*/
242fb1b9dScgd 
361f28255Scgd /*
442fb1b9dScgd  * Copyright (c) 1980, 1993
542fb1b9dScgd  *	The Regents of the University of California.  All rights reserved.
661f28255Scgd  *
761f28255Scgd  * Redistribution and use in source and binary forms, with or without
861f28255Scgd  * modification, are permitted provided that the following conditions
961f28255Scgd  * are met:
1061f28255Scgd  * 1. Redistributions of source code must retain the above copyright
1161f28255Scgd  *    notice, this list of conditions and the following disclaimer.
1261f28255Scgd  * 2. Redistributions in binary form must reproduce the above copyright
1361f28255Scgd  *    notice, this list of conditions and the following disclaimer in the
1461f28255Scgd  *    documentation and/or other materials provided with the distribution.
15e5aeb4eaSagc  * 3. Neither the name of the University nor the names of its contributors
1661f28255Scgd  *    may be used to endorse or promote products derived from this software
1761f28255Scgd  *    without specific prior written permission.
1861f28255Scgd  *
1961f28255Scgd  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
2061f28255Scgd  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2161f28255Scgd  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2261f28255Scgd  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
2361f28255Scgd  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2461f28255Scgd  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2561f28255Scgd  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2661f28255Scgd  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2761f28255Scgd  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2861f28255Scgd  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2961f28255Scgd  * SUCH DAMAGE.
3061f28255Scgd  */
3161f28255Scgd 
32b118ad22Schristos #include <sys/cdefs.h>
3361f28255Scgd #ifndef lint
3442fb1b9dScgd #if 0
3542fb1b9dScgd static char sccsid[] = "@(#)rent.c	8.1 (Berkeley) 5/31/93";
3642fb1b9dScgd #else
37*c34afa68Sdholland __RCSID("$NetBSD: rent.c,v 1.9 2012/06/19 05:35:32 dholland Exp $");
3842fb1b9dScgd #endif
3961f28255Scgd #endif /* not lint */
4061f28255Scgd 
41b51259daSdholland #include "monop.h"
4261f28255Scgd 
4361f28255Scgd /*
4461f28255Scgd  *	This routine has the player pay rent
4561f28255Scgd  */
46b118ad22Schristos void
rent(SQUARE * sqp)47*c34afa68Sdholland rent(SQUARE *sqp)
48b118ad22Schristos {
49b118ad22Schristos 	int rnt = 0;
50b118ad22Schristos 	PROP *pp;
5161f28255Scgd 	PLAY *plp;
5261f28255Scgd 
5361f28255Scgd 	plp = &play[sqp->owner];
5461f28255Scgd 	printf("Owned by %s\n", plp->name);
5561f28255Scgd 	if (sqp->desc->morg) {
5661f28255Scgd 		lucky("The thing is mortgaged.  ");
5761f28255Scgd 		return;
5861f28255Scgd 	}
5961f28255Scgd 	switch (sqp->type) {
6061f28255Scgd 	  case PRPTY:
6161f28255Scgd 		pp = sqp->desc;
6261f28255Scgd 		if (pp->monop)
6361f28255Scgd 			if (pp->houses == 0)
6461f28255Scgd 				printf("rent is %d\n", rnt=pp->rent[0] * 2);
6561f28255Scgd 			else if (pp->houses < 5)
66693812a8Sdholland 				printf("with %d house%s, rent is %d\n",
67693812a8Sdholland 				    pp->houses, pp->houses == 1 ? "" : "s",
68693812a8Sdholland 				    rnt=pp->rent[pp->houses]);
6961f28255Scgd 			else
7061f28255Scgd 				printf("with a hotel, rent is %d\n",
7161f28255Scgd 				    rnt=pp->rent[pp->houses]);
7261f28255Scgd 		else
7361f28255Scgd 			printf("rent is %d\n", rnt = pp->rent[0]);
7461f28255Scgd 		break;
7561f28255Scgd 	  case RR:
7661f28255Scgd 		rnt = 25;
7761f28255Scgd 		rnt <<= (plp->num_rr - 1);
7861f28255Scgd 		if (spec)
7961f28255Scgd 			rnt <<= 1;
8061f28255Scgd 		printf("rent is %d\n", rnt);
8161f28255Scgd 		break;
8261f28255Scgd 	  case UTIL:
8361f28255Scgd 		rnt = roll(2, 6);
8461f28255Scgd 		if (plp->num_util == 2 || spec) {
8561f28255Scgd 			printf("rent is 10 * roll (%d) = %d\n", rnt, rnt * 10);
8661f28255Scgd 			rnt *= 10;
8761f28255Scgd 		}
8861f28255Scgd 		else {
8961f28255Scgd 			printf("rent is 4 * roll (%d) = %d\n", rnt, rnt * 4);
9061f28255Scgd 			rnt *= 4;
9161f28255Scgd 		}
9261f28255Scgd 		break;
9361f28255Scgd 	}
9461f28255Scgd 	cur_p->money -= rnt;
9561f28255Scgd 	plp->money += rnt;
9661f28255Scgd }
97