|
|
1.1 ! root 1: char xstr[]; ! 2: #line 1 "trade.c" ! 3: ! 4: #line 1 "./monop.ext" ! 5: ! 6: #line 1 "./monop.h" ! 7: ! 8: #line 1 "/usr/include/stdio.h" ! 9: ! 10: ! 11: ! 12: ! 13: extern struct _iobuf { ! 14: int _cnt; ! 15: char *_ptr; ! 16: char *_base; ! 17: int _bufsiz; ! 18: short _flag; ! 19: char _file; ! 20: } _iob[20]; ! 21: ! 22: ! 23: ! 24: ! 25: ! 26: ! 27: ! 28: ! 29: ! 30: ! 31: ! 32: ! 33: ! 34: ! 35: ! 36: ! 37: ! 38: ! 39: ! 40: ! 41: ! 42: ! 43: ! 44: ! 45: ! 46: ! 47: struct _iobuf *fopen(); ! 48: struct _iobuf *fdopen(); ! 49: struct _iobuf *freopen(); ! 50: long ftell(); ! 51: char *fgets(); ! 52: ! 53: char *sprintf(); ! 54: ! 55: #line 2 "./monop.h" ! 56: ! 57: ! 58: ! 59: ! 60: ! 61: ! 62: ! 63: ! 64: ! 65: ! 66: ! 67: ! 68: ! 69: ! 70: ! 71: ! 72: ! 73: ! 74: ! 75: ! 76: ! 77: ! 78: ! 79: ! 80: ! 81: ! 82: ! 83: ! 84: ! 85: ! 86: ! 87: ! 88: ! 89: ! 90: ! 91: ! 92: ! 93: struct sqr_st { ! 94: char *name; ! 95: char owner; ! 96: char type; ! 97: char *desc; ! 98: int cost; ! 99: }; ! 100: ! 101: typedef struct sqr_st SQUARE; ! 102: ! 103: struct mon_st { ! 104: char *name; ! 105: char owner; ! 106: char num_in; ! 107: char num_own; ! 108: char h_cost; ! 109: char *not_m; ! 110: char *mon_n; ! 111: SQUARE *sq[3]; ! 112: }; ! 113: ! 114: typedef struct mon_st MON; ! 115: ! 116: struct prp_st { ! 117: char morg; ! 118: char monop; ! 119: char square; ! 120: char houses; ! 121: MON *mon_desc; ! 122: int rent[6]; ! 123: }; ! 124: ! 125: struct own_st { ! 126: SQUARE *sqr; ! 127: struct own_st *next; ! 128: }; ! 129: ! 130: typedef struct own_st OWN; ! 131: ! 132: struct plr_st { ! 133: char *name; ! 134: char num_gojf; ! 135: char num_rr; ! 136: char num_util; ! 137: char loc; ! 138: char in_jail; ! 139: int money; ! 140: OWN *own_list; ! 141: }; ! 142: ! 143: struct rr_st { ! 144: char morg; ! 145: }; ! 146: ! 147: typedef struct plr_st PLAY; ! 148: typedef struct prp_st PROP; ! 149: typedef struct rr_st RR_S; ! 150: typedef struct rr_st UTIL_S; ! 151: ! 152: int cc(), chance(), lux_tax(), goto_jail(), inc_tax(); ! 153: #line 2 "./monop.ext" ! 154: ! 155: #line 1 "./deck.h" ! 156: ! 157: ! 158: ! 159: ! 160: ! 161: struct dk_st { ! 162: int num_cards; ! 163: int last_card; ! 164: char gojf_used; ! 165: long *offsets; ! 166: }; ! 167: ! 168: typedef struct dk_st DECK; ! 169: #line 3 "./monop.ext" ! 170: ! 171: extern char trading, spec, fixing, told_em; ! 172: ! 173: extern char *yn[], *comlist[], *name_list[], *lucky_mes[]; ! 174: ! 175: extern int num_play, player, num_doub, num_luck, (*func[])(); ! 176: ! 177: extern DECK deck[2]; ! 178: ! 179: extern MON mon[]; ! 180: ! 181: extern PLAY *play, *cur_p; ! 182: ! 183: extern PROP prop[]; ! 184: ! 185: extern RR_S rr[]; ! 186: ! 187: extern SQUARE board[]; ! 188: ! 189: extern UTIL_S util[]; ! 190: #line 2 "trade.c" ! 191: ! 192: static struct trd_st { ! 193: int trader; ! 194: int cash; ! 195: int gojf; ! 196: OWN *prop_list; ! 197: }; ! 198: ! 199: typedef struct trd_st TRADE; ! 200: ! 201: static char *list[(22 +4 +2 ) +2]; ! 202: ! 203: static int used[(22 +4 +2 ) ]; ! 204: ! 205: static TRADE trades[2]; ! 206: ! 207: trade() { ! 208: ! 209: register int tradee, i; ! 210: ! 211: trading = (1); ! 212: for (i = 0; i < 2; i++) { ! 213: trades[i].cash = 0; ! 214: trades[i].gojf = (0); ! 215: trades[i].prop_list = 0; ! 216: } ! 217: over: ! 218: if (num_play == 1) { ! 219: printf((&xstr[4876])); ! 220: return; ! 221: } ! 222: if (num_play > 2) { ! 223: tradee = getinp((&xstr[4919]), ! 224: name_list); ! 225: if (tradee == num_play) ! 226: return; ! 227: if (tradee == player) { ! 228: printf((&xstr[4960])); ! 229: goto over; ! 230: } ! 231: } ! 232: else ! 233: tradee = 1 - player; ! 234: get_list(0, player); ! 235: get_list(1, tradee); ! 236: if (getyn((&xstr[4992])) == 0) ! 237: summate(); ! 238: if (getyn((&xstr[5016])) == 0) ! 239: do_trade(); ! 240: } ! 241: ! 242: ! 243: ! 244: ! 245: get_list(struct_no, play_no) ! 246: int struct_no, play_no; { ! 247: ! 248: register int sn, pn; ! 249: register PLAY *pp; ! 250: int numin, prop, num_prp; ! 251: OWN *op; ! 252: TRADE *tp; ! 253: ! 254: for (numin = 0; numin < (22 +4 +2 ) ; numin++) ! 255: used[numin] = (0); ! 256: sn = struct_no, pn = play_no; ! 257: pp = &play[pn]; ! 258: tp = &trades[sn]; ! 259: tp->trader = pn; ! 260: printf((&xstr[5034]), pp->name, pn+1); ! 261: if (pp->own_list) { ! 262: numin = set_list(pp->own_list); ! 263: for (num_prp = numin; num_prp; ) { ! 264: prop = getinp((&xstr[5051]), ! 265: list); ! 266: if (prop == numin) ! 267: break; ! 268: else if (used[prop]) ! 269: printf((&xstr[5089])); ! 270: else { ! 271: num_prp--; ! 272: used[prop] = (1); ! 273: for (op = pp->own_list; prop--; op = op->next) ! 274: continue; ! 275: add_list(pn, &(tp->prop_list), (op->sqr - board)); ! 276: } ! 277: } ! 278: } ! 279: if (pp->money > 0) { ! 280: printf((&xstr[5121]), pp->money); ! 281: tp->cash = get_int((&xstr[5137])); ! 282: } ! 283: if (pp->num_gojf > 0) { ! 284: once_more: ! 285: printf((&xstr[5164]),pp->num_gojf); ! 286: tp->gojf = get_int((&xstr[5205])); ! 287: if (tp->gojf > pp->num_gojf) { ! 288: printf((&xstr[5232])); ! 289: goto once_more; ! 290: } ! 291: } ! 292: } ! 293: ! 294: ! 295: ! 296: set_list(the_list) ! 297: register OWN *the_list; { ! 298: ! 299: register int i; ! 300: register OWN *op; ! 301: ! 302: i = 0; ! 303: for (op = the_list; op; op = op->next) ! 304: if (!used[i]) ! 305: list[i++] = op->sqr->name; ! 306: list[i++] = (&xstr[1245]); ! 307: list[i--] = 0; ! 308: return i; ! 309: } ! 310: ! 311: ! 312: ! 313: summate() { ! 314: ! 315: register char some; ! 316: register int i; ! 317: register TRADE *tp; ! 318: OWN *op; ! 319: ! 320: for (i = 0; i < 2; i++) { ! 321: tp = &trades[i]; ! 322: some = (0); ! 323: printf((&xstr[5271]), play[tp->trader].name, ! 324: tp->trader+1); ! 325: if (tp->cash > 0) ! 326: printf((&xstr[5294]), tp->cash), some++; ! 327: if (tp->gojf > 0) ! 328: printf((&xstr[5300]), tp->gojf), ! 329: some++; ! 330: if (tp->prop_list) { ! 331: for (op = tp->prop_list; op; op = op->next) ! 332: (--((&_iob[1]))->_cnt>=0? ((int)(*((&_iob[1]))->_ptr++=(unsigned)('\t'))):_flsbuf((unsigned)('\t'),(&_iob[1]))), printsq( (op->sqr - board), (1)); ! 333: some++; ! 334: } ! 335: if (!some) ! 336: printf((&xstr[5334])); ! 337: } ! 338: } ! 339: ! 340: ! 341: ! 342: do_trade() { ! 343: ! 344: move_em(&trades[0], &trades[1]); ! 345: move_em(&trades[1], &trades[0]); ! 346: } ! 347: ! 348: ! 349: ! 350: move_em(from, to) ! 351: TRADE *from, *to; { ! 352: ! 353: register PLAY *pl_fr, *pl_to; ! 354: register OWN *op; ! 355: ! 356: pl_fr = &play[from->trader]; ! 357: pl_to = &play[to->trader]; ! 358: ! 359: pl_fr->money -= from->cash; ! 360: pl_to->money += from->cash; ! 361: pl_fr->num_gojf -= from->gojf; ! 362: pl_to->num_gojf += from->gojf; ! 363: for (op = from->prop_list; op; op = op->next) { ! 364: add_list(to->trader, &(pl_to->own_list), (op->sqr - board)); ! 365: op->sqr->owner = to->trader; ! 366: del_list(from->trader, &(pl_fr->own_list), (op->sqr - board)); ! 367: } ! 368: set_ownlist(to->trader); ! 369: } ! 370: ! 371: ! 372: ! 373: resign() { ! 374: ! 375: register int i, new_own; ! 376: register OWN *op; ! 377: SQUARE *sqp; ! 378: ! 379: if (cur_p->money <= 0) { ! 380: switch (board[cur_p->loc].type) { ! 381: case 2 : ! 382: case 1 : ! 383: case 0 : ! 384: new_own = board[cur_p->loc].owner; ! 385: break; ! 386: case 6 : ! 387: case 4 : ! 388: case 5 : ! 389: new_own = num_play; ! 390: break; ! 391: } ! 392: if (new_own == num_play) ! 393: printf((&xstr[5350])); ! 394: else ! 395: printf((&xstr[5380]), name_list[new_own]); ! 396: } ! 397: else if (num_play == 1) { ! 398: new_own = num_play; ! 399: printf((&xstr[5350])); ! 400: } ! 401: else { ! 402: name_list[num_play] = (&xstr[5404]); ! 403: do { ! 404: new_own = getinp((&xstr[5409]), ! 405: name_list); ! 406: if (new_own == player) ! 407: printf((&xstr[5440])); ! 408: } while (new_own == player); ! 409: name_list[num_play] = (&xstr[1245]); ! 410: } ! 411: if (getyn((&xstr[5472]), yn) != 0) ! 412: return; ! 413: if (num_play == 1) { ! 414: printf((&xstr[5503])); ! 415: exit(0); ! 416: } ! 417: if (new_own < num_play) { ! 418: printf((&xstr[5537])); ! 419: trades[0].trader = new_own; ! 420: trades[0].cash = trades[0].gojf = 0; ! 421: trades[0].prop_list = 0; ! 422: trades[1].trader = player; ! 423: trades[1].cash = cur_p->money > 0 ? cur_p->money : 0; ! 424: trades[1].gojf = cur_p->num_gojf; ! 425: trades[1].prop_list = cur_p->own_list; ! 426: do_trade(); ! 427: } ! 428: else { ! 429: printf((&xstr[5558])); ! 430: for (op = cur_p->own_list; op; op = op->next) { ! 431: sqp = op->sqr; ! 432: sqp->owner = -1; ! 433: sqp->desc->morg = (0); ! 434: if (op->type == 0 ) { ! 435: isnot_monop(sqp->desc->mon_desc); ! 436: sqp->desc->houses = 0; ! 437: } ! 438: } ! 439: if (cur_p->num_gojf) ! 440: ret_card(cur_p); ! 441: } ! 442: for (i = player; i < num_play; i++) { ! 443: name_list[i] = name_list[i+1]; ! 444: if (i + 1 < num_play) ! 445: cpy_st(&play[i], &play[i+1], sizeof (PLAY)); ! 446: } ! 447: name_list[num_play--] = 0; ! 448: for (i = 0; i < 40 ; i++) ! 449: if (board[i].owner > player) ! 450: --board[i].owner; ! 451: player = --player < 0 ? num_play - 1 : player; ! 452: next_play(); ! 453: if (num_play < 2) { ! 454: printf((&xstr[5577]), play[0].name); ! 455: printhold(0); ! 456: printf((&xstr[5597]), ! 457: play[0].money+prop_worth(&play[0])); ! 458: exit(0); ! 459: } ! 460: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.