/*
* Empire - A multi-player, client/server Internet based war game.
- * Copyright (C) 1986-2013, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ * Copyright (C) 1986-2014, Dave Pare, Jeff Bailey, Thomas Ruschak,
* Ken Stevens, Steve McClure, Markus Armbruster
*
* Empire is free software: you can redistribute it and/or modify
* Known contributors to this file:
* Ken Stevens, 1995
* Steve McClure, 1998
- * Markus Armbruster, 2004-2012
+ * Markus Armbruster, 2004-2013
*/
#include <config.h>
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 */
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);
/****************************************************************************
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) {
break;
case 'R':
rnd_seed = strtoul(optarg, NULL, 10);
+ seed_set = 1;
break;
case 's':
outfile = optarg;
}
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)
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");
" -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"
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]);
secs = 0;
if (!place_island(c, &x, &y))
return;
- isiz = 1 + roll0(2 * is - 1);
+ isiz = roll(is) + roll0(is);
do {
++secs;
find_coast(c);
for (y = 0; y < WORLD_Y; ++y) {
for (x = y % 2; x < WORLD_X; x += 2) {
if (elev[x][y] == -INFINITY)
- elev[x][y] = -roll0((distance_to_land() * 20 + 27)) - 1;
+ elev[x][y] = -roll(distance_to_land() * 20 + 27);
}
}
}
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);
}