From 02d39de7f17680b7f2bdd127f4493253ce95de97 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Mon, 7 Jun 2021 22:13:51 +0000 Subject: [PATCH] Should not have more than one active homunculus. --- .../RequestExActivateHomunculus.java | 27 ++++++++++++++++++- .../RequestExActivateHomunculus.java | 27 ++++++++++++++++++- 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/homunculus/RequestExActivateHomunculus.java b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/homunculus/RequestExActivateHomunculus.java index 104976d8a2..b48b902112 100644 --- a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/homunculus/RequestExActivateHomunculus.java +++ b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/homunculus/RequestExActivateHomunculus.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.network.clientpackets.homunculus; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.homunculus.Homunculus; @@ -49,7 +50,8 @@ public class RequestExActivateHomunculus implements IClientIncomingPacket return; } - if (activeChar.getHomunculusList().size() == 0) + final int size = activeChar.getHomunculusList().size(); + if (size == 0) { return; } @@ -60,6 +62,29 @@ public class RequestExActivateHomunculus implements IClientIncomingPacket return; } + for (int i = 0; i < Config.MAX_HOMUNCULUS_COUNT; i++) + { + if (size <= i) + { + break; + } + + final Homunculus homu = activeChar.getHomunculusList().get(i); + if (homu == null) + { + continue; + } + + if (homu.isActive()) + { + homu.setActive(false); + activeChar.getHomunculusList().update(homu); + activeChar.getHomunculusList().refreshStats(true); + activeChar.sendPacket(new ExShowHomunculusList(activeChar)); + activeChar.sendPacket(new ExActivateHomunculusResult(false)); + } + } + if (_activate) { if (!homunculus.isActive()) diff --git a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/homunculus/RequestExActivateHomunculus.java b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/homunculus/RequestExActivateHomunculus.java index 104976d8a2..b48b902112 100644 --- a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/homunculus/RequestExActivateHomunculus.java +++ b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/homunculus/RequestExActivateHomunculus.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.network.clientpackets.homunculus; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.homunculus.Homunculus; @@ -49,7 +50,8 @@ public class RequestExActivateHomunculus implements IClientIncomingPacket return; } - if (activeChar.getHomunculusList().size() == 0) + final int size = activeChar.getHomunculusList().size(); + if (size == 0) { return; } @@ -60,6 +62,29 @@ public class RequestExActivateHomunculus implements IClientIncomingPacket return; } + for (int i = 0; i < Config.MAX_HOMUNCULUS_COUNT; i++) + { + if (size <= i) + { + break; + } + + final Homunculus homu = activeChar.getHomunculusList().get(i); + if (homu == null) + { + continue; + } + + if (homu.isActive()) + { + homu.setActive(false); + activeChar.getHomunculusList().update(homu); + activeChar.getHomunculusList().refreshStats(true); + activeChar.sendPacket(new ExShowHomunculusList(activeChar)); + activeChar.sendPacket(new ExActivateHomunculusResult(false)); + } + } + if (_activate) { if (!homunculus.isActive())