X-Git-Url: https://git.cameronkatri.com/bsdgames-darwin.git/blobdiff_plain/5a555a984855e94b0fc3c9154da6b65208ba2c70..9e7fd816e02e66962d482b02209f112e1d5789fc:/monop/morg.c diff --git a/monop/morg.c b/monop/morg.c index e7f37f3f..cc930781 100644 --- a/monop/morg.c +++ b/monop/morg.c @@ -1,4 +1,4 @@ -/* $NetBSD: morg.c,v 1.6 1998/08/30 09:19:39 veego Exp $ */ +/* $NetBSD: morg.c,v 1.18 2008/02/24 06:07:06 dholland Exp $ */ /* * Copyright (c) 1980, 1993 @@ -12,11 +12,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -38,18 +34,18 @@ #if 0 static char sccsid[] = "@(#)morg.c 8.1 (Berkeley) 5/31/93"; #else -__RCSID("$NetBSD: morg.c,v 1.6 1998/08/30 09:19:39 veego Exp $"); +__RCSID("$NetBSD: morg.c,v 1.18 2008/02/24 06:07:06 dholland Exp $"); #endif #endif /* not lint */ -# include "monop.ext" +#include "monop.h" /* * These routines deal with mortgaging. */ -static char *names[MAX_PRP+2], - *morg_coms[] = { +static const char *names[MAX_PRP+2], + *const morg_coms[] = { "quit", /* 0 */ "print", /* 1 */ "where", /* 2 */ @@ -70,14 +66,13 @@ static char *names[MAX_PRP+2], static short square[MAX_PRP+2]; -static int num_good,got_houses; +static int num_good, got_houses; -static int set_mlist __P((void)); -static void m __P((int)); -static int set_umlist __P((void)); -static void unm __P((int)); -static void fix_ex __P((int)); +static int set_mlist(void); +static void m(int); +static int set_umlist(void); +static void unm(int); /* * This routine is the command level response the mortgage command. @@ -87,38 +82,41 @@ static void fix_ex __P((int)); void mortgage() { - - int prop; + int propnum; for (;;) { if (set_mlist() == 0) { if (got_houses) - printf("You can't mortgage property with houses on it.\n"); + printf("You can't mortgage property with " + "houses on it.\n"); else - printf("You don't have any un-mortgaged property.\n"); + printf("You don't have any un-mortgaged " + "property.\n"); return; } if (num_good == 1) { - printf("Your only mortageable property is %s\n",names[0]); + printf("Your only mortgageable property is %s\n", + names[0]); if (getyn("Do you want to mortgage it? ") == 0) m(square[0]); return; } - prop = getinp("Which property do you want to mortgage? ",names); - if (prop == num_good) + propnum = getinp("Which property do you want to mortgage? ", + names); + if (propnum == num_good) return; - m(square[prop]); + m(square[propnum]); notify(); } } + /* * This routine sets up the list of mortgageable property */ static int set_mlist() { - - OWN *op; + OWN *op; num_good = 0; for (op = cur_p->own_list; op; op = op->next) @@ -134,31 +132,31 @@ set_mlist() names[num_good--] = 0; return num_good; } + /* * This routine actually mortgages the property. */ static void -m(prop) -int prop; +m(propnum) + int propnum; { + int price; - int price; - - price = board[prop].cost/2; - board[prop].desc->morg = TRUE; + price = board[propnum].cost/2; + board[propnum].desc->morg = TRUE; printf("That got you $%d\n",price); cur_p->money += price; } + /* * This routine is the command level repsponse to the unmortgage * command. It gets the list of mortgaged property and asks which are * to be unmortgaged. */ void -unmortgage() +unmortgage() { - - int prop; + int propnum; for (;;) { if (set_umlist() == 0) { @@ -166,25 +164,27 @@ unmortgage() return; } if (num_good == 1) { - printf("Your only mortaged property is %s\n",names[0]); + printf("Your only mortgaged property is %s\n", + names[0]); if (getyn("Do you want to unmortgage it? ") == 0) unm(square[0]); return; } - prop = getinp("Which property do you want to unmortgage? ",names); - if (prop == num_good) + propnum = getinp("Which property do you want to unmortgage? ", + names); + if (propnum == num_good) return; - unm(square[prop]); + unm(square[propnum]); } } + /* * This routine sets up the list of mortgaged property */ static int set_umlist() { - - OWN *op; + OWN *op; num_good = 0; for (op = cur_p->own_list; op; op = op->next) @@ -196,45 +196,35 @@ set_umlist() names[num_good--] = 0; return num_good; } + /* * This routine actually unmortgages the property */ static void -unm(prop) -int prop; +unm(int propnum) { + int price; - int price; - - price = board[prop].cost/2; - board[prop].desc->morg = FALSE; + price = board[propnum].cost/2; + board[propnum].desc->morg = FALSE; price += price/10; printf("That cost you $%d\n",price); cur_p->money -= price; - set_umlist(); + (void)set_umlist(); } + /* * This routine forces the indebted player to fix his - * financial woes. + * financial woes. It is fine to have $0 but not to be in debt. */ void -force_morg() +force_morg(void) { - told_em = fixing = TRUE; - while (cur_p->money <= 0) - fix_ex(getinp("How are you going to fix it up? ",morg_coms)); + while (cur_p->money < 0) { + told_em = FALSE; + (*func[(getinp("How are you going to fix it up? ", morg_coms))])(); + notify(); + } fixing = FALSE; } -/* - * This routine is a special execute for the force_morg routine - */ -static void -fix_ex(com_num) -int com_num; -{ - - told_em = FALSE; - (*func[com_num])(); - notify(); -}