Add sysconf BONES_POOLS to allow more bones-files per level

Reduce the chance of a player playing on a public server encountering
their own bones, by implementing separate bones pools. The pool a player
belongs to is determined at game start, and only bones in that pool
are used. The sysconf BONES_POOLS allows the sysadmin to define how
many pools there are.
This commit is contained in:
Pasi Kallinen
2017-08-20 23:04:55 +03:00
parent 7bb4cb1b1e
commit 1eca824321
7 changed files with 34 additions and 0 deletions

View File

@@ -704,6 +704,10 @@ d_level *lev;
Sprintf(dptr, ".%c", sptr->boneid);
else
Sprintf(dptr, ".%d", lev->dlevel);
#ifdef SYSCF
if (sysopt.bones_pools > 1)
Sprintf(eos(file), ".%d", (ubirthday % sysopt.bones_pools));
#endif
#ifdef VMS
Strcat(dptr, ";1");
#endif
@@ -2278,6 +2282,9 @@ int src;
if (sysopt.genericusers)
free((genericptr_t) sysopt.genericusers);
sysopt.genericusers = dupstr(bufp);
} else if (src == SET_IN_SYS && match_varname(buf, "BONES_POOLS", 10)) {
n = atoi(bufp);
sysopt.bones_pools = (n < 0) ? 0 : n;
} else if (src == SET_IN_SYS && match_varname(buf, "SUPPORT", 7)) {
if (sysopt.support)
free((genericptr_t) sysopt.support);

View File

@@ -40,6 +40,7 @@ sys_early_init()
sysopt.explorers = (char *) 0;
sysopt.genericusers = (char *) 0;
sysopt.maxplayers = 0; /* XXX eventually replace MAX_NR_OF_PLAYERS */
sysopt.bones_pools = 0;
/* record file */
sysopt.persmax = PERSMAX;