From 1b7e3ebe6de219821052e7d4ff81bc05c503682c Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 10 Sep 2021 07:42:07 +0000 Subject: [PATCH] 1 --- server/gameserver/creature.cc | 11 ++++++----- server/gameserver/creature.h | 7 ++++--- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 21fc2fc..700dc29 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -299,9 +299,10 @@ int Creature::GetBuffNum(int buff_id) } int Creature::AddBuff(Creature* caster, - MetaData::Buff* buff_meta, - int skill_lv, - MetaData::Skill* buff_skill_meta) + MetaData::Buff* buff_meta, + int skill_lv, + MetaData::Skill* buff_skill_meta, + bool no_check_immune) { if (buff_meta->only_spec_race) { if (!a8::HasBitFlag(buff_meta->only_spec_race, GetEntityType())) { @@ -336,7 +337,7 @@ int Creature::AddBuff(Creature* caster, return 0; } } - if (IsImmuneBuffEffect(buff_meta->i->buff_effect())) { + if (!no_check_immune && IsImmuneBuffEffect(buff_meta->i->buff_effect())) { return 0; } if (buff_meta->i->depend_effect() != 0 && !HasBuffEffect(buff_meta->i->depend_effect())) { @@ -400,7 +401,7 @@ int Creature::AddBuff(Creature* caster, for (int child_buff_id : buff->meta->child_buff_list) { MetaData::Buff* child_buff_meta = MetaMgr::Instance()->GetBuff(child_buff_id); if (child_buff_meta) { - AddBuff(caster, child_buff_meta, skill_lv, buff_skill_meta); + AddBuff(caster, child_buff_meta, skill_lv, buff_skill_meta, true); } } } diff --git a/server/gameserver/creature.h b/server/gameserver/creature.h index e27a12f..3e7b169 100644 --- a/server/gameserver/creature.h +++ b/server/gameserver/creature.h @@ -121,9 +121,10 @@ class Creature : public MoveableEntity Buff* GetBuffByUniId(int buff_uniid); int GetBuffNum(int buff_id); int AddBuff(Creature* caster, - MetaData::Buff* buff_meta, - int skill_lv, - MetaData::Skill* buff_skill_meta = nullptr); + MetaData::Buff* buff_meta, + int skill_lv, + MetaData::Skill* buff_skill_meta = nullptr, + bool no_check_immune = false); bool IsImmuneBuffEffect(int buff_effect); int MustBeAddBuff(Creature* caster, int buff_id); int TryAddBuff(Creature* caster, int buff_id);