diff --git a/config/schemas/settings.json b/config/schemas/settings.json index 002500054..c1b84a469 100644 --- a/config/schemas/settings.json +++ b/config/schemas/settings.json @@ -437,7 +437,7 @@ "type" : "object", "additionalProperties" : false, "default" : {}, - "required" : [ "localHostname", "localPort", "remoteHostname", "remotePort", "playerAI", "alliedAI", "friendlyAI", "neutralAI", "enemyAI" ], + "required" : [ "localHostname", "localPort", "remoteHostname", "remotePort", "seed", "playerAI", "alliedAI", "friendlyAI", "neutralAI", "enemyAI" ], "properties" : { "localHostname" : { "type" : "string", @@ -455,6 +455,10 @@ "type" : "number", "default" : 3030 }, + "seed" : { + "type" : "number", + "default" : 0 + }, "playerAI" : { "type" : "string", "default" : "Nullkiller" @@ -537,7 +541,7 @@ }, "loggers" : { "type" : "array", - "default" : [ { "domain" : "global", "level" : "trace" } ], + "default" : [ { "domain" : "global", "level" : "trace" }, { "domain" : "rng", "level" : "info" } ], "items" : { "type" : "object", "additionalProperties" : false, diff --git a/server/CGameHandler.cpp b/server/CGameHandler.cpp index ee4dc93fb..c4e0264b3 100644 --- a/server/CGameHandler.cpp +++ b/server/CGameHandler.cpp @@ -24,6 +24,7 @@ #include "../lib/ArtifactUtils.h" #include "../lib/CArtHandler.h" #include "../lib/CBuildingHandler.h" +#include "../lib/CConfigHandler.h" #include "../lib/CCreatureHandler.h" #include "../lib/CCreatureSet.h" #include "../lib/CGeneralTextHandler.h" @@ -552,6 +553,9 @@ void CGameHandler::reinitScripting() void CGameHandler::init(StartInfo *si, Load::ProgressAccumulator & progressTracking) { randomNumberGenerator = std::make_unique(); + int requestedSeed = settings["server"]["seed"].Integer(); + if (requestedSeed != 0) + randomNumberGenerator->setSeed(requestedSeed); logGlobal->info("Using random seed: %d", randomNumberGenerator->nextInt()); CMapService mapService;