diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java index 1687a772db..4518e79c40 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1252,6 +1252,18 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _hitTask = ThreadPool.schedule(() -> onHitTimeNotDual(weaponItem, attack, timeToHit, timeAtk), timeToHit); break; } + case PISTOLS: + { + final int reuse = Formulas.calculateReuseTime(this, weaponItem); + _disableRangedAttackEndTime = currentTime + TimeUnit.MILLISECONDS.toNanos(reuse); + // Precaution. It happened in the past for _attackEndTime. Will not risk it. + if (_disableRangedAttackEndTime < currentTime) + { + _disableRangedAttackEndTime = currentTime + TimeUnit.MILLISECONDS.toNanos(Integer.MAX_VALUE); + } + _hitTask = ThreadPool.schedule(() -> onHitTimeNotDual(weaponItem, attack, timeToHit, timeAtk), timeToHit); + break; + } case FIST: { if (!isPlayer()) diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java index 33bd255887..a7f5494e5a 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1262,6 +1262,18 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _hitTask = ThreadPool.schedule(() -> onHitTimeNotDual(weaponItem, attack, timeToHit, timeAtk), timeToHit); break; } + case PISTOLS: + { + final int reuse = Formulas.calculateReuseTime(this, weaponItem); + _disableRangedAttackEndTime = currentTime + TimeUnit.MILLISECONDS.toNanos(reuse); + // Precaution. It happened in the past for _attackEndTime. Will not risk it. + if (_disableRangedAttackEndTime < currentTime) + { + _disableRangedAttackEndTime = currentTime + TimeUnit.MILLISECONDS.toNanos(Integer.MAX_VALUE); + } + _hitTask = ThreadPool.schedule(() -> onHitTimeNotDual(weaponItem, attack, timeToHit, timeAtk), timeToHit); + break; + } case FIST: { if (!isPlayer()) diff --git a/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/model/actor/Creature.java index 8f2b47b643..117bff2706 100644 --- a/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1262,6 +1262,18 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe _hitTask = ThreadPool.schedule(() -> onHitTimeNotDual(weaponItem, attack, timeToHit, timeAtk), timeToHit); break; } + case PISTOLS: + { + final int reuse = Formulas.calculateReuseTime(this, weaponItem); + _disableRangedAttackEndTime = currentTime + TimeUnit.MILLISECONDS.toNanos(reuse); + // Precaution. It happened in the past for _attackEndTime. Will not risk it. + if (_disableRangedAttackEndTime < currentTime) + { + _disableRangedAttackEndTime = currentTime + TimeUnit.MILLISECONDS.toNanos(Integer.MAX_VALUE); + } + _hitTask = ThreadPool.schedule(() -> onHitTimeNotDual(weaponItem, attack, timeToHit, timeAtk), timeToHit); + break; + } case FIST: { if (!isPlayer())