diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index 67ab936..3d2b215 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -284,7 +284,11 @@ float Bullet::GetAtk() Android* android = (Android*)sender.Get(); atk *= android->ai->GetAttackRate(); } - return atk; + float attr_rate = 1 + sender.Get()->GetAttrRate(kHAT_Atk); + if (IsCurrWeapon()) { + attr_rate += sender.Get()->GetAttrRate(kHAT_WeaponDmg); + } + return atk * attr_rate; } void Bullet::Check(float distance) diff --git a/server/gameserver/car.cc b/server/gameserver/car.cc index f0b4cef..4505ff4 100644 --- a/server/gameserver/car.cc +++ b/server/gameserver/car.cc @@ -267,8 +267,7 @@ float Car::GetSpeed() void Car::OnBulletHit(Bullet* bullet) { if (!IsDead(room)) { - float dmg = bullet->GetAtk() * (1 + bullet->sender.Get()->GetAttrRate(kHAT_Atk)) + - bullet->sender.Get()->GetAttrAbs(kHAT_Atk) + bullet->gun_meta->i->atk_mech(); + float dmg = bullet->GetAtk() + bullet->gun_meta->i->atk_mech(); float def = ability.def * (1 + GetAttrRate(kHAT_Def)) + GetAttrAbs(kHAT_Def); float finaly_dmg = dmg * (1 - def/MetaMgr::Instance()->K); diff --git a/server/gameserver/hero.cc b/server/gameserver/hero.cc index 3ca1a27..8f382a8 100644 --- a/server/gameserver/hero.cc +++ b/server/gameserver/hero.cc @@ -82,8 +82,7 @@ void Hero::OnBulletHit(Bullet* bullet) return; } if (!IsDead(room) && (bullet->IsBomb() || bullet->sender.Get()->team_id != team_id)) { - float dmg = bullet->GetAtk() * (1 + bullet->sender.Get()->GetAttrRate(kHAT_Atk)) + - bullet->sender.Get()->GetAttrAbs(kHAT_Atk); + float dmg = bullet->GetAtk(); float def = ability.def * (1 + GetAttrRate(kHAT_Def)) + GetAttrAbs(kHAT_Def); float finaly_dmg = dmg * (1 - def/MetaMgr::Instance()->K); diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index f25c371..76c4485 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -3469,13 +3469,8 @@ void Human::OnBulletHit(Bullet* bullet) return; } if (!dead && (bullet->IsBomb() || bullet->sender.Get()->team_id != team_id)) { - float attr_rate = 1 + bullet->sender.Get()->GetAttrRate(kHAT_Atk); - if (bullet->IsCurrWeapon()) { - attr_rate += bullet->sender.Get()->GetAttrRate(kHAT_WeaponDmg); - } - float dmg = bullet->GetAtk() * attr_rate + bullet->sender.Get()->GetAttrAbs(kHAT_Atk); - float def = ability.def * (1 + GetAttrRate(kHAT_Def)) + - GetAttrAbs(kHAT_Def); + float dmg = bullet->GetAtk(); + float def = ability.def * (1 + GetAttrRate(kHAT_Def)) + GetAttrAbs(kHAT_Def); float finaly_dmg = dmg * (1 - def/MetaMgr::Instance()->K); finaly_dmg = std::max(finaly_dmg, 0.0f); #if 0 diff --git a/server/gameserver/obstacle.cc b/server/gameserver/obstacle.cc index d730135..4e801a4 100644 --- a/server/gameserver/obstacle.cc +++ b/server/gameserver/obstacle.cc @@ -487,8 +487,7 @@ void Obstacle::OnBulletHit(Bullet* bullet) } } } - float dmg = bullet->GetAtk() * (1 + bullet->sender.Get()->GetAttrRate(kHAT_Atk)) + - bullet->sender.Get()->GetAttrAbs(kHAT_Atk); + float dmg = bullet->GetAtk(); float def = 0; float finaly_dmg = dmg * (1 - def/MetaMgr::Instance()->K); SetHealth(bullet->room, std::max(0.0f, GetHealth(bullet->room) - finaly_dmg));