From e065184b05dfc3eaaa54422a8147b855d9740add Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 25 Jul 2019 14:56:40 +0800 Subject: [PATCH] 1 --- server/gameserver/android.ai.cc | 2 +- server/gameserver/human.cc | 9 +++++++++ server/gameserver/human.h | 1 + server/gameserver/player.cc | 2 +- 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/server/gameserver/android.ai.cc b/server/gameserver/android.ai.cc index 2db67d6..5d7be35 100644 --- a/server/gameserver/android.ai.cc +++ b/server/gameserver/android.ai.cc @@ -215,7 +215,7 @@ void AndroidAI::Shot(Human* enemy) return; } if (((HumMaster()->room->frameno - HumMaster()->last_shot_frameno_) * (1000 / kSERVER_FRAME_RATE)) >= - HumMaster()->curr_weapon->meta->i->fire_rate() + HumMaster()->GetFireRate() ) { a8::Vec2 shot_dir = enemy->pos - HumMaster()->pos; if (std::abs(shot_dir.x) > FLT_EPSILON || diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 288e26b..f18d6e6 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -1650,6 +1650,15 @@ float Human::BuffAttrRate(int buff_effect_id) } } +float Human::GetFireRate() +{ + if (curr_weapon) { + return curr_weapon->meta->i->fire_rate() + ability.fire_rate; + } else { + return ability.fire_rate; + } +} + void Human::_UpdateMove(int speed) { for (int i = 0; i < speed; ++i) { diff --git a/server/gameserver/human.h b/server/gameserver/human.h index 1d7b554..ed69115 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -202,6 +202,7 @@ class Human : public Entity void SendGameOver(); float BuffAttrAbs(int buff_effect_id); float BuffAttrRate(int buff_effect_id); + float GetFireRate(); protected: void _UpdateMove(int speed); diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 6bab4f1..da33028 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -143,7 +143,7 @@ void Player::UpdateShot() if (last_shot_frameno_ == 0 || ( (room->frameno - last_shot_frameno_) * (1000 / kSERVER_FRAME_RATE)) >= - curr_weapon->meta->i->fire_rate() + GetFireRate() ) { Shot(); }