public void OnRemoveTrap(Mobile m)
        {
            if (m is PlayerMobile)
            {
                if (Path == null || Path.Count == 0)
                {
                    double skill = m.Skills[SkillName.RemoveTrap].Base;

                    if (skill < 80.0)
                    {
                        _Count = CircuitCount.Nine;
                    }
                    else if (skill < 100.0)
                    {
                        _Count = CircuitCount.Sixteen;
                    }
                    else
                    {
                        _Count = CircuitCount.TwentyFive;
                    }
                }

                BaseGump.SendGump(new CircuitTrapGump((PlayerMobile)m, this));
            }
        }
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadEncodedInt();

            switch (version)
            {
            case 1:
                _Count = (CircuitCount)reader.ReadInt();
                goto case 0;

            case 0:
                int count = reader.ReadInt();

                for (int i = 0; i < count; i++)
                {
                    Path.Add(reader.ReadInt());
                }

                count = reader.ReadInt();

                for (int i = 0; i < count; i++)
                {
                    Progress.Add(reader.ReadInt());
                }
                break;
            }

            if (version == 0)
            {
                Path.Clear();
                Progress.Clear();
            }
        }
Example #3
0
        private Tuple <bool, bool> FindCircuitCount(string line)
        {
            //tuple values are: "found circuit?" true/false and "finished reading board section?" true/false
            if (line.Contains("Fiducial"))
            {
                if (CircuitList.Count > 0)
                {
                    --CircuitCount;
                }
                return(Tuple.Create(false, true));
            }

            Regex reCircuit    = new Regex("\\s+Circuit[\\s:\"]+Circuit");
            Regex reOffset     = new Regex("\\s+Circuit[\\s:\"]+(Offset |\\d{ 1,2})");
            Match matchCircuit = reCircuit.Match(line);
            Match matchOffset  = reOffset.Match(line);

            try
            {
                string[] sep = new string[] { "\"" };
                if (matchOffset.Success)
                {
                    string[] temp = line.Split(sep, StringSplitOptions.RemoveEmptyEntries);
                    if (!temp[5].Equals(temp[9]))
                    {
                        ++CircuitCount;
                        return(Tuple.Create(true, false));
                    }
                    else
                    {
                        return(Tuple.Create(false, false));
                    }
                }
                else if (matchCircuit.Success)
                {
                    string[] temp = line.Split(sep, StringSplitOptions.RemoveEmptyEntries);
                    if (CircuitList.Add(temp[1]))
                    {
                        ++CircuitCount;
                        return(Tuple.Create(true, false));
                    }
                    else
                    {
                        return(Tuple.Create(false, false));
                    }
                }
                else
                {
                    return(Tuple.Create(false, false));
                }
            }
            catch (Exception e)
            {
                MessageBox.Show("The program had a problem parsing the board template section.\nReturning current count of " + CircuitCount.ToString() + " but could be wrong.\n" + e.Message, "Ci2Parser:FindCircuitCount()", MessageBoxButton.OK, MessageBoxImage.Warning);
                return(Tuple.Create(false, true));
            }
        }