From f99e54b74d613673945f2bee08e0923e1599975c Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Jul 2021 02:35:20 +0000 Subject: [PATCH] fix c4 time bug --- server/gameserver/bullet.cc | 7 +++++++ server/gameserver/constant.h | 3 ++- server/gameserver/roomobstacle.cc | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index 8c65896..2d24ee7 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -132,6 +132,13 @@ void Bullet::ProcBomb() if (!block) { delay_time = gun_meta->i->missiles_time(); } + if (IsCurrWeapon() && + sender.Get() && + sender.Get()->GetAbility()->GetAttrAbs(kHAT_WeaponExplosionDealyTime) > 0) { + delay_time = delay_time / 1000 - + sender.Get()->GetAbility()->GetAttrAbs(kHAT_WeaponExplosionDealyTime) ; + delay_time = std::max(0, delay_time); + } switch (meta->i->_inventory_slot()) { case IS_RPG: { diff --git a/server/gameserver/constant.h b/server/gameserver/constant.h index 3124ceb..447a94f 100644 --- a/server/gameserver/constant.h +++ b/server/gameserver/constant.h @@ -159,12 +159,13 @@ enum HumanAttrType_e kHAT_WeaponShotSpeed = 21, kHAT_WeaponReloadTime = 22, kHAT_WeaponExplosionRange = 23, - kHAT_WeaponExplosionTime = 24, + kHAT_WeaponExplosionContinueTime = 24, kHAT_PoisoningReduction = 25, kHAT_RescueTime = 26, kHAT_DrugTime = 27, kHAT_DrugEfficacy = 28, kHAT_CarOil = 29, + kHAT_WeaponExplosionDealyTime = 30, kHAT_End }; diff --git a/server/gameserver/roomobstacle.cc b/server/gameserver/roomobstacle.cc index 7c688e3..8da81a9 100644 --- a/server/gameserver/roomobstacle.cc +++ b/server/gameserver/roomobstacle.cc @@ -196,8 +196,8 @@ void RoomObstacle::SpecExplosion() } } int total_explosion_times = meta->i->explosion_times(); - if (context_ability && context_ability->GetAttrAbs(kHAT_WeaponExplosionTime) > 0.001f) { - total_explosion_times += context_ability->GetAttrAbs(kHAT_WeaponExplosionTime) * 1000 / + if (context_ability && context_ability->GetAttrAbs(kHAT_WeaponExplosionContinueTime) > 0.001f) { + total_explosion_times += context_ability->GetAttrAbs(kHAT_WeaponExplosionContinueTime) * 1000 / meta->i->explosion_interval(); } if (explosion_times_ >= total_explosion_times) {