Minor rewrite of active soulshots logic.

Source L2J Ertheia branch:
5b656616ff
This commit is contained in:
mobius
2015-02-15 21:19:41 +00:00
parent a50835d3da
commit f2d6aedabe

View File

@ -40,7 +40,6 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentSkipListMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CopyOnWriteArraySet;
import java.util.concurrent.Future;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
@ -777,7 +776,7 @@ public final class L2PcInstance extends L2Playable
/** Player's cubics. */
private final Map<Integer, L2CubicInstance> _cubics = new ConcurrentSkipListMap<>();
/** Active shots. */
protected Set<Integer> _activeSoulShots = new CopyOnWriteArraySet<>();
protected Set<Integer> _activeSoulShots = ConcurrentHashMap.newKeySet();
public final ReentrantLock soulShotLock = new ReentrantLock();
@ -9601,54 +9600,31 @@ public final class L2PcInstance extends L2Playable
@Override
public void rechargeShots(boolean physical, boolean magic)
{
L2ItemInstance item;
IItemHandler handler;
if ((_activeSoulShots == null) || _activeSoulShots.isEmpty())
{
return;
}
for (int itemId : _activeSoulShots)
{
item = getInventory().getItemByItemId(itemId);
if (item != null)
{
if (magic)
{
if (item.getItem().getDefaultAction() == ActionType.SPIRITSHOT)
{
handler = ItemHandler.getInstance().getHandler(item.getEtcItem());
if (handler != null)
{
handler.useItem(this, item, false);
}
}
}
if (physical)
{
if (item.getItem().getDefaultAction() == ActionType.SOULSHOT)
{
handler = ItemHandler.getInstance().getHandler(item.getEtcItem());
if (handler != null)
{
handler.useItem(this, item, false);
}
}
}
}
else
final L2ItemInstance item = getInventory().getItemByItemId(itemId);
if (item == null)
{
removeAutoSoulShot(itemId);
continue;
}
final IItemHandler handler = ItemHandler.getInstance().getHandler(item.getEtcItem());
if (handler == null)
{
continue;
}
if ((magic && (item.getItem().getDefaultAction() == ActionType.SPIRITSHOT)) //
|| (physical && (item.getItem().getDefaultAction() == ActionType.SOULSHOT)))
{
handler.useItem(this, item, false);
}
}
}
/**
* Cancel autoshot for all shots matching crystaltype<BR>
* {@link L2Item#getCrystalType()}
* Cancel autoshot for all shots matching crystaltype {@link L2Item#getCrystalType()}.
* @param crystalType int type to disable
*/
public void disableAutoShotByCrystalType(int crystalType)