diff --git a/server/gameserver/android.ai.cc b/server/gameserver/android.ai.cc index 4807c204..29970c84 100644 --- a/server/gameserver/android.ai.cc +++ b/server/gameserver/android.ai.cc @@ -466,19 +466,13 @@ void AndroidAI::DoMoveNewAI() } if (std::abs(hum->GetMoveDir().x) > FLT_EPSILON || std::abs(hum->GetMoveDir().y) > FLT_EPSILON) { - hum->on_move_collision = - [this] () { - ChangeToStateNewAI(ASE_RandomWalk); - return false; - }; int speed = std::max(1, (int)hum->GetSpeed()) * 1; a8::Vec2 old_pos = hum->GetPos(); hum->_UpdateMove(speed); if (owner->room->IsPveRoom() && IsNearGas()) { hum->SetPos(old_pos); - hum->on_move_collision(); + ChangeToStateNewAI(ASE_RandomWalk); } - hum->on_move_collision = nullptr; if (node_->nearest_human.Get()) { if (node_->main_state != ASE_Pursuit && hum->GetPos().ManhattanDistance(node_->nearest_human.Get()->GetPos()) < 200) { diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 08ef5960..6e20428c 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -3301,16 +3301,7 @@ void Creature::_UpdateSpecMove() move_dir.Normalize(); SetMoveDir(move_dir); bool is_collision = false; - std::function old_on_move_collision = on_move_collision; - on_move_collision = - [&is_collision] () { - is_collision = true; - return false; - }; - _UpdateMove(std::min((int)target_distance, (int)GetSpeed())); - - on_move_collision = old_on_move_collision; move_dir = old_move_dir; target_distance = target_pos.Distance(GetPos()); if (is_collision || target_distance <= 1.0001f) { diff --git a/server/gameserver/creature.h b/server/gameserver/creature.h index c6739a14..4220e3d5 100644 --- a/server/gameserver/creature.h +++ b/server/gameserver/creature.h @@ -86,7 +86,6 @@ class Creature : public MoveableEntity int shot_hole = 0; Creature* shot_passenger = nullptr; a8::Vec2 target_pos; - std::function on_move_collision; bool poisoning = false; long long poisoning_time = 0; bool playing_skill = false; diff --git a/server/gameserver/hero.ai.cc b/server/gameserver/hero.ai.cc index 2f1d4309..d1a9515a 100644 --- a/server/gameserver/hero.ai.cc +++ b/server/gameserver/hero.ai.cc @@ -273,33 +273,12 @@ void HeroAI::DoMoveAI() } if (std::abs(hero->GetMoveDir().x) > FLT_EPSILON || std::abs(hero->GetMoveDir().y) > FLT_EPSILON) { - auto old_on_move_collision_func = hero->on_move_collision; - hero->on_move_collision = - [this] () { - if (node_->main_state == HSE_FollowMaster) { - ChangeToStateAI(HSE_FollowMaster); - } else { - ChangeToStateAI(HSE_RandomWalk); - } - return false; - }; int speed = std::max(1, (int)hero->GetSpeed()) * 1; a8::Vec2 old_pos = hero->GetPos(); hero->_UpdateMove(speed); if (owner->room->IsPveRoom() && IsNearGas()) { -#if 1 hero->SetPos(old_pos); - hero->on_move_collision(); -#else - //if (hero->room->GetFrameNo() - node_->last_adjust_dir_frameno > SERVER_FRAME_RATE * 3) { - a8::Vec2 dir = hero->GetPos() - hero->room->GetGasData().pos_new; - hero->SetMoveDir(dir); - hero->GetMoveHelper()->CalcTargetPos(500); - node_->last_adjust_dir_frameno = hero->room->GetFrameNo(); - //} -#endif } - hero->on_move_collision = old_on_move_collision_func; } } diff --git a/server/gameserver/hero.cc b/server/gameserver/hero.cc index 08f38afd..d4182007 100644 --- a/server/gameserver/hero.cc +++ b/server/gameserver/hero.cc @@ -180,9 +180,11 @@ void Hero::InternalUpdateMove(float speed) if (!CheckCollision()) { room->grid_service->MoveCreature(this); } else { +#if 0 if (on_move_collision && !on_move_collision()) { SetPos(old_pos); } +#endif } } diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 25f0dce8..67b3e7ba 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -2101,10 +2101,12 @@ void Human::_InternalUpdateMove(float speed) SetPos(old_pos); return; } + #if 0 if (on_move_collision && !on_move_collision()) { SetPos(old_pos); return; } + #endif nx = 0; } @@ -2114,10 +2116,12 @@ void Human::_InternalUpdateMove(float speed) SetPos(old_pos); return; } +#if 0 if (on_move_collision && !on_move_collision()) { SetPos(old_pos); return; } +#endif ny = 0; } @@ -3552,7 +3556,7 @@ void Human::OnLand() if (IsAndroid() && team_uuid.empty()) { MustBeAddBuff(this, kBeRecycleBuffId); } -#endif + #endif if (IsPlayer()) { StartRefreshViewTimer(); }