示例#1
0
        public override void ChildDeserialize(IGenericReader reader)
        {
            var version = reader.ReadEncodedInt();

            CorpseWithBone = (Container)reader.ReadItem();
        }
示例#2
0
        public override void Deserialize(IGenericReader reader)
        {
            base.Deserialize(reader);

            var version = reader.ReadEncodedInt();
        }
示例#3
0
 public virtual void ChildDeserialize(IGenericReader reader)
 {
     int version = reader.ReadEncodedInt();
 }
示例#4
0
        public override void ChildDeserialize(IGenericReader reader)
        {
            var version = reader.ReadEncodedInt();

            m_Ambushed = reader.ReadBool();
        }
示例#5
0
        public FactionState(IGenericReader reader)
        {
            int version = reader.ReadEncodedInt();

            switch (version)
            {
            case 5:
            {
                LastAtrophy = reader.ReadDateTime();
                goto case 4;
            }

            case 4:
            {
                int count = reader.ReadEncodedInt();

                for (int i = 0; i < count; ++i)
                {
                    DateTime time = reader.ReadDateTime();

                    if (i < m_LastBroadcasts.Length)
                    {
                        m_LastBroadcasts[i] = time;
                    }
                }

                goto case 3;
            }

            case 3:
            case 2:
            case 1:
            {
                Election = new Election(reader);

                goto case 0;
            }

            case 0:
            {
                m_Faction = Faction.ReadReference(reader);

                m_Commander = reader.ReadMobile();

                if (version < 5)
                {
                    LastAtrophy = DateTime.UtcNow;
                }

                if (version < 4)
                {
                    DateTime time = reader.ReadDateTime();

                    if (m_LastBroadcasts.Length > 0)
                    {
                        m_LastBroadcasts[0] = time;
                    }
                }

                Tithe  = reader.ReadEncodedInt();
                Silver = reader.ReadEncodedInt();

                int memberCount = reader.ReadEncodedInt();

                Members = new List <PlayerState>();

                for (int i = 0; i < memberCount; ++i)
                {
                    PlayerState pl = new PlayerState(reader, m_Faction, Members);

                    if (pl.Mobile != null)
                    {
                        Members.Add(pl);
                    }
                }

                m_Faction.State = this;

                m_Faction.ZeroRankOffset = Members.Count;
                Members.Sort();

                for (int i = Members.Count - 1; i >= 0; i--)
                {
                    PlayerState player = Members[i];

                    if (player.KillPoints <= 0)
                    {
                        m_Faction.ZeroRankOffset = i;
                    }
                    else
                    {
                        player.RankIndex = i;
                    }
                }

                FactionItems = new List <FactionItem>();

                if (version >= 2)
                {
                    int factionItemCount = reader.ReadEncodedInt();

                    for (int i = 0; i < factionItemCount; ++i)
                    {
                        FactionItem factionItem = new FactionItem(reader, m_Faction);

                        Timer.DelayCall(TimeSpan.Zero, factionItem.CheckAttach); // sandbox attachment
                    }
                }

                Traps = new List <BaseFactionTrap>();

                if (version >= 3)
                {
                    int factionTrapCount = reader.ReadEncodedInt();

                    for (int i = 0; i < factionTrapCount; ++i)
                    {
                        if (reader.ReadItem() is BaseFactionTrap trap && !trap.CheckDecay())
                        {
                            Traps.Add(trap);
                        }
                    }
                }

                break;
            }
            }

            if (version < 1)
            {
                Election = new Election(m_Faction);
            }
        }
示例#6
0
        public override void ChildDeserialize(IGenericReader reader)
        {
            var version = reader.ReadEncodedInt();

            m_MaxProgress = reader.ReadInt();
        }
示例#7
0
        public override void ChildDeserialize(IGenericReader reader)
        {
            var version = reader.ReadEncodedInt();

            StolenTreasure = reader.ReadBool();
        }
示例#8
0
        public Tournament(IGenericReader reader)
        {
            int version = reader.ReadEncodedInt();

            switch (version)
            {
            case 5:
            {
                FactionRestricted = reader.ReadBool();

                goto case 4;
            }

            case 4:
            {
                EventController = reader.ReadItem() as EventController;

                goto case 3;
            }

            case 3:
            {
                SuddenDeathRounds = reader.ReadEncodedInt();

                goto case 2;
            }

            case 2:
            {
                TourneyType = (TourneyType)reader.ReadEncodedInt();

                goto case 1;
            }

            case 1:
            {
                GroupType    = (GroupingType)reader.ReadEncodedInt();
                TieType      = (TieType)reader.ReadEncodedInt();
                SignupPeriod = reader.ReadTimeSpan();

                goto case 0;
            }

            case 0:
            {
                if (version < 3)
                {
                    SuddenDeathRounds = 3;
                }

                m_ParticipantsPerMatch  = reader.ReadEncodedInt();
                m_PlayersPerParticipant = reader.ReadEncodedInt();
                SignupPeriod            = reader.ReadTimeSpan();
                CurrentStage            = TournamentStage.Inactive;
                Pyramid = new TourneyPyramid();
                Ruleset = new Ruleset(RulesetLayout.Root);
                Ruleset.ApplyDefault(Ruleset.Layout.Defaults[0]);
                Participants = new List <TourneyParticipant>();
                Undefeated   = new List <TourneyParticipant>();
                Arenas       = new List <Arena>();

                break;
            }
            }

            Timer.DelayCall(SliceInterval, SliceInterval, Slice);
        }
