diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java index 7dd5fddc62..e8705c3dcb 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java @@ -74,7 +74,6 @@ public class CubicInstance protected int _matk; protected int _activationtime; protected int _activationchance; - protected boolean _active; private final boolean _givenByOther; protected List _skills = new ArrayList<>(); private Future _disappearTask; @@ -98,7 +97,6 @@ public class CubicInstance _matk = mAtk; _activationtime = activationtime * 1000; _activationchance = activationchance; - _active = false; _givenByOther = givenByOther; switch (_id) @@ -241,40 +239,40 @@ public class CubicInstance _disappearTask = ThreadPool.schedule(new Disappear(), totallifetime); // disappear } - /** - * Do action. - */ - public synchronized void doAction() + public void doAction() { - if (_active) + if (_actionTask == null) { - return; - } - _active = true; - - switch (_id) - { - case AQUA_CUBIC: - case BINDING_CUBIC: - case SPARK_CUBIC: - case STORM_CUBIC: - case POLTERGEIST_CUBIC: - case VAMPIRIC_CUBIC: - case VIPER_CUBIC: - case ATTRACT_CUBIC: - case SMART_CUBIC_ARCANALORD: - case SMART_CUBIC_ELEMENTALMASTER: - case SMART_CUBIC_SPECTRALMASTER: - case SMART_CUBIC_EVATEMPLAR: - case SMART_CUBIC_SHILLIENTEMPLAR: + synchronized (this) { - _actionTask = ThreadPool.scheduleAtFixedRate(new Action(_activationchance), 0, _activationtime); - break; - } - case LIFE_CUBIC: - { - _actionTask = ThreadPool.scheduleAtFixedRate(new Heal(), 0, _activationtime); - break; + if (_actionTask == null) + { + switch (_id) + { + case AQUA_CUBIC: + case BINDING_CUBIC: + case SPARK_CUBIC: + case STORM_CUBIC: + case POLTERGEIST_CUBIC: + case VAMPIRIC_CUBIC: + case VIPER_CUBIC: + case ATTRACT_CUBIC: + case SMART_CUBIC_ARCANALORD: + case SMART_CUBIC_ELEMENTALMASTER: + case SMART_CUBIC_SPECTRALMASTER: + case SMART_CUBIC_EVATEMPLAR: + case SMART_CUBIC_SHILLIENTEMPLAR: + { + _actionTask = ThreadPool.scheduleAtFixedRate(new Action(_activationchance), 0, _activationtime); + break; + } + case LIFE_CUBIC: + { + _actionTask = ThreadPool.scheduleAtFixedRate(new Heal(), 0, _activationtime); + break; + } + } + } } } } @@ -332,7 +330,6 @@ public class CubicInstance } _actionTask = null; } - _active = false; } /** diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java index 6954e49103..cbefcb5778 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java @@ -81,7 +81,6 @@ public class CubicInstance implements IIdentifiable private final int _cubicDelay; private final int _cubicSkillChance; private final int _cubicMaxCount; - private boolean _active; private final boolean _givenByOther; private final List _skills = new ArrayList<>(); @@ -97,7 +96,6 @@ public class CubicInstance implements IIdentifiable _cubicDelay = cubicDelay * 1000; _cubicSkillChance = cubicSkillChance; _cubicMaxCount = cubicMaxCount; - _active = false; _givenByOther = givenByOther; switch (_cubicId) @@ -185,37 +183,40 @@ public class CubicInstance implements IIdentifiable _disappearTask = ThreadPool.schedule(new CubicDisappear(this), cubicDuration * 1000); // disappear } - public synchronized void doAction() + public void doAction() { - if (_active) + if (_actionTask == null) { - return; - } - _active = true; - - switch (_cubicId) - { - case AQUA_CUBIC: - case BINDING_CUBIC: - case SPARK_CUBIC: - case STORM_CUBIC: - case POLTERGEIST_CUBIC: - case VAMPIRIC_CUBIC: - case VIPER_CUBIC: - case ATTRACT_CUBIC: - case SMART_CUBIC_ARCANALORD: - case SMART_CUBIC_ELEMENTALMASTER: - case SMART_CUBIC_SPECTRALMASTER: - case SMART_CUBIC_EVATEMPLAR: - case SMART_CUBIC_SHILLIENTEMPLAR: + synchronized (this) { - _actionTask = ThreadPool.scheduleAtFixedRate(new CubicAction(this, _cubicSkillChance), 0, _cubicDelay); - break; - } - case LIFE_CUBIC: - { - _actionTask = ThreadPool.scheduleAtFixedRate(new CubicHeal(this), 0, _cubicDelay); - break; + if (_actionTask == null) + { + switch (_cubicId) + { + case AQUA_CUBIC: + case BINDING_CUBIC: + case SPARK_CUBIC: + case STORM_CUBIC: + case POLTERGEIST_CUBIC: + case VAMPIRIC_CUBIC: + case VIPER_CUBIC: + case ATTRACT_CUBIC: + case SMART_CUBIC_ARCANALORD: + case SMART_CUBIC_ELEMENTALMASTER: + case SMART_CUBIC_SPECTRALMASTER: + case SMART_CUBIC_EVATEMPLAR: + case SMART_CUBIC_SHILLIENTEMPLAR: + { + _actionTask = ThreadPool.scheduleAtFixedRate(new CubicAction(this, _cubicSkillChance), 0, _cubicDelay); + break; + } + case LIFE_CUBIC: + { + _actionTask = ThreadPool.scheduleAtFixedRate(new CubicHeal(this), 0, _cubicDelay); + break; + } + } + } } } } @@ -264,7 +265,6 @@ public class CubicInstance implements IIdentifiable _actionTask.cancel(true); _actionTask = null; } - _active = false; } public void cancelDisappear() diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java index 6954e49103..cbefcb5778 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/CubicInstance.java @@ -81,7 +81,6 @@ public class CubicInstance implements IIdentifiable private final int _cubicDelay; private final int _cubicSkillChance; private final int _cubicMaxCount; - private boolean _active; private final boolean _givenByOther; private final List _skills = new ArrayList<>(); @@ -97,7 +96,6 @@ public class CubicInstance implements IIdentifiable _cubicDelay = cubicDelay * 1000; _cubicSkillChance = cubicSkillChance; _cubicMaxCount = cubicMaxCount; - _active = false; _givenByOther = givenByOther; switch (_cubicId) @@ -185,37 +183,40 @@ public class CubicInstance implements IIdentifiable _disappearTask = ThreadPool.schedule(new CubicDisappear(this), cubicDuration * 1000); // disappear } - public synchronized void doAction() + public void doAction() { - if (_active) + if (_actionTask == null) { - return; - } - _active = true; - - switch (_cubicId) - { - case AQUA_CUBIC: - case BINDING_CUBIC: - case SPARK_CUBIC: - case STORM_CUBIC: - case POLTERGEIST_CUBIC: - case VAMPIRIC_CUBIC: - case VIPER_CUBIC: - case ATTRACT_CUBIC: - case SMART_CUBIC_ARCANALORD: - case SMART_CUBIC_ELEMENTALMASTER: - case SMART_CUBIC_SPECTRALMASTER: - case SMART_CUBIC_EVATEMPLAR: - case SMART_CUBIC_SHILLIENTEMPLAR: + synchronized (this) { - _actionTask = ThreadPool.scheduleAtFixedRate(new CubicAction(this, _cubicSkillChance), 0, _cubicDelay); - break; - } - case LIFE_CUBIC: - { - _actionTask = ThreadPool.scheduleAtFixedRate(new CubicHeal(this), 0, _cubicDelay); - break; + if (_actionTask == null) + { + switch (_cubicId) + { + case AQUA_CUBIC: + case BINDING_CUBIC: + case SPARK_CUBIC: + case STORM_CUBIC: + case POLTERGEIST_CUBIC: + case VAMPIRIC_CUBIC: + case VIPER_CUBIC: + case ATTRACT_CUBIC: + case SMART_CUBIC_ARCANALORD: + case SMART_CUBIC_ELEMENTALMASTER: + case SMART_CUBIC_SPECTRALMASTER: + case SMART_CUBIC_EVATEMPLAR: + case SMART_CUBIC_SHILLIENTEMPLAR: + { + _actionTask = ThreadPool.scheduleAtFixedRate(new CubicAction(this, _cubicSkillChance), 0, _cubicDelay); + break; + } + case LIFE_CUBIC: + { + _actionTask = ThreadPool.scheduleAtFixedRate(new CubicHeal(this), 0, _cubicDelay); + break; + } + } + } } } } @@ -264,7 +265,6 @@ public class CubicInstance implements IIdentifiable _actionTask.cancel(true); _actionTask = null; } - _active = false; } public void cancelDisappear()