Пример #1
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadEncodedInt();

            switch (version)
            {
            case 1:
            {
                m_IsRewardItem = reader.ReadBool();
                m_CurrentUser  = reader.ReadMobile();
                goto case 0;
            }

            case 0:
            {
                m_UserLocation = reader.ReadPoint3D();
                m_UserMap      = reader.ReadMap();

                m_FollowSkill       = new SkillNameValue((SkillName)reader.ReadInt(), reader.ReadInt());
                m_FollowSecondSkill = new SkillNameValue((SkillName)reader.ReadInt(), reader.ReadInt());
                m_RemainSkill       = new SkillNameValue((SkillName)reader.ReadInt(), reader.ReadInt());
                m_ActionSkill       = new SkillNameValue((SkillName)reader.ReadInt(), reader.ReadInt());

                m_Recharges = reader.ReadEncodedInt();
                m_Charges   = Math.Min(reader.ReadEncodedInt(), MaxCharges);

                this.Subject  = (Mobile)reader.ReadMobile();
                m_SubjectName = reader.ReadString();

                m_State = MagicBallState.Idle;

                break;
            }
            }
            if (m_CurrentUser != null)
            {
                Mobile undo = m_CurrentUser;
                undo.Location  = UserLocation;
                undo.Map       = UserMap;
                undo.Hidden    = false;
                undo.Paralyzed = false;
            }
        }
Пример #2
0
		private static void SetSkills( Mobile m, SkillNameValue[] skills, int prof )
		{
			switch ( prof )
			{
				case 1: // Warrior
				{
					skills = new SkillNameValue[]
						{
							new SkillNameValue( SkillName.Anatomy, 30 ),
							new SkillNameValue( SkillName.Healing, 45 ),
							new SkillNameValue( SkillName.Swords, 35 ),
							new SkillNameValue( SkillName.Tactics, 50 )
						};

					break;
				}
				case 2: // Magician
				{
					skills = new SkillNameValue[]
						{
							new SkillNameValue( SkillName.EvalInt, 30 ),
							new SkillNameValue( SkillName.Wrestling, 30 ),
							new SkillNameValue( SkillName.Magery, 50 ),
							new SkillNameValue( SkillName.Meditation, 50 )
						};

					break;
				}
				case 3: // Blacksmith
				{
					skills = new SkillNameValue[]
						{
							new SkillNameValue( SkillName.Mining, 30 ),
							new SkillNameValue( SkillName.ArmsLore, 30 ),
							new SkillNameValue( SkillName.Blacksmith, 50 ),
							new SkillNameValue( SkillName.Tinkering, 50 )
						};

					break;
				}
				case 4: // Necromancer
				{
					skills = new SkillNameValue[]
						{
							new SkillNameValue( SkillName.Necromancy, 50 ),
							new SkillNameValue( SkillName.Focus, 30 ),
							new SkillNameValue( SkillName.SpiritSpeak, 30 ),
							new SkillNameValue( SkillName.Swords, 30 ),
							new SkillNameValue( SkillName.Tactics, 20 )
						};

					break;
				}
				case 5: // Paladin
				{
					skills = new SkillNameValue[]
						{
							new SkillNameValue( SkillName.Chivalry, 51 ),
							new SkillNameValue( SkillName.Swords, 49 ),
							new SkillNameValue( SkillName.Focus, 30 ),
							new SkillNameValue( SkillName.Tactics, 30 )
						};

					break;
				}
				case 6:	//Samurai
				{
					skills = new SkillNameValue[]
						{
							new SkillNameValue( SkillName.Bushido, 50 ),
							new SkillNameValue( SkillName.Swords, 50 ),
							new SkillNameValue( SkillName.Anatomy, 30 ),
							new SkillNameValue( SkillName.Healing, 30 )
					};
					break;
				}
				case 7:	//Ninja
				{
					skills = new SkillNameValue[]
						{
							new SkillNameValue( SkillName.Ninjitsu, 50 ),
							new SkillNameValue( SkillName.Hiding, 50 ),
							new SkillNameValue( SkillName.Fencing, 30 ),
							new SkillNameValue( SkillName.Stealth, 30 )
						};
					break;
				}
				default:
				{
					if ( !ValidSkills( skills ) )
						return;

					break;
				}
			}

			bool addSkillItems = true;
			bool elf = (m.Race == Race.Elf);

			switch ( prof )
			{
				case 1: // Warrior
				{
					if ( elf )
						EquipItem( new LeafChest() );
					else
						EquipItem( new LeatherChest() );
					break;
				}
				case 4: // Necromancer
				{
					Container regs = new BagOfNecroReagents( 50 );

					if ( !Core.AOS )
					{
						foreach ( Item item in regs.Items )
							item.LootType = LootType.Newbied;
					}

					PackItem( regs );

					regs.LootType = LootType.Regular;

					EquipItem( new BoneHelm() );

					if ( elf )
					{
						EquipItem( new ElvenMachete() );
						EquipItem( NecroHue( new LeafChest() ) );
						EquipItem( NecroHue( new LeafArms() ) );
						EquipItem( NecroHue( new LeafGloves() ) );
						EquipItem( NecroHue( new LeafGorget() ) );
						EquipItem( NecroHue( new LeafGorget() ) );
						EquipItem( NecroHue( new ElvenPants() ) );	//TODO: Verify the pants
						EquipItem( new ElvenBoots() );
					}
					else
					{
						EquipItem( new BoneHarvester() );
						EquipItem( NecroHue( new LeatherChest() ) );
						EquipItem( NecroHue( new LeatherArms() ) );
						EquipItem( NecroHue( new LeatherGloves() ) );
						EquipItem( NecroHue( new LeatherGorget() ) );
						EquipItem( NecroHue( new LeatherLegs() ) );
						EquipItem( NecroHue( new Skirt() ) );
						EquipItem( new Sandals( 0x8FD ) );
					}

					Spellbook book = new NecromancerSpellbook( (ulong)0x8981 ); // animate dead, evil omen, pain spike, summon familiar, wraith form

					PackItem( book );

					book.LootType = LootType.Blessed;

					addSkillItems = false;

					break;
				}
				case 5: // Paladin
				{
					if ( elf )
					{
						EquipItem( new ElvenMachete() );
						EquipItem( new WingedHelm() );
						EquipItem( new LeafGorget() );
						EquipItem( new LeafArms() );
						EquipItem( new LeafChest() );
						EquipItem( new LeafLegs() );
						EquipItem( new ElvenBoots() );	//Verify hue
					}
					else
					{
						EquipItem( new Broadsword() );
						EquipItem( new Helmet() );
						EquipItem( new PlateGorget() );
						EquipItem( new RingmailArms() );
						EquipItem( new RingmailChest() );
						EquipItem( new RingmailLegs() );
						EquipItem( new ThighBoots( 0x748 ) );
						EquipItem( new Cloak( 0xCF ) );
						EquipItem( new BodySash( 0xCF ) );
					}

					Spellbook book = new BookOfChivalry( (ulong)0x3FF );

					PackItem( book );

					book.LootType = LootType.Blessed;

					addSkillItems = false;

					break;
				}

				case 6: // Samurai
				{
					addSkillItems = false;
					EquipItem( new HakamaShita( 0x2C3 ) );
					EquipItem( new Hakama( 0x2C3 ) );
					EquipItem( new SamuraiTabi( 0x2C3 ) );
					EquipItem( new TattsukeHakama( 0x22D ) );
					EquipItem( new Bokuto() );

					if ( elf )
						EquipItem( new RavenHelm() );
					else
						EquipItem( new LeatherJingasa() );

					PackItem( new Scissors() );
					PackItem( new Bandage( 50 ) );

					Spellbook book = new BookOfBushido();
					PackItem( book );

					break;
				}
				case 7: // Ninja
				{
					addSkillItems = false;
					EquipItem( new Kasa() );
					
					int[] hues = new int[] { 0x1A8, 0xEC, 0x99, 0x90, 0xB5, 0x336, 0x89	};
					//TODO: Verify that's ALL the hues for that above.

					EquipItem( new TattsukeHakama( hues[Utility.Random(hues.Length)] ) );
					
					EquipItem( new HakamaShita( 0x2C3 ) );
					EquipItem( new NinjaTabi( 0x2C3 ) );

					if ( elf )
						EquipItem( new AssassinSpike() );
					else
						EquipItem( new Tekagi() );

					PackItem( new SmokeBomb() );

					Spellbook book = new BookOfNinjitsu();
					PackItem( book );

					break;
				}
			}

			for ( int i = 0; i < skills.Length; ++i )
			{
				SkillNameValue snv = skills[i];

				if ( snv.Value > 0 && ( snv.Name != SkillName.Stealth || prof == 7 ) && snv.Name != SkillName.RemoveTrap && snv.Name != SkillName.Spellweaving )
				{
					Skill skill = m.Skills[snv.Name];

					if ( skill != null )
					{
						skill.BaseFixedPoint = snv.Value * 10;

						if ( addSkillItems )
							AddSkillItems( snv.Name, m );
					}
				}
			}
		}
