diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index 90146f8a..7706d3d9 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -251,7 +251,8 @@ void Bullet::ProcBomb() room->frame_event.AddExplosionEx(sender, meta->id(), bomb_pos, - gun_meta->explosion_effect()); + gun_meta->explosion_effect(), + GetUniId()); OnHit(objects); AddGunBuff(); } diff --git a/server/gameserver/explosion.cc b/server/gameserver/explosion.cc index d88a82da..54e599fe 100644 --- a/server/gameserver/explosion.cc +++ b/server/gameserver/explosion.cc @@ -167,7 +167,8 @@ void Explosion::InternalAttack() (sender_, 0, center_, - explosion_effect_); + explosion_effect_, + bullet_uniid); } if (explosion_damage_delay_ <= 0) { diff --git a/server/gameserver/explosion.h b/server/gameserver/explosion.h index 9f009ee9..6dbcc153 100644 --- a/server/gameserver/explosion.h +++ b/server/gameserver/explosion.h @@ -9,6 +9,7 @@ class Explosion : public std::enable_shared_from_this public: ~Explosion(); int exclude_uniid = 0; + int bullet_uniid = 0; Room* GetRoom() { return room_; }; CreatureWeakPtr GetSender() { return sender_; }; diff --git a/server/gameserver/frameevent.cc b/server/gameserver/frameevent.cc index ae0094a0..18d3ce29 100644 --- a/server/gameserver/frameevent.cc +++ b/server/gameserver/frameevent.cc @@ -159,10 +159,10 @@ void FrameEvent::RemoveBullet(glm::vec3 pos, int bullet_uniid) void FrameEvent::AddExplosion(Bullet* bullet, int item_id, Position bomb_pos) { - AddExplosionEx(bullet->sender, item_id, bomb_pos, 0); + AddExplosionEx(bullet->sender, item_id, bomb_pos, 0, 0); } -void FrameEvent::AddExplosionEx(CreatureWeakPtr& sender, int item_id, Position bomb_pos, int effect) +void FrameEvent::AddExplosionEx(CreatureWeakPtr& sender, int item_id, Position bomb_pos, int effect, int bullet_uniid) { #if 0 if (!sender.Get()) { @@ -182,6 +182,7 @@ void FrameEvent::AddExplosionEx(CreatureWeakPtr& sender, int item_id, Position b p.set_player_id(sender.Get()->GetUniId()); #endif p.set_effect(effect); + p.set_bullet_uniid(bullet_uniid); } { std::set grid_list; diff --git a/server/gameserver/frameevent.h b/server/gameserver/frameevent.h index ffda6485..a9083dd9 100644 --- a/server/gameserver/frameevent.h +++ b/server/gameserver/frameevent.h @@ -31,7 +31,7 @@ public: void AddExplosion(Bullet* bullet, int item_id, Position bomb_pos); void AddSmoke(Bullet* bullet, int item_id, glm::vec3 pos, float time_addition); void AddPlaySkill(CreatureWeakPtr& sender, int skill_id); - void AddExplosionEx(CreatureWeakPtr& sender, int item_id, Position bomb_pos, int effect); + void AddExplosionEx(CreatureWeakPtr& sender, int item_id, Position bomb_pos, int effect, int bullet_uniid); void AddBulletNumChg(CreatureWeakPtr& sender); void AddHpChg(CreatureWeakPtr& sender); void AddWeaponAmmoChg(CreatureWeakPtr& sender);