예제 #1
0
        public PlayerState(GenericReader reader, Faction faction, List<PlayerState> owner)
        {
            this.m_Faction = faction;
            this.m_Owner = owner;

            int version = reader.ReadEncodedInt();

            switch ( version )
            {
                case 1:
                    {
                        this.m_IsActive = reader.ReadBool();
                        this.m_LastHonorTime = reader.ReadDateTime();
                        goto case 0;
                    }
                case 0:
                    {
                        this.m_Mobile = reader.ReadMobile();

                        this.m_KillPoints = reader.ReadEncodedInt();
                        this.m_MerchantTitle = (MerchantTitle)reader.ReadEncodedInt();

                        this.m_Leaving = reader.ReadDateTime();

                        break;
                    }
            }

            this.Attach();
        }
예제 #2
0
        public PlayerState(GenericReader reader, Faction faction, List <PlayerState> owner)
        {
            m_Faction = faction;
            m_Owner   = owner;

            int version = reader.ReadEncodedInt();

            switch (version)
            {
            case 1:
            {
                m_IsActive      = reader.ReadBool();
                m_LastHonorTime = reader.ReadDateTime();
                goto case 0;
            }

            case 0:
            {
                m_Mobile = reader.ReadMobile();

                m_KillPoints    = reader.ReadEncodedInt();
                m_MerchantTitle = (MerchantTitle)reader.ReadEncodedInt();

                m_Leaving = reader.ReadDateTime();

                break;
            }
            }

            Attach();
        }
예제 #3
0
		public static MerchantTitleInfo GetInfo( MerchantTitle title )
		{
			int idx = (int)title - 1;

			if ( idx >= 0 && idx < m_Info.Length )
				return m_Info[idx];

			return null;
		}
예제 #4
0
        public PlayerState(GenericReader reader, Faction faction, List <PlayerState> owner)
        {
            m_Faction = faction;
            m_Owner   = owner;

            int version = reader.ReadEncodedInt();

            switch (version)
            {
            case 4:
            {
                m_StolenSigilsCount = reader.ReadEncodedInt();                         //4

                m_JoinDate      = reader.ReadDateTime();
                m_LastKill      = reader.ReadDateTime();
                m_IsActive      = reader.ReadBool();
                m_LastHonorTime = reader.ReadDateTime();

                goto case 0;                         //Fixed order of deserialization for RunUO compat.
            }

            case 2:
            {
                reader.ReadDateTime();                         //LastDecay
                goto case 1;
            }

            case 1:
            {
                m_JoinDate          = reader.ReadDateTime();
                m_LastKill          = reader.ReadDateTime();
                m_StolenSigilsCount = reader.ReadEncodedInt();

                goto case 0;
            }

            // end
            case 0:
            {
                m_Mobile = reader.ReadMobile();

                m_KillPoints    = reader.ReadEncodedInt();
                m_MerchantTitle = (MerchantTitle)reader.ReadEncodedInt();

                m_Leaving = reader.ReadDateTime();

                if (version < 2)
                {
                    m_JoinDate = DateTime.Now;
                }

                break;
            }
            }

            Attach();
        }
예제 #5
0
        public static MerchantTitleInfo GetInfo(MerchantTitle title)
        {
            int idx = (int)title - 1;

            if (idx >= 0 && idx < Info.Length)
            {
                return(Info[idx]);
            }

            return(null);
        }
        public PlayerState( GenericReader reader, Faction faction, List<PlayerState> owner )
        {
            m_Faction = faction;
            m_Owner = owner;

            int version = reader.ReadEncodedInt();

            switch ( version )
            {
                case 3:
                {
                    m_JoinDate = reader.ReadDateTime();
                    goto case 2;
                }
                case 2:
                {
                    m_LastKill = reader.ReadDateTime();
                    goto case 1;
                }
                case 1:
                {
                    m_IsActive = reader.ReadBool();
                    m_LastHonorTime = reader.ReadDateTime();
                    goto case 0;
                }
                case 0:
                {
                    m_Mobile = reader.ReadMobile();

                    m_KillPoints = reader.ReadEncodedInt();
                    m_MerchantTitle = (MerchantTitle)reader.ReadEncodedInt();

                    m_Leaving = reader.ReadDateTime();

                    if ( version < 3 )
                        m_JoinDate = DateTime.Now;

                    break;
                }
            }

            Attach();
        }