Пример #3
0
		private static bool ValidSkills( SkillNameValue[] skills )
		{
			int total = 0;

			for ( int i = 0; i < skills.Length; ++i )
			{
				if ( skills[i].Value < 0 || skills[i].Value > 50 )
					return false;

				total += skills[i].Value;

				for ( int j = i + 1; j < skills.Length; ++j )
				{
					if ( skills[j].Value > 0 && skills[j].Name == skills[i].Name )
						return false;
				}
			}

			return ( total == 100 || total == 120 );
		}
        private static void SetSkills(Mobile m, SkillNameValue[] skills, int prof)
        {
            switch (prof)
            {
            case 1:                     // Warrior
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Anatomy, 30),
                    new SkillNameValue(SkillName.Healing, 45),
                    new SkillNameValue(SkillName.Swords, 35),
                    new SkillNameValue(SkillName.Tactics, 50)
                };

                break;
            }

            case 2:                     // Magician
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.EvalInt, 30),
                    new SkillNameValue(SkillName.Wrestling, 30),
                    new SkillNameValue(SkillName.Magery, 50),
                    new SkillNameValue(SkillName.Meditation, 50)
                };

                break;
            }

            case 3:                     // Blacksmith
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Mining, 30),
                    new SkillNameValue(SkillName.ArmsLore, 30),
                    new SkillNameValue(SkillName.Blacksmith, 50),
                    new SkillNameValue(SkillName.Tinkering, 50)
                };

                break;
            }

            case 4:                     // Necromancer
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Necromancy, 50),
                    new SkillNameValue(SkillName.Focus, 30),
                    new SkillNameValue(SkillName.SpiritSpeak, 30),
                    new SkillNameValue(SkillName.Swords, 30),
                    new SkillNameValue(SkillName.Tactics, 20)
                };

                break;
            }

            case 5:                     // Paladin
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Chivalry, 51),
                    new SkillNameValue(SkillName.Swords, 49),
                    new SkillNameValue(SkillName.Focus, 30),
                    new SkillNameValue(SkillName.Tactics, 30)
                };

                break;
            }

            case 6:                     //Samurai
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Bushido, 50),
                    new SkillNameValue(SkillName.Swords, 50),
                    new SkillNameValue(SkillName.Anatomy, 30),
                    new SkillNameValue(SkillName.Healing, 30),
                };
                break;
            }

            case 7:                     //Ninja
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Ninjitsu, 50),
                    new SkillNameValue(SkillName.Hiding, 50),
                    new SkillNameValue(SkillName.Fencing, 30),
                    new SkillNameValue(SkillName.Stealth, 30),
                };
                break;
            }

            default:
            {
                if (!ValidSkills(skills))
                {
                    return;
                }

                break;
            }
            }

            bool addSkillItems = true;

            switch (prof)
            {
            case 1:                     // Warrior
            {
                EquipItem(new LeatherChest());
                break;
            }

            case 4:                     // Necromancer
            {
                Container regs = new BagOfNecroReagents(50);

                if (!Core.AOS)
                {
                    foreach (Item item in regs.Items)
                    {
                        item.LootType = LootType.Newbied;
                    }
                }

                PackItem(regs);

                regs.LootType = LootType.Regular;

                EquipItem(new BoneHarvester());
                EquipItem(new BoneHelm());

                EquipItem(NecroHue(new LeatherChest()));
                EquipItem(NecroHue(new LeatherArms()));
                EquipItem(NecroHue(new LeatherGloves()));
                EquipItem(NecroHue(new LeatherGorget()));
                EquipItem(NecroHue(new LeatherLegs()));
                EquipItem(NecroHue(new Skirt()));
                EquipItem(new Sandals(0x8FD));

                Spellbook book = new NecromancerSpellbook((ulong)0x8981);                           // animate dead, evil omen, pain spike, summon familiar, wraith form

                PackItem(book);

                book.LootType = LootType.Blessed;

                addSkillItems = false;

                break;
            }

            case 5:                     // Paladin
            {
                EquipItem(new Broadsword());
                EquipItem(new Helmet());
                EquipItem(new PlateGorget());
                EquipItem(new RingmailArms());
                EquipItem(new RingmailChest());
                EquipItem(new RingmailLegs());
                EquipItem(new ThighBoots(0x748));
                EquipItem(new Cloak(0xCF));
                EquipItem(new BodySash(0xCF));

                Spellbook book = new BookOfChivalry((ulong)0x3FF);

                PackItem(book);

                book.LootType = LootType.Blessed;

                break;
            }

            case 6:                     // Samurai
            {
                addSkillItems = false;
                EquipItem(new HakamaShita(0x2C3));
                EquipItem(new Hakama(0x2C3));
                EquipItem(new SamuraiTabi(0x2C3));
                EquipItem(new TattsukeHakama(0x22D));
                EquipItem(new Bokuto());
                EquipItem(new LeatherJingasa());
                EquipItem(new Scissors());
                EquipItem(new Bandage(50));

                Spellbook book = new BookOfBushido();
                PackItem(book);

                break;
            }

            case 7:                     // Ninja
            {
                addSkillItems = false;
                EquipItem(new Kasa());

                int[] hues = new int[] { 0x1A8, 0xEC, 0x99, 0x90, 0xB5, 0x336, 0x89 };
                //TODO: Verify that's ALL the hues for that above.

                EquipItem(new TattsukeHakama(hues[Utility.Random(hues.Length)]));

                EquipItem(new HakamaShita(0x2C3));
                EquipItem(new NinjaTabi(0x2C3));
                EquipItem(new Tekagi());
                //EquipItem( new Smokebomb() );

                Spellbook book = new BookOfNinjitsu( );
                PackItem(book);

                break;
            }
            }

            for (int i = 0; i < skills.Length; ++i)
            {
                SkillNameValue snv = skills[i];

                if (snv.Value > 0 && snv.Name != SkillName.Stealth && snv.Name != SkillName.RemoveTrap)
                {
                    Skill skill = m.Skills[snv.Name];

                    if (skill != null)
                    {
                        skill.BaseFixedPoint = snv.Value * 10;

                        if (addSkillItems)
                        {
                            AddSkillItems(snv.Name);
                        }
                    }
                }
            }
        }
