From 8f3f141f55fa29c9186d6f3a914b0baa3a5aa7c3 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 3 Nov 2023 17:10:22 +0800 Subject: [PATCH] 1 --- server/gameserver/pbutils.cc | 2 +- server/gameserver/skill.cc | 25 ++++++++++++++++++++----- server/gameserver/skill.h | 1 + 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index cc7025c0..bc63d405 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -521,7 +521,7 @@ void Obstacle::FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_d void Skill::FillMFSkill(cs::MFSkill* skill_pb) { - skill_pb->set_skill_id(meta->skill_id() + level_ - 1); + skill_pb->set_skill_id(GetBaseSkillId()); skill_pb->set_actived(Actived()); skill_pb->set_left_time(GetLeftTime()); skill_pb->set_cd_time(GetCd()); diff --git a/server/gameserver/skill.cc b/server/gameserver/skill.cc index 0ff77229..99dfcd76 100644 --- a/server/gameserver/skill.cc +++ b/server/gameserver/skill.cc @@ -114,11 +114,11 @@ void Skill::NotifySkillState() { if (owner->IsHuman() || owner->IsCar()) { if (GetCurrTimes() < GetMaxTimes()) { - owner->room->frame_event.AddSkillCdChg(owner->AllocWeakPtr(), meta->skill_id(), GetCd()); + owner->room->frame_event.AddSkillCdChg(owner->AllocWeakPtr(), GetBaseSkillId(), GetCd()); } else { - owner->room->frame_event.AddSkillCdChg(owner->AllocWeakPtr(), meta->skill_id(), 0); + owner->room->frame_event.AddSkillCdChg(owner->AllocWeakPtr(), GetBaseSkillId(), 0); } - owner->room->frame_event.AddSkillCurrTimesChg(owner->AllocWeakPtr(), meta->skill_id(), GetCurrTimes()); + owner->room->frame_event.AddSkillCurrTimesChg(owner->AllocWeakPtr(), GetBaseSkillId(), GetCurrTimes()); } } @@ -177,6 +177,7 @@ void Skill::AddMinorMode( std::function cb ) { + bool is_player = owner->IsPlayer(); if (!minor_mode_timer_.expired()) { owner->room->xtimer.Delete(minor_mode_timer_); } @@ -205,7 +206,7 @@ void Skill::AddMinorMode( minor_type_, minor_cd_time_, minor_cd_time_, - meta->skill_id(), + GetBaseSkillId(), true ); NotifySkillState(); @@ -220,10 +221,15 @@ void Skill::AddMinorMode( minor_type_, minor_cd_time_, minor_cd_time_, - meta->skill_id(), + GetBaseSkillId(), true ); NotifySkillState(); +#ifdef DEBUG + if (is_player) { + a8::XPrintf("add minor mode minor_type:%d\n", {minor_type_}); + } +#endif } } @@ -569,3 +575,12 @@ int Skill::GetSkillId() { return meta->skill_id(); } + +int Skill::GetBaseSkillId() +{ + if (meta->_base_skill_meta) { + return meta->_base_skill_meta->skill_id(); + } else { + GetSkillId(); + } +} diff --git a/server/gameserver/skill.h b/server/gameserver/skill.h index 591dc7db..600af0da 100644 --- a/server/gameserver/skill.h +++ b/server/gameserver/skill.h @@ -53,6 +53,7 @@ class Skill void Reset(); const mt::Skill* GetCurrSkillMeta(); int GetSkillId(); + int GetBaseSkillId(); private: void InitActiveSkill();