This commit is contained in:
aozhiwei 2023-01-04 19:24:02 +08:00
parent 225f9e6c29
commit 7853aa35ff

View File

@ -883,35 +883,60 @@ void Bullet::ProcNormalBullet(BulletCheckResult& result)
if (need_remove) { if (need_remove) {
if (IsFlyHook()) { if (IsFlyHook()) {
if (!hited) { if (!hited) {
result.flyed_distance = raycast_len_; if (raycast_hited) {
sender.Get()->IncDisableMoveTimes(); if (result.flyed_distance > 0.001f) {
sender.Get()->IncDisableAttackDirTimes(); sender.Get()->AutoNavigation(GetPos(), gun_meta->bullet_speed() * 2,
auto sender_p = sender; [] (Creature* c)
sender.Get()->room->xtimer.SetTimeoutEx {
(
std::ceil((result.flyed_distance / gun_meta->bullet_speed() / 2) * SERVER_FRAME_RATE), });
[sender_p] (int event, const a8::Args* args) mutable sender.Get()->IncDisableMoveTimes();
{ auto sender_p = sender;
if (a8::TIMER_EXEC_EVENT == event) { sender.Get()->room->xtimer.SetTimeoutEx
sender_p.Get()->RemoveBuffById(kKeepShotAnimiBuffId); (
} (raycast_len_ / gun_meta->bullet_speed() / 2 + 0.75) * SERVER_FRAME_RATE,
}, [sender_p] (int event, const a8::Args* args) mutable
&sender.Get()->xtimer_attacher {
); if (a8::TIMER_EXEC_EVENT == event) {
sender.Get()->room->xtimer.SetTimeoutEx sender_p.Get()->DecDisableMoveTimes();
( sender_p.Get()->GetTrigger()->FlyHookDestory();
(0.75 + result.flyed_distance / gun_meta->bullet_speed() / 2) * SERVER_FRAME_RATE, }
[sender_p] (int event, const a8::Args* args) mutable },
{ &sender.Get()->xtimer_attacher
if (a8::TIMER_EXEC_EVENT == event) { );
sender_p.Get()->DecDisableMoveTimes(); sender.Get()->RemoveBuffById(kKeepShotAnimiBuffId);
sender_p.Get()->DecDisableAttackDirTimes(); sender.Get()->TryAddBuff(sender.Get(), gun_meta->_int_param2);
sender_p.Get()->GetTrigger()->FlyHookDestory(); }
} } else {
}, sender.Get()->IncDisableMoveTimes();
&sender.Get()->xtimer_attacher sender.Get()->IncDisableAttackDirTimes();
); auto sender_p = sender;
sender.Get()->TryAddBuff(sender.Get(), gun_meta->_int_param2); sender.Get()->room->xtimer.SetTimeoutEx
(
std::ceil((result.flyed_distance / gun_meta->bullet_speed() / 2) * SERVER_FRAME_RATE),
[sender_p] (int event, const a8::Args* args) mutable
{
if (a8::TIMER_EXEC_EVENT == event) {
sender_p.Get()->RemoveBuffById(kKeepShotAnimiBuffId);
}
},
&sender.Get()->xtimer_attacher
);
sender.Get()->room->xtimer.SetTimeoutEx
(
(0.75 + result.flyed_distance / gun_meta->bullet_speed() / 2) * SERVER_FRAME_RATE,
[sender_p] (int event, const a8::Args* args) mutable
{
if (a8::TIMER_EXEC_EVENT == event) {
sender_p.Get()->DecDisableMoveTimes();
sender_p.Get()->DecDisableAttackDirTimes();
sender_p.Get()->GetTrigger()->FlyHookDestory();
}
},
&sender.Get()->xtimer_attacher
);
sender.Get()->TryAddBuff(sender.Get(), gun_meta->_int_param2);
}
} }
} }
ForceRemove(); ForceRemove();