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: { }