diff --git a/server/gameserver/metadata.cc b/server/gameserver/metadata.cc index d6290918..18af59d0 100644 --- a/server/gameserver/metadata.cc +++ b/server/gameserver/metadata.cc @@ -4,6 +4,7 @@ #include "metadata.h" #include "metamgr.h" +#include "skillhelper.h" #include "framework/cpp/utils.h" @@ -1004,6 +1005,9 @@ namespace MetaData } #endif } + { + SkillHelper::GetMagicIdAndBaseSkillId(i->skill_id(), magic_id, base_skill_id); + } } void Skill::Init2() @@ -1036,11 +1040,19 @@ namespace MetaData } } } + { + base_skill_meta = MetaMgr::Instance()->GetSkill(base_skill_id); + if (base_skill_id) { + if (!base_skill_meta) { + abort(); + } + } + } } int Skill::GetMagicId() { - return MAGIC_NONE; + return magic_id; } bool Skill::IsTurnOverSkill() diff --git a/server/gameserver/metadata.h b/server/gameserver/metadata.h index 11dbde14..99914aa5 100644 --- a/server/gameserver/metadata.h +++ b/server/gameserver/metadata.h @@ -277,13 +277,16 @@ namespace MetaData void Init(); void Init2(); - int magic_type = 0; + Skill* base_skill_meta = nullptr; float value_up = 0.0f; std::set buff_list; std::map> trigger_type_buffs; std::vector phases; bool IsTurnOverSkill(); int GetMagicId(); + private: + int magic_id = 0; + int base_skill_id = 0; }; struct SkillNumber