From 5d74c3e6ea3251617fca3812155c760aaac058ad Mon Sep 17 00:00:00 2001 From: Dydzio Date: Thu, 13 Jul 2017 23:39:19 +0200 Subject: [PATCH] Add black market art change as hardcodedFeature --- config/defaultMods.json | 4 ++-- lib/CModHandler.cpp | 2 ++ lib/CModHandler.h | 10 ++++++---- lib/mapObjects/CGMarket.cpp | 15 ++++++++------- lib/serializer/CSerializer.h | 2 +- 5 files changed, 19 insertions(+), 14 deletions(-) diff --git a/config/defaultMods.json b/config/defaultMods.json index e84c877f84b..70e6b7c126b 100644 --- a/config/defaultMods.json +++ b/config/defaultMods.json @@ -24,8 +24,8 @@ "NEGATIVE_LUCK" : false, "MAX_HEROES_AVAILABLE_PER_PLAYER" : 16, "MAX_HEROES_ON_MAP_PER_PLAYER" : 8, - "WINNING_HERO_WITH_NO_TROOPS_RETREATS": true - + "WINNING_HERO_WITH_NO_TROOPS_RETREATS": true, + "BLACK_MARKET_MONTHLY_ARTIFACTS_CHANGE": true }, "modules": { diff --git a/lib/CModHandler.cpp b/lib/CModHandler.cpp index 0a5395290e1..2cb3b325730 100644 --- a/lib/CModHandler.cpp +++ b/lib/CModHandler.cpp @@ -641,6 +641,8 @@ void CModHandler::loadConfigFromFile (std::string name) logGlobal->debugStream() << "\tALL_CREATURES_GET_DOUBLE_MONTHS\t" << settings.ALL_CREATURES_GET_DOUBLE_MONTHS; settings.WINNING_HERO_WITH_NO_TROOPS_RETREATS = hardcodedFeatures["WINNING_HERO_WITH_NO_TROOPS_RETREATS"].Bool(); logGlobal->debugStream() << "\tWINNING_HERO_WITH_NO_TROOPS_RETREATS\t" << settings.WINNING_HERO_WITH_NO_TROOPS_RETREATS; + settings.BLACK_MARKET_MONTHLY_ARTIFACTS_CHANGE = hardcodedFeatures["BLACK_MARKET_MONTHLY_ARTIFACTS_CHANGE"].Bool(); + logGlobal->debugStream() << "\tBLACK_MARKET_MONTHLY_ARTIFACTS_CHANGE\t" << settings.BLACK_MARKET_MONTHLY_ARTIFACTS_CHANGE; const JsonNode & gameModules = settings.data["modules"]; modules.STACK_EXP = gameModules["STACK_EXPERIENCE"].Bool(); logGlobal->debugStream() << "\tSTACK_EXP\t" << modules.STACK_EXP; diff --git a/lib/CModHandler.h b/lib/CModHandler.h index 5213ebf972d..ca90acbe8bd 100644 --- a/lib/CModHandler.h +++ b/lib/CModHandler.h @@ -268,6 +268,7 @@ class DLL_LINKAGE CModHandler int MAX_HEROES_AVAILABLE_PER_PLAYER; int MAX_HEROES_ON_MAP_PER_PLAYER; bool WINNING_HERO_WITH_NO_TROOPS_RETREATS; + bool BLACK_MARKET_MONTHLY_ARTIFACTS_CHANGE; template void serialize(Handler &h, const int version) { @@ -275,13 +276,14 @@ class DLL_LINKAGE CModHandler h & DWELLINGS_ACCUMULATE_CREATURES & ALL_CREATURES_GET_DOUBLE_MONTHS & MAX_HEROES_AVAILABLE_PER_PLAYER & MAX_HEROES_ON_MAP_PER_PLAYER; if(version >= 756) - { h & WINNING_HERO_WITH_NO_TROOPS_RETREATS; - } else if(!h.saving) - { WINNING_HERO_WITH_NO_TROOPS_RETREATS = true; - } + + if(version >= 775) + h & BLACK_MARKET_MONTHLY_ARTIFACTS_CHANGE; + else if(!h.saving) + BLACK_MARKET_MONTHLY_ARTIFACTS_CHANGE = true; } } settings; diff --git a/lib/mapObjects/CGMarket.cpp b/lib/mapObjects/CGMarket.cpp index 4bf20f03ced..646724edb05 100644 --- a/lib/mapObjects/CGMarket.cpp +++ b/lib/mapObjects/CGMarket.cpp @@ -18,6 +18,7 @@ #include "../CCreatureHandler.h" #include "../CGameState.h" #include "CGTownInstance.h" +#include "../CModHandler.h" ///helpers static void openWindow(const OpenWindow::EWindow type, const int id1, const int id2 = -1) @@ -284,13 +285,13 @@ std::vector CGBlackMarket::availableItemsIds(EMarketMode::EMarketMode mode) void CGBlackMarket::newTurn(CRandomGenerator & rand) const { - if(cb->getDate(Date::DAY_OF_MONTH) != 1) //new month - return; - - SetAvailableArtifacts saa; - saa.id = id.getNum(); - cb->pickAllowedArtsSet(saa.arts, rand); - cb->sendAndApply(&saa); + if(VLC->modh->settings.BLACK_MARKET_MONTHLY_ARTIFACTS_CHANGE && cb->getDate(Date::DAY_OF_MONTH) == 1) //new month and feature enabled + { + SetAvailableArtifacts saa; + saa.id = id.getNum(); + cb->pickAllowedArtsSet(saa.arts, rand); + cb->sendAndApply(&saa); + } } void CGUniversity::initObj(CRandomGenerator & rand) diff --git a/lib/serializer/CSerializer.h b/lib/serializer/CSerializer.h index a7805d5341b..51234ac3caa 100644 --- a/lib/serializer/CSerializer.h +++ b/lib/serializer/CSerializer.h @@ -14,7 +14,7 @@ #include "../ConstTransitivePtr.h" #include "../GameConstants.h" -const ui32 SERIALIZATION_VERSION = 774; +const ui32 SERIALIZATION_VERSION = 775; const ui32 MINIMAL_SERIALIZATION_VERSION = 753; const std::string SAVEGAME_MAGIC = "VCMISVG";