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(); } } } }
public void Spawn(int index) { Map map = Map; int i = 0; if (map == null || map == Map.Internal || m_CreaturesName.Count == 0 || index >= m_CreaturesName.Count) { return; } Defrag(); if (m_Creatures.Count >= m_Count) { return; } Type type = ODBCSpawnerType.GetType((string)m_CreaturesName[index]); if (type != null) { try { object o = Activator.CreateInstance(type); string objectName = type.ToString(); if (o is Mobile) { Mobile m = (Mobile)o; m_Creatures.Add(m); InvalidateProperties(); Point3D loc = (m is BaseVendor ? this.Location : GetSpawnPosition()); m.MoveToWorld(loc, map); if (m is BaseCreature) { BaseCreature c = (BaseCreature)m; string objectTitle = c.Title; if (objectTitle == null || objectTitle.Length == 0) { objectTitle = "null"; } c.RangeHome = m_HomeRange; c.CurrentWayPoint = m_WayPoint; if (m_Team > 0) { c.Team = m_Team; } c.Home = this.Location; // Genova: customização no sistema para traduzir nome da criatura. TraducaoDeNomesMobiles.AplicarAlteracoesCriatura(c, objectName, objectTitle, map, this.ChanceToParagon()); } } else if (o is Item) { Item item = (Item)o; m_Creatures.Add(item); InvalidateProperties(); item.MoveToWorld(GetSpawnPosition(), map); } } catch { } } }