public QuestLogUpdatedGump( QuestSystem system ) : base(3, 30) { m_System = system; AddPage( 0 ); AddImage( 20, 5, 1417 ); AddHtmlLocalized( 0, 78, 120, 40, 1049079, White, false, false ); // Quest Log Updated AddImageTiled( 0, 78, 120, 40, 2624 ); AddAlphaRegion( 0, 78, 120, 40 ); AddButton( 30, 15, 5575, 5576, 1, GumpButtonType.Reply, 0 ); }
public QuestOfferGump( QuestSystem system ) : base(75, 25) { m_System = system; Closable = false; AddPage( 0 ); AddImageTiled( 50, 20, 400, 400, 2624 ); AddAlphaRegion( 50, 20, 400, 400 ); AddImage( 90, 33, 9005 ); AddHtmlLocalized( 130, 45, 270, 20, 1049010, White, false, false ); // Quest Offer AddImageTiled( 130, 65, 175, 1, 9101 ); AddImage( 140, 110, 1209 ); AddHtmlObject( 160, 108, 250, 20, system.Name, DarkGreen, false, false ); AddHtmlObject( 98, 140, 312, 200, system.OfferMessage, LightGreen, false, true ); AddRadio( 85, 350, 9720, 9723, true, 1 ); AddHtmlLocalized( 120, 356, 280, 20, 1049011, White, false, false ); // I accept! AddRadio( 85, 385, 9720, 9723, false, 0 ); AddHtmlLocalized( 120, 391, 280, 20, 1049012, White, false, false ); // No thanks, I decline. AddButton( 340, 390, 247, 248, 1, GumpButtonType.Reply, 0 ); AddImageTiled( 50, 29, 30, 390, 10460 ); AddImageTiled( 34, 140, 17, 279, 9263 ); AddImage( 48, 135, 10411 ); AddImage( -16, 285, 10402 ); AddImage( 0, 10, 10421 ); AddImage( 25, 0, 10420 ); AddImageTiled( 83, 15, 350, 15, 10250 ); AddImage( 34, 419, 10306 ); AddImage( 442, 419, 10304 ); AddImageTiled( 51, 419, 392, 17, 10101 ); AddImageTiled( 415, 29, 44, 390, 2605 ); AddImageTiled( 415, 29, 30, 390, 10460 ); AddImage( 425, 0, 10441 ); AddImage( 370, 50, 1417 ); AddImage( 379, 60, system.Picture ); }
public QuestCancelGump( QuestSystem system ) : base(120, 50) { m_System = system; Closable = false; AddPage( 0 ); AddImageTiled( 0, 0, 348, 262, 2702 ); AddAlphaRegion( 0, 0, 348, 262 ); AddImage( 0, 15, 10152 ); AddImageTiled( 0, 30, 17, 200, 10151 ); AddImage( 0, 230, 10154 ); AddImage( 15, 0, 10252 ); AddImageTiled( 30, 0, 300, 17, 10250 ); AddImage( 315, 0, 10254 ); AddImage( 15, 244, 10252 ); AddImageTiled( 30, 244, 300, 17, 10250 ); AddImage( 315, 244, 10254 ); AddImage( 330, 15, 10152 ); AddImageTiled( 330, 30, 17, 200, 10151 ); AddImage( 330, 230, 10154 ); AddImage( 333, 2, 10006 ); AddImage( 333, 248, 10006 ); AddImage( 2, 248, 10006 ); AddImage( 2, 2, 10006 ); AddHtmlLocalized( 25, 22, 200, 20, 1049000, 32000, false, false ); // Confirm Quest Cancellation AddImage( 25, 40, 3007 ); if ( system.IsTutorial ) { AddHtmlLocalized( 25, 55, 300, 120, 1060836, White, false, false ); // This quest will give you valuable information, skills and equipment that will help you advance in the game at a quicker pace.<BR><BR>Are you certain you wish to cancel at this time? } else { AddHtmlLocalized( 25, 60, 300, 20, 1049001, White, false, false ); // You have chosen to abort your quest: AddImage( 25, 81, 0x25E7 ); AddHtmlObject( 48, 80, 280, 20, system.Name, DarkGreen, false, false ); AddHtmlLocalized( 25, 120, 280, 20, 1049002, White, false, false ); // Can this quest be restarted after quitting? AddImage( 25, 141, 0x25E7 ); AddHtmlLocalized( 48, 140, 280, 20, (system.RestartDelay < TimeSpan.MaxValue) ? 1049016 : 1049017, DarkGreen, false, false ); // Yes/No } AddRadio( 25, 175, 9720, 9723, true, 1 ); AddHtmlLocalized( 60, 180, 280, 20, 1049005, White, false, false ); // Yes, I really want to quit! AddRadio( 25, 210, 9720, 9723, false, 0 ); AddHtmlLocalized( 60, 215, 280, 20, 1049006, White, false, false ); // No, I don't want to quit. AddButton( 265, 220, 247, 248, 1, GumpButtonType.Reply, 0 ); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 29: { if (reader.ReadBool()) { m_StuckMenuUses = new DateTime[reader.ReadInt()]; for (int i = 0; i < m_StuckMenuUses.Length; ++i) { m_StuckMenuUses[i] = reader.ReadDateTime(); } } else { m_StuckMenuUses = null; } goto case 28; } 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 version 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; bc.StabledBy = this; } } CheckAtrophies(this); if (Hidden) //Hiding is the only buff where it has an effect that's serialized. AddBuff(new BuffInfo(BuffIcon.HidingAndOrStealth, 1075655)); }
public static void Serialize( QuestSystem qs, GenericWriter writer ) { if ( qs == null || qs.Removed ) writer.WriteEncodedInt( 0x00 ); else { writer.WriteEncodedInt( 0x01 ); Write( qs.GetType(), QuestSystem.QuestTypes, writer ); qs.BaseSerialize( writer ); } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); m_CollectionTitles = new ArrayList(); switch ( version ) { case 56: { bool hasAnyBardMastery = reader.ReadBool(); if ( hasAnyBardMastery ) { m_BardMastery = BardMastery.GetFromId( reader.ReadEncodedInt() ); m_BardElementDamage = (ResistanceType) reader.ReadEncodedInt(); m_NextBardMasterySwitch = reader.ReadDateTime(); m_BardMasteryLearnedMask = reader.ReadEncodedInt(); } goto case 55; } case 55: { m_NextAnkhPendantUse = reader.ReadDateTime(); goto case 54; } case 54: { m_NextTenthAnniversarySculptureUse = reader.ReadDateTime(); goto case 53; } case 53: { m_LastForgedPardonUse = reader.ReadDateTime(); goto case 52; } case 52: { m_DoomCredits = reader.ReadInt(); m_TieredQuestInfo = new TieredQuestInfo( reader ); m_LoyaltyInfo = new LoyaltyInfo( reader ); m_FloorTrapsPlaced = reader.ReadInt(); m_NextPuzzleAttempt = reader.ReadDateTime(); m_NextDrinkExplodingTarPotion = reader.ReadDateTime(); m_NextLuckyCoinWish = reader.ReadDateTime(); m_NextSilverSaplingUse = reader.ReadDateTime(); m_SacredQuestNextChance = reader.ReadDateTime(); m_HumilityQuestStatus = (HumilityQuestStatus) reader.ReadInt(); m_HumilityQuestNextChance = reader.ReadDateTime(); m_NextGemOfSalvationUse = reader.ReadDateTime(); m_AnkhNextUse = reader.ReadDateTime(); m_Quests = QuestReader.Quests( reader, this ); m_Chains = QuestReader.Chains( reader ); m_TenthAnniversaryCredits = reader.ReadDouble(); m_KRStartingQuestStep = reader.ReadByte(); m_CurrentCollectionTitle = reader.ReadInt(); int titlecount = reader.ReadInt(); for ( int i = 0; i < titlecount; i++ ) { int title = reader.ReadInt(); m_CollectionTitles.Add( title ); } int recipeCount = reader.ReadInt(); if ( recipeCount > 0 ) { m_AcquiredRecipes = new Hashtable(); 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 ); } } m_AutoStabledPets = reader.ReadMobileList(); ACState = (AdvancedCharacterState) reader.ReadInt(); Deaths = reader.ReadInt(); NextDrinkConflagrationPotion = reader.ReadTimeSpan(); NextDrinkMaskOfDeathPotion = reader.ReadTimeSpan(); NextDrinkConfusionPotion = reader.ReadTimeSpan(); m_GuildRank = reader.ReadInt(); m_LastLogin = reader.ReadDateTime(); m_ToTItemsTurnedIn = reader.ReadInt(); m_ToTTotalMonsterFame = reader.ReadDouble(); LastTierLoss = reader.ReadDeltaTime(); LastChampionTierLoss = reader.ReadDeltaTime(); LastSuperChampionTierLoss = reader.ReadDeltaTime(); int length_super = reader.ReadInt(); for ( int i = 0; i < length_super; i++ ) SuperChampionTiers[i] = reader.ReadInt(); int length = reader.ReadInt(); for ( int i = 0; i < length; i++ ) ChampionTiers[i] = reader.ReadDouble(); m_LastValorLoss = reader.ReadDeltaTime(); m_LastHonorLoss = reader.ReadDeltaTime(); m_SolenFriendship = (SolenFriendship) reader.ReadEncodedInt(); 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 = reader.ReadDateTime(); m_DoneQuests.Add( new QuestRestartInfo( questType, restartTime ) ); } } m_Profession = reader.ReadEncodedInt(); m_LastCompassionLoss = reader.ReadDeltaTime(); m_CompassionGains = reader.ReadEncodedInt(); if ( m_CompassionGains > 0 ) m_NextCompassionDay = reader.ReadDeltaTime(); m_BOBFilter = new Engines.BulkOrders.BOBFilter( reader ); if ( reader.ReadBool() ) { m_HairModID = reader.ReadInt(); m_HairModHue = reader.ReadInt(); m_BeardModID = reader.ReadInt(); m_BeardModHue = reader.ReadInt(); // We cannot call SetHairMods( -1, -1 ) here because the items have not yet loaded Timer.DelayCall( TimeSpan.Zero, new TimerCallback( RevertHair ) ); } SavagePaintExpiration = reader.ReadTimeSpan(); if ( SavagePaintExpiration > TimeSpan.Zero ) { BodyMod = ( Female ? 184 : 183 ); HueMod = 0; } m_NpcGuild = (NpcGuild) reader.ReadInt(); m_NpcGuildJoinTime = reader.ReadDateTime(); m_NpcGuildGameTime = reader.ReadTimeSpan(); m_PermaFlags = reader.ReadMobileList(); NextTailorBulkOrder = reader.ReadTimeSpan(); NextSmithBulkOrder = reader.ReadTimeSpan(); m_LastJusticeLoss = reader.ReadDeltaTime(); m_JusticeProtectors = reader.ReadMobileList(); m_LastSacrificeGain = reader.ReadDeltaTime(); m_LastSacrificeLoss = reader.ReadDeltaTime(); m_AvailableResurrects = reader.ReadInt(); m_Flags = (PlayerFlag) reader.ReadInt(); m_LongTermElapse = reader.ReadTimeSpan(); m_ShortTermElapse = reader.ReadTimeSpan(); m_GameTime = reader.ReadTimeSpan(); break; } } #region ML Quest System if ( m_Quests == null ) m_Quests = new List<BaseQuest>(); if ( m_Chains == null ) m_Chains = new Dictionary<QuestChain, BaseChain>(); if ( m_DoneQuests == null ) m_DoneQuests = new List<QuestRestartInfo>(); #endregion if ( this != null && this.Region.IsPartOf( typeof( DoomLampRoom ) ) ) { Rectangle2D rect = new Rectangle2D( 342, 168, 16, 16 ); int x = Utility.Random( rect.X, rect.Width ); int y = Utility.Random( rect.Y, rect.Height ); if ( x >= 345 && x <= 352 && y >= 173 && y <= 179 ) { x = 353; y = 172; } this.MoveToWorld( new Point3D( x, y, -1 ), Map.Malas ); } // Professions weren't verified on 1.0 RC0 if ( !CharacterCreation.VerifyProfession( m_Profession ) ) m_Profession = 0; if ( m_PermaFlags == null ) m_PermaFlags = new ArrayList(); if ( m_JusticeProtectors == null ) m_JusticeProtectors = new ArrayList(); if ( m_BOBFilter == null ) m_BOBFilter = new Engines.BulkOrders.BOBFilter(); if ( m_LoyaltyInfo == null ) m_LoyaltyInfo = new LoyaltyInfo(); if ( m_TieredQuestInfo == null ) m_TieredQuestInfo = new TieredQuestInfo(); 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; } if ( Hidden ) // Hiding is the only buff where it has an effect that's serialized. this.AddBuff( new BuffInfo( BuffIcon.HidingAndOrStealth, 1075655 ) ); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 34: { //SYSTEM IMION Setname //Odczytywanie danych int count = reader.ReadInt(); m_SetNames = new Dictionary<int, string>(); for (int i = 0; i < count; i++) { int ri = reader.ReadInt(); string rs = reader.ReadString(); m_SetNames.Add(ri, rs); //Console.WriteLine(); //Console.WriteLine("{0}: {1}: {2}", DateTime.Now, ri, rs); } goto case 33; //SYSTEM IMION <-- KONIEC } case 33: { //Timer od oslonki po wskrzeszeniu DateTime ADShield = reader.ReadDateTime(); DateTime Shield = ADShield; Shield = Shield.AddMinutes(PlayerMobile.c_ADShield); if (Shield.CompareTo(DateTime.Now) > 0) { TimeSpan Minutes = Shield.Subtract(DateTime.Now); this.m_ADShieldTimer = new ADShieldTimer(this, Minutes.TotalMinutes); this.m_ADShieldTimer.Start(); this.m_ADShieldTime = ADShield; } ////////// goto case 32; } case 32: { int huesCount = reader.ReadInt(); if( huesCount > 0 ) { m_LanguageHues = new Dictionary<int, int>(); for( int i = 0; i < huesCount; i++ ) { int key = reader.ReadInt(); int v = reader.ReadInt(); m_LanguageHues.Add( key, v ); } } goto case 31; } case 31: { //SYSTEM IMION //Odczytywanie danych int count = reader.ReadInt(); m_KnewNames = new List<int>(); for (int i = 0; i < count; i++) { int ri = reader.ReadInt(); //string rs = reader.ReadString(); this.m_KnewNames.Add(ri); //Console.WriteLine(); //Console.WriteLine("{0}: {1}: {2}", DateTime.Now, ri, rs); } goto case 30; //SYSTEM IMION <-- KONIEC } case 30: { this.PDcount = reader.ReadInt(); goto case 29; } case 29: { //LISTA PD int i = reader.ReadInt(); //Console.Write("array size: " + i); for(int n = 0; n < i; n++ ){ int Amount = reader.ReadInt(); string GM_name = reader.ReadString(); string Reason = reader.ReadString(); //Console.Write(n + ": Amount -" + Amount + "\n"); //Console.Write(n + ":GM_name-" + GM_name + "\n"); //Console.Write(n + ": Reason-" + Reason + "\n"); this.ListaPD.Add(new Object[3] {Amount, GM_name, Reason} ); } //////////////// goto case 28; } case 28: { //Timer od umierania i wskrzeszania DateTime DeathTime = reader.ReadDateTime(); DateTime ResTime = DeathTime; ResTime = ResTime.AddMinutes(PlayerMobile.c_DeathTime); if(ResTime.CompareTo(DateTime.Now) > 0){ TimeSpan Minutes = ResTime.Subtract(DateTime.Now); this.m_DeathTimer = new DeathTimer(this, Minutes.TotalMinutes); this.m_DeathTimer.Start(); this.m_DeathTime = DeathTime; } ////////// 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 ) { //duel system case 19: { m_Wins = reader.ReadEncodedInt(); m_Losses = reader.ReadEncodedInt(); goto case 18; } //duel system case 18: { if ( version < 19 ) { m_Wins = 0; m_Losses = 0; } 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 ArrayList(); 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 ) { ArrayList payed = reader.ReadItemList(); for ( int i = 0; i < payed.Count; ++i ) ((Item)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(); // We cannot call SetHairMods( -1, -1 ) here because the items have not yet loaded Timer.DelayCall( TimeSpan.Zero, new TimerCallback( RevertHair ) ); } 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.ReadMobileList(); 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.ReadMobileList(); 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: { break; } } // Professions weren't verified on 1.0 RC0 if ( !CharacterCreation.VerifyProfession( m_Profession ) ) m_Profession = 0; if ( m_PermaFlags == null ) m_PermaFlags = new ArrayList(); if ( m_JusticeProtectors == null ) m_JusticeProtectors = new ArrayList(); if ( m_BOBFilter == null ) m_BOBFilter = new Engines.BulkOrders.BOBFilter(); ArrayList list = this.Stabled; for ( int i = 0; i < list.Count; ++i ) { BaseCreature bc = list[i] as BaseCreature; if ( bc != null ) bc.IsStabled = true; } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 161: this.NumberOfItemsCookedRecently = reader.ReadInt(); this.CookingXpLastAwardedOn = reader.ReadDateTime(); goto case 160; case 160: this.lastSecondWind = reader.ReadDateTime(); goto case 159; case 159: { this.lastCharge = reader.ReadDateTime(); this.chargeCooldown = reader.ReadInt(); goto case 158; } case 158: SmithTesting = reader.ReadBool(); goto case 157; case 157: m_ConsecratedItems = reader.ReadInt(); goto case 156; case 156: m_CanBeFaithful = reader.ReadBool();goto case 155; case 155: m_HCWound = reader.ReadDateTime(); goto case 154; case 154: m_Maimings = reader.ReadInt(); goto case 153; case 153: { m_CustomAvatarID1 = reader.ReadInt(); m_CustomAvatarID2 = reader.ReadInt(); m_CustomAvatarID3 = reader.ReadInt(); m_IsHardcore = reader.ReadBool(); goto case 152; } case 152: GroupInfo.Deserialize(reader, Group); goto case 151; case 151: m_IsApprentice = reader.ReadBool(); goto case 150; case 150: m_AvatarID = reader.ReadInt(); goto case 149; case 149: case 148: case 147: case 146: case 145: case 144: { Disguise.Deserialize( reader ); MyDisguises.Deserialize( reader ); goto case 143; } case 143: m_GemHarvesting = reader.ReadBool(); goto case 142; case 142: { m_CanBeThief = reader.ReadBool(); m_LastCottonFlaxHarvest = reader.ReadDateTime(); goto case 141; } case 141: case 140: m_CraftingSpecialization = reader.ReadString(); goto case 139; case 139: m_Forging = reader.ReadBool(); goto case 138; case 138: m_ImperialGuard = reader.ReadBool(); goto case 137; case 137: m_ExtraCPRewards = reader.ReadInt(); goto case 136; case 136: m_EmptyBankBoxOn = reader.ReadDateTime(); goto case 135; case 135: m_OldMapChar = reader.ReadBool(); goto case 134; case 134: { int guilds = reader.ReadInt(); for( int i = 0; i < guilds; i++ ) { CustomGuildInfo guild = new CustomGuildInfo( reader ); if( guild != null && guild.GuildStone != null ) CustomGuilds.Add( guild.GuildStone, guild ); } goto case 133; } case 133: m_ChosenDeity = (ChosenDeity)reader.ReadInt(); goto case 132; case 132: m_WikiConfig = reader.ReadString(); goto case 131; case 131: case 130: case 129: { m_ReforgeLocation = reader.ReadPoint3D(); m_ReforgeMap = reader.ReadMap(); m_Reforging = reader.ReadBool(); m_ReforgesLeft = reader.ReadInt(); goto case 128; } case 128: case 127: { m_Technique = reader.ReadString(); m_TechniqueLevel = reader.ReadInt(); m_MediumPieces = reader.ReadInt(); m_HeavyPieces = reader.ReadInt(); goto case 126; } case 126: m_VampSight = reader.ReadBool(); goto case 125; case 125: m_FreeForRP = reader.ReadBool(); goto case 124; case 124: m_VampSafety = reader.ReadBool(); goto case 123; case 123: { m_LastTimeGhouled = reader.ReadDateTime(); m_YearOfDeath = reader.ReadInt(); m_MonthOfDeath = reader.ReadInt(); m_DayOfDeath = reader.ReadInt(); m_IsVampire = reader.ReadBool(); m_MaxBPs = reader.ReadInt(); m_BPs = reader.ReadInt(); m_AutoVampHeal = reader.ReadBool(); goto case 122; } case 122: case 121: m_LogMsgs = reader.ReadBool(); goto case 120; case 120: m_PureDodge = reader.ReadBool(); goto case 119; case 119: m_Tents = reader.ReadStrongItemList(); goto case 118; case 118: m_CraftContainer = (Container)reader.ReadItem(); goto case 117; case 117: case 116: m_SpellBook = (CustomSpellBook)reader.ReadItem(); goto case 115; case 115: case 114: { CustomGuildInfo test = null; if( version < 134 ) test = new CustomGuildInfo( reader ); goto case 113; } case 113: case 112: case 111: case 110: case 109: { m_CurrentCommand = (SongList)reader.ReadInt(); goto case 108; } case 108: { m_SpeedHack = reader.ReadBool(); goto case 107; } case 107: { m_LogoutTime = reader.ReadDateTime(); goto case 106; } case 106: { m_FakeAge = reader.ReadString(); m_FakeLooks = reader.ReadString(); goto case 105; } case 105: { this.NameMod = reader.ReadString(); m_AutoPicking = reader.ReadBool(); goto case 104; } case 104: goto case 103; case 103: { m_SmoothPicking = reader.ReadBool(); goto case 102; } case 102: { m_HasStash = reader.ReadBool(); goto case 101; } case 101: { m_FakeHair = reader.ReadInt(); m_FakeHairHue = reader.ReadInt(); m_FakeFacialHair = reader.ReadInt(); m_FakeFacialHairHue = reader.ReadInt(); m_FakeHue = reader.ReadInt(); m_FakeRPTitle = reader.ReadString(); m_FakeTitlePrefix = reader.ReadString(); goto case 100; } case 100: goto case 99; case 99: goto case 98; case 98: goto case 97; case 97: goto case 96; case 96: { m_FixedRun = reader.ReadBool(); goto case 95; } case 95: { m_LightPieces = reader.ReadInt(); goto case 94; } case 94: { m_ArmourPieces = reader.ReadInt(); goto case 93; } case 93: { m_LightPenalty = reader.ReadInt(); m_MediumPenalty = reader.ReadInt(); m_HeavyPenalty = reader.ReadInt(); goto case 92; } case 92: goto case 91; case 91: { m_FixedRage = reader.ReadBool(); goto case 90; } case 90: goto case 89; case 89: goto case 88; case 88: goto case 87; case 87: goto case 86; case 86: { m_FixedReflexes = reader.ReadBool(); goto case 85; } case 85: { m_FixedStyles = reader.ReadBool(); goto case 84; } case 84: { m_NextMending = reader.ReadDateTime(); goto case 83; } case 83: { m_FixedStatPoints = reader.ReadBool(); goto case 82; } case 82: { m_XPFromCrafting = reader.ReadBool(); m_XPFromKilling = reader.ReadBool(); goto case 81; } case 81: { m_HarvestedCrops = reader.ReadInt(); m_NextHarvestAllowed = reader.ReadDateTime(); goto case 80; } case 80: { m_Spar = reader.ReadBool(); goto case 79; } case 79: { m_HideStatus = reader.ReadBool(); goto case 78; } case 78: { m_DayOfBirth = reader.ReadString(); m_MonthOfBirth = reader.ReadString(); m_YearOfBirth = reader.ReadString(); goto case 77; } case 77: { m_AlyrianGuard = reader.ReadBool(); m_AzhuranGuard = reader.ReadBool(); m_KhemetarGuard = reader.ReadBool(); m_MhordulGuard = reader.ReadBool(); m_TyreanGuard = reader.ReadBool(); m_VhalurianGuard = reader.ReadBool(); goto case 76; } case 76: { m_HearAll = reader.ReadInt(); goto case 75; } case 75: { m_Friendship = new Friendship( reader ); goto case 74; } case 74: { m_CPCapOffset = reader.ReadInt(); m_CPSpent = reader.ReadInt(); goto case 73; } case 73: { m_Description2 = reader.ReadString(); m_Description3 = reader.ReadString(); goto case 72; } case 72: { m_NextBirthday = reader.ReadDateTime(); m_MaxAge = reader.ReadInt(); goto case 71; } case 71: { m_Age = reader.ReadInt(); goto case 70; } case 70: { m_LoggedOutPets = reader.ReadStrongMobileList(); goto case 69; } case 69: { m_RecreateXP = reader.ReadInt(); m_RecreateCP = reader.ReadInt(); goto case 68; } case 68: { m_LastOffenseToNature = reader.ReadDateTime(); goto case 66; } case 66: { Mobile mob = null; if( version < 92 ) mob = reader.ReadMobile(); goto case 65; } case 65: { m_LastDonationLife = reader.ReadDateTime(); goto case 64; } case 64: { m_Lives = reader.ReadInt(); goto case 63; } case 63: { m_AllyList = reader.ReadStrongMobileList(); goto case 62; } case 62: { m_Height = reader.ReadInt(); m_Weight = reader.ReadInt(); goto case 61; } case 61: { m_NextAllowance = reader.ReadDateTime(); goto case 60; } case 60: { m_Backgrounds = new Backgrounds( reader ); goto case 59; } case 59: { m_Description = reader.ReadString(); goto case 58; } case 58: { m_Masterwork = new Masterwork( reader ); goto case 57; } case 57: { m_RacialResources = new RacialResources( reader ); goto case 56; } case 56: { m_KnownLanguages = new KnownLanguages( reader ); goto case 55; } case 55: { m_SpokenLanguage = (KnownLanguage)reader.ReadInt(); goto case 54; } case 54: { m_RPTitle = reader.ReadString(); m_TitlePrefix = reader.ReadString(); goto case 53; } case 53: { m_FocusedShot = reader.ReadInt(); m_SwiftShot = reader.ReadInt(); goto case 52; } case 52: { m_WeaponSpecialization = reader.ReadString(); m_SecondSpecialization = reader.ReadString(); goto case 51; } case 51: { m_CombatStyles = new CombatStyles( reader ); m_SearingBreath = reader.ReadInt(); m_SwipingClaws = reader.ReadInt(); m_TempestuousSea = reader.ReadInt(); m_SilentHowl = reader.ReadInt(); m_ThunderingHooves = reader.ReadInt(); m_VenomousWay = reader.ReadInt(); goto case 50; } case 50: { m_RageHits = reader.ReadInt(); m_RageFeatLevel = reader.ReadInt(); goto case 49; } case 49: { int test = reader.ReadInt(); goto case 48; } case 48: { m_LastChargeStep = reader.ReadDateTime(); goto case 47; } case 47: { m_FormerDirection = (Direction)reader.ReadInt(); m_ChargeSteps = reader.ReadInt(); goto case 46; } case 46: { m_Trample = reader.ReadBool(); goto case 45; } case 45: { m_FlurryOfBlows = reader.ReadInt(); goto case 44; } case 44: { m_FocusedAttack = reader.ReadInt(); m_FightingStance = (FeatList)reader.ReadInt(); goto case 43; } case 43: { m_Intimidated = reader.ReadInt(); goto case 42; } case 42: { m_HasHuntingHoundBonus = reader.ReadBool(); goto case 41; } case 41: { m_HuntingHound = reader.ReadMobile(); m_FreeToUse = reader.ReadBool(); goto case 40; } case 40: { m_Informants = new Informants( reader ); goto case 39; } case 39: { m_EscortPrisoner = reader.ReadMobile(); goto case 38; } case 38: { m_CanBeReplaced = reader.ReadBool(); goto case 37; } case 37: { m_BackToBack = reader.ReadBool(); goto case 36; } case 36: { m_Crippled = reader.ReadBool(); goto case 35; } case 35: { m_CleaveAttack = reader.ReadBool(); goto case 34; } case 34: goto case 33; case 33: { goto case 32; } case 32: { m_SpecialAttack = (FeatList)reader.ReadInt(); m_OffensiveFeat = (FeatList)reader.ReadInt(); goto case 31; } case 31: { m_Feats = new Feats( reader ); goto case 30; } case 30: { m_Subclass = (Subclass)reader.ReadInt(); m_Advanced = (Advanced)reader.ReadInt(); goto case 29; } case 29: { m_CanBeMage = reader.ReadBool(); goto case 28; } case 28: { m_Level = reader.ReadInt(); m_XP = reader.ReadInt(); m_NextLevel = reader.ReadInt(); m_CP = reader.ReadInt(); goto case 27; } case 27: { m_StatPoints = reader.ReadInt(); m_SkillPoints = reader.ReadInt(); m_FeatSlots = reader.ReadInt(); goto case 26; } case 26: { m_Class = (Class)reader.ReadInt(); m_Nation = (Nation)reader.ReadInt(); 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(); // We cannot call SetHairMods( -1, -1 ) here because the items have not yet loaded Timer.DelayCall( TimeSpan.Zero, new TimerCallback( RevertHair ) ); } 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(); if (version < 147) m_Crimes = reader.ReadInt(); //CrimesList if (version < 148) { m_CrimesList = new Dictionary<Mobiles.Nation, int>(); m_CrimesList.Add(Nation.Alyrian, 0); m_CrimesList.Add(Nation.Azhuran, 0); m_CrimesList.Add(Nation.Khemetar, 0); m_CrimesList.Add(Nation.Mhordul, 0); m_CrimesList.Add(Nation.Tyrean, 0); m_CrimesList.Add(Nation.Vhalurian, 0); m_CrimesList.Add(Nation.Imperial, 0); m_CrimesList.Add(Nation.Sovereign, 0); m_CrimesList.Add(Nation.Society, 0); int count = reader.ReadInt(); for (int i = 0; i < count; i++) { Nation n = (Nation)reader.ReadInt(); int c = reader.ReadInt(); //m_CrimesList.Add(n, c); } } else { m_CrimesList = new Dictionary<Mobiles.Nation, int>(); int count = reader.ReadInt(); for (int i = 0; i < count; i++) { Nation n = (Nation)reader.ReadInt(); int c = reader.ReadInt(); m_CrimesList.Add(n, c); } } m_NextCriminalAct = reader.ReadDateTime(); m_CriminalActivity = reader.ReadBool(); m_Disguised = reader.ReadBool(); m_LastDisguiseTime = reader.ReadDateTime(); if (version < 149) { m_LastDeath = DateTime.Now - TimeSpan.FromDays(1); } else m_LastDeath = reader.ReadDateTime(); goto case 0; } case 0: { break; } } if (m_AvatarID == 0) m_AvatarID = 1076; //m_CrimesList.Add(Nation.Insularii, 0); if (m_CustomAvatarID1 == 0) m_CustomAvatarID1 = 1076; if (m_CustomAvatarID2 == 0) m_CustomAvatarID2 = 1076; if (m_CustomAvatarID3 == 0) m_CustomAvatarID3 = 1076; // 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(); 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 ) );*/ if( this.Lives >= 0 && !this.Alive && this.Corpse != null ) this.SendGump( new DeathGump( this, 15, this.Corpse ) ); if( this.Backpack is ArmourBackpack ) { ArmourBackpack pack = this.Backpack as ArmourBackpack; pack.Attributes.NightSight = 0; } if( version < 135 && AccessLevel < AccessLevel.GameMaster ) OldMapChar = true; if( version < 141 ) { FixSkillCost( FeatInfo.FeatCost.High, FeatInfo.FeatCost.Medium, Feats.GetFeatLevel(FeatList.Magery) ); FixSkillCost( FeatInfo.FeatCost.High, FeatInfo.FeatCost.Low, Feats.GetFeatLevel(FeatList.Concentration) ); } if( version < 145 ) { m_TitlePrefix = null; m_RPTitle = "the Alyrian"; if( m_Nation == Nation.Alyrian ) m_RPTitle = "the Alyrian"; else if( m_Nation == Nation.Azhuran ) m_RPTitle = "the Azhuran"; else if( m_Nation == Nation.Khemetar ) m_RPTitle = "the Khemetar"; else if( m_Nation == Nation.Mhordul ) m_RPTitle = "the Mhordul"; else if( m_Nation == Nation.Tyrean ) m_RPTitle = "the Tyrean"; else if( m_Nation == Nation.Vhalurian ) m_RPTitle = "the Vhalurian"; } m_Intimidated = 0; #region Removing Healing and HairStyling as feats and returning to players their CP if (Feats.GetFeatLevel(FeatList.Healing) == 3) { Feats.FeatDictionary[FeatList.Healing].AttemptRemoval(this, 3, true); } if (Feats.GetFeatLevel(FeatList.Healing) == 2) { Feats.FeatDictionary[FeatList.Healing].AttemptRemoval(this, 2, true); } if (Feats.GetFeatLevel(FeatList.Healing) == 1) { Feats.FeatDictionary[FeatList.Healing].AttemptRemoval(this, 1, true); } if (Feats.GetFeatLevel(FeatList.HairStyling) == 3) { Feats.FeatDictionary[FeatList.HairStyling].AttemptRemoval(this, 3, true); } if (Feats.GetFeatLevel(FeatList.HairStyling) == 2) { Feats.FeatDictionary[FeatList.HairStyling].AttemptRemoval(this, 2, true); } if (Feats.GetFeatLevel(FeatList.HairStyling) == 1) { Feats.FeatDictionary[FeatList.HairStyling].AttemptRemoval(this, 1, true); } #endregion m_Deserialized = true; }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 36: { m_PeacedUntil = reader.ReadDateTime(); goto case 35; } case 35: { m_AnkhNextUse = reader.ReadDateTime(); goto case 34; } case 34: { m_AutoStabled = reader.ReadStrongMobileList(); m_CustomFlags = (CustomPlayerFlag)reader.ReadEncodedInt(); if ( GetCustomFlag( CustomPlayerFlag.VisibilityList ) ) { int length = reader.ReadInt(); for( int i = 0; i < length; i++ ) VisibilityList.Add( reader.ReadMobile() ); } if ( GetCustomFlag( CustomPlayerFlag.StaffLevel ) ) AccessLevelToggler.m_Mobiles.Add( this, new AccessLevelMod( (AccessLevel)reader.ReadInt() ) ); if ( GetCustomFlag( CustomPlayerFlag.StaffRank ) ) m_StaffRank = (StaffRank)reader.ReadInt(); if ( GetCustomFlag( CustomPlayerFlag.DisplayStaffRank ) ) m_StaffTitle = reader.ReadString(); goto case 33; } case 33: // Added by Blady for Sphynx { m_FortuneType = reader.ReadEncodedInt(); if ( m_FortuneType > 0 ) { m_FortunePower = reader.ReadEncodedInt(); FortuneExpire = reader.ReadDateTime(); if ( FortuneExpire > DateTime.Now ) { ApplyFortune( m_FortuneType, m_FortunePower ); FortuneGump.Told.Add( this ); } else m_FortuneType = m_FortunePower = 0; } goto case 32; } case 32: //PowerHour added by Blady { m_PowerHourStart = reader.ReadDeltaTime(); goto case 31; } //*** Edit by Sunny ***\\ case 31: case 30: { m_OSIHouseLoading = reader.ReadBool(); goto case 29; } //*** End edit ***\\ case 29: { 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 28; } case 28: { m_LastHonorLoss = reader.ReadDeltaTime(); goto case 27; } case 27: { m_ChampionTitles = new ChampionTitleInfo(reader); goto case 26; } case 26: { m_LastValorLoss = reader.ReadDateTime(); goto case 25; } case 25: { m_ToTItemsTurnedIn = reader.ReadEncodedInt(); m_ToTTotalMonsterFame = reader.ReadInt(); goto case 24; } case 24: { m_AllianceMessageHue = reader.ReadEncodedInt(); m_GuildMessageHue = reader.ReadEncodedInt(); goto case 23; } case 23: { 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 22; } case 22: { if (version < 31) reader.ReadInt(); goto case 21; } // *** Added for Hunting Contracts *** case 21: { m_NextHuntContract = reader.ReadDateTime(); goto case 20; } // *** *** // *** Added for Honor *** case 20: { if (version < 29) { double m_HonorGain = reader.ReadDouble(); DateTime m_LastHonorLoss = reader.ReadDateTime(); DateTime m_LastEmbrace = reader.ReadDateTime(); } goto case 19; } // *** *** // *** Added for Valor *** case 19: { if (version < 29) { double m_ValorGain = reader.ReadDouble(); DateTime m_LastValorLoss = reader.ReadDeltaTime(); } 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_PaidInsurance list case 12: { m_BOBFilter = new Engines.BulkOrders.BOBFilter( reader ); goto case 11; } case 11: { if ( version < 13 ) { List<Item> paid = reader.ReadStrongItemList(); for ( int i = 0; i < paid.Count; ++i ) paid[i].PaidInsurance = 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(); // We cannot call SetHairMods( -1, -1 ) here because the items have not yet loaded // Timer.DelayCall( TimeSpan.Zero, new TimerCallback( RevertHair ) ); } 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 < 34 ) m_AutoStabled = new List<Mobile>(); break; } } // 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 void FocusTo(Mobile to) { QuestSystem.FocusTo(this, to); }
public QuestCancelGump(QuestSystem system) : base(120, 50) { m_System = system; Intern(""); AddPage(0); Closable = false; AddImageTiled(0, 0, 348, 262, 2702); AddAlphaRegion(0, 0, 348, 262); AddImage(0, 15, 10152); AddImageTiled(0, 30, 17, 200, 10151); AddImage(0, 230, 10154); AddImage(15, 0, 10252); AddImageTiled(30, 0, 300, 17, 10250); AddImage(315, 0, 10254); AddImage(15, 244, 10252); AddImageTiled(30, 244, 300, 17, 10250); AddImage(315, 244, 10254); AddImage(330, 15, 10152); AddImageTiled(330, 30, 17, 200, 10151); AddImage(330, 230, 10154); AddImage(333, 2, 10006); AddImage(333, 248, 10006); AddImage(2, 248, 10006); AddImage(2, 2, 10006); AddHtmlLocalized(25, 22, 200, 20, 1049000, 32000, false, false); // Confirm Quest Cancellation AddImage(25, 40, 3007); if (system.IsTutorial) { AddHtmlLocalized(25, 55, 300, 120, 1060836, White, false, false); // This quest will give you valuable information, skills and equipment that will help you advance in the game at a quicker pace.<BR><BR>Are you certain you wish to cancel at this time? } else { AddHtmlLocalized(25, 60, 300, 20, 1049001, 0xFFFFFF, false, false); // You have chosen to abort your quest: AddImage(25, 81, 0x25E7); AddHtmlObject(48, 80, 280, 20, system.Name, DarkGreen, false, false); AddHtmlLocalized(25, 120, 280, 20, 1049002, 0xFFFFFF, false, false); // Can this quest be restarted after quitting? AddImage(25, 141, 0x25E7); AddHtmlLocalized(48, 140, 280, 20, (system.RestartDelay < TimeSpan.MaxValue) ? 1049016 : 1049017, DarkGreen, false, false); // Yes/No } AddRadio(25, 175, 9720, 9723, true, 1); AddRadio(25, 210, 9720, 9723, false, 0); AddHtmlLocalized(60, 180, 280, 20, 1049005, 0xFFFFFF, false, false); // Yes, I really want to quit! AddHtmlLocalized(60, 215, 280, 20, 1049006, 0xFFFFFF, false, false); // No, I don't want to quit. AddButton(265, 220, 247, 248, 7, GumpButtonType.Reply, 0); }