public VendorInventory(BaseHouse house, GenericReader reader) { this.m_House = house; int version = reader.ReadEncodedInt(); this.m_Owner = reader.ReadMobile(); this.m_VendorName = reader.ReadString(); this.m_ShopName = reader.ReadString(); this.m_Items = reader.ReadStrongItemList(); this.m_Gold = reader.ReadInt(); this.m_ExpireTime = reader.ReadDeltaTime(); if (this.m_Items.Count == 0 && this.m_Gold == 0) { Timer.DelayCall(TimeSpan.Zero, new TimerCallback(Delete)); } else { TimeSpan delay = this.m_ExpireTime - DateTime.Now; this.m_ExpireTimer = new ExpireTimer(this, delay > TimeSpan.Zero ? delay : TimeSpan.Zero); this.m_ExpireTimer.Start(); } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 1: { m_End = reader.ReadDeltaTime(); m_EvolutionTimer = new EvolutionTimer( this, m_End - DateTime.Now ); m_EvolutionTimer.Start(); break; } case 0: { TimeSpan duration = TimeSpan.FromDays( 1.0 ); m_EvolutionTimer = new EvolutionTimer( this, duration ); m_EvolutionTimer.Start(); m_End = DateTime.Now + duration; break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); m_DecayTime = reader.ReadDeltaTime(); m_Timer = new InternalTimer(this, m_DecayTime); m_Timer.Start(); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch ( version ) { case 0: { this.m_End = reader.ReadDeltaTime(); this.m_Timer = new InternalTimer(this, this.m_End - DateTime.UtcNow); this.m_Timer.Start(); break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 0: { _Decays = reader.ReadBool(); if (_Decays) { _DecayTime = reader.ReadDeltaTime(); _Timer = new InternalTimer(this, _DecayTime); _Timer.Start(); } } break; } }
public PlantSystem(PlantItem plant, GenericReader reader) { this.m_Plant = plant; int version = reader.ReadInt(); this.m_FertileDirt = reader.ReadBool(); if (version >= 1) this.m_NextGrowth = reader.ReadDateTime(); else this.m_NextGrowth = reader.ReadDeltaTime(); this.m_GrowthIndicator = (PlantGrowthIndicator)reader.ReadInt(); this.m_Water = reader.ReadInt(); this.m_Hits = reader.ReadInt(); this.m_Infestation = reader.ReadInt(); this.m_Fungus = reader.ReadInt(); this.m_Poison = reader.ReadInt(); this.m_Disease = reader.ReadInt(); this.m_PoisonPotion = reader.ReadInt(); this.m_CurePotion = reader.ReadInt(); this.m_HealPotion = reader.ReadInt(); this.m_StrengthPotion = reader.ReadInt(); this.m_Pollinated = reader.ReadBool(); this.m_SeedType = (PlantType)reader.ReadInt(); this.m_SeedHue = (PlantHue)reader.ReadInt(); this.m_AvailableSeeds = reader.ReadInt(); this.m_LeftSeeds = reader.ReadInt(); this.m_AvailableResources = reader.ReadInt(); this.m_LeftResources = reader.ReadInt(); }
public Player(Ethic ethic, GenericReader reader) { m_Ethic = ethic; int version = reader.ReadEncodedInt(); switch (version) { case 3: { m_FallenExpire = reader.ReadDeltaTime(); goto case 2; } case 2: { Sphere = reader.ReadInt(); //We want the rank adjusted from here. goto case 1; } case 1: { m_Mobile = reader.ReadMobile(); m_Power = reader.ReadEncodedInt(); if (version < 2) { /*m_History =*/ reader.ReadEncodedInt(); m_History = 0; } m_Steed = reader.ReadMobile(); m_Familiar = reader.ReadMobile(); break; } case 0: { m_Mobile = reader.ReadMobile(); m_Power = reader.ReadEncodedInt(); if (version < 2) { /*m_History =*/ reader.ReadEncodedInt(); m_History = 0; } m_Steed = reader.ReadMobile(); m_Familiar = reader.ReadMobile(); /*m_Shield =*/ reader.ReadDeltaTime(); break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch ( version ) { case 3: { this.m_MapItem = (MapItem)reader.ReadItem(); this.m_NextNavPoint = reader.ReadInt(); goto case 2; } case 2: { this.m_Facing = (Direction)reader.ReadInt(); goto case 1; } case 1: { this.m_DecayTime = reader.ReadDeltaTime(); goto case 0; } case 0: { if (version < 3) this.m_NextNavPoint = -1; if (version < 2) { if (this.ItemID == this.NorthID) this.m_Facing = Direction.North; else if (this.ItemID == this.SouthID) this.m_Facing = Direction.South; else if (this.ItemID == this.EastID) this.m_Facing = Direction.East; else if (this.ItemID == this.WestID) this.m_Facing = Direction.West; } this.m_Owner = reader.ReadMobile(); this.m_PPlank = reader.ReadItem() as Plank; this.m_SPlank = reader.ReadItem() as Plank; this.m_TillerMan = reader.ReadItem() as TillerMan; this.m_Hold = reader.ReadItem() as Hold; this.m_Anchored = reader.ReadBool(); this.m_ShipName = reader.ReadString(); if (version < 1) this.Refresh(); break; } } m_Instances.Add(this); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); if ( version >= 16 && version <= 18 ) reader.ReadItem(); // spawner m_CurrentAI = (AIType) reader.ReadInt(); m_DefaultAI = (AIType) reader.ReadInt(); m_iRangePerception = reader.ReadInt(); m_iRangeFight = reader.ReadInt(); m_iTeam = reader.ReadInt(); m_dActiveSpeed = reader.ReadDouble(); m_dPassiveSpeed = reader.ReadDouble(); m_dCurrentSpeed = reader.ReadDouble(); double activeSpeed = m_dActiveSpeed; double passiveSpeed = m_dPassiveSpeed; SpeedInfo.GetSpeeds( this, ref activeSpeed, ref passiveSpeed ); bool isStandardActive = false; for ( int i = 0; !isStandardActive && i < m_StandardActiveSpeeds.Length; ++i ) { isStandardActive = ( m_dActiveSpeed == m_StandardActiveSpeeds[i] ); } bool isStandardPassive = false; for ( int i = 0; !isStandardPassive && i < m_StandardPassiveSpeeds.Length; ++i ) { isStandardPassive = ( m_dPassiveSpeed == m_StandardPassiveSpeeds[i] ); } if ( isStandardActive && m_dCurrentSpeed == m_dActiveSpeed ) { m_dCurrentSpeed = activeSpeed; } else if ( isStandardPassive && m_dCurrentSpeed == m_dPassiveSpeed ) { m_dCurrentSpeed = passiveSpeed; } if ( isStandardActive ) { m_dActiveSpeed = activeSpeed; } if ( isStandardPassive ) { m_dPassiveSpeed = passiveSpeed; } if ( m_iRangePerception == OldRangePerception ) { m_iRangePerception = DefaultRangePerception; } m_pHome.X = reader.ReadInt(); m_pHome.Y = reader.ReadInt(); m_pHome.Z = reader.ReadInt(); if ( version >= 1 ) { m_iRangeHome = reader.ReadInt(); if ( version < 25 ) { int i, iCount; iCount = reader.ReadInt(); for ( i = 0; i < iCount; i++ ) reader.ReadString(); iCount = reader.ReadInt(); for ( i = 0; i < iCount; i++ ) reader.ReadString(); } } else { m_iRangeHome = 0; } if ( version >= 2 ) { m_FightMode = (FightMode) reader.ReadInt(); m_bControlled = reader.ReadBool(); m_ControlMaster = reader.ReadMobile(); m_ControlTarget = reader.ReadMobile(); m_ControlDest = reader.ReadPoint3D(); m_ControlOrder = (OrderType) reader.ReadInt(); m_dMinTameSkill = reader.ReadDouble(); if ( version < 9 ) reader.ReadDouble(); m_bTamable = reader.ReadBool(); m_bSummoned = reader.ReadBool(); if ( m_bSummoned ) { m_SummonEnd = reader.ReadDeltaTime(); new UnsummonTimer( m_ControlMaster, this, m_SummonEnd - DateTime.Now ).Start(); } m_iControlSlots = reader.ReadInt(); } else { m_FightMode = FightMode.Closest; m_bControlled = false; m_ControlMaster = null; m_ControlTarget = null; m_ControlOrder = OrderType.None; } if ( version >= 3 ) m_Loyalty = (PetLoyalty) reader.ReadInt(); else m_Loyalty = PetLoyalty.WonderfullyHappy; if ( version >= 4 ) m_CurrentWayPoint = reader.ReadItem() as WayPoint; if ( version >= 5 ) m_SummonMaster = reader.ReadMobile(); if ( version >= 6 ) { m_HitsMax = reader.ReadInt(); m_StamMax = reader.ReadInt(); m_ManaMax = reader.ReadInt(); m_DamageMin = reader.ReadInt(); m_DamageMax = reader.ReadInt(); } if ( version >= 7 ) { m_PhysicalResistance = reader.ReadInt(); m_PhysicalDamage = reader.ReadInt(); m_FireResistance = reader.ReadInt(); m_FireDamage = reader.ReadInt(); m_ColdResistance = reader.ReadInt(); m_ColdDamage = reader.ReadInt(); m_PoisonResistance = reader.ReadInt(); m_PoisonDamage = reader.ReadInt(); m_EnergyResistance = reader.ReadInt(); m_EnergyDamage = reader.ReadInt(); } if ( version >= 8 ) m_Owners = reader.ReadStrongMobileList(); else m_Owners = new List<Mobile>(); if ( version >= 10 ) { m_IsDeadPet = reader.ReadBool(); m_IsBonded = reader.ReadBool(); m_BondingBegin = reader.ReadDateTime(); m_OwnerAbandonTime = reader.ReadDateTime(); } if ( version >= 11 ) m_HasGeneratedLoot = reader.ReadBool(); else m_HasGeneratedLoot = true; if ( version >= 12 ) { m_Paragon = reader.ReadBool(); m_IsChampionMonster = reader.ReadBool(); } else { m_Paragon = false; m_IsChampionMonster = false; } if ( version >= 13 && reader.ReadBool() ) m_Friends = reader.ReadStrongMobileList(); else if ( version < 13 && m_ControlOrder >= OrderType.Unfriend ) ++m_ControlOrder; if ( version >= 14 ) m_SpawnLevel = reader.ReadInt(); else m_SpawnLevel = 0; if ( version >= 15 ) m_ChampionType = (ChampionSpawnType) reader.ReadInt(); if ( version >= 17 ) m_StolenFrom = reader.ReadBool(); if ( version >= 18 ) { int count = reader.ReadInt(); for ( int i = 0; i < count; i++ ) { Item rummaged = reader.ReadItem(); Mobile owner = reader.ReadMobile(); if ( rummaged != null && owner != null ) m_RummagedItems.Add( rummaged, owner ); } } if ( version >= 20 ) { m_IsMinichampMonster = reader.ReadBool(); m_MinichampType = (MiniChampType) reader.ReadInt(); } if ( version >= 21 ) { m_NextTastyTreat = reader.ReadDateTime(); } if ( version >= 22 ) { m_Petrified = reader.ReadBool(); if ( m_Petrified ) { m_StatueAnimation = reader.ReadInt(); m_StatueFrames = reader.ReadInt(); Frozen = true; HueMod = 2401; } } if ( version >= 23 ) { m_NextArmorEssence = reader.ReadDateTime(); } if ( version >= 24 ) { m_IsGolem = reader.ReadBool(); } else { m_IsGolem = this is Golem; } CheckStatTimers(); ChangeAIType( m_CurrentAI ); AddFollowers(); if ( IsAnimatedDead ) Spells.Necromancy.AnimateDeadSpell.Register( m_SummonMaster, this ); if ( Controlled ) Skills.Cap = 15000; }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); if (reader.ReadBool()) this.m_DestinationString = reader.ReadString(); // NOTE: We cannot EDI.Find here, regions have not yet been loaded :-( if (reader.ReadBool()) { this.m_DeleteTime = reader.ReadDeltaTime(); this.m_DeleteTimer = new DeleteTimer(this, this.m_DeleteTime - DateTime.UtcNow); this.m_DeleteTimer.Start(); } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadEncodedInt(); this.m_Petals = reader.ReadEncodedInt(); this.m_NextSpawnTime = reader.ReadDeltaTime(); this.m_Level = (SecureLevel)reader.ReadEncodedInt(); if (this.m_Petals < 10) this.StartSpawnTimer(m_NextSpawnTime - DateTime.Now); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadEncodedInt(); switch( version ) { case 1: { this.m_Content = FillableContent.Lookup((FillableContentType)reader.ReadInt()); goto case 0; } case 0: { if (reader.ReadBool()) { this.m_NextRespawnTime = reader.ReadDeltaTime(); TimeSpan delay = this.m_NextRespawnTime - DateTime.UtcNow; this.m_RespawnTimer = Timer.DelayCall(delay > TimeSpan.Zero ? delay : TimeSpan.Zero, new TimerCallback(Respawn)); } else { this.CheckRespawn(); } 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.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) { RemoveSpawned(); m_Running = false; } break; } } if (version < 3 && Weight == 0) Weight = -1; }
public static void Remove(GenericReader reader, int version) { int count = reader.ReadInt(); for (int i = 0; i < count; i++) { int serial = reader.ReadInt(); IEntity entity = World.FindEntity(serial); if (entity != null) { if (m_RemoveList == null) m_RemoveList = new List<IEntity>(); m_RemoveList.Add(entity); } } reader.ReadBool(); // m_Running if (reader.ReadBool()) reader.ReadDeltaTime(); // m_NextSpawn }
public override void Deserialize( GenericReader reader ) { base.Deserialize(reader); int version = reader.ReadInt(); switch( version ) { case 2: { alignment = (Alignment)reader.ReadInt(); goto case 1; } case 1: { TimeSpan deleteTime = TimeSpan.Zero; if( version >= 1 ) deleteTime = reader.ReadTimeSpan(); if( deleteTime > TimeSpan.Zero || LastOwner != null && !Controlled && !IsStabled ) { if( deleteTime <= TimeSpan.Zero || deleteTime > TimeSpan.FromDays(3.0) ) deleteTime = TimeSpan.FromDays(3.0); m_DeleteTimer = new DeleteTimer(this, deleteTime); m_DeleteTimer.Start(); } goto case 0; } case 0: { m_CurrentAI = (AIType)reader.ReadInt(); m_DefaultAI = (AIType)reader.ReadInt(); m_iRangePerception = reader.ReadInt(); m_iRangeFight = reader.ReadInt(); m_iRangeHome = reader.ReadInt(); m_iTeam = reader.ReadInt(); m_dActiveSpeed = reader.ReadDouble(); m_dPassiveSpeed = reader.ReadDouble(); m_dCurrentSpeed = reader.ReadDouble(); if( m_iRangePerception == OldRangePerception ) m_iRangePerception = DefaultRangePerception; m_pHome.X = reader.ReadInt(); m_pHome.Y = reader.ReadInt(); m_pHome.Z = reader.ReadInt(); int i, iCount; iCount = reader.ReadInt(); for( i = 0; i < iCount; i++ ) { string str = reader.ReadString(); Type type = Type.GetType(str); if( type != null ) { m_arSpellAttack.Add(type); } } iCount = reader.ReadInt(); for( i = 0; i < iCount; i++ ) { string str = reader.ReadString(); Type type = Type.GetType(str); if( type != null ) { m_arSpellDefense.Add(type); } } m_FightMode = (FightMode)reader.ReadInt(); m_bControlled = reader.ReadBool(); m_ControlMaster = reader.ReadMobile(); m_ControlTarget = reader.ReadMobile(); m_ControlDest = reader.ReadPoint3D(); m_ControlOrder = (OrderType)reader.ReadInt(); m_dMinTameSkill = reader.ReadDouble(); m_bTamable = reader.ReadBool(); m_bSummoned = reader.ReadBool(); if( m_bSummoned ) { m_SummonEnd = reader.ReadDeltaTime(); new UnsummonTimer(m_ControlMaster, this, m_SummonEnd - DateTime.Now).Start(); } m_iControlSlots = reader.ReadInt(); m_Loyalty = reader.ReadInt(); m_CurrentWayPoint = reader.ReadItem() as WayPoint; m_SummonMaster = reader.ReadMobile(); m_HitsMax = reader.ReadInt(); m_StamMax = reader.ReadInt(); m_ManaMax = reader.ReadInt(); m_DamageMin = reader.ReadInt(); m_DamageMax = reader.ReadInt(); m_PhysicalResistance = reader.ReadInt(); m_PhysicalDamage = reader.ReadInt(); m_FireResistance = reader.ReadInt(); m_FireDamage = reader.ReadInt(); m_ColdResistance = reader.ReadInt(); m_ColdDamage = reader.ReadInt(); m_PoisonResistance = reader.ReadInt(); m_PoisonDamage = reader.ReadInt(); m_EnergyResistance = reader.ReadInt(); m_EnergyDamage = reader.ReadInt(); m_Owners = reader.ReadStrongMobileList(); m_IsDeadPet = reader.ReadBool(); m_IsBonded = reader.ReadBool(); m_BondingBegin = reader.ReadDateTime(); m_OwnerAbandonTime = reader.ReadDateTime(); m_HasGeneratedLoot = reader.ReadBool(); bool hasFriends = reader.ReadBool(); if( hasFriends ) m_Friends = reader.ReadStrongMobileList(); else m_Friends = new List<Mobile>(); m_RemoveIfUntamed = reader.ReadBool(); m_RemoveStep = reader.ReadInt(); _spawner = reader.ReadItem(); _spawnerHome = reader.ReadPoint3D(); break; } } double activeSpeed = m_dActiveSpeed; double passiveSpeed = m_dPassiveSpeed; SpeedInfo.GetSpeeds(this, ref activeSpeed, ref passiveSpeed); bool isStandardActive = false; for( int i = 0; !isStandardActive && i < m_StandardActiveSpeeds.Length; ++i ) isStandardActive = (m_dActiveSpeed == m_StandardActiveSpeeds[i]); bool isStandardPassive = false; for( int i = 0; !isStandardPassive && i < m_StandardPassiveSpeeds.Length; ++i ) isStandardPassive = (m_dPassiveSpeed == m_StandardPassiveSpeeds[i]); if( isStandardActive && m_dCurrentSpeed == m_dActiveSpeed ) m_dCurrentSpeed = activeSpeed; else if( isStandardPassive && m_dCurrentSpeed == m_dPassiveSpeed ) m_dCurrentSpeed = passiveSpeed; if( isStandardActive ) m_dActiveSpeed = activeSpeed; if( isStandardPassive ) m_dPassiveSpeed = passiveSpeed; if( Core.AOS && NameHue == 0x35 ) NameHue = -1; CheckStatTimers(); ChangeAIType(m_CurrentAI); AddFollowers(); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); m_DamageEntries = new Dictionary <Mobile, int>(); int version = reader.ReadInt(); switch (version) { case 5: { m_KickDelay = reader.ReadTimeSpan(); m_KickTime = reader.ReadDateTime(); m_SpawnArea = reader.ReadRect2D(); goto case 4; } case 4: { int entries = reader.ReadInt(); Mobile m; int damage; for (int i = 0; i < entries; ++i) { m = reader.ReadMobile(); damage = reader.ReadInt(); if (m != null) { m_DamageEntries.Add(m, damage); } } goto case 3; } case 3: { m_HasBeenAdvanced = reader.ReadBool(); m_Idol = reader.ReadItem() as IdolOfTheChampion; goto case 2; } case 2: { m_RandomizeType = reader.ReadBool(); goto case 1; } case 1: { if (version < 5) { int oldRange = reader.ReadInt(); m_SpawnArea = new Rectangle2D(new Point2D(X - oldRange, Y - oldRange), new Point2D(X + oldRange, Y + oldRange)); } m_Kills = reader.ReadInt(); goto case 0; } case 0: { if (version < 1) { SetSpawnArea(50); } bool active = reader.ReadBool(); m_Type = (ChampionSpawnType)reader.ReadInt(); m_Creatures = reader.ReadStrongMobileList(); m_RedSkulls = reader.ReadStrongItemList(); m_WhiteSkulls = reader.ReadStrongItemList(); m_Platform = reader.ReadItem <ChampionPlatform>(); m_Altar = reader.ReadItem <ChampionAltar>(); m_ExpireDelay = reader.ReadTimeSpan(); m_ExpireTime = reader.ReadDeltaTime(); m_Champion = reader.ReadMobile(); m_RestartDelay = reader.ReadTimeSpan(); if (reader.ReadBool()) { m_RestartTime = reader.ReadDeltaTime(); BeginRestart(m_RestartTime - DateTime.UtcNow); } if (m_Platform == null || m_Altar == null) { Delete(); } else if (active) { Start(false); } break; } } Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion)); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 12: { if (reader.ReadBool()) { RestoreEquip = reader.ReadStrongItemList(); } goto case 11; } case 11: { // Version 11, we move all bools to a CorpseFlag m_Flags = (CorpseFlag)reader.ReadInt(); TimeOfDeath = reader.ReadDeltaTime(); int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { Item item = reader.ReadItem(); if (reader.ReadBool()) { SetRestoreInfo(item, reader.ReadPoint3D()); } else if (item != null) { SetRestoreInfo(item, item.Location); } } if (reader.ReadBool()) { BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow); } m_Looters = reader.ReadStrongMobileList(); m_Killer = reader.ReadMobile(); m_Aggressors = reader.ReadStrongMobileList(); m_Owner = reader.ReadMobile(); m_CorpseName = reader.ReadString(); m_AccessLevel = (AccessLevel)reader.ReadInt(); reader.ReadInt(); // guild reserve Kills = reader.ReadInt(); m_EquipItems = reader.ReadStrongItemList(); break; } } if (m_Owner is PlayerMobile) { if (PlayerCorpses == null) { PlayerCorpses = new Dictionary <Corpse, int>(); } PlayerCorpses[this] = 0; } }
public void Deserialize(GenericReader reader) { int version = reader.ReadInt(); int count = reader.ReadInt(); for (int i = 0; i < count; i++) { ArenaStats stats = new ArenaStats(reader); if (stats.Owner != null) { SurvivalRankings.Add(stats); } } count = reader.ReadInt(); for (int i = 0; i < count; i++) { ArenaStats stats = new ArenaStats(reader); if (stats.Owner != null) { TeamRankings.Add(stats); } } count = reader.ReadInt(); for (int i = 0; i < count; i++) { Item blocker = reader.ReadItem(); if (blocker != null) { Blockers.Add(blocker); } } Stone = reader.ReadItem() as ArenaStone; Manager = reader.ReadMobile() as ArenaManager; Banner1 = reader.ReadItem() as ArenaExitBanner; Banner2 = reader.ReadItem() as ArenaExitBanner; count = reader.ReadInt(); for (int i = 0; i < count; i++) { ArenaDuel duel = new ArenaDuel(reader, this); DateTime dt = reader.ReadDeltaTime(); PendingDuels[duel] = dt; } count = reader.ReadInt(); for (int i = 0; i < count; i++) { BookedDuels.Add(new ArenaDuel(reader, this)); } if (reader.ReadInt() == 1) { CurrentDuel = new ArenaDuel(reader, this); } if (Stone != null) { Stone.Arena = this; } if (Manager != null) { Manager.Arena = this; } if (Banner1 != null) { Banner1.Arena = this; } if (Banner2 != null) { Banner2.Arena = this; } if (version == 0) { for (var index = 0; index < Blockers.Count; index++) { var blocker = Blockers[index]; blocker?.Delete(); } ColUtility.Free(Blockers); } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 2: case 1: { m_NextPayTime = reader.ReadDeltaTime(); House = (BaseHouse)reader.ReadItem(); goto case 0; } case 0: { m_Owner = reader.ReadMobile(); m_BankAccount = reader.ReadInt(); m_HoldGold = reader.ReadInt(); m_SellItems = new Hashtable(); int count = reader.ReadInt(); for (int i = 0; i < count; i++) { Item item = reader.ReadItem(); int price = reader.ReadInt(); if (price > 100000000) { price = 100000000; } string description = reader.ReadString(); DateTime created = version < 1 ? DateTime.Now : reader.ReadDateTime(); if (item != null) { SetVendorItem(item, version < 1 && price <= 0 ? -1 : price, description, created); } } break; } } if (version < 1) { Timer.DelayCall(TimeSpan.Zero, new TimerCallback(FixDresswear)); m_NextPayTime = DateTime.Now + PayTimer.GetInterval(); } if (version < 2 && RawStr == 75 && RawDex == 75 && RawInt == 75) { InitStats(100, 100, 25); } TimeSpan delay = m_NextPayTime - DateTime.Now; m_PayTimer = new PayTimer(this, delay > TimeSpan.Zero ? delay : TimeSpan.Zero); m_PayTimer.Start(); Blessed = false; }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 12: { if (reader.ReadBool()) { m_RestoreEquip = reader.ReadStrongItemList(); } goto case 11; } case 11: { // Version 11, we move all bools to a CorpseFlag m_Flags = (CorpseFlag)reader.ReadInt(); m_TimeOfDeath = reader.ReadDeltaTime(); int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { Item item = reader.ReadItem(); if (reader.ReadBool()) { SetRestoreInfo(item, reader.ReadPoint3D()); } else if (item != null) { SetRestoreInfo(item, item.Location); } } if (reader.ReadBool()) { BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow); } m_Looters = reader.ReadStrongMobileList(); m_Killer = reader.ReadMobile(); m_Aggressors = reader.ReadStrongMobileList(); m_Owner = reader.ReadMobile(); m_CorpseName = reader.ReadString(); m_AccessLevel = (AccessLevel)reader.ReadInt(); reader.ReadInt(); // guild reserve m_Kills = reader.ReadInt(); m_EquipItems = reader.ReadStrongItemList(); break; } case 10: { m_TimeOfDeath = reader.ReadDeltaTime(); goto case 9; } case 9: { int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { Item item = reader.ReadItem(); if (reader.ReadBool()) { SetRestoreInfo(item, reader.ReadPoint3D()); } else if (item != null) { SetRestoreInfo(item, item.Location); } } goto case 8; } case 8: { SetFlag(CorpseFlag.VisitedByTaxidermist, reader.ReadBool()); goto case 7; } case 7: { if (reader.ReadBool()) { BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow); } goto case 6; } case 6: { m_Looters = reader.ReadStrongMobileList(); m_Killer = reader.ReadMobile(); goto case 5; } case 5: { SetFlag(CorpseFlag.Carved, reader.ReadBool()); goto case 4; } case 4: { m_Aggressors = reader.ReadStrongMobileList(); goto case 3; } case 3: { m_Owner = reader.ReadMobile(); goto case 2; } case 2: { SetFlag(CorpseFlag.NoBones, reader.ReadBool()); goto case 1; } case 1: { m_CorpseName = reader.ReadString(); goto case 0; } case 0: { if (version < 10) { m_TimeOfDeath = DateTime.UtcNow; } if (version < 7) { BeginDecay(m_DefaultDecayTime); } if (version < 6) { m_Looters = new List <Mobile>(); } if (version < 4) { m_Aggressors = new List <Mobile>(); } m_AccessLevel = (AccessLevel)reader.ReadInt(); reader.ReadInt(); // guild reserve m_Kills = reader.ReadInt(); SetFlag(CorpseFlag.Criminal, reader.ReadBool()); m_EquipItems = reader.ReadStrongItemList(); break; } } if (m_Owner is PlayerMobile) { if (PlayerCorpses == null) { PlayerCorpses = new Dictionary <Corpse, int>(); } PlayerCorpses[this] = 0; } }
/// <summary> /// Deserializes the specified reader. /// </summary> /// <param name="reader">The reader.</param> public override void Deserialize(GenericReader reader) { TimeSpan ts = TimeSpan.Zero; bool timerActive = false; base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 1: { m_ScheduledMode = reader.ReadBool(); goto case 0; } case 0: { m_City = (KinFactionCities)reader.ReadInt(); m_Vortex = (PowerVortex)reader.ReadMobile(); ts = reader.ReadDeltaTime() - DateTime.Now; m_VortexSpawnLocation = reader.ReadPoint3D(); m_Active = reader.ReadBool(); timerActive = reader.ReadBool(); break; } } if (timerActive) { //Sort out the timer state: //Whilst in capture phase, _time will represent the expire time of the current vortex, so start timer with new delay if (InCapturePhase()) { if (ts == TimeSpan.Zero) { //something weird happened, start expire timer afresh from kinsettings m_Time = DateTime.Now + TimeSpan.FromHours(KinSystemSettings.VortexExpireMinutes); } else { m_Time = DateTime.Now + ts; } if (m_Time < DateTime.Now) { //Vortex should have expired already, set it for 1 minute ts = TimeSpan.FromMinutes(1); } m_Timer = new VortexExpireTimer(ts, this); } else //if there's no vortex then the time represents the next spawn time { //Apply the delta and create a timer m_Time = DateTime.Now + ts; m_Timer = new VortexSpawnTimer(this); } //Only start the timer if Active if (m_Active) { m_Timer.Start(); } } else { m_Time = DateTime.Now + ts; } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 2: { m_Pregnant = reader.ReadBool(); m_HasEgg = reader.ReadBool(); m_AllowMating = reader.ReadBool(); m_S1 = reader.ReadBool(); m_S2 = reader.ReadBool(); m_S3 = reader.ReadBool(); m_S4 = reader.ReadBool(); m_S5 = reader.ReadBool(); m_S6 = reader.ReadBool(); m_KP = reader.ReadInt(); m_Stage = reader.ReadInt(); m_EndBreathe = reader.ReadDeltaTime(); if (m_EndBreathe > DateTime.Now) { m_BreatheTimer = new BreatheTimer(this, this, this, m_EndBreathe - DateTime.Now); m_BreatheTimer.Start(); } m_EndMating = reader.ReadDeltaTime(); if (m_EndMating > DateTime.Now) { m_MatingTimer = new MatingTimer(this, m_EndMating - DateTime.Now); m_MatingTimer.Start(); } break; } case 1: { m_Pregnant = reader.ReadBool(); m_HasEgg = reader.ReadBool(); m_AllowMating = reader.ReadBool(); m_S1 = reader.ReadBool(); m_S2 = reader.ReadBool(); m_S3 = reader.ReadBool(); m_S4 = reader.ReadBool(); m_S5 = reader.ReadBool(); m_S6 = reader.ReadBool(); m_KP = reader.ReadInt(); m_Stage = reader.ReadInt(); m_EndBreathe = reader.ReadDeltaTime(); m_BreatheTimer = new BreatheTimer(this, this, this, m_EndBreathe - DateTime.Now); m_BreatheTimer.Start(); m_EndMating = reader.ReadDeltaTime(); m_MatingTimer = new MatingTimer(this, m_EndMating - DateTime.Now); m_MatingTimer.Start(); /*m_EndPetLoyalty =*/ reader.ReadDeltaTime(); //m_PetLoyaltyTimer = new PetLoyaltyTimer( this, m_EndPetLoyalty - DateTime.Now ); //m_PetLoyaltyTimer.Start(); break; } case 0: { TimeSpan durationbreathe = TimeSpan.FromSeconds(1.0); TimeSpan durationmating = TimeSpan.FromDays(3.0); TimeSpan durationloyalty = TimeSpan.FromSeconds(5.0); m_MatingTimer = new MatingTimer(this, durationmating); m_MatingTimer.Start(); m_EndMating = DateTime.Now + durationmating; m_BreatheTimer = new BreatheTimer(this, this, this, durationbreathe); m_BreatheTimer.Start(); m_EndBreathe = DateTime.Now + durationbreathe; break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch ( version ) { case 12: { if (reader.ReadBool()) this.m_RestoreEquip = reader.ReadStrongItemList(); goto case 11; } case 11: { // Version 11, we move all bools to a CorpseFlag this.m_Flags = (CorpseFlag)reader.ReadInt(); this.m_TimeOfDeath = reader.ReadDeltaTime(); int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { Item item = reader.ReadItem(); if (reader.ReadBool()) this.SetRestoreInfo(item, reader.ReadPoint3D()); else if (item != null) this.SetRestoreInfo(item, item.Location); } if (reader.ReadBool()) this.BeginDecay(reader.ReadDeltaTime() - DateTime.Now); this.m_Looters = reader.ReadStrongMobileList(); this.m_Killer = reader.ReadMobile(); this.m_Aggressors = reader.ReadStrongMobileList(); this.m_Owner = reader.ReadMobile(); this.m_CorpseName = reader.ReadString(); this.m_AccessLevel = (AccessLevel)reader.ReadInt(); reader.ReadInt(); // guild reserve this.m_Kills = reader.ReadInt(); this.m_EquipItems = reader.ReadStrongItemList(); break; } case 10: { this.m_TimeOfDeath = reader.ReadDeltaTime(); goto case 9; } case 9: { int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { Item item = reader.ReadItem(); if (reader.ReadBool()) this.SetRestoreInfo(item, reader.ReadPoint3D()); else if (item != null) this.SetRestoreInfo(item, item.Location); } goto case 8; } case 8: { this.SetFlag(CorpseFlag.VisitedByTaxidermist, reader.ReadBool()); goto case 7; } case 7: { if (reader.ReadBool()) this.BeginDecay(reader.ReadDeltaTime() - DateTime.Now); goto case 6; } case 6: { this.m_Looters = reader.ReadStrongMobileList(); this.m_Killer = reader.ReadMobile(); goto case 5; } case 5: { this.SetFlag(CorpseFlag.Carved, reader.ReadBool()); goto case 4; } case 4: { this.m_Aggressors = reader.ReadStrongMobileList(); goto case 3; } case 3: { this.m_Owner = reader.ReadMobile(); goto case 2; } case 2: { this.SetFlag(CorpseFlag.NoBones, reader.ReadBool()); goto case 1; } case 1: { this.m_CorpseName = reader.ReadString(); goto case 0; } case 0: { if (version < 10) this.m_TimeOfDeath = DateTime.Now; if (version < 7) this.BeginDecay(m_DefaultDecayTime); if (version < 6) this.m_Looters = new List<Mobile>(); if (version < 4) this.m_Aggressors = new List<Mobile>(); this.m_AccessLevel = (AccessLevel)reader.ReadInt(); reader.ReadInt(); // guild reserve this.m_Kills = reader.ReadInt(); this.SetFlag(CorpseFlag.Criminal, reader.ReadBool()); this.m_EquipItems = reader.ReadStrongItemList(); break; } } }
public override void Deserialize(GenericReader reader) { TimeSpan ts = TimeSpan.Zero; base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 3: { m_LevelScale = reader.ReadDouble(); goto case 2; } case 2: { m_LevelError = (LevelErrors)reader.ReadInt(); goto case 1; } case 1: { ts = reader.ReadDeltaTime() - DateTime.Now; goto case 0; } case 0: { // read it all back in m_Type = ((ChampLevelData.SpawnTypes)reader.ReadInt()); int a = reader.ReadInt(); SpawnLevels = new ArrayList(); // create new level array through deserialise constructors for (int i = 0; i < a; ++i) { SpawnLevels.Add(new ChampLevelData(reader)); } m_Monsters = reader.ReadMobileList(); m_FreeMonsters = reader.ReadMobileList(); m_LevelCounter = reader.ReadInt(); m_Kills = reader.ReadInt(); m_ExpireTime = reader.ReadDateTime(); m_NavDest = (NavDestinations)reader.ReadInt(); // the bools m_bActive = reader.ReadBool(); m_bGraphics = reader.ReadBool(); // if graphics were on remake them thru deserialise constructor if (m_bGraphics) { m_Graphics = new ChampGraphics(this, reader); } // and the restart... m_bRestart = reader.ReadBool(); m_RestartDelay = reader.ReadTimeSpan(); if (reader.ReadBool() && !m_bActive && m_bRestart) { // in this case the champ is activley in restart mode, so create new timer //pla: 13/01/07 //changed so we don't lose time on restart if (ts == TimeSpan.Zero) { DoTimer(m_RestartDelay); } else { DoTimer(ts); } } else if (m_bActive) { // if spawn was active then start the wheels turning... StartSlice(); } break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch ( version ) { case 0: { this.m_BurntOut = reader.ReadBool(); this.m_Burning = reader.ReadBool(); this.m_Duration = reader.ReadTimeSpan(); this.m_Protected = reader.ReadBool(); if (this.m_Burning && this.m_Duration != TimeSpan.Zero) this.DoTimer(reader.ReadDeltaTime() - DateTime.Now); break; } } }
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 3: case 2: case 1: { m_TileType = (TileType)reader.ReadInt(); goto case 0; } case 0: { 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; } m_Plant = new PlantType[4]; for (int i = 0; i < m_Plant.Length; ++i) { m_Plant[i] = (PlantType)reader.ReadInt(); } int count = reader.ReadInt(); m_Plants = new ArrayList(count); for (int i = 0; i < count; ++i) { IEntity e = World.FindEntity(reader.ReadInt()); if (e != null) { m_Plants.Add(e); } } if (m_Running) { DoTimer(ts); } break; } } if (version < 2) { if (m_Count == 6) { m_Count = 5; } else if (m_Count == 4) { m_Count = 3; } else if (m_Count == 2) { m_Count = 2; } else { m_Count = 1; } Timer.DelayCall(TimeSpan.FromSeconds(5.0), new TimerCallback(_OnTick)); } //Delete(); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); this.m_DamageEntries = new Dictionary <Mobile, int>(); int version = reader.ReadInt(); switch (version) { case 5: { int entries = reader.ReadInt(); Mobile m; int damage; for (int i = 0; i < entries; ++i) { m = reader.ReadMobile(); damage = reader.ReadInt(); if (m == null) { continue; } this.m_DamageEntries.Add(m, damage); } goto case 4; } case 4: { this.m_ConfinedRoaming = reader.ReadBool(); this.m_Idol = reader.ReadItem <IdolOfTheChampion>(); this.m_HasBeenAdvanced = reader.ReadBool(); goto case 3; } case 3: { this.m_SpawnArea = reader.ReadRect2D(); goto case 2; } case 2: { this.m_RandomizeType = reader.ReadBool(); goto case 1; } case 1: { if (version < 3) { int oldRange = reader.ReadInt(); this.m_SpawnArea = new Rectangle2D(new Point2D(this.X - oldRange, this.Y - oldRange), new Point2D(this.X + oldRange, this.Y + oldRange)); } this.m_Kills = reader.ReadInt(); goto case 0; } case 0: { if (version < 1) { this.m_SpawnArea = new Rectangle2D(new Point2D(this.X - 24, this.Y - 24), new Point2D(this.X + 24, this.Y + 24)); //Default was 24 } bool active = reader.ReadBool(); this.m_Type = (ChampionSpawnType)reader.ReadInt(); this.m_Creatures = reader.ReadStrongMobileList(); this.m_RedSkulls = reader.ReadStrongItemList(); this.m_WhiteSkulls = reader.ReadStrongItemList(); this.m_Platform = reader.ReadItem <ChampionPlatform>(); this.m_Altar = reader.ReadItem <ChampionAltar>(); this.m_ExpireDelay = reader.ReadTimeSpan(); this.m_ExpireTime = reader.ReadDeltaTime(); this.m_Champion = reader.ReadMobile(); this.m_RestartDelay = reader.ReadTimeSpan(); if (reader.ReadBool()) { this.m_RestartTime = reader.ReadDeltaTime(); this.BeginRestart(this.m_RestartTime - DateTime.Now); } if (version < 4) { this.m_Idol = new IdolOfTheChampion(this); this.m_Idol.MoveToWorld(new Point3D(this.X, this.Y, this.Z - 15), this.Map); } if (this.m_Platform == null || this.m_Altar == null || this.m_Idol == null) { this.Delete(); } else if (active) { this.Start(); } break; } } Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion)); }
public PuzzleChestSolutionAndTime(GenericReader reader) : base(reader) { int version = reader.ReadEncodedInt(); m_When = reader.ReadDeltaTime(); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 3: { m_IsValorUsed = reader.ReadBool(); m_Idol = reader.ReadItem() as ChampionIdol; goto case 2; } case 2: { m_RandomizeType = reader.ReadBool(); goto case 1; } case 1: { m_SpawnRange = reader.ReadInt(); m_Kills = reader.ReadInt(); goto case 0; } case 0: { if (version < 1) { m_SpawnRange = 24; } bool active = reader.ReadBool(); m_Type = (ChampionSpawnType)reader.ReadInt(); m_Creatures = reader.ReadMobileList(); m_RedSkulls = reader.ReadItemList(); m_WhiteSkulls = reader.ReadItemList(); m_Platform = reader.ReadItem() as ChampionPlatform; m_Altar = reader.ReadItem() as ChampionAltar; m_ExpireDelay = reader.ReadTimeSpan(); m_ExpireTime = reader.ReadDeltaTime(); m_Champion = reader.ReadMobile(); m_RestartDelay = reader.ReadTimeSpan(); if (reader.ReadBool()) { m_RestartTime = reader.ReadDeltaTime(); BeginRestart(m_RestartTime - DateTime.Now); } if (m_Platform == null || m_Altar == null) { Delete(); } else if (active) { Start(); } break; } } }
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 2; //Skip version 3, already contains version 5 } case 3: { 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 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; } 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 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); var version = reader.ReadInt(); if (version == 1) reader.ReadDeltaTime(); else { GatheredFur = reader.ReadBool(); } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 2: { m_ShopName = reader.ReadString(); m_NextPayTime = reader.ReadDeltaTime(); House = reader.ReadItem <BaseHouse>(); goto case 0; } case 1: { reader.ReadBool(); // newVendorSystem goto case 2; } case 0: { m_Owner = reader.ReadMobile(); m_BankAccount = reader.ReadInt(); m_HoldGold = reader.ReadInt(); m_SellItems = new Hashtable(); int count = reader.ReadInt(); for (int i = 0; i < count; i++) { Item item = reader.ReadItem(); int price = reader.ReadInt(); if (price > 100000000) { price = 100000000; } string description = reader.ReadString(); DateTime created = version < 1 ? DateTime.Now : reader.ReadDateTime(); if (item != null) { SetVendorItem(item, version < 1 && price <= 0 ? -1 : price, description, created); } } break; } } TimeSpan delay = m_NextPayTime - DateTime.Now; m_PayTimer = new PayTimer(this, delay > TimeSpan.Zero ? delay : TimeSpan.Zero); m_PayTimer.Start(); Blessed = false; }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadEncodedInt(); this.m_Artifacts = new StealableInstance[m_Entries.Length]; this.m_Table = new Hashtable(m_Entries.Length); int length = reader.ReadEncodedInt(); for (int i = 0; i < length; i++) { Item item = reader.ReadItem(); DateTime nextRespawn = reader.ReadDeltaTime(); if (i < this.m_Artifacts.Length) { StealableInstance si = new StealableInstance(m_Entries[i], item, nextRespawn); this.m_Artifacts[i] = si; if (si.Item != null) this.m_Table[si.Item] = si; } } for (int i = length; i < m_Entries.Length; i++) { this.m_Artifacts[i] = new StealableInstance(m_Entries[i]); } this.m_RespawnTimer = Timer.DelayCall(TimeSpan.Zero, TimeSpan.FromMinutes(15.0), new TimerCallback(CheckRespawn)); }
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(); bool newVendorSystem = false; switch (version) { case 2: { _LastActivity = reader.ReadDateTime(); if (_LastActivity == DateTime.MinValue) { _LastActivity = DateTime.UtcNow; } else if (_LastActivity + _InactiveSpan <= DateTime.UtcNow) { NameMod = string.Empty; } else if (_LastActivity + TimeSpan.FromDays(7) <= DateTime.UtcNow) { NameHue = 0; } } goto case 1; case 1: { newVendorSystem = reader.ReadBool(); m_ShopName = reader.ReadString(); NextPayTime = reader.ReadDeltaTime(); House = reader.ReadItem<BaseHouse>(); } goto case 0; case 0: { Owner = reader.ReadMobile(); BankAccount = reader.ReadInt(); HoldCurrency = reader.ReadInt(); m_SellItems = new Dictionary<Item, VendorItem>(); int count = reader.ReadInt(); for (int i = 0; i < count; i++) { Item item = reader.ReadItem(); int price = reader.ReadInt(); if (price > 100000000) { price = 100000000; } string description = reader.ReadString(); DateTime created = version < 1 ? DateTime.UtcNow : reader.ReadDateTime(); if (item != null) { SetVendorItem(item, version < 1 && price <= 0 ? -1 : price, description, created); } } } break; } bool newVendorSystemActivated = BaseHouse.NewVendorSystem && !newVendorSystem; if (version < 1 || newVendorSystemActivated) { if (version < 1) { m_ShopName = "Shop Not Yet Named"; Timer.DelayCall(TimeSpan.Zero, UpgradeFromVersion0, newVendorSystemActivated); } else { Timer.DelayCall(TimeSpan.Zero, FixDresswear); } NextPayTime = DateTime.UtcNow + PayTimer.GetInterval(); if (newVendorSystemActivated) { HoldCurrency += BankAccount; BankAccount = 0; } } TimeSpan delay = NextPayTime - DateTime.UtcNow; m_PayTimer = new PayTimer(this, delay > TimeSpan.Zero ? delay : TimeSpan.Zero); m_PayTimer.Start(); Blessed = false; if (EraAOS && NameHue == 0x35) { NameHue = -1; } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 4: { m_ConfinedRoaming = reader.ReadBool(); m_Idol = reader.ReadItem <IdolOfTheChampion>(); m_HasBeenAdvanced = reader.ReadBool(); goto case 3; } case 3: { m_SpawnArea = reader.ReadRect2D(); goto case 2; } case 2: { m_RandomizeType = reader.ReadBool(); goto case 1; } case 1: { if (version < 3) { int oldRange = reader.ReadInt(); m_SpawnArea = new Rectangle2D(new Point2D(X - oldRange, Y - oldRange), new Point2D(X + oldRange, Y + oldRange)); } m_Kills = reader.ReadInt(); goto case 0; } case 0: { if (version < 1) { m_SpawnArea = new Rectangle2D(new Point2D(X - 24, Y - 24), new Point2D(X + 24, Y + 24)); //Default was 24 } bool active = reader.ReadBool(); m_Type = (ChampionSpawnType)reader.ReadInt(); m_Creatures = reader.ReadStrongMobileList(); m_RedSkulls = reader.ReadStrongItemList(); m_WhiteSkulls = reader.ReadStrongItemList(); m_Platform = reader.ReadItem <ChampionPlatform>(); m_Altar = reader.ReadItem <ChampionAltar>(); m_ExpireDelay = reader.ReadTimeSpan(); m_ExpireTime = reader.ReadDeltaTime(); m_Champion = reader.ReadMobile(); m_RestartDelay = reader.ReadTimeSpan(); if (reader.ReadBool()) { m_RestartTime = reader.ReadDeltaTime(); BeginRestart(m_RestartTime - DateTime.Now); } if (version < 4) { m_Idol = new IdolOfTheChampion(this); m_Idol.MoveToWorld(new Point3D(X, Y, Z - 15), Map); } if (m_Platform == null || m_Altar == null || m_Idol == null) { Delete(); } else if (active) { Start(); } break; } } Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion)); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch ( version ) { case 0: { this.m_Items = reader.ReadStrongItemList(); this.m_Mobiles = reader.ReadStrongMobileList(); this.m_DecayTime = reader.ReadDeltaTime(); this.RefreshDecay(false); break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 10: { m_TimeOfDeath = reader.ReadDeltaTime(); goto case 9; } case 9: { int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { Item item = reader.ReadItem(); if (reader.ReadBool()) { SetRestoreInfo(item, reader.ReadPoint3D()); } else if (item != null) { SetRestoreInfo(item, item.Location); } } goto case 8; } case 8: { m_VisitedByTaxidermist = reader.ReadBool(); goto case 7; } case 7: { if (reader.ReadBool()) { BeginDecay(reader.ReadDeltaTime() - DateTime.Now); } goto case 6; } case 6: { m_Looters = reader.ReadStrongMobileList(); m_Killer = reader.ReadMobile(); goto case 5; } case 5: { m_Carved = reader.ReadBool(); goto case 4; } case 4: { m_Aggressors = reader.ReadStrongMobileList(); goto case 3; } case 3: { m_Owner = reader.ReadMobile(); goto case 2; } case 2: { m_NoBones = reader.ReadBool(); goto case 1; } case 1: { m_CorpseName = reader.ReadString(); goto case 0; } case 0: { if (version < 10) { m_TimeOfDeath = DateTime.Now; } if (version < 7) { BeginDecay(m_DefaultDecayTime); } if (version < 6) { m_Looters = new List <Mobile>(); } if (version < 4) { m_Aggressors = new List <Mobile>(); } m_AccessLevel = (AccessLevel)reader.ReadInt(); reader.ReadInt(); // guild reserve m_Kills = reader.ReadInt(); m_Criminal = reader.ReadBool(); m_EquipItems = reader.ReadStrongItemList(); break; } } }
public void Deserialize(GenericReader reader, int version) { int count = reader.ReadInt(); for (int i = 0; i < count; i++) { int serial = reader.ReadInt(); ISpawnable spawnableEntity = World.FindEntity(serial) as ISpawnable; if (spawnableEntity != null) this.Add(spawnableEntity); } this.m_Running = reader.ReadBool(); if (reader.ReadBool()) { this.m_NextSpawn = reader.ReadDeltaTime(); if (this.Spawning) { if (this.m_SpawnTimer != null) this.m_SpawnTimer.Stop(); TimeSpan delay = this.m_NextSpawn - DateTime.Now; this.m_SpawnTimer = Timer.DelayCall(delay > TimeSpan.Zero ? delay : TimeSpan.Zero, new TimerCallback(TimerCallback)); } } this.CheckTimer(); }
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.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 1: { this.NextWoolTime = reader.ReadDeltaTime(); break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch ( version ) { case 1: { m_AllowMating = reader.ReadBool(); m_HasEgg = reader.ReadBool(); m_Pregnant = reader.ReadBool(); m_S1 = reader.ReadBool(); m_S2 = reader.ReadBool(); m_KPKorpre3 = reader.ReadInt(); m_Stage = reader.ReadInt(); m_EndMating = reader.ReadDeltaTime(); m_Korpre3MatingTimer = new Korpre3MatingTimer( this, m_EndMating - DateTime.Now ); m_Korpre3MatingTimer.Start(); break; } case 0: { TimeSpan durationmating = TimeSpan.FromDays( 0.0 ); m_Korpre3MatingTimer = new Korpre3MatingTimer( this, durationmating ); m_Korpre3MatingTimer.Start(); m_EndMating = DateTime.Now + durationmating; break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 1: { m_Caster = reader.ReadMobile(); goto case 0; } case 0: { m_End = reader.ReadDeltaTime(); m_Timer = new InternalTimer(this, TimeSpan.Zero, true, true); m_Timer.Start(); break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch ( version ) { case 2: { if (reader.ReadBool()) { this.m_DecayTime = reader.ReadDeltaTime(); this.BeginDecay(this.m_DecayTime - DateTime.UtcNow); } break; } case 1: case 0: { if (this.Parent == null) this.BeginDecay(m_DefaultDecayTime); break; } } if (version < 1 && this.Hue == 0) this.Hue = 2301; }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); m_CurrentAI = (AIType)reader.ReadInt(); m_DefaultAI = (AIType)reader.ReadInt(); m_iRangePerception = reader.ReadInt(); m_iRangeFight = reader.ReadInt(); m_iTeam = reader.ReadInt(); m_dActiveSpeed = reader.ReadDouble(); m_dPassiveSpeed = reader.ReadDouble(); m_dCurrentSpeed = reader.ReadDouble(); if ( m_iRangePerception == OldRangePerception ) m_iRangePerception = DefaultRangePerception; m_pHome.X = reader.ReadInt(); m_pHome.Y = reader.ReadInt(); m_pHome.Z = reader.ReadInt(); if ( version >= 1 ) { m_iRangeHome = reader.ReadInt(); int i, iCount; iCount = reader.ReadInt(); for ( i=0; i< iCount; i++ ) { string str = reader.ReadString(); Type type = Type.GetType( str ); if ( type != null ) { m_arSpellAttack.Add( type ); } } iCount = reader.ReadInt(); for ( i=0; i< iCount; i++ ) { string str = reader.ReadString(); Type type = Type.GetType( str ); if ( type != null ) { m_arSpellDefense.Add( type ); } } } else { m_iRangeHome = 0; } if ( version >= 2 ) { m_FightMode = ( FightMode )reader.ReadInt(); m_bControlled = reader.ReadBool(); m_ControlMaster = reader.ReadMobile(); m_ControlTarget = reader.ReadMobile(); m_ControlDest = reader.ReadPoint3D(); m_ControlOrder = (OrderType) reader.ReadInt(); m_dMinTameSkill = reader.ReadDouble(); if ( version < 9 ) reader.ReadDouble(); m_bTamable = reader.ReadBool(); m_bSummoned = reader.ReadBool(); if ( m_bSummoned ) { m_SummonEnd = reader.ReadDeltaTime(); new UnsummonTimer( m_ControlMaster, this, m_SummonEnd - DateTime.Now ).Start(); } m_iControlSlots = reader.ReadInt(); } else { m_FightMode = FightMode.Closest; m_bControlled = false; m_ControlMaster = null; m_ControlTarget = null; m_ControlOrder = OrderType.None; } if ( version >= 3 ) m_Loyalty = reader.ReadInt(); else m_Loyalty = MaxLoyalty; // Wonderfully Happy if ( version >= 4 ) m_CurrentWayPoint = reader.ReadItem() as WayPoint; if ( version >= 5 ) m_SummonMaster = reader.ReadMobile(); if ( version >= 6 ) { m_HitsMax = reader.ReadInt(); m_StamMax = reader.ReadInt(); m_ManaMax = reader.ReadInt(); m_DamageMin = reader.ReadInt(); m_DamageMax = reader.ReadInt(); } if ( version >= 7 ) { m_PhysicalResistance = reader.ReadInt(); m_PhysicalDamage = reader.ReadInt(); m_FireResistance = reader.ReadInt(); m_FireDamage = reader.ReadInt(); m_ColdResistance = reader.ReadInt(); m_ColdDamage = reader.ReadInt(); m_PoisonResistance = reader.ReadInt(); m_PoisonDamage = reader.ReadInt(); m_EnergyResistance = reader.ReadInt(); m_EnergyDamage = reader.ReadInt(); } if ( version >= 8 ) m_Owners = reader.ReadStrongMobileList(); else m_Owners = new List<Mobile>(); if ( version >= 10 ) { m_IsDeadPet = reader.ReadBool(); m_IsBonded = reader.ReadBool(); m_BondingBegin = reader.ReadDateTime(); m_OwnerAbandonTime = reader.ReadDateTime(); } if ( version >= 11 ) m_HasGeneratedLoot = reader.ReadBool(); else m_HasGeneratedLoot = true; if ( version >= 12 ) m_Paragon = reader.ReadBool(); else m_Paragon = false; if ( version >= 13 && reader.ReadBool() ) m_Friends = reader.ReadStrongMobileList(); else if ( version < 13 && m_ControlOrder >= OrderType.Unfriend ) ++m_ControlOrder; if ( version < 16 && Loyalty != MaxLoyalty ) Loyalty *= 10; double activeSpeed = m_dActiveSpeed; double passiveSpeed = m_dPassiveSpeed; SpeedInfo.GetSpeeds( this, ref activeSpeed, ref passiveSpeed ); bool isStandardActive = false; for ( int i = 0; !isStandardActive && i < m_StandardActiveSpeeds.Length; ++i ) isStandardActive = ( m_dActiveSpeed == m_StandardActiveSpeeds[i] ); bool isStandardPassive = false; for ( int i = 0; !isStandardPassive && i < m_StandardPassiveSpeeds.Length; ++i ) isStandardPassive = ( m_dPassiveSpeed == m_StandardPassiveSpeeds[i] ); if ( isStandardActive && m_dCurrentSpeed == m_dActiveSpeed ) m_dCurrentSpeed = activeSpeed; else if ( isStandardPassive && m_dCurrentSpeed == m_dPassiveSpeed ) m_dCurrentSpeed = passiveSpeed; if ( isStandardActive && !m_Paragon ) m_dActiveSpeed = activeSpeed; if ( isStandardPassive && !m_Paragon ) m_dPassiveSpeed = passiveSpeed; if ( version >= 14 ) { m_RemoveIfUntamed = reader.ReadBool(); m_RemoveStep = reader.ReadInt(); } TimeSpan deleteTime = TimeSpan.Zero; if ( version >= 17 ) deleteTime = reader.ReadTimeSpan(); if ( deleteTime > TimeSpan.Zero || LastOwner != null && !Controlled && !IsStabled ) { if ( deleteTime == TimeSpan.Zero ) deleteTime = TimeSpan.FromDays( 3.0 ); m_DeleteTimer = new DeleteTimer( this, deleteTime ); m_DeleteTimer.Start(); } if( version <= 14 && m_Paragon && Hue == 0x31 ) { Hue = Paragon.Hue; //Paragon hue fixed, should now be 0x501. } CheckStatTimers(); ChangeAIType(m_CurrentAI); AddFollowers(); if ( IsAnimatedDead ) Spells.Necromancy.AnimateDeadSpell.Register( m_SummonMaster, this ); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); m_DamageEntries = new Dictionary <Mobile, int>(); int version = reader.ReadInt(); switch (version) { case 7: { this.m_ExpireDelay = reader.ReadTimeSpan(); this.m_ExpireTime = reader.ReadDeltaTime(); goto case 6; } case 6: { this.m_Champion2 = reader.ReadMobile(); goto case 5; } case 5: { int entries = reader.ReadInt(); Mobile m; int damage; for (int i = 0; i < entries; ++i) { m = reader.ReadMobile(); damage = reader.ReadInt(); if (m == null) { continue; } this.m_DamageEntries.Add(m, damage); } goto case 4; } case 4: { this.m_ConfinedRoaming = reader.ReadBool(); this.m_HasBeenAdvanced = reader.ReadBool(); goto case 3; } case 3: { this.m_SpawnArea = reader.ReadRect2D(); goto case 2; } case 2: { this.m_RandomizeType = reader.ReadBool(); goto case 1; } case 1: { this.m_Kills = reader.ReadInt(); Spwnd = reader.ReadInt(); goto case 0; } case 0: { bool active = reader.ReadBool(); this.m_Type = (MiniChampType)reader.ReadInt(); this.m_Creatures = reader.ReadStrongMobileList(); this.m_Champion = reader.ReadMobile(); this.m_RestartDelay = reader.ReadTimeSpan(); if (reader.ReadBool()) { this.m_RestartTime = reader.ReadDeltaTime(); BeginRestart(this.m_RestartTime - DateTime.Now); } if (active) { this.Start(); } break; } } Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion)); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 2: { m_Guardians = reader.ReadStrongMobileList(); m_Temporary = reader.ReadBool(); goto case 1; } case 1: { m_Owner = reader.ReadMobile(); goto case 0; } case 0: { m_Level = reader.ReadInt(); m_DeleteTime = reader.ReadDeltaTime(); m_Lifted = reader.ReadStrongItemList(); if ( version < 2 ) m_Guardians = new List<Mobile>(); break; } } if ( !m_Temporary ) { m_Timer = new DeleteTimer( this, m_DeleteTime ); m_Timer.Start(); } else { Delete(); } }
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 28: { m_PeacedUntil = reader.ReadDateTime(); goto case 27; } case 27: { m_AnkhNextUse = reader.ReadDateTime(); goto case 26; } case 26: { m_AutoStabled = reader.ReadStrongMobileList(); goto case 25; } case 25: { int recipeCount = reader.ReadInt(); if( recipeCount > 0 ) { m_AcquiredRecipes = new Dictionary<int, bool>(); for( int i = 0; i < recipeCount; i++ ) { int r = reader.ReadInt(); if( reader.ReadBool() ) //Don't add in recipies which we haven't gotten or have been removed m_AcquiredRecipes.Add( r, true ); } } goto case 24; } case 24: { m_LastHonorLoss = reader.ReadDeltaTime(); goto case 23; } case 23: { m_ChampionTitles = new ChampionTitleInfo( reader ); goto case 22; } case 22: { m_LastValorLoss = reader.ReadDateTime(); goto case 21; } case 21: { m_ToTItemsTurnedIn = reader.ReadEncodedInt(); m_ToTTotalMonsterFame = reader.ReadInt(); goto case 20; } case 20: { m_AllianceMessageHue = reader.ReadEncodedInt(); m_GuildMessageHue = reader.ReadEncodedInt(); goto case 19; } case 19: { int rank = reader.ReadEncodedInt(); int maxRank = Guilds.RankDefinition.Ranks.Length -1; if( rank > maxRank ) rank = maxRank; m_GuildRank = Guilds.RankDefinition.Ranks[rank]; m_LastOnline = reader.ReadDateTime(); goto case 18; } case 18: { m_SolenFriendship = (SolenFriendship) reader.ReadEncodedInt(); goto case 17; } case 17: // changed how DoneQuests is serialized case 16: { m_Quest = QuestSerializer.DeserializeQuest( reader ); if ( m_Quest != null ) m_Quest.From = this; int count = reader.ReadEncodedInt(); if ( count > 0 ) { m_DoneQuests = new List<QuestRestartInfo>(); for ( int i = 0; i < count; ++i ) { Type questType = QuestSerializer.ReadType( QuestSystem.QuestTypes, reader ); DateTime restartTime; if ( version < 17 ) restartTime = DateTime.MaxValue; else restartTime = reader.ReadDateTime(); m_DoneQuests.Add( new QuestRestartInfo( questType, restartTime ) ); } } m_Profession = reader.ReadEncodedInt(); goto case 15; } case 15: { m_LastCompassionLoss = reader.ReadDeltaTime(); goto case 14; } case 14: { m_CompassionGains = reader.ReadEncodedInt(); if ( m_CompassionGains > 0 ) m_NextCompassionDay = reader.ReadDeltaTime(); goto case 13; } case 13: // just removed m_PayedInsurance list case 12: { m_BOBFilter = new Engines.BulkOrders.BOBFilter( reader ); goto case 11; } case 11: { if ( version < 13 ) { List<Item> payed = reader.ReadStrongItemList(); for ( int i = 0; i < payed.Count; ++i ) payed[i].PayedInsurance = true; } goto case 10; } case 10: { if ( reader.ReadBool() ) { m_HairModID = reader.ReadInt(); m_HairModHue = reader.ReadInt(); m_BeardModID = reader.ReadInt(); m_BeardModHue = reader.ReadInt(); } goto case 9; } case 9: { SavagePaintExpiration = reader.ReadTimeSpan(); if ( SavagePaintExpiration > TimeSpan.Zero ) { BodyMod = ( Female ? 184 : 183 ); HueMod = 0; } goto case 8; } case 8: { m_NpcGuild = (NpcGuild)reader.ReadInt(); m_NpcGuildJoinTime = reader.ReadDateTime(); m_NpcGuildGameTime = reader.ReadTimeSpan(); goto case 7; } case 7: { m_PermaFlags = reader.ReadStrongMobileList(); goto case 6; } case 6: { NextTailorBulkOrder = reader.ReadTimeSpan(); goto case 5; } case 5: { NextSmithBulkOrder = reader.ReadTimeSpan(); goto case 4; } case 4: { m_LastJusticeLoss = reader.ReadDeltaTime(); m_JusticeProtectors = reader.ReadStrongMobileList(); goto case 3; } case 3: { m_LastSacrificeGain = reader.ReadDeltaTime(); m_LastSacrificeLoss = reader.ReadDeltaTime(); m_AvailableResurrects = reader.ReadInt(); goto case 2; } case 2: { m_Flags = (PlayerFlag)reader.ReadInt(); goto case 1; } case 1: { m_LongTermElapse = reader.ReadTimeSpan(); m_ShortTermElapse = reader.ReadTimeSpan(); m_GameTime = reader.ReadTimeSpan(); goto case 0; } case 0: { if( version < 26 ) m_AutoStabled = new List<Mobile>(); break; } } if (m_RecentlyReported == null) m_RecentlyReported = new List<Mobile>(); // Professions weren't verified on 1.0 RC0 if ( !CharacterCreation.VerifyProfession( m_Profession ) ) m_Profession = 0; if ( m_PermaFlags == null ) m_PermaFlags = new List<Mobile>(); if ( m_JusticeProtectors == null ) m_JusticeProtectors = new List<Mobile>(); if ( m_BOBFilter == null ) m_BOBFilter = new Engines.BulkOrders.BOBFilter(); if( m_GuildRank == null ) m_GuildRank = Guilds.RankDefinition.Member; //Default to member if going from older verstion to new version (only time it should be null) if( m_LastOnline == DateTime.MinValue && Account != null ) m_LastOnline = ((Account)Account).LastLogin; if( m_ChampionTitles == null ) m_ChampionTitles = new ChampionTitleInfo(); if ( AccessLevel > AccessLevel.Player ) m_IgnoreMobiles = true; List<Mobile> list = this.Stabled; for ( int i = 0; i < list.Count; ++i ) { BaseCreature bc = list[i] as BaseCreature; if ( bc != null ) bc.IsStabled = true; } CheckAtrophies( this ); if( Hidden ) //Hiding is the only buff where it has an effect that's serialized. AddBuff( new BuffInfo( BuffIcon.HidingAndOrStealth, 1075655 ) ); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch ( version ) { case 1: { this.m_End = reader.ReadDeltaTime(); this.m_Timer = new InternalTimer(this, this.m_End - DateTime.UtcNow); this.m_Timer.Start(); break; } case 0: { TimeSpan duration = TimeSpan.FromSeconds(10.0); this.m_Timer = new InternalTimer(this, duration); this.m_Timer.Start(); this.m_End = DateTime.UtcNow + duration; break; } } }
public void Deserialize( GenericReader reader ) { int version = reader.ReadInt(); switch ( version ) { case 0: { m_Wanted = reader.ReadMobile(); m_Reward = reader.ReadInt(); m_Expires = reader.ReadDeltaTime(); break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); m_DamageEntries = new Dictionary <Mobile, int>(); int version = reader.ReadInt(); switch (version) { case 5: { int entries = reader.ReadInt(); Mobile m; int damage; for (int i = 0; i < entries; ++i) { m = reader.ReadMobile(); damage = reader.ReadInt(); if (m == null) { continue; } m_DamageEntries.Add(m, damage); } goto case 4; } case 4: { m_ConfinedRoaming = reader.ReadBool(); m_HasBeenAdvanced = reader.ReadBool(); goto case 3; } case 3: { m_SpawnArea = reader.ReadRect2D(); goto case 2; } case 2: { m_RandomizeType = reader.ReadBool(); goto case 1; } case 1: { if (version < 3) { int oldRange = reader.ReadInt(); m_SpawnArea = new Rectangle2D(new Point2D(X - oldRange, Y - oldRange), new Point2D(X + oldRange, Y + oldRange)); } m_Kills = reader.ReadInt(); goto case 0; } case 0: { if (version < 1) { m_SpawnArea = new Rectangle2D(new Point2D(X - 18, Y - 18), new Point2D(X + 18, Y + 18)); //Default was 24 } bool active = reader.ReadBool(); m_Type = (MiniChampType)reader.ReadInt(); m_Creatures = reader.ReadStrongMobileList(); m_RedSkulls = reader.ReadStrongItemList(); m_WhiteSkulls = reader.ReadStrongItemList(); m_MiniPlatform = reader.ReadItem <MiniChampPlatform>(); m_MiniAltar = reader.ReadItem <MiniChampAltar>(); m_ExpireDelay = reader.ReadTimeSpan(); m_ExpireTime = reader.ReadDeltaTime(); m_MiniChamp = reader.ReadMobile(); m_RestartDelay = reader.ReadTimeSpan(); if (reader.ReadBool()) { m_RestartTime = reader.ReadDeltaTime(); BeginRestart(m_RestartTime - DateTime.Now); } if (m_MiniPlatform == null || m_MiniAltar == null) { Delete(); } else if (active) { Start(); } break; } } Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion)); }