char xstr[]; #line 1 "trade.c" #line 1 "./monop.ext" #line 1 "./monop.h" #line 1 "/usr/include/stdio.h" extern struct _iobuf { int _cnt; char *_ptr; char *_base; int _bufsiz; short _flag; char _file; } _iob[20]; struct _iobuf *fopen(); struct _iobuf *fdopen(); struct _iobuf *freopen(); long ftell(); char *fgets(); char *sprintf(); #line 2 "./monop.h" struct sqr_st { char *name; char owner; char type; char *desc; int cost; }; typedef struct sqr_st SQUARE; struct mon_st { char *name; char owner; char num_in; char num_own; char h_cost; char *not_m; char *mon_n; SQUARE *sq[3]; }; typedef struct mon_st MON; struct prp_st { char morg; char monop; char square; char houses; MON *mon_desc; int rent[6]; }; struct own_st { SQUARE *sqr; struct own_st *next; }; typedef struct own_st OWN; struct plr_st { char *name; char num_gojf; char num_rr; char num_util; char loc; char in_jail; int money; OWN *own_list; }; struct rr_st { char morg; }; typedef struct plr_st PLAY; typedef struct prp_st PROP; typedef struct rr_st RR_S; typedef struct rr_st UTIL_S; int cc(), chance(), lux_tax(), goto_jail(), inc_tax(); #line 2 "./monop.ext" #line 1 "./deck.h" struct dk_st { int num_cards; int last_card; char gojf_used; long *offsets; }; typedef struct dk_st DECK; #line 3 "./monop.ext" extern char trading, spec, fixing, told_em; extern char *yn[], *comlist[], *name_list[], *lucky_mes[]; extern int num_play, player, num_doub, num_luck, (*func[])(); extern DECK deck[2]; extern MON mon[]; extern PLAY *play, *cur_p; extern PROP prop[]; extern RR_S rr[]; extern SQUARE board[]; extern UTIL_S util[]; #line 2 "trade.c" static struct trd_st { int trader; int cash; int gojf; OWN *prop_list; }; typedef struct trd_st TRADE; static char *list[(22 +4 +2 ) +2]; static int used[(22 +4 +2 ) ]; static TRADE trades[2]; trade() { register int tradee, i; trading = (1); for (i = 0; i < 2; i++) { trades[i].cash = 0; trades[i].gojf = (0); trades[i].prop_list = 0; } over: if (num_play == 1) { printf((&xstr[4876])); return; } if (num_play > 2) { tradee = getinp((&xstr[4919]), name_list); if (tradee == num_play) return; if (tradee == player) { printf((&xstr[4960])); goto over; } } else tradee = 1 - player; get_list(0, player); get_list(1, tradee); if (getyn((&xstr[4992])) == 0) summate(); if (getyn((&xstr[5016])) == 0) do_trade(); } get_list(struct_no, play_no) int struct_no, play_no; { register int sn, pn; register PLAY *pp; int numin, prop, num_prp; OWN *op; TRADE *tp; for (numin = 0; numin < (22 +4 +2 ) ; numin++) used[numin] = (0); sn = struct_no, pn = play_no; pp = &play[pn]; tp = &trades[sn]; tp->trader = pn; printf((&xstr[5034]), pp->name, pn+1); if (pp->own_list) { numin = set_list(pp->own_list); for (num_prp = numin; num_prp; ) { prop = getinp((&xstr[5051]), list); if (prop == numin) break; else if (used[prop]) printf((&xstr[5089])); else { num_prp--; used[prop] = (1); for (op = pp->own_list; prop--; op = op->next) continue; add_list(pn, &(tp->prop_list), (op->sqr - board)); } } } if (pp->money > 0) { printf((&xstr[5121]), pp->money); tp->cash = get_int((&xstr[5137])); } if (pp->num_gojf > 0) { once_more: printf((&xstr[5164]),pp->num_gojf); tp->gojf = get_int((&xstr[5205])); if (tp->gojf > pp->num_gojf) { printf((&xstr[5232])); goto once_more; } } } set_list(the_list) register OWN *the_list; { register int i; register OWN *op; i = 0; for (op = the_list; op; op = op->next) if (!used[i]) list[i++] = op->sqr->name; list[i++] = (&xstr[1245]); list[i--] = 0; return i; } summate() { register char some; register int i; register TRADE *tp; OWN *op; for (i = 0; i < 2; i++) { tp = &trades[i]; some = (0); printf((&xstr[5271]), play[tp->trader].name, tp->trader+1); if (tp->cash > 0) printf((&xstr[5294]), tp->cash), some++; if (tp->gojf > 0) printf((&xstr[5300]), tp->gojf), some++; if (tp->prop_list) { for (op = tp->prop_list; op; op = op->next) (--((&_iob[1]))->_cnt>=0? ((int)(*((&_iob[1]))->_ptr++=(unsigned)('\t'))):_flsbuf((unsigned)('\t'),(&_iob[1]))), printsq( (op->sqr - board), (1)); some++; } if (!some) printf((&xstr[5334])); } } do_trade() { move_em(&trades[0], &trades[1]); move_em(&trades[1], &trades[0]); } move_em(from, to) TRADE *from, *to; { register PLAY *pl_fr, *pl_to; register OWN *op; pl_fr = &play[from->trader]; pl_to = &play[to->trader]; pl_fr->money -= from->cash; pl_to->money += from->cash; pl_fr->num_gojf -= from->gojf; pl_to->num_gojf += from->gojf; for (op = from->prop_list; op; op = op->next) { add_list(to->trader, &(pl_to->own_list), (op->sqr - board)); op->sqr->owner = to->trader; del_list(from->trader, &(pl_fr->own_list), (op->sqr - board)); } set_ownlist(to->trader); } resign() { register int i, new_own; register OWN *op; SQUARE *sqp; if (cur_p->money <= 0) { switch (board[cur_p->loc].type) { case 2 : case 1 : case 0 : new_own = board[cur_p->loc].owner; break; case 6 : case 4 : case 5 : new_own = num_play; break; } if (new_own == num_play) printf((&xstr[5350])); else printf((&xstr[5380]), name_list[new_own]); } else if (num_play == 1) { new_own = num_play; printf((&xstr[5350])); } else { name_list[num_play] = (&xstr[5404]); do { new_own = getinp((&xstr[5409]), name_list); if (new_own == player) printf((&xstr[5440])); } while (new_own == player); name_list[num_play] = (&xstr[1245]); } if (getyn((&xstr[5472]), yn) != 0) return; if (num_play == 1) { printf((&xstr[5503])); exit(0); } if (new_own < num_play) { printf((&xstr[5537])); trades[0].trader = new_own; trades[0].cash = trades[0].gojf = 0; trades[0].prop_list = 0; trades[1].trader = player; trades[1].cash = cur_p->money > 0 ? cur_p->money : 0; trades[1].gojf = cur_p->num_gojf; trades[1].prop_list = cur_p->own_list; do_trade(); } else { printf((&xstr[5558])); for (op = cur_p->own_list; op; op = op->next) { sqp = op->sqr; sqp->owner = -1; sqp->desc->morg = (0); if (op->type == 0 ) { isnot_monop(sqp->desc->mon_desc); sqp->desc->houses = 0; } } if (cur_p->num_gojf) ret_card(cur_p); } for (i = player; i < num_play; i++) { name_list[i] = name_list[i+1]; if (i + 1 < num_play) cpy_st(&play[i], &play[i+1], sizeof (PLAY)); } name_list[num_play--] = 0; for (i = 0; i < 40 ; i++) if (board[i].owner > player) --board[i].owner; player = --player < 0 ? num_play - 1 : player; next_play(); if (num_play < 2) { printf((&xstr[5577]), play[0].name); printhold(0); printf((&xstr[5597]), play[0].money+prop_worth(&play[0])); exit(0); } }