From 6476ec80ccbb250364bfc46794d26e676e88c4a4 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 16 Aug 2022 10:28:51 +0800 Subject: [PATCH] 1 --- server/gameserver/creature.cc | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 2487b2f8..0442e0f7 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -1103,6 +1103,8 @@ void Creature::ProcSkillPhase(MetaData::SkillPhase* phase) a8::Vec2 old_dir = GetMoveDir(); a8::Vec2 old_pos = GetPos(); if (CurrentSkill()->GetMinorType() == SMT_NONE) { + int buff_id = phase->param2.GetInt(); + TryAddBuff(this, buff_id); _UpdateMove(phase->param1.GetInt()); a8::Vec2 pre_dir = old_dir; a8::Vec2 pre_pos = old_pos; @@ -1110,13 +1112,14 @@ void Creature::ProcSkillPhase(MetaData::SkillPhase* phase) ( SMT_BLINK, phase->param2.GetInt(), - [this, pre_pos, pre_dir] () { + [this, pre_pos, pre_dir, buff_id] () { a8::Vec2 old_dir = GetMoveDir(); a8::Vec2 old_pos = GetPos(); float distance = GetPos().Distance(pre_pos); if (distance > 0.0001f) { a8::Vec2 new_dir = pre_pos - GetPos(); new_dir.Normalize(); + TryAddBuff(this, buff_id); _UpdateMove(distance); } SetMoveDir(old_dir); @@ -1342,13 +1345,15 @@ void Creature::ProcBuffEffect(Creature* caster, Buff* buff) break; case kBET_FlashMove: { - a8::Vec2 old_pos = GetPos(); - a8::Vec2 new_pos = GetPos() + skill_dir_ * std::max(skill_distance_, 300.0f); - SetPos(new_pos); - if (CollisonDetection()) { - SetPos(old_pos); - } else { - room->grid_service->MoveCreature(this); + if (buff->meta->int_param1 == 0) { + a8::Vec2 old_pos = GetPos(); + a8::Vec2 new_pos = GetPos() + skill_dir_ * std::max(skill_distance_, 300.0f); + SetPos(new_pos); + if (CollisonDetection()) { + SetPos(old_pos); + } else { + room->grid_service->MoveCreature(this); + } } } break;