From 9c72db985632a3b1903182c015fe98df3e00eb8a Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 26 Oct 2022 15:26:06 +0800 Subject: [PATCH] 1 --- server/gameserver/shot.cc | 40 +++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/server/gameserver/shot.cc b/server/gameserver/shot.cc index 483cdcb8..67c41a29 100644 --- a/server/gameserver/shot.cc +++ b/server/gameserver/shot.cc @@ -285,11 +285,21 @@ void InternalShot(Creature* c, if (!skill_meta) { c->room->frame_event.AddShot(c->GetWeakPtrRef()); } - if (weapon_meta->i->cast_time() > 0) { - int buff_uniid = c->TryAddBuff(c, kVertigoBuffId); - Buff* buff = c->GetBuffByUniId(buff_uniid); - if (buff && buff->remover_timer) { - c->room->xtimer.ModifyTimer(buff->remover_timer, weapon_meta->i->cast_time() / FRAME_RATE_MS); + if (c->aiming) { + if (weapon_meta->i->aiming_cast_time() > 0) { + int buff_uniid = c->TryAddBuff(c, kVertigoBuffId); + Buff* buff = c->GetBuffByUniId(buff_uniid); + if (buff && buff->remover_timer) { + c->room->xtimer.ModifyTimer(buff->remover_timer, weapon_meta->i->aiming_cast_time() / FRAME_RATE_MS); + } + } + } else { + if (weapon_meta->i->cast_time() > 0) { + int buff_uniid = c->TryAddBuff(c, kVertigoBuffId); + Buff* buff = c->GetBuffByUniId(buff_uniid); + if (buff && buff->remover_timer) { + c->room->xtimer.ModifyTimer(buff->remover_timer, weapon_meta->i->cast_time() / FRAME_RATE_MS); + } } } a8::Vec2 old_context_dir = c->context_dir; @@ -333,11 +343,21 @@ void InternalShot(Creature* c, c->room->xtimer.ModifyTimer(buff->remover_timer, weapon_meta->lock_time / FRAME_RATE_MS); } } - if (weapon_meta->i->cast_time() > 0) { - int buff_uniid = c->TryAddBuff(c, kVertigoBuffId); - Buff* buff = c->GetBuffByUniId(buff_uniid); - if (buff && buff->remover_timer) { - c->room->xtimer.ModifyTimer(buff->remover_timer, weapon_meta->i->cast_time() / FRAME_RATE_MS); + if (c->aiming) { + if (weapon_meta->i->aiming_cast_time() > 0) { + int buff_uniid = c->TryAddBuff(c, kVertigoBuffId); + Buff* buff = c->GetBuffByUniId(buff_uniid); + if (buff && buff->remover_timer) { + c->room->xtimer.ModifyTimer(buff->remover_timer, weapon_meta->i->aiming_cast_time() / FRAME_RATE_MS); + } + } + } else { + if (weapon_meta->i->cast_time() > 0) { + int buff_uniid = c->TryAddBuff(c, kVertigoBuffId); + Buff* buff = c->GetBuffByUniId(buff_uniid); + if (buff && buff->remover_timer) { + c->room->xtimer.ModifyTimer(buff->remover_timer, weapon_meta->i->cast_time() / FRAME_RATE_MS); + } } } MetaData::HeroShotAnimation* shot_animi = c->GetHeroMeta() ?