Попробую )
sd - скоращено от session data, для тебя будет проще воспринимать это как твоего чара. Дальше я это sd буду просто опускать.
Начнем с места matk1=0 это я думаю понятно )
Дальше идет обычный подсчет верхнего и нижнего матк, тоже думаю в комментариях не нуждается
sd->paramc[3] - это суммарная инт.
Если вдруг оказалось что тот матк, что должен быть больше (1) оказывается меньше, они просто меняются местами.
Проверяется наличие статус маиндбрейк, если он наложен, то
матк += (увеличить на) 20скил_мб(5)матк/100
то есть просто ещё + матк (ну соотвественно к нижнему нижний к верхнему верхний)
дальше идет бонус от палки, пускай 15%. То есть в итоге мы получили 2матк1.15, это что отображается у нас в окошечке.
Когда мы начинаем кого-то бить (собственно вызываются функции, описаны в battle.c), сервер запрашивает матк, получает его, а потом ещё раз добавляет бонус палки. то есть имеет 2матк1.151.15, то есть в итоге 2,45матк вместо 2.3матк
После этого идет проверка амплика. Заметь, что всюду переписывалось значение матк1, матк2 и на момент этой проверки матк уже составляет 2.45матк изначального значения, то есть +50% к этому, получим
2.45матк1.5 = 3.675*матк.
Код еАфины отличается тем, что в battle.c уже нет повтороного учитывания бонуса bMatkRate, но бонусы от прочих статусов (маинд брейк, амплик) точно также перемножаются поэтому получим
матк21.151.5=3.45матк