diff --git a/Mods/vcmi/Content/config/english.json b/Mods/vcmi/Content/config/english.json index 1d8f6a831..b2021e5e7 100644 --- a/Mods/vcmi/Content/config/english.json +++ b/Mods/vcmi/Content/config/english.json @@ -607,11 +607,6 @@ "mapObject.core.hillFort.object.description" : "Upgrades creatures. Levels 1 - 4 are less expensive than in associated town.", - "core.spellSchools.0": "Air", - "core.spellSchools.1": "Fire", - "core.spellSchools.2": "Water", - "core.spellSchools.3": "Earth", - "core.bonus.ADDITIONAL_ATTACK.name": "Double Strike", "core.bonus.ADDITIONAL_ATTACK.description": "Attacks twice", "core.bonus.ADDITIONAL_RETALIATION.name": "Additional retaliations", @@ -734,8 +729,6 @@ "core.bonus.SPELL_AFTER_ATTACK.description": "Has a ${val}% chance to cast ${subtype.spell} after it attacks", "core.bonus.SPELL_BEFORE_ATTACK.name": "Cast Before Attack", "core.bonus.SPELL_BEFORE_ATTACK.description": "Has a ${val}% chance to cast ${subtype.spell} before it attacks", - "core.bonus.SPELL_DAMAGE_REDUCTION.name": "Spell Resistance", - "core.bonus.SPELL_DAMAGE_REDUCTION.description": "Damage from spells reduced by ${val}%.", "core.bonus.SPELL_IMMUNITY.name": "Spell immunity", "core.bonus.SPELL_IMMUNITY.description": "Immune to ${subtype.spell}", "core.bonus.SPELL_LIKE_ATTACK.name": "Spell-like attack", @@ -768,10 +761,26 @@ "core.bonus.MECHANICAL.description": "Immunity to many effects, repairable", "core.bonus.PRISM_HEX_ATTACK_BREATH.name": "Prism Breath", "core.bonus.PRISM_HEX_ATTACK_BREATH.description": "Prism Breath Attack (three directions)", + "core.bonus.SPELL_DAMAGE_REDUCTION.name": "Spell Resistance", + "core.bonus.SPELL_DAMAGE_REDUCTION.name.air": "Air Spells Resistance", + "core.bonus.SPELL_DAMAGE_REDUCTION.name.fire": "Fire Spells Resistance", + "core.bonus.SPELL_DAMAGE_REDUCTION.name.water": "Water Spells Resistance", + "core.bonus.SPELL_DAMAGE_REDUCTION.name.earth": "Earth Spells Resistance", + "core.bonus.SPELL_DAMAGE_REDUCTION.description": "Damage from all spells reduced by ${val}%.", + "core.bonus.SPELL_DAMAGE_REDUCTION.description.air": "Damage from all Air spells reduced by ${val}%.", + "core.bonus.SPELL_DAMAGE_REDUCTION.description.fire": "Damage from all Fire spells reduced by ${val}%.", + "core.bonus.SPELL_DAMAGE_REDUCTION.description.water": "Damage from all Water spells reduced by ${val}%.", + "core.bonus.SPELL_DAMAGE_REDUCTION.description.earth": "Damage from all Earth spells reduced by ${val}%.", "core.bonus.SPELL_SCHOOL_IMMUNITY.name": "Spell immunity", - "core.bonus.SPELL_SCHOOL_IMMUNITY.description": "Immune to all spell schools", - "core.bonus.SPELL_SCHOOL_IMMUNITY.name.specific": "${subtype.spellSchool} immunity", - "core.bonus.SPELL_SCHOOL_IMMUNITY.description.specific": "Immune to ${subtype.spellSchool} school", + "core.bonus.SPELL_SCHOOL_IMMUNITY.name.air": "Air immunity", + "core.bonus.SPELL_SCHOOL_IMMUNITY.name.fire": "Fire immunity", + "core.bonus.SPELL_SCHOOL_IMMUNITY.name.water": "Water immunity", + "core.bonus.SPELL_SCHOOL_IMMUNITY.name.earth": "Earth immunity", + "core.bonus.SPELL_SCHOOL_IMMUNITY.description": "This unit is immune to all spells", + "core.bonus.SPELL_SCHOOL_IMMUNITY.description.air": "This unit is immune to all Air school spells", + "core.bonus.SPELL_SCHOOL_IMMUNITY.description.fire": "This unit is immune to all Fire school spells", + "core.bonus.SPELL_SCHOOL_IMMUNITY.description.water": "This unit is immune to all Water school spells", + "core.bonus.SPELL_SCHOOL_IMMUNITY.description.earth": "This unit is immune to all Earth school spells", "core.bonus.OPENING_BATTLE_SPELL.name": "Starts with spell", "core.bonus.OPENING_BATTLE_SPELL.description": "Casts ${subtype.spell} on battle start" } diff --git a/Mods/vcmi/Content/config/german.json b/Mods/vcmi/Content/config/german.json index 6a31e0fb6..dd7329c1b 100644 --- a/Mods/vcmi/Content/config/german.json +++ b/Mods/vcmi/Content/config/german.json @@ -606,12 +606,7 @@ "core.seerhut.quest.reachDate.visit.5" : "Geschlossen bis %s.", "mapObject.core.hillFort.object.description" : "Aufwertungen von Kreaturen. Die Stufen 1 - 4 sind billiger als in der zugehörigen Stadt.", - - "core.spellSchools.0": "Luft", - "core.spellSchools.1": "Feuer", - "core.spellSchools.2": "Wasser", - "core.spellSchools.3": "Erde", - + "core.bonus.ADDITIONAL_ATTACK.name": "Doppelschlag", "core.bonus.ADDITIONAL_ATTACK.description": "Greift zweimal an", "core.bonus.ADDITIONAL_RETALIATION.name": "Zusätzliche Vergeltungsmaßnahmen", @@ -734,8 +729,6 @@ "core.bonus.SPELL_AFTER_ATTACK.description": "${val}%, um ${subtype.spell} nach dem Angriff zu wirken", "core.bonus.SPELL_BEFORE_ATTACK.name": "Zauber vor Angriff", "core.bonus.SPELL_BEFORE_ATTACK.description": "${val}% um ${subtype.spell} vor dem Angriff zu wirken", - "core.bonus.SPELL_DAMAGE_REDUCTION.name": "Zauberwiderstand", - "core.bonus.SPELL_DAMAGE_REDUCTION.description": "Schaden von Zaubern reduziert ${val}%.", "core.bonus.SPELL_IMMUNITY.name": "Zauberimmunität", "core.bonus.SPELL_IMMUNITY.description": "Immun gegen ${subtype.spell}", "core.bonus.SPELL_LIKE_ATTACK.name": "zauberähnlicher Angriff", @@ -770,8 +763,24 @@ "core.bonus.PRISM_HEX_ATTACK_BREATH.description": "Prisma-Atem-Angriff (drei Richtungen)", "core.bonus.SPELL_SCHOOL_IMMUNITY.name": "Zauber-Immunität", "core.bonus.SPELL_SCHOOL_IMMUNITY.description": "Immunität gegen alle Zauber-Schulen", - "core.bonus.SPELL_SCHOOL_IMMUNITY.name.specific": "${subtype.spellSchool}-Immunität", - "core.bonus.SPELL_SCHOOL_IMMUNITY.description.specific": "Immunität gegen Zauber der ${subtype.spellSchool}-Schule", + "core.bonus.SPELL_SCHOOL_IMMUNITY.name.air": "Luft-Immunität", + "core.bonus.SPELL_SCHOOL_IMMUNITY.name.fire": "Feuer-Immunität", + "core.bonus.SPELL_SCHOOL_IMMUNITY.name.water": "Wasser-Immunität", + "core.bonus.SPELL_SCHOOL_IMMUNITY.name.earth": "Erde-Immunität", + "core.bonus.SPELL_SCHOOL_IMMUNITY.description.air": "Immunität gegen Zauber der Luft-Schule", + "core.bonus.SPELL_SCHOOL_IMMUNITY.description.fire": "Immunität gegen Zauber der Feuer-Schule", + "core.bonus.SPELL_SCHOOL_IMMUNITY.description.water": "Immunität gegen Zauber der Wasser-Schule", + "core.bonus.SPELL_SCHOOL_IMMUNITY.description.earth": "Immunität gegen Zauber der Erde-Schule", + "core.bonus.SPELL_DAMAGE_REDUCTION.name": "Zauberwiderstand", + "core.bonus.SPELL_DAMAGE_REDUCTION.name.air": "Luft-Zauberwiderstand", + "core.bonus.SPELL_DAMAGE_REDUCTION.name.fire": "Feuer-Zauberwiderstand", + "core.bonus.SPELL_DAMAGE_REDUCTION.name.water": "Wasser-Zauberwiderstand", + "core.bonus.SPELL_DAMAGE_REDUCTION.name.earth": "Erde-Zauberwiderstand", + "core.bonus.SPELL_DAMAGE_REDUCTION.description": "Schaden von allen Zaubern um ${val}% reduziert.", + "core.bonus.SPELL_DAMAGE_REDUCTION.description.air": "Schaden von Luft-Zaubern um ${val}% reduziert.", + "core.bonus.SPELL_DAMAGE_REDUCTION.description.fire": "Schaden von Feuer-Zaubern um ${val}% reduziert.", + "core.bonus.SPELL_DAMAGE_REDUCTION.description.water": "Schaden von Wasser-Zaubern um ${val}% reduziert.", + "core.bonus.SPELL_DAMAGE_REDUCTION.description.earth": "Schaden von Erde-Zaubern um ${val}% reduziert.", "core.bonus.OPENING_BATTLE_SPELL.name": "Startet mit Zauber", "core.bonus.OPENING_BATTLE_SPELL.description": "Wirkt ${subtype.spell} beim Start des Kampfes" } diff --git a/Mods/vcmi/Content/config/ukrainian.json b/Mods/vcmi/Content/config/ukrainian.json index e806e15f7..224c64c93 100644 --- a/Mods/vcmi/Content/config/ukrainian.json +++ b/Mods/vcmi/Content/config/ukrainian.json @@ -722,8 +722,6 @@ "core.bonus.SPELL_AFTER_ATTACK.description" : "Застосовує ${subtype.spell} з вірогідністю ${val}% після атаки", "core.bonus.SPELL_BEFORE_ATTACK.name" : "закляття перед атакою", "core.bonus.SPELL_BEFORE_ATTACK.description" : "Застосовує ${subtype.spell} з вірогідністю ${val}% перед атакою", - "core.bonus.SPELL_DAMAGE_REDUCTION.name" : "Стійкість до заклять", - "core.bonus.SPELL_DAMAGE_REDUCTION.description" : "Шкода від заклять зменшується на ${val}%.", "core.bonus.SPELL_IMMUNITY.name" : "Імунітет до заклять", "core.bonus.SPELL_IMMUNITY.description" : "Імунітет до ${subtype.spell}", "core.bonus.SPELL_LIKE_ATTACK.name" : "Атака, схожа на закляття", @@ -762,6 +760,26 @@ "core.bonus.MECHANICAL.name" : "Механічний", "core.bonus.PRISM_HEX_ATTACK_BREATH.description" : "Атака подихом у трьох напрямах", "core.bonus.PRISM_HEX_ATTACK_BREATH.name" : "Призматична атака", + "core.bonus.SPELL_DAMAGE_REDUCTION.name": "Стійкість до заклять", + "core.bonus.SPELL_DAMAGE_REDUCTION.name.air": "Стійкість до Повітря", + "core.bonus.SPELL_DAMAGE_REDUCTION.name.fire": "Стійкість до Вогню", + "core.bonus.SPELL_DAMAGE_REDUCTION.name.water": "Стійкість до Води", + "core.bonus.SPELL_DAMAGE_REDUCTION.name.earth": "Стійкість до Землі", + "core.bonus.SPELL_DAMAGE_REDUCTION.description": "Шкода від усіх заклять зменшується на ${val}%.", + "core.bonus.SPELL_DAMAGE_REDUCTION.description.air": "Шкода від усіх заклять школи Повітря зменшується на ${val}%.", + "core.bonus.SPELL_DAMAGE_REDUCTION.description.fire": "Шкода від усіх заклять школи Вогню зменшується на ${val}%.", + "core.bonus.SPELL_DAMAGE_REDUCTION.description.water": "Шкода від усіх заклять школи Води зменшується на ${val}%.", + "core.bonus.SPELL_DAMAGE_REDUCTION.description.earth": "Шкода від усіх заклять школи Землі зменшується на ${val}%.", + "core.bonus.SPELL_SCHOOL_IMMUNITY.name": "Імунітет до усіх заклять", + "core.bonus.SPELL_SCHOOL_IMMUNITY.name.air": "Імунітет до Повітря", + "core.bonus.SPELL_SCHOOL_IMMUNITY.name.fire": "Імунітет до Вогню", + "core.bonus.SPELL_SCHOOL_IMMUNITY.name.water": "Імунітет до Води", + "core.bonus.SPELL_SCHOOL_IMMUNITY.name.earth": "Імунітет до Землі", + "core.bonus.SPELL_SCHOOL_IMMUNITY.description": "На цей загін не діють жодні заклинання", + "core.bonus.SPELL_SCHOOL_IMMUNITY.description.air": "На цей загін не діють жодні закляття школи Повітря", + "core.bonus.SPELL_SCHOOL_IMMUNITY.description.fire": "На цей загін не діють жодні закляття школи Вогню", + "core.bonus.SPELL_SCHOOL_IMMUNITY.description.water": "На цей загін не діють жодні закляття школи Води", + "core.bonus.SPELL_SCHOOL_IMMUNITY.description.earth": "На цей загін не діють жодні закляття школи Землі", "core.bonus.REVENGE.description" : "Завдає додаткової шкоди залежно від втраченого здоров'я в бою", "core.bonus.REVENGE.name" : "Помста" } diff --git a/lib/CBonusTypeHandler.cpp b/lib/CBonusTypeHandler.cpp index 1b4e0afdf..62ce7f76e 100644 --- a/lib/CBonusTypeHandler.cpp +++ b/lib/CBonusTypeHandler.cpp @@ -75,21 +75,13 @@ std::string CBonusTypeHandler::bonusToString(const std::shared_ptr<Bonus> & bonu std::string textID = description ? bt.getDescriptionTextID() : bt.getNameTextID(); std::string text = VLC->generaltexth->translate(textID); - if (bonus->subtype.as<SpellSchool>().hasValue()) + auto school = bonus->subtype.as<SpellSchool>(); + if (school.hasValue() && school != SpellSchool::ANY) { - auto school = bonus->subtype.as<SpellSchool>(); - if(school != SpellSchool::ANY) - { - auto specificTextID = description ? bt.getDescriptionTextID() + ".specific" : bt.getNameTextID() + ".specific"; - auto specificText = VLC->generaltexth->translate(specificTextID); - - if(specificText.find("${subtype.spellSchool}") != std::string::npos) - { - auto schoolName = VLC->generaltexth->translate(TextIdentifier("core.spellSchools", school).get()); - boost::algorithm::replace_all(specificText, "${subtype.spellSchool}", schoolName); - text = specificText; - } - } + std::string schoolName = school.encode(school.getNum()); + std::string baseTextID = description ? bt.getDescriptionTextID() : bt.getNameTextID(); + std::string fullTextID = baseTextID + '.' + schoolName; + text = VLC->generaltexth->translate(fullTextID); } if (text.find("${val}") != std::string::npos)