diff --git a/.gitignore b/.gitignore index 13f7d83..cfe9abb 100644 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,5 @@ __pycache__ .user game.py *.cxx -compile_commands.json \ No newline at end of file +compile_commands.json +t diff --git a/server/gameserver/android.ai.cc b/server/gameserver/android.ai.cc index cfd0d38..bd1c234 100644 --- a/server/gameserver/android.ai.cc +++ b/server/gameserver/android.ai.cc @@ -66,7 +66,8 @@ void AndroidAI::Update(int delta_time) break; case AS_attack: { - if (state_elapsed_time < 1000) { + if ((state_elapsed_time < 3000 && last_target_) || + (state_elapsed_time < 1100)) { DoAttack(); } else { int rnd = rand(); @@ -151,6 +152,7 @@ void AndroidAI::DoAttack() sender->Shot(shot_dir); } } + last_target_ = enemy; } } diff --git a/server/gameserver/android.ai.h b/server/gameserver/android.ai.h index febec09..50263e6 100644 --- a/server/gameserver/android.ai.h +++ b/server/gameserver/android.ai.h @@ -28,4 +28,6 @@ private: void DoMove(); void DoAttack(); +private: + Human* last_target_ = nullptr; }; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index f53e221..36a94e1 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -117,10 +117,7 @@ void Room::Update(int delta_time) pair.second->Update(50); } if (GetFrameNo() % 2 == 0) { - for (auto& pair : human_hash_) { - pair.second->SendUpdateMsg(); - } - frame_event.Clear(); + SyncFrameData(); } ++frameno_; elapsed_time_ -= 50; @@ -2535,3 +2532,11 @@ bool Room::CanAddToScene(Human* hum) } return true; } + +void Room::SyncFrameData() +{ + for (auto& pair : human_hash_) { + pair.second->SendUpdateMsg(); + } + frame_event.Clear(); +} diff --git a/server/gameserver/room.h b/server/gameserver/room.h index ec00103..2477693 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -189,6 +189,7 @@ private: void NewBieRoomStart(); void CreateLevel0RoomSpecThings(); bool CanAddToScene(Human* hum); + void SyncFrameData(); #ifdef DEBUG void InitDebugInfo();