From 39ba2b5ab435197ff9861071ac9edfb53fadc411 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 30 Dec 2022 09:47:45 +0800 Subject: [PATCH] 1 --- server/gameserver/buff/hide.cc | 39 ++++++++++++++++++-------------- server/gameserver/buff/hide.h | 3 +++ server/gameserver/buff/sprint.cc | 14 ++++-------- 3 files changed, 29 insertions(+), 27 deletions(-) diff --git a/server/gameserver/buff/hide.cc b/server/gameserver/buff/hide.cc index 41c5c0e1..e0828058 100644 --- a/server/gameserver/buff/hide.cc +++ b/server/gameserver/buff/hide.cc @@ -10,6 +10,28 @@ #include "mt/SkillNumber.h" void HideBuff::Activate() +{ + ProcSkill(); +} + +void HideBuff::Deactivate() +{ + if (skill_meta) { + switch (skill_meta->GetMagicId()) { + case MAGIC_YS: + { + owner->GetTrigger()->YsBuffRemove(this); + } + break; + default: + { + } + break; + } + } +} + +void HideBuff::ProcSkill() { if (skill_meta) { switch (skill_meta->GetMagicId()) { @@ -42,20 +64,3 @@ void HideBuff::Activate() } } } - -void HideBuff::Deactivate() -{ - if (skill_meta) { - switch (skill_meta->GetMagicId()) { - case MAGIC_YS: - { - owner->GetTrigger()->YsBuffRemove(this); - } - break; - default: - { - } - break; - } - } -} diff --git a/server/gameserver/buff/hide.h b/server/gameserver/buff/hide.h index d35d4331..3f63ceb4 100644 --- a/server/gameserver/buff/hide.h +++ b/server/gameserver/buff/hide.h @@ -9,4 +9,7 @@ class HideBuff : public Buff virtual void Activate() override; virtual void Deactivate() override; + private: + + void ProcSkill(); }; diff --git a/server/gameserver/buff/sprint.cc b/server/gameserver/buff/sprint.cc index 2093bc1c..c2414c25 100644 --- a/server/gameserver/buff/sprint.cc +++ b/server/gameserver/buff/sprint.cc @@ -98,18 +98,13 @@ void SprintBuff::Check(Position& pre_pos, std::map& hited_object } std::set enemys; - Position old_pos = owner->GetPos(); - a8::Vec2 dir = owner->GetPos().CalcDir2D(pre_pos); - dir.Normalize(); + glm::vec3 dir = owner->GetPos().ToGlmVec3() - pre_pos.ToGlmVec3(); + GlmHelper::Normalize(dir); float distance = owner->GetPos().Distance2D2(pre_pos); for (int i = 0; i < (distance + 6); i += 5) { - // 999 -#if 1 -#else - owner->MutablePos.FromVec2((pre_pos) + (dir * i)); -#endif - owner->GetHitEnemys(enemys, meta->_param4); + glm::vec3 center = owner->GetPos().ToGlmVec3() + dir * (float)i; + owner->GetHitEnemys(enemys, center, meta->_param4); for (auto& enemy : enemys) { if (enemy->IsEntityType(ET_Car)) { continue; @@ -126,7 +121,6 @@ void SprintBuff::Check(Position& pre_pos, std::map& hited_object } } - owner->SetPos(old_pos); pre_pos = owner->GetPos(); }