Пример #5
0
        private static void SetSkills(Mobile m, SkillNameValue[] skills, int prof)
        {
            switch (prof)
            {
            case 1:     // Warrior
            {
                skills = new[]
                {
                    new SkillNameValue(SkillName.Anatomy, 30), new SkillNameValue(SkillName.Healing, 30),
                    new SkillNameValue(SkillName.Swords, 30), new SkillNameValue(SkillName.Tactics, 30)
                };

                break;
            }

            case 2:     // Magician
            {
                skills = new[]
                {
                    new SkillNameValue(SkillName.EvalInt, 30), new SkillNameValue(SkillName.Wrestling, 30),
                    new SkillNameValue(SkillName.Magery, 30), new SkillNameValue(SkillName.Meditation, 30)
                };

                break;
            }

            case 3:     // Blacksmith
            {
                skills = new[]
                {
                    new SkillNameValue(SkillName.Mining, 30), new SkillNameValue(SkillName.ArmsLore, 30),
                    new SkillNameValue(SkillName.Blacksmith, 30), new SkillNameValue(SkillName.Tinkering, 30)
                };

                break;
            }

            case 4:     // Necromancer
            {
                skills = new[]
                {
                    new SkillNameValue(SkillName.Necromancy, 30),
                    new SkillNameValue(SkillName.SpiritSpeak, 30), new SkillNameValue(SkillName.Swords, 30),
                    new SkillNameValue(SkillName.Meditation, 20)
                };

                break;
            }

            case 5:     // Paladin
            {
                skills = new[]
                {
                    new SkillNameValue(SkillName.Chivalry, 30), new SkillNameValue(SkillName.Swords, 30),
                    new SkillNameValue(SkillName.Focus, 30), new SkillNameValue(SkillName.Tactics, 30)
                };

                break;
            }

            case 6:     //Samurai
            {
                skills = new[]
                {
                    new SkillNameValue(SkillName.Bushido, 30), new SkillNameValue(SkillName.Swords, 30),
                    new SkillNameValue(SkillName.Anatomy, 30), new SkillNameValue(SkillName.Healing, 30)
                };
                break;
            }

            case 7:     //Ninja
            {
                skills = new[]
                {
                    new SkillNameValue(SkillName.Ninjitsu, 30), new SkillNameValue(SkillName.Hiding, 30),
                    new SkillNameValue(SkillName.Fencing, 30), new SkillNameValue(SkillName.Stealth, 30)
                };
                break;
            }

            default:
            {
                if (!ValidSkills(skills))
                {
                    return;
                }

                break;
            }
            }

            bool addSkillItems = true;
            bool elf           = (m.Race == Race.Elf);
            bool human         = (m.Race == Race.Human);
            bool gargoyle      = (m.Race == Race.Gargoyle);

            switch (prof)
            {
            case 1:     // Warrior
            {
                if (elf)
                {
                    EquipItem(new LeafChest());
                }
                else if (human)
                {
                    EquipItem(new LeatherChest());
                }
                else if (gargoyle)
                {
                    EquipItem(new GargishLeatherChest());
                }

                break;
            }

            case 4:     // Necromancer
            {
                Container regs = new BagOfNecroReagents(50);
                PackItem(regs);

                if (elf || human)
                {
                    EquipItem(new BoneHelm());
                }

                if (elf)
                {
                    EquipItem(new ElvenMachete());
                    EquipItem(NecroHue(new LeafChest()));
                    EquipItem(NecroHue(new LeafArms()));
                    EquipItem(NecroHue(new LeafGloves()));
                    EquipItem(NecroHue(new LeafGorget()));
                    EquipItem(NecroHue(new LeafGorget()));
                    EquipItem(NecroHue(new ElvenPants()));         //TODO: Verify the pants
                    EquipItem(new ElvenBoots());
                }
                else if (human)
                {
                    EquipItem(new BoneHarvester());
                    EquipItem(NecroHue(new LeatherChest()));
                    EquipItem(NecroHue(new LeatherArms()));
                    EquipItem(NecroHue(new LeatherGloves()));
                    EquipItem(NecroHue(new LeatherGorget()));
                    EquipItem(NecroHue(new LeatherLegs()));
                    EquipItem(NecroHue(new Skirt()));
                    EquipItem(new Sandals(0x8FD));
                }
                else if (gargoyle)
                {
                    EquipItem(new GlassSword());
                    EquipItem(NecroHue(new GargishLeatherChest()));
                    EquipItem(NecroHue(new GargishLeatherArms()));
                    EquipItem(NecroHue(new GargishLeatherLegs()));
                    EquipItem(NecroHue(new GargishLeatherKilt()));
                }

                Spellbook
                    book = new NecromancerSpellbook(
                    (ulong)0x8981);             // animate dead, evil omen, pain spike, summon familiar, wraith form

                PackItem(book);

                book.LootType = LootType.Blessed;

                addSkillItems = false;
                break;
            }

            case 5:     // Paladin
            {
                if (elf)
                {
                    EquipItem(new ElvenMachete());
                    EquipItem(new WingedHelm());
                    EquipItem(new LeafGorget());
                    EquipItem(new LeafArms());
                    EquipItem(new LeafChest());
                    EquipItem(new LeafLegs());
                    EquipItem(new ElvenBoots());         //Verify hue
                }
                else if (human)
                {
                    EquipItem(new Broadsword());
                    EquipItem(new Helmet());
                    EquipItem(new PlateGorget());
                    EquipItem(new RingmailArms());
                    EquipItem(new RingmailChest());
                    EquipItem(new RingmailLegs());
                    EquipItem(new ThighBoots(0x748));
                    EquipItem(new Cloak(0xCF));
                    EquipItem(new BodySash(0xCF));
                }
                else if (gargoyle)
                {
                    EquipItem(new DreadSword());
                    EquipItem(new GargishPlateChest());
                    EquipItem(new GargishPlateArms());
                    EquipItem(new GargishPlateLegs());
                    EquipItem(new GargishPlateKilt());
                }

                Spellbook book = new BookOfChivalry((ulong)0x3FF);
                book.LootType = LootType.Blessed;
                PackItem(book);

                addSkillItems = false;
                break;
            }

            case 6:     // Samurai
            {
                if (elf || human)
                {
                    EquipItem(new HakamaShita(0x2C3));
                    EquipItem(new Hakama(0x2C3));
                    EquipItem(new SamuraiTabi(0x2C3));
                    EquipItem(new TattsukeHakama(0x22D));
                    EquipItem(new Bokuto());

                    if (elf)
                    {
                        EquipItem(new RavenHelm());
                    }
                    else
                    {
                        EquipItem(new LeatherJingasa());
                    }
                }
                else if (gargoyle)
                {
                    EquipItem(new GlassSword());
                    EquipItem(new GargishPlateChest());
                    EquipItem(new GargishPlateArms());
                    EquipItem(new GargishPlateLegs());
                    EquipItem(new GargishPlateKilt());
                }

                PackItem(new Scissors());
                PackItem(new Bandage(50));

                Spellbook book = new BookOfBushido();
                PackItem(book);

                addSkillItems = false;
                break;
            }

            case 7:     // Ninja
            {
                int[] hues = new[] { 0x1A8, 0xEC, 0x99, 0x90, 0xB5, 0x336, 0x89 };
                //TODO: Verify that's ALL the hues for that above.

                if (elf || human)
                {
                    EquipItem(new Kasa());
                    EquipItem(new TattsukeHakama(hues[Utility.Random(hues.Length)]));
                    EquipItem(new HakamaShita(0x2C3));
                    EquipItem(new NinjaTabi(0x2C3));

                    if (elf)
                    {
                        EquipItem(new AssassinSpike());
                    }
                    else
                    {
                        EquipItem(new Tekagi());
                    }
                }
                else if (gargoyle)
                {
                    EquipItem(new GargishDagger());

                    int hue = hues[Utility.Random(hues.Length)];

                    EquipItem(new GargishClothChestArmor(hue));
                    EquipItem(new GargishClothArmsArmor(hue));
                    EquipItem(new GargishClothLegsArmor(hue));
                    EquipItem(new GargishClothKiltArmor(hue));
                }

                PackItem(new SmokeBomb());

                Spellbook book = new BookOfNinjitsu();
                PackItem(book);

                addSkillItems = false;
                break;
            }
            }

            for (int i = 0; i < skills.Length; ++i)
            {
                SkillNameValue snv = skills[i];

                if (snv.Value > 0 && (snv.Name != SkillName.Stealth || prof == 7) && snv.Name != SkillName.RemoveTrap &&
                    snv.Name != SkillName.Spellweaving)
                {
                    Skill skill = m.Skills[snv.Name];

                    if (skill != null)
                    {
                        skill.BaseFixedPoint = snv.Value * 10;

                        if (addSkillItems)
                        {
                            AddSkillItems(snv.Name, m);
                        }
                    }
                }
            }
        }
        private static void SetSkills(Mobile m, SkillNameValue[] skills, int prof)
        {
            switch (prof)
            {
            case 1:     // Warrior
            {
                skills = new[]
                {
                    new SkillNameValue(SkillName.Anatomy, 30),
                    new SkillNameValue(SkillName.Healing, 45),
                    new SkillNameValue(SkillName.Swords, 35),
                    new SkillNameValue(SkillName.Tactics, 50)
                };

                break;
            }

            case 2:     // Magician
            {
                skills = new[]
                {
                    new SkillNameValue(SkillName.EvalInt, 30),
                    new SkillNameValue(SkillName.Wrestling, 30),
                    new SkillNameValue(SkillName.Magery, 50),
                    new SkillNameValue(SkillName.Meditation, 50)
                };

                break;
            }

            case 3:     // Blacksmith
            {
                skills = new[]
                {
                    new SkillNameValue(SkillName.Mining, 30),
                    new SkillNameValue(SkillName.ArmsLore, 30),
                    new SkillNameValue(SkillName.Blacksmith, 50),
                    new SkillNameValue(SkillName.Tinkering, 50)
                };

                break;
            }

            case 4:     // Necromancer
            {
                skills = new[]
                {
                    new SkillNameValue(SkillName.Necromancy, 50),
                    new SkillNameValue(SkillName.Focus, 30),
                    new SkillNameValue(SkillName.SpiritSpeak, 30),
                    new SkillNameValue(SkillName.Swords, 30),
                    new SkillNameValue(SkillName.Tactics, 20)
                };

                break;
            }

            case 5:     // Paladin
            {
                skills = new[]
                {
                    new SkillNameValue(SkillName.Chivalry, 51),
                    new SkillNameValue(SkillName.Swords, 49),
                    new SkillNameValue(SkillName.Focus, 30),
                    new SkillNameValue(SkillName.Tactics, 30)
                };

                break;
            }

            case 6:     //Samurai
            {
                skills = new[]
                {
                    new SkillNameValue(SkillName.Bushido, 50),
                    new SkillNameValue(SkillName.Swords, 50),
                    new SkillNameValue(SkillName.Anatomy, 30),
                    new SkillNameValue(SkillName.Healing, 30)
                };
                break;
            }

            case 7:     //Ninja
            {
                skills = new[]
                {
                    new SkillNameValue(SkillName.Ninjitsu, 50),
                    new SkillNameValue(SkillName.Hiding, 50),
                    new SkillNameValue(SkillName.Fencing, 30),
                    new SkillNameValue(SkillName.Stealth, 30)
                };
                break;
            }

            default:
            {
                if (!ValidSkills(skills))
                {
                    return;
                }

                break;
            }
            }

            bool addSkillItems = true;
            bool elf           = m.Race == Race.Elf;

            switch (prof)
            {
            case 1:     // Warrior
            {
                EquipItem(new LeatherChest());

                break;
            }

            case 4:     // Necromancer
            {
                EquipItem(new BoneHelm());
                EquipItem(NecroHue(new LeatherChest()));
                EquipItem(NecroHue(new LeatherArms()));
                EquipItem(NecroHue(new LeatherGloves()));
                EquipItem(NecroHue(new LeatherGorget()));
                EquipItem(NecroHue(new LeatherLegs()));
                EquipItem(NecroHue(new Skirt()));
                EquipItem(new Sandals(0x8FD));

                addSkillItems = false;

                break;
            }

            case 5:     // Paladin
            {
                EquipItem(new Broadsword());
                EquipItem(new Helmet());
                EquipItem(new PlateGorget());
                EquipItem(new RingmailArms());
                EquipItem(new RingmailChest());
                EquipItem(new RingmailLegs());
                EquipItem(new ThighBoots(0x748));
                EquipItem(new Cloak(0xCF));
                EquipItem(new BodySash(0xCF));

                addSkillItems = false;

                break;
            }

            case 6:     // Samurai
            {
                addSkillItems = false;

                PackItem(new Scissors());
                PackItem(new Bandage(50));

                break;
            }

            case 7:     // Ninja
            {
                addSkillItems = false;

                break;
            }
            }

            for (int i = 0; i < skills.Length; ++i)
            {
                SkillNameValue snv = skills[i];

                if (snv.Value > 0 && (snv.Name != SkillName.Stealth || prof == 7) && snv.Name != SkillName.RemoveTrap &&
                    snv.Name != SkillName.Spellweaving)
                {
                    Skill skill = m.Skills[snv.Name];

                    if (skill != null)
                    {
                        skill.BaseFixedPoint = snv.Value * 10;

                        if (addSkillItems)
                        {
                            AddSkillItems(snv.Name, m);
                        }
                    }
                }
            }
        }
