forked from MagicBane/Server
Minions now use copyonwrite collection. Slot agnostic.
This commit is contained in:
@@ -58,10 +58,10 @@ public class MinionTrainingMsgHandler extends AbstractClientMsgHandler {
|
||||
|
||||
Mob toRemove = Mob.getFromCache(minionMsg.getUUID());
|
||||
|
||||
if (!npc.siegeMinionMap.containsKey(toRemove))
|
||||
if (!npc.minions.contains(toRemove.getObjectUUID()))
|
||||
return true;
|
||||
|
||||
npc.siegeMinionMap.remove(toRemove);
|
||||
npc.minions.remove(toRemove.getObjectUUID());
|
||||
|
||||
WorldGrid.RemoveWorldObject(toRemove);
|
||||
|
||||
@@ -112,7 +112,7 @@ public class MinionTrainingMsgHandler extends AbstractClientMsgHandler {
|
||||
if (npc.getContractID() == 842)
|
||||
maxSlots = 1;
|
||||
|
||||
if (npc.siegeMinionMap.size() == maxSlots)
|
||||
if (npc.minions.size() == maxSlots)
|
||||
return true;
|
||||
|
||||
int mobBase;
|
||||
@@ -179,13 +179,13 @@ public class MinionTrainingMsgHandler extends AbstractClientMsgHandler {
|
||||
|
||||
Mob toRemove = Mob.getFromCache(minionMsg.getUUID());
|
||||
|
||||
if (!npc.getSiegeMinionMap().containsKey(toRemove))
|
||||
if (!npc.minions.contains(toRemove.getObjectUUID()))
|
||||
return true;
|
||||
|
||||
if (!DbManager.MobQueries.REMOVE_FROM_GUARDS(npc.getObjectUUID(), toRemove.firstName))
|
||||
return true;
|
||||
|
||||
npc.getSiegeMinionMap().remove(toRemove);
|
||||
npc.minions.remove(toRemove.getObjectUUID());
|
||||
|
||||
WorldGrid.RemoveWorldObject(toRemove);
|
||||
|
||||
@@ -258,7 +258,7 @@ public class MinionTrainingMsgHandler extends AbstractClientMsgHandler {
|
||||
break;
|
||||
}
|
||||
|
||||
if (npc.getSiegeMinionMap().size() == maxSlots)
|
||||
if (npc.minions.size() == maxSlots)
|
||||
return true;
|
||||
|
||||
int mobBase = npc.getMobBaseID();
|
||||
|
||||
@@ -27,7 +27,6 @@ import org.pmw.tinylog.Logger;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -343,14 +342,17 @@ public class ManageNPCMsg extends ClientNetMsg {
|
||||
writer.putInt(0); //runemaster list
|
||||
|
||||
//artillery captain list
|
||||
ConcurrentHashMap<Mob, Integer> siegeMinions = npc.siegeMinionMap;
|
||||
writer.putInt(1 + siegeMinions.size());
|
||||
|
||||
writer.putInt(1 + npc.minions.size());
|
||||
serializeBulwarkList(writer, 1); //Trebuchet
|
||||
//serializeBulwarkList(writer, 2); //Ballista
|
||||
|
||||
if (siegeMinions != null && siegeMinions.size() > 0)
|
||||
if (npc.minions != null && npc.minions.size() > 0)
|
||||
|
||||
for (Integer minionUUID : npc.minions) {
|
||||
|
||||
Mob mob = Mob.getMob(minionUUID);
|
||||
|
||||
for (Mob mob : siegeMinions.keySet()) {
|
||||
this.unknown83 = mob.getObjectUUID();
|
||||
writer.putInt(2);
|
||||
writer.putInt(mob.getObjectType().ordinal());
|
||||
@@ -666,14 +668,15 @@ public class ManageNPCMsg extends ClientNetMsg {
|
||||
writer.putInt(0); //runemaster list
|
||||
|
||||
//artillery captain list
|
||||
ConcurrentHashMap<Mob, Integer> siegeMinions = mobA.getSiegeMinionMap();
|
||||
|
||||
writer.putInt(siegeMinions.size() + 1);
|
||||
writer.putInt(mobA.minions.size() + 1);
|
||||
|
||||
serializeGuardList(writer, mobA.getContract().getContractID(), mobA); //Guard
|
||||
|
||||
if (siegeMinions != null && siegeMinions.size() > 0)
|
||||
if (mobA.minions != null && mobA.minions.size() > 0)
|
||||
|
||||
for (Mob mob : siegeMinions.keySet()) {
|
||||
for (Integer minionUUID : mobA.minions) {
|
||||
Mob mob = Mob.getMob(minionUUID);
|
||||
this.unknown83 = mob.getObjectUUID();
|
||||
writer.putInt(2);
|
||||
writer.putInt(mob.getObjectType().ordinal());
|
||||
|
||||
Reference in New Issue
Block a user