From 1499cdabf10fad5684c3832bbd68e3143984b42b Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 25 Jul 2022 15:37:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8F=8D=E5=90=91buff?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/buff.cc | 13 +++++++++++++ server/gameserver/buff.h | 1 + server/gameserver/constant_export.h | 1 + server/gameserver/creature.cc | 5 +++++ 4 files changed, 20 insertions(+) diff --git a/server/gameserver/buff.cc b/server/gameserver/buff.cc index 3627e615..503e526d 100644 --- a/server/gameserver/buff.cc +++ b/server/gameserver/buff.cc @@ -863,3 +863,16 @@ void Buff::ProcRemoveInWater() } } } + +void Buff::ProcProcReserve() +{ + if (caster_.Get()) { + a8::Vec2 dir = owner->GetPos() - caster_.Get()->GetPos(); + if (std::isfinite(dir.x) && + std::isfinite(dir.y)) { + dir = dir * -1.0f; + owner->SetMoveDir(dir); + owner->SetAttackDir(dir); + } + } +} diff --git a/server/gameserver/buff.h b/server/gameserver/buff.h index e9ec1410..2deb321b 100644 --- a/server/gameserver/buff.h +++ b/server/gameserver/buff.h @@ -77,6 +77,7 @@ class Buff void ProcRemoveDive(); void ProcInWater(); void ProcRemoveInWater(); + void ProcProcReserve(); void CalcPassengerShotOffset(); diff --git a/server/gameserver/constant_export.h b/server/gameserver/constant_export.h index 8acb6448..abc49245 100644 --- a/server/gameserver/constant_export.h +++ b/server/gameserver/constant_export.h @@ -96,6 +96,7 @@ enum BuffEffectType_e kBET_ClientUse1 = 70, // kBET_ClientUse2 = 71, // kBET_Dive = 72, //下潜模式 + kBET_Reverse = 73, //人物反向 kBET_End }; diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 540e4e32..12beac06 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -1427,6 +1427,11 @@ void Creature::ProcBuffEffect(Creature* caster, Buff* buff) buff->ProcInWater(); } break; + case kBET_Reverse: + { + buff->ProcInWater(); + } + break; default: { }