using ModernUO.Serialization; using Server.Collections; using Server.ContextMenus; using Server.Items; namespace Server.Mobiles { [SerializationGenerator(0, false)] public partial class Beetle : BaseMount { public override string DefaultName => "a giant beetle"; [Constructible] public Beetle() : base( 0x317, 0x3EBC, AIType.AI_Melee) { 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; var pack = Backpack; pack?.Delete(); pack = new StrongBackpack(); pack.Movable = false; AddItem(pack); } public override int StepsMax => 4480; 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() => 0x21D; public override int GetIdleSound() => 0x21D; public override int GetAttackSound() => 0x162; public override int GetHurtSound() => 0x163; public override int GetDeathSound() => 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 bool OnBeforeDeath() { if (!base.OnBeforeDeath()) { return false; } PackAnimal.CombineBackpacks(this); return true; } public override DeathMoveResult GetInventoryMoveResultFor(Item item) => 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) => PackAnimal.CheckAccess(this, from); public override bool CheckNonlocalLift(Mobile from, Item item) => PackAnimal.CheckAccess(this, from); public override void GetContextMenuEntries(Mobile from, ref PooledRefList list) { base.GetContextMenuEntries(from, ref list); PackAnimal.GetContextMenuEntries(this, from, ref list); } } }