From f81d20b4b73a7d43e8baef0cf2c8c616761e8667 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 11 Mar 2021 17:42:00 +0800 Subject: [PATCH] 1 --- server/gameserver/bullet.cc | 57 ++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 23 deletions(-) diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index b9c2121..9c28f25 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -169,32 +169,43 @@ void Bullet::ProcBomb() } }); - switch (meta->i->_inventory_slot()) { - case 4: - { - //榴弹炮 - a8::Vec2 bomb_pos = GetPos(); - room->frame_event.AddExplosionEx(player, meta->i->id(), bomb_pos, - gun_meta->i->explosion_effect()); - OnHit(objects); + if (objects.empty()) { + float bullet_range = gun_meta->i->range(); + if (gun_upgrade_meta && gun_upgrade_meta->GetAttrValue(gun_lv, kHAT_ShotRange) > 0) { + bullet_range += gun_upgrade_meta->GetAttrValue(gun_lv, kHAT_ShotRange); } - break; - case 5: - { - //手雷 - a8::Vec2 bomb_pos = GetPos(); - room->frame_event.AddExplosion(this, meta->i->id(), bomb_pos); - OnHit(objects); + float distance = (GetPos() - born_pos).Norm(); + if (distance >= bullet_range) { + player->SummonObstacle(0, GetPos()); } - break; - case 6: - { - //烟雾弹 - a8::Vec2 bomb_pos = GetPos(); - room->frame_event.AddSmoke(this, meta->i->id(), bomb_pos); - ProcSmokeBomb(); + } else { + switch (meta->i->_inventory_slot()) { + case 4: + { + //榴弹炮 + a8::Vec2 bomb_pos = GetPos(); + room->frame_event.AddExplosionEx(player, meta->i->id(), bomb_pos, + gun_meta->i->explosion_effect()); + OnHit(objects); + } + break; + case 5: + { + //手雷 + a8::Vec2 bomb_pos = GetPos(); + room->frame_event.AddExplosion(this, meta->i->id(), bomb_pos); + OnHit(objects); + } + break; + case 6: + { + //烟雾弹 + a8::Vec2 bomb_pos = GetPos(); + room->frame_event.AddSmoke(this, meta->i->id(), bomb_pos); + ProcSmokeBomb(); + } + break; } - break; } room->RemoveObjectLater(this); }