Should not have more than one active homunculus.

This commit is contained in:
MobiusDevelopment 2021-06-07 22:13:51 +00:00
parent a8aa70be4b
commit 02d39de7f1
2 changed files with 52 additions and 2 deletions

View File

@ -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())

View File

@ -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())