using System.Collections.Generic; using Server.ContextMenus; using Server.Items; namespace Server.Mobiles { public class Beetle : BaseMount { [Constructible] public Beetle(string name = "a giant beetle") : base(name, 0x317, 0x3EBC, AIType.AI_Melee, FightMode.Closest, 10, 1, 0.25, 0.5) { SetStr(300); SetDex(100); SetInt(500); SetHits(200); SetDamage(7, 20); 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, 20, 30); SetSkill(SkillName.MagicResist, 80.0); SetSkill(SkillName.Tactics, 100.0); SetSkill(SkillName.Wrestling, 100.0); Fame = 4000; Karma = -4000; Tamable = true; ControlSlots = 3; MinTameSkill = 29.1; Container pack = Backpack; pack?.Delete(); pack = new StrongBackpack(); pack.Movable = false; AddItem(pack); } public Beetle(Serial serial) : base(serial) { } public override string CorpseName => "a giant beetle corpse"; public virtual double BoostedSpeed => 0.1; public override bool SubdueBeforeTame => true; // Must be beaten into submission public override bool ReduceSpeedWithDamage => false; public override FoodType FavoriteFood => FoodType.Meat; public override int GetAngerSound() { return 0x21D; } public override int GetIdleSound() { return 0x21D; } public override int GetAttackSound() { return 0x162; } public override int GetHurtSound() { return 0x163; } public override int GetDeathSound() { return 0x21D; } public override void OnHarmfulSpell(Mobile from) { if (!Controlled && ControlMaster == null) CurrentSpeed = BoostedSpeed; } public override void OnCombatantChange() { if (Combatant == null && !Controlled && ControlMaster == null) CurrentSpeed = PassiveSpeed; } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write(0); // version } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); } #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 GetContextMenuEntries(Mobile from, List list) { base.GetContextMenuEntries(from, list); PackAnimal.GetContextMenuEntries(this, from, list); } #endregion } }