//main constructor public MovableAddon() : base(1) //use itemid 1 { Movable = false; Visible = false; //default delay: 1 second _Delay = TimeSpan.FromSeconds(1); _Components = new List <MovableAddonComponent>(); _Speed = MovableAddonSpeed.Regular; }
public override void Deserialize(GenericReader reader) { _Components = new List <MovableAddonComponent>(); base.Deserialize(reader); int version = reader.ReadInt(); int count = reader.ReadInt(); for (int i = 0; i < count; i++) { _Components.Add((MovableAddonComponent)reader.ReadItem()); } _Direction = (MovableAddonDirection)reader.ReadInt(); _Controller = (MovableAddonControlComponent)reader.ReadItem(); _Key = (MovableAddonKey)reader.ReadItem(); #if ( RunUORC1 ) _Extrema = new Rectangle3D(new Point3D(reader.ReadInt(), reader.ReadInt(), reader.ReadInt()), new Point3D(reader.ReadInt(), reader.ReadInt(), reader.ReadInt())); #else /*To RunUO 2.0 RC1 users: if you're getting an error here, then uncomment line 2 of this file to read: * #define RunUORC1 * */ _Extrema = reader.ReadRect3D(); #endif _Delay = TimeSpan.FromSeconds(reader.ReadDouble()); ExhaustPowerTimeSpan = reader.ReadTimeSpan(); _Speed = MovableAddonSpeed.Regular; }
public override void OnSpeech(SpeechEventArgs e) { if (!e.Handled) { Mobile m = e.Mobile; if (!_Addon.Contains(m) || !_Addon.HasKey(m)) { return; } MovableAddonCommand newcommand = MovableAddonCommand.Stop; MovableAddonSpeed newspeed = MovableAddonSpeed.Regular; bool foundacommand = false; foreach (string command in Enum.GetNames(typeof(MovableAddonCommand))) { //if a command is detected if (e.Speech.ToLower().IndexOf(command.ToLower()) != -1) { foundacommand = true; //special case: stop command if ((MovableAddonCommand)Enum.Parse(typeof(MovableAddonCommand), command) == MovableAddonCommand.Stop) { newcommand = MovableAddonCommand.Stop; break; } else { //stack up all commands togetherr newcommand = (MovableAddonCommand)((int)newcommand + (int)Enum.Parse(typeof(MovableAddonCommand), command)); } } } if (foundacommand) { foreach (string speed in Enum.GetNames(typeof(MovableAddonSpeed))) { //if a command is detected if (e.Speech.ToLower().IndexOf(speed.ToLower()) != -1) { newspeed = (MovableAddonSpeed)Enum.Parse(typeof(MovableAddonSpeed), speed); break; } } Say("Your wish is my command!"); if (newspeed == MovableAddonSpeed.Turn) { if (newcommand == MovableAddonCommand.Left) { _Addon.Rotate(false); } else if (newcommand == MovableAddonCommand.Right) { _Addon.Rotate(true); } else { Say("Um.. wait, what?"); } } else { _Addon.Speed = newspeed; _Addon.Command = newcommand; } e.Handled = true; } else { //special commands if (e.Speech.ToLower().IndexOf("come about") != -1) { Say("Whoah, here we go!"); _Addon.Rotate(false); _Addon.Rotate(false); e.Handled = true; } else if (e.Speech.ToLower().IndexOf("land") != -1) { Say("Prepare to land.. watch out below!"); ((FlyingCarpet)_Addon).Land(); e.Handled = true; } else if (e.Speech.ToLower().IndexOf("take off") != -1) { Say("Make rockets go now!"); ((FlyingCarpet)_Addon).TakeOff(); e.Handled = true; } } } }