private static void EventSink_MobileCreated(MobileCreatedEventArgs e) { if (e.Mobile is PlayerMobile) { PlayerMobile pm = (PlayerMobile)e.Mobile; Mobile m_Mobile = e.Mobile; Account a_Account = ((Account)m_Mobile.Account); Container pack = m_Mobile.Backpack; pack.DropItem(new GoldLooter()); if (!Convert.ToBoolean(a_Account.GetTag("FirstChar"))) { Console.WriteLine("Account: {0}", a_Account.Username); if (pack != null) { Spellbook book = new NecromancerSpellbook(); book.Content = book.BookCount == 64 ? book.Content = ulong.MaxValue : (1ul << book.BookCount) - 1; pack.DropItem(book); book = new Spellbook(); book.Content = book.BookCount == 64 ? book.Content = ulong.MaxValue : (1ul << book.BookCount) - 1; pack.DropItem(book); book = new MysticBook(); book.Content = book.BookCount == 64 ? book.Content = ulong.MaxValue : (1ul << book.BookCount) - 1; pack.DropItem(book); pack.DropItem(new Runebook(10)); pack.DropItem(new MythicCharacterToken()); pack.DropItem(new SoulstoneFragmentToken()); pack.DropItem(new SoulstoneFragmentToken()); a_Account.SetTag("FirstChar", "true"); } } } }
public override void OnDeath(Container c) { base.OnDeath(c); NecromancerSpellbook book = new NecromancerSpellbook(); book.Content = (1ul << book.BookCount) - 1; c.DropItem(book); }
protected override void OnAfterDeath(Container c) { NecromancerSpellbook book = new NecromancerSpellbook(); book.Content = (1ul << book.BookCount) - 1; c.DropItem(book); base.OnAfterDeath(c); }
private static Item RandomSpellbook(SuccessRating rating) { Spellbook item = null; switch (Utility.Random(5)) { default: item = new Spellbook(); break; case 1: item = new NecromancerSpellbook(); break; case 2: item = new BookOfBushido(); break; case 3: item = new BookOfChivalry(); break; case 4: item = new BookOfNinjitsu(); break; } if (item == null) { return(null); } else { switch (item.SpellbookType) { case SpellbookType.Regular: { switch (rating) { default: { item.Content = 0xFFFF; break; } case SuccessRating.Success: { item.Content = 0xFFFFFFFF; break; } case SuccessRating.CompleteSuccess: { item.Content = 0xFFFFFFFFFFFF; break; } case SuccessRating.ExceptionalSuccess: { item.Content = ulong.MaxValue; break; } } break; } default: item.Content = (1ul << item.BookCount) - 1; break; } } return(item); }
private static void BaseCaster() { PackItem(new BagOfReagents(50)); Spellbook mageBook = new Spellbook((ulong)0x382A8C38); mageBook.LootType = LootType.Blessed; PackItem(mageBook); PackItem(new BagOfNecroReagents(50)); Spellbook necroBook = new NecromancerSpellbook((ulong)0x8981); // animate dead, evil omen, pain spike, summon familiar, wraith form necroBook.LootType = LootType.Blessed; PackItem(necroBook); EquipItem(new Robe(Utility.RandomOrangeHue())); EquipItem(new Sandals(0x8FD)); BaseItems(); }
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; } } var addSkillItems = true; var elf = (m.Race == Race.Elf); var human = (m.Race == Race.Human); var 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); if (!Core.AOS) { foreach (var item in regs.Items) { item.LootType = LootType.Newbied; } } PackItem(regs); regs.LootType = LootType.Regular; 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 { var 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()); var 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 (var i = 0; i < skills.Length; ++i) { var snv = skills[i]; if (snv.Value > 0 && (snv.Name != SkillName.Stealth || prof == 7) && snv.Name != SkillName.RemoveTrap && snv.Name != SkillName.Spellweaving) { var skill = m.Skills[snv.Name]; if (skill != null) { skill.BaseFixedPoint = snv.Value * 10; if (addSkillItems) { AddSkillItems(snv.Name, m); } } } } }
private static void AddSkillItems(SkillName skill, Mobile m) { var elf = (m.Race == Race.Elf); var human = (m.Race == Race.Human); var gargoyle = (m.Race == Race.Gargoyle); switch (skill) { case SkillName.Alchemy: { PackItem(new EmptyBottle(4)); PackItem(new MortarPestle()); var hue = Utility.RandomPinkHue(); if (elf) { if (m.Female) { EquipItem(new FemaleElvenRobe(hue)); } else { EquipItem(new MaleElvenRobe(hue)); } } else { EquipItem(new Robe(Utility.RandomPinkHue())); } break; } case SkillName.Anatomy: { PackItem(new Bandage(3)); var hue = Utility.RandomYellowHue(); if (elf) { if (m.Female) { EquipItem(new FemaleElvenRobe(hue)); } else { EquipItem(new MaleElvenRobe(hue)); } } else { EquipItem(new Robe(hue)); } break; } case SkillName.AnimalLore: { var hue = Utility.RandomBlueHue(); if (elf) { EquipItem(new WildStaff()); if (m.Female) { EquipItem(new FemaleElvenRobe(hue)); } else { EquipItem(new MaleElvenRobe(hue)); } } else { EquipItem(new ShepherdsCrook()); EquipItem(new Robe(hue)); } break; } case SkillName.Archery: { PackItem(new Arrow(25)); if (elf) { EquipItem(new ElvenCompositeLongbow()); } else if (human) { EquipItem(new Bow()); } break; } case SkillName.ArmsLore: { if (elf) { switch (Utility.Random(3)) { case 0: EquipItem(new Leafblade()); break; case 1: EquipItem(new RuneBlade()); break; case 2: EquipItem(new DiamondMace()); break; } } else if (human) { switch (Utility.Random(3)) { case 0: EquipItem(new Kryss()); break; case 1: EquipItem(new Katana()); break; case 2: EquipItem(new Club()); break; } } else if (gargoyle) { switch (Utility.Random(3)) { case 0: EquipItem(new BloodBlade()); break; case 1: EquipItem(new GlassSword()); break; case 2: EquipItem(new DiscMace()); break; } } break; } case SkillName.Begging: { if (elf) { EquipItem(new WildStaff()); } else if (human) { EquipItem(new GnarledStaff()); } else if (gargoyle) { EquipItem(new SerpentStoneStaff()); } break; } case SkillName.Blacksmith: { PackItem(new Tongs()); PackItem(new Pickaxe()); PackItem(new Pickaxe()); PackItem(new IronIngot(50)); if (human || elf) { EquipItem(new HalfApron(Utility.RandomYellowHue())); } break; } case SkillName.Bushido: { if (human || elf) { EquipItem(new Hakama()); EquipItem(new Kasa()); } EquipItem(new BookOfBushido()); break; } case SkillName.Fletching: { PackItem(new Board(14)); PackItem(new Feather(5)); PackItem(new Shaft(5)); break; } case SkillName.Camping: { PackItem(new Bedroll()); PackItem(new Kindling(5)); break; } case SkillName.Carpentry: { PackItem(new Board(10)); PackItem(new Saw()); if (human || elf) { EquipItem(new HalfApron(Utility.RandomYellowHue())); } break; } case SkillName.Cartography: { PackItem(new BlankMap()); PackItem(new BlankMap()); PackItem(new BlankMap()); PackItem(new BlankMap()); PackItem(new Sextant()); break; } case SkillName.Cooking: { PackItem(new Kindling(2)); PackItem(new RawLambLeg()); PackItem(new RawChickenLeg()); PackItem(new RawFishSteak()); PackItem(new SackFlour()); PackItem(new Pitcher(BeverageType.Water)); break; } case SkillName.Chivalry: { if (Core.ML) { PackItem(new BookOfChivalry((ulong)0x3FF)); } break; } case SkillName.DetectHidden: { if (human || elf) { EquipItem(new Cloak(0x455)); } break; } case SkillName.Discordance: { PackInstrument(); break; } case SkillName.Fencing: { if (elf) { EquipItem(new Leafblade()); } else if (human) { EquipItem(new Kryss()); } else if (gargoyle) { EquipItem(new BloodBlade()); } break; } case SkillName.Fishing: { EquipItem(new FishingPole()); var hue = Utility.RandomYellowHue(); if (elf) { Item i = new Circlet(); i.Hue = hue; EquipItem(i); } else if (human) { EquipItem(new FloppyHat(hue)); } break; } case SkillName.Healing: { PackItem(new Bandage(50)); PackItem(new Scissors()); break; } case SkillName.Herding: { if (elf) { EquipItem(new WildStaff()); } else { EquipItem(new ShepherdsCrook()); } break; } case SkillName.Hiding: { if (human || elf) { EquipItem(new Cloak(0x455)); } break; } case SkillName.Inscribe: { PackItem(new BlankScroll(2)); PackItem(new BlueBook()); break; } case SkillName.ItemID: { if (elf) { EquipItem(new WildStaff()); } else if (human) { EquipItem(new GnarledStaff()); } else if (gargoyle) { EquipItem(new SerpentStoneStaff()); } break; } case SkillName.Lockpicking: { PackItem(new Lockpick(20)); break; } case SkillName.Lumberjacking: { if (human || elf) { EquipItem(new Hatchet()); } else if (gargoyle) { EquipItem(new DualShortAxes()); } break; } case SkillName.Macing: { if (elf) { EquipItem(new DiamondMace()); } else if (human) { EquipItem(new Club()); } else if (gargoyle) { EquipItem(new DiscMace()); } break; } case SkillName.Magery: { var regs = new BagOfReagents(50); if (!Core.AOS) { foreach (var item in regs.Items) { item.LootType = LootType.Newbied; } } PackItem(regs); regs.LootType = LootType.Regular; PackScroll(0); PackScroll(1); PackScroll(2); var book = new Spellbook((ulong)0x382A8C38); book.LootType = LootType.Blessed; EquipItem(book); if (elf) { EquipItem(new Circlet()); if (m.Female) { EquipItem(new FemaleElvenRobe(Utility.RandomBlueHue())); } else { EquipItem(new MaleElvenRobe(Utility.RandomBlueHue())); } } else { if (human) { EquipItem(new WizardsHat()); } EquipItem(new Robe(Utility.RandomBlueHue())); } break; } case SkillName.Mining: { PackItem(new Pickaxe()); break; } case SkillName.Musicianship: { PackInstrument(); break; } case SkillName.Necromancy: { if (Core.ML) { Container regs = new BagOfNecroReagents(50); PackItem(regs); regs.LootType = LootType.Regular; } Spellbook book = new NecromancerSpellbook( (ulong)0x8981); // animate dead, evil omen, pain spike, summon familiar, wraith form book.LootType = LootType.Blessed; PackItem(book); break; } case SkillName.Ninjitsu: { if (human || elf) { EquipItem(new Hakama(0x2C3)); //Only ninjas get the hued one. EquipItem(new Kasa()); } EquipItem(new BookOfNinjitsu()); break; } case SkillName.Parry: { if (human || elf) { EquipItem(new WoodenShield()); } else if (gargoyle) { EquipItem(new GargishWoodenShield()); } break; } case SkillName.Peacemaking: { PackInstrument(); break; } case SkillName.Poisoning: { PackItem(new LesserPoisonPotion()); PackItem(new LesserPoisonPotion()); break; } case SkillName.Provocation: { PackInstrument(); break; } case SkillName.Snooping: { PackItem(new Lockpick(20)); break; } case SkillName.SpiritSpeak: { if (human || elf) { EquipItem(new Cloak(0x455)); } break; } case SkillName.Stealing: { PackItem(new Lockpick(20)); break; } case SkillName.Swords: { if (elf) { EquipItem(new RuneBlade()); } else if (human) { EquipItem(new Katana()); } else if (gargoyle) { EquipItem(new GlassSword()); } break; } case SkillName.Tactics: { if (elf) { EquipItem(new RuneBlade()); } else if (human) { EquipItem(new Katana()); } else if (gargoyle) { EquipItem(new GlassSword()); } break; } case SkillName.Tailoring: { PackItem(new BoltOfCloth()); PackItem(new SewingKit()); break; } case SkillName.Tinkering: { PackItem(new TinkerTools()); PackItem(new IronIngot(50)); PackItem(new Axle()); PackItem(new AxleGears()); PackItem(new Springs()); PackItem(new ClockFrame()); break; } case SkillName.Tracking: { if (human || elf) { if (m_Mobile != null) { var shoes = m_Mobile.FindItemOnLayer(Layer.Shoes); if (shoes != null) { shoes.Delete(); } } var hue = Utility.RandomYellowHue(); if (elf) { EquipItem(new ElvenBoots(hue)); } else { EquipItem(new Boots(hue)); } EquipItem(new SkinningKnife()); } else if (gargoyle) { PackItem(new SkinningKnife()); } break; } case SkillName.Veterinary: { PackItem(new Bandage(5)); PackItem(new Scissors()); break; } case SkillName.Wrestling: { if (elf) { EquipItem(new LeafGloves()); } else if (human) { EquipItem(new LeatherGloves()); } else if (gargoyle) { // Why not give them arm armor? EquipItem(new GargishLeatherArms()); } break; } case SkillName.Throwing: { if (gargoyle) { EquipItem(new Boomerang()); } break; } case SkillName.Mysticism: { PackItem(new MysticBook((ulong)0xAB)); break; } } }
public EvilNecromancy() : base(AIType.AI_NecroMage, FightMode.Closest, 16, 1, 0.1, 0.2) { Body = ((this.Female = Utility.RandomBool()) ? Body = 0x191 : Body = 0x190); Name = this.Female ? NameList.RandomName("female") : NameList.RandomName("male"); //SpeechHue = Utility.RandomDyedHue(); Hue = Utility.RandomSkinHue(); Utility.AssignRandomHair(this); SetStr(150, 180); SetDex(180, 200); SetInt(345, 456); SetDamage(25, 28); SetHits(1000, 1599); SetMana(1500, 1600); Title = "惡靈法師"; SetDamageType(ResistanceType.Energy, 100); SetResistance(ResistanceType.Physical, 50, 58); SetResistance(ResistanceType.Fire, 50, 58); SetResistance(ResistanceType.Cold, 40, 50); SetResistance(ResistanceType.Poison, 40, 55); SetResistance(ResistanceType.Energy, 40, 50); SetSkill(SkillName.Archery, 90.0, 120.0); SetSkill(SkillName.Anatomy, 80.1, 100.0); SetSkill(SkillName.Necromancy, 120.5, 130.0); SetSkill(SkillName.SpiritSpeak, 110.0, 120.0); SetSkill(SkillName.MagicResist, 120.0, 150.0); SetSkill(SkillName.Tactics, 115.0); SetSkill(SkillName.Wrestling, 103.0); SetSkill(SkillName.DetectHidden, 120.0); SetSkill(SkillName.Wrestling, 121.9, 130.6); SetSkill(SkillName.Tactics, 114.4, 117.4); SetSkill(SkillName.MagicResist, 147.7, 153.0); SetSkill(SkillName.Poisoning, 122.8, 124.0); SetSkill(SkillName.Magery, 121.8, 127.8); SetSkill(SkillName.EvalInt, 103.6, 117.0); SetSkill(SkillName.Meditation, 100.0, 110.0); Fame = 15000; Karma = -15000; VirtualArmor = 55; if (this.Female == true) { AddItem(new PlainDress(Utility.RandomRedHue())); AddItem(new FeatheredHat(Utility.RandomRedHue())); } else { AddItem(new Robe(Utility.RandomBlueHue())); AddItem(new MagicWizardsHat(Utility.RandomBlueHue())); } m = new Windrunner("御风者"); //var b = new Bow(); b.Attributes.SpellChanneling = 1; var nc = new NecromancerSpellbook(); AddItem(nc); //PackItem(new Arrow(55)); BaseRing r = new GoldRing(); r.Attributes.AttackChance = 40; r.Movable = false; r.Attributes.SpellDamage = 50; AddItem(r); AddItem(new ThighBoots()); //AddItem(new NecromancerSpellbook()); //new Nightmare().Rider = this; m.Rider = this; //PackReg(200); PackGold(1800, 2000); if (Utility.RandomDouble() < 0.5) { PackItem(new TreasureMap(Utility.RandomBool() == true ? 6 : 7, map)); } }
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); } } } } }
protected override void OnTarget(Mobile from, object targeted) { if (targeted is Mobile) { Mobile targ = (Mobile)targeted; if (from != targ) { from.SendMessage("You may only set your own body to GM style."); } else { m_Mobile = from; CommandLogging.WriteLine(from, "{0} {1} is assuming a GM body", from.AccessLevel, CommandLogging.Format(from)); Container pack = from.Backpack; ArrayList ItemsToDelete = new ArrayList(); foreach (Item item in from.Items) { if (item.Layer != Layer.Bank && item.Layer != Layer.Hair && item.Layer != Layer.FacialHair && item.Layer != Layer.Mount && item.Layer != Layer.Backpack) { ItemsToDelete.Add(item); } } foreach (Item item in ItemsToDelete) { item.Delete(); } if (pack == null) { pack = new Backpack(); pack.Movable = false; from.AddItem(pack); } else { pack.Delete(); pack = new Backpack(); pack.Movable = false; from.AddItem(pack); } from.Hunger = 20; from.Thirst = 20; from.Fame = 0; from.Karma = 0; from.Kills = 0; from.Hidden = true; from.Blessed = true; from.Hits = from.HitsMax; from.Mana = from.ManaMax; from.Stam = from.StamMax; if (from.AccessLevel >= AccessLevel.Counselor) { EquipItem(new StaffRing()); Spellbook book1 = new Spellbook((ulong)18446744073709551615); Spellbook book2 = new NecromancerSpellbook((ulong)0xffff); Spellbook book3 = new BookOfChivalry(); Spellbook book4 = new BookOfBushido(); Spellbook book5 = new BookOfNinjitsu(); PackItem(new GMHidingStone()); PackItem(book1); PackItem(book2); PackItem(book3); PackItem(book4); PackItem(book5); from.RawStr = 100; from.RawDex = 100; from.RawInt = 100; from.Hits = from.HitsMax; from.Mana = from.ManaMax; from.Stam = from.StamMax; for (int i = 0; i < targ.Skills.Length; ++i) { targ.Skills[i].Base = 120; } } if (from.AccessLevel == AccessLevel.Counselor) { EquipItem(new CounselorRobe()); EquipItem(new ThighBoots(3)); from.Title = "[Counselor]"; } if (from.AccessLevel == AccessLevel.GameMaster) { EquipItem(new GMRobe()); EquipItem(new ThighBoots(39)); from.Title = "[GM]"; } if (from.AccessLevel == AccessLevel.Seer) { EquipItem(new SeerRobe()); EquipItem(new ThighBoots(467)); from.Title = "[Seer]"; } if (from.AccessLevel == AccessLevel.Administrator) { EquipItem(new AdminRobe()); EquipItem(new ThighBoots(1001)); from.Title = "[Admin]"; } if (from.AccessLevel == AccessLevel.Developer) { EquipItem(new AdminRobe()); EquipItem(new ThighBoots(1001)); from.Title = "[Developer]"; } if (from.AccessLevel == AccessLevel.Owner) { EquipItem(new AdminRobe()); EquipItem(new ThighBoots(1001)); from.Title = "[Owner]"; } } } }
private static void AddSkillItems(SkillName skill, Mobile m) { bool elf = (m.Race == Race.Elf); switch (skill) { case SkillName.Alchemy: { PackItem(new Bottle(4)); PackItem(new MortarPestle()); int hue = Utility.RandomPinkHue(); if (elf) { if (m.Female) { EquipItem(new FemaleElvenRobe(hue)); } else { EquipItem(new MaleElvenRobe(hue)); } } else { EquipItem(new Robe(Utility.RandomPinkHue())); } break; } case SkillName.Anatomy: { PackItem(new Bandage(3)); int hue = Utility.RandomYellowHue(); if (elf) { if (m.Female) { EquipItem(new FemaleElvenRobe(hue)); } else { EquipItem(new MaleElvenRobe(hue)); } } else { EquipItem(new Robe(Utility.RandomPinkHue())); } break; } case SkillName.AnimalLore: { int hue = Utility.RandomBlueHue(); if (elf) { EquipItem(new WildStaff()); if (m.Female) { EquipItem(new FemaleElvenRobe(hue)); } else { EquipItem(new MaleElvenRobe(hue)); } } else { EquipItem(new ShepherdsCrook()); EquipItem(new Robe(hue)); } break; } case SkillName.Archery: { PackItem(new Arrow(25)); if (elf) { EquipItem(new ElvenCompositeLongbow()); } else { EquipItem(new Bow()); } break; } case SkillName.ArmsLore: { if (elf) { switch (Utility.Random(3)) { case 0: EquipItem(new Leafblade()); break; case 1: EquipItem(new RuneBlade()); break; case 2: EquipItem(new DiamondMace()); break; } } else { switch (Utility.Random(3)) { case 0: EquipItem(new Kryss()); break; case 1: EquipItem(new Katana()); break; case 2: EquipItem(new Club()); break; } } break; } case SkillName.Begging: { if (elf) { EquipItem(new WildStaff()); } else { EquipItem(new GnarledStaff()); } break; } case SkillName.Blacksmith: { PackItem(new Tongs()); PackItem(new Pickaxe()); PackItem(new Pickaxe()); PackItem(new IronIngot(50)); EquipItem(new HalfApron(Utility.RandomYellowHue())); break; } case SkillName.Bushido: { EquipItem(new Hakama()); EquipItem(new Kasa()); EquipItem(new BookOfBushido()); break; } case SkillName.Fletching: { PackItem(new Board(14)); PackItem(new Feather(5)); PackItem(new Shaft(5)); break; } case SkillName.Camping: { PackItem(new Bedroll()); PackItem(new Kindling(5)); break; } case SkillName.Carpentry: { PackItem(new Board(10)); PackItem(new Saw()); EquipItem(new HalfApron(Utility.RandomYellowHue())); break; } case SkillName.Cartography: { PackItem(new BlankMap()); PackItem(new BlankMap()); PackItem(new BlankMap()); PackItem(new BlankMap()); PackItem(new Sextant()); break; } case SkillName.Cooking: { PackItem(new Kindling(2)); PackItem(new RawLambLeg()); PackItem(new RawChickenLeg()); PackItem(new RawFishSteak()); PackItem(new SackFlour()); PackItem(new Pitcher(BeverageType.Water)); break; } case SkillName.Chivalry: { if (Core.ML) { PackItem(new BookOfChivalry((ulong)0x3FF)); } break; } case SkillName.DetectHidden: { EquipItem(new Cloak(0x455)); break; } case SkillName.Discordance: { PackInstrument(); break; } case SkillName.Fencing: { if (elf) { EquipItem(new Leafblade()); } else { EquipItem(new Kryss()); } break; } case SkillName.Fishing: { EquipItem(new FishingPole()); int hue = Utility.RandomYellowHue(); if (elf) { Item i = new Circlet(); i.Hue = hue; EquipItem(i); } else { EquipItem(new FloppyHat(Utility.RandomYellowHue())); } break; } case SkillName.Healing: { PackItem(new Bandage(50)); PackItem(new Scissors()); break; } case SkillName.Herding: { if (elf) { EquipItem(new WildStaff()); } else { EquipItem(new ShepherdsCrook()); } break; } case SkillName.Hiding: { EquipItem(new Cloak(0x455)); break; } case SkillName.Inscribe: { PackItem(new BlankScroll(2)); PackItem(new BlueBook()); break; } case SkillName.ItemID: { if (elf) { EquipItem(new WildStaff()); } else { EquipItem(new GnarledStaff()); } break; } case SkillName.Lockpicking: { PackItem(new Lockpick(20)); break; } case SkillName.Lumberjacking: { EquipItem(new Hatchet()); break; } case SkillName.Macing: { if (elf) { EquipItem(new DiamondMace()); } else { EquipItem(new Club()); } break; } case SkillName.Magery: { BagOfReagents regs = new BagOfReagents(30); /* * if ( !Core.AOS ) * foreach ( Item item in regs.Items ) * item.LootType = LootType.Newbied; */ PackItem(regs); regs.LootType = LootType.Regular; PackScroll(0); PackScroll(1); PackScroll(2); Spellbook book = new Spellbook((ulong)0x382A8C38); EquipItem(book); //book.LootType = LootType.Blessed; if (elf) { EquipItem(new Circlet()); if (m.Female) { EquipItem(new FemaleElvenRobe(Utility.RandomBlueHue())); } else { EquipItem(new MaleElvenRobe(Utility.RandomBlueHue())); } } else { EquipItem(new WizardsHat()); EquipItem(new Robe(Utility.RandomBlueHue())); } break; } case SkillName.Mining: { PackItem(new Pickaxe()); break; } case SkillName.Musicianship: { PackInstrument(); break; } case SkillName.Necromancy: { Container regs = new BagOfNecroReagents(50); PackItem(regs); regs.LootType = LootType.Regular; Spellbook book = new NecromancerSpellbook((ulong)0x1CFFF); // Silver: All except VE/VS PackItem(book); break; } case SkillName.Ninjitsu: { EquipItem(new Hakama(0x2C3)); //Only ninjas get the hued one. EquipItem(new Kasa()); EquipItem(new BookOfNinjitsu()); break; } case SkillName.Parry: { EquipItem(new WoodenShield()); break; } case SkillName.Peacemaking: { PackInstrument(); break; } case SkillName.Poisoning: { PackItem(new LesserPoisonPotion()); PackItem(new LesserPoisonPotion()); break; } case SkillName.Provocation: { PackInstrument(); break; } case SkillName.Snooping: { PackItem(new Lockpick(20)); break; } case SkillName.SpiritSpeak: { EquipItem(new Cloak(0x455)); break; } case SkillName.Stealing: { PackItem(new Lockpick(20)); break; } case SkillName.Swords: { if (elf) { EquipItem(new RuneBlade()); } else { EquipItem(new Katana()); } break; } case SkillName.Tactics: { if (elf) { EquipItem(new RuneBlade()); } else { EquipItem(new Katana()); } break; } case SkillName.Tailoring: { PackItem(new BoltOfCloth()); PackItem(new SewingKit()); break; } case SkillName.Tracking: { if (m_Mobile != null) { Item shoes = m_Mobile.FindItemOnLayer(Layer.Shoes); if (shoes != null) { shoes.Delete(); } } int hue = Utility.RandomYellowHue(); if (elf) { EquipItem(new ElvenBoots(hue)); } else { EquipItem(new Boots(hue)); } EquipItem(new SkinningKnife()); break; } case SkillName.Veterinary: { PackItem(new Bandage(5)); PackItem(new Scissors()); break; } case SkillName.Wrestling: { if (elf) { EquipItem(new LeafGloves()); } else { EquipItem(new LeatherGloves()); } break; } } }
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); } } } } }
protected override void OnTarget(Mobile from, object targeted) { if (targeted is Mobile) { Mobile targ = (Mobile)targeted; if (from != targ) { from.SendMessage("You may only set your own body to GM style."); } else { m_Mobile = from; CommandLogging.WriteLine(from, "{0} {1} is assuming a GM body", from.AccessLevel, CommandLogging.Format(from)); Container pack = from.Backpack; if (pack == null) { pack = new Backpack(); pack.Movable = false; from.AddItem(pack); } from.Body = 0x190; from.Fame = 0; from.Karma = 0; from.Kills = 0; from.Hidden = true; from.Hits = from.HitsMax; from.Mana = from.ManaMax; from.Stam = from.StamMax; if (from.AccessLevel >= AccessLevel.GameMaster) { EquipItem(new StaffRing()); Spellbook book1 = new Spellbook((ulong)18446744073709551615); Spellbook book2 = new NecromancerSpellbook((ulong)0xffff); Spellbook book3 = new BookOfChivalry(); PackItem(book1); PackItem(book2); PackItem(book3); PackItem(new EtherealHorse()); from.RawStr = 100; from.RawDex = 100; from.RawInt = 100; from.Hits = from.HitsMax; from.Mana = from.ManaMax; from.Stam = from.StamMax; for (int i = 0; i < targ.Skills.Length; ++i) { targ.Skills[i].Base = 120; } } if (from.AccessLevel == AccessLevel.Counselor) { EquipItem(new CounselorRobe()); EquipItem(new ThighBoots(3)); PackItem(new CounselorHide()); from.Title = "[Counselor]"; from.AddItem(new ShortHair(3)); from.AddItem(new Vandyke(3)); } if (from.AccessLevel == AccessLevel.GameMaster) { EquipItem(new GMRobe()); EquipItem(new ThighBoots(39)); PackItem(new SeerHide(39)); from.Title = "[GM]"; from.AddItem(new ShortHair(39)); from.AddItem(new Vandyke(39)); } if (from.AccessLevel == AccessLevel.Seer) { EquipItem(new SeerRobe()); EquipItem(new ThighBoots(467)); PackItem(new SeerHide()); from.Title = "[Seer]"; from.AddItem(new ShortHair(467)); from.AddItem(new Vandyke(467)); } if (from.AccessLevel == AccessLevel.Administrator) { EquipItem(new AdminRobe()); EquipItem(new ThighBoots(1001)); PackItem(new AdminHide()); from.Title = "[Admin]"; from.AddItem(new ShortHair(1001)); from.AddItem(new Vandyke(1001)); } } } }