diff --git a/server/gameserver/android.cc b/server/gameserver/android.cc index 690fbb6..24269b1 100644 --- a/server/gameserver/android.cc +++ b/server/gameserver/android.cc @@ -3,12 +3,13 @@ #include "android.h" #include "metamgr.h" #include "android.ai.h" +#include "zombie.ai.h" #include "room.h" #include "app.h" Android::Android():Human() { - ai = new AndroidNewAI; + ai = new ZombieAI; ai->owner = this; #if 0 ++PerfMonitor::Instance()->entity_num[ET_Android]; diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index ab3a72c..a738076 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -1861,8 +1861,6 @@ void Human::ChangeToRace(RaceType_e race, int level) } race_ = race; level_ = level; - room->frame_event.AddRaceChg(this); - room->frame_event.AddLevelChg(this); if (race_ == kHumanRace) { meta = MetaMgr::Instance()->GetPlayer(HUMAN_RACE_META_START_ID + level_ - 1); if (!meta) { @@ -1880,6 +1878,13 @@ void Human::ChangeToRace(RaceType_e race, int level) } } +void Human::ChangeToRaceAndNotify(RaceType_e race, int level) +{ + ChangeToRace(race, level); + room->frame_event.AddRaceChg(this); + room->frame_event.AddLevelChg(this); +} + void Human::_InternalUpdateMove(float speed) { float nx = move_dir.x * speed; diff --git a/server/gameserver/human.h b/server/gameserver/human.h index 314c61f..dc38bd0 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -281,6 +281,7 @@ class Human : public MoveableEntity void _UpdateMove(int speed); RaceType_e GetRace() { return race_; } void ChangeToRace(RaceType_e race, int level); + void ChangeToRaceAndNotify(RaceType_e race, int level); protected: void _InternalUpdateMove(float speed); diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 1ce12ac..5afa5f1 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -306,6 +306,9 @@ void Room::CreateAndroid(int robot_num) alive_count_chged_frameno_ = GetFrameNo(); ++PerfMonitor::Instance()->alive_count; refreshed_robot_set_.insert(robot_meta->i->id()); + if (GetRoomMode() == kZombieMode) { + hum->ChangeToRace(kHumanRace, 1); + } if (!CanAddToScene(hum)) { a8::SetBitFlag(hum->status, HS_Disable); @@ -2494,6 +2497,9 @@ void Room::AddPlayerPostProc(Player* hum) while (human_hash_.size() > GetRoomMaxPlayerNum()) { RandRemoveAndroid(); } + if (GetRoomMode() == kZombieMode) { + hum->ChangeToRace(kHumanRace, 1); + } #ifdef DEBUG xtimer.AddRepeatTimerAndAttach (SERVER_FRAME_RATE * 5,