public SavageShaman() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4) { Name = NameList.RandomName("savage shaman"); int dino = Utility.RandomList(0x7D1, 0x7D2, 0x7D3, 0x7D4, 0x7D5, 0x7D6); if (Female = Utility.RandomBool()) { Body = 401; Item cloth9 = new FemaleLeatherChest(); cloth9.Hue = dino; cloth9.Name = "dracosaur tunic"; AddItem(cloth9); } else { Body = 400; } Hue = 0; SetStr(126, 145); SetDex(91, 110); SetInt(161, 185); SetDamage(4, 10); SetDamageType(ResistanceType.Physical, 100); SetResistance(ResistanceType.Physical, 30, 40); SetResistance(ResistanceType.Fire, 20, 30); SetResistance(ResistanceType.Cold, 20, 30); SetResistance(ResistanceType.Poison, 20, 30); SetResistance(ResistanceType.Energy, 40, 50); SetSkill(SkillName.EvalInt, 77.5, 100.0); SetSkill(SkillName.Fencing, 62.5, 85.0); SetSkill(SkillName.Macing, 62.5, 85.0); SetSkill(SkillName.Magery, 72.5, 95.0); SetSkill(SkillName.Meditation, 77.5, 100.0); SetSkill(SkillName.MagicResist, 77.5, 100.0); SetSkill(SkillName.Swords, 62.5, 85.0); SetSkill(SkillName.Tactics, 62.5, 85.0); SetSkill(SkillName.Wrestling, 62.5, 85.0); Fame = 1000; Karma = -1000; PackReg(10, 15); PackItem(new Bandage(Utility.RandomMinMax(1, 15))); if (0.1 > Utility.RandomDouble()) { PackItem(new TribalBerry()); } Item cloth1 = new BoneArms(); cloth1.Hue = dino; cloth1.Name = "dracosaur guantlets"; AddItem(cloth1); Item cloth2 = new BoneLegs(); cloth2.Hue = dino; cloth2.Name = "dracosaur leggings"; AddItem(cloth2); Item cloth3 = new HornedTribalMask(); cloth3.Hue = dino; cloth3.Name = "savage tribal mask"; AddItem(cloth3); Item cloth4 = new LeatherSkirt(); cloth4.Hue = dino; cloth4.Name = "dracosaur skirt"; cloth4.Layer = Layer.Waist; AddItem(cloth4); }
public ZuluuWitchDoctor() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4) { Name = "a zuluu witch doctor"; Hue = 0x89D; if (this.Female = Utility.RandomBool()) { Body = 0x191; Item cloth9 = new FemaleLeatherChest(); cloth9.Hue = 0xB9A; cloth9.Name = "Zuluu Tunic"; AddItem(cloth9); } else { Body = 0x190; } HairHue = 0x96C; SetStr(146, 165); SetDex(71, 130); SetInt(381, 405); SetDamage(14, 22); SetDamageType(ResistanceType.Physical, 100); SetResistance(ResistanceType.Physical, 30, 40); SetResistance(ResistanceType.Fire, 20, 30); SetResistance(ResistanceType.Cold, 20, 30); SetResistance(ResistanceType.Poison, 20, 30); SetResistance(ResistanceType.Energy, 40, 50); SetSkill(SkillName.EvalInt, 87.5, 100.0); SetSkill(SkillName.Fencing, 72.5, 85.0); SetSkill(SkillName.Macing, 82.5, 105.0); SetSkill(SkillName.Magery, 82.5, 95.0); SetSkill(SkillName.Meditation, 87.5, 100.0); SetSkill(SkillName.MagicResist, 87.5, 100.0); SetSkill(SkillName.Swords, 72.5, 85.0); SetSkill(SkillName.Tactics, 72.5, 85.0); SetSkill(SkillName.Wrestling, 72.5, 85.0); Fame = 4200; Karma = -4200; VirtualArmor = 10; PackReg(10, 15); PackItem(new Bandage(Utility.RandomMinMax(1, 15))); AddItem(new WildStaff()); Item cloth1 = new SavageArms(); cloth1.Hue = 0xB9A; cloth1.Name = "Zuluu Guantlets"; AddItem(cloth1); Item cloth2 = new SavageLegs(); cloth2.Hue = 0xB9A; cloth2.Name = "Zuluu Leggings"; AddItem(cloth2); Item cloth3 = new HornedTribalMask(); cloth3.Hue = 0xB9A; cloth3.Name = "Zuluu Tribal Mask"; AddItem(cloth3); Item cloth4 = new LeatherSkirt(); cloth4.Hue = 0xB9A; cloth4.Name = "Zuluu Skirt"; cloth4.Layer = Layer.Waist; AddItem(cloth4); if (Utility.RandomMinMax(1, 12) == 1) { SwampDragon pet = new SwampDragon(); pet.Hue = 2006; pet.Name = "a forest dragyn"; pet.Rider = this; ActiveSpeed = 0.1; PassiveSpeed = 0.2; } }
public static void SavageBeg(Mobile m, object targeted, double chance) { Mobile t = (Mobile)targeted; Item reward = null; string rewardName = ""; if (chance > .99 && m.Skills.Begging.Base >= 100) { int rand = Utility.Random(9); if (rand == 0) { reward = new TribalBedroll(); rewardName = "a Tribal Bedroll"; } else if (rand == 2) { reward = new BeggerCoins(50); //Special Coins! rewardName = "50 dull silver coins."; } else if (rand == 4) { reward = new FurCape(); //fur Cape! rewardName = "a Fur Cape"; } else if (rand == 6) { reward = new HornedTribalMask(); rewardName = "a horned tribal mask"; } } if (chance > .95 && m.Skills.Begging.Base >= 90 && reward == null) { int rand = Utility.Random(9); if (rand == 0) { reward = new LambLeg(); rewardName = "a leg of lamb"; } else if (rand == 1) { reward = new OrcishKinMask(); rewardName = "an orc mask"; } else if (rand == 3) { reward = new TribalBerry(2); rewardName = "tribal berries"; } else if (rand == 4) { reward = new TribalMask(); rewardName = "a tribal mask"; } else if (rand == 6) { reward = new BeggerCoins(25); rewardName = "25 dull silver coins."; } else if (rand == 7) { reward = new Beads(); rewardName = "beads"; } } if (reward == null) { JunkBeg(m, t, chance); } else { Reward(m, t, reward, rewardName); } }
public override Item Construct(Type type, Mobile from, Item _i, HarvestDefinition _d, HarvestBank _b, HarvestResource _r) { if (type == typeof(TreasureMap)) { int level = 1; return(new TreasureMap(level, Map.Felucca)); } else if (type == typeof(MessageInABottle)) { return(new MessageInABottle(Map.Felucca)); } Container pack = from.Backpack; if (pack != null) { List <SOS> messages = pack.FindItemsByType <SOS>(); for (int i = 0; i < messages.Count; ++i) { SOS sos = messages[i]; if (from.Map == sos.TargetMap && from.InRange(sos.TargetLocation, 60) && !sos.Completed) { Item preLoot = null; switch (Utility.Random(7)) { case 0: // Body parts { int[] list = new int[] { 0x1CDD, 0x1CE5, // arm 0x1CE0, 0x1CE8, // torso 0x1CE1, 0x1CE9, // head 0x1CE2, 0x1CEC // leg }; preLoot = new ShipwreckedItem(Utility.RandomList(list)); break; } case 1: // Bone parts { int[] list = new int[] { 0x1AE0, 0x1AE1, 0x1AE2, 0x1AE3, 0x1AE4, // skulls 0x1B09, 0x1B0A, 0x1B0B, 0x1B0C, 0x1B0D, 0x1B0E, 0x1B0F, 0x1B10, // bone piles 0x1B15, 0x1B16 // pelvis bones }; preLoot = new ShipwreckedItem(Utility.RandomList(list)); break; } case 2: // Pillows { preLoot = new ShipwreckedItem(Utility.Random(0x13A4, 11)); break; } case 3: // Shells { preLoot = new ShipwreckedItem(Utility.Random(0xFC4, 9)); break; } case 4: //Hats { if (Utility.RandomBool()) { preLoot = new SkullCap(); } else { preLoot = new TricorneHat(); } break; } case 5: // Misc { int[] list = new int[] { 0x1EB5, // unfinished barrel 0xA2A, // stool 0xC1F, // broken clock 0x1EB1, 0x1EB2, 0x1EB3, 0x1EB4 // barrel staves }; if (Utility.Random(list.Length + 1) == 0) { preLoot = new Candelabra(); } else { preLoot = new ShipwreckedItem(Utility.RandomList(list)); } break; } } if (preLoot != null) { if (preLoot is IShipwreckedItem) { ((IShipwreckedItem)preLoot).IsShipwreckedItem = true; } return(preLoot); } LockableContainer chest; if (Utility.RandomBool()) { chest = new MetalGoldenChest(); } else { chest = new WoodenChest(); } if (sos.IsAncient) { chest.Hue = 0x481; } TreasureMapChest.Fill(chest, Math.Max(1, Math.Min(3, (sos.Level + 1)))); if (sos.IsAncient) { chest.DropItem(new FabledFishingNet()); } else { chest.DropItem(new SpecialFishingNet()); } if (Utility.Random(500) == 0) { Item mask = new HornedTribalMask(); mask.Hue = 2715; mask.Name = "Mask of Cthulu"; chest.DropItem(mask); } switch (Utility.Random(300)) { case 0: { Item rustedchest = new PlateChest(); rustedchest.Hue = 2718; rustedchest.Name = "a rusted platemail chest recovered from a shipwreck"; chest.DropItem(rustedchest); break; } case 1: { Item rustedarms = new PlateArms(); rustedarms.Hue = 2718; rustedarms.Name = "rusted platemail arms recovered from a shipwreck"; chest.DropItem(rustedarms); break; } case 2: { Item rustedlegs = new PlateLegs(); rustedlegs.Hue = 2718; rustedlegs.Name = "rusted platemail legguards recovered from a shipwreck"; chest.DropItem(rustedlegs); break; } case 3: { Item rustedgloves = new PlateGloves(); rustedgloves.Hue = 2718; rustedgloves.Name = "rusted platemail gloves recovered from a shipwreck"; chest.DropItem(rustedgloves); break; } case 4: { Item rustedgorget = new PlateGorget(); rustedgorget.Hue = 2718; rustedgorget.Name = "rusted platemail gorget recovered from a shipwreck"; chest.DropItem(rustedgorget); break; } case 5: { Item rustedhelm = new PlateHelm(); rustedhelm.Hue = 2718; rustedhelm.Name = "a rusted platemail helmet recovered from a shipwreck"; chest.DropItem(rustedhelm); break; } } switch (Utility.Random(400)) { case 0: { Item lamp = new LampPost1(); lamp.Name = "Britannia Head Light"; lamp.Hue = 2601; chest.DropItem(lamp); break; } case 1: { Item lantern = new HangingLantern(); lantern.Name = "Fog Lamp"; lantern.Hue = 2601; lantern.Movable = true; chest.DropItem(lantern); break; } } chest.Movable = true; chest.Locked = false; chest.TrapType = TrapType.None; chest.TrapPower = 0; chest.TrapLevel = 0; sos.Completed = true; BaseBoat ownerBoat = BaseBoat.FindBoatAt(from.Location, from.Map); PlayerMobile player = from as PlayerMobile; if (ownerBoat != null && player != null) { if (ownerBoat.IsFriend(player) || ownerBoat.IsOwner(player) || ownerBoat.IsCoOwner(player)) { double doubloonValue = Utility.RandomMinMax(25, 50); int finalDoubloonAmount = (int)doubloonValue; bool shipOwner = ownerBoat.IsOwner(player); bool bankDoubloonsValid = false; bool holdPlacementValid = false; //Deposit Half In Player's Bank if (Banker.DepositUniqueCurrency(player, typeof(Doubloon), finalDoubloonAmount)) { Doubloon doubloonPile = new Doubloon(finalDoubloonAmount); player.SendSound(doubloonPile.GetDropSound()); doubloonPile.Delete(); bankDoubloonsValid = true; } //Deposit Other Half in Ship if (ownerBoat.DepositDoubloons(finalDoubloonAmount)) { Doubloon doubloonPile = new Doubloon(finalDoubloonAmount); player.SendSound(doubloonPile.GetDropSound()); doubloonPile.Delete(); holdPlacementValid = true; } if (shipOwner) { player.PirateScore += finalDoubloonAmount; //ownerBoat.doubloonsEarned += finalDoubloonAmount * 2; if (bankDoubloonsValid && holdPlacementValid) { player.SendMessage("You've received " + (finalDoubloonAmount * 2).ToString() + " doubloons for completing a message in a bottle! They have been evenly split between your bank box and your ship's hold."); } else if (bankDoubloonsValid && !holdPlacementValid) { player.SendMessage("You've earned " + (finalDoubloonAmount * 2).ToString() + " doubloons, however there was not enough room to place all of them in your ship's hold."); } else if (!bankDoubloonsValid && holdPlacementValid) { player.SendMessage("You've earned " + (finalDoubloonAmount * 2).ToString() + " doubloons, however there was not enough room to place all of them in your bank box."); } } else { //ownerBoat.doubloonsEarned += finalDoubloonAmount; player.PirateScore += finalDoubloonAmount; if (bankDoubloonsValid) { player.SendMessage("You've earned " + finalDoubloonAmount.ToString() + " doubloons for completing a message in a bottle! They have been placed in your bank box."); } else { player.SendMessage("You've earned doubloons, but there was not enough room to place all of them in your bank box."); } } } } return(chest); } } } return(base.Construct(type, from, _i, _d, _b, _r)); }