diff --git a/conf/battle/pandas.conf b/conf/battle/pandas.conf index 2a70b9e5d6..340b0d0ca0 100644 --- a/conf/battle/pandas.conf +++ b/conf/battle/pandas.conf @@ -454,11 +454,15 @@ itemdb_warning_policy: 0 // 将此选项设置为 1 可用于解决部分技能在 // 攻击 DamageMotion 为 0 的魔物时可能出现的异常: // -// - 无法正常播放攻击者的施法动作 +// - 攻击者的施法动作异常 // // - 用刀刃之舞 (SHC_DANCING_KNIFE) 打训练用龙蛋 (编号: 2411) // 由于龙蛋的 DamageMotion 字段没被定义因此默认值是 0, // 这会导致刀刃之舞的攻击动画出现异常. +// +// 异常的表现是施法角色会对被攻击的魔物进行平砍攻击动作, +// 而官服的正常情况下不会有此动作. +// // 通过将此选项的值改成 1, 攻击此类魔物就可以避免动画异常. // // - 发生了暴击但是伤害数字没有暴击的红色气泡 diff --git a/src/map/mob.cpp b/src/map/mob.cpp index 3c5438b714..95718a7295 100644 --- a/src/map/mob.cpp +++ b/src/map/mob.cpp @@ -4673,6 +4673,27 @@ s_mob_db::s_mob_db() status.amotion = cap_value(0, battle_config.monster_max_aspd, 2000); status.mode = static_cast(MONSTER_TYPE_06); +#ifdef Pandas_BattleConfig_MobDB_DamageMotion_Min + if (battle_config.mob_default_damagemotion) { + uint16 speed = battle_config.mob_default_damagemotion; + + if (battle_config.monster_damage_delay_rate != 100) + speed = speed * battle_config.monster_damage_delay_rate / 100; + + status.dmotion = speed; + + if (battle_config.mob_default_damagemotion == 1 && + battle_config.monster_damage_delay_rate < 100 && speed == 0) { + // 避免在 mob_default_damagemotion 设置为 1 且 monster_damage_delay_rate 在小于 100 的时候, + // 值会被修正成了 0 从而导致客户端跳过播放受伤动画的问题 + status.dmotion = 1; + } + } + else { + status.dmotion = 0; + } +#endif // Pandas_BattleConfig_MobDB_DamageMotion_Min + vd.class_ = id; }