예제 #7
0
        public PlayerState(GenericReader reader, Faction faction, PlayerStateCollection owner)
        {
            m_Faction = faction;
            m_Owner   = owner;

            int version = reader.ReadEncodedInt();

            switch (version)
            {
            case 0:
            {
                m_Mobile = reader.ReadMobile();

                m_KillPoints    = reader.ReadEncodedInt();
                m_MerchantTitle = (MerchantTitle)reader.ReadEncodedInt();

                m_Leaving = reader.ReadDateTime();

                break;
            }
            }

            Attach();
        }
예제 #8
0
        public PlayerState( GenericReader reader, Faction faction, PlayerStateCollection owner )
        {
            m_Faction = faction;
            m_Owner = owner;

            int version = reader.ReadEncodedInt();

            switch ( version )
            {
                case 0:
                    {
                        m_Mobile = reader.ReadMobile();

                        m_KillPoints = reader.ReadEncodedInt();
                        m_MerchantTitle = (MerchantTitle) reader.ReadEncodedInt();

                        m_Leaving = reader.ReadDateTime();

                        break;
                    }
            }

            Attach();
        }
예제 #9
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            int type, index;

            if (!FromButtonID(info.ButtonID, out type, out index))
            {
                return;
            }

            switch (type)
            {
            case 0:                     // general
            {
                switch (index)
                {
                case 0:                                 // vote
                {
                    m_From.SendGump(new ElectionGump(m_From, m_Faction.Election));
                    break;
                }

                case 1:                                 // leave
                {
                    m_From.SendGump(new LeaveFactionGump(m_From, m_Faction));
                    break;
                }
                }

                break;
            }

            case 1:                     // merchant title
            {
                if (index >= 0 && index <= MerchantTitles.Info.Length)
                {
                    PlayerState pl = PlayerState.Find(m_From);

                    MerchantTitle     newTitle = (MerchantTitle)index;
                    MerchantTitleInfo mti      = MerchantTitles.GetInfo(newTitle);

                    if (mti == null)
                    {
                        m_From.SendAsciiMessage("Your merchant title has been removed.");

                        if (pl != null)
                        {
                            pl.MerchantTitle = newTitle;
                        }
                    }
                    else if (MerchantTitles.IsQualified(m_From, mti))
                    {
                        m_From.SendLocalizedMessage(mti.Assigned);

                        if (pl != null)
                        {
                            pl.MerchantTitle = newTitle;
                        }
                    }
                }

                break;
            }

            case 2:                     // transfer silver
            {
                if (!m_Faction.IsCommander(m_From))
                {
                    return;
                }

                TownCollection towns = Town.Towns;

                if (index >= 0 && index < towns.Count)
                {
                    Town town = towns[index];

                    if (town.Owner == m_Faction)
                    {
                        if (m_Faction.Silver >= 10000)
                        {
                            m_Faction.Silver -= 10000;
                            town.Silver      += 10000;

                            m_From.SendAsciiMessage("10k in silver has been received by: " + town.Definition.FriendlyName);
                        }
                    }
                }

                break;
            }

            case 3:                     // change tithe
            {
                if (!m_Faction.IsCommander(m_From))
                {
                    return;
                }

                if (index >= 0 && index <= 10)
                {
                    m_Faction.Tithe = index * 10;
                }

                break;
            }
            }
        }
예제 #10
0
 public static bool IsQualified( Mobile mob, MerchantTitle title )
 {
     return IsQualified( mob, GetInfo( title ) );
 }
예제 #11
0
 public static bool IsQualified(Mobile mob, MerchantTitle title) => IsQualified(mob, GetInfo(title));