public ArrayList CreateArray(RelayInfo info, Mobile from) { ArrayList creaturesName = new ArrayList(); for (int i = 0; i < 13; i++) { TextRelay te = info.GetTextEntry(i); if (te != null) { string str = te.Text; if (str.Length > 0) { str = str.Trim(); Type type = ODBCSpawnerType.GetType(str); if (type != null) { creaturesName.Add(str); } else { from.SendMessage("{0} is not a valid type name.", str); } } } } return(creaturesName); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 2: { m_WayPoint = reader.ReadItem() as WayPoint; goto case 1; } case 1: { m_Group = reader.ReadBool(); goto case 0; } case 0: { m_MinDelay = reader.ReadTimeSpan(); m_MaxDelay = reader.ReadTimeSpan(); m_Count = reader.ReadInt(); m_Team = reader.ReadInt(); m_HomeRange = reader.ReadInt(); m_Running = reader.ReadBool(); TimeSpan ts = TimeSpan.Zero; if (m_Running) { ts = reader.ReadDeltaTime() - DateTime.Now; } int size = reader.ReadInt(); m_CreaturesName = new ArrayList(size); for (int i = 0; i < size; ++i) { string typeName = reader.ReadString(); m_CreaturesName.Add(typeName); if (ODBCSpawnerType.GetType(typeName) == null) { if (m_WarnTimer == null) { m_WarnTimer = new WarnTimer(); } m_WarnTimer.Add(Location, Map, typeName); } } int count = reader.ReadInt(); m_Creatures = new ArrayList(count); for (int i = 0; i < count; ++i) { IEntity e = World.FindEntity(reader.ReadInt()); if (e != null) { m_Creatures.Add(e); } } if (m_Running) { DoTimer(ts); } break; } } }
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 { } } }