Пример #7
0
        private static void SetSkills(Mobile m, SkillNameValue[] skills, int prof)
        {
            switch (prof)
            {
            case 1:     // Warrior
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Anatomy, 30),
                    new SkillNameValue(SkillName.Healing, 45),
                    new SkillNameValue(SkillName.Swords, 35),
                    new SkillNameValue(SkillName.Tactics, 50)
                };

                break;
            }

            case 2:     // Magician
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.EvalInt, 30),
                    new SkillNameValue(SkillName.Wrestling, 30),
                    new SkillNameValue(SkillName.Magery, 50),
                    new SkillNameValue(SkillName.Meditation, 50)
                };

                break;
            }

            case 3:     // Blacksmith
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Mining, 30),
                    new SkillNameValue(SkillName.ArmsLore, 30),
                    new SkillNameValue(SkillName.Blacksmith, 50),
                    new SkillNameValue(SkillName.Tinkering, 50)
                };

                break;
            }

            case 4:     // Necromancer
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Necromancy, 50),
                    new SkillNameValue(SkillName.Focus, 30),
                    new SkillNameValue(SkillName.SpiritSpeak, 30),
                    new SkillNameValue(SkillName.Swords, 30),
                    new SkillNameValue(SkillName.Tactics, 20)
                };

                break;
            }

            case 5:     // Paladin
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Chivalry, 51),
                    new SkillNameValue(SkillName.Swords, 49),
                    new SkillNameValue(SkillName.Focus, 30),
                    new SkillNameValue(SkillName.Tactics, 30)
                };

                break;
            }

            case 6:     //Samurai
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Bushido, 50),
                    new SkillNameValue(SkillName.Swords, 50),
                    new SkillNameValue(SkillName.Anatomy, 30),
                    new SkillNameValue(SkillName.Healing, 30)
                };
                break;
            }

            case 7:     //Ninja
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Ninjitsu, 50),
                    new SkillNameValue(SkillName.Hiding, 50),
                    new SkillNameValue(SkillName.Fencing, 30),
                    new SkillNameValue(SkillName.Stealth, 30)
                };
                break;
            }

            default:
            {
                if (!ValidSkills(skills))
                {
                    return;
                }

                break;
            }
            }

            switch (prof)
            {
            case 1:     // Warrior
            case 5:     // Paladin
            case 6:     // Samurai
            case 7:     // Ninja
                BaseWarrior();
                break;

            default:
                BaseCaster();
                break;
            }

            for (int i = 0; i < skills.Length; ++i)
            {
                SkillNameValue snv = skills[i];

                if (snv.Value > 0 && (snv.Name != SkillName.Stealth || prof == 7) && snv.Name != SkillName.RemoveTrap && snv.Name != SkillName.Spellweaving)
                {
                    Skill skill = m.Skills[snv.Name];

                    if (skill != null)
                    {
                        skill.BaseFixedPoint = snv.Value * 10;

                        //if (addSkillItems)
                        //    AddSkillItems(snv.Name, m);
                    }
                }
            }
        }
