diff --git a/server/gameserver/buff/hide.cc b/server/gameserver/buff/hide.cc index d5aeeae5..47f16fff 100644 --- a/server/gameserver/buff/hide.cc +++ b/server/gameserver/buff/hide.cc @@ -68,6 +68,15 @@ void HideBuff::Deactivate() if (meta->_int_buff_param6 > 0) { owner->GetAbility()->DecSwitch(kHideBuffAimingShow); } + #if 0 + if (!owner->nature_recover_hp_idle_timer.expired()) { + owner->room->xtimer.FireEvent + ( + owner->nature_recover_hp_idle_timer, + kRemoveNatureRecoverTimerEvent, + nullptr); + } + #endif } void HideBuff::AddInRangeObject(Creature* target) diff --git a/server/gameserver/buff/turnover.cc b/server/gameserver/buff/turnover.cc index 918c7243..82e44c59 100644 --- a/server/gameserver/buff/turnover.cc +++ b/server/gameserver/buff/turnover.cc @@ -41,15 +41,7 @@ void TurnOverBuff::Activate() })); #endif App::Instance()->verify_set_pos = 1; - if (owner->IsClientMove()) { - owner->SetMoveDir(caster_.Get()->context_dir); - Position pos; - pos.FromGlmVec3(*caster_.Get()->GetClientCurrPos()); - owner->SetPos(pos); - owner->ForwardMove(distance, kTrunOverReason); - } else { - owner->ForwardMove(distance, kNormalReason); - } + owner->SpecDirMove(caster_.Get()->context_dir, distance, kNormalReason); App::Instance()->verify_set_pos = 0; owner->SetMoveDir(old_dir); if (phase->phase_param2.GetInt() == 1) { diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 7e844c0f..9e23dc01 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -978,6 +978,15 @@ void Creature::DoSkill(int skill_id, } Skill* skill = GetSkill(skill_id); if (skill && CanUseSkill(skill_id)) { + #if 1 + { + App::Instance()->verify_set_pos = 1; + Position pos; + pos.FromGlmVec3(*GetClientCurrPos()); + SetPos(pos); + App::Instance()->verify_set_pos = 0; + } + #endif #ifdef MYDEBUG if (IsPlayer()) { a8::XPrintf("DoSkill skill_id:%d a\n", {skill_id}); diff --git a/server/gameserver/movement.cc b/server/gameserver/movement.cc index 0c6f8ff0..3a117bbf 100644 --- a/server/gameserver/movement.cc +++ b/server/gameserver/movement.cc @@ -346,6 +346,11 @@ bool Movement::MoveToPos(const glm::vec3& target_pos) owner_->room->map_instance->Scale(end); bool ret = owner_->room->map_instance->RaycastEx(start, end, hit_point, hit_result, point.same_polys_flags, point.spec_polys, exclude_flags); + #if 1 + ret = true; + hit_point = target_pos; + point.tar_pos.FromGlmVec3(hit_point); + #else if (ret) { owner_->room->map_instance->UnScale(hit_point); point.tar_pos.FromGlmVec3(hit_point); @@ -359,6 +364,7 @@ bool Movement::MoveToPos(const glm::vec3& target_pos) abort(); #endif } + #endif } point.distance = owner_->GetPos().Distance2D2(point.tar_pos); point.src_pos = owner_->GetPos();