Flexible Spell Power

Currently a spell’s power (=damage/healing done by the spell) is calculated as
spell.levelInfo.power * hero.spellPower + spell.levels.XXX.power
where XXX is none, basic, advanced or expert, depending on the hero’s skill in the appropriate school.

As a result, skill level in air/earth/fire/water magic can only affect the fixed component of the spell power calculation, not the scaling part - sufficient for H3 compatibility, but not as flexible as it could be. To improve on this, I’d suggest we change the spell format by

  • Splitting the power field into two components, say powerGrowing and powerFixed
  • Having these field in spell.levels.XXX overwrite the spell.levelInfo fields (based on hero skill)
  • Remove the spell.levels.none component as that seems to be redundant now (?)

So the new spell power calculation would then become
powerGrowing * hero.spellPower + powerFixed
where powerGrowing and powerFixed can be specified independently for each skill level.

This is for hero with no skill and differ from basic in f.e. “cost” field. Effects are almost equal for none and basic in H3, so most spells are configured as base,advanced,expert.

Actual formula of damage aka effect value is

basePowerMultiplier * spell.power+ levelPowerMultiplier * spell.levels.XXX.power

It is planned to use this formula directly in heal and damage effect.

his is for hero with no skill and differ from basic in f.e. “cost” field. Effects are almost equal for none and basic in H3, so most spells are configured as base,advanced,expert.

My bad, I didn’t read the spell schema carefully. So what I actually meant then I guess is to remove the power field from spells, and instead split the power field in the none, basic, advanced and expert blocks into powerGrowing and powerFixed (or whatever names).

Actual formula of damage aka effect value is
basePowerMultiplier * spell.power+ levelPowerMultiplier * spell.levels.XXX.power
It is planned to use this formula directly in heal and damage effect.

Where does the levelPowerMultiplier come from? Isn’t it generally just 1?
With this formula, I basically want to be able to specify the spell.power separately for each level. This would e.g. allow me to configure armageddon to deal 30 * baseMultiplier (= hero.spellPower?) damage at none and basic level, 40 * baseMultiplier at advanced and 50 * baseMultiplier at expert level …

This is subject to change, different effects use different values. And yes it still just 1 for damage effect.