From 626a768300602b5e623df239d26c509ed123aa3d Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sat, 18 Jul 2020 00:29:44 +0000 Subject: [PATCH] Fixed unstuck timer config. Contributed by Sahar. --- .../gameserver/model/skills/SkillCaster.java | 17 ++++++++++++----- .../gameserver/model/skills/SkillCaster.java | 17 ++++++++++++----- .../gameserver/model/skills/SkillCaster.java | 17 ++++++++++++----- .../gameserver/model/skills/SkillCaster.java | 17 ++++++++++++----- .../gameserver/model/skills/SkillCaster.java | 17 ++++++++++++----- .../gameserver/model/skills/SkillCaster.java | 17 ++++++++++++----- .../gameserver/model/skills/SkillCaster.java | 17 ++++++++++++----- .../gameserver/model/skills/SkillCaster.java | 17 ++++++++++++----- .../gameserver/model/skills/SkillCaster.java | 17 ++++++++++++----- .../gameserver/model/skills/SkillCaster.java | 17 ++++++++++++----- .../gameserver/model/skills/SkillCaster.java | 17 ++++++++++++----- .../gameserver/model/skills/SkillCaster.java | 17 ++++++++++++----- .../gameserver/model/skills/SkillCaster.java | 17 ++++++++++++----- .../gameserver/model/skills/SkillCaster.java | 17 ++++++++++++----- .../gameserver/model/skills/SkillCaster.java | 17 ++++++++++++----- 15 files changed, 180 insertions(+), 75 deletions(-) diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 0a9991688e..2cb86b204e 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -99,7 +99,7 @@ public class SkillCaster implements Runnable private ScheduledFuture _task; private int _phase; - private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed) + private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed, int castTime) { Objects.requireNonNull(caster); Objects.requireNonNull(skill); @@ -111,7 +111,7 @@ public class SkillCaster implements Runnable _item = item; _castingType = castingType; - calcSkillTiming(caster, skill); + calcSkillTiming(caster, skill, castTime); } /** @@ -174,7 +174,7 @@ public class SkillCaster implements Runnable } // Schedule a thread that will execute 500ms before casting time is over (for animation issues and retail handling). - final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed); + final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed, castTime); skillCaster.run(); return skillCaster; } @@ -766,7 +766,7 @@ public class SkillCaster implements Runnable } } - private void calcSkillTiming(Creature creature, Skill skill) + private void calcSkillTiming(Creature creature, Skill skill, int castTime) { final double timeFactor = Formulas.calcSkillTimeFactor(creature, skill); final double cancelTime = Formulas.calcSkillCancelTime(creature, skill); @@ -777,7 +777,14 @@ public class SkillCaster implements Runnable } else { - _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + if (castTime > -1) + { + _hitTime = (int) Math.max((castTime / timeFactor) - cancelTime, 0); + } + else + { + _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + } _cancelTime = (int) cancelTime; } _coolTime = (int) (skill.getCoolTime() / timeFactor); // cooltimeMillis / timeFactor diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 7143824dfa..4380a02653 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -99,7 +99,7 @@ public class SkillCaster implements Runnable private ScheduledFuture _task; private int _phase; - private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed) + private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed, int castTime) { Objects.requireNonNull(caster); Objects.requireNonNull(skill); @@ -111,7 +111,7 @@ public class SkillCaster implements Runnable _item = item; _castingType = castingType; - calcSkillTiming(caster, skill); + calcSkillTiming(caster, skill, castTime); } /** @@ -174,7 +174,7 @@ public class SkillCaster implements Runnable } // Schedule a thread that will execute 500ms before casting time is over (for animation issues and retail handling). - final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed); + final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed, castTime); skillCaster.run(); return skillCaster; } @@ -766,7 +766,7 @@ public class SkillCaster implements Runnable } } - private void calcSkillTiming(Creature creature, Skill skill) + private void calcSkillTiming(Creature creature, Skill skill, int castTime) { final double timeFactor = Formulas.calcSkillTimeFactor(creature, skill); final double cancelTime = Formulas.calcSkillCancelTime(creature, skill); @@ -777,7 +777,14 @@ public class SkillCaster implements Runnable } else { - _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + if (castTime > -1) + { + _hitTime = (int) Math.max((castTime / timeFactor) - cancelTime, 0); + } + else + { + _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + } _cancelTime = (int) cancelTime; } _coolTime = (int) (skill.getCoolTime() / timeFactor); // cooltimeMillis / timeFactor diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 7143824dfa..4380a02653 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -99,7 +99,7 @@ public class SkillCaster implements Runnable private ScheduledFuture _task; private int _phase; - private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed) + private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed, int castTime) { Objects.requireNonNull(caster); Objects.requireNonNull(skill); @@ -111,7 +111,7 @@ public class SkillCaster implements Runnable _item = item; _castingType = castingType; - calcSkillTiming(caster, skill); + calcSkillTiming(caster, skill, castTime); } /** @@ -174,7 +174,7 @@ public class SkillCaster implements Runnable } // Schedule a thread that will execute 500ms before casting time is over (for animation issues and retail handling). - final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed); + final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed, castTime); skillCaster.run(); return skillCaster; } @@ -766,7 +766,7 @@ public class SkillCaster implements Runnable } } - private void calcSkillTiming(Creature creature, Skill skill) + private void calcSkillTiming(Creature creature, Skill skill, int castTime) { final double timeFactor = Formulas.calcSkillTimeFactor(creature, skill); final double cancelTime = Formulas.calcSkillCancelTime(creature, skill); @@ -777,7 +777,14 @@ public class SkillCaster implements Runnable } else { - _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + if (castTime > -1) + { + _hitTime = (int) Math.max((castTime / timeFactor) - cancelTime, 0); + } + else + { + _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + } _cancelTime = (int) cancelTime; } _coolTime = (int) (skill.getCoolTime() / timeFactor); // cooltimeMillis / timeFactor diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 7143824dfa..4380a02653 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -99,7 +99,7 @@ public class SkillCaster implements Runnable private ScheduledFuture _task; private int _phase; - private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed) + private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed, int castTime) { Objects.requireNonNull(caster); Objects.requireNonNull(skill); @@ -111,7 +111,7 @@ public class SkillCaster implements Runnable _item = item; _castingType = castingType; - calcSkillTiming(caster, skill); + calcSkillTiming(caster, skill, castTime); } /** @@ -174,7 +174,7 @@ public class SkillCaster implements Runnable } // Schedule a thread that will execute 500ms before casting time is over (for animation issues and retail handling). - final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed); + final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed, castTime); skillCaster.run(); return skillCaster; } @@ -766,7 +766,7 @@ public class SkillCaster implements Runnable } } - private void calcSkillTiming(Creature creature, Skill skill) + private void calcSkillTiming(Creature creature, Skill skill, int castTime) { final double timeFactor = Formulas.calcSkillTimeFactor(creature, skill); final double cancelTime = Formulas.calcSkillCancelTime(creature, skill); @@ -777,7 +777,14 @@ public class SkillCaster implements Runnable } else { - _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + if (castTime > -1) + { + _hitTime = (int) Math.max((castTime / timeFactor) - cancelTime, 0); + } + else + { + _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + } _cancelTime = (int) cancelTime; } _coolTime = (int) (skill.getCoolTime() / timeFactor); // cooltimeMillis / timeFactor diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index e8e41c297d..c6795e00e8 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -99,7 +99,7 @@ public class SkillCaster implements Runnable private ScheduledFuture _task; private int _phase; - private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed) + private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed, int castTime) { Objects.requireNonNull(caster); Objects.requireNonNull(skill); @@ -111,7 +111,7 @@ public class SkillCaster implements Runnable _item = item; _castingType = castingType; - calcSkillTiming(caster, skill); + calcSkillTiming(caster, skill, castTime); } /** @@ -174,7 +174,7 @@ public class SkillCaster implements Runnable } // Schedule a thread that will execute 500ms before casting time is over (for animation issues and retail handling). - final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed); + final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed, castTime); skillCaster.run(); return skillCaster; } @@ -766,7 +766,7 @@ public class SkillCaster implements Runnable } } - private void calcSkillTiming(Creature creature, Skill skill) + private void calcSkillTiming(Creature creature, Skill skill, int castTime) { final double timeFactor = Formulas.calcSkillTimeFactor(creature, skill); final double cancelTime = Formulas.calcSkillCancelTime(creature, skill); @@ -777,7 +777,14 @@ public class SkillCaster implements Runnable } else { - _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + if (castTime > -1) + { + _hitTime = (int) Math.max((castTime / timeFactor) - cancelTime, 0); + } + else + { + _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + } _cancelTime = (int) cancelTime; } _coolTime = (int) (skill.getCoolTime() / timeFactor); // cooltimeMillis / timeFactor diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index e8e41c297d..c6795e00e8 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -99,7 +99,7 @@ public class SkillCaster implements Runnable private ScheduledFuture _task; private int _phase; - private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed) + private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed, int castTime) { Objects.requireNonNull(caster); Objects.requireNonNull(skill); @@ -111,7 +111,7 @@ public class SkillCaster implements Runnable _item = item; _castingType = castingType; - calcSkillTiming(caster, skill); + calcSkillTiming(caster, skill, castTime); } /** @@ -174,7 +174,7 @@ public class SkillCaster implements Runnable } // Schedule a thread that will execute 500ms before casting time is over (for animation issues and retail handling). - final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed); + final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed, castTime); skillCaster.run(); return skillCaster; } @@ -766,7 +766,7 @@ public class SkillCaster implements Runnable } } - private void calcSkillTiming(Creature creature, Skill skill) + private void calcSkillTiming(Creature creature, Skill skill, int castTime) { final double timeFactor = Formulas.calcSkillTimeFactor(creature, skill); final double cancelTime = Formulas.calcSkillCancelTime(creature, skill); @@ -777,7 +777,14 @@ public class SkillCaster implements Runnable } else { - _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + if (castTime > -1) + { + _hitTime = (int) Math.max((castTime / timeFactor) - cancelTime, 0); + } + else + { + _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + } _cancelTime = (int) cancelTime; } _coolTime = (int) (skill.getCoolTime() / timeFactor); // cooltimeMillis / timeFactor diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index e8e41c297d..c6795e00e8 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -99,7 +99,7 @@ public class SkillCaster implements Runnable private ScheduledFuture _task; private int _phase; - private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed) + private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed, int castTime) { Objects.requireNonNull(caster); Objects.requireNonNull(skill); @@ -111,7 +111,7 @@ public class SkillCaster implements Runnable _item = item; _castingType = castingType; - calcSkillTiming(caster, skill); + calcSkillTiming(caster, skill, castTime); } /** @@ -174,7 +174,7 @@ public class SkillCaster implements Runnable } // Schedule a thread that will execute 500ms before casting time is over (for animation issues and retail handling). - final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed); + final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed, castTime); skillCaster.run(); return skillCaster; } @@ -766,7 +766,7 @@ public class SkillCaster implements Runnable } } - private void calcSkillTiming(Creature creature, Skill skill) + private void calcSkillTiming(Creature creature, Skill skill, int castTime) { final double timeFactor = Formulas.calcSkillTimeFactor(creature, skill); final double cancelTime = Formulas.calcSkillCancelTime(creature, skill); @@ -777,7 +777,14 @@ public class SkillCaster implements Runnable } else { - _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + if (castTime > -1) + { + _hitTime = (int) Math.max((castTime / timeFactor) - cancelTime, 0); + } + else + { + _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + } _cancelTime = (int) cancelTime; } _coolTime = (int) (skill.getCoolTime() / timeFactor); // cooltimeMillis / timeFactor diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index ebbe6ed0d0..2c4d13e7c4 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -99,7 +99,7 @@ public class SkillCaster implements Runnable private ScheduledFuture _task; private int _phase; - private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed) + private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed, int castTime) { Objects.requireNonNull(caster); Objects.requireNonNull(skill); @@ -111,7 +111,7 @@ public class SkillCaster implements Runnable _item = item; _castingType = castingType; - calcSkillTiming(caster, skill); + calcSkillTiming(caster, skill, castTime); } /** @@ -174,7 +174,7 @@ public class SkillCaster implements Runnable } // Schedule a thread that will execute 500ms before casting time is over (for animation issues and retail handling). - final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed); + final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed, castTime); skillCaster.run(); return skillCaster; } @@ -766,7 +766,7 @@ public class SkillCaster implements Runnable } } - private void calcSkillTiming(Creature creature, Skill skill) + private void calcSkillTiming(Creature creature, Skill skill, int castTime) { final double timeFactor = Formulas.calcSkillTimeFactor(creature, skill); final double cancelTime = Formulas.calcSkillCancelTime(creature, skill); @@ -777,7 +777,14 @@ public class SkillCaster implements Runnable } else { - _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + if (castTime > -1) + { + _hitTime = (int) Math.max((castTime / timeFactor) - cancelTime, 0); + } + else + { + _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + } _cancelTime = (int) cancelTime; } _coolTime = (int) (skill.getCoolTime() / timeFactor); // cooltimeMillis / timeFactor diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 503a54a986..fec11b7a57 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -99,7 +99,7 @@ public class SkillCaster implements Runnable private ScheduledFuture _task; private int _phase; - private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed) + private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed, int castTime) { Objects.requireNonNull(caster); Objects.requireNonNull(skill); @@ -111,7 +111,7 @@ public class SkillCaster implements Runnable _item = item; _castingType = castingType; - calcSkillTiming(caster, skill); + calcSkillTiming(caster, skill, castTime); } /** @@ -174,7 +174,7 @@ public class SkillCaster implements Runnable } // Schedule a thread that will execute 500ms before casting time is over (for animation issues and retail handling). - final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed); + final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed, castTime); skillCaster.run(); return skillCaster; } @@ -766,7 +766,7 @@ public class SkillCaster implements Runnable } } - private void calcSkillTiming(Creature creature, Skill skill) + private void calcSkillTiming(Creature creature, Skill skill, int castTime) { final double timeFactor = Formulas.calcSkillTimeFactor(creature, skill); final double cancelTime = Formulas.calcSkillCancelTime(creature, skill); @@ -777,7 +777,14 @@ public class SkillCaster implements Runnable } else { - _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + if (castTime > -1) + { + _hitTime = (int) Math.max((castTime / timeFactor) - cancelTime, 0); + } + else + { + _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + } _cancelTime = (int) cancelTime; } _coolTime = (int) (skill.getCoolTime() / timeFactor); // cooltimeMillis / timeFactor diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 503a54a986..fec11b7a57 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -99,7 +99,7 @@ public class SkillCaster implements Runnable private ScheduledFuture _task; private int _phase; - private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed) + private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed, int castTime) { Objects.requireNonNull(caster); Objects.requireNonNull(skill); @@ -111,7 +111,7 @@ public class SkillCaster implements Runnable _item = item; _castingType = castingType; - calcSkillTiming(caster, skill); + calcSkillTiming(caster, skill, castTime); } /** @@ -174,7 +174,7 @@ public class SkillCaster implements Runnable } // Schedule a thread that will execute 500ms before casting time is over (for animation issues and retail handling). - final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed); + final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed, castTime); skillCaster.run(); return skillCaster; } @@ -766,7 +766,7 @@ public class SkillCaster implements Runnable } } - private void calcSkillTiming(Creature creature, Skill skill) + private void calcSkillTiming(Creature creature, Skill skill, int castTime) { final double timeFactor = Formulas.calcSkillTimeFactor(creature, skill); final double cancelTime = Formulas.calcSkillCancelTime(creature, skill); @@ -777,7 +777,14 @@ public class SkillCaster implements Runnable } else { - _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + if (castTime > -1) + { + _hitTime = (int) Math.max((castTime / timeFactor) - cancelTime, 0); + } + else + { + _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + } _cancelTime = (int) cancelTime; } _coolTime = (int) (skill.getCoolTime() / timeFactor); // cooltimeMillis / timeFactor diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 503a54a986..fec11b7a57 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -99,7 +99,7 @@ public class SkillCaster implements Runnable private ScheduledFuture _task; private int _phase; - private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed) + private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed, int castTime) { Objects.requireNonNull(caster); Objects.requireNonNull(skill); @@ -111,7 +111,7 @@ public class SkillCaster implements Runnable _item = item; _castingType = castingType; - calcSkillTiming(caster, skill); + calcSkillTiming(caster, skill, castTime); } /** @@ -174,7 +174,7 @@ public class SkillCaster implements Runnable } // Schedule a thread that will execute 500ms before casting time is over (for animation issues and retail handling). - final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed); + final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed, castTime); skillCaster.run(); return skillCaster; } @@ -766,7 +766,7 @@ public class SkillCaster implements Runnable } } - private void calcSkillTiming(Creature creature, Skill skill) + private void calcSkillTiming(Creature creature, Skill skill, int castTime) { final double timeFactor = Formulas.calcSkillTimeFactor(creature, skill); final double cancelTime = Formulas.calcSkillCancelTime(creature, skill); @@ -777,7 +777,14 @@ public class SkillCaster implements Runnable } else { - _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + if (castTime > -1) + { + _hitTime = (int) Math.max((castTime / timeFactor) - cancelTime, 0); + } + else + { + _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + } _cancelTime = (int) cancelTime; } _coolTime = (int) (skill.getCoolTime() / timeFactor); // cooltimeMillis / timeFactor diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 503a54a986..fec11b7a57 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -99,7 +99,7 @@ public class SkillCaster implements Runnable private ScheduledFuture _task; private int _phase; - private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed) + private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed, int castTime) { Objects.requireNonNull(caster); Objects.requireNonNull(skill); @@ -111,7 +111,7 @@ public class SkillCaster implements Runnable _item = item; _castingType = castingType; - calcSkillTiming(caster, skill); + calcSkillTiming(caster, skill, castTime); } /** @@ -174,7 +174,7 @@ public class SkillCaster implements Runnable } // Schedule a thread that will execute 500ms before casting time is over (for animation issues and retail handling). - final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed); + final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed, castTime); skillCaster.run(); return skillCaster; } @@ -766,7 +766,7 @@ public class SkillCaster implements Runnable } } - private void calcSkillTiming(Creature creature, Skill skill) + private void calcSkillTiming(Creature creature, Skill skill, int castTime) { final double timeFactor = Formulas.calcSkillTimeFactor(creature, skill); final double cancelTime = Formulas.calcSkillCancelTime(creature, skill); @@ -777,7 +777,14 @@ public class SkillCaster implements Runnable } else { - _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + if (castTime > -1) + { + _hitTime = (int) Math.max((castTime / timeFactor) - cancelTime, 0); + } + else + { + _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + } _cancelTime = (int) cancelTime; } _coolTime = (int) (skill.getCoolTime() / timeFactor); // cooltimeMillis / timeFactor diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 503a54a986..fec11b7a57 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -99,7 +99,7 @@ public class SkillCaster implements Runnable private ScheduledFuture _task; private int _phase; - private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed) + private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed, int castTime) { Objects.requireNonNull(caster); Objects.requireNonNull(skill); @@ -111,7 +111,7 @@ public class SkillCaster implements Runnable _item = item; _castingType = castingType; - calcSkillTiming(caster, skill); + calcSkillTiming(caster, skill, castTime); } /** @@ -174,7 +174,7 @@ public class SkillCaster implements Runnable } // Schedule a thread that will execute 500ms before casting time is over (for animation issues and retail handling). - final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed); + final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed, castTime); skillCaster.run(); return skillCaster; } @@ -766,7 +766,7 @@ public class SkillCaster implements Runnable } } - private void calcSkillTiming(Creature creature, Skill skill) + private void calcSkillTiming(Creature creature, Skill skill, int castTime) { final double timeFactor = Formulas.calcSkillTimeFactor(creature, skill); final double cancelTime = Formulas.calcSkillCancelTime(creature, skill); @@ -777,7 +777,14 @@ public class SkillCaster implements Runnable } else { - _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + if (castTime > -1) + { + _hitTime = (int) Math.max((castTime / timeFactor) - cancelTime, 0); + } + else + { + _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + } _cancelTime = (int) cancelTime; } _coolTime = (int) (skill.getCoolTime() / timeFactor); // cooltimeMillis / timeFactor diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 3bc7a88bdc..e139661899 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -99,7 +99,7 @@ public class SkillCaster implements Runnable private ScheduledFuture _task; private int _phase; - private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed) + private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed, int castTime) { Objects.requireNonNull(caster); Objects.requireNonNull(skill); @@ -111,7 +111,7 @@ public class SkillCaster implements Runnable _item = item; _castingType = castingType; - calcSkillTiming(caster, skill); + calcSkillTiming(caster, skill, castTime); } /** @@ -174,7 +174,7 @@ public class SkillCaster implements Runnable } // Schedule a thread that will execute 500ms before casting time is over (for animation issues and retail handling). - final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed); + final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed, castTime); skillCaster.run(); return skillCaster; } @@ -766,7 +766,7 @@ public class SkillCaster implements Runnable } } - private void calcSkillTiming(Creature creature, Skill skill) + private void calcSkillTiming(Creature creature, Skill skill, int castTime) { final double timeFactor = Formulas.calcSkillTimeFactor(creature, skill); final double cancelTime = Formulas.calcSkillCancelTime(creature, skill); @@ -777,7 +777,14 @@ public class SkillCaster implements Runnable } else { - _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + if (castTime > -1) + { + _hitTime = (int) Math.max((castTime / timeFactor) - cancelTime, 0); + } + else + { + _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + } _cancelTime = (int) cancelTime; } _coolTime = (int) (skill.getCoolTime() / timeFactor); // cooltimeMillis / timeFactor diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java index 503a54a986..fec11b7a57 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -99,7 +99,7 @@ public class SkillCaster implements Runnable private ScheduledFuture _task; private int _phase; - private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed) + private SkillCaster(Creature caster, WorldObject target, Skill skill, ItemInstance item, SkillCastingType castingType, boolean ctrlPressed, boolean shiftPressed, int castTime) { Objects.requireNonNull(caster); Objects.requireNonNull(skill); @@ -111,7 +111,7 @@ public class SkillCaster implements Runnable _item = item; _castingType = castingType; - calcSkillTiming(caster, skill); + calcSkillTiming(caster, skill, castTime); } /** @@ -174,7 +174,7 @@ public class SkillCaster implements Runnable } // Schedule a thread that will execute 500ms before casting time is over (for animation issues and retail handling). - final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed); + final SkillCaster skillCaster = new SkillCaster(caster, target, skill, item, castingType, ctrlPressed, shiftPressed, castTime); skillCaster.run(); return skillCaster; } @@ -766,7 +766,7 @@ public class SkillCaster implements Runnable } } - private void calcSkillTiming(Creature creature, Skill skill) + private void calcSkillTiming(Creature creature, Skill skill, int castTime) { final double timeFactor = Formulas.calcSkillTimeFactor(creature, skill); final double cancelTime = Formulas.calcSkillCancelTime(creature, skill); @@ -777,7 +777,14 @@ public class SkillCaster implements Runnable } else { - _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + if (castTime > -1) + { + _hitTime = (int) Math.max((castTime / timeFactor) - cancelTime, 0); + } + else + { + _hitTime = (int) Math.max((skill.getHitTime() / timeFactor) - cancelTime, 0); + } _cancelTime = (int) cancelTime; } _coolTime = (int) (skill.getCoolTime() / timeFactor); // cooltimeMillis / timeFactor