This commit is contained in:
aozhiwei 2021-09-08 16:43:34 +08:00
parent e1c51d6da0
commit 234a9d013f
4 changed files with 30 additions and 4 deletions

View File

@ -340,6 +340,13 @@ void Buff::RecoverHoldWeapons()
void Buff::ProcSprint()
{
if (caster_.Get()->IsPlayer()) {
owner->IncDisableMoveDirTimes();
{
int old_times = owner->GetDisableMoveDirTimes();
owner->SetDisableMoveDirTimes(0);
owner->SetMoveDir(owner->context_dir);
owner->SetDisableMoveDirTimes(old_times);
}
Player* hum = (Player*)caster_.Get();
std::set<int>* hited_objects = new std::set<int>;
owner->room->xtimer.AddRepeatTimerAndAttach

View File

@ -615,6 +615,17 @@ void Creature::RecalcBuffAttr()
void Creature::OnBuffRemove(Buff& buff)
{
switch (buff.meta->i->buff_effect()) {
case kBET_Sprint:
{
DecDisableMoveDirTimes();
}
break;
default:
{
}
break;
}
if (!buff.meta->i->only_server()) {
room->frame_event.RemoveBuff(GetWeakPtrRef(), buff.meta->i->buff_id());
}
@ -1353,7 +1364,7 @@ void Creature::Initialize()
void Creature::SetMoveDir(const a8::Vec2& move_dir)
{
if (!GetBuffByEffectId(kBET_Sprint)) {
if (GetDisableMoveDirTimes() <= 0) {
MoveableEntity::SetMoveDir(move_dir);
}
}

View File

@ -242,6 +242,10 @@ class Creature : public MoveableEntity
void FollowToTarget();
int GetFollowTimes() { return follow_times_; };
void IncFollowTimes() { ++follow_times_; };
void IncDisableMoveDirTimes() { ++disable_move_dir_times_ ; };
void DecDisableMoveDirTimes() { ++disable_move_dir_times_ ; };
int GetDisableMoveDirTimes() { return disable_move_dir_times_ ; };
void SetDisableMoveDirTimes(int times) { disable_move_dir_times_ = times; };
protected:
virtual void OnBuffRemove(Buff& buff);
@ -305,6 +309,8 @@ private:
xtimer_list* auto_switch_weapon_timer_ = nullptr;
int follow_times_ = 0;
int disable_move_dir_times_ = 0;
a8::Vec2 skill_dir_;
float skill_param1 = 0;
size_t curr_skill_phase = 0;

View File

@ -660,9 +660,11 @@ void Player::_CMMove(f8::MsgHdr& hdr, const cs::CMMove& msg)
TypeConvert::FromPb(new_move_dir, &msg.move_dir());
if (!HasBuffEffect(kBET_Vertigo)) {
if (!(HasBuffEffect(kBET_Jump) && follow_target.Get())) {
new_move_dir.Normalize();
SetMoveDir(new_move_dir);
moving = true;
if (GetDisableMoveDirTimes() <= 0) {
new_move_dir.Normalize();
SetMoveDir(new_move_dir);
moving = true;
}
}
}
}