CT0 Interlude have such problem, when attacking with bow, sometimes (often) it's stops attacking for a moment and then reuses, there is a fix for it, will be good if it's will be updated.
that's the issue
to fix it go
gameserver/model/actor/Creature.java and find private boolean canUseRangeWeapon() and change whole statement with that
private boolean canUseRangeWeapon()
{
// Check for arrows and MP
if (isPlayer())
{
final Weapon weaponItem = getActiveWeaponItem();
if ((weaponItem == null) || !weaponItem.isBow())
{
return false;
}
if (!checkAndEquipArrows())
{
getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
sendPacket(ActionFailed.STATIC_PACKET);
sendPacket(SystemMessageId.YOU_HAVE_RUN_OUT_OF_ARROWS);
return false;
}
if (GameTimeTaskManager.getInstance().getGameTicks() >= (_disableBowAttackEndTime - 1))
{
int mpConsume = weaponItem.getMpConsume();
if ((weaponItem.getReducedMpConsume() > 0) && (Rnd.get(100) < weaponItem.getReducedMpConsumeChance()))
{
mpConsume = weaponItem.getReducedMpConsume();
}
mpConsume = (int) calcStat(Stat.BOW_MP_CONSUME_RATE, mpConsume, null, null);
if (_status.getCurrentMp() < mpConsume)
{
ThreadPool.schedule(new NotifyAITask(this, CtrlEvent.EVT_READY_TO_ACT), 1000);
sendPacket(SystemMessageId.NOT_ENOUGH_MP);
sendPacket(ActionFailed.STATIC_PACKET);
return false;
}
if (mpConsume > 0)
{
_status.reduceMp(mpConsume);
}
final int gameTicks = GameTimeTaskManager.getInstance().getGameTicks();
_disableBowAttackEndTime = (5 * GameTimeTaskManager.TICKS_PER_SECOND) + gameTicks;
}
else
{
return false;
}
}
else if (isNpc())
{
if (_disableBowAttackEndTime > GameTimeTaskManager.getInstance().getGameTicks())
{
return false;
}
}
return true;
}