Turn CostMultiplier on PseudoStats into SchoolCostMultiplier.
Add SchoolValueArray type for school float/int arrays in stats. Has some convenience methods to change all (magic) schools in them.
Change SpellCost type used for Spell.Cost to now contain BaseCost, Multiplier and FlatModifier along with the previous interface methods.
Store flat modifiers to cost in SpellCost.FlatModifier instead of directly manipulating Spell.DefaultCast.Cost. Keep clean SpellCost.BaseCost value. Spell.DefaultCast.Cost is set on spell finalization instead to retain its function.
Fix rounding error with cost multipliers by making them ints.
Fix hardcasts not failing if cost requirement isn't met at the end of the cast.
Fix cost multipliers added in spell cost configs. They are now treated as a spell cost multiplier instead of being directly added to base cost.
Classes
Fix cases of multiplication of spell cost multipliers.
Fix Shadowform to be a cost multiplier for the shadow school.
Fix Master of Elements to now refund mana based on BaseCost instead of Spell.DefaultCast.Cost.
Core
Classes