Removed most stream filter uses.
This commit is contained in:
		@@ -737,7 +737,15 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			final ClassChangeData data = _classChangeData.stream().filter(ccd -> ccd.isInCategory(player)).findFirst().get();
 | 
			
		||||
			ClassChangeData data = null;
 | 
			
		||||
			for (ClassChangeData ccd : _classChangeData)
 | 
			
		||||
			{
 | 
			
		||||
				if (ccd.isInCategory(player))
 | 
			
		||||
				{
 | 
			
		||||
					data = ccd;
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			if (data != null)
 | 
			
		||||
			{
 | 
			
		||||
				// Required items.
 | 
			
		||||
@@ -1034,11 +1042,35 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader
 | 
			
		||||
	
 | 
			
		||||
	private boolean checkIfClassChangeHasOptions(PlayerInstance player)
 | 
			
		||||
	{
 | 
			
		||||
		boolean showOptions = _classChangeData.stream().filter(ccd -> !ccd.getItemsRequired().isEmpty()).anyMatch(ccd -> ccd.isInCategory(player)); // Check if there are requirements
 | 
			
		||||
		boolean showOptions = false;
 | 
			
		||||
		
 | 
			
		||||
		// Check if there are requirements
 | 
			
		||||
		for (ClassChangeData ccd : _classChangeData)
 | 
			
		||||
		{
 | 
			
		||||
			if (!ccd.getItemsRequired().isEmpty() && ccd.isInCategory(player))
 | 
			
		||||
			{
 | 
			
		||||
				showOptions = true;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if (!showOptions)
 | 
			
		||||
		{
 | 
			
		||||
			showOptions = _classChangeData.stream().filter(ccd -> !ccd.getItemsRewarded().isEmpty()).filter(ccd -> ccd.isInCategory(player)).count() > 1; // Check if there is more than 1 reward to chose.
 | 
			
		||||
			// Check if there is more than 1 reward to chose.
 | 
			
		||||
			int count = 0;
 | 
			
		||||
			for (ClassChangeData ccd : _classChangeData)
 | 
			
		||||
			{
 | 
			
		||||
				if (!ccd.getItemsRewarded().isEmpty() && ccd.isInCategory(player))
 | 
			
		||||
				{
 | 
			
		||||
					count++;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			if (count > 1)
 | 
			
		||||
			{
 | 
			
		||||
				showOptions = true;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		return showOptions;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
 
 | 
			
		||||
@@ -216,12 +216,15 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler
 | 
			
		||||
						return false;
 | 
			
		||||
					}
 | 
			
		||||
					
 | 
			
		||||
					final SellBuffHolder holder = player.getSellingBuffs().stream().filter(h -> (h.getSkillId() == skillToChange.getId())).findFirst().orElse(null);
 | 
			
		||||
					if ((holder != null))
 | 
			
		||||
					for (SellBuffHolder holder : player.getSellingBuffs())
 | 
			
		||||
					{
 | 
			
		||||
						player.sendMessage("Price of " + player.getKnownSkill(holder.getSkillId()).getName() + " has been changed to " + price + "!");
 | 
			
		||||
						holder.setPrice(price);
 | 
			
		||||
						SellBuffsManager.getInstance().sendBuffEditMenu(player);
 | 
			
		||||
						if (holder.getSkillId() == skillToChange.getId())
 | 
			
		||||
						{
 | 
			
		||||
							player.sendMessage("Price of " + player.getKnownSkill(holder.getSkillId()).getName() + " has been changed to " + price + "!");
 | 
			
		||||
							holder.setPrice(price);
 | 
			
		||||
							SellBuffsManager.getInstance().sendBuffEditMenu(player);
 | 
			
		||||
							break;
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				break;
 | 
			
		||||
@@ -250,11 +253,14 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler
 | 
			
		||||
						return false;
 | 
			
		||||
					}
 | 
			
		||||
					
 | 
			
		||||
					final SellBuffHolder holder = player.getSellingBuffs().stream().filter(h -> (h.getSkillId() == skillToRemove.getId())).findFirst().orElse(null);
 | 
			
		||||
					if ((holder != null) && player.getSellingBuffs().remove(holder))
 | 
			
		||||
					for (SellBuffHolder holder : player.getSellingBuffs())
 | 
			
		||||
					{
 | 
			
		||||
						player.sendMessage("Skill " + player.getKnownSkill(holder.getSkillId()).getName() + " has been removed!");
 | 
			
		||||
						SellBuffsManager.getInstance().sendBuffEditMenu(player);
 | 
			
		||||
						if ((holder.getSkillId() == skillToRemove.getId()) && player.getSellingBuffs().remove(holder))
 | 
			
		||||
						{
 | 
			
		||||
							player.sendMessage("Skill " + player.getKnownSkill(holder.getSkillId()).getName() + " has been removed!");
 | 
			
		||||
							SellBuffsManager.getInstance().sendBuffEditMenu(player);
 | 
			
		||||
							break;
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				break;
 | 
			
		||||
@@ -399,29 +405,33 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler
 | 
			
		||||
						return false;
 | 
			
		||||
					}
 | 
			
		||||
					
 | 
			
		||||
					final SellBuffHolder holder = seller.getSellingBuffs().stream().filter(h -> (h.getSkillId() == skillToBuy.getId())).findFirst().orElse(null);
 | 
			
		||||
					if (holder != null)
 | 
			
		||||
					for (SellBuffHolder holder : player.getSellingBuffs())
 | 
			
		||||
					{
 | 
			
		||||
						if (AbstractScript.getQuestItemsCount(player, Config.SELLBUFF_PAYMENT_ID) >= holder.getPrice())
 | 
			
		||||
						if (holder.getSkillId() == skillToBuy.getId())
 | 
			
		||||
						{
 | 
			
		||||
							AbstractScript.takeItems(player, Config.SELLBUFF_PAYMENT_ID, holder.getPrice());
 | 
			
		||||
							AbstractScript.giveItems(seller, Config.SELLBUFF_PAYMENT_ID, holder.getPrice());
 | 
			
		||||
							seller.reduceCurrentMp(skillToBuy.getMpConsume() * Config.SELLBUFF_MP_MULTIPLER);
 | 
			
		||||
							skillToBuy.activateSkill(seller, player);
 | 
			
		||||
						}
 | 
			
		||||
						else
 | 
			
		||||
						{
 | 
			
		||||
							final Item item = ItemTable.getInstance().getTemplate(Config.SELLBUFF_PAYMENT_ID);
 | 
			
		||||
							if (item != null)
 | 
			
		||||
							if (AbstractScript.getQuestItemsCount(player, Config.SELLBUFF_PAYMENT_ID) >= holder.getPrice())
 | 
			
		||||
							{
 | 
			
		||||
								player.sendMessage("Not enough " + item.getName() + "!");
 | 
			
		||||
								AbstractScript.takeItems(player, Config.SELLBUFF_PAYMENT_ID, holder.getPrice());
 | 
			
		||||
								AbstractScript.giveItems(seller, Config.SELLBUFF_PAYMENT_ID, holder.getPrice());
 | 
			
		||||
								seller.reduceCurrentMp(skillToBuy.getMpConsume() * Config.SELLBUFF_MP_MULTIPLER);
 | 
			
		||||
								skillToBuy.activateSkill(seller, player);
 | 
			
		||||
							}
 | 
			
		||||
							else
 | 
			
		||||
							{
 | 
			
		||||
								player.sendMessage("Not enough items!");
 | 
			
		||||
								final Item item = ItemTable.getInstance().getTemplate(Config.SELLBUFF_PAYMENT_ID);
 | 
			
		||||
								if (item != null)
 | 
			
		||||
								{
 | 
			
		||||
									player.sendMessage("Not enough " + item.getName() + "!");
 | 
			
		||||
								}
 | 
			
		||||
								else
 | 
			
		||||
								{
 | 
			
		||||
									player.sendMessage("Not enough items!");
 | 
			
		||||
								}
 | 
			
		||||
							}
 | 
			
		||||
							break;
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
					
 | 
			
		||||
					SellBuffsManager.getInstance().sendBuffMenu(player, seller, index);
 | 
			
		||||
				}
 | 
			
		||||
				break;
 | 
			
		||||
 
 | 
			
		||||
@@ -297,7 +297,13 @@ public class AdminAdmin implements IAdminCommandHandler
 | 
			
		||||
					}
 | 
			
		||||
					
 | 
			
		||||
					final CreatureSay cs = new CreatureSay(activeChar, ChatType.WORLD, activeChar.getName(), sb.toString());
 | 
			
		||||
					World.getInstance().getPlayers().stream().filter(activeChar::isNotBlocked).forEach(cs::sendTo);
 | 
			
		||||
					for (PlayerInstance player : World.getInstance().getPlayers())
 | 
			
		||||
					{
 | 
			
		||||
						if (player.isNotBlocked(activeChar))
 | 
			
		||||
						{
 | 
			
		||||
							cs.sendTo(player);
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case "see":
 | 
			
		||||
 
 | 
			
		||||
@@ -98,16 +98,34 @@ public class ChatWorld implements IChatHandler
 | 
			
		||||
			{
 | 
			
		||||
				if (activeChar.isGood())
 | 
			
		||||
				{
 | 
			
		||||
					World.getInstance().getAllGoodPlayers().stream().filter(activeChar::isNotBlocked).forEach(cs::sendTo);
 | 
			
		||||
					for (PlayerInstance player : World.getInstance().getAllGoodPlayers())
 | 
			
		||||
					{
 | 
			
		||||
						if (player.isNotBlocked(activeChar))
 | 
			
		||||
						{
 | 
			
		||||
							cs.sendTo(player);
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				if (activeChar.isEvil())
 | 
			
		||||
				{
 | 
			
		||||
					World.getInstance().getAllEvilPlayers().stream().filter(activeChar::isNotBlocked).forEach(cs::sendTo);
 | 
			
		||||
					for (PlayerInstance player : World.getInstance().getAllEvilPlayers())
 | 
			
		||||
					{
 | 
			
		||||
						if (player.isNotBlocked(activeChar))
 | 
			
		||||
						{
 | 
			
		||||
							cs.sendTo(player);
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				World.getInstance().getPlayers().stream().filter(activeChar::isNotBlocked).forEach(cs::sendTo);
 | 
			
		||||
				for (PlayerInstance player : World.getInstance().getPlayers())
 | 
			
		||||
				{
 | 
			
		||||
					if (player.isNotBlocked(activeChar))
 | 
			
		||||
					{
 | 
			
		||||
						cs.sendTo(player);
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			activeChar.setWorldChatUsed(activeChar.getWorldChatUsed() + 1);
 | 
			
		||||
 
 | 
			
		||||
@@ -215,16 +215,19 @@ public class HomeBoard implements IParseBoardHandler
 | 
			
		||||
					{
 | 
			
		||||
						continue;
 | 
			
		||||
					}
 | 
			
		||||
					targets.stream().filter(target -> !target.isSummon() || !skill.isSharedWithSummon()).forEach(target ->
 | 
			
		||||
					for (Creature target : targets)
 | 
			
		||||
					{
 | 
			
		||||
						skill.applyEffects(player, target);
 | 
			
		||||
						if (Config.COMMUNITYBOARD_CAST_ANIMATIONS)
 | 
			
		||||
						if (skill.isSharedWithSummon() || target.isPlayer())
 | 
			
		||||
						{
 | 
			
		||||
							player.sendPacket(new MagicSkillUse(player, target, skill.getId(), skill.getLevel(), skill.getHitTime(), skill.getReuseDelay()));
 | 
			
		||||
							// not recommend broadcast
 | 
			
		||||
							// player.broadcastPacket(new MagicSkillUse(player, target, skill.getId(), skill.getLevel(), skill.getHitTime(), skill.getReuseDelay()));
 | 
			
		||||
							skill.applyEffects(player, target);
 | 
			
		||||
							if (Config.COMMUNITYBOARD_CAST_ANIMATIONS)
 | 
			
		||||
							{
 | 
			
		||||
								player.sendPacket(new MagicSkillUse(player, target, skill.getId(), skill.getLevel(), skill.getHitTime(), skill.getReuseDelay()));
 | 
			
		||||
								// not recommend broadcast
 | 
			
		||||
								// player.broadcastPacket(new MagicSkillUse(player, target, skill.getId(), skill.getLevel(), skill.getHitTime(), skill.getReuseDelay()));
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					});
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
 
 | 
			
		||||
@@ -88,7 +88,13 @@ public class BossDailyMissionHandler extends AbstractDailyMissionHandler
 | 
			
		||||
			{
 | 
			
		||||
				final CommandChannel channel = party.getCommandChannel();
 | 
			
		||||
				final List<PlayerInstance> members = channel != null ? channel.getMembers() : party.getMembers();
 | 
			
		||||
				members.stream().filter(member -> member.calculateDistance3D(monster) <= Config.ALT_PARTY_RANGE).forEach(this::processPlayerProgress);
 | 
			
		||||
				for (PlayerInstance member : members)
 | 
			
		||||
				{
 | 
			
		||||
					if (member.calculateDistance3D(monster) <= Config.ALT_PARTY_RANGE)
 | 
			
		||||
					{
 | 
			
		||||
						processPlayerProgress(member);
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
 
 | 
			
		||||
@@ -18,15 +18,14 @@ package handlers.effecthandlers;
 | 
			
		||||
 | 
			
		||||
import java.util.Collections;
 | 
			
		||||
import java.util.HashSet;
 | 
			
		||||
import java.util.Objects;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
import org.l2jmobius.gameserver.model.StatSet;
 | 
			
		||||
import org.l2jmobius.gameserver.model.WorldObject;
 | 
			
		||||
import org.l2jmobius.gameserver.model.actor.Creature;
 | 
			
		||||
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
 | 
			
		||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
 | 
			
		||||
import org.l2jmobius.gameserver.model.skills.AbnormalType;
 | 
			
		||||
import org.l2jmobius.gameserver.model.skills.BuffInfo;
 | 
			
		||||
import org.l2jmobius.gameserver.model.skills.Skill;
 | 
			
		||||
import org.l2jmobius.gameserver.network.serverpackets.AbnormalStatusUpdate;
 | 
			
		||||
import org.l2jmobius.gameserver.network.serverpackets.ExAbnormalStatusUpdateFromTarget;
 | 
			
		||||
@@ -94,19 +93,25 @@ public class AbnormalTimeChange extends AbstractEffect
 | 
			
		||||
			{
 | 
			
		||||
				if (_abnormals.isEmpty())
 | 
			
		||||
				{
 | 
			
		||||
					effected.getEffectList().getEffects().stream().filter(b -> b.getSkill().canBeDispelled()).forEach(b ->
 | 
			
		||||
					for (BuffInfo info : effected.getEffectList().getEffects())
 | 
			
		||||
					{
 | 
			
		||||
						b.resetAbnormalTime(b.getTime() + _time);
 | 
			
		||||
						asu.addSkill(b);
 | 
			
		||||
					});
 | 
			
		||||
						if (info.getSkill().canBeDispelled())
 | 
			
		||||
						{
 | 
			
		||||
							info.resetAbnormalTime(info.getTime() + _time);
 | 
			
		||||
							asu.addSkill(info);
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				else
 | 
			
		||||
				{
 | 
			
		||||
					effected.getEffectList().getEffects().stream().filter(b -> b.getSkill().canBeDispelled() && _abnormals.contains(b.getSkill().getAbnormalType())).forEach(b ->
 | 
			
		||||
					for (BuffInfo info : effected.getEffectList().getEffects())
 | 
			
		||||
					{
 | 
			
		||||
						b.resetAbnormalTime(b.getTime() + _time);
 | 
			
		||||
						asu.addSkill(b);
 | 
			
		||||
					});
 | 
			
		||||
						if (info.getSkill().canBeDispelled() && _abnormals.contains(info.getSkill().getAbnormalType()))
 | 
			
		||||
						{
 | 
			
		||||
							info.resetAbnormalTime(info.getTime() + _time);
 | 
			
		||||
							asu.addSkill(info);
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
@@ -114,19 +119,25 @@ public class AbnormalTimeChange extends AbstractEffect
 | 
			
		||||
			{
 | 
			
		||||
				if (_abnormals.isEmpty())
 | 
			
		||||
				{
 | 
			
		||||
					effected.getEffectList().getDebuffs().stream().filter(b -> b.getSkill().canBeDispelled()).forEach(b ->
 | 
			
		||||
					for (BuffInfo info : effected.getEffectList().getDebuffs())
 | 
			
		||||
					{
 | 
			
		||||
						b.resetAbnormalTime(b.getAbnormalTime());
 | 
			
		||||
						asu.addSkill(b);
 | 
			
		||||
					});
 | 
			
		||||
						if (info.getSkill().canBeDispelled())
 | 
			
		||||
						{
 | 
			
		||||
							info.resetAbnormalTime(info.getAbnormalTime());
 | 
			
		||||
							asu.addSkill(info);
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				else
 | 
			
		||||
				{
 | 
			
		||||
					effected.getEffectList().getDebuffs().stream().filter(b -> b.getSkill().canBeDispelled() && _abnormals.contains(b.getSkill().getAbnormalType())).forEach(b ->
 | 
			
		||||
					for (BuffInfo info : effected.getEffectList().getDebuffs())
 | 
			
		||||
					{
 | 
			
		||||
						b.resetAbnormalTime(b.getAbnormalTime());
 | 
			
		||||
						asu.addSkill(b);
 | 
			
		||||
					});
 | 
			
		||||
						if (info.getSkill().canBeDispelled() && _abnormals.contains(info.getSkill().getAbnormalType()))
 | 
			
		||||
						{
 | 
			
		||||
							info.resetAbnormalTime(info.getAbnormalTime());
 | 
			
		||||
							asu.addSkill(info);
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
@@ -135,14 +146,13 @@ public class AbnormalTimeChange extends AbstractEffect
 | 
			
		||||
		effected.sendPacket(asu);
 | 
			
		||||
		
 | 
			
		||||
		final ExAbnormalStatusUpdateFromTarget upd = new ExAbnormalStatusUpdateFromTarget(effected);
 | 
			
		||||
		
 | 
			
		||||
		// @formatter:off
 | 
			
		||||
		effected.getStatus().getStatusListener().stream()
 | 
			
		||||
			.filter(Objects::nonNull)
 | 
			
		||||
			.filter(WorldObject::isPlayer)
 | 
			
		||||
			.map(Creature::getActingPlayer)
 | 
			
		||||
			.forEach(upd::sendTo);
 | 
			
		||||
		// @formatter:on
 | 
			
		||||
		for (Creature creature : effected.getStatus().getStatusListener())
 | 
			
		||||
		{
 | 
			
		||||
			if ((creature != null) && creature.isPlayer())
 | 
			
		||||
			{
 | 
			
		||||
				upd.sendTo(creature.getActingPlayer());
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if (effected.isPlayer() && (effected.getTarget() == effected))
 | 
			
		||||
		{
 | 
			
		||||
 
 | 
			
		||||
@@ -52,7 +52,13 @@ public class CallTargetParty extends AbstractEffect
 | 
			
		||||
		final Party party = player.getParty();
 | 
			
		||||
		if (party != null)
 | 
			
		||||
		{
 | 
			
		||||
			party.getMembers().stream().filter(p -> (p != player) && CallPc.checkSummonTargetStatus(p, effector.getActingPlayer())).forEach(p -> p.teleToLocation(player.getLocation(), true));
 | 
			
		||||
			for (PlayerInstance member : party.getMembers())
 | 
			
		||||
			{
 | 
			
		||||
				if ((member != player) && CallPc.checkSummonTargetStatus(member, effector.getActingPlayer()))
 | 
			
		||||
				{
 | 
			
		||||
					member.teleToLocation(player.getLocation(), true);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -173,7 +173,13 @@ public class SummonNpc extends AbstractEffect
 | 
			
		||||
				// If only single instance is allowed, delete previous NPCs.
 | 
			
		||||
				if (_singleInstance)
 | 
			
		||||
				{
 | 
			
		||||
					player.getSummonedNpcs().stream().filter(npc -> npc.getId() == _npcId).forEach(Npc::deleteMe);
 | 
			
		||||
					for (Npc npc : player.getSummonedNpcs())
 | 
			
		||||
					{
 | 
			
		||||
						if (npc.getId() == _npcId)
 | 
			
		||||
						{
 | 
			
		||||
							npc.deleteMe();
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				
 | 
			
		||||
				final Npc npc = spawn.doSpawn(_isSummonSpawn);
 | 
			
		||||
 
 | 
			
		||||
@@ -93,13 +93,19 @@ public class Synergy extends AbstractEffect
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		final int abnormalCount = (int) _optionalSlots.stream().filter(effector::hasAbnormalType).count();
 | 
			
		||||
		int abnormalCount = 0;
 | 
			
		||||
		for (AbnormalType abnormalType : _optionalSlots)
 | 
			
		||||
		{
 | 
			
		||||
			if (effector.hasAbnormalType(abnormalType))
 | 
			
		||||
			{
 | 
			
		||||
				abnormalCount++;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if (abnormalCount >= _minSlot)
 | 
			
		||||
		{
 | 
			
		||||
			final SkillHolder partyBuff = new SkillHolder(_partyBuffSkillId, Math.max(abnormalCount - 1, _skillLevelScaleTo));
 | 
			
		||||
			final SkillHolder partyBuff = new SkillHolder(_partyBuffSkillId, Math.min(abnormalCount - 1, _skillLevelScaleTo));
 | 
			
		||||
			final Skill partyBuffSkill = partyBuff.getSkill();
 | 
			
		||||
			
 | 
			
		||||
			if (partyBuffSkill != null)
 | 
			
		||||
			{
 | 
			
		||||
				final WorldObject target = partyBuffSkill.getTarget(effector, effected, false, false, false);
 | 
			
		||||
 
 | 
			
		||||
@@ -20,6 +20,8 @@ import org.l2jmobius.gameserver.ai.CtrlIntention;
 | 
			
		||||
import org.l2jmobius.gameserver.model.Party;
 | 
			
		||||
import org.l2jmobius.gameserver.model.StatSet;
 | 
			
		||||
import org.l2jmobius.gameserver.model.actor.Creature;
 | 
			
		||||
import org.l2jmobius.gameserver.model.actor.Npc;
 | 
			
		||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
 | 
			
		||||
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
 | 
			
		||||
import org.l2jmobius.gameserver.model.effects.EffectType;
 | 
			
		||||
import org.l2jmobius.gameserver.model.interfaces.ILocational;
 | 
			
		||||
@@ -59,13 +61,24 @@ public class TeleportToNpc extends AbstractEffect
 | 
			
		||||
	@Override
 | 
			
		||||
	public void instant(Creature effector, Creature effected, Skill skill, ItemInstance item)
 | 
			
		||||
	{
 | 
			
		||||
		final ILocational teleLocation = effector.getSummonedNpcs().stream().filter(npc -> npc.getId() == _npcId).findAny().orElse(null);
 | 
			
		||||
		ILocational teleLocation = null;
 | 
			
		||||
		for (Npc npc : effector.getSummonedNpcs())
 | 
			
		||||
		{
 | 
			
		||||
			if (npc.getId() == _npcId)
 | 
			
		||||
			{
 | 
			
		||||
				teleLocation = npc;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if (teleLocation != null)
 | 
			
		||||
		{
 | 
			
		||||
			final Party party = effected.getParty();
 | 
			
		||||
			if (_party && (party != null))
 | 
			
		||||
			{
 | 
			
		||||
				party.getMembers().forEach(p -> teleport(p, teleLocation));
 | 
			
		||||
				for (PlayerInstance member : party.getMembers())
 | 
			
		||||
				{
 | 
			
		||||
					teleport(member, teleLocation);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
 
 | 
			
		||||
@@ -16,8 +16,8 @@
 | 
			
		||||
 */
 | 
			
		||||
package handlers.itemhandlers;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
 | 
			
		||||
import org.l2jmobius.gameserver.enums.ItemSkillType;
 | 
			
		||||
import org.l2jmobius.gameserver.enums.ShotType;
 | 
			
		||||
@@ -60,7 +60,15 @@ public class BeastSoulShot implements IItemHandler
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		final List<Summon> aliveServitor = playable.getServitors().values().stream().filter(s -> !s.isDead()).collect(Collectors.toList());
 | 
			
		||||
		final List<Summon> aliveServitor = new ArrayList<>();
 | 
			
		||||
		for (Summon s : playable.getServitors().values())
 | 
			
		||||
		{
 | 
			
		||||
			if (!s.isDead())
 | 
			
		||||
			{
 | 
			
		||||
				aliveServitor.add(s);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if ((pet == null) && aliveServitor.isEmpty())
 | 
			
		||||
		{
 | 
			
		||||
			activeOwner.sendPacket(SystemMessageId.SOULSHOTS_AND_SPIRITSHOTS_ARE_NOT_AVAILABLE_FOR_A_DEAD_SERVITOR_SAD_ISN_T_IT);
 | 
			
		||||
 
 | 
			
		||||
@@ -16,8 +16,8 @@
 | 
			
		||||
 */
 | 
			
		||||
package handlers.itemhandlers;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
 | 
			
		||||
import org.l2jmobius.gameserver.enums.ItemSkillType;
 | 
			
		||||
import org.l2jmobius.gameserver.enums.ShotType;
 | 
			
		||||
@@ -60,7 +60,15 @@ public class BeastSpiritShot implements IItemHandler
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		final List<Summon> aliveServitor = playable.getServitors().values().stream().filter(s -> !s.isDead()).collect(Collectors.toList());
 | 
			
		||||
		final List<Summon> aliveServitor = new ArrayList<>();
 | 
			
		||||
		for (Summon s : playable.getServitors().values())
 | 
			
		||||
		{
 | 
			
		||||
			if (!s.isDead())
 | 
			
		||||
			{
 | 
			
		||||
				aliveServitor.add(s);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if ((pet == null) && aliveServitor.isEmpty())
 | 
			
		||||
		{
 | 
			
		||||
			activeOwner.sendPacket(SystemMessageId.SOULSHOTS_AND_SPIRITSHOTS_ARE_NOT_AVAILABLE_FOR_A_DEAD_SERVITOR_SAD_ISN_T_IT);
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,7 @@ package handlers.playeractions;
 | 
			
		||||
 | 
			
		||||
import org.l2jmobius.gameserver.handler.IPlayerActionHandler;
 | 
			
		||||
import org.l2jmobius.gameserver.model.ActionDataHolder;
 | 
			
		||||
import org.l2jmobius.gameserver.model.actor.Summon;
 | 
			
		||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
 | 
			
		||||
import org.l2jmobius.gameserver.network.SystemMessageId;
 | 
			
		||||
 | 
			
		||||
@@ -32,7 +33,13 @@ public class ServitorAttack implements IPlayerActionHandler
 | 
			
		||||
	{
 | 
			
		||||
		if (player.hasServitors())
 | 
			
		||||
		{
 | 
			
		||||
			player.getServitors().values().stream().filter(s -> s.canAttack(player.getTarget(), ctrlPressed)).forEach(s -> s.doAttack(player.getTarget()));
 | 
			
		||||
			for (Summon summon : player.getServitors().values())
 | 
			
		||||
			{
 | 
			
		||||
				if (summon.canAttack(player.getTarget(), ctrlPressed))
 | 
			
		||||
				{
 | 
			
		||||
					summon.doAttack(player.getTarget());
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
 
 | 
			
		||||
@@ -19,6 +19,7 @@ package handlers.playeractions;
 | 
			
		||||
import org.l2jmobius.gameserver.ai.CtrlIntention;
 | 
			
		||||
import org.l2jmobius.gameserver.handler.IPlayerActionHandler;
 | 
			
		||||
import org.l2jmobius.gameserver.model.ActionDataHolder;
 | 
			
		||||
import org.l2jmobius.gameserver.model.actor.Summon;
 | 
			
		||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
 | 
			
		||||
import org.l2jmobius.gameserver.network.SystemMessageId;
 | 
			
		||||
 | 
			
		||||
@@ -39,17 +40,20 @@ public class ServitorMove implements IPlayerActionHandler
 | 
			
		||||
		
 | 
			
		||||
		if (player.getTarget() != null)
 | 
			
		||||
		{
 | 
			
		||||
			player.getServitors().values().stream().filter(s -> (s != player.getTarget()) && !s.isMovementDisabled()).forEach(s ->
 | 
			
		||||
			for (Summon summon : player.getServitors().values())
 | 
			
		||||
			{
 | 
			
		||||
				if (s.isBetrayed())
 | 
			
		||||
				if ((summon != player.getTarget()) && !summon.isMovementDisabled())
 | 
			
		||||
				{
 | 
			
		||||
					player.sendPacket(SystemMessageId.YOUR_SERVITOR_IS_UNRESPONSIVE_AND_WILL_NOT_OBEY_ANY_ORDERS);
 | 
			
		||||
					return;
 | 
			
		||||
					if (summon.isBetrayed())
 | 
			
		||||
					{
 | 
			
		||||
						player.sendPacket(SystemMessageId.YOUR_SERVITOR_IS_UNRESPONSIVE_AND_WILL_NOT_OBEY_ANY_ORDERS);
 | 
			
		||||
						return;
 | 
			
		||||
					}
 | 
			
		||||
					
 | 
			
		||||
					summon.setFollowStatus(false);
 | 
			
		||||
					summon.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, player.getTarget().getLocation());
 | 
			
		||||
				}
 | 
			
		||||
				
 | 
			
		||||
				s.setFollowStatus(false);
 | 
			
		||||
				s.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, player.getTarget().getLocation());
 | 
			
		||||
			});
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user