RunUO Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

[2.x] Player level based on skill

xxx007xxx

Sorceror
6 class:Bard,Ranger,Rogue,Warrior,Mage,Crafter
each class use 8 skill and the total skill set the class level.

in PlayerMobile.cs

in public class PlayerMobile : Mobile, IHonorTarget
add
Code:
 private int m_Bardlvl;
          private int m_Rangerlvl;
          private int m_Roguelvl;
            private int m_Warriorlvl;
            private int m_Magelvl;
              private int m_Crafterlvl;       
          private RaceTypes m_Races;
        private ClassType m_Class;
 
    [CommandProperty( AccessLevel.GameMaster )]
        public RaceTypes Races
        {
            get{ return m_Races; }
            set{ m_Races = value; }
        }
        [CommandProperty( AccessLevel.GameMaster )]
        public ClassType Class
        {
            get{ return m_Class; }
            set{ m_Class = value; }
        }
        [CommandProperty( AccessLevel.Owner )]
        public int Bardlvl
        {
            get{ return m_Bardlvl; }
            set{ m_Bardlvl = value; }
        }
        [CommandProperty( AccessLevel.Owner )]
        public int Rangerlvl
        {
            get{ return m_Rangerlvl; }
            set{ m_Rangerlvl = value; }
        }
        [CommandProperty( AccessLevel.Owner )]
        public int Roguelvl
        {
            get{ return m_Roguelvl; }
            set{ m_Roguelvl = value; }
        }
        [CommandProperty( AccessLevel.Owner )]
        public int Warriorlvl
        {
            get{ return m_Warriorlvl; }
            set{ m_Warriorlvl = value; }
        }
        [CommandProperty( AccessLevel.Owner )]
        public int Magelvl
        {
            get{ return m_Magelvl; }
            set{ m_Magelvl = value; }
        }
        [CommandProperty( AccessLevel.Owner )]
        public int Crafterlvl
        {
            get{ return m_Crafterlvl; }
            set{ m_Crafterlvl = value; }
        }
       
      public static void UpdateLVLMobile(Mobile from)
        {
            PlayerMobile pm = (PlayerMobile)from;
              pm._ClassTimer = null;
                  switch(pm.Class)
                  {
                          case ClassType.None : break;//check all and set if il est classe
                          case ClassType.Crafter :  PlayerMobile.SetCrafterlvl(from);      break;
                          case ClassType.Rogue :  PlayerMobile.SetRoguelvl(from);      break;
                          case ClassType.Bard :    PlayerMobile.SetBardlvl(from);      break;
                          case ClassType.Warrior :    PlayerMobile.SetWariorlvl(from);      break;
                          case ClassType.Mage :  PlayerMobile.SetMagelvl(from);      break;
                          case ClassType.Ranger :  PlayerMobile.SetRangerlvl(from);      break;
                  }
        }
        public static int TotalWarior(Mobile from)
        {
              Skills skills = from.Skills;
      int TotalSkill = (int)( (skills[SkillName.Anatomy].Value * 10) + (skills[SkillName.Healing].Value * 10) + (skills[SkillName.Macing].Value * 10) + (skills[SkillName.Parry].Value * 10) + (skills[SkillName.Swords].Value * 10) + (skills[SkillName.Tactics].Value * 10) + (skills[SkillName.Wrestling].Value * 10) + (skills[SkillName.Fencing].Value * 10) );
          return (int)TotalSkill;
                }
            public static int TotalBard(Mobile from)
        {
              Skills skills = from.Skills;
          int TotalSkill = (int)( (skills[SkillName.Begging].Value * 10) + (skills[SkillName.Cartography].Value * 10) + (skills[SkillName.Discordance].Value * 10) + (skills[SkillName.Forensics].Value * 10) + (skills[SkillName.Herding].Value * 10) + (skills[SkillName.Musicianship].Value * 10) + (skills[SkillName.Provocation].Value * 10) + (skills[SkillName.Forensics].Value * 10)  );
          return (int)TotalSkill;
                }
            public static int TotalRogue(Mobile from)
        {
              Skills skills = from.Skills;
          int TotalSkill = (int)( (skills[SkillName.DetectHidden].Value * 10) + (skills[SkillName.Hiding].Value * 10) + (skills[SkillName.Lockpicking].Value * 10) + (skills[SkillName.Poisoning].Value * 10) + (skills[SkillName.RemoveTrap].Value * 10) + (skills[SkillName.Snooping].Value * 10) + (skills[SkillName.Stealing].Value * 10) + (skills[SkillName.Stealth].Value * 10) );
          return (int)TotalSkill;
                }
            public static int TotalRanger(Mobile from)
        {
              Skills skills = from.Skills;
          int TotalSkill = (int)( (skills[SkillName.AnimalLore].Value * 10) + (skills[SkillName.AnimalTaming].Value * 10) + (skills[SkillName.Archery].Value * 10) + (skills[SkillName.Camping].Value * 10) + (skills[SkillName.Cooking].Value * 10) + (skills[SkillName.Fishing].Value * 10) + (skills[SkillName.Veterinary].Value * 10) + (skills[SkillName.Tracking].Value * 10) );
                  return (int)TotalSkill;
                }
            public static int TotalCrafter(Mobile from)
        {
              Skills skills = from.Skills;
        int TotalSkill = (int)( (skills[SkillName.Blacksmith].Value * 10) + (skills[SkillName.ArmsLore].Value * 10) + (skills[SkillName.Carpentry].Value * 10) + (skills[SkillName.Fletching].Value * 10) + (skills[SkillName.Lumberjacking].Value * 10) + (skills[SkillName.Mining].Value * 10) + (skills[SkillName.Tailoring].Value * 10) + (skills[SkillName.Tinkering].Value * 10));
              return (int)TotalSkill;
                }
        public static int TotalMage(Mobile from)
        {
              Skills skills = from.Skills;
          int TotalSkill = (int)( (skills[SkillName.Alchemy].Value * 10) + (skills[SkillName.EvalInt].Value * 10) + (skills[SkillName.Inscribe].Value * 10) + (skills[SkillName.ItemID].Value * 10) + (skills[SkillName.Magery].Value * 10) + (skills[SkillName.MagicResist].Value * 10) +  (skills[SkillName.Meditation].Value * 10) + (skills[SkillName.SpiritSpeak].Value * 10));
                    return (int)TotalSkill;
                }
        public static int GetClassLVL(PlayerMobile pm)
        {
          //  Mobile from = this;
          //  PlayerMobile pm = (PlayerMobile)from;
 
            switch (pm.Class)
            {
                case ClassType.None: return 0; break;
                case ClassType.Crafter: return pm.Crafterlvl; ; break;
                case ClassType.Rogue: return pm.Roguelvl; ; break;
                case ClassType.Bard: return pm.Bardlvl; ; break;
                case ClassType.Warrior: return pm.Warriorlvl; ; break;
                case ClassType.Mage: return pm.Magelvl; ; break;
                case ClassType.Ranger: return pm.Rangerlvl; ; break;
                default: return 0; break;
            }
        }
        /*
public static void SetNonelvl (Mobile from)
            {
        PlayerMobile pm = (PlayerMobile)from;
            //  Console.WriteLine(""+from.Name+""+TotalSkill+"");
              if(from.SkillsTotal > 12600 )
                {
                //pm.Class = ClassType.None;
                return;
            }
          int TotalMage =  TotalMage(from);
            int TotalWarior =  TotalWarior(from);
              int TotalBard =  TotalBard(from);
              int TotalCrafter =  TotalCrafter(from);
              int TotalRogue =  TotalRogue(from);
            int TotalRanger =  TotalRanger(from);
                         
            }
            */
    public static void SetMagelvl (Mobile from)   
            {
        PlayerMobile pm = (PlayerMobile)from;
            int TotalSkill =  TotalMage(from);
            if(from.SkillsTotal >= 12600 )
                {
                pm.Magelvl = 0;
            //    SetMagepacklv0(from); //set classe none
                    pm.Class = ClassType.None;
                return;
            }
            switch (pm.Magelvl)
            {
              case 0:
                    if (TotalSkill >= 6400 )
                    {
                        pm.Magelvl = 1;// SetMagepacklv1(from);
                            pm.Class = ClassType.Mage;
                    }
                    break;
                    case 1:
                    if (TotalSkill >= 7600 )
                        {
                        pm.Magelvl = 2;// SetMagepacklv2(from);
                        }
                    if(TotalSkill <= 6399 )
                        {
                        pm.Magelvl = 0; //SetMagepacklv0(from);
                    //    pm.Class = ClassType.None;
                        }
                    break;
                case 2:
                    if (TotalSkill >= 8800 )
                        {
                        pm.Magelvl = 3; //SetMagepacklv3(from);
                        }
                    if (TotalSkill <= 7599 )
                        {
                          pm.Magelvl = 1;//SetMagepacklv1(from);
                          }
                    break;
                case 3:
                      if (TotalSkill >=10000 )
                          {
                          pm.Magelvl = 4;//SetMagepacklv4(from);
                          }
                      if (TotalSkill <= 8799 )
                          {
                          pm.Magelvl = 2;//SetMagepacklv2(from);
                          }
                      break;
                case 4:
                      if (TotalSkill >= 11200 )
                          {
                          pm.Magelvl = 5; //SetMagepacklv5(from);
                          }
                    if (TotalSkill <= 9999 )
                        {
                          pm.Magelvl = 3;//SetMagepacklv3(from);
                          }
                    break;
                case 5:
                      if (TotalSkill >= 11600 && from.SkillsTotal <= 11600)
                          {
                          pm.Magelvl = 6; //SetMagepacklv6(from);
                          }
                      if (TotalSkill <= 11199 )
                          {
                          pm.Magelvl = 4;//SetMagepacklv4(from);
                          }
                      break;
                case 6:
                  if (TotalSkill <= 11599 || from.SkillsTotal > 11600)
                          {
                          pm.Magelvl = 5; //PlayerMobile.SetMagepacklv5(from);
                          }
                  break;
            }
            }     
     
    public static void SetWariorlvl (Mobile from)
            {
        PlayerMobile pm = (PlayerMobile)from;
            int TotalSkill =  TotalWarior(from);
              Console.WriteLine(""+from.Name+""+TotalSkill+"");
              if(from.SkillsTotal > 12600 )
                {
                pm.Warriorlvl = 0;
                //SetWariorpacklvl0(from); //set classe none
                pm.Class = ClassType.None;
                return;
            }
            switch (pm.Warriorlvl)
            {
                case 0:
                    if (TotalSkill >= 6400 )
                        {
                        pm.Warriorlvl = 1;// SetWariorpacklvl1(from);
                            pm.Class = ClassType.Warrior;
                        }
                    break;
                case 1:
                    if (TotalSkill >= 7600 )
                        {
                        pm.Warriorlvl = 2;// SetWariorpacklvl2(from);
                        }
                    if(TotalSkill <= 6399 )
                        {
                        pm.Warriorlvl = 0; //SetWariorpacklvl0(from);
                    //    pm.Class = ClassType.None;
                        }
                    break;
                case 2:
                    if (TotalSkill >= 8800 )
                        {
                        pm.Warriorlvl = 3; //SetWariorpacklvl3(from);
                        }
                    if (TotalSkill <= 7599 )
                        {
                          pm.Warriorlvl = 1;//SetWariorpacklvl1(from);
                          }
                    break;
                case 3:
                      if (TotalSkill >=10000 )
                          {
                          pm.Warriorlvl = 4; //SetWariorpacklvl4(from);
                          }
                      if (TotalSkill <= 8799 )
                          {
                          pm.Warriorlvl = 2;//SetWariorpacklvl2(from);
                          }
                      break;
                case 4:
                      if (TotalSkill >= 11200 )
                          {
                          pm.Warriorlvl = 5; //SetWariorpacklvl5(from);
                          }
                    if (TotalSkill <= 9999 )
                        {
                          pm.Warriorlvl = 3;//SetWariorpacklvl3(from);
                          }
                    break;
                case 5:
                      if (TotalSkill >= 11600 && from.SkillsTotal <= 11600)
                          {
                          pm.Warriorlvl = 6; //SetWariorpacklvl6(from);
                          }
                      if (TotalSkill <= 11199 )
                          {
                          pm.Warriorlvl = 4;//SetWariorpacklvl4(from);
                          }
                      break;
                case 6:
                  if (TotalSkill <= 11599 || from.SkillsTotal > 11600)
                          {
                          pm.Warriorlvl = 5; //SetWariorpacklvl5(from);
                          }
                  break;
            }         
        }
    public static void SetRangerlvl (Mobile from)
            {
        PlayerMobile pm = (PlayerMobile)from;
            int TotalSkill =  TotalRanger(from);
            //  Console.WriteLine(""+from.Name+""+TotalSkill+"");
              if(from.SkillsTotal > 12600 )
                {
                pm.Rangerlvl = 0;
                //SetRangerpacklv0(from); //set classe none
                    pm.Class = ClassType.None;
                return;
            }
            switch (pm.Rangerlvl)
            {
                case 0:
                    if (TotalSkill >= 6400 )
                        {
                        pm.Rangerlvl = 1;// SetRangerpacklv1(from);
                            pm.Class = ClassType.Ranger;
                        }
                    break;
                case 1:
                    if (TotalSkill >= 7600 )
                        {
                        pm.Rangerlvl = 2; //SetRangerpacklv2(from);
                        }
                    if(TotalSkill <= 6399 )
                        {
                        pm.Rangerlvl = 0; //SetRangerpacklv0(from);
                    //    pm.Class = ClassType.None;
                        }
                    break;
                case 2:
                    if (TotalSkill >= 8800 )
                        {
                        pm.Rangerlvl = 3; //SetRangerpacklv3(from);
                        }
                    if (TotalSkill <= 7599 )
                        {
                          pm.Rangerlvl = 1;//SetRangerpacklv1(from);
                          }
                    break;
                case 3:
                      if (TotalSkill >=10000 )
                          {
                          pm.Rangerlvl = 4; //SetRangerpacklv4(from);
                          }
                      if (TotalSkill <= 8799 )
                          {
                          pm.Rangerlvl = 2;//SetRangerpacklv2(from);
                          }
                      break;
                case 4:
                      if (TotalSkill >= 11200 )
                          {
                          pm.Rangerlvl = 5;// SetRangerpacklv5(from);
                          }
                    if (TotalSkill <= 9999 )
                        {
                          pm.Rangerlvl = 3;//SetRangerpacklv3(from);
                          }
                    break;
                case 5:
                      if (TotalSkill >= 11600 && from.SkillsTotal <= 11600)
                          {
                          pm.Rangerlvl = 6; //SetRangerpacklv6(from);
                          }
                      if (TotalSkill <= 11199 )
                          {
                          pm.Rangerlvl = 4;//SetRangerpacklv4(from);
                          }
                      break;
                case 6:
                  if (TotalSkill <= 11599 || from.SkillsTotal > 11600)
                          {
                          pm.Rangerlvl = 5;// SetRangerpacklv5(from);
                          }
                  break;
            }                 
        }
    public static void SetBardlvl (Mobile from)
                {
        PlayerMobile pm = (PlayerMobile)from;
            int TotalSkill =  TotalBard(from);
            //  Console.WriteLine(""+from.Name+""+TotalSkill+"");
              if(from.SkillsTotal > 12600 )
                {
                pm.Bardlvl = 0;
                //SetBardpacklv0(from); //set classe none
                    pm.Class = ClassType.None;
                return;
            }
            switch (pm.Bardlvl)
            {
                case 0:
                    if (TotalSkill >= 6400 )
                        {
                        pm.Bardlvl = 1;// SetBardpacklv1(from);
                            pm.Class = ClassType.Bard;
                        }
                    break;
                case 1:
                    if (TotalSkill >= 7600 )
                        {
                        pm.Bardlvl = 2; //SetBardpacklv2(from);
                        }
                    if(TotalSkill <= 6399 )
                        {
                        pm.Bardlvl = 0; //SetBardpacklv0(from);
                    //    pm.Class = ClassType.None;
                        }
                    break;
                case 2:
                    if (TotalSkill >= 8800 )
                        {
                        pm.Bardlvl = 3;// SetBardpacklv3(from);
                        }
                    if (TotalSkill <= 7599 )
                        {
                          pm.Bardlvl = 1;//SetBardpacklv1(from);
                          }
                    break;
                case 3:
                      if (TotalSkill >=10000 )
                          {
                          pm.Bardlvl = 4;// SetBardpacklv4(from);
                          }
                      if (TotalSkill <= 8799 )
                          {
                          pm.Bardlvl = 2;//SetBardpacklv2(from);
                          }
                      break;
                case 4:
                      if (TotalSkill >= 11200 )
                          {
                          pm.Bardlvl = 5; //SetBardpacklv5(from);
                          }
                    if (TotalSkill <= 9999 )
                        {
                          pm.Bardlvl = 3;//SetBardpacklv3(from);
                          }
                    break;
                case 5:
                      if (TotalSkill >= 11600 && from.SkillsTotal <= 11600)
                          {
                          pm.Bardlvl = 6;// SetBardpacklv6(from);
                          }
                      if (TotalSkill <= 11199 )
                          {
                          pm.Bardlvl = 4;//SetBardpacklv4(from);
                          }
                      break;
                case 6:
                  if (TotalSkill <= 11599 || from.SkillsTotal > 11600)
                          {
                          pm.Bardlvl = 5; //SetBardpacklv5(from);
                          }
                  break;
            }                 
        }
           
    public static void SetCrafterlvl (Mobile from)
            {
        PlayerMobile pm = (PlayerMobile)from;
            int TotalSkill =  TotalCrafter(from);
            //  Console.WriteLine(""+from.Name+""+TotalSkill+"");
              if(from.SkillsTotal > 12600 )
                {
                pm.Crafterlvl = 0;
                //SetCrafterpacklv0(from); //set classe none
                    pm.Class = ClassType.None;
                return;
            }
            switch (pm.Crafterlvl)
            {
                case 0:
                    if (TotalSkill >= 6400 )
                        {
                        pm.Crafterlvl = 1; //SetCrafterpacklv1(from);
                            pm.Class = ClassType.Crafter;
                        }
                    break;
                case 1:
                    if (TotalSkill >= 7600 )
                        {
                        pm.Crafterlvl = 2;// SetCrafterpacklv2(from);
                        }
                    if(TotalSkill <= 6399 )
                        {
                        pm.Crafterlvl = 0;// SetCrafterpacklv0(from);
                    //    pm.Class = ClassType.None;
                        }
                    break;
                case 2:
                    if (TotalSkill >= 8800 )
                        {
                        pm.Crafterlvl = 3;// SetCrafterpacklv3(from);
                        }
                    if (TotalSkill <= 7599 )
                        {
                          pm.Crafterlvl = 1;//SetCrafterpacklv1(from);
                          }
                    break;
                case 3:
                      if (TotalSkill >=10000 )
                          {
                          pm.Crafterlvl = 4; //SetCrafterpacklv4(from);
                          }
                      if (TotalSkill <= 8799 )
                          {
                          pm.Crafterlvl = 2;//SetCrafterpacklv2(from);
                          }
                      break;
                case 4:
                      if (TotalSkill >= 11200 )
                          {
                          pm.Crafterlvl = 5;// SetCrafterpacklv5(from);
                          }
                    if (TotalSkill <= 9999 )
                        {
                          pm.Crafterlvl = 3;//SetCrafterpacklv3(from);
                          }
                    break;
                case 5:
                      if (TotalSkill >= 11600 && from.SkillsTotal <= 11600)
                          {
                          pm.Crafterlvl = 6;// SetCrafterpacklv6(from);
                          }
                      if (TotalSkill <= 11199 )
                          {
                          pm.Crafterlvl = 4;//SetCrafterpacklv4(from);
                          }
                      break;
                case 6:
                  if (TotalSkill <= 11599 || from.SkillsTotal > 11600)
                          {
                          pm.Crafterlvl = 5;// SetCrafterpacklv5(from);
                          }
                  break;
            } 
        }
    public static void SetRoguelvl (Mobile from)
            {
        PlayerMobile pm = (PlayerMobile)from;
            int TotalSkill =  TotalRogue(from);
            //  Console.WriteLine(""+from.Name+""+TotalSkill+"");
              if(from.SkillsTotal > 12600 )
                {
                pm.Roguelvl = 0;
                //SetRoguepacklv0(from); //set classe none
                    pm.Class = ClassType.None;
                return;
            }
            switch (pm.Roguelvl)
            {
                case 0:
                    if (TotalSkill >= 6400 )
                        {
                        pm.Roguelvl = 1;// SetRoguepacklv1(from);
                        pm.Class = ClassType.Rogue;
                        }
                    break;
                case 1:
                    if (TotalSkill >= 7600 )
                        {
                        pm.Roguelvl = 2;//  SetRoguepacklv2(from);
                        }
                    if(TotalSkill <= 6399 )
                        {
                        pm.Roguelvl = 0;// SetRoguepacklv0(from);
                    //    pm.Class = ClassType.None;
                        }
                    break;
                case 2:
                    if (TotalSkill >= 8800 )
                        {
                        pm.Roguelvl = 3; // SetRoguepacklv3(from);
                        }
                    if (TotalSkill <= 7599 )
                        {
                          pm.Roguelvl = 1; //SetRoguepacklv1(from);
                          }
                    break;
                case 3:
                      if (TotalSkill >=10000 )
                          {
                          pm.Roguelvl = 4;//  SetRoguepacklv4(from);
                          }
                      if (TotalSkill <= 8799 )
                          {
                          pm.Roguelvl = 2;// SetRoguepacklv2(from);
                          }
                      break;
                case 4:
                      if (TotalSkill >= 11200 )
                          {
                          pm.Roguelvl = 5;//  SetRoguepacklv5(from);
                          }
                    if (TotalSkill <= 9999 )
                        {
                          pm.Roguelvl = 3;// SetRoguepacklv3(from);
                          }
                    break;
                case 5:
                      if (TotalSkill >= 11600 && from.SkillsTotal <= 11600)
                          {
                          pm.Roguelvl = 6;//  SetRoguepacklv6(from);
                          }
                      if (TotalSkill <= 11199 )
                          {
                          pm.Roguelvl = 4;// SetRoguepacklv4(from);
                          }
                      break;
                case 6:
                  if (TotalSkill <= 11599 || from.SkillsTotal > 11600)
                          {
                          pm.Roguelvl = 5; // SetRoguepacklv5(from);
                          }
                  break;
            }       
        }

