using System; using System.Collections.Generic; using Server.ContextMenus; using Server.Items; namespace Server.Mobiles { [CorpseName("a llama corpse")] public class PackLlama : BaseCreature { [Constructable] public PackLlama() : base(AIType.AI_Animal, FightMode.Aggressor, 10, 1, 0.2, 0.4) { Name = "a pack llama"; Body = 292; BaseSoundID = 0x3F3; SetStr(52, 80); SetDex(36, 55); SetInt(16, 30); SetHits(50); SetStam(86, 105); SetMana(0); SetDamage(2, 6); SetDamageType(ResistanceType.Physical, 100); SetResistance(ResistanceType.Physical, 25, 35); SetResistance(ResistanceType.Fire, 10, 15); SetResistance(ResistanceType.Cold, 10, 15); SetResistance(ResistanceType.Poison, 10, 15); SetResistance(ResistanceType.Energy, 10, 15); SetSkill(SkillName.MagicResist, 15.1, 20.0); SetSkill(SkillName.Tactics, 19.2, 29.0); SetSkill(SkillName.Wrestling, 19.2, 29.0); Fame = 0; Karma = 200; VirtualArmor = 16; Tamable = true; ControlSlots = 1; MinTameSkill = 29.1; Container pack = Backpack; if (pack != null) pack.Delete(); pack = new StrongBackpack(); pack.Movable = false; AddItem(pack); } public override int Meat { get { return 1; } } public override FoodType FavoriteFood { get { return FoodType.FruitsAndVegies | FoodType.GrainsAndHay; } } public override bool CanAutoStable { get { return (Backpack == null || Backpack.Items.Count == 0) && base.CanAutoStable; } } public PackLlama(Serial serial) : base(serial) { } #region Pack Animal Methods public override bool OnBeforeDeath() { if (!base.OnBeforeDeath()) return false; PackAnimal.CombineBackpacks(this); return true; } public override DeathMoveResult GetInventoryMoveResultFor(Item item) { return DeathMoveResult.MoveToCorpse; } public override bool IsSnoop(Mobile from) { if (PackAnimal.CheckAccess(this, from)) return false; return base.IsSnoop(from); } public override bool OnDragDrop(Mobile from, Item item) { if (CheckFeed(from, item)) return true; if (PackAnimal.CheckAccess(this, from)) { AddToBackpack(item); return true; } return base.OnDragDrop(from, item); } public override bool CheckNonlocalDrop(Mobile from, Item item, Item target) { return PackAnimal.CheckAccess(this, from); } public override bool CheckNonlocalLift(Mobile from, Item item) { return PackAnimal.CheckAccess(this, from); } public override void OnDoubleClick(Mobile from) { PackAnimal.TryPackOpen(this, from); } public override void GetContextMenuEntries(Mobile from, List list) { base.GetContextMenuEntries(from, list); PackAnimal.GetContextMenuEntries(this, from, list); } #endregion public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write((int)0); } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); } } }