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

unix.superglobalmegacorp.com

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