From 0d9007bceb104d38caaf890a7e729da826db83c9 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 5 Jul 2021 11:04:29 +0000 Subject: [PATCH] 1 --- server/gameserver/creature.cc | 6 ++++++ server/gameserver/human.cc | 7 +++++++ server/gameserver/room.cc | 6 ++++++ 3 files changed, 19 insertions(+) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 42738c1..d4f08a8 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -1126,6 +1126,9 @@ 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() @@ -1139,6 +1142,9 @@ void Creature::CancelAction() } } } + if (action_type == AT_Rescue) { + RemoveBuffById(kRescueBuffId); + } ResetAction(); } diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 18d90e8..7a4369d 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -896,6 +896,7 @@ void Human::DecHP(float dec_hp, int killer_id, const std::string& killer_name, i &xtimer_attacher.timer_list_ ); SyncAroundPlayers(__FILE__, __LINE__, __func__); + TryAddBuff(this, kDownBuffId); if (GetNearbyTeammateNum(MetaMgr::Instance()->refresh_ai_downed_nearby_range) < MetaMgr::Instance()->refresh_ai_downed_nearby_teammate_num) { #if 0 @@ -1541,6 +1542,11 @@ void Human::UpdateAction() ProcReliveAction(); } break; + case AT_Rescue: + { + RemoveBuffById(kRescueBuffId); + } + break; default: { } @@ -2444,6 +2450,7 @@ void Human::OnDie() void Human::FreeDownedTimer() { + RemoveBuffById(kDownBuffId); if (downed_timer) { room->xtimer.DeleteTimer(downed_timer); downed_timer = nullptr; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index a76f37f..87294c9 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -1268,9 +1268,15 @@ void Room::UpdateGas() ); if (!b1 && !b2) { pair.second->poisoning = true; + if (!pair.second->GetBuffByEffectId(kBET_Poisoning)) { + pair.second->TryAddBuff(pair.second, kPoisioningBuffId); + } } else { pair.second->poisoning = false; pair.second->poisoning_time = false; + if (pair.second->GetBuffByEffectId(kBET_Poisoning)) { + pair.second->RemoveBuffByEffectId(kBET_Poisoning); + } } } }