Prechádzať zdrojové kódy

Merge pull request #6002 from kdmcser/opening_battle_spells

 Add addInfo support for OPENING_BATTLE_SPELL to set spell level
Ivan Savenko 2 mesiacov pred
rodič
commit
6328e4b4f8

+ 1 - 0
docs/modders/Bonus/Bonus_Types.md

@@ -403,6 +403,7 @@ In battle, army affected by this bonus will cast spell at the very start of the
 
 - subtype: spell identifier
 - val: duration of the spell, in rounds
+- addInfo - spell mastery level (1 - Basic, 3 - Expert)
 
 ### FREE_SHIP_BOARDING
 

+ 1 - 0
lib/json/JsonBonus.cpp

@@ -225,6 +225,7 @@ static void loadBonusAddInfo(CAddInfo & var, BonusType type, const JsonNode & va
 		case BonusType::DARKNESS:
 		case BonusType::FULL_MAP_SCOUTING:
 		case BonusType::FULL_MAP_DARKNESS:
+		case BonusType::OPENING_BATTLE_SPELL:
 			// 1 number
 			var = getFirstValue(value).Integer();
 			break;

+ 2 - 1
server/battles/BattleFlowProcessor.cpp

@@ -206,7 +206,8 @@ void BattleFlowProcessor::castOpeningSpells(const CBattleInfoCallback & battle)
 			const CSpell * spell = b->subtype.as<SpellID>().toSpell();
 
 			spells::BattleCast parameters(&battle, &caster, spells::Mode::PASSIVE, spell);
-			parameters.setSpellLevel(3);
+			int32_t spellLevel = b->additionalInfo != CAddInfo::NONE ? b->additionalInfo[0] : 3;
+			parameters.setSpellLevel(spellLevel);
 			parameters.setEffectDuration(b->val);
 			parameters.massive = true;
 			parameters.castIfPossible(gameHandler->spellcastEnvironment(), spells::Target());