using System; using ModernUO.Serialization; using Server.Spells; namespace Server.Items; public enum SawTrapType { WestWall, NorthWall, WestFloor, NorthFloor } [SerializationGenerator(0, false)] public partial class SawTrap : BaseTrap { [Constructible] public SawTrap(SawTrapType type = SawTrapType.NorthFloor) : base(GetBaseID(type)) { } [CommandProperty(AccessLevel.GameMaster)] public SawTrapType Type { get => ItemID switch { 0x1103 => SawTrapType.NorthWall, 0x1116 => SawTrapType.WestWall, 0x11AC => SawTrapType.NorthFloor, 0x11B1 => SawTrapType.WestFloor, _ => SawTrapType.NorthWall }; set => ItemID = GetBaseID(value); } public override bool PassivelyTriggered => false; public override TimeSpan PassiveTriggerDelay => TimeSpan.Zero; public override int PassiveTriggerRange => 0; public override TimeSpan ResetDelay => TimeSpan.FromSeconds(0.0); public static int GetBaseID(SawTrapType type) => type switch { SawTrapType.NorthWall => 0x1103, SawTrapType.WestWall => 0x1116, SawTrapType.NorthFloor => 0x11AC, SawTrapType.WestFloor => 0x11B1, _ => 0 }; public override void OnTrigger(Mobile from) { if (!from.Alive || from.AccessLevel > AccessLevel.Player) { return; } Effects.SendLocationEffect(Location, Map, GetBaseID(Type) + 1, 6, 3, GetEffectHue()); Effects.PlaySound(Location, Map, 0x21C); SpellHelper.Damage(TimeSpan.FromTicks(1), from, from, Utility.RandomMinMax(5, 15)); from.LocalOverheadMessage(MessageType.Regular, 0x22, 500853); // You stepped onto a blade trap! } }