From bc585e94671afa5b17eac816faf82752d904dee1 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Jul 2021 13:40:31 +0000 Subject: [PATCH] 1 --- server/gameserver/creature.cc | 5 +---- server/gameserver/player.cc | 1 + server/gameserver/trigger.cc | 5 +++++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index e861fb3..fcb1a46 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -407,7 +407,7 @@ void Creature::RecalcBuffAttr() } } } - if (buff.add_frameno == room->GetFrameNo() || + if (buff.add_frameno == room->GetFrameNo() && attr_type == kHAT_MaxHp) { need_refresh_hp = true; } @@ -1186,9 +1186,6 @@ void Creature::StartAction(ActionType_e action_type, if (HasBuffEffect(kBET_Camouflage)) { RemoveBuffByEffectId(kBET_Camouflage); } - if (action_type == AT_Rescue) { - TryAddBuff(this, kRescueBuffId); - } } void Creature::CancelAction() diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index af9bc5c..f22b32a 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -781,6 +781,7 @@ void Player::HumanInteraction(Human* hum) if (hum->GetActionType() == AT_Rescue) { return; } + hum->TryAddBuff(this, kRescueBuffId); int downed_relive_time = MetaMgr::Instance()->GetSysParamAsInt("downed_relive_time") * 1000; downed_relive_time -= GetAbility()->GetAttrAbs(kHAT_RescueTime); downed_relive_time = std::max(1000, downed_relive_time); diff --git a/server/gameserver/trigger.cc b/server/gameserver/trigger.cc index 292149b..58c9596 100644 --- a/server/gameserver/trigger.cc +++ b/server/gameserver/trigger.cc @@ -213,12 +213,17 @@ void Trigger::TraverseCondBuffs(int cond, std::function fun void Trigger::TriggeCondBuffAll(int cond) { + std::shared_ptr old_context_ability = owner_->context_ability; + a8::Vec2 old_context_pos = owner_->context_pos; + owner_->context_pos = owner_->GetPos(); TraverseCondBuffs (cond, [this, cond] (Buff* buff, bool& stop) { AddBuffs(cond, buff->meta->param4_int_list); }); + owner_->context_pos = old_context_pos; + owner_->context_ability = old_context_ability; } void Trigger::ActiveBuff(MetaData::Buff* buff_meta)