diff --git a/server/gameserver/battledatacontext.h b/server/gameserver/battledatacontext.h index 4a686e77..8c5f80ab 100644 --- a/server/gameserver/battledatacontext.h +++ b/server/gameserver/battledatacontext.h @@ -69,11 +69,11 @@ struct BattleDataContext int GetClipVolume(Creature* c, Weapon* weapon); int GetFireRate(Creature* c, Weapon* weapon); int GetReloadTime(Creature* c, Weapon* weapon); + float GetHeroTotalAtk(); private: void Clear(); float GetTotalAtk(Bullet* bullet); - float GetHeroTotalAtk(); float GetWeaponAtk(Bullet* bullet); bool IsCrit(Bullet* bullet); float GetCrit(Bullet* bullet); diff --git a/server/gameserver/skillhelper.cc b/server/gameserver/skillhelper.cc index f5de0bb3..d797181e 100644 --- a/server/gameserver/skillhelper.cc +++ b/server/gameserver/skillhelper.cc @@ -251,12 +251,17 @@ bool SkillHelper::ProcBulletDmg(Bullet* bullet, Creature* target, float& finaly_ { finaly_dmg = 0.0f; MetaData::Skill* skill_meta = bullet->skill_meta; - if (!skill_meta) { + if (!skill_meta || skill_meta->number_meta) { return false; } switch (skill_meta->GetMagicId()) { case MAGIC_AXXF: { + finaly_dmg = + (skill_meta->number_meta->float_ratio + + skill_meta->number_meta->float_ratio * target->GetBattleContext()->GetHeroTotalAtk()) * + (1 - target->GetBattleContext()->GetDef() / 1000); + return true; } break; default: