Пример #1
0
 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);
             }
         }
     }
 }
Пример #2
0
        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);
                }
            }
        }
Пример #3
0
        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);
            }
        }