public void updateInstance(List <Actor> list) { List <BasePacket> basePackets = new List <BasePacket>(); List <SubPacket> removeActorSubpackets = new List <SubPacket>(); List <SubPacket> posUpdateSubpackets = new List <SubPacket>(); //Remove missing actors for (int i = 0; i < actorInstanceList.Count; i++) { if (!list.Contains(actorInstanceList[i])) { getActor().queuePacket(RemoveActorPacket.buildPacket(playerActor.actorId, actorInstanceList[i].actorId)); actorInstanceList.RemoveAt(i); } } //Add new actors or move for (int i = 0; i < list.Count; i++) { Actor actor = list[i]; if (actor.actorId == playerActor.actorId) { continue; } if (actorInstanceList.Contains(actor)) { getActor().queuePacket(actor.createPositionUpdatePacket(playerActor.actorId)); } else { getActor().queuePacket(actor.getSpawnPackets(playerActor.actorId, 1)); getActor().queuePacket(actor.getInitPackets(playerActor.actorId)); getActor().queuePacket(actor.getSetEventStatusPackets(playerActor.actorId)); actorInstanceList.Add(actor); if (actor is Npc) { LuaEngine.doActorOnSpawn(getActor(), (Npc)actor); } } } }