Esempio n. 1
0
        public override bool OnBeforeDeath()
        {
            Item item = null;

            switch (Utility.Random(8))
            {
            case 0:
                item      = new SpecialLeggings();
                item.Name = "Azothu's Leggings";
                break;          // Leggings

            case 1:
                item      = new SpecialArms();
                item.Name = "Azothu's Arms";
                break;          // arms

            case 2:
                item      = new SpecialTunic();
                item.Name = "Azothu's Tunic";
                break;          // Chest

            case 3:
                item      = new SpecialArmor();
                item.Name = "Azothu's Armor";
                break;          // Female Chest

            case 4:
                item      = new SpecialGorget();
                item.Name = "Azothu's Gorget";
                break;          // gorget

            case 5:
                item      = new SpecialGloves();
                item.Name = "Azothu's Gloves";
                break;          // gloves

            case 6:
                item      = new SpecialHelm();
                item.Name = "Azothu's Helm";
                break;          // helm

            case 7:
                item      = new MetalChest();
                item.Name = "Azothu's Locker";
                break;          // helm
            }

            if (item != null)
            {
                item.Hue = 0x84A;
                PackItem(item);
            }

            return(base.OnBeforeDeath());
        }
Esempio n. 2
0
        private int LastActiveZoneID = 1; //lets be door, actually this doesnt matter

        public async void ParadoxSecurity()
        {
            string ComPort  = "/dev/ttyAMA0";
            int    baudrate = 9600;

            _serialPort = new SerialPort(ComPort, baudrate);
            try
            {
                _serialPort.Open();
            }
            catch (IOException ex)
            {
                Console.WriteLine($"{ex}");
            }
            byte[] DataStream = new byte[4];
            byte   index      = 0;

            while (true)
            {
                await Task.Delay(TimeSpan.FromMilliseconds(1)); //check statuses every millisecond

                //Spectra message output is always 4 bytes
                try
                {
                    if (_serialPort.BytesToRead < 4)
                    {
                        index = 0;
                        while (index < 4)
                        {
                            DataStream[index++] = (byte)_serialPort.ReadByte();
                        }
                    }
                }
                catch (Exception e) { Console.WriteLine($"Timeout {e}"); }

                int EventId    = DataStream[0] >> 2;
                int CategoryId = ((DataStream[0] & 3) << 4) + (DataStream[1] >> 4);

                string Event         = events.Where(x => x.EventId == EventId).Select(x => x.EventName).DefaultIfEmpty($"Event_{EventId}").First();
                int    EventCategory = events.Where(x => x.EventId == EventId).Select(x => x.EventCategory).DefaultIfEmpty(EventId).First();

                string Message = CategoryId.ToString();

                bool isZoneEvent       = EventCategory == Category.ZONE;
                bool isStatus          = EventCategory == Category.STATUS;
                bool isTrouble         = EventCategory == Category.TROUBLE;
                bool isAccessCode      = EventCategory == Category.ACCESS_CODE;
                bool isSpecialAlarm    = EventCategory == Category.SPECIAL_ALARM;
                bool isSpecialArm      = EventCategory == Category.SPECIAL_ARM;
                bool isSpecialDisarm   = EventCategory == Category.SPECIAL_DISARM;
                bool isNonReportEvents = EventCategory == Category.NON_REPORT_EVENTS;
                bool isSpecialReport   = EventCategory == Category.SPECIAL_REPORT;
                bool isRemoteControl   = EventCategory == Category.REMOTE_CONTROL;

                if (isZoneEvent)
                {
                    bool IsZoneOpen = false;
                    if (EventId == 1)
                    {
                        IsZoneOpen = true;
                    }
                    //update existing list with the IR statuses and activating/closing time
                    Zones.Where(x => x.ZoneId == CategoryId).Select(x => { x.IsZoneOpen = IsZoneOpen; x.IsHomeSecured = TelemetryDataClass.isHomeSecured; x.ZoneEventTime = METHOD.DateTimeTZ().DateTime; return(x); }).ToList();
                    LastActiveZoneID = CategoryId; //last active zone ID used to check if anybody is home
                    Message          = Zones.Where(x => x.ZoneId == CategoryId).Select(x => $"{x.ZoneName}").DefaultIfEmpty($"Zone_{CategoryId}").First();
                }
                if (isStatus)
                {
                    Message = PartitionStatuses.Where(x => x.CategoryId == CategoryId).Select(x => x.Name).DefaultIfEmpty($"Status_{CategoryId}").First();
                }
                if (isTrouble)
                {
                    Message = SystemTroubles.Where(x => x.CategoryId == CategoryId).Select(x => x.Name).DefaultIfEmpty($"Trouble_{CategoryId}").First();
                }
                if (isSpecialAlarm)
                {
                    Message = SpecialAlarms.Where(x => x.CategoryId == CategoryId).Select(x => x.Name).DefaultIfEmpty($"SpecialAlarm_{CategoryId}").First();
                }
                if (isSpecialArm)
                {
                    Message = SpecialArms.Where(x => x.CategoryId == CategoryId).Select(x => x.Name).DefaultIfEmpty($"SpecialArm_{CategoryId}").First();
                }
                if (isSpecialDisarm)
                {
                    Message = SpecialDisarms.Where(x => x.CategoryId == CategoryId).Select(x => x.Name).DefaultIfEmpty($"SpecialDisarm_{CategoryId}").First();
                }
                if (isNonReportEvents)
                {
                    Message = NonReportableEvents.Where(x => x.CategoryId == CategoryId).Select(x => x.Name).DefaultIfEmpty($"NonReportEvent_{CategoryId}").First();
                }
                if (isSpecialReport)
                {
                    Message = SpecialReportings.Where(x => x.CategoryId == CategoryId).Select(x => x.Name).DefaultIfEmpty($"SpecialReporting_{CategoryId}").First();
                }
                if (isRemoteControl)
                {
                    Message = $"Remote_{CategoryId}";
                }
                if (isAccessCode)
                {
                    Message = GetAccessCode(CategoryId);
                }

                if (!(isStatus && (CategoryId == 0 || CategoryId == 1)) && !(EventId == 0 || EventId == 1)) //not show System Ready/Not ready messages and zone open/close messages.
                {
                    //Console.WriteLine($"{METHOD.DateTimeTZ():HH:mm:ss,ff} {Event}, {Message}");
                }
            }
        }