in public PlayerMobile()
add
Code:
    m_Races = RaceTypes.None;
    m_Class = ClassType.None;

in public override void Deserialize( GenericReader reader )
add
Code:
case (??)+1:
                {   
                m_Races = (RaceTypes)reader.ReadInt();
            m_Class = (ClassType)reader.ReadInt();
            m_Bardlvl = reader.ReadInt();
        m_Rangerlvl = reader.ReadInt();
        m_Roguelvl = reader.ReadInt();
          m_Warriorlvl = reader.ReadInt();
            m_Magelvl = reader.ReadInt();
          m_Crafterlvl = reader.ReadInt();
            goto case (??);
                }

in public override void Serialize( GenericWriter writer )
add
Code:
writer.Write( (int)m_Races );
            writer.Write( (int)m_Class );
            writer.Write( (int)m_Bardlvl );
        writer.Write( (int)m_Rangerlvl );
        writer.Write( (int)m_Roguelvl );
          writer.Write( (int)m_Warriorlvl );
          writer.Write( (int)m_Magelvl );
          writer.Write( (int)m_Crafterlvl );

in public override void OnSkillChange( SkillName skill, double oldBase )
add
Code:
if ( this is PlayerMobile && this.SkillsTotal >= 6000 && this.SkillsTotal <= 12600)
            {
                Mobile from = this;
                  PlayerMobile pm = (PlayerMobile)this;
     
                  switch(pm.Class)
                  {
                          case ClassType.None : break;//check all and set classe if none
                          case ClassType.Crafter :  SetCrafterlvl(from);      break;
                          case ClassType.Rogue :  SetRoguelvl(from);      break;
                          case ClassType.Bard :    SetBardlvl(from);      break;
                          case ClassType.Warrior :    SetWariorlvl(from);      break;
                          case ClassType.Mage :  SetMagelvl(from);      break;
                          case ClassType.Ranger :  SetRangerlvl(from);      break;
                  }
            }
 
Top