From 01f55ae48f9219df512b2594dbe45cd5f8c061b5 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 19 Oct 2022 15:11:23 +0800 Subject: [PATCH] 1 --- server/gameserver/ability.cc | 28 ++++++++++++++++++++++++++++ server/gameserver/ability.h | 10 ++++++++++ server/gameserver/creature.cc | 2 +- server/gameserver/human.cc | 2 +- 4 files changed, 40 insertions(+), 2 deletions(-) diff --git a/server/gameserver/ability.cc b/server/gameserver/ability.cc index 2716605e..23f9d2db 100644 --- a/server/gameserver/ability.cc +++ b/server/gameserver/ability.cc @@ -281,3 +281,31 @@ bool Ability::CanImmune(const std::set& tags) } return false; } + +void Ability::AddSpeedRuduce(float rate) +{ + speed_ruduce_rate_ += rate; + ++speed_ruduce_times_; +} + +void Ability::DelSpeedRuduce(float rate) +{ + speed_ruduce_rate_ -= rate; + speed_ruduce_rate_ = std::max(0.0f, speed_ruduce_rate_); + --speed_ruduce_times_; +#ifdef DEBUG + if (speed_ruduce_times_ < 0) { + abort(); + } +#endif +} + +float Ability::GetSpeedRuduce() +{ + return speed_ruduce_rate_; +} + +int Ability::GetSpeedRuduceTimes() +{ + return speed_ruduce_times_; +} diff --git a/server/gameserver/ability.h b/server/gameserver/ability.h index b8c8a311..65181a52 100644 --- a/server/gameserver/ability.h +++ b/server/gameserver/ability.h @@ -23,10 +23,17 @@ class Ability void DelSpeedAddition(float rate); float GetSpeedAddition(); int GetSpeedAdditionTimes(); + + void AddSpeedRuduce(float rate); + void DelSpeedRuduce(float rate); + float GetSpeedRuduce(); + int GetSpeedRuduceTimes(); + void AddDmgRuduce(float rate); void DelDmgRuduce(float rate); float GetDmgRuduce(); int GetDmgRuduceTimes(); + void AddDmgAddition(float rate); void DelDmgAddition(float rate); float GetDmgAddition(); @@ -54,6 +61,9 @@ class Ability int speed_addition_times_ = 0; float speed_addition_rate_ = 0; + int speed_ruduce_times_ = 0; + float speed_ruduce_rate_ = 0; + int dmg_ruduce_times_ = 0; float dmg_ruduce_rate_ = 0; diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 255140b5..ac5f79a1 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -219,7 +219,7 @@ int Creature::AddBuff(Creature* caster, { SendDebugMsg(a8::Format("添加buff_id:%d effect:%d %s params:%d,%d,%d,%d,%d uniid:%d dur:%d", { - buff_meta->i->buff_id(), + buff_meta->i->buff_id(), buff_meta->i->buff_effect(), buff_meta->i->name(), buff_meta->int_param1, diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 96f28590..aca5c3ee 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -439,7 +439,7 @@ float Human::GetSpeed() } float old_speed = speed; #if 1 - speed = (speed * SERVER_FRAME_RATE * (1 + GetAbility()->GetSpeedAddition())) / SERVER_FRAME_RATE; + speed = (speed * SERVER_FRAME_RATE * (1 + GetAbility()->GetSpeedAddition() + GetAbility()->GetSpeedRuduce())) / SERVER_FRAME_RATE; #else speed = (speed + GetAbility()->GetAttrAbs(kHAT_Speed)) * (1 + GetAbility()->GetAttrRate(kHAT_Speed));