diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 55b97e0..d02262c 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -1095,7 +1095,7 @@ int Human::GetSkillLeftTime() return 0; } else { int passed_time = (room->frameno - last_use_skill_frameno_) * kFRAME_RATE_MS; - int skill_left_time = std::max(0, skill_meta_->i->skill_cd() * 1000 - passed_time); + int skill_left_time = std::max(0, GetSkillCd() - passed_time); return skill_left_time; } } @@ -1104,7 +1104,14 @@ int Human::GetSkillLeftTime() int Human::GetSkillCd() { - return skill_meta_ ? skill_meta_->i->skill_cd() * 1000 : 0; + if (!skill_meta_) { + return 0; + } + if (TankLv() <= 1) { + return skill_meta_->i->skill_cd() * 1000; + } else { + return skill_meta_->i->skill_cd() * 1000 - (TankLv() - 1) * skill_meta_->i->cold_time_up(); + } } void Human::TriggerOneObjectBuff(Entity* target, BuffTriggerType_e trigger_type) diff --git a/server/tools/protobuild/metatable.proto b/server/tools/protobuild/metatable.proto index f8588d5..b5084e2 100755 --- a/server/tools/protobuild/metatable.proto +++ b/server/tools/protobuild/metatable.proto @@ -120,6 +120,7 @@ message Skill required int32 skill_target = 8; required string buff_list = 9; required float skill_distance = 10; + required int32 cold_time_up = 11; optional int32 phase1_time_offset = 20; optional int32 phase1_func = 21;