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

Defined functions

fix_ex defined in line 167; used 1 times
force_morg defined in line 157; used 2 times
m defined in line 85; used 2 times
mortgage defined in line 37; never used
set_mlist defined in line 65; used 1 times
  • in line 42
set_umlist defined in line 124; used 2 times
unm defined in line 141; used 2 times
unmortgage defined in line 100; never used

Defined variables

got_houses defined in line 30; used 2 times
morg_coms defined in line 8; used 1 times
names defined in line 7; used 10 times
num_good defined in line 30; used 16 times
Last modified: 1982-06-09
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1110
Valid CSS Valid XHTML 1.0 Strict