示例#9
0
        public override void Deserialize(IGenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            LoadSBInfo();

            List <SBInfo> sbInfos = this.SBInfos;

            switch (version)
            {
            case 1:
            {
                int index;

                while ((index = reader.ReadEncodedInt()) > 0)
                {
                    int doubled = reader.ReadEncodedInt();

                    if (sbInfos != null)
                    {
                        index -= 1;
                        int sbInfoIndex  = index % sbInfos.Count;
                        int buyInfoIndex = index / sbInfos.Count;

                        if (sbInfoIndex >= 0 && sbInfoIndex < sbInfos.Count)
                        {
                            SBInfo sbInfo = sbInfos[sbInfoIndex];
                            List <GenericBuyInfo> buyInfo = sbInfo.BuyInfo;

                            if (buyInfo != null && buyInfoIndex >= 0 && buyInfoIndex < buyInfo.Count)
                            {
                                GenericBuyInfo gbi = (GenericBuyInfo)buyInfo[buyInfoIndex];

                                int amount = 20;

                                switch (doubled)
                                {
                                case 1:
                                    amount = 40;
                                    break;

                                case 2:
                                    amount = 80;
                                    break;

                                case 3:
                                    amount = 160;
                                    break;

                                case 4:
                                    amount = 320;
                                    break;

                                case 5:
                                    amount = 640;
                                    break;

                                case 6:
                                    amount = 999;
                                    break;
                                }

                                gbi.Amount = gbi.MaxAmount = amount;
                            }
                        }
                    }
                }

                break;
            }
            }
        }
示例#10
0
        public override void ChildDeserialize(IGenericReader reader)
        {
            int version = reader.ReadEncodedInt();

            m_SentRadarConversion = reader.ReadBool();
        }
示例#11
0
        public override void ChildDeserialize(IGenericReader reader)
        {
            int version = reader.ReadEncodedInt();

            TaughtHowToUseSkills = reader.ReadBool();
        }
示例#12
0
        public override void Deserialize(IGenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 3:
            {
                m_ReplenishesCharges = reader.ReadBool();

                if (m_ReplenishesCharges)
                {
                    m_LastReplenished = reader.ReadDateTime();
                }

                goto case 2;
            }

            case 2:
            {
                m_Crafter = reader.ReadEntity <Mobile>();

                m_Quality = (InstrumentQuality)reader.ReadEncodedInt();
                m_Slayer  = (SlayerName)reader.ReadEncodedInt();
                m_Slayer2 = (SlayerName)reader.ReadEncodedInt();

                UsesRemaining = reader.ReadEncodedInt();

                m_WellSound  = reader.ReadEncodedInt();
                m_BadlySound = reader.ReadEncodedInt();

                break;
            }

            case 1:
            {
                m_Crafter = reader.ReadEntity <Mobile>();

                m_Quality = (InstrumentQuality)reader.ReadEncodedInt();
                m_Slayer  = (SlayerName)reader.ReadEncodedInt();

                UsesRemaining = reader.ReadEncodedInt();

                m_WellSound  = reader.ReadEncodedInt();
                m_BadlySound = reader.ReadEncodedInt();

                break;
            }

            case 0:
            {
                m_WellSound   = reader.ReadInt();
                m_BadlySound  = reader.ReadInt();
                UsesRemaining = Utility.RandomMinMax(InitMinUses, InitMaxUses);

                break;
            }
            }

            CheckReplenishUses();
        }
示例#13
0
        public override void Deserialize(IGenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 0:
            {
                m_EffectDelay  = reader.ReadTimeSpan();
                m_TriggerDelay = reader.ReadTimeSpan();
                m_SoundDelay   = reader.ReadTimeSpan();

                m_Source  = ReadEntity(reader);
                m_Target  = ReadEntity(reader);
                m_Trigger = reader.ReadEntity <EffectController>();

                m_FixedDirection     = reader.ReadBool();
                m_Explodes           = reader.ReadBool();
                m_PlaySoundAtTrigger = reader.ReadBool();

                m_EffectType  = (ECEffectType)reader.ReadEncodedInt();
                m_EffectLayer = (EffectLayer)reader.ReadEncodedInt();
                m_TriggerType = (EffectTriggerType)reader.ReadEncodedInt();

                m_ItemID                = reader.ReadEncodedInt();
                m_Hue                   = reader.ReadEncodedInt();
                m_RenderMode            = reader.ReadEncodedInt();
                m_Speed                 = reader.ReadEncodedInt();
                m_Duration              = reader.ReadEncodedInt();
                m_ParticleEffect        = reader.ReadEncodedInt();
                m_ExplodeParticleEffect = reader.ReadEncodedInt();
                m_ExplodeSound          = reader.ReadEncodedInt();
                m_Unknown               = reader.ReadEncodedInt();
                m_SoundID               = reader.ReadEncodedInt();
                m_TriggerRange          = reader.ReadEncodedInt();

                break;
            }
            }
        }