Annotation of 43BSDTahoe/games/monop/morg.c, revision 1.1.1.1

1.1       root        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[] = "@(#)morg.c     5.2 (Berkeley) 6/18/88";
                     20: #endif /* not lint */
                     21: 
                     22: # include      "monop.ext"
                     23: 
                     24: /*
                     25:  *     These routines deal with mortgaging.
                     26:  */
                     27: 
                     28: static char    *names[MAX_PRP+2],
                     29:                *morg_coms[]    = {
                     30:                        "quit",         /*  0 */
                     31:                        "print",        /*  1 */
                     32:                        "where",        /*  2 */
                     33:                        "own holdings", /*  3 */
                     34:                        "holdings",     /*  4 */
                     35:                        "shell",        /*  5 */
                     36:                        "mortgage",     /*  6 */
                     37:                        "unmortgage",   /*  7 */
                     38:                        "buy",          /*  8 */
                     39:                        "sell",         /*  9 */
                     40:                        "card",         /* 10 */
                     41:                        "pay",          /* 11 */
                     42:                        "trade",        /* 12 */
                     43:                        "resign",       /* 13 */
                     44:                        "save game",    /* 14 */
                     45:                        "restore game", /* 15 */
                     46:                        0
                     47:                };
                     48: 
                     49: static shrt    square[MAX_PRP+2];
                     50: 
                     51: static int     num_good,got_houses;
                     52: 
                     53: /*
                     54:  *     This routine is the command level response the mortgage command.
                     55:  * it gets the list of mortgageable property and asks which are to
                     56:  * be mortgaged.
                     57:  */
                     58: mortgage() {
                     59: 
                     60:        reg int prop;
                     61: 
                     62:        for (;;) {
                     63:                if (set_mlist() == 0) {
                     64:                        if (got_houses)
                     65:                                printf("You can't mortgage property with houses on it.\n");
                     66:                        else
                     67:                                printf("You don't have any un-mortgaged property.\n");
                     68:                        return;
                     69:                }
                     70:                if (num_good == 1) {
                     71:                        printf("Your only mortageable property is %s\n",names[0]);
                     72:                        if (getyn("Do you want to mortgage it? ") == 0)
                     73:                                m(square[0]);
                     74:                        return;
                     75:                }
                     76:                prop = getinp("Which property do you want to mortgage? ",names);
                     77:                if (prop == num_good)
                     78:                        return;
                     79:                m(square[prop]);
                     80:                notify(cur_p);
                     81:        }
                     82: }
                     83: /*
                     84:  *     This routine sets up the list of mortgageable property
                     85:  */
                     86: set_mlist() {
                     87: 
                     88:        reg OWN *op;
                     89: 
                     90:        num_good = 0;
                     91:        for (op = cur_p->own_list; op; op = op->next)
                     92:                if (!op->sqr->desc->morg)
                     93:                        if (op->sqr->type == PRPTY && op->sqr->desc->houses)
                     94:                                got_houses++;
                     95:                        else {
                     96:                                names[num_good] = op->sqr->name;
                     97:                                square[num_good++] = sqnum(op->sqr);
                     98:                        }
                     99:        names[num_good++] = "done";
                    100:        names[num_good--] = 0;
                    101:        return num_good;
                    102: }
                    103: /*
                    104:  *     This routine actually mortgages the property.
                    105:  */
                    106: m(prop)
                    107: reg int        prop; {
                    108: 
                    109:        reg int price;
                    110: 
                    111:        price = board[prop].cost/2;
                    112:        board[prop].desc->morg = TRUE;
                    113:        printf("That got you $%d\n",price);
                    114:        cur_p->money += price;
                    115: }
                    116: /*
                    117:  *     This routine is the command level repsponse to the unmortgage
                    118:  * command.  It gets the list of mortgaged property and asks which are
                    119:  * to be unmortgaged.
                    120:  */
                    121: unmortgage() {
                    122: 
                    123:        reg int prop;
                    124: 
                    125:        for (;;) {
                    126:                if (set_umlist() == 0) {
                    127:                        printf("You don't have any mortgaged property.\n");
                    128:                        return;
                    129:                }
                    130:                if (num_good == 1) {
                    131:                        printf("Your only mortaged property is %s\n",names[0]);
                    132:                        if (getyn("Do you want to unmortgage it? ") == 0)
                    133:                                unm(square[0]);
                    134:                        return;
                    135:                }
                    136:                prop = getinp("Which property do you want to unmortgage? ",names);
                    137:                if (prop == num_good)
                    138:                        return;
                    139:                unm(square[prop]);
                    140:        }
                    141: }
                    142: /*
                    143:  *     This routine sets up the list of mortgaged property
                    144:  */
                    145: set_umlist() {
                    146: 
                    147:        reg OWN *op;
                    148: 
                    149:        num_good = 0;
                    150:        for (op = cur_p->own_list; op; op = op->next)
                    151:                if (op->sqr->desc->morg) {
                    152:                        names[num_good] = op->sqr->name;
                    153:                        square[num_good++] = sqnum(op->sqr);
                    154:                }
                    155:        names[num_good++] = "done";
                    156:        names[num_good--] = 0;
                    157:        return num_good;
                    158: }
                    159: /*
                    160:  *     This routine actually unmortgages the property
                    161:  */
                    162: unm(prop)
                    163: reg int        prop; {
                    164: 
                    165:        reg int price;
                    166: 
                    167:        price = board[prop].cost/2;
                    168:        board[prop].desc->morg = FALSE;
                    169:        price += price/10;
                    170:        printf("That cost you $%d\n",price);
                    171:        cur_p->money -= price;
                    172:        set_umlist();
                    173: }
                    174: /*
                    175:  *     This routine forces the indebted player to fix his
                    176:  * financial woes.
                    177:  */
                    178: force_morg() {
                    179: 
                    180:        told_em = fixing = TRUE;
                    181:        while (cur_p->money <= 0)
                    182:                fix_ex(getinp("How are you going to fix it up? ",morg_coms));
                    183:        fixing = FALSE;
                    184: }
                    185: /*
                    186:  *     This routine is a special execute for the force_morg routine
                    187:  */
                    188: fix_ex(com_num)
                    189: reg int        com_num; {
                    190: 
                    191:        told_em = FALSE;
                    192:        (*func[com_num])();
                    193:        notify();
                    194: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.