1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-25 22:42:04 +02:00

It is now possible to configure power of generic skill & creature

specialties
This commit is contained in:
Ivan Savenko
2025-06-09 18:33:13 +03:00
parent ab0f6ed8cd
commit 8d20c1d733
5 changed files with 12 additions and 3 deletions

View File

@@ -321,6 +321,11 @@
/// Base scouting range for hero without any range modifiers /// Base scouting range for hero without any range modifiers
"baseScoutingRange" : 5, "baseScoutingRange" : 5,
/// Strength of generic secondary skill specialties ( "secondary" : "skillName" ) per level
"specialtySecondarySkillGrowth" : 5,
/// Strength of generic creature specialties ( "creature" : "creatureName" ) per level
"specialtyCreatureGrowth" : 5,
}, },
"towns": "towns":

View File

@@ -13,7 +13,7 @@
#include <cctype> #include <cctype>
#include "CSkillHandler.h" #include "CSkillHandler.h"
#include "IGameSettings.h"
#include "bonuses/Updaters.h" #include "bonuses/Updaters.h"
#include "constants/StringConstants.h" #include "constants/StringConstants.h"
#include "filesystem/Filesystem.h" #include "filesystem/Filesystem.h"
@@ -259,7 +259,7 @@ std::shared_ptr<CSkill> CSkillHandler::loadFromJson(const std::string & scope, c
if (bonusNode.isStruct()) if (bonusNode.isStruct())
{ {
auto bonus = JsonUtils::parseBonus(bonusNode); auto bonus = JsonUtils::parseBonus(bonusNode);
bonus->val = 5; // default H3 value, hardcoded for now bonus->val = LIBRARY->engineSettings()->getInteger(EGameSettings::HEROES_SPECIALTY_SECONDARY_SKILL_GROWTH);
bonus->updater = std::make_shared<TimesHeroLevelUpdater>(); bonus->updater = std::make_shared<TimesHeroLevelUpdater>();
bonus->valType = BonusValueType::PERCENT_TO_TARGET_TYPE; bonus->valType = BonusValueType::PERCENT_TO_TARGET_TYPE;
bonus->targetSourceType = BonusSource::SECONDARY_SKILL; bonus->targetSourceType = BonusSource::SECONDARY_SKILL;

View File

@@ -87,6 +87,8 @@ const std::vector<GameSettings::SettingOption> GameSettings::settingProperties =
{EGameSettings::HEROES_MOVEMENT_COST_BASE, "heroes", "movementCostBase" }, {EGameSettings::HEROES_MOVEMENT_COST_BASE, "heroes", "movementCostBase" },
{EGameSettings::HEROES_MOVEMENT_POINTS_LAND, "heroes", "movementPointsLand" }, {EGameSettings::HEROES_MOVEMENT_POINTS_LAND, "heroes", "movementPointsLand" },
{EGameSettings::HEROES_MOVEMENT_POINTS_SEA, "heroes", "movementPointsSea" }, {EGameSettings::HEROES_MOVEMENT_POINTS_SEA, "heroes", "movementPointsSea" },
{EGameSettings::HEROES_SPECIALTY_CREATURE_GROWTH, "heroes", "specialtyCreatureGrowth" },
{EGameSettings::HEROES_SPECIALTY_SECONDARY_SKILL_GROWTH, "heroes", "specialtySecondarySkillGrowth" },
{EGameSettings::MAP_FORMAT_ARMAGEDDONS_BLADE, "mapFormat", "armageddonsBlade" }, {EGameSettings::MAP_FORMAT_ARMAGEDDONS_BLADE, "mapFormat", "armageddonsBlade" },
{EGameSettings::MAP_FORMAT_CHRONICLES, "mapFormat", "chronicles" }, {EGameSettings::MAP_FORMAT_CHRONICLES, "mapFormat", "chronicles" },
{EGameSettings::MAP_FORMAT_HORN_OF_THE_ABYSS, "mapFormat", "hornOfTheAbyss" }, {EGameSettings::MAP_FORMAT_HORN_OF_THE_ABYSS, "mapFormat", "hornOfTheAbyss" },

View File

@@ -60,6 +60,8 @@ enum class EGameSettings
HEROES_MOVEMENT_COST_BASE, HEROES_MOVEMENT_COST_BASE,
HEROES_MOVEMENT_POINTS_LAND, HEROES_MOVEMENT_POINTS_LAND,
HEROES_MOVEMENT_POINTS_SEA, HEROES_MOVEMENT_POINTS_SEA,
HEROES_SPECIALTY_CREATURE_GROWTH,
HEROES_SPECIALTY_SECONDARY_SKILL_GROWTH,
INTERFACE_PLAYER_COLORED_BACKGROUND, INTERFACE_PLAYER_COLORED_BACKGROUND,
MAP_FORMAT_ARMAGEDDONS_BLADE, MAP_FORMAT_ARMAGEDDONS_BLADE,
MAP_FORMAT_CHRONICLES, MAP_FORMAT_CHRONICLES,

View File

@@ -160,7 +160,7 @@ std::vector<std::shared_ptr<Bonus>> CHeroHandler::createCreatureSpecialty(Creatu
auto bonus = std::make_shared<Bonus>(); auto bonus = std::make_shared<Bonus>();
bonus->type = BonusType::PRIMARY_SKILL; bonus->type = BonusType::PRIMARY_SKILL;
bonus->subtype = BonusSubtypeID(skill); bonus->subtype = BonusSubtypeID(skill);
bonus->val = 5; bonus->val = LIBRARY->engineSettings()->getInteger(EGameSettings::HEROES_SPECIALTY_CREATURE_GROWTH);
bonus->valType = BonusValueType::PERCENT_TO_TARGET_TYPE; bonus->valType = BonusValueType::PERCENT_TO_TARGET_TYPE;
bonus->targetSourceType = BonusSource::CREATURE_ABILITY; bonus->targetSourceType = BonusSource::CREATURE_ABILITY;
bonus->limiter.reset(new CCreatureTypeLimiter(specCreature, true)); bonus->limiter.reset(new CCreatureTypeLimiter(specCreature, true));