public static void SpawnEntry(MegaSpawner megaSpawner, int index) { if (!(bool)megaSpawner.ActivatedList[index]) { return; } Type spawnType = ScriptCompiler.FindTypeByName((string)megaSpawner.EntryList[index]); if (spawnType != null) { object check = null; try { object o = Activator.CreateInstance(spawnType); check = o; if (o is Item) { Item item = (Item)o; if (item.Stackable) { int min = (int)megaSpawner.MinStackAmountList[index]; int max = (int)megaSpawner.MaxStackAmountList[index]; int stack = Utility.Random(min, (max - min)); item.Amount = stack; } if (megaSpawner.RootParent is Container) { ((Container)megaSpawner.RootParent).DropItem(item); } else if (megaSpawner.ContainerSpawn != null) { megaSpawner.ContainerSpawn.DropItem(item); } else { item.MoveToWorld(GetSpawnPosition(megaSpawner), megaSpawner.Map); } item.Movable = (bool)megaSpawner.MovableList[index]; megaSpawner.OverrideSpawnedEntries.Add(item); megaSpawner.OverrideLastMovedList.Add(item.LastMoved); AddToRespawnEntries(megaSpawner, item); } else if (o is Mobile) { Mobile m = (Mobile)o; Map map = megaSpawner.Map; Point3D loc = (m is BaseVendor ? megaSpawner.Location : GetSpawnPosition(megaSpawner)); m.Map = map; m.Location = loc; if (m is BaseCreature) { BaseCreature creature = (BaseCreature)m; creature.Location = GetSpawnPosition(megaSpawner); creature.Home = megaSpawner.Location; creature.RangeHome = megaSpawner.OverrideWalkRange; creature.CantWalk = !(bool)megaSpawner.MovableList[index]; // Genova: customização no sistema para traduzir nome da criatura. TraducaoDeNomesMobiles.AplicarAlteracoesCriatura(creature, spawnType.ToString(), creature.Title); } megaSpawner.OverrideSpawnedEntries.Add(m); megaSpawner.OverrideLastMovedList.Add(DateTime.Now); AddToRespawnEntries(megaSpawner, m); } megaSpawner.CheckAddItem(index, o); } catch { if (check is Item) { ((Item)check).Delete(); } else if (check is Mobile) { ((Mobile)check).Delete(); } } } }