diff --git a/server/gameserver/constant.h b/server/gameserver/constant.h index 20560bb..970c762 100755 --- a/server/gameserver/constant.h +++ b/server/gameserver/constant.h @@ -110,7 +110,8 @@ enum BuffTriggerType_e kBTT_Kill = 2, //击杀敌方后触发 kBTT_SkillHit = 3, //技能命中触发 kBTT_OtherBuff = 4,//其他buff触发 - kBTT_UseItem = 6 //使用道具触发 + kBTT_UseItem = 6, //使用道具触发 + kBTT_SeriesShot = 7 //连射时触发 }; enum BuffTargetType_e diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index a2d1dc4..9169421 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -1654,7 +1654,7 @@ void Creature::RemoveSurplusHero(int buff_id, int id, int num) } } while (matched_heros.size() >= num) { - + break; } } } @@ -1670,7 +1670,7 @@ void Creature::RemoveSurplusObstacle(int buff_id, int id, int num) } } while (matched_things.size() >= num) { - + break; } } } diff --git a/server/gameserver/metadata.cc b/server/gameserver/metadata.cc index 281fcec..9212067 100644 --- a/server/gameserver/metadata.cc +++ b/server/gameserver/metadata.cc @@ -196,6 +196,14 @@ namespace MetaData abort(); } } + { + if (i->buffid() != 0) { + buff_meta = MetaMgr::Instance()->GetBuff(i->buffid()); + if (!buff_meta) { + abort(); + } + } + } } int Equip::GetWeaponIdx() diff --git a/server/gameserver/metadata.h b/server/gameserver/metadata.h index 1524a0c..9678fe2 100755 --- a/server/gameserver/metadata.h +++ b/server/gameserver/metadata.h @@ -57,6 +57,7 @@ namespace MetaData const metatable::Item* i = nullptr; }; + struct Buff; struct Equip { const metatable::Equip* i = nullptr; @@ -69,6 +70,7 @@ namespace MetaData int int_param2 = 0; float float_param2 = 0; std::vector> power_charge; + MetaData::Buff* buff_meta = nullptr; void Init(); int GetWeaponIdx();