This commit is contained in:
aozhiwei 2022-10-10 09:35:56 +08:00
parent 193cbe9771
commit 9c5274c8d3
2 changed files with 87 additions and 0 deletions

View File

@ -103,3 +103,72 @@ void Ability::FillMFAttrAdditionList(Room* room, Human* hum,
}
}
}
void Ability::AddSpeedAddition(float rate)
{
speed_addition_rate_ += rate;
++speed_addition_times_;
}
void Ability::DelSpeedAddition(float rate)
{
speed_addition_rate_ -= rate;
speed_addition_rate_ = std::max(0.0f, speed_addition_rate_);
--speed_addition_times_;
#ifdef DEBUG
if (speed_addition_times_ < 0) {
abort();
}
#endif
}
float Ability::GetSpeedAddition()
{
return speed_addition_rate_;
}
void Ability::AddDmgRuduce(float rate)
{
dmg_ruduce_rate_ += rate;
++dmg_ruduce_times_;
}
void Ability::DelDmgRuduce(float rate)
{
dmg_ruduce_rate_ -= rate;
dmg_ruduce_rate_ = std::max(0.0f, dmg_ruduce_rate_);
--dmg_ruduce_times_;
#ifdef DEBUG
if (dmg_ruduce_times_ < 0) {
abort();
}
#endif
}
float Ability::GetDmgRuduce()
{
return dmg_ruduce_rate_;
}
void Ability::AddDmgAddition(float rate)
{
dmg_addition_rate_ += rate;
++dmg_addition_times_;
}
void Ability::DelDmgAddition(float rate)
{
dmg_addition_rate_ -= rate;
dmg_addition_rate_ = std::max(0.0f, dmg_addition_rate_);
--dmg_addition_times_;
#ifdef DEBUG
if (dmg_addition_times_ < 0) {
abort();
}
#endif
}
float Ability::GetDmgAddition()
{
return dmg_addition_rate_;
}

View File

@ -19,9 +19,27 @@ class Ability
float* GetBuffAttrRatePtr(int attr_id);
void FillMFAttrAdditionList(Room* room, Human* hum,
::google::protobuf::RepeatedPtrField<::cs::MFAttrAddition>* pb_attr_list);
void AddSpeedAddition(float rate);
void DelSpeedAddition(float rate);
float GetSpeedAddition();
void AddDmgRuduce(float rate);
void DelDmgRuduce(float rate);
float GetDmgRuduce();
void AddDmgAddition(float rate);
void DelDmgAddition(float rate);
float GetDmgAddition();
private:
std::array<float, kHAT_End> buff_attr_abs_ = {};
std::array<float, kHAT_End> buff_attr_rate_ = {};
std::array<int, kHAT_End> buff_attr_flag_ = {};
int speed_addition_times_ = 0;
float speed_addition_rate_ = 0;
int dmg_ruduce_times_ = 0;
float dmg_ruduce_rate_ = 0;
int dmg_addition_times_ = 0;
float dmg_addition_rate_ = 0;
};