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() ?