м.б как то так вместо свича(просто идея)
Код:
if(targetLevel> 30)
change = change-((targetLevel- 30)*10)
p.s по идеи можно использовать параметр max вместо 30 из
Код:
Spell Level = 8, base 8, max 30, maxTarget 0
и по второму приведенному примеру
Код:
Spell Level = 0, base 0, max 24, maxTarget 0
для расчёта шанса и сделать общим для всех таких видов спеллов.
что то типа
Код:
if (max>1 && targetLevel> max)
{
change = change-((targetLevel - max)*10))
if(change <0)
return SPELL_FAILED_FIZZLE;
}
единственное что не учел наверно это что шанс то 101 ))