Esempio n. 3
0
        public override void GenerateLoot()
        {
            if (Core.UOAI || Core.UOAR)
            {
                Item item = null;
                switch (Utility.Random(8))
                {
                case 0:
                    item      = new SpecialLeggings();
                    item.Name = "Azothu's Leggings";
                    break;                              // Leggings

                case 1:
                    item      = new SpecialArms();
                    item.Name = "Azothu's Arms";
                    break;                              // arms

                case 2:
                    item      = new SpecialTunic();
                    item.Name = "Azothu's Tunic";
                    break;                              // Chest

                case 3:
                    item      = new SpecialArmor();
                    item.Name = "Azothu's Armor";
                    break;                              // Female Chest

                case 4:
                    item      = new SpecialGorget();
                    item.Name = "Azothu's Gorget";
                    break;                              // gorget

                case 5:
                    item      = new SpecialGloves();
                    item.Name = "Azothu's Gloves";
                    break;                              // gloves

                case 6:
                    item      = new SpecialHelm();
                    item.Name = "Azothu's Helm";
                    break;                              // helm

                case 7:
                    item      = new MetalChest();
                    item.Name = "Azothu's Locker";
                    break;                              // helm
                }

                if (item != null)
                {
                    item.Hue = 0x84A;
                    PackItem(item);
                }
            }
            else
            {
                if (Core.UOSP || Core.UOMO)
                {                       // ai special
                    if (Spawning)
                    {
                        PackGold(0);
                    }
                    else
                    {
                    }
                }
                else
                {                       // Standard RunUO
                                        // ai special
                }
            }
        }