diff --git a/server/gameserver/android.ai.cc b/server/gameserver/android.ai.cc index 642ec97..f046701 100644 --- a/server/gameserver/android.ai.cc +++ b/server/gameserver/android.ai.cc @@ -241,7 +241,7 @@ void AndroidAI::DoAttackOldAI() void AndroidAI::UpdateNewAI() { Human* hum = (Human*)owner; - if (a8::HasBitFlag(hum->status, HS_Disable)) { + if (a8::HasBitFlag(hum->status, CS_Disable)) { return; } if (!ai_meta && GetAiLevel() != 0) { @@ -306,7 +306,7 @@ void AndroidAI::UpdateThinking() if (hum->room->GetGasData().gas_mode == GasInactive || hum->room->IsWaitingStart() || hum->HasBuffEffect(kBET_Jump) || - a8::HasBitFlag(hum->status, HS_DisableAttack)) { + a8::HasBitFlag(hum->status, CS_DisableAttack)) { if (hum->room->IsWaitingStart()) { ChangeToStateNewAI(ASE_Idle); } else { @@ -413,7 +413,7 @@ void AndroidAI::UpdatePursuit() if (node_->target.Get()) { float distance = myself->GetPos().Distance(node_->target.Get()->GetPos()); if (!myself->HasBuffEffect(kBET_Jump) && - !a8::HasBitFlag(myself->status, HS_DisableAttack) && + !a8::HasBitFlag(myself->status, CS_DisableAttack) && distance < GetAttackRange()) { ChangeToStateNewAI(ASE_Attack); } else { diff --git a/server/gameserver/android.cc b/server/gameserver/android.cc index 907f89e..566c3fb 100644 --- a/server/gameserver/android.cc +++ b/server/gameserver/android.cc @@ -55,7 +55,7 @@ void Android::Update(int delta_time) void Android::InternalUpdate(int delta_time) { - if (a8::HasBitFlag(status, HS_Disable)) { + if (a8::HasBitFlag(status, CS_Disable)) { return; } if (action_type != AT_None) { diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 23b9f8a..05d900b 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -1139,7 +1139,7 @@ bool Creature::IsProperTarget(Creature* target, bool no_teammate) if (target->dead) { return false; } - if (a8::HasBitFlag(target->status, HS_Disable)) { + if (a8::HasBitFlag(target->status, CS_Disable)) { return false; } if (!no_teammate && team_id == target->team_id) { diff --git a/server/gameserver/creature.h b/server/gameserver/creature.h index ee62f73..905c89f 100644 --- a/server/gameserver/creature.h +++ b/server/gameserver/creature.h @@ -23,6 +23,14 @@ struct SkillCasterState float caster_skill_param1 = 0.0f; }; +enum CreatureStatus +{ + CS_AlreadyLordMode = 1, + CS_Disable = 2, + CS_DisableAttack = 8, + CS_End +}; + struct xtimer_list; class Skill; class Obstacle; diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 9d8d179..b805603 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -1133,7 +1133,7 @@ bool Human::CanUseSkill(int skill_id) void Human::DoJump() { if (HasBuffEffect(kBET_Fly)) { - a8::UnSetBitFlag(status, HS_DisableAttack); + a8::UnSetBitFlag(status, CS_DisableAttack); RemoveBuffByEffectId(kBET_Fly); MustBeAddBuff(this, kThroughWall_BUFFID); MustBeAddBuff(this, JUMP_BUFFID); @@ -1278,7 +1278,7 @@ void Human::OnGridListChange(std::set& old_grids, void Human::SyncAroundPlayers(const char* file, int line, const char* func) { #if 0 - if (a8::HasBitFlag(status, HS_Disable)) { + if (a8::HasBitFlag(status, CS_Disable)) { return; } #endif @@ -1497,7 +1497,7 @@ void Human::RemoveObserver(Human* observer) void Human::SendUpdateMsg() { - if (!follow_target_ && !a8::HasBitFlag(status, HS_Disable) && IsPlayer()) { + if (!follow_target_ && !a8::HasBitFlag(status, CS_Disable) && IsPlayer()) { #ifdef DEBUG long long begin_tick = a8::XGetTickCount(); long long end_tick = a8::XGetTickCount(); @@ -1947,7 +1947,7 @@ void Human::ClearFrameData() new_objects.clear(); } if (!del_objects.empty()) { - if (!a8::HasBitFlag(status, HS_Disable)) { + if (!a8::HasBitFlag(status, CS_Disable)) { for (auto& itr : del_objects) { Entity* entity = room->GetEntityByUniId(itr); if (entity) { @@ -1965,7 +1965,7 @@ void Human::ClearFrameData() del_objects.clear(); } if (!out_objects.empty()) { - if (!a8::HasBitFlag(status, HS_Disable)) { + if (!a8::HasBitFlag(status, CS_Disable)) { for (auto& itr : out_objects) { Entity* entity = room->GetEntityByUniId(itr); if (entity) { @@ -2823,7 +2823,7 @@ void Human::AdjustDecHp(float old_health, float& new_health) void Human::OnEnable() { - a8::UnSetBitFlag(status, HS_Disable); + a8::UnSetBitFlag(status, CS_Disable); enable_frameno = room->GetFrameNo(); room->grid_service->MoveCreature(this); FindLocation(); @@ -2832,7 +2832,7 @@ void Human::OnEnable() void Human::OnDisable() { - a8::SetBitFlag(status, HS_Disable); + a8::SetBitFlag(status, CS_Disable); RemoveFromScene(); ClearFrameData(); ClearPartObjects(); diff --git a/server/gameserver/human.h b/server/gameserver/human.h index e9616d2..d457a48 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -13,14 +13,6 @@ namespace MetaData struct SkillPhase; } -enum HumanStatus -{ - HS_AlreadyLordMode = 1, - HS_Disable = 2, - HS_DisableAttack = 8, - HS_End -}; - struct PartObject { int entity_uniid = 0; diff --git a/server/gameserver/obstacle.cc b/server/gameserver/obstacle.cc index 11da54d..0a1511c 100644 --- a/server/gameserver/obstacle.cc +++ b/server/gameserver/obstacle.cc @@ -617,3 +617,8 @@ bool Obstacle::DoInteraction(Human* sender) } return false; } + +void Obstacle::OnCollisionTrigger(Creature* c) +{ + +} diff --git a/server/gameserver/obstacle.h b/server/gameserver/obstacle.h index 088c93d..493fa87 100644 --- a/server/gameserver/obstacle.h +++ b/server/gameserver/obstacle.h @@ -45,6 +45,7 @@ class Obstacle : public Entity virtual bool CanThroughable(Creature* c); virtual bool CanThroughable(Bullet* bullet); virtual bool DoInteraction(Human* sender); + virtual void OnCollisionTrigger(Creature* c); void Explosion(Bullet* bullet); void SetDoorInfo(Building* building, int door_id_x); bool IsDoor(); diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index f4e879e..8a4dd7e 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -1373,7 +1373,7 @@ void Player::_CMAdStart(f8::MsgHdr& hdr, const cs::CMAdStart& msg) if (GetBuffByEffectId(kBET_AdPlaying)) { return; } - if (a8::HasBitFlag(status, HS_AlreadyLordMode)) { + if (a8::HasBitFlag(status, CS_AlreadyLordMode)) { return; } if (ad_timer_) { @@ -1507,7 +1507,7 @@ void Player::InternalAdCancel() void Player::InternalAdOk() { - if (a8::HasBitFlag(status, HS_AlreadyLordMode)) { + if (a8::HasBitFlag(status, CS_AlreadyLordMode)) { return; } MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(ADPLAY_BUFFID); @@ -1519,7 +1519,7 @@ void Player::InternalAdOk() lord_buff_meta = MetaMgr::Instance()->GetBuff(buff_meta->param2); } if (lord_buff_meta) { - a8::SetBitFlag(status, HS_AlreadyLordMode); + a8::SetBitFlag(status, CS_AlreadyLordMode); AddBuff(this, lord_buff_meta, 1); std::vector strings; a8::Split(lord_buff_meta->i->buff_param1(), strings, ':'); diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 0ed6d1e..725064d 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -314,7 +314,7 @@ void Room::ShowAndroid(Human* target, int num) for (auto& pair : human_hash_) { Human* hum = pair.second; if (hum->IsAndroid() && - a8::HasBitFlag(hum->status, HS_Disable)) { + a8::HasBitFlag(hum->status, CS_Disable)) { if (hum->born_point) { DecBornPointHumanNum(hum->born_point, hum); } @@ -370,7 +370,7 @@ void Room::CreateAndroid(int robot_num) } if (!CanAddToScene(hum)) { - a8::SetBitFlag(hum->status, HS_Disable); + a8::SetBitFlag(hum->status, CS_Disable); } else { AddToAliveHumanHash(hum); AddToMoveableHash(hum); @@ -401,7 +401,7 @@ Human* Room::FindEnemy(Human* hum) if (!huma->dead && huma->IsAndroid() && hum->team_id != huma->team_id && - !a8::HasBitFlag(huma->status, HS_Disable)) { + !a8::HasBitFlag(huma->status, CS_Disable)) { if (!target) { target = huma; } else { @@ -1238,7 +1238,7 @@ void Room::UpdateGas() } for (auto& pair : human_hash_) { if (pair.second->real_dead || - a8::HasBitFlag(pair.second->status, HS_Disable)) { + a8::HasBitFlag(pair.second->status, CS_Disable)) { continue; } bool b1 = a8::CircleContainCircle(gas_data_.pos_old, @@ -2289,7 +2289,7 @@ void Room::SecondRandPoint() tmp_humans.reserve(GetRoomMaxPlayerNum()); for (auto& pair : human_hash_) { if (pair.second->IsAndroid() && - a8::HasBitFlag(pair.second->status, HS_Disable) && + a8::HasBitFlag(pair.second->status, CS_Disable) && pair.second->team_uuid.empty() ) { tmp_humans.push_back(pair.second); @@ -2337,7 +2337,7 @@ void Room::NotifyGameStart() pair.second->SendNotifyMsg(msg); } for (auto& pair : human_hash_) { - a8::SetBitFlag(pair.second->status, HS_DisableAttack); + a8::SetBitFlag(pair.second->status, CS_DisableAttack); } waiting_start_ = true; @@ -2359,7 +2359,7 @@ void Room::NotifyGameStart() { Room* room = (Room*)param.sender.GetUserData(); for (auto& pair : room->human_hash_) { - a8::UnSetBitFlag(pair.second->status, HS_DisableAttack); + a8::UnSetBitFlag(pair.second->status, CS_DisableAttack); for (int buff_id : room->map_meta_->buff_list) { MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(buff_id); if (buff_meta) { @@ -2460,7 +2460,7 @@ void Room::EnableHuman(Human* target) AddToAliveHumanHash(target); } #else - if (a8::HasBitFlag(target->status, HS_Disable)) { + if (a8::HasBitFlag(target->status, CS_Disable)) { target->OnEnable(); AddToMoveableHash(target); if (!target->real_dead) { @@ -2490,7 +2490,7 @@ void Room::DisableHuman(Human* target) target->GetUniId() }); #endif - if (!a8::HasBitFlag(target->status, HS_Disable)) { + if (!a8::HasBitFlag(target->status, CS_Disable)) { target->OnDisable(); RemoveFromMoveableHash(target); RemoveFromAliveHumanHash(target); @@ -2731,7 +2731,7 @@ void Room::ProcDieAndroid(int die_time, int die_num) hum->BeKill(VP_SafeArea, TEXT("battle_server_killer_gas", "毒圈"), VW_SafeArea); - a8::UnSetBitFlag(hum->status, HS_Disable); + a8::UnSetBitFlag(hum->status, CS_Disable); return; } } @@ -2754,7 +2754,7 @@ void Room::ProcDieAndroid(int die_time, int die_num) hum->BeKill(killer->GetUniId(), killer->name, killer->GetCurrWeapon()->weapon_id); - a8::UnSetBitFlag(hum->status, HS_Disable); + a8::UnSetBitFlag(hum->status, CS_Disable); } else { hum->BeKill(VP_SafeArea, TEXT("battle_server_killer_gas", "毒圈"), @@ -2763,7 +2763,7 @@ void Room::ProcDieAndroid(int die_time, int die_num) alive_humans.erase(alive_humans.begin() + i); alive_humans_copy.erase(alive_humans_copy.begin() + i); } - a8::UnSetBitFlag(hum->status, HS_Disable); + a8::UnSetBitFlag(hum->status, CS_Disable); } ++dead_num; break; @@ -2816,12 +2816,12 @@ void Room::CheckAutoDie(Human* target, GetAliveHumans(alive_humans, 5, target); if (!alive_humans.empty()) { Human* killer = alive_humans[rand() % alive_humans.size()]; - a8::UnSetBitFlag(target->status, HS_Disable); + a8::UnSetBitFlag(target->status, CS_Disable); target->BeKill(killer->GetUniId(), killer->name, killer->GetCurrWeapon()->weapon_id); } else { - a8::UnSetBitFlag(target->status, HS_Disable); + a8::UnSetBitFlag(target->status, CS_Disable); target->BeKill(VP_SafeArea, TEXT("battle_server_killer_gas", "毒圈"), VW_SafeArea); @@ -2846,7 +2846,7 @@ void Room::ProcDisableHuman() for (auto& pair : human_hash_) { if (pair.second->IsAndroid() && pair.second->team_uuid.empty() && - !a8::HasBitFlag(pair.second->status, HS_Disable)) { + !a8::HasBitFlag(pair.second->status, CS_Disable)) { DisableHuman(pair.second); } } @@ -2855,7 +2855,7 @@ void Room::ProcDisableHuman() for (auto& pair : human_hash_) { if (pair.second->IsAndroid() && pair.second->team_uuid.empty() && - !a8::HasBitFlag(pair.second->status, HS_Disable)) { + !a8::HasBitFlag(pair.second->status, CS_Disable)) { DisableHuman(pair.second); } } @@ -2882,7 +2882,7 @@ void Room::ShuaGridRound(Human* target) for (auto& pair : human_hash_) { Human* hum = pair.second; if (hum->IsAndroid() && - a8::HasBitFlag(hum->status, HS_Disable) && + a8::HasBitFlag(hum->status, CS_Disable) && !hum->real_dead && hum->team_uuid.empty() && grid_service->InView(target->GetGridId(), hum->GetPos().x, hum->GetPos().y) @@ -2948,8 +2948,8 @@ void Room::CheckPartObjects(Human* testa, Human* testb) (huma == testb && humb == testa)) { } } - if (a8::HasBitFlag(huma->status, HS_Disable) || - a8::HasBitFlag(humb->status, HS_Disable) || + if (a8::HasBitFlag(huma->status, CS_Disable) || + a8::HasBitFlag(humb->status, CS_Disable) || huma->GetPartObjectsCount() <= 0 ) { return; @@ -2994,7 +2994,7 @@ void Room::CheckAliveHuman(Human* hum, std::vector& alive_humans) if (hum->IsAndroid() && !hum->real_dead && hum->team_uuid.empty() && - a8::HasBitFlag(hum->status, HS_Disable) && + a8::HasBitFlag(hum->status, CS_Disable) && !HasPlayerInRound(hum->GetPos(), VIEW_RANGE)) { alive_humans.push_back(hum); } @@ -3335,7 +3335,7 @@ void Room::GetCanEnableAndroids(std::vector& humans, size_t num) for (auto& pair : human_hash_) { if (pair.second->IsAndroid() && !pair.second->real_dead && - a8::HasBitFlag(pair.second->status, HS_Disable) + a8::HasBitFlag(pair.second->status, CS_Disable) ) { if (humans.size() >= num) { break; @@ -3557,7 +3557,7 @@ void Room::ShuaLastGas() for (auto& pair : human_hash_) { Human* hum = pair.second; if (hum->IsAndroid() && - a8::HasBitFlag(hum->status, HS_Disable) && + a8::HasBitFlag(hum->status, CS_Disable) && !hum->real_dead && hum->team_uuid.empty() ) { diff --git a/server/gameserver/team.cc b/server/gameserver/team.cc index d8709d2..c06d36b 100644 --- a/server/gameserver/team.cc +++ b/server/gameserver/team.cc @@ -78,7 +78,7 @@ void Team::CombineBornPoint() } else { member->SetPos(member->born_point->RandPoint()); } - if (!a8::HasBitFlag(member->status, HS_Disable)) { + if (!a8::HasBitFlag(member->status, CS_Disable)) { member->FindLocation(); member->RefreshView(); room->grid_service->MoveCreature(member); diff --git a/server/gameserver/zombiemode.ai.cc b/server/gameserver/zombiemode.ai.cc index 2fb56cc..0f7884f 100644 --- a/server/gameserver/zombiemode.ai.cc +++ b/server/gameserver/zombiemode.ai.cc @@ -87,7 +87,7 @@ float ZombieModeAI::GetAttackRate() void ZombieModeAI::UpdateAI() { Human* hum = (Human*)owner; - if (a8::HasBitFlag(hum->status, HS_Disable)) { + if (a8::HasBitFlag(hum->status, CS_Disable)) { return; } if (!node_->ai_meta && GetAiLevel() != 0) {