diff --git a/server/gameserver/skillhelper.cc b/server/gameserver/skillhelper.cc index 284b2284..c68820b9 100644 --- a/server/gameserver/skillhelper.cc +++ b/server/gameserver/skillhelper.cc @@ -1,5 +1,7 @@ #include "precompile.h" +#include + #include "skillhelper.h" #include "creature.h" #include "buff.h" @@ -18,18 +20,19 @@ std::map SkillHelper::magic_skill_hash_; std::map SkillHelper::skill_magic_hash_; -static int GetMagicSkillId(int magic_id) -{ -} - void SkillHelper::Init() { - for (int i = MAGIC_NONE; i < MAGIC_END; ++i) { - if (i != 0) { - int skill_id = GetMagicSkillId(i); + auto fields = a8::GetEnumFields(); + for (auto& tuple : *fields){ + std::string name = std::get<0>(tuple); + int val = std::get<1>(tuple); + if (val > MAGIC_NONE && val < MAGIC_END) { + std::vector strings; + a8::Split(name, strings, '_'); + int skill_id = a8::XValue(strings[1]); if (skill_id) { - magic_skill_hash_[i] = skill_id; - skill_magic_hash_[skill_id] = i; + magic_skill_hash_[val] = skill_id; + skill_magic_hash_[skill_id] = val; } else { abort(); }