diff --git a/server/gameserver/explosion.cc b/server/gameserver/explosion.cc index 2918cbb..68b16e5 100644 --- a/server/gameserver/explosion.cc +++ b/server/gameserver/explosion.cc @@ -73,6 +73,9 @@ void Explosion::InternalAttack() grid_list, [this, &objects] (Creature* c, bool& stop) { + if (c->GetUniId() == exclude_uniid) { + return; + } if (!c->Attackable(room_)) { return; } @@ -98,6 +101,9 @@ void Explosion::InternalAttack() grid_list, [this, &objects] (Entity* entity, bool& stop) { + if (entity->GetUniId() == exclude_uniid) { + return; + } if (!entity->Attackable(room_)) { return; } diff --git a/server/gameserver/explosion.h b/server/gameserver/explosion.h index 92b3966..4856975 100644 --- a/server/gameserver/explosion.h +++ b/server/gameserver/explosion.h @@ -6,6 +6,7 @@ class Room; class Explosion { public: + int exclude_uniid = 0; Room* GetRoom() { return room_; }; CreatureWeakPtr GetSender() { return sender_; }; diff --git a/server/gameserver/roomobstacle.cc b/server/gameserver/roomobstacle.cc index 5034479..75531e4 100644 --- a/server/gameserver/roomobstacle.cc +++ b/server/gameserver/roomobstacle.cc @@ -185,6 +185,7 @@ void RoomObstacle::SpecExplosion() a8::Vec2 bomb_pos = GetPos() + bomb_born_offset; if (room->grid_service->CanAdd(bomb_pos.x, bomb_pos.y)) { Explosion explosion; + explosion.exclude_uniid = GetUniId(); explosion.IndifferenceAttack( room, bomb_pos,