From 024b9ddece2777dd6e5c917da21c8232c1f58b22 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 28 Mar 2023 13:25:56 +0800 Subject: [PATCH] 1 --- server/gameserver/battledatacontext.cc | 10 ++++++++++ server/gameserver/battledatacontext.h | 2 ++ server/gameserver/player.cc | 2 +- server/gameserver/skill.cc | 7 ++++++- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/server/gameserver/battledatacontext.cc b/server/gameserver/battledatacontext.cc index 824fe50a..a24304c3 100644 --- a/server/gameserver/battledatacontext.cc +++ b/server/gameserver/battledatacontext.cc @@ -892,3 +892,13 @@ float BattleDataContext::GetBrainLifePct() { return hero_ability_->GetBrainLifePct(); } + +float BattleDataContext::GetSkillCdPct() +{ + return 0.0f; +} + +float BattleDataContext::GetRescueTimePct() +{ + return 0.0f; +} diff --git a/server/gameserver/battledatacontext.h b/server/gameserver/battledatacontext.h index c0477cb5..8433a42f 100644 --- a/server/gameserver/battledatacontext.h +++ b/server/gameserver/battledatacontext.h @@ -62,6 +62,8 @@ struct BattleDataContext float GetHeroTotalAtk(); float GetExtRecoverHp(); float GetBrainLifePct(); + float GetSkillCdPct(); + float GetRescueTimePct(); void SetReviveCoin(int num); int GetReviveCoin(); diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 9bb022fa..c663f880 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -711,7 +711,7 @@ void Player::HumanInteraction(Human* hum) return; } int downed_relive_time = mt::Param::GetIntParam("downed_relive_time") * 1000; - downed_relive_time -= GetAbility()->GetAttrAbs(kHAT_RescueTime); + downed_relive_time *= 1 + GetBattleContext()->GetRescueTimePct(); downed_relive_time = std::max(0, downed_relive_time); StartAction( AT_Rescue, diff --git a/server/gameserver/skill.cc b/server/gameserver/skill.cc index 10113b04..15745e53 100644 --- a/server/gameserver/skill.cc +++ b/server/gameserver/skill.cc @@ -54,7 +54,12 @@ void Skill::Initialzie() int Skill::GetCd() { - return meta->skill_cd() * 1000; + if (meta->IsTurnOverSkill() || + meta->skill_type() == kPassiveSkill) { + return meta->skill_cd() * 1000; + } else { + return meta->skill_cd() * 1000 * (1 + owner->GetBattleConetxt()->GetSkillCdPct()); + } } int Skill::GetPassedTime()