From 43f09dd2e43027549226f9f34522be1ffc8236d4 Mon Sep 17 00:00:00 2001 From: Konstantin Date: Tue, 14 Feb 2023 01:24:30 +0300 Subject: [PATCH] vcmi: convert scholar to new bonus Convert scholar to new skill-agnostic bonus. Now works only for any school (not from specific). In all schools form identical to past's SECONDARY_SKILL_PREMY::SCHOLAR --- config/skills.json | 4 ++-- lib/HeroBonus.h | 1 + server/CGameHandler.cpp | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/config/skills.json b/config/skills.json index ab151c849..24815189a 100644 --- a/config/skills.json +++ b/config/skills.json @@ -517,8 +517,8 @@ "base" : { "effects" : { "main" : { - "subtype" : "skill.scholar", - "type" : "SECONDARY_SKILL_PREMY", + "subtype" : -1, + "type" : "LEARN_MEETING_SPELL_LIMIT", "valueType" : "BASE_NUMBER" } } diff --git a/lib/HeroBonus.h b/lib/HeroBonus.h index 580db60c4..f11ce9fb8 100644 --- a/lib/HeroBonus.h +++ b/lib/HeroBonus.h @@ -335,6 +335,7 @@ public: BONUS_NAME(LEARN_BATTLE_SPELL_CHANCE) /*skill-agnostic eagle eye chance. subtype = 0 - from enemy, 1 - TODO: from entire battlefield*/\ BONUS_NAME(LEARN_BATTLE_SPELL_LEVEL_LIMIT) /*skill-agnostic eagle eye limit, subtype - school (-1 for all), others TODO*/\ BONUS_NAME(PERCENTAGE_DAMAGE_BOOST) /*skill-agnostic archery and offence, subtype is 0 for offence and 1 for archery*/\ + BONUS_NAME(LEARN_MEETING_SPELL_LIMIT) /*skill-agnostic scholar, subtype is -1 for all, TODO for others (> 0)*/ /* end of list */ diff --git a/server/CGameHandler.cpp b/server/CGameHandler.cpp index 2ac11212a..1f789d861 100644 --- a/server/CGameHandler.cpp +++ b/server/CGameHandler.cpp @@ -2781,8 +2781,8 @@ void CGameHandler::useScholarSkill(ObjectInstanceID fromHero, ObjectInstanceID t { const CGHeroInstance * h1 = getHero(fromHero); const CGHeroInstance * h2 = getHero(toHero); - int h1_scholarSpellLevel = h1->valOfBonuses(Bonus::SECONDARY_SKILL_PREMY, SecondarySkill::SCHOLAR); - int h2_scholarSpellLevel = h2->valOfBonuses(Bonus::SECONDARY_SKILL_PREMY, SecondarySkill::SCHOLAR); + int h1_scholarSpellLevel = h1->valOfBonuses(Bonus::LEARN_MEETING_SPELL_LIMIT, -1); + int h2_scholarSpellLevel = h2->valOfBonuses(Bonus::LEARN_MEETING_SPELL_LIMIT, -1); if (h1_scholarSpellLevel < h2_scholarSpellLevel) {