diff --git a/server/gameserver/buff/hide.cc b/server/gameserver/buff/hide.cc index fcbd93db..9200d234 100644 --- a/server/gameserver/buff/hide.cc +++ b/server/gameserver/buff/hide.cc @@ -7,6 +7,7 @@ #include "trigger.h" #include "collision.h" #include "human.h" +#include "ability.h" #include "mt/Buff.h" #include "mt/Skill.h" @@ -44,6 +45,9 @@ void HideBuff::Activate() &xtimer_attacher ); } + if (meta->_int_buff_param1 > 0) { + owner->GetAbility()->IncSwitch(kHideBuffMoveShow); + } } void HideBuff::Deactivate() @@ -55,6 +59,9 @@ void HideBuff::Deactivate() } } alert_buff_hash_.clear(); + if (meta->_int_buff_param1 > 0) { + owner->GetAbility()->DecSwitch(kHideBuffMoveShow); + } } void HideBuff::AddInRangeObject(Creature* target) diff --git a/server/gameserver/constant.h b/server/gameserver/constant.h index 7ad2f400..6c878d72 100644 --- a/server/gameserver/constant.h +++ b/server/gameserver/constant.h @@ -521,6 +521,7 @@ enum SwitchTimesType_e kAccumulatePowerTimes, kForceClientReportBullet, kIgnoreOriginalDmg, + kHideBuffMoveShow, kSwitchTimeEnd, }; diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index c81188cc..8a08652f 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -2649,7 +2649,7 @@ void Creature::UpdateMove() } { Buff* hide_buff = GetBuffByEffectId(kBET_Hide); - if (hide_buff && hide_buff->meta->_int_buff_param1 > 0) { + if (hide_buff && GetAbility()->GetSwitchTimes(kHideBuffMoveShow)) { RemoveHideEffect(kMoveReason); } } diff --git a/server/gameserver/trigger.cc b/server/gameserver/trigger.cc index 0b9b2d2d..c40484b3 100644 --- a/server/gameserver/trigger.cc +++ b/server/gameserver/trigger.cc @@ -679,7 +679,7 @@ void Trigger::EnterBattleMode() { for (int buff_id : buff->meta->_buff_param4_int_list) { if (buff_id > 0) { - owner_->TryAddBuff(owner_, buff_id); + owner_->TryAddBuff(owner_, buff_id, buff->skill_meta); } else { owner_->ClearBuffById(buff_id); } @@ -695,7 +695,7 @@ void Trigger::LeaveBattleMode() { for (int buff_id : buff->meta->_buff_param4_int_list) { if (buff_id > 0) { - owner_->TryAddBuff(owner_, buff_id); + owner_->TryAddBuff(owner_, buff_id, buff->skill_meta); } else { owner_->ClearBuffById(buff_id); }