public void Grant() { if (m_Mobile is PlayerMobile) { RankDefinition[] defs = m_Ethic.Definition.Ranks; TitleProfile p = CustomTitles.EnsureProfile(m_Mobile as PlayerMobile); Title title = null; TitleHue hue = null; if (CustomTitles.TryGetTitle(defs[0].Title, out title) && !p.Contains((title))) { p.Add(title); } if (CustomTitles.TryGetHue(m_Ethic.Definition.TitleHue, out hue) && !p.Contains(hue)) { p.Add(hue); } m_Mobile.SendMessage(54, "You have decided to follow the path of {0}!", m_Ethic.Definition.Title); m_Mobile.SendMessage(54, "You have been granted the title {0} and the title hue {1}.", defs[0].Title, m_Ethic.Definition.TitleHue); m_Mobile.SendMessage(54, "You have been granted an ethic spellbook."); if (m_Mobile.Backpack != null) { Item spellbook; if (m_Ethic == Ethic.Evil) { spellbook = new Evilspellbook(); m_Mobile.AddToBackpack(spellbook); } else if (m_Ethic == Ethic.Hero) { spellbook = new Herospellbook(); m_Mobile.AddToBackpack(spellbook); } } } }
public void AdjustRank() { int rank = m_Rank; RankDefinition[] defs = m_Ethic.Definition.Ranks; for (int i = 0; i < defs.Length; i++) { if (i + 1 == defs.Length || (m_Sphere >= defs[i].Points && m_Sphere < defs[i + 1].Points)) { m_Rank = i; break; } } if (m_Rank < rank) { m_Mobile.SendMessage(54, "You have lost a rank in your ethic. You are now rank {0}.", m_Rank); m_Mobile.SendMessage(54, "For your failure, you are no longer considered a {0} in the {1} ethic.", defs[rank].Title, m_Ethic.Definition.Title); TitleProfile p = CustomTitles.EnsureProfile(m_Mobile as PlayerMobile); Title title = null; if (CustomTitles.TryGetTitle(defs[rank].Title, out title) && p.Contains(title)) { if (p.SelectedTitle != null && p.SelectedTitle.MaleTitle == title.MaleTitle) { p.SelectedTitle = null; } p.Remove(title); } } else if (m_Rank > rank) { m_Mobile.SendMessage(54, "You are now rank {0} in your ethic.", m_Rank); m_Mobile.SendMessage(54, "You have been granted the title {0} for your hard work and dedication towards following the path of {1}.", defs[m_Rank].Title, m_Ethic.Definition.Title); TitleProfile p = CustomTitles.EnsureProfile(m_Mobile as PlayerMobile); Title title = null; if (CustomTitles.TryGetTitle(defs[m_Rank].Title, out title) && !p.Contains(title)) { p.Add(title); } } }
public void Detach() { if (m_Mobile is PlayerMobile) { RankDefinition[] defs = m_Ethic.Definition.Ranks; (m_Mobile as PlayerMobile).EthicPlayer = null; TitleProfile p = CustomTitles.EnsureProfile(m_Mobile as PlayerMobile); TitleHue hue = null; if (CustomTitles.TryGetHue(m_Ethic.Definition.TitleHue, out hue) && p.Contains(hue)) { if (p.SelectedHue != null && p.SelectedHue.Hue == hue.Hue) { p.SelectedHue = null; } p.Remove(hue); } foreach (var rank in defs) { Title title; if (CustomTitles.TryGetTitle(rank.Title, out title) && p.Contains(title)) { if (p.SelectedTitle != null && p.SelectedTitle.MaleTitle == title.MaleTitle) { p.SelectedTitle = null; } p.Remove(title); } } m_Ethic.Players.Remove(this); m_Mobile.SendMessage(54, "You have departed from the path of {0}!", m_Ethic.Definition.Title); m_Mobile.SendMessage(54, "For your abandonment of this ethic, you have been stripped of all ethic titles and the title hue {0}.", m_Ethic.Definition.TitleHue); } }