1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-24 22:14:36 +02:00

vcmi: configurable charge

There is no reason not to make charge configurable.
Just do it.
This commit is contained in:
Konstantin 2023-03-04 23:09:04 +03:00
parent f26fac5562
commit 1e73c2e1e6
7 changed files with 12 additions and 9 deletions

View File

@ -213,7 +213,7 @@
"core.bonus.HP_REGENERATION.name": "Regeneration",
"core.bonus.HP_REGENERATION.description": "Heals ${val} hit points every round",
"core.bonus.JOUSTING.name": "Champion Charge",
"core.bonus.JOUSTING.description": "+5% damage per hex travelled",
"core.bonus.JOUSTING.description": "+${val}% damage per hex travelled",
"core.bonus.KING1.name": "King 1",
"core.bonus.KING1.description": "Vulnerable to basic SLAYER",
"core.bonus.KING2.name": "King 2",

View File

@ -211,7 +211,7 @@
"core.bonus.HP_REGENERATION.name": "Regeneration",
"core.bonus.HP_REGENERATION.description": "Heilt ${val} Trefferpunkte jede Runde",
"core.bonus.JOUSTING.name": "Champion Charge",
"core.bonus.JOUSTING.description": "+5% Schaden pro zurückgelegtem Feld",
"core.bonus.JOUSTING.description": "+${val}% Schaden pro zurückgelegtem Feld",
"core.bonus.KING1.name": "König 1",
"core.bonus.KING1.description": "Anfällig für grundlegende SLAYER",
"core.bonus.KING2.name": "König 2",

View File

@ -141,7 +141,7 @@
"core.bonus.HP_REGENERATION.name": "Regeneracja",
"core.bonus.HP_REGENERATION.description": "Leczy ${val} punktów zdrowia każdej rundy",
"core.bonus.JOUSTING.name": "Szarża Czempiona",
"core.bonus.JOUSTING.description": "+5% obrażeń na przebytego heksa",
"core.bonus.JOUSTING.description": "+${val}% obrażeń na przebytego heksa",
"core.bonus.KING1.name": "Król 1",
"core.bonus.KING1.description": "Wrażliwy na podstawowy czar POGROMCA",
"core.bonus.KING2.name": "Król 2",

View File

@ -226,7 +226,7 @@
"core.bonus.HP_REGENERATION.name": "Регенерация",
"core.bonus.HP_REGENERATION.description": "Исцеляет ${val} очков здоровья каждый ход",
"core.bonus.JOUSTING.name": "Разгон",
"core.bonus.JOUSTING.description": "+5% урона за каждую пройденную клетку",
"core.bonus.JOUSTING.description": "+${val}% урона за каждую пройденную клетку",
"core.bonus.KING1.name": "Король 1",
"core.bonus.KING1.description": "Уязвимость к заклинанию Палач 1 ступени",
"core.bonus.KING2.name": "Король 2",

View File

@ -201,7 +201,7 @@
"core.bonus.HP_REGENERATION.name" : "Регенерація",
"core.bonus.HP_REGENERATION.description" : "Відновлює ${val} очок здоров'я кожного раунду",
"core.bonus.JOUSTING.name" : "Турнірна перевага",
"core.bonus.JOUSTING.description" : "+5% шкоди за кожен пройдений гекс",
"core.bonus.JOUSTING.description" : "+${val}% шкоди за кожен пройдений гекс",
"core.bonus.KING1.name" : "Король 1",
"core.bonus.KING1.description" : "Вразливий до 1-го рівня закляття Вбивця",
"core.bonus.KING2.name" : "Король 2",

View File

@ -469,10 +469,11 @@ void CCreatureHandler::loadCommanders()
void CCreatureHandler::loadBonuses(JsonNode & creature, std::string bonuses)
{
auto makeBonusNode = [&](std::string type) -> JsonNode
auto makeBonusNode = [&](std::string type, double val = 0) -> JsonNode
{
JsonNode ret;
ret["type"].String() = type;
ret["val"].Float() = val;
return ret;
};
@ -484,7 +485,7 @@ void CCreatureHandler::loadBonuses(JsonNode & creature, std::string bonuses)
{"const_free_attack", makeBonusNode("BLOCKS_RETALIATION")},
{"IS_UNDEAD", makeBonusNode("UNDEAD")},
{"const_no_melee_penalty", makeBonusNode("NO_MELEE_PENALTY")},
{"const_jousting", makeBonusNode("JOUSTING")},
{"const_jousting", makeBonusNode("JOUSTING", 5)},
{"KING_1", makeBonusNode("KING1")},
{"KING_2", makeBonusNode("KING2")},
{"KING_3", makeBonusNode("KING3")},
@ -1070,7 +1071,9 @@ void CCreatureHandler::loadStackExp(Bonus & b, BonusList & bl, CLegacyConfigPars
case 'B':
b.type = Bonus::TWO_HEX_ATTACK_BREATH; break;
case 'c':
b.type = Bonus::JOUSTING; break;
b.type = Bonus::JOUSTING;
b.val = 5;
break;
case 'D':
b.type = Bonus::ADDITIONAL_ATTACK; break;
case 'f':

View File

@ -258,7 +258,7 @@ double DamageCalculator::getAttackJoustingFactor() const
//applying jousting bonus
if(info.chargeDistance > 0 && info.attacker->hasBonus(selectorJousting, cachingStrJousting) && !info.defender->hasBonus(selectorChargeImmunity, cachingStrChargeImmunity))
return info.chargeDistance * 0.05;
return info.chargeDistance * (info.attacker->valOfBonuses(selectorJousting))/100.0;
return 0.0;
}