diff --git a/server/gameserver/constant.h b/server/gameserver/constant.h index 72a3538..20560bb 100755 --- a/server/gameserver/constant.h +++ b/server/gameserver/constant.h @@ -379,7 +379,9 @@ const int ZOMBIE_RACE_META_START_ID = 6001; const int TERMINATOR_BUFF_ID = 1033; +#if 0 const int TURN_OVER_SKILL_ID = 41001; +#endif const int HUNLUAN_BUFFID = 6001; diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index faf4065..2218630 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -549,7 +549,11 @@ void Creature::DoSkill(int skill_id, RemoveBuffByEffectId(kBET_Camouflage); } DoSkillPostProc(true, skill_id, target_id, target_pos); +#if 0 if (skill_id != TURN_OVER_SKILL_ID) { +#else + { +#endif CreatureWeakPtr ptr; ptr.Attach(this); room->frame_event.AddPlaySkill(ptr, skill_id); @@ -935,7 +939,7 @@ void Creature::ClearSkill() { Skill* reserve_skill = nullptr; for (auto& pair : skill_hash_) { - if (pair.second->meta->i->skill_id() == TURN_OVER_SKILL_ID) { + if (pair.second->meta->IsTurnOverSkill()) { reserve_skill = pair.second; } else { delete pair.second; diff --git a/server/gameserver/metadata.cc b/server/gameserver/metadata.cc index e52616a..c8ab809 100644 --- a/server/gameserver/metadata.cc +++ b/server/gameserver/metadata.cc @@ -544,6 +544,11 @@ namespace MetaData } } + bool Skill::IsTurnOverSkill() + { + return !phases.empty() && phases[0].func_id == kSkill_TurnOver; + } + void Buff::Init() { param1 = a8::XValue(i->buff_param1()).GetDouble(); diff --git a/server/gameserver/metadata.h b/server/gameserver/metadata.h index 93c6ac1..e65c817 100755 --- a/server/gameserver/metadata.h +++ b/server/gameserver/metadata.h @@ -203,6 +203,7 @@ namespace MetaData std::set buff_list; std::map> trigger_type_buffs; std::vector phases; + bool IsTurnOverSkill(); }; struct Dress diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 5e154a2..589aab1 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -36,7 +36,6 @@ void Player::Initialize() { Human::Initialize(); max_energy_shield = energy_shield; - AddSkill(TURN_OVER_SKILL_ID); RecalcBaseAttr(); } diff --git a/server/gameserver/skill.cc b/server/gameserver/skill.cc index 36a5f2e..7dc5ea9 100644 --- a/server/gameserver/skill.cc +++ b/server/gameserver/skill.cc @@ -136,7 +136,7 @@ void Skill::NotifySkillState() void Skill::ResetSkillCd() { - if (meta->i->skill_id() != TURN_OVER_SKILL_ID) { + if (!meta->IsTurnOverSkill()) { curr_times_ = 0; if (inc_times_timer_) { owner->room->xtimer.ModifyTimer(inc_times_timer_, GetCd() / FRAME_RATE_MS); diff --git a/server/gameserver/zombiemode.ai.cc b/server/gameserver/zombiemode.ai.cc index 0cbedbe..63e7020 100644 --- a/server/gameserver/zombiemode.ai.cc +++ b/server/gameserver/zombiemode.ai.cc @@ -196,7 +196,7 @@ void ZombieModeAI::UpdateAttack() if (distance > GetAttackRange()) { Skill* skill = myself->SelectSkill(); if (myself->CanUseSkill(skill->meta->i->skill_id()) && - skill->meta->i->skill_id() != TURN_OVER_SKILL_ID && + skill->meta->IsTurnOverSkill() && distance < skill->meta->i->skill_distance()) { DoSkill(skill->meta->i->skill_id()); } else if (node_->ai_meta->i->pursuit_radius() <= 0) {