]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - monop/trade.c
Revert arc4random usage for now
[bsdgames-darwin.git] / monop / trade.c
index 1d210a43fad628ee61889ee05d1c1d6517ab6d4b..63d2e8a9b3a48c1d9e46b185f035379049f273df 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: trade.c,v 1.12 2008/02/19 10:48:47 dholland Exp $      */
+/*     $NetBSD: trade.c,v 1.16 2012/06/19 05:35:32 dholland Exp $      */
 
 /*
  * Copyright (c) 1980, 1993
 #if 0
 static char sccsid[] = "@(#)trade.c    8.1 (Berkeley) 5/31/93";
 #else
-__RCSID("$NetBSD: trade.c,v 1.12 2008/02/19 10:48:47 dholland Exp $");
+__RCSID("$NetBSD: trade.c,v 1.16 2012/06/19 05:35:32 dholland Exp $");
 #endif
 #endif /* not lint */
 
-#include "monop.ext"
+#include "monop.h"
 
 struct trd_st {                        /* how much to give to other player     */
        int     trader;                 /* trader number                */
@@ -62,7 +62,7 @@ static void do_trade(void);
 static void move_em(TRADE *, TRADE *);
 
 void
-trade()
+trade(void)
 {
        int tradee, i;
 
@@ -102,8 +102,7 @@ over:
  * player, and puts in the structure given.
  */
 static void
-get_list(struct_no, play_no)
-       int struct_no, play_no;
+get_list(int struct_no, int play_no)
 {
        int sn, pn;
        PLAY *pp;
@@ -155,8 +154,7 @@ once_more:
  *     This routine sets up the list of tradable property.
  */
 static int
-set_list(the_list)
-       OWN *the_list;
+set_list(OWN *the_list)
 {
        int i;
        OWN *op;
@@ -174,7 +172,7 @@ set_list(the_list)
  *     This routine summates the trade.
  */
 static void
-summate()
+summate(void)
 {
        bool some;
        int i;
@@ -205,7 +203,7 @@ summate()
  *     This routine actually executes the trade.
  */
 static void
-do_trade()
+do_trade(void)
 {
        move_em(&trades[0], &trades[1]);
        move_em(&trades[1], &trades[0]);
@@ -215,8 +213,7 @@ do_trade()
  *     This routine does a switch from one player to another
  */
 static void
-move_em(from, to)
-       TRADE *from, *to;
+move_em(TRADE *from, TRADE *to)
 {
        PLAY *pl_fr, *pl_to;
        OWN *op;
@@ -240,7 +237,7 @@ move_em(from, to)
  *     This routine lets a player resign
  */
 void
-resign()
+resign(void)
 {
        int i, new_own;
        OWN *op;
@@ -252,6 +249,9 @@ resign()
                  case RR:
                  case PRPTY:
                        new_own = board[cur_p->loc].owner;
+                       /* If you ran out of money by buying current location */
+                       if (new_own == player)
+                               new_own = num_play;
                        break;
                  default:              /* Chance, taxes, etc */
                        new_own = num_play;
@@ -307,16 +307,17 @@ resign()
                if (cur_p->num_gojf)
                        ret_card(cur_p);
        }
+       free(play[player].name);
        for (i = player; i < num_play; i++) {
                name_list[i] = name_list[i+1];
                if (i + 1 < num_play)
                        play[i] = play[i+1];
        }
-       name_list[num_play--] = 0;
+       name_list[num_play--] = NULL;
        for (i = 0; i < N_SQRS; i++)
                if (board[i].owner > player)
                        --board[i].owner;
-       player = --player < 0 ? num_play - 1 : player;
+       player = player == 0 ? num_play - 1 : player - 1;
        next_play();
        if (num_play < 2) {
                printf("\nThen %s WINS!!!!!\n", play[0].name);