diff --git a/server/gameserver/gungrasp.cc b/server/gameserver/gungrasp.cc index 35eb6926..a865abed 100644 --- a/server/gameserver/gungrasp.cc +++ b/server/gameserver/gungrasp.cc @@ -2,11 +2,16 @@ #include "gungrasp.h" #include "creature.h" +#include "battledatacontext.h" + +#include "mt/GraspBuff.h" +#include "mt/Grasp.h" +#include "mt/Hero.h" struct GraspBuff { list_head entry; - const mt::Grasp* grasp_meta = nullptr; + std::tuple buffs; }; GunGrasp::GunGrasp(Creature* owner) @@ -30,4 +35,49 @@ void GunGrasp::Clear() void GunGrasp::InstallTriggers() { Clear(); + int hero_lv = 0; + int hero_quality = 0; + owner_->GetBattleContext()->GetHeroLvQuality(hero_lv, hero_quality); + if (owner_->GetHeroMeta()) { + mt::GraspBuffs* buffs = mt::Grasp::GetGrasp + (owner_->GetHeroMeta()->id(), + hero_lv, + owner_->GetCurrWeapon()->weapon_id); + if (buffs) { + for (auto& tuple : *buffs) { + switch ((GraspBuffTrigger_e)std::get<0>(tuple)->_trigger_type) { + case GraspBuffTrigger_e::kHit: + { + + } + break; + case GraspBuffTrigger_e::kKill: + { + + } + break; + case GraspBuffTrigger_e::kTakeOn: + { + + } + break; + case GraspBuffTrigger_e::kCond: + { + + } + break; + case GraspBuffTrigger_e::kHitAndEnd: + { + + } + break; + default: + { + abort(); + } + break; + } + } + } + } }