]> git.pond.sub.org Git - empserver/blobdiff - src/util/fairland.c
Update copyright notice
[empserver] / src / util / fairland.c
index 078a23f035561b011a4128b02d1fe18ebf0ac17b..eba88b20452b1a270cecc997ac300ba0e4d0a99e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2013, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ *  Copyright (C) 1986-2017, Dave Pare, Jeff Bailey, Thomas Ruschak,
  *                Ken Stevens, Steve McClure, Markus Armbruster
  *
  *  Empire is free software: you can redistribute it and/or modify
@@ -29,7 +29,7 @@
  *  Known contributors to this file:
  *     Ken Stevens, 1995
  *     Steve McClure, 1998
- *     Markus Armbruster, 2004-2012
+ *     Markus Armbruster, 2004-2013
  */
 
 #include <config.h>
@@ -72,7 +72,6 @@ static int quiet = 0;
 #include <stdio.h>
 #include <unistd.h>
 #include "chance.h"
-#include "file.h"
 #include "optlist.h"
 #include "prototypes.h"
 #include "sect.h"
@@ -123,7 +122,6 @@ static int ctot;            /* total number of continents and islands grown */
 static int *isecs;             /* array of how large each island is */
 
 static int nc, sc, di, sp, pm, ni, is, id; /* the 8 args to this program */
-static unsigned long rnd_seed; /* optional seed argument */
 static int *capx, *capy;       /* location of the nc capitals */
 static int *mc, mcc;           /* array and counter used for stability
                                   check when perturbing */
@@ -166,7 +164,6 @@ static void set_coastal_flags(void);
 
 static void print_vars(void);
 static void fl_move(int);
-static void next_coast(int c, int x, int y, int *xp, int *yp);
 static void grow_islands(void);
 
 /****************************************************************************
@@ -179,9 +176,10 @@ main(int argc, char *argv[])
     int opt;
     char *config_file = NULL;
     int i = 0;
+    unsigned rnd_seed = 0;
+    int seed_set = 0;
 
     program_name = argv[0];
-    rnd_seed = time(NULL);
 
     while ((opt = getopt(argc, argv, "ae:hioqR:s:v")) != EOF) {
        switch (opt) {
@@ -202,6 +200,7 @@ main(int argc, char *argv[])
            break;
        case 'R':
            rnd_seed = strtoul(optarg, NULL, 10);
+           seed_set = 1;
            break;
        case 's':
            outfile = optarg;
@@ -219,6 +218,8 @@ main(int argc, char *argv[])
     }
     parse_args(argc - optind, argv + optind);
 
+    if (!seed_set)
+       rnd_seed = pick_seed();
     seed_prng(rnd_seed);
     empfile_init();
     if (emp_config(config_file) < 0)
@@ -228,12 +229,12 @@ main(int argc, char *argv[])
     allocate_memory();
     print_vars();
 
+    qprint("\n        #*# ...fairland rips open a rift in the datumplane... #*#\n\n");
+    qprint("seed is %u\n", rnd_seed);
     do {
        init();
        if (i)
-           qprint("\ntry #%d (out of %d)...", i + 1, NUMTRIES);
-       qprint("\n\n        #*# ...fairland rips open a rift in the datumplane... #*#\n\n");
-       qprint("seed is %lu\n", rnd_seed);
+           qprint("\ntry #%d (out of %d)...\n", i + 1, NUMTRIES);
        qprint("placing capitals...\n");
        if (!drift())
            qprint("fairland: unstable drift -- try increasisg DRIFT_MAX\n");
@@ -319,12 +320,13 @@ usage(void)
           "  -a              airport marker for continents\n"
           "  -e CONFIG-FILE  configuration file\n"
           "                  (default %s)\n"
-          "  -h              display this help and exit\n"
           "  -i              islands may merge\n"
           "  -o              don't set resources\n"
           "  -q              quiet\n"
           "  -R SEED         seed for random number generator\n"
           "  -s SCRIPT       name of script to create (default %s)\n"
+          "  -h              display this help and exit\n"
+          "  -v              display version information and exit\n"
           "  NC              number of continents\n"
           "  SC              continent size\n"
           "  NI              number of islands (default NC)\n"
@@ -376,10 +378,7 @@ parse_args(int argc, char *argv[])
        sp = atoi(argv[4]);
     else
        sp = DEFAULT_SPIKE;
-    if (sp < 0)
-       sp = 0;
-    if (sp > 100)
-       sp = 100;
+    sp = LIMIT_TO(sp, 0, 100);
 
     if (argc > 5)
        pm = atoi(argv[5]);
@@ -810,7 +809,7 @@ grow_islands(void)
        secs = 0;
        if (!place_island(c, &x, &y))
            return;
-       isiz = roll(2 * is - 1);
+       isiz = roll(is) + roll0(is);
        do {
            ++secs;
            find_coast(c);
@@ -1081,6 +1080,7 @@ write_sects(void)
                sct->sct_type = SCT_MOUNT;
            sct->sct_elev = total;
            sct->sct_newtype = sct->sct_type;
+           sct->sct_dterr = own[sct->sct_x][y] + 1;
            if (ORE)
                add_resources(sct);
        }