Beispiel #1
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            switch (info.ButtonID)
            {
            case 0:                     // Cancel
            {
                if (m_Owner != null)
                {
                    m_Owner.OnCancel(m_From);
                }

                break;
            }

            case 1:                     // Okay
            {
                if (m_Owner == null || m_Owner.CheckComplete(m_From))
                {
                    Offer(m_Owner, m_From, m_Race);
                }

                break;
            }
            }
        }
Beispiel #2
0
        private static void RaceChangeReply(NetState state, PacketReader pvSrc)
        {
            RaceChangeState raceChangeState;

            if (!m_Pending.TryGetValue(state, out raceChangeState))
            {
                return;
            }

            CloseCurrent(state);

            PlayerMobile pm = state.Mobile as PlayerMobile;

            if (pm == null)
            {
                return;
            }

            IRaceChanger owner      = raceChangeState.m_Owner;
            Race         targetRace = raceChangeState.m_TargetRace;

            if (pvSrc.Size == 5)
            {
                if (owner != null)
                {
                    owner.OnCancel(pm);
                }

                return;
            }

            if (!CanChange(pm, targetRace) || (owner != null && !owner.CheckComplete(pm)))
            {
                return;
            }

            int hue              = pvSrc.ReadUInt16();
            int hairItemId       = pvSrc.ReadUInt16();
            int hairHue          = pvSrc.ReadUInt16();
            int facialHairItemId = pvSrc.ReadUInt16();
            int facialHairHue    = pvSrc.ReadUInt16();

            pm.Race = targetRace;
            pm.Hue  = targetRace.ClipSkinHue(hue) | 0x8000;

            if (targetRace.ValidateHair(pm, hairItemId))
            {
                pm.HairItemID = hairItemId;
                pm.HairHue    = targetRace.ClipHairHue(hairHue);
            }
            else
            {
                pm.HairItemID = 0;
            }

            if (targetRace.ValidateFacialHair(pm, facialHairItemId))
            {
                pm.FacialHairItemID = facialHairItemId;
                pm.FacialHairHue    = targetRace.ClipHairHue(facialHairHue);
            }
            else
            {
                pm.FacialHairItemID = 0;
            }

            if (targetRace == Race.Human)
            {
                pm.SendLocalizedMessage(1073654);                   // You are now fully human.
            }
            else if (targetRace == Race.Elf)
            {
                pm.SendLocalizedMessage(1073653);                   // You are now fully initiated into the Elven culture.
            }
            else
            {
                pm.SendMessage("You have fully changed your race to {0}.", targetRace.Name);
            }

            if (owner != null)
            {
                owner.ConsumeNeeded(pm);
            }
        }