diff --git a/server/gameserver/explosion.cc b/server/gameserver/explosion.cc index b3bcd52..32381b7 100644 --- a/server/gameserver/explosion.cc +++ b/server/gameserver/explosion.cc @@ -72,6 +72,9 @@ void Explosion::ProcDamage() grid_list, [this, &objects] (Creature* c, bool& stop) { + if (c->dead) { + return; + } if (c->GetUniId() == exclude_uniid) { return; } @@ -147,13 +150,13 @@ void Explosion::InternalAttack() .SetSender(self), [] (const a8::XParams& param) { - std::shared_ptr* self = (std::shared_ptr*)param.sender.GetUserData(); + auto* self = (std::shared_ptr*)param.sender.GetUserData(); (*self)->ProcDamage(); }, &room_->xtimer_attacher_.timer_list_, [] (const a8::XParams& param) { - std::shared_ptr* self = (std::shared_ptr*)param.sender.GetUserData(); + auto* self = (std::shared_ptr*)param.sender.GetUserData(); delete self; }); } @@ -161,7 +164,8 @@ void Explosion::InternalAttack() bool Explosion::IsPreBattleExplosion() { - return create_frameno_ <= room_->GetBattleStartFrameNo() || room_->GetBattleStartFrameNo() == 0; + return create_frameno_ <= room_->GetBattleStartFrameNo() || + room_->GetBattleStartFrameNo() == 0; } void Explosion::AddForceTarget(CreatureWeakPtr force_target)