From bdfaf1ac33497d9edcb3a983427b5fb03b55f548 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 30 Jul 2019 10:28:10 +0800 Subject: [PATCH] =?UTF-8?q?buff=E6=B7=BB=E5=8A=A0skill=5Flv?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/buff.cc | 2 +- server/gameserver/human.cc | 24 +++++++++++++++--------- server/gameserver/human.h | 3 ++- server/gameserver/roommgr.cc | 2 +- 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/server/gameserver/buff.cc b/server/gameserver/buff.cc index 16b4014..e1c3474 100644 --- a/server/gameserver/buff.cc +++ b/server/gameserver/buff.cc @@ -53,7 +53,7 @@ void Buff::ProcReleaseDcgr(const a8::XParams& param) for (Human* hum : cell->human_list) { if (hum != sender && !hum->HasBuffEffect(kBET_Invincible)) { if (hum->TestCollision(&collider)) { - hum->AddBuff(add_buff); + hum->AddBuff(add_buff, buff->skill_lv); } } } diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index adcc6f8..3f0e666 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -1143,6 +1143,11 @@ int Human::GetSkillCd() } } +int Human::GetSkillLv() +{ + return TankLv(); +} + float Human::GetSkillAtkAdd(int skill_id) { if (!skill_meta_) { @@ -1174,21 +1179,21 @@ void Human::TriggerOneObjectBuff(Entity* target, BuffTriggerType_e trigger_type) case kBuffTargetSelf: //自己 { if (hum == this) { - hum->AddBuff(buff_meta); + hum->AddBuff(buff_meta, GetSkillLv()); } } break; case kBuffTargetFriendly: //友军 { if (hum->team_id == team_id) { - hum->AddBuff(buff_meta); + hum->AddBuff(buff_meta, GetSkillLv()); } } break; case kBuffTargetEnemy: //敌军 { if (hum->team_id != team_id) { - hum->AddBuff(buff_meta); + hum->AddBuff(buff_meta, GetSkillLv()); } } break; @@ -1206,7 +1211,7 @@ void Human::TriggerBuff(std::set& target_list, BuffTriggerType_e trigge } } -void Human::AddBuff(MetaData::Buff* buff_meta) +void Human::AddBuff(MetaData::Buff* buff_meta, int skill_lv) { if (buff_meta->i->buff_effect() == kBET_ImmediatelyRevive) { ++immediately_revive_times_; @@ -1236,6 +1241,7 @@ void Human::AddBuff(MetaData::Buff* buff_meta) } } Buff* buff = &a8::FastAppend(buff_list_); + buff->skill_lv = skill_lv; buff->owner = this; buff->meta = buff_meta; //buff->skill_meta @@ -1456,7 +1462,7 @@ void Human::OnEnterGrass() hum->grass_hide_timer_list_ = nullptr; MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(GRASS_HIDE_BUFF_ID); if (buff_meta) { - hum->AddBuff(buff_meta); + hum->AddBuff(buff_meta, hum->GetSkillLv()); } }; grass_hide_timer_list_ = @@ -1514,7 +1520,7 @@ void Human::CheckSpecObject() { MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(item_meta->i->buff_id()); if (buff_meta) { - AddBuff(buff_meta); + AddBuff(buff_meta, 1); } } break; @@ -1569,7 +1575,7 @@ void Human::GrassTempShow() hum->grass_hide_timer_list_ = nullptr; MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(GRASS_HIDE_BUFF_ID); if (buff_meta) { - hum->AddBuff(buff_meta); + hum->AddBuff(buff_meta, hum->GetSkillLv()); } }; grass_hide_timer_list_ = @@ -1881,7 +1887,7 @@ void Human::Revive() { MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(1003); if (buff_meta) { - AddBuff(buff_meta); + AddBuff(buff_meta, 1); } } room->frame_event.AddRevive(this); @@ -1905,7 +1911,7 @@ void Human::ImmediatelyRevive() { MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(1003); if (buff_meta) { - AddBuff(buff_meta); + AddBuff(buff_meta, 1); } } room->frame_event.AddRevive(this); diff --git a/server/gameserver/human.h b/server/gameserver/human.h index e1773c7..9ef954d 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -181,10 +181,11 @@ class Human : public Entity MetaData::Skill* CurrentSkillMeta(); int GetSkillLeftTime(); int GetSkillCd(); + int GetSkillLv(); float GetSkillAtkAdd(int skill_id); void TriggerOneObjectBuff(Entity* target, BuffTriggerType_e trigger_type); void TriggerBuff(std::set& target_list, BuffTriggerType_e trigger_type); - void AddBuff(MetaData::Buff* buff_meta); + void AddBuff(MetaData::Buff* buff_meta, int skill_lv); void RemoveBuffById(int buff_id); void RemoveBuffByEffectId(int buff_effect_id); void ClearBuffList(); diff --git a/server/gameserver/roommgr.cc b/server/gameserver/roommgr.cc index de34e23..9ec652d 100644 --- a/server/gameserver/roommgr.cc +++ b/server/gameserver/roommgr.cc @@ -72,7 +72,7 @@ void RoomMgr::_CMJoin(f8::MsgHdr& hdr, const cs::CMJoin& msg) for (int buff_id : msg.buff_list()) { MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(buff_id); if (buff_meta) { - hum->AddBuff(buff_meta); + hum->AddBuff(buff_meta, 1); } } {