From 6b19afac51d64b35a6dcdf1f73052e9321842d0d Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 14 Jun 2023 17:24:57 +0800 Subject: [PATCH] 1 --- server/gameserver/creature.cc | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index b9b29f48..abdc8727 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -2366,7 +2366,18 @@ void Creature::UpdateMove() } } room->grid_service->MoveCreature(this); - if (room->IsPveRoom() && IsEntityType(ET_Hero) && IsNearGas()) { + if (a8::HasBitFlag(status, CS_CrazeMode) && IsNearGas()) { + GetMutablePos() = old_pos; + GetMovement()->ClearPath(); + glm::vec3 dir = GetPos().ToGlmVec3() - old_pos.ToGlmVec3(); + if (std::abs(dir.x) > FLT_EPSILON || + std::abs(dir.y) > FLT_EPSILON || + std::abs(dir.z) > FLT_EPSILON + ) { + GlmHelper::Normalize(dir); + SetMoveDir(dir); + } + } else if (room->IsPveRoom() && IsEntityType(ET_Hero) && IsNearGas()) { GetMutablePos() = old_pos; GetMovement()->ClearPath(); glm::vec3 dir = GetPos().ToGlmVec3() - old_pos.ToGlmVec3();