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