diff --git a/server/gameserver/buff/turnover.cc b/server/gameserver/buff/turnover.cc index 787dba73..e824145e 100644 --- a/server/gameserver/buff/turnover.cc +++ b/server/gameserver/buff/turnover.cc @@ -28,7 +28,7 @@ void TurnOverBuff::Activate() glm::vec3 old_dir = owner->GetMoveDir(); Position old_pos = owner->GetPos(); float distance = - owner->HasBuffEffect(kBET_Car) ? phase->param1.GetDouble() * 1.5 : phase->param1.GetDouble(); + owner->HasBuffEffect(kBET_Car) ? phase->phase_param1.GetDouble() * 1.5 : phase->phase_param1.GetDouble(); #ifdef DEBUG caster_.Get()->SendDebugMsg(a8::Format("ProTurnOver currTimes:%d last_pos:%d,%d curr_pos:%d,%d", { @@ -43,7 +43,7 @@ void TurnOverBuff::Activate() owner->ForwardMove(distance); Global::Instance()->verify_set_pos = 0; owner->SetMoveDir(old_dir); - if (phase->param2.GetInt() == 1) { + if (phase->phase_param2.GetInt() == 1) { ++owner->turn_over_times; owner->last_turn_over_pos = old_pos; } diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 25e93c45..8d79882f 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -2401,7 +2401,7 @@ void Creature::_UpdateSpecMove() !CurrentSkill()->meta->_phases.empty()) { std::set target_list; float old_skill_distance = CurrentSkill()->meta->skill_distance(); - CurrentSkill()->meta->SetSkillDistance(CurrentSkill()->meta->_phases[0].param1.GetDouble()); + CurrentSkill()->meta->SetSkillDistance(CurrentSkill()->meta->_phases[0].phase_param1.GetDouble()); SelectSkillTargets(CurrentSkill(), GetPos(), target_list); CurrentSkill()->meta->SetSkillDistance(old_skill_distance); diff --git a/server/gameserver/mt/Skill.cc b/server/gameserver/mt/Skill.cc index 0448eb01..9366609d 100644 --- a/server/gameserver/mt/Skill.cc +++ b/server/gameserver/mt/Skill.cc @@ -40,39 +40,39 @@ namespace mt } { auto field_desc = class_meta->GetFieldByName(a8::Format("phase%d_param1", {idx})); - phase.param1_str = *((std::string*)((char*)this + field_desc->offset)); + phase.phase_param1_str = *((std::string*)((char*)this + field_desc->offset)); } { auto field_desc = class_meta->GetFieldByName(a8::Format("phase%d_param2", {idx})); - phase.param2_str = *((std::string*)((char*)this + field_desc->offset)); + phase.phase_param2_str = *((std::string*)((char*)this + field_desc->offset)); } { auto field_desc = class_meta->GetFieldByName(a8::Format("phase%d_param3", {idx})); - phase.param3_str = *((std::string*)((char*)this + field_desc->offset)); + phase.phase_param3_str = *((std::string*)((char*)this + field_desc->offset)); } { - phase.param1 = a8::XValue(phase.param1_str); - phase.param2 = a8::XValue(phase.param2_str); - phase.param3 = a8::XValue(phase.param3_str); + phase.phase_param1 = a8::XValue(phase.phase_param1_str); + phase.phase_param2 = a8::XValue(phase.phase_param2_str); + phase.phase_param3 = a8::XValue(phase.phase_param3_str); { std::vector strings; - a8::Split(phase.param1_str, strings, '|'); + a8::Split(phase.phase_param1_str, strings, '|'); for (auto& str : strings) { - phase.param1_ints.push_back(a8::XValue(str)); + phase.phase_param1_ints.push_back(a8::XValue(str)); } } { std::vector strings; - a8::Split(phase.param2_str, strings, '|'); + a8::Split(phase.phase_param2_str, strings, '|'); for (auto& str : strings) { - phase.param2_ints.push_back(a8::XValue(str)); + phase.phase_param2_ints.push_back(a8::XValue(str)); } } { std::vector strings; - a8::Split(phase.param3_str, strings, '|'); + a8::Split(phase.phase_param3_str, strings, '|'); for (auto& str : strings) { - phase.param3_ints.push_back(a8::XValue(str)); + phase.phase_param3_ints.push_back(a8::XValue(str)); } } if (phase.func_id != kSkill_FuncNone) { diff --git a/server/gameserver/mt/Skill.h b/server/gameserver/mt/Skill.h index 3de60f5c..76a25582 100644 --- a/server/gameserver/mt/Skill.h +++ b/server/gameserver/mt/Skill.h @@ -11,17 +11,17 @@ namespace mt int phase_idx = 0; int time_offset = 0; SkillFunc_e func_id = kSkill_FuncNone; - a8::XValue param1; - a8::XValue param2; - a8::XValue param3; + a8::XValue phase_param1; + a8::XValue phase_param2; + a8::XValue phase_param3; - std::string param1_str; - std::string param2_str; - std::string param3_str; + std::string phase_param1_str; + std::string phase_param2_str; + std::string phase_param3_str; - std::vector param1_ints; - std::vector param2_ints; - std::vector param3_ints; + std::vector phase_param1_ints; + std::vector phase_param2_ints; + std::vector phase_param3_ints; }; DECLARE_ID_TABLE(Skill, mtb::Skill, diff --git a/server/gameserver/selfchecker.cc b/server/gameserver/selfchecker.cc index 03a67a15..6fc25e4d 100644 --- a/server/gameserver/selfchecker.cc +++ b/server/gameserver/selfchecker.cc @@ -95,6 +95,14 @@ void SelfChecker::Init() SelfChecker::AddBuff(meta->buff_id()); } }); + mt::Skill::Traverse + ( + [] (const mt::Skill* meta, bool& stop) + { + for (int buff_id : meta->_buff_list) { + SelfChecker::AddBuff(buff_id); + } + }); mt::Buff::Traverse ( [] (const mt::Buff* meta, bool& stop) diff --git a/server/gameserver/skill.cc b/server/gameserver/skill.cc index d8594ea0..b5b4f58a 100644 --- a/server/gameserver/skill.cc +++ b/server/gameserver/skill.cc @@ -538,7 +538,7 @@ void Skill::ProcSWZB() ); Entity* killer = owner->room->GetEntityByUniId(killer_id); if (killer && killer != owner && !meta->_raw_phases.empty()) { - owner->over_delay_time = meta->_raw_phases.at(0).param1; + owner->over_delay_time = meta->_raw_phases.at(0).phase_param1; owner->TryAddBuff(owner, 209016); } #ifdef DEBUG @@ -983,7 +983,7 @@ void Skill::ProcShotPhase(const mt::SkillPhase* phase) void Skill::ProcSpecDirShotPhase(const mt::SkillPhase* phase) { - const mt::Equip* weapon_meta = mt::Equip::GetById(phase->param1.GetInt()); + const mt::Equip* weapon_meta = mt::Equip::GetById(phase->phase_param1.GetInt()); if (!weapon_meta) { return; } @@ -1049,7 +1049,7 @@ void Skill::ProcSpecDirShotPhase(const mt::SkillPhase* phase) void Skill::ProcNormalShotPhase(const mt::SkillPhase* phase) { - const mt::Equip* weapon_meta = mt::Equip::GetById(phase->param1.GetInt()); + const mt::Equip* weapon_meta = mt::Equip::GetById(phase->phase_param1.GetInt()); if (!weapon_meta) { return; } @@ -1091,9 +1091,9 @@ void Skill::ProcForthBackJumpPhase(const mt::SkillPhase* phase) glm::vec3 old_dir = owner->GetMoveDir(); Position old_pos = owner->GetPos(); - int buff_id1 = phase->param3_ints.size() > 0 ? phase->param3_ints[0] : 0; - int buff_id2 = phase->param3_ints.size() > 1 ? phase->param3_ints[1] : 0; - int buff_id3 = phase->param3_ints.size() > 2 ? phase->param3_ints[2] : 0; + int buff_id1 = phase->phase_param3_ints.size() > 0 ? phase->phase_param3_ints[0] : 0; + int buff_id2 = phase->phase_param3_ints.size() > 1 ? phase->phase_param3_ints[1] : 0; + int buff_id3 = phase->phase_param3_ints.size() > 2 ? phase->phase_param3_ints[2] : 0; const mt::Skill* skill_meta = meta; owner->TryAddBuff(owner, buff_id1); int land_effect_buff_uniid = owner->TryAddBuffAndSetTime