Ну во первых в участке кода
if (mob->lookup_const(mobt, "DamageMotion", &i32) && i32 >= 0) {
if (battle_config.monster_damage_delay_rate != 100)
md.status.dmotion = i32 * battle_config.monster_damage_delay_rate / 100;
else
md.status.dmotion = i32;
}
нужно добавить проверку, считается ли моб боссом
if (mob->lookup_const(mobt, "DamageMotion", &i32) && i32 >= 0) {
if (!(md.status.mode & MD_BOSS) && battle_config.monster_damage_delay_rate != 100)
md.status.dmotion = i32 * battle_config.monster_damage_delay_rate / 100;
else
md.status.dmotion = i32;
}
и далее после участка кода
// MVP EXP Bonus: MEXP
if (mob->lookup_const(mobt, "MvpExp", &i32) && i32 >= 0) {
// Some new MVP's MEXP multiple by high exp-rate cause overflow. [LuzZza]
int64 exp = apply_percentrate64(i32, battle_config.mvp_exp_rate, 100);
md.mexp = (unsigned int)cap_value(exp, 0, UINT_MAX);
}
добавляем
if ((md.status.mode & MD_BOSS)) {
if (md.mexp == 0 && battle_config.boss_damage_delay_rate != 100)
md.status.dmotion = md.status.dmotion * battle_config.boss_damage_delay_rate / 100;
else if (md.mexp > 0 && battle_config.mvp_damage_delay_rate != 100)
md.status.dmotion = md.status.dmotion * battle_config.mvp_damage_delay_rate / 100;
else if (battle_config.monster_damage_delay_rate != 100)
md.status.dmotion = md.status.dmotion * battle_config.monster_damage_delay_rate / 100;
}