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; } } }
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); } }