Пример #8
0
 public CreateCharRequestEventArgs( GameClient state, IAccount a, string name, bool female, int hue, int str, int dex, int intel, CityInfo city, SkillNameValue[] skills, int shirtHue, int pantsHue, int hairID, int hairHue, int beardID, int beardHue, int profession, Race race )
 {
     m_State = state;
     m_Account = a;
     m_Name = name;
     m_Female = female;
     m_Hue = hue;
     m_Str = str;
     m_Dex = dex;
     m_Int = intel;
     m_City = city;
     m_Skills = skills;
     m_ShirtHue = shirtHue;
     m_PantsHue = pantsHue;
     m_HairID = hairID;
     m_HairHue = hairHue;
     m_BeardID = beardID;
     m_BeardHue = beardHue;
     m_Profession = profession;
     m_Race = race;
 }
Пример #9
0
		public static void SetSkills(Mobile m, Expansion e, SkillNameValue[] skills, int prof)
		{
			switch (prof)
			{
				case 1: // Warrior
					{
						skills = new[]
						{
							new SkillNameValue(SkillName.Anatomy, 30), new SkillNameValue(SkillName.Healing, 45),
							new SkillNameValue(SkillName.Swords, 35), new SkillNameValue(SkillName.Tactics, 50)
						};

						break;
					}
				case 2: // Magician
					{
						skills = new[]
						{
							new SkillNameValue(SkillName.EvalInt, 30), new SkillNameValue(SkillName.Wrestling, 30),
							new SkillNameValue(SkillName.Magery, 50), new SkillNameValue(SkillName.Meditation, 50)
						};

						break;
					}
				case 3: // Blacksmith
					{
						skills = new[]
						{
							new SkillNameValue(SkillName.Mining, 30), new SkillNameValue(SkillName.ArmsLore, 30),
							new SkillNameValue(SkillName.Blacksmith, 50), new SkillNameValue(SkillName.Tinkering, 50)
						};

						break;
					}
				case 4: // Necromancer
					{
						skills = new[]
						{
							new SkillNameValue(SkillName.Necromancy, 50), new SkillNameValue(SkillName.Focus, 30),
							new SkillNameValue(SkillName.SpiritSpeak, 30), new SkillNameValue(SkillName.Swords, 30),
							new SkillNameValue(SkillName.Tactics, 20)
						};

						break;
					}
				case 5: // Paladin
					{
						skills = new[]
						{
							new SkillNameValue(SkillName.Chivalry, 51), new SkillNameValue(SkillName.Swords, 49),
							new SkillNameValue(SkillName.Focus, 30), new SkillNameValue(SkillName.Tactics, 30)
						};

						break;
					}
				case 6: //Samurai
					{
						skills = new[]
						{
							new SkillNameValue(SkillName.Bushido, 50), new SkillNameValue(SkillName.Swords, 50),
							new SkillNameValue(SkillName.Anatomy, 30), new SkillNameValue(SkillName.Healing, 30)
						};
						break;
					}
				case 7: //Ninja
					{
						skills = new[]
						{
							new SkillNameValue(SkillName.Ninjitsu, 50), new SkillNameValue(SkillName.Hiding, 50),
							new SkillNameValue(SkillName.Fencing, 30), new SkillNameValue(SkillName.Stealth, 30)
						};
						break;
					}
				default:
					{
						if (!ValidSkills(e, skills))
						{
							return;
						}

						break;
					}
			}

			bool addSkillItems = true;
			bool elf = (m.Race == Race.Elf);

			switch (prof)
			{
				case 1: // Warrior
					{
						if (elf)
						{
							EquipItem(new LeafChest(), e);
						}
						else
						{
							EquipItem(new LeatherChest(), e);
						}
						break;
					}
				case 4: // Necromancer
					{
						Container regs = new BagOfNecroReagents(50);
						/*
						if (e < Expansion.AOS)
						{
							foreach (Item item in regs.Items)
							{
								item.LootType = LootType.Newbied;
							}
						}
						*/
						PackItem(regs, e);

						regs.LootType = LootType.Regular;

						EquipItem(new BoneHelm(), e);

						if (elf)
						{
							EquipItem(new ElvenMachete(), e);
							EquipItem(NecroHue(new LeafChest()), e);
							EquipItem(NecroHue(new LeafArms()), e);
							EquipItem(NecroHue(new LeafGloves()), e);
							EquipItem(NecroHue(new LeafGorget()), e);
							EquipItem(NecroHue(new LeafGorget()), e);
							EquipItem(NecroHue(new ElvenPants()), e); //TODO: Verify the pants
							EquipItem(new ElvenBoots(), e);
						}
						else
						{
							EquipItem(new BoneHarvester(), e);
							EquipItem(NecroHue(new LeatherChest()), e);
							EquipItem(NecroHue(new LeatherArms()), e);
							EquipItem(NecroHue(new LeatherGloves()), e);
							EquipItem(NecroHue(new LeatherGorget()), e);
							EquipItem(NecroHue(new LeatherLegs()), e);
							EquipItem(NecroHue(new Skirt()), e);
							EquipItem(new Sandals(0x8FD), e);
						}

						addSkillItems = false;

						break;
					}
				case 5: // Paladin
					{
						if (elf)
						{
							EquipItem(new ElvenMachete(), e);
							EquipItem(new WingedHelm(), e);
							EquipItem(new LeafGorget(), e);
							EquipItem(new LeafArms(), e);
							EquipItem(new LeafChest(), e);
							EquipItem(new LeafLegs(), e);
							EquipItem(new ElvenBoots(), e); //Verify hue
						}
						else
						{
							EquipItem(new Broadsword(), e);
							EquipItem(new Helmet(), e);
							EquipItem(new PlateGorget(), e);
							EquipItem(new RingmailArms(), e);
							EquipItem(new RingmailChest(), e);
							EquipItem(new RingmailLegs(), e);
							EquipItem(new ThighBoots(0x748), e);
							EquipItem(new Cloak(0xCF), e);
							EquipItem(new BodySash(0xCF), e);
						}

						addSkillItems = false;

						break;
					}

				case 6: // Samurai
					{
						addSkillItems = false;
						EquipItem(new HakamaShita(0x2C3), e);
						EquipItem(new Hakama(0x2C3), e);
						EquipItem(new SamuraiTabi(0x2C3), e);
						EquipItem(new TattsukeHakama(0x22D), e);
						EquipItem(new Bokuto(), e);

						if (elf)
						{
							EquipItem(new RavenHelm(), e);
						}
						else
						{
							EquipItem(new LeatherJingasa(), e);
						}

						PackItem(new Scissors(), e);
						PackItem(new Bandage(50), e);

						break;
					}
				case 7: // Ninja
					{
						addSkillItems = false;
						EquipItem(new Kasa(), e);

						var hues = new[] {0x1A8, 0xEC, 0x99, 0x90, 0xB5, 0x336, 0x89};
						//TODO: Verify that's ALL the hues for that above.

						EquipItem(new TattsukeHakama(hues[Utility.Random(hues.Length)]), e);

						EquipItem(new HakamaShita(0x2C3), e);
						EquipItem(new NinjaTabi(0x2C3), e);

						if (elf)
						{
							EquipItem(new AssassinSpike(), e);
						}
						else
						{
							EquipItem(new Tekagi(), e);
						}

						PackItem(new SmokeBomb(), e);

						break;
					}
			}

			foreach (SkillNameValue snv in skills)
			{
				if (snv.Value <= 0 || (snv.Name == SkillName.Stealth && prof != 7) || snv.Name == SkillName.RemoveTrap ||
					snv.Name == SkillName.Spellweaving)
				{
					continue;
				}

				Skill skill = m.Skills[snv.Name];

				if (skill == null)
				{
					continue;
				}

				skill.BaseFixedPoint = snv.Value * 10;

				if (addSkillItems)
				{
					AddSkillItems(snv.Name, m, e);
				}
			}

			// all players start with a spellbook with level 1-4 spells
			PackItem(
				new Spellbook(0xFFFFFFFF)
				{
					LootType = LootType.Blessed
				},
				e);
		}
