From 52fb6567b2d0ec66fc32f8010aa5cb6ca0aa6dba Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 7 May 2021 19:41:57 +0800 Subject: [PATCH] 1 --- server/gameserver/bullet.cc | 3 +-- server/gameserver/creature.cc | 11 ++++++++++- server/gameserver/creature.h | 1 + server/gameserver/frag_mitask.cc | 3 +-- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index 0c932a8..5257d7b 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -55,8 +55,7 @@ void Bullet::OnHit(std::set& objects) case ET_Player: { Human* hum = (Human*)target; - if (hum->HasBuffEffect(kBET_Invincible) || - hum->HasBuffEffect(kBET_AdPlaying)) { + if (hum->IsInvincible()) { continue; } if (sender.Get()->room->GetRoomMode() == kZombieMode && diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index cc35e24..3502a2a 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -1076,7 +1076,7 @@ bool Creature::IsProperTarget(Creature* target) if (room->GetRoomMode() == kZombieMode && GetRace() == target->GetRace()) { return false; } - if (target->HasBuffEffect(kBET_Invincible)) { + if (target->IsInvincible()) { return false; } if (target->HasBuffEffect(kBET_Hide)) { @@ -1580,3 +1580,12 @@ void Creature::RemoveMoreObstacle(int buff_id, int id, int num) { } + +bool Creature::IsInvincible() +{ + return HasBuffEffect(kBET_Invincible) || + HasBuffEffect(kBET_AdPlaying) || + HasBuffEffect(kBET_Driver) || + HasBuffEffect(kBET_Passenger) + ; +} diff --git a/server/gameserver/creature.h b/server/gameserver/creature.h index 1b5e8d7..67daefd 100644 --- a/server/gameserver/creature.h +++ b/server/gameserver/creature.h @@ -150,6 +150,7 @@ class Creature : public MoveableEntity void UpdateSkill(); bool FreezeOperate(); void SlaveOnRemove(Entity* slave); + bool IsInvincible(); private: diff --git a/server/gameserver/frag_mitask.cc b/server/gameserver/frag_mitask.cc index 38bba3d..44317d5 100644 --- a/server/gameserver/frag_mitask.cc +++ b/server/gameserver/frag_mitask.cc @@ -51,8 +51,7 @@ void FragMiTask::Done() ); for (auto& target : objects) { - if (target->HasBuffEffect(kBET_Invincible) || - target->HasBuffEffect(kBET_AdPlaying)) { + if (target->IsInvincible()) { continue; } if (sender.Get()->room->GetRoomMode() == kZombieMode &&