From bef93e4fc2020e093697f599434e5b3b6fd7d20d Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 6 Mar 2024 10:48:18 +0800 Subject: [PATCH] 1 --- server/gameserver/buff.cc | 4 ++++ server/gameserver/buff.h | 1 + server/gameserver/creature.cc | 14 ++++++++++++++ server/gameserver/creature.h | 3 +++ server/gameserver/player.cc | 2 +- 5 files changed, 23 insertions(+), 1 deletion(-) diff --git a/server/gameserver/buff.cc b/server/gameserver/buff.cc index 3162b7cc..63d4a7df 100644 --- a/server/gameserver/buff.cc +++ b/server/gameserver/buff.cc @@ -41,6 +41,7 @@ void Buff::Init() INIT_LIST_HEAD(&effect_entry); INIT_LIST_HEAD(&depend_entry); INIT_LIST_HEAD(&cond_entry); + INIT_LIST_HEAD(&break_skill_entry); INIT_LIST_HEAD(&on_remove_contexts); for (int effect_id : meta->_effect_list) { effect_list_.push_back(owner->AddEffect(effect_id)); @@ -60,6 +61,9 @@ void Buff::UnInit() if (!list_empty(&cond_entry)) { list_del_init(&cond_entry); } + if (!list_empty(&break_skill_entry)) { + list_del_init(&break_skill_entry); + } while (!list_empty(&on_remove_contexts)) { RemoveBuffCbConext* cb = list_last_entry(&on_remove_contexts, RemoveBuffCbConext, diff --git a/server/gameserver/buff.h b/server/gameserver/buff.h index 9b02da6e..6f823d4c 100644 --- a/server/gameserver/buff.h +++ b/server/gameserver/buff.h @@ -31,6 +31,7 @@ class Buff list_head effect_entry; list_head depend_entry; list_head cond_entry; + list_head break_skill_entry; list_head on_remove_contexts; a8::XTimerWp remover_timer; std::shared_ptr init_args; diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index e38f55e7..a41c885f 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -54,6 +54,7 @@ Creature::Creature():MoveableEntity() { + INIT_LIST_HEAD(&break_skill_buffs_); weak_ptr_chunk_.Set(this); trigger_ = std::make_shared(this); trigger_->Init(); @@ -4129,3 +4130,16 @@ bool Creature::IsOb() { return a8::HasBitFlag(status, CS_IsOb); } + +bool Creature::HasBreakSkillBuffs(Buff* buff) +{ + if (list_empty(&break_skill_buffs_)) { + return false; + } + return false; +} + +void Creature::TriggerBreakSkill(Buff* buff) +{ + +} diff --git a/server/gameserver/creature.h b/server/gameserver/creature.h index b3c8ded5..627f24be 100644 --- a/server/gameserver/creature.h +++ b/server/gameserver/creature.h @@ -208,6 +208,8 @@ class Creature : public MoveableEntity void RecalcBuffAttr(); void RemoveBuffByEffectId(int buff_effect_id); void ClearBuffList(); + bool HasBreakSkillBuffs(Buff* buff); + void TriggerBreakSkill(Buff* buff); void TriggerBuff(Skill* skill, std::set& target_list, BuffTriggerType_e trigger_type); Skill* GetSkill(int skill_id); Skill* GetMainSkill(); @@ -480,6 +482,7 @@ private: int follow_times_ = 0; std::map buff_tags_; const mt::BattleHeroGrow* hero_grow_meta_ = nullptr; + list_head break_skill_buffs_; int hero_level_ = 1; int hero_exp_ = 0; diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 6c2932c5..7c4f979f 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -1038,7 +1038,7 @@ void Player::_CMMove(f8::MsgHdr* hdr, const cs::CMMove& msg) } } } -#ifdef MYDEBUG +#ifdef MYDEBUG1 a8::XPrintf("attack_dir:%f,%f,%f cli_dir:%f,%f,%f\n", { GetAttackDir().x,