Пример #10
0
		private static bool ValidSkills(Expansion e, SkillNameValue[] skills)
		{
			int total = 0;

			for (int i = 0; i < skills.Length; ++i)
			{
				if (skills[i].Value < 0 || skills[i].Value > 50)
				{
					return false;
				}

				if (e >= Expansion.SA || (e >= Expansion.ML && skills[i].Name >= SkillName.Mysticism) ||
					(e >= Expansion.SE && skills[i].Name >= SkillName.Spellweaving) || skills[i].Name >= SkillName.Bushido)
				{
					return false;
				}

				total += skills[i].Value;

				for (int j = i + 1; j < skills.Length; ++j)
				{
					if (skills[j].Value > 0 && skills[j].Name == skills[i].Name)
					{
						return false;
					}
				}
			}

			return (total == 100 || total == 120);
		}
Пример #11
0
        private static void SetSkills(Mobile m, SkillNameValue[] skills, int prof)
        {
            switch (prof)
            {
            case 1:                     // Warrior
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Anatomy, 30),
                    new SkillNameValue(SkillName.Healing, 45),
                    new SkillNameValue(SkillName.Swords, 35),
                    new SkillNameValue(SkillName.Tactics, 50)
                };

                break;
            }

            case 2:                     // Magician
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.EvalInt, 30),
                    new SkillNameValue(SkillName.Wrestling, 30),
                    new SkillNameValue(SkillName.Magery, 50),
                    new SkillNameValue(SkillName.Meditation, 50)
                };

                break;
            }

            case 3:                     // Blacksmith
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Mining, 30),
                    new SkillNameValue(SkillName.ArmsLore, 30),
                    new SkillNameValue(SkillName.Blacksmith, 50),
                    new SkillNameValue(SkillName.Tinkering, 50)
                };

                break;
            }

//				case 4: // Necromancer
//				{
//					if ( !Core.AOS )
//						goto default;
//
//					skills = new SkillNameValue[]
//						{
//							new SkillNameValue( SkillName.Necromancy, 50 ),
//							new SkillNameValue( SkillName.Focus, 30 ),
//							new SkillNameValue( SkillName.SpiritSpeak, 30 ),
//							new SkillNameValue( SkillName.Swords, 30 ),
//							new SkillNameValue( SkillName.Tactics, 20 )
//						};
//
//					break;
//				}
//				case 5: // Paladin
//				{
//					if ( !Core.AOS )
//						goto default;
//
//					skills = new SkillNameValue[]
//						{
//							new SkillNameValue( SkillName.Chivalry, 51 ),
//							new SkillNameValue( SkillName.Swords, 49 ),
//							new SkillNameValue( SkillName.Focus, 30 ),
//							new SkillNameValue( SkillName.Tactics, 30 )
//						};
//
//					break;
//				}
            default:
            {
                if (!ValidSkills(skills))
                {
                    return;
                }

                break;
            }
            }

            bool addSkillItems = true;

            switch (prof)
            {
            case 1:                     // Warrior
            {
                EquipItem(new LeatherChest());
                break;
            }
//				case 4: // Necromancer
//				{
//					Container regs = new BagOfNecroReagents( 50 );
//
//					if ( !Core.AOS )
//					{
//						foreach ( Item item in regs.Items )
//							item.LootType = LootType.Newbied;
//					}
//
//					PackItem( regs );
//
//					regs.LootType = LootType.Regular;
//
//					EquipItem( new BoneHarvester() );
//					EquipItem( new BoneHelm() );
//
//					EquipItem( NecroHue( new LeatherChest() ) );
//					EquipItem( NecroHue( new LeatherArms() ) );
//					EquipItem( NecroHue( new LeatherGloves() ) );
//					EquipItem( NecroHue( new LeatherGorget() ) );
//					EquipItem( NecroHue( new LeatherLegs() ) );
//					EquipItem( NecroHue( new Skirt() ) );
//					EquipItem( new Sandals( 0x8FD ) );
//
//					Spellbook book = new NecromancerSpellbook( (ulong)0x8981 ); // animate dead, evil omen, pain spike, summon familiar, wraith form
//
//					PackItem( book );
//
//					book.LootType = LootType.Blessed;
//
//					addSkillItems = false;
//
//					break;
//				}
//				case 5: // Paladin
//				{
//					EquipItem( new Broadsword() );
//					EquipItem( new Helmet() );
//					EquipItem( new PlateGorget() );
//					EquipItem( new RingmailArms() );
//					EquipItem( new RingmailChest() );
//					EquipItem( new RingmailLegs() );
//					EquipItem( new ThighBoots( 0x748 ) );
//					EquipItem( new Cloak( 0xCF ) );
//					EquipItem( new BodySash( 0xCF ) );
//
//					Spellbook book = new BookOfChivalry( (ulong)0x3FF );
//
//					PackItem( book );
//
//					book.LootType = LootType.Blessed;
//
//					break;
//				}
            }

            for (int i = 0; i < skills.Length; ++i)
            {
                SkillNameValue snv = skills[i];

                if (snv.Value > 0 && snv.Name != SkillName.Stealth && snv.Name != SkillName.RemoveTrap)
                {
                    Skill skill = m.Skills[snv.Name];

                    if (skill != null)
                    {
                        skill.BaseFixedPoint = snv.Value * 10;

                        if (addSkillItems)
                        {
                            AddSkillItems(snv.Name);
                        }
                    }
                }
            }
        }
