public override void Deserialize(GenericReader reader) { base.Deserialize(reader); reader.ReadInt(); GuardImmune = reader.ReadBool(); m_SpawnRange = reader.ReadInt(); m_WalkingRange = reader.ReadInt(); WayPoint = reader.ReadItem() as WayPoint; m_Group = reader.ReadBool(); m_MinDelay = reader.ReadTimeSpan(); m_MaxDelay = reader.ReadTimeSpan(); m_MaxCount = 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.UtcNow; } int size = reader.ReadInt(); m_SpawnObjects = new List <SpawnObject>(size); for (int i = 0; i < size; ++i) { SpawnObject so = new SpawnObject(reader); if (AddSpawnObject(so)) { string typeName = ParseType(so.SpawnName); if (ScriptCompiler.FindTypeByName(typeName) == null) { if (m_WarnTimer == null) { m_WarnTimer = new WarnTimer(); } m_WarnTimer.Add(Location, Map, typeName); } } } if (m_Running) { DoTimer(ts); } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); m_Container = reader.ReadItem() as Container; m_MinDelay = reader.ReadTimeSpan(); m_MaxDelay = reader.ReadTimeSpan(); m_Count = reader.ReadInt(); m_Running = reader.ReadBool(); if (m_Running) { TimeSpan delay = reader.ReadTimeSpan(); DoTimer(delay); } int size = reader.ReadInt(); m_ItemsName = new ArrayList(size); for (int i = 0; i < size; ++i) { string typeName = reader.ReadString(); m_ItemsName.Add(typeName); if (ChestItemSpawnerType.GetType(typeName) == null) { if (m_WarnTimer == null) { m_WarnTimer = new WarnTimer(); } m_WarnTimer.Add(Location, Map, typeName); } } int count = reader.ReadInt(); m_Items = new ArrayList(count); for (int i = 0; i < count; ++i) { IEntity e = World.FindEntity(reader.ReadInt()); if (e != null) { m_Items.Add(e); } } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); m_Container = reader.ReadItem() as Container; m_MinDelay = reader.ReadTimeSpan(); m_MaxDelay = reader.ReadTimeSpan(); m_Count = reader.ReadInt(); m_Running = reader.ReadBool(); if ( m_Running ) { TimeSpan delay = reader.ReadTimeSpan(); DoTimer( delay ); } int size = reader.ReadInt(); m_ItemsName = new ArrayList( size ); for ( int i = 0; i < size; ++i ) { string typeName = reader.ReadString(); m_ItemsName.Add( typeName ); if ( ChestItemSpawnerType.GetType( typeName ) == null ) { if ( m_WarnTimer == null ) m_WarnTimer = new WarnTimer(); m_WarnTimer.Add( Location, Map, typeName ); } } int count = reader.ReadInt(); m_Items = new ArrayList( count ); for ( int i = 0; i < count; ++i ) { IEntity e = World.FindEntity( reader.ReadInt() ); if ( e != null ) m_Items.Add( e ); } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); m_Creatures = new Dictionary<IEntity, SpawnerEntry>(); if ( version < 7 ) m_Entries = new List<SpawnerEntry>(); switch ( version ) { case 7: { int size = reader.ReadInt(); m_Entries = new List<SpawnerEntry>( size ); for ( int i = 0; i < size; ++i ) m_Entries.Add( new SpawnerEntry( this, reader ) ); goto case 4; //Skip the other crap } case 6: { int size = reader.ReadInt(); bool addentries = m_Entries.Count == 0; for ( int i = 0; i < size; ++i ) if ( addentries ) m_Entries.Add( new SpawnerEntry( String.Empty, 100, reader.ReadInt() ) ); else m_Entries[i].CreaturesMaxCount = reader.ReadInt(); goto case 5; } case 5: { int size = reader.ReadInt(); bool addentries = m_Entries.Count == 0; for ( int i = 0; i < size; ++i ) if ( addentries ) m_Entries.Add( new SpawnerEntry( String.Empty, reader.ReadInt(), 1 ) ); else m_Entries[i].CreaturesProbability = reader.ReadInt(); goto case 4; } case 4: { m_WalkingRange = reader.ReadInt(); goto case 3; } case 3: 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; if ( version < 7 ) { int size = reader.ReadInt(); bool addentries = m_Entries.Count == 0; for ( int i = 0; i < size; ++i ) { string typeName = reader.ReadString(); if ( addentries ) m_Entries.Add( new SpawnerEntry( typeName, 100, 1 ) ); else m_Entries[i].CreaturesName = typeName; if ( SpawnerType.GetType( typeName ) == null ) { if ( m_WarnTimer == null ) m_WarnTimer = new WarnTimer(); m_WarnTimer.Add( Location, Map, typeName ); } } int count = reader.ReadInt(); for ( int i = 0; i < count; ++i ) { IEntity e = reader.ReadEntity(); if ( e != null ) { if ( e is BaseCreature ) ((BaseCreature)e).RemoveIfUntamed = true; if ( e is Item ) ((Item)e).Spawner = this; else if ( e is Mobile ) ((Mobile)e).Spawner = this; for ( int j = 0;j < m_Entries.Count; j++ ) { if ( SpawnerType.GetType( m_Entries[j].CreaturesName ) == e.GetType() ) { m_Entries[j].Creatures.Add( e ); m_Creatures.Add( e, m_Entries[j] ); break; } } } } } DoTimer( ts ); break; } } if ( version < 4 ) m_WalkingRange = m_HomeRange; }
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 ( SpawnerType.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.Instance.FindEntity( reader.ReadInt() ); if ( e != null ) { m_Creatures.Add( e ); } } if ( m_Running ) { DoTimer( ts ); } break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 3: { m_SpawnRange = reader.ReadInt(); // ---------------------------------------- m_SpawnID = reader.ReadInt(); // ---------------------------------------- goto case 2; } 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 (SpawnerType.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; } } m_SpawnRange = (version <= 2 ? m_HomeRange : m_SpawnRange); //fix SpawnRange until first Deserialize of ver 3 }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 11: { m_LootPack = reader.ReadItem(); goto case 10; } case 10: { m_DynamicCopy = reader.ReadBool(); goto case 9; } case 9: { m_TemplateMobile = reader.ReadMobile(); m_TemplateItem = reader.ReadItem(); m_TemplateEnabled = reader.ReadBool(); goto case 8; } case 8: { m_MobVendorInvul = (BOOL)reader.ReadInt(); goto case 7; } case 7: { int dummy = 0; bool b = reader.ReadBool(); dummy = reader.ReadInt(); dummy = reader.ReadInt(); dummy = reader.ReadInt(); dummy = reader.ReadInt(); dummy = reader.ReadInt(); dummy = reader.ReadInt(); dummy = reader.ReadInt(); goto case 6; } case 6: { int dummy = 0; string s = reader.ReadString(); dummy = reader.ReadInt(); goto case 5; } case 5: { m_NavDest = (NavDestinations)reader.ReadInt(); goto case 4; } case 4: { m_MobDirection = (Direction)reader.ReadInt(); goto case 3; } case 3: { // obsolete: m_FreezeDecay bool dmy = reader.ReadBool(); goto case 2; } 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 ( SpawnerType.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 override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 6: { m_MobilesSeekHome = reader.ReadBool(); m_UsesSpawnerHome = reader.ReadBool(); goto case 5; } case 5: { m_SpawnArea = reader.ReadRect2D(); m_UsesSpawnerHome = reader.ReadBool(); goto case 4; } case 4: { m_WalkingRange = reader.ReadInt(); goto case 3; } case 3: 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.UtcNow; } int size = reader.ReadInt(); m_SpawnNames = new List <string>(size); for (int i = 0; i < size; ++i) { string creatureString = reader.ReadString(); m_SpawnNames.Add(creatureString); string typeName = ParseType(creatureString); if (ScriptCompiler.FindTypeByName(typeName) == null) { if (m_WarnTimer == null) { m_WarnTimer = new WarnTimer(); } m_WarnTimer.Add(Location, Map, typeName); } } int count = reader.ReadInt(); m_Spawned = new List <ISpawnable>(count); for (int i = 0; i < count; ++i) { ISpawnable e = World.FindEntity(reader.ReadInt()) as ISpawnable; if (e != null) { e.Spawner = this; m_Spawned.Add(e); } } if (m_Running) { DoTimer(ts); } break; } } if (version < 3 && Weight == 0) { Weight = -1; } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 4: { m_WalkingRange = reader.ReadInt(); m_SpawnID = reader.ReadInt(); m_CountA = reader.ReadInt(); m_CountB = reader.ReadInt(); m_CountC = reader.ReadInt(); m_CountD = reader.ReadInt(); m_CountE = reader.ReadInt(); goto case 3; } case 3: 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 List<string>(size); for (int i = 0; i < size; ++i) { string creatureString = reader.ReadString(); m_CreaturesName.Add(creatureString); string typeName = ParseType(creatureString); if (ScriptCompiler.FindTypeByName(typeName) == null) { if (m_WarnTimer == null) m_WarnTimer = new WarnTimer(); m_WarnTimer.Add(Location, Map, typeName); } } int sizeA = reader.ReadInt(); m_CreaturesNameA = new List<string>(sizeA); for (int i = 0; i < sizeA; ++i) { string creatureString = reader.ReadString(); m_CreaturesNameA.Add(creatureString); string typeName = ParseType(creatureString); if (ScriptCompiler.FindTypeByName(typeName) == null) { if (m_WarnTimer == null) m_WarnTimer = new WarnTimer(); m_WarnTimer.Add(Location, Map, typeName); } } int sizeB = reader.ReadInt(); m_CreaturesNameB = new List<string>(sizeB); for (int i = 0; i < sizeB; ++i) { string creatureString = reader.ReadString(); m_CreaturesNameB.Add(creatureString); string typeName = ParseType(creatureString); if (ScriptCompiler.FindTypeByName(typeName) == null) { if (m_WarnTimer == null) m_WarnTimer = new WarnTimer(); m_WarnTimer.Add(Location, Map, typeName); } } int sizeC = reader.ReadInt(); m_CreaturesNameC = new List<string>(sizeC); for (int i = 0; i < sizeC; ++i) { string creatureString = reader.ReadString(); m_CreaturesNameC.Add(creatureString); string typeName = ParseType(creatureString); if (ScriptCompiler.FindTypeByName(typeName) == null) { if (m_WarnTimer == null) m_WarnTimer = new WarnTimer(); m_WarnTimer.Add(Location, Map, typeName); } } int sizeD = reader.ReadInt(); m_CreaturesNameD = new List<string>(sizeD); for (int i = 0; i < sizeD; ++i) { string creatureString = reader.ReadString(); m_CreaturesNameD.Add(creatureString); string typeName = ParseType(creatureString); if (ScriptCompiler.FindTypeByName(typeName) == null) { if (m_WarnTimer == null) m_WarnTimer = new WarnTimer(); m_WarnTimer.Add(Location, Map, typeName); } } int sizeE = reader.ReadInt(); m_CreaturesNameE = new List<string>(sizeE); for (int i = 0; i < sizeE; ++i) { string creatureString = reader.ReadString(); m_CreaturesNameE.Add(creatureString); string typeName = ParseType(creatureString); if (ScriptCompiler.FindTypeByName(typeName) == null) { if (m_WarnTimer == null) m_WarnTimer = new WarnTimer(); m_WarnTimer.Add(Location, Map, typeName); } } int count = reader.ReadInt(); m_Creatures = new List<IEntity>(count); for (int i = 0; i < count; ++i) { IEntity e = World.FindEntity(reader.ReadInt()); if (e != null) m_Creatures.Add(e); } int countA = reader.ReadInt(); m_CreaturesA = new List<IEntity>(countA); for (int i = 0; i < countA; ++i) { IEntity e = World.FindEntity(reader.ReadInt()); if (e != null) m_CreaturesA.Add(e); } int countB = reader.ReadInt(); m_CreaturesB = new List<IEntity>(countB); for (int i = 0; i < countB; ++i) { IEntity e = World.FindEntity(reader.ReadInt()); if (e != null) m_CreaturesB.Add(e); } int countC = reader.ReadInt(); m_CreaturesC = new List<IEntity>(countC); for (int i = 0; i < countC; ++i) { IEntity e = World.FindEntity(reader.ReadInt()); if (e != null) m_CreaturesC.Add(e); } int countD = reader.ReadInt(); m_CreaturesD = new List<IEntity>(countD); for (int i = 0; i < countD; ++i) { IEntity e = World.FindEntity(reader.ReadInt()); if (e != null) m_CreaturesD.Add(e); } int countE = reader.ReadInt(); m_CreaturesE = new List<IEntity>(countE); for (int i = 0; i < countE; ++i) { IEntity e = World.FindEntity(reader.ReadInt()); if (e != null) m_CreaturesE.Add(e); } if (m_Running) DoTimer(ts); break; } } if (version < 3 && Weight == 0) Weight = -1; }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch (version) { case 1: { m_Unlocked=reader.ReadBool(); goto case 0; } case 0: { m_MinDelay = reader.ReadTimeSpan(); m_MaxDelay = reader.ReadTimeSpan(); m_Count = reader.ReadInt(); m_Running = reader.ReadBool(); break; } } if ( m_Running ) { TimeSpan delay = reader.ReadTimeSpan(); DoTimer( delay ); } if(m_Unlocked) { Locked=false; TrapType=TrapType.None; } int size = reader.ReadInt(); m_ItemsName = new List<string>( size ); for ( int i = 0; i < size; ++i ) { string typeName = reader.ReadString(); m_ItemsName.Add( typeName ); if ( ItemSpawnerType.GetType( typeName ) == null ) { if ( m_WarnTimer == null ) m_WarnTimer = new WarnTimer(); m_WarnTimer.Add( Location, Map, typeName ); } } int count = reader.ReadInt(); m_Items = new ArrayList( count ); for ( int i = 0; i < count; ++i ) { IEntity e = World.FindEntity( reader.ReadInt() ); if ( e != null ) m_Items.Add( e ); } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); m_MinDelay = reader.ReadTimeSpan(); m_MaxDelay = reader.ReadTimeSpan(); m_Count = 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 (SpawnerType.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); } } m_Farmer = reader.ReadMobile(); if (m_Running) { DoTimer(ts); } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 4: goto case 3; case 3: m_sstSpawnType = (SpecialSpawnType)reader.ReadInt(); goto case 2; case 2: m_bTryFlip = reader.ReadBool(); goto case 1; case 1: m_bIgnoreWorldSpawn = reader.ReadBool(); goto case 0; case 0: m_alVisibilityLevel = (AccessLevel)reader.ReadInt(); m_bUseMaxAmount = reader.ReadBool(); m_WayPoint = reader.ReadItem() as WayPoint; m_Group = reader.ReadBool(); m_MinDelay = reader.ReadTimeSpan(); m_MaxDelay = reader.ReadTimeSpan(); m_MaxAmount = 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_alSpawnEntries = new List<EclSpawnEntry>(size); for (int i = 0; i < size; i++) { if (version < 4) reader.ReadInt(); string typeName = reader.ReadString(); int amount = reader.ReadInt(); // Check the type if (ESpawner.GetType(typeName) == null) { if (m_WarnTimer == null) m_WarnTimer = new WarnTimer(); m_WarnTimer.Add(this.GetWorldLocation(), Map, typeName); } int count = reader.ReadInt(); ArrayList alSpawnObjects = new ArrayList(count); for (int a = 0; a < count; a++) { IEntity e = World.FindEntity(reader.ReadInt()); if (e is Item) ((Item)e).Spawner = this; else if (e is Mobile) ((Mobile)e).Spawner = this; if (e != null) alSpawnObjects.Add(e); } m_alSpawnEntries.Add(new EclSpawnEntry(typeName, alSpawnObjects, amount)); } if (m_Running) DoTimer(ts); break; } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 1: { m_Unlocked = reader.ReadBool(); goto case 0; } case 0: { m_MinDelay = reader.ReadTimeSpan(); m_MaxDelay = reader.ReadTimeSpan(); m_Count = reader.ReadInt(); m_Running = reader.ReadBool(); break; } } if (m_Running) { TimeSpan delay = reader.ReadTimeSpan(); DoTimer(delay); } if (m_Unlocked) { Locked = false; TrapType = TrapType.None; } int size = reader.ReadInt(); m_ItemsName = new List <string>(size); for (int i = 0; i < size; ++i) { string typeName = reader.ReadString(); m_ItemsName.Add(typeName); if (ItemSpawnerType.GetType(typeName) == null) { if (m_WarnTimer == null) { m_WarnTimer = new WarnTimer(); } m_WarnTimer.Add(Location, Map, typeName); } } int count = reader.ReadInt(); m_Items = new ArrayList(count); for (int i = 0; i < count; ++i) { IEntity e = World.FindEntity(reader.ReadInt()); if (e != null) { m_Items.Add(e); } } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 3: { int size = reader.ReadInt(); m_CreaturesProbability = new ArrayList( size ); for (int i = 0; i < size; ++i) m_CreaturesProbability.Add(reader.ReadInt()); goto case 2; } 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 = ConvertTypes( reader.ReadString() ); m_CreaturesName.Add( typeName ); if ( SpawnerType.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 ) { BaseCreature c = e as BaseCreature; if ( c != null ) { c.Spawner = this; c.RemoveIfUntamed = true; } m_Creatures.Add( e ); } } //Create probability list in case the spawner version is less than 3 if ( m_CreaturesProbability == null || m_CreaturesProbability.Count < m_CreaturesName.Count ) { m_CreaturesProbability = new ArrayList( m_CreaturesName.Count ); for ( int i = 0; i < m_CreaturesName.Count; i++ ) m_CreaturesProbability.Add( SpawnerGump.DEFAULT_PROBABILTY ); } if ( m_Running ) DoTimer( ts ); break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 3: { m_SpawnRange = reader.ReadInt(); m_RelHomeRange = reader.ReadBool(); goto case 2; } 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(); /* * if ( typeName == "JackRabit" ) * typeName = "JackRabbit"; * else if ( typeName == "Rabit" ) * typeName = "Rabbit"; * else if ( typeName.ToLower() == "barkeeper" ) * typeName = "Tavernkeeper"; */ m_CreaturesName.Add(typeName); if (SpawnerType.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 override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 4: { m_WalkingRange = reader.ReadInt(); goto case 3; } case 3: 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_SpawnNames = new List<string>(size); for (int i = 0; i < size; ++i) { string creatureString = reader.ReadString(); m_SpawnNames.Add(creatureString); string typeName = ParseType(creatureString); if (ScriptCompiler.FindTypeByName(typeName) == null) { if (m_WarnTimer == null) m_WarnTimer = new WarnTimer(); m_WarnTimer.Add(Location, Map, typeName); } } int count = reader.ReadInt(); m_Spawned = new List<ISpawnable>(count); for (int i = 0; i < count; ++i) { ISpawnable e = World.FindEntity(reader.ReadInt()) as ISpawnable; if (e != null) { e.Spawner = this; m_Spawned.Add(e); } } if (m_Running) DoTimer(ts); break; } } if (version < 3 && Weight == 0) Weight = -1; }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 4: { m_WalkingRange = reader.ReadInt(); goto case 3; } case 3: 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 List <string>(size); for (int i = 0; i < size; ++i) { string typeName = reader.ReadString(); m_CreaturesName.Add(typeName); if (SpawnerType.GetType(typeName) == null) { if (m_WarnTimer == null) { m_WarnTimer = new WarnTimer(); } m_WarnTimer.Add(Location, Map, typeName); } } int count = reader.ReadInt(); m_Creatures = new List <IEntity>(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; } } if (version < 3 && Weight == 0) { Weight = -1; } }
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 (SpawnerType.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; } } for (int i = 0; i < m_CreaturesName.Count; i++) { Type type = SpawnerType.GetType((string)m_CreaturesName[i]); Item item = Activator.CreateInstance(type) as Item; if (item is StealableArtifact || item is StealableContainerArtifact || item is StealableLightArtifact || item is StealableLongswordArtifact || item is StealablePlateGlovesArtifact || item is StealableWarHammerArtifact || item is StealableExecutionersAxeArtifact || item is StealableFoodArtifact) { item.Delete(); this.Delete(); } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 7: { GuardImmune = reader.ReadBool(); goto case 6; } case 6: { m_SpawnRange = reader.ReadInt(); goto case 5; } case 5: case 4: { m_WalkingRange = reader.ReadInt(); goto case 3; } case 3: 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_MaxCount = 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.UtcNow; } int size = reader.ReadInt(); m_SpawnObjects = new List <SpawnObject>(size); for (int i = 0; i < size; ++i) { if (version > 4) { SpawnObject so = new SpawnObject(reader); if (AddSpawnObject(so)) { string typeName = ParseType(so.SpawnName); if (ScriptCompiler.FindTypeByName(typeName) == null) { if (m_WarnTimer == null) { m_WarnTimer = new WarnTimer(); } m_WarnTimer.Add(Location, Map, typeName); } } } else { string creatureString = reader.ReadString(); AddSpawnObject(new SpawnObject(creatureString)); string typeName = ParseType(creatureString); if (ScriptCompiler.FindTypeByName(typeName) == null) { if (m_WarnTimer == null) { m_WarnTimer = new WarnTimer(); } m_WarnTimer.Add(Location, Map, typeName); } } } if (version < 5) { int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { ISpawnable e = World.FindEntity(reader.ReadInt()) as ISpawnable; if (e != null) { e.Delete(); // lets make this easy } } } if (m_Running) { DoTimer(ts); } break; } } if (version < 3 && Weight == 0) { Weight = -1; } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); m_Spawned = new Dictionary <ISpawnable, SpawnerEntry>(); if (version < 7) { m_Entries = new List <SpawnerEntry>(); } switch (version) { case 7: { int size = reader.ReadInt(); m_Entries = new List <SpawnerEntry>(size); for (int i = 0; i < size; ++i) { m_Entries.Add(new SpawnerEntry(this, reader)); } goto case 4; //Skip the other crap } case 6: { int size = reader.ReadInt(); bool addentries = m_Entries.Count == 0; for (int i = 0; i < size; ++i) { if (addentries) { m_Entries.Add(new SpawnerEntry(String.Empty, 100, reader.ReadInt())); } else { m_Entries[i].SpawnedMaxCount = reader.ReadInt(); } } goto case 5; } case 5: { int size = reader.ReadInt(); bool addentries = m_Entries.Count == 0; for (int i = 0; i < size; ++i) { if (addentries) { m_Entries.Add(new SpawnerEntry(String.Empty, reader.ReadInt(), 1)); } else { m_Entries[i].SpawnedProbability = reader.ReadInt(); } } goto case 4; } case 4: { m_WalkingRange = reader.ReadInt(); goto case 3; } case 3: 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.UtcNow; } if (version < 7) { int size = reader.ReadInt(); bool addentries = m_Entries.Count == 0; for (int i = 0; i < size; ++i) { string typeName = reader.ReadString(); if (addentries) { m_Entries.Add(new SpawnerEntry(typeName, 100, 1)); } else { m_Entries[i].SpawnedName = typeName; } if (SpawnerType.GetType(typeName) == null) { if (m_WarnTimer == null) { m_WarnTimer = new WarnTimer(); } m_WarnTimer.Add(Location, Map, typeName); } } int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { ISpawnable e = reader.ReadEntity() as ISpawnable; if (e != null) { if (e is BaseCreature) { ((BaseCreature)e).RemoveIfUntamed = true; } e.Spawner = this; for (int j = 0; j < m_Entries.Count; j++) { if (SpawnerType.GetType(m_Entries[j].SpawnedName) == e.GetType()) { m_Entries[j].Spawned.Add(e); m_Spawned.Add(e, m_Entries[j]); break; } } } } } DoTimer(ts); break; } } if (version < 4) { m_WalkingRange = m_HomeRange; } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 3: { m_SpawnRange = reader.ReadInt(); m_SpawnID = reader.ReadInt(); m_DeSpawn = reader.ReadInt(); m_PlayerRangeSensitive = reader.ReadInt(); m_SubCountA = reader.ReadInt(); m_SubCountB = reader.ReadInt(); m_SubCountC = reader.ReadInt(); m_SubCountD = reader.ReadInt(); m_SubCountE = reader.ReadInt(); goto case 2; } 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 ( SpawnerType.GetType( typeName ) == null ) { if ( m_WarnTimer == null ) m_WarnTimer = new WarnTimer(); m_WarnTimer.Add( Location, Map, typeName ); } } int sizeA = reader.ReadInt(); m_SubSpawnerA = new ArrayList( sizeA ); for ( int i = 0; i < sizeA; ++i ) { string typeNameA = reader.ReadString(); m_SubSpawnerA.Add( typeNameA ); if ( SpawnerType.GetType( typeNameA ) == null ) { if ( m_WarnTimer == null ) m_WarnTimer = new WarnTimer(); m_WarnTimer.Add( Location, Map, typeNameA ); } } int sizeB = reader.ReadInt(); m_SubSpawnerB = new ArrayList( sizeB ); for ( int i = 0; i < sizeB; ++i ) { string typeNameB = reader.ReadString(); m_SubSpawnerB.Add( typeNameB ); if ( SpawnerType.GetType( typeNameB ) == null ) { if ( m_WarnTimer == null ) m_WarnTimer = new WarnTimer(); m_WarnTimer.Add( Location, Map, typeNameB ); } } int sizeC = reader.ReadInt(); m_SubSpawnerC = new ArrayList( sizeC ); for ( int i = 0; i < sizeC; ++i ) { string typeNameC = reader.ReadString(); m_SubSpawnerC.Add( typeNameC ); if ( SpawnerType.GetType( typeNameC ) == null ) { if ( m_WarnTimer == null ) m_WarnTimer = new WarnTimer(); m_WarnTimer.Add( Location, Map, typeNameC ); } } int sizeD = reader.ReadInt(); m_SubSpawnerD = new ArrayList( sizeD ); for ( int i = 0; i < sizeD; ++i ) { string typeNameD = reader.ReadString(); m_SubSpawnerD.Add( typeNameD ); if ( SpawnerType.GetType( typeNameD ) == null ) { if ( m_WarnTimer == null ) m_WarnTimer = new WarnTimer(); m_WarnTimer.Add( Location, Map, typeNameD ); } } int sizeE = reader.ReadInt(); m_SubSpawnerE = new ArrayList( sizeE ); for ( int i = 0; i < sizeE; ++i ) { string typeNameE = reader.ReadString(); m_SubSpawnerE.Add( typeNameE ); if ( SpawnerType.GetType( typeNameE ) == null ) { if ( m_WarnTimer == null ) m_WarnTimer = new WarnTimer(); m_WarnTimer.Add( Location, Map, typeNameE ); } } 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 ); } int countA = reader.ReadInt(); m_SubCreaturesA = new ArrayList( countA ); for ( int i = 0; i < countA; ++i ) { IEntity eA = World.FindEntity( reader.ReadInt() ); if ( eA != null ) m_SubCreaturesA.Add( eA ); } int countB = reader.ReadInt(); m_SubCreaturesB = new ArrayList( countB ); for ( int i = 0; i < countB; ++i ) { IEntity eB = World.FindEntity( reader.ReadInt() ); if ( eB != null ) m_SubCreaturesB.Add( eB ); } int countC = reader.ReadInt(); m_SubCreaturesC = new ArrayList( countC ); for ( int i = 0; i < countC; ++i ) { IEntity eC = World.FindEntity( reader.ReadInt() ); if ( eC != null ) m_SubCreaturesC.Add( eC ); } int countD = reader.ReadInt(); m_SubCreaturesD = new ArrayList( countD ); for ( int i = 0; i < countD; ++i ) { IEntity eD = World.FindEntity( reader.ReadInt() ); if ( eD != null ) m_SubCreaturesD.Add( eD ); } int countE = reader.ReadInt(); m_SubCreaturesE = new ArrayList( countE ); for ( int i = 0; i < countE; ++i ) { IEntity eE = World.FindEntity( reader.ReadInt() ); if ( eE != null ) m_SubCreaturesE.Add( eE ); } if ( m_Running ) DoTimer( ts ); break; } } m_SpawnRange = ( version <= 2 ? m_HomeRange : m_SpawnRange ); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 6: { MobilesSeekHome = reader.ReadBool(); UsesSpawnerHome = reader.ReadBool(); goto case 5; } case 5: { SpawnArea = reader.ReadRect2D(); UsesSpawnerHome = reader.ReadBool(); goto case 4; } case 4: { m_WalkingRange = reader.ReadInt(); goto case 3; } case 3: case 2: { 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(); if (m_Running) reader.ReadDeltaTime(); int size = reader.ReadInt(); m_SpawnNames = new List < string >(size); for (int i = 0; i < size; ++i) { string creatureString = reader.ReadString(); m_SpawnNames.Add(creatureString); string typeName = ParseType(creatureString); if (ScriptCompiler.FindTypeByName(typeName) == null) { if (m_WarnTimer == null) m_WarnTimer = new WarnTimer(); m_WarnTimer.Add(Location, Map, typeName); } } int count = reader.ReadInt(); m_Spawned = new List < ISpawnable >(count); for (int i = 0; i < count; ++i) { var e = World.FindEntity(reader.ReadInt()) as ISpawnable; if (e != null) { e.Spawner = this; m_Spawned.Add(e); } } if (m_Running) { RemoveSpawned(); m_Running = false; } break; } } if (version < 3 && Math.Abs(Weight) < 1) Weight = -1; }