Annotation of 43BSDTahoe/games/monop/morg.c, revision 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.