Пример #12
0
		private static void SetSkills( Mobile m, SkillNameValue[] skills, int prof )
		{
			switch ( prof )
			{
				case 1: // Warrior
				{
					skills = new SkillNameValue[]
						{
							new SkillNameValue( SkillName.Anatomy, 30 ),
							new SkillNameValue( SkillName.Healing, 45 ),
							new SkillNameValue( SkillName.Swords, 35 ),
							new SkillNameValue( SkillName.Tactics, 50 )
						};

					break;
				}
				case 2: // Magician
				{
					skills = new SkillNameValue[]
						{
							new SkillNameValue( SkillName.EvalInt, 30 ),
							new SkillNameValue( SkillName.Wrestling, 30 ),
							new SkillNameValue( SkillName.Magery, 50 ),
							new SkillNameValue( SkillName.Meditation, 50 )
						};

					break;
				}
				case 3: // Blacksmith
				{
					skills = new SkillNameValue[]
						{
							new SkillNameValue( SkillName.Mining, 30 ),
							new SkillNameValue( SkillName.ArmsLore, 30 ),
							new SkillNameValue( SkillName.Blacksmith, 50 ),
							new SkillNameValue( SkillName.Tinkering, 50 )
						};

					break;
				}
				default:
				{
					if ( !ValidSkills( skills ) )
						return;

					break;
				}
			}

			bool addSkillItems = true;
			bool elf = (m.Race == Race.Elf);

			switch ( prof )
			{
				case 1: // Warrior
				{
					EquipItem( new LeatherChest() );
                    break;

				}
			}

			for ( int i = 0; i < skills.Length; ++i )
			{
				SkillNameValue snv = skills[i];

				if ( snv.Value > 0 && ( snv.Name != SkillName.Stealth || prof == 7 ) && snv.Name != SkillName.RemoveTrap )
				{
					Skill skill = m.Skills[snv.Name];

					if ( skill != null )
					{
						skill.BaseFixedPoint = snv.Value * 10;

						if ( addSkillItems )
							AddSkillItems( snv.Name, m );
					}
				}
			}
		}
Пример #13
0
        private static void SetSkills(Mobile m, SkillNameValue[] skills, int prof)
        {
            bool addSkillItems = true;

            switch (prof)
            {
            case 1:                     // Warrior
            {
                EquipItem(new LeatherChest());
                break;
            }

            case 4:                     // Necromancer
            {
                Container regs = new BagOfNecroReagents(50);

                PackItem(regs);

                regs.LootType = LootType.Regular;

                EquipItem(new BoneHelm());

                EquipItem(new BoneHarvester());
                EquipItem(NecroHue(new LeatherChest()));
                EquipItem(NecroHue(new LeatherArms()));
                EquipItem(NecroHue(new LeatherGloves()));
                EquipItem(NecroHue(new LeatherGorget()));
                EquipItem(NecroHue(new LeatherLegs()));
                EquipItem(NecroHue(new Skirt()));
                EquipItem(new Sandals(0x8FD));

                Spellbook book = new NecromancerSpellbook((ulong)0x8981);                           // animate dead, evil omen, pain spike, summon familiar, wraith form

                PackItem(book);

                addSkillItems = false;

                break;
            }

            case 5:                     // Paladin
            {
                EquipItem(new Broadsword());
                EquipItem(new Helmet());
                EquipItem(new PlateGorget());
                EquipItem(new RingmailArms());
                EquipItem(new RingmailChest());
                EquipItem(new RingmailLegs());
                EquipItem(new ThighBoots(0x748));
                EquipItem(new Cloak(0xCF));
                EquipItem(new BodySash(0xCF));

                Spellbook book = new BookOfChivalry((ulong)0x3FF);

                PackItem(book);

                addSkillItems = false;

                break;
            }
            }

            for (int i = 0; i < skills.Length; ++i)
            {
                SkillNameValue snv = skills[i];

                if (snv.Value > 0 && (snv.Name != SkillName.Stealth || prof == 7) && snv.Name != SkillName.RemoveTrap && snv.Name != SkillName.Spellweaving)
                {
                    Skill skill = m.Skills[snv.Name];

                    if (skill != null)
                    {
                        //skill.BaseFixedPoint = snv.Value * 10;

                        if (addSkillItems)
                        {
                            AddSkillItems(snv.Name, m);
                        }
                    }
                }
            }
        }
Пример #14
0
        private static void SetSkills(Mobile mobile, SkillNameValue[] skills, int prof)
        {
            switch (prof)
            {
            case 1:     // Warrior
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Anatomy, 30),
                    new SkillNameValue(SkillName.Healing, 45),
                    new SkillNameValue(SkillName.Swords, 35),
                    new SkillNameValue(SkillName.Tactics, 50)
                };

                break;
            }

            case 2:     // Magician
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.EvalInt, 30),
                    new SkillNameValue(SkillName.Wrestling, 30),
                    new SkillNameValue(SkillName.Magery, 50),
                    new SkillNameValue(SkillName.Meditation, 50)
                };

                break;
            }

            case 3:     // Blacksmith
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Mining, 30),
                    new SkillNameValue(SkillName.ArmsLore, 30),
                    new SkillNameValue(SkillName.Blacksmith, 50),
                    new SkillNameValue(SkillName.Tinkering, 50)
                };

                break;
            }

            case 4:     // Necromancer
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.SpiritSpeak, 30),
                    new SkillNameValue(SkillName.Swords, 30),
                    new SkillNameValue(SkillName.Tactics, 20)
                };

                break;
            }

            case 5:     // Paladin
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Swords, 49),
                    new SkillNameValue(SkillName.Tactics, 30)
                };

                break;
            }

            case 6:     //Samurai
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Swords, 50),
                    new SkillNameValue(SkillName.Anatomy, 30),
                    new SkillNameValue(SkillName.Healing, 30)
                };

                break;
            }

            case 7:     //Ninja
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Hiding, 50),
                    new SkillNameValue(SkillName.Fencing, 30),
                    new SkillNameValue(SkillName.Stealth, 30)
                };
                break;
            }

            default:
            {
                if (!ValidSkills(skills))
                {
                    return;
                }

                break;
            }
            }

            bool addSkillItems = true;

            //Overrides
            int bowcraftValueToAssign = 0;

            bool hasCarpentry     = false;
            bool hasLumberjacking = false;

            bool increasedCarpentry     = false;
            bool increasedLumberjacking = false;

            for (int i = 0; i < skills.Length; ++i)
            {
                SkillNameValue skillNameValue = skills[i];

                if (skillNameValue.Value > 0)
                {
                    if (skillNameValue.Name == SkillName.Carpentry)
                    {
                        hasCarpentry = true;
                    }

                    if (skillNameValue.Name == SkillName.Lumberjacking)
                    {
                        hasLumberjacking = true;
                    }

                    if (skillNameValue.Name == SkillName.Bowcraft)
                    {
                        bowcraftValueToAssign += skillNameValue.Value * 10;
                        continue;
                    }

                    Skill skill = mobile.Skills[skillNameValue.Name];

                    if (skill != null)
                    {
                        skill.BaseFixedPoint = skillNameValue.Value * 10;

                        if (addSkillItems)
                        {
                            AddSkillItems(skillNameValue.Name, mobile);
                        }
                    }
                }
            }

            int MaxStartingSkillBaseFixedPoint = (int)MaxStartingSkillValue * 10;

            //Convert Bowcraft to Carpentry
            if (bowcraftValueToAssign > 0)
            {
                if (mobile.Skills.Carpentry.BaseFixedPoint < MaxStartingSkillBaseFixedPoint)
                {
                    int availableCarpentry  = MaxStartingSkillBaseFixedPoint - mobile.Skills.Carpentry.BaseFixedPoint;
                    int bowcraftToCarpentry = 0;

                    if (bowcraftValueToAssign > availableCarpentry)
                    {
                        bowcraftToCarpentry    = availableCarpentry;
                        bowcraftValueToAssign -= availableCarpentry;

                        mobile.Skills.Carpentry.BaseFixedPoint += bowcraftToCarpentry;
                    }

                    else
                    {
                        mobile.Skills.Carpentry.BaseFixedPoint += bowcraftValueToAssign;
                        bowcraftValueToAssign = 0;
                    }

                    increasedCarpentry = true;

                    AddSkillItems(SkillName.Carpentry, mobile);
                }
            }

            //Convert Remaining Bowcraft to Lumberjacking
            if (bowcraftValueToAssign > 0)
            {
                if (mobile.Skills.Lumberjacking.BaseFixedPoint < MaxStartingSkillBaseFixedPoint)
                {
                    int availableLumberjacking  = MaxStartingSkillBaseFixedPoint - mobile.Skills.Lumberjacking.BaseFixedPoint;
                    int bowcraftToLumberjacking = 0;

                    if (bowcraftValueToAssign > availableLumberjacking)
                    {
                        bowcraftToLumberjacking = availableLumberjacking;
                        bowcraftValueToAssign  -= availableLumberjacking;

                        mobile.Skills.Lumberjacking.BaseFixedPoint += bowcraftToLumberjacking;
                    }

                    else
                    {
                        mobile.Skills.Lumberjacking.BaseFixedPoint += bowcraftValueToAssign;
                        bowcraftValueToAssign = 0;
                    }

                    increasedLumberjacking = true;

                    AddSkillItems(SkillName.Lumberjacking, mobile);
                }
            }

            Timer.DelayCall(TimeSpan.FromSeconds(5), delegate
            {
                if (mobile == null)
                {
                    return;
                }

                if (increasedCarpentry && !increasedLumberjacking)
                {
                    mobile.SendMessage(0x3F, "The Bowcraft skill has been merged into the Carpentry skill and you have received an increase in Carpentry as compensation.");
                }

                else if (!increasedCarpentry && increasedLumberjacking)
                {
                    mobile.SendMessage(0x3F, "The Bowcraft skill has been merged into the Carpentry skill and you have received an increase in Lumberjacking as compensation.");
                }

                else if (increasedCarpentry && increasedLumberjacking)
                {
                    mobile.SendMessage(0x3F, "The Bowcraft skill has been merged into the Carpentry skill and you have received increases in Carpentry and Lumberjacking as compensation.");
                }
            });
        }
Пример #15
0
        private static void SetSkills(Mobile m, SkillNameValue[] skills, int prof)
        {
            switch (prof)
            {
            case 1:                     // Warrior
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Healing, 25),
                    new SkillNameValue(SkillName.Swords, 25),
                    new SkillNameValue(SkillName.Tactics, 50)
                };

                break;
            }

            case 2:                     // Magician
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Wrestling, 25),
                    new SkillNameValue(SkillName.Magery, 50),
                    //new SkillNameValue( SkillName.Meditation, 25 )
                };

                break;
            }

            case 3:                     // Blacksmith
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Mining, 25),
                    new SkillNameValue(SkillName.ArmsLore, 25),
                    new SkillNameValue(SkillName.Blacksmith, 50)
                };

                break;
            }

            case 4:                     // Necromancer
            {
                if (!Core.AOS)
                {
                    goto default;
                }

                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Necromancy, 50),
                    new SkillNameValue(SkillName.Focus, 30),
                    new SkillNameValue(SkillName.SpiritSpeak, 30),
                    new SkillNameValue(SkillName.Swords, 30),
                    new SkillNameValue(SkillName.Tactics, 20)
                };

                break;
            }

            case 5:                     // Paladin
            {
                if (!Core.AOS)
                {
                    goto default;
                }

                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Chivalry, 51),
                    new SkillNameValue(SkillName.Swords, 49),
                    new SkillNameValue(SkillName.Focus, 30),
                    new SkillNameValue(SkillName.Tactics, 30)
                };

                break;
            }

            default:
            {
                if (!ValidSkills(skills))
                {
                    return;
                }

                break;
            }
            }

            bool addSkillItems = true;

            switch (prof)
            {
            case 1:                     // Warrior
            {
                EquipItem(new LeatherChest());
                EquipItem(new LeatherLegs());
                break;
            }

            case 4:                     // Necromancer
            {
                addSkillItems = false;
                break;
            }

            case 5:                     // Paladin
            {
                break;
            }
            }

            for (int i = 0; i < skills.Length; ++i)
            {
                SkillNameValue snv = skills[i];

                if (snv.Value > 0 && snv.Name != SkillName.Stealth && snv.Name != SkillName.RemoveTrap)
                {
                    Skill skill = m.Skills[snv.Name];

                    if (skill != null)
                    {
                        skill.BaseFixedPoint = snv.Value * 10;

                        if (addSkillItems)
                        {
                            AddSkillItems(snv.Name);
                        }
                    }
                }
            }
        }
Пример #16
0
        private static void SetSkills(Mobile m, SkillNameValue[] skills, int prof)
        {
            switch (prof)
            {
            case 1:                     // Warrior
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Anatomy, 30),
                    new SkillNameValue(SkillName.Healing, 45),
                    new SkillNameValue(SkillName.Swords, 35),
                    new SkillNameValue(SkillName.Tactics, 50)
                };

                break;
            }

            case 2:                     // Magician
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.EvalInt, 30),
                    new SkillNameValue(SkillName.Wrestling, 30),
                    new SkillNameValue(SkillName.Magery, 50),
                    new SkillNameValue(SkillName.Meditation, 50)
                };

                break;
            }

            case 3:                     // Blacksmith
            {
                skills = new SkillNameValue[]
                {
                    new SkillNameValue(SkillName.Mining, 30),
                    new SkillNameValue(SkillName.ArmsLore, 30),
                    new SkillNameValue(SkillName.Blacksmith, 50),
                    new SkillNameValue(SkillName.Tinkering, 50)
                };

                break;
            }

            default:
            {
                if (!ValidSkills(skills))
                {
                    return;
                }

                break;
            }
            }

            bool addSkillItems = true;
            bool elf           = (m.Race == Race.Elf);

            switch (prof)
            {
            case 1:                     // Warrior
            {
                EquipItem(new LeatherChest());
                break;
            }
            }

            for (int i = 0; i < skills.Length; ++i)
            {
                SkillNameValue snv = skills[i];

                if (snv.Value > 0 && (snv.Name != SkillName.Stealth || prof == 7) && snv.Name != SkillName.RemoveTrap)
                {
                    Skill skill = m.Skills[snv.Name];

                    if (skill != null)
                    {
                        skill.BaseFixedPoint = snv.Value * 10;

                        if (addSkillItems)
                        {
                            AddSkillItems(snv.Name, m);
                        }
                    }
                }
            }
        }