public FourCannonAddon(CannonDirection direction)
        {
            m_CannonDirection = direction;

            switch (direction)
            {
            case CannonDirection.North:
            {
                AddComponent(new FourLBCannon(0x44F5), 0, 0, 0);
                AddComponent(new FourLBCannon(0x44F4), 0, 1, 0);
                AddComponent(new FourLBCannon(0x44F3), 0, 2, 0);

                break;
            }

            case CannonDirection.East:
            {
                AddComponent(new FourLBCannon(0x44F6), 0, 0, 0);
                AddComponent(new FourLBCannon(0x44F7), -1, 0, 0);
                AddComponent(new FourLBCannon(0x44F8), -2, 0, 0);

                break;
            }

            default:
            {
                AddComponent(new FourLBCannon(0x44F5), 0, 0, 0);
                AddComponent(new FourLBCannon(0x44F4), 1, 0, 0);
                AddComponent(new FourLBCannon(0x44F3), 2, 0, 0);

                break;
            }
            }
        }
Exemple #2
0
        public FortyEightCannonAddon(CannonDirection direction)
        {
            m_CannonDirection = direction;

            switch (direction)
            {
            case CannonDirection.South:
            {
                AddComponent(new FortyEightLBShipCannon(0x4220), 0, 0, 0);
                AddComponent(new FortyEightLBShipCannon(0x4221), 0, 1, 0);
                AddComponent(new FortyEightLBShipCannon(0x4222), 0, 2, 0);

                break;
            }

            case CannonDirection.West:
            {
                AddComponent(new FortyEightLBShipCannon(0x4223), 0, 0, 0);
                AddComponent(new FortyEightLBShipCannon(0x424A), -1, 0, 0);
                AddComponent(new FortyEightLBShipCannon(0x418F), -2, 0, 0);

                break;
            }

            default:
            {
                AddComponent(new FortyEightLBShipCannon(0x4220), 0, 0, 0);
                AddComponent(new FortyEightLBShipCannon(0x4221), 0, 1, 0);
                AddComponent(new FortyEightLBShipCannon(0x4222), 0, 2, 0);

                break;
            }
            }
        }
Exemple #3
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadEncodedInt();

            m_CannonDirection = (CannonDirection)reader.ReadInt();
        }
Exemple #4
0
        public void OnOptionSelected(Mobile from, int option)
        {
            m_Direction = (CannonDirection)option;

            if (!Deleted)
            {
                base.OnDoubleClick(from);
            }
        }
Exemple #5
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            /*int version = */ reader.ReadInt();

            m_CannonDirection = (CannonDirection)reader.ReadEncodedInt();
            m_Canoneer        = (MilitiaCanoneer)reader.ReadMobile();
        }
Exemple #6
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadEncodedInt();

            m_CannonDirection = (CannonDirection)reader.ReadInt();
            m_Charges         = reader.ReadInt();
            m_IsRewardItem    = reader.ReadBool();
        }
 private void CreateCannon(GameEntity entity, CannonDirection direction)
 {
     entity.ReplaceLayer(2);
     entity.AddLayerResetting(2);
     entity.isRemoverSensitive          = true;
     entity.isCanBeActivatedByNearMatch = true;
     entity.isCantHaveBubbleOnTop       = true;
     entity.isBottomCellBlocking        = true;
     entity.AddGenerator(GeneratorType.Item);
     entity.AddItemToGenerate(BeachBall);
     entity.AddGoalToGenerate(GoalType.BeachBall);
     entity.AddGenerationAmount(3);
     entity.AddGeneratorRadius(GeneratorRadius.All);
     entity.AddGoalEffectType(GoalEffectType.Decrease);
     entity.AddCannonDirection(direction);
 }
Exemple #8
0
        public ZombieCannonAddon(CannonDirection direction)
        {
            Name = "Zombie Annihilator Mk. II";
            m_CannonDirection = direction;

            switch (direction)
            {
            case CannonDirection.North:
            {
                AddComponent(new NewFireableCannonAddonComponent(0xE8D), 0, 0, 0);
                AddComponent(new NewFireableCannonAddonComponent(0xE8C), 0, 1, 0);
                AddComponent(new NewFireableCannonAddonComponent(0xE8B), 0, 2, 0);

                break;
            }

            case CannonDirection.East:
            {
                AddComponent(new NewFireableCannonAddonComponent(0xE96), 0, 0, 0);
                AddComponent(new NewFireableCannonAddonComponent(0xE95), -1, 0, 0);
                AddComponent(new NewFireableCannonAddonComponent(0xE94), -2, 0, 0);

                break;
            }

            case CannonDirection.South:
            {
                AddComponent(new NewFireableCannonAddonComponent(0xE91), 0, 0, 0);
                AddComponent(new NewFireableCannonAddonComponent(0xE92), 0, -1, 0);
                AddComponent(new NewFireableCannonAddonComponent(0xE93), 0, -2, 0);

                break;
            }

            default:
            {
                AddComponent(new NewFireableCannonAddonComponent(0xE8E), 0, 0, 0);
                AddComponent(new NewFireableCannonAddonComponent(0xE8F), 1, 0, 0);
                AddComponent(new NewFireableCannonAddonComponent(0xE90), 2, 0, 0);

                break;
            }
            }
        }
Exemple #9
0
        public CannonAddon(CannonDirection direction)
        {
            m_CannonDirection = direction;

            switch (direction)
            {
            case CannonDirection.North:
            {
                AddComponent(new CannonAddonComponent(0xE8D), 0, 0, 0);
                AddComponent(new CannonAddonComponent(0xE8C), 0, 1, 0);
                AddComponent(new CannonAddonComponent(0xE8B), 0, 2, 0);

                break;
            }

            case CannonDirection.East:
            {
                AddComponent(new CannonAddonComponent(0xE96), 0, 0, 0);
                AddComponent(new CannonAddonComponent(0xE95), -1, 0, 0);
                AddComponent(new CannonAddonComponent(0xE94), -2, 0, 0);

                break;
            }

            case CannonDirection.South:
            {
                AddComponent(new CannonAddonComponent(0xE91), 0, 0, 0);
                AddComponent(new CannonAddonComponent(0xE92), 0, -1, 0);
                AddComponent(new CannonAddonComponent(0xE93), 0, -2, 0);

                break;
            }

            default:
            {
                AddComponent(new CannonAddonComponent(0xE8E), 0, 0, 0);
                AddComponent(new CannonAddonComponent(0xE8F), 1, 0, 0);
                AddComponent(new CannonAddonComponent(0xE90), 2, 0, 0);

                break;
            }
            }
        }
Exemple #10
0
        public Cannon(CannonDirection direction)
        {
            m_CannonDirection = direction;

            switch (direction)
            {
            case CannonDirection.North:
            {
                AddComponent(new CannonComponent(0xE8D, this), 0, 0, 0);
                AddComponent(new CannonComponent(0xE8C, this), 0, 1, 0);
                AddComponent(new CannonComponent(0xE8B, this), 0, 2, 0);

                break;
            }

            case CannonDirection.East:
            {
                AddComponent(new CannonComponent(0xE96, this), 0, 0, 0);
                AddComponent(new CannonComponent(0xE95, this), -1, 0, 0);
                AddComponent(new CannonComponent(0xE94, this), -2, 0, 0);

                break;
            }

            case CannonDirection.South:
            {
                AddComponent(new CannonComponent(0xE91, this), 0, 0, 0);
                AddComponent(new CannonComponent(0xE92, this), 0, -1, 0);
                AddComponent(new CannonComponent(0xE93, this), 0, -2, 0);

                break;
            }

            default:
            {
                AddComponent(new CannonComponent(0xE8E, this), 0, 0, 0);
                AddComponent(new CannonComponent(0xE8F, this), 1, 0, 0);
                AddComponent(new CannonComponent(0xE90, this), 2, 0, 0);

                break;
            }
            }
        }
Exemple #11
0
        public FourShipCannonAddon(CannonDirection direction)
        {
            m_CannonDirection = direction;

            switch (direction)
            {
            case CannonDirection.North:
            {
                AddComponent(new FourLBShipCannon(0x4218), 0, 0, 0);

                break;
            }

            case CannonDirection.East:
            {
                AddComponent(new FourLBShipCannon(0x4219), 0, 0, 0);

                break;
            }

            case CannonDirection.South:
            {
                AddComponent(new FourLBShipCannon(0x4216), 0, 0, 0);

                break;
            }

            case CannonDirection.West:
            {
                AddComponent(new FourLBShipCannon(0x4217), 0, 0, 0);

                break;
            }

            default:
            {
                AddComponent(new FourLBShipCannon(0x4218), 0, 0, 0);

                break;
            }
            }
        }
        public EighteenCannonAddon(CannonDirection direction)
        {
            m_CannonDirection = direction;

            switch (direction)
            {
            case CannonDirection.North:
            {
                AddComponent(new EighteenLBShipCannon(0x421C), 0, 0, 0);

                break;
            }

            case CannonDirection.East:
            {
                AddComponent(new EighteenLBShipCannon(0x421D), 0, 0, 0);

                break;
            }

            case CannonDirection.South:
            {
                AddComponent(new EighteenLBShipCannon(0x421A), 0, 0, 0);

                break;
            }

            case CannonDirection.West:
            {
                AddComponent(new EighteenLBShipCannon(0x421B), 0, 0, 0);

                break;
            }

            default:
            {
                AddComponent(new EighteenLBShipCannon(0x421C), 0, 0, 0);

                break;
            }
            }
        }
Exemple #13
0
        public ZombieCannonAddon(CannonDirection direction)
        {
            Name = "Zombie Annihilator Mk. II";
            m_CannonDirection = direction;

            switch (direction)
            {
                case CannonDirection.North:
                {
                    AddComponent(new NewFireableCannonAddonComponent(0xE8D), 0, 0, 0);
                    AddComponent(new NewFireableCannonAddonComponent(0xE8C), 0, 1, 0);
                    AddComponent(new NewFireableCannonAddonComponent(0xE8B), 0, 2, 0);

                    break;
                }
                case CannonDirection.East:
                {
                    AddComponent(new NewFireableCannonAddonComponent(0xE96), 0, 0, 0);
                    AddComponent(new NewFireableCannonAddonComponent(0xE95), -1, 0, 0);
                    AddComponent(new NewFireableCannonAddonComponent(0xE94), -2, 0, 0);

                    break;
                }
                case CannonDirection.South:
                {
                    AddComponent(new NewFireableCannonAddonComponent(0xE91), 0, 0, 0);
                    AddComponent(new NewFireableCannonAddonComponent(0xE92), 0, -1, 0);
                    AddComponent(new NewFireableCannonAddonComponent(0xE93), 0, -2, 0);

                    break;
                }
                default:
                {
                    AddComponent(new NewFireableCannonAddonComponent(0xE8E), 0, 0, 0);
                    AddComponent(new NewFireableCannonAddonComponent(0xE8F), 1, 0, 0);
                    AddComponent(new NewFireableCannonAddonComponent(0xE90), 2, 0, 0);

                    break;
                }
            }
        }
Exemple #14
0
        public CannonAddon( CannonDirection direction )
        {
            m_CannonDirection = direction;

            switch ( direction )
            {
                case CannonDirection.North:
                {
                    AddComponent( new CannonAddonComponent( 0xE8D ), 0, 0, 0 );
                    AddComponent( new CannonAddonComponent( 0xE8C ), 0, 1, 0 );
                    AddComponent( new CannonAddonComponent( 0xE8B ), 0, 2, 0 );

                    break;
                }
                case CannonDirection.East:
                {
                    AddComponent( new CannonAddonComponent( 0xE96 ), 0, 0, 0 );
                    AddComponent( new CannonAddonComponent( 0xE95 ), -1, 0, 0 );
                    AddComponent( new CannonAddonComponent( 0xE94 ), -2, 0, 0 );

                    break;
                }
                case CannonDirection.South:
                {
                    AddComponent( new CannonAddonComponent( 0xE91 ), 0, 0, 0 );
                    AddComponent( new CannonAddonComponent( 0xE92 ), 0, -1, 0 );
                    AddComponent( new CannonAddonComponent( 0xE93 ), 0, -2, 0 );

                    break;
                }
                default:
                {
                    AddComponent( new CannonAddonComponent( 0xE8E ), 0, 0, 0 );
                    AddComponent( new CannonAddonComponent( 0xE8F ), 1, 0, 0 );
                    AddComponent( new CannonAddonComponent( 0xE90 ), 2, 0, 0 );

                    break;
                }
            }
        }
Exemple #15
0
        public void OnOptionSelected(Mobile from, int option)
        {
            m_Direction = (CannonDirection) option;

            if (!Deleted)
            {
                base.OnDoubleClick(from);
            }
        }
Exemple #16
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadEncodedInt();

            m_CannonDirection = (CannonDirection) reader.ReadInt();
        }
Exemple #17
0
 private void RandomizeCannonType()
 {
     cannonDirection = (CannonDirection)random.Next(0, 4);
 }
Exemple #18
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            this.m_CannonDirection = (CannonDirection)reader.ReadEncodedInt();
            this.m_Canoneer = (MilitiaCanoneer)reader.ReadMobile();
        }
Exemple #19
0
        public Item Construct()
        {
            Item item;

            try
            {
                if (m_Type == typeofStatic)
                {
                    item = new Static(m_ItemID);
                }
                else if (m_Type == typeofLocalizedStatic)
                {
                    int labelNumber = 0;

                    for (int i = 0; i < m_Params.Length; ++i)
                    {
                        if (m_Params[i].StartsWith("LabelNumber"))
                        {
                            int indexOf = m_Params[i].IndexOf('=');

                            if (indexOf >= 0)
                            {
                                labelNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
                                break;
                            }
                        }
                    }

                    item = new LocalizedStatic(m_ItemID, labelNumber);
                }
                else if (m_Type == typeofLocalizedSign)
                {
                    int labelNumber = 0;

                    for (int i = 0; i < m_Params.Length; ++i)
                    {
                        if (m_Params[i].StartsWith("LabelNumber"))
                        {
                            int indexOf = m_Params[i].IndexOf('=');

                            if (indexOf >= 0)
                            {
                                labelNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
                                break;
                            }
                        }
                    }

                    item = new LocalizedSign(m_ItemID, labelNumber);
                }
                else if (m_Type == typeofAnkhWest || m_Type == typeofAnkhNorth)
                {
                    bool bloodied = false;

                    for (int i = 0; !bloodied && i < m_Params.Length; ++i)
                    {
                        bloodied = (m_Params[i] == "Bloodied");
                    }

                    if (m_Type == typeofAnkhWest)
                    {
                        item = new AnkhWest(bloodied);
                    }
                    else
                    {
                        item = new AnkhNorth(bloodied);
                    }
                }
                else if (m_Type == typeofMarkContainer)
                {
                    bool bone   = false;
                    bool locked = false;
                    Map  map    = Map.Malas;

                    for (int i = 0; i < m_Params.Length; ++i)
                    {
                        if (m_Params[i] == "Bone")
                        {
                            bone = true;
                        }
                        else if (m_Params[i] == "Locked")
                        {
                            locked = true;
                        }
                        else if (m_Params[i].StartsWith("TargetMap"))
                        {
                            int indexOf = m_Params[i].IndexOf('=');

                            if (indexOf >= 0)
                            {
                                map = Map.Parse(m_Params[i].Substring(++indexOf));
                            }
                        }
                    }

                    MarkContainer mc = new MarkContainer(bone, locked);

                    mc.TargetMap   = map;
                    mc.Description = "strange location";

                    item = mc;
                }
                else if (m_Type == typeofHintItem)
                {
                    int      range         = 0;
                    int      messageNumber = 0;
                    string   messageString = null;
                    int      hintNumber    = 0;
                    string   hintString    = null;
                    TimeSpan resetDelay    = TimeSpan.Zero;

                    for (int i = 0; i < m_Params.Length; ++i)
                    {
                        if (m_Params[i].StartsWith("Range"))
                        {
                            int indexOf = m_Params[i].IndexOf('=');

                            if (indexOf >= 0)
                            {
                                range = Utility.ToInt32(m_Params[i].Substring(++indexOf));
                            }
                        }
                        else if (m_Params[i].StartsWith("WarningString"))
                        {
                            int indexOf = m_Params[i].IndexOf('=');

                            if (indexOf >= 0)
                            {
                                messageString = m_Params[i].Substring(++indexOf);
                            }
                        }
                        else if (m_Params[i].StartsWith("WarningNumber"))
                        {
                            int indexOf = m_Params[i].IndexOf('=');

                            if (indexOf >= 0)
                            {
                                messageNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
                            }
                        }
                        else if (m_Params[i].StartsWith("HintString"))
                        {
                            int indexOf = m_Params[i].IndexOf('=');

                            if (indexOf >= 0)
                            {
                                hintString = m_Params[i].Substring(++indexOf);
                            }
                        }
                        else if (m_Params[i].StartsWith("HintNumber"))
                        {
                            int indexOf = m_Params[i].IndexOf('=');

                            if (indexOf >= 0)
                            {
                                hintNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
                            }
                        }
                        else if (m_Params[i].StartsWith("ResetDelay"))
                        {
                            int indexOf = m_Params[i].IndexOf('=');

                            if (indexOf >= 0)
                            {
                                resetDelay = TimeSpan.Parse(m_Params[i].Substring(++indexOf));
                            }
                        }
                    }

                    HintItem hi = new HintItem(m_ItemID, range, messageNumber, hintNumber);

                    hi.WarningString = messageString;
                    hi.HintString    = hintString;
                    hi.ResetDelay    = resetDelay;

                    item = hi;
                }
                else if (m_Type == typeofWarningItem)
                {
                    int      range         = 0;
                    int      messageNumber = 0;
                    string   messageString = null;
                    TimeSpan resetDelay    = TimeSpan.Zero;

                    for (int i = 0; i < m_Params.Length; ++i)
                    {
                        if (m_Params[i].StartsWith("Range"))
                        {
                            int indexOf = m_Params[i].IndexOf('=');

                            if (indexOf >= 0)
                            {
                                range = Utility.ToInt32(m_Params[i].Substring(++indexOf));
                            }
                        }
                        else if (m_Params[i].StartsWith("WarningString"))
                        {
                            int indexOf = m_Params[i].IndexOf('=');

                            if (indexOf >= 0)
                            {
                                messageString = m_Params[i].Substring(++indexOf);
                            }
                        }
                        else if (m_Params[i].StartsWith("WarningNumber"))
                        {
                            int indexOf = m_Params[i].IndexOf('=');

                            if (indexOf >= 0)
                            {
                                messageNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
                            }
                        }
                        else if (m_Params[i].StartsWith("ResetDelay"))
                        {
                            int indexOf = m_Params[i].IndexOf('=');

                            if (indexOf >= 0)
                            {
                                resetDelay = TimeSpan.Parse(m_Params[i].Substring(++indexOf));
                            }
                        }
                    }

                    WarningItem wi = new WarningItem(m_ItemID, range, messageNumber);

                    wi.WarningString = messageString;
                    wi.ResetDelay    = resetDelay;

                    item = wi;
                }
                else if (m_Type == typeofCannon)
                {
                    CannonDirection direction = CannonDirection.North;

                    for (int i = 0; i < m_Params.Length; ++i)
                    {
                        if (m_Params[i].StartsWith("CannonDirection"))
                        {
                            int indexOf = m_Params[i].IndexOf('=');

                            if (indexOf >= 0)
                            {
                                direction = (CannonDirection)Enum.Parse(typeof(CannonDirection), m_Params[i].Substring(++indexOf), true);
                            }
                        }
                    }

                    item = new Cannon(direction);
                }
                else if (m_Type == typeofSerpentPillar)
                {
                    string      word        = null;
                    Rectangle2D destination = new Rectangle2D();

                    for (int i = 0; i < m_Params.Length; ++i)
                    {
                        if (m_Params[i].StartsWith("Word"))
                        {
                            int indexOf = m_Params[i].IndexOf('=');

                            if (indexOf >= 0)
                            {
                                word = m_Params[i].Substring(++indexOf);
                            }
                        }
                        else if (m_Params[i].StartsWith("DestStart"))
                        {
                            int indexOf = m_Params[i].IndexOf('=');

                            if (indexOf >= 0)
                            {
                                destination.Start = Point2D.Parse(m_Params[i].Substring(++indexOf));
                            }
                        }
                        else if (m_Params[i].StartsWith("DestEnd"))
                        {
                            int indexOf = m_Params[i].IndexOf('=');

                            if (indexOf >= 0)
                            {
                                destination.End = Point2D.Parse(m_Params[i].Substring(++indexOf));
                            }
                        }
                    }

                    item = new SerpentPillar(word, destination);
                }
                else if (m_Type.IsSubclassOf(typeofBeverage))
                {
                    BeverageType content = BeverageType.Liquor;
                    bool         fill    = false;

                    for (int i = 0; !fill && i < m_Params.Length; ++i)
                    {
                        if (m_Params[i].StartsWith("Content"))
                        {
                            int indexOf = m_Params[i].IndexOf('=');

                            if (indexOf >= 0)
                            {
                                content = (BeverageType)Enum.Parse(typeof(BeverageType), m_Params[i].Substring(++indexOf), true);
                                fill    = true;
                            }
                        }
                    }

                    if (fill)
                    {
                        item = (Item)Activator.CreateInstance(m_Type, new object[] { content });
                    }
                    else
                    {
                        item = (Item)Activator.CreateInstance(m_Type);
                    }
                }
                else if (m_Type.IsSubclassOf(typeofBaseDoor))
                {
                    DoorFacing facing = DoorFacing.WestCW;

                    for (int i = 0; i < m_Params.Length; ++i)
                    {
                        if (m_Params[i].StartsWith("Facing"))
                        {
                            int indexOf = m_Params[i].IndexOf('=');

                            if (indexOf >= 0)
                            {
                                facing = (DoorFacing)Enum.Parse(typeof(DoorFacing), m_Params[i].Substring(++indexOf), true);
                                break;
                            }
                        }
                    }

                    item = (Item)Activator.CreateInstance(m_Type, new object[] { facing });
                }
                else
                {
                    item = (Item)Activator.CreateInstance(m_Type);
                }
            }
            catch (Exception e)
            {
                throw new Exception(String.Format("Bad type: {0}", m_Type), e);
            }

            if (item is BaseAddon)
            {
                if (item is MaabusCoffin)
                {
                    MaabusCoffin coffin = (MaabusCoffin)item;

                    for (int i = 0; i < m_Params.Length; ++i)
                    {
                        if (m_Params[i].StartsWith("SpawnLocation"))
                        {
                            int indexOf = m_Params[i].IndexOf('=');

                            if (indexOf >= 0)
                            {
                                coffin.SpawnLocation = Point3D.Parse(m_Params[i].Substring(++indexOf));
                            }
                        }
                    }
                }
                else if (m_ItemID > 0)
                {
                    List <AddonComponent> comps = ((BaseAddon)item).Components;

                    for (int i = 0; i < comps.Count; ++i)
                    {
                        AddonComponent comp = (AddonComponent)comps[i];

                        if (comp.Offset == Point3D.Zero)
                        {
                            comp.ItemID = m_ItemID;
                        }
                    }
                }
            }
            else if (item is BaseLight)
            {
                bool unlit = false, unprotected = false;

                for (int i = 0; i < m_Params.Length; ++i)
                {
                    if (!unlit && m_Params[i] == "Unlit")
                    {
                        unlit = true;
                    }
                    else if (!unprotected && m_Params[i] == "Unprotected")
                    {
                        unprotected = true;
                    }

                    if (unlit && unprotected)
                    {
                        break;
                    }
                }

                if (!unlit)
                {
                    ((BaseLight)item).Ignite();
                }
                if (!unprotected)
                {
                    ((BaseLight)item).Protected = true;
                }

                if (m_ItemID > 0)
                {
                    item.ItemID = m_ItemID;
                }
            }
            else if (item is Server.Mobiles.Spawner)
            {
                Server.Mobiles.Spawner sp = (Server.Mobiles.Spawner)item;

                sp.NextSpawn = TimeSpan.Zero;

                for (int i = 0; i < m_Params.Length; ++i)
                {
                    if (m_Params[i].StartsWith("Spawn"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            sp.CreaturesName.Add(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("MinDelay"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            sp.MinDelay = TimeSpan.Parse(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("MaxDelay"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            sp.MaxDelay = TimeSpan.Parse(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("NextSpawn"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            sp.NextSpawn = TimeSpan.Parse(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("Count"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            sp.Count = Utility.ToInt32(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("Team"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            sp.Team = Utility.ToInt32(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("HomeRange"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            sp.HomeRange = Utility.ToInt32(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("Running"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            sp.Running = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("Group"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            sp.Group = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
                        }
                    }
                }
            }
            else if (item is RecallRune)
            {
                RecallRune rune = (RecallRune)item;

                for (int i = 0; i < m_Params.Length; ++i)
                {
                    if (m_Params[i].StartsWith("Description"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            rune.Description = m_Params[i].Substring(++indexOf);
                        }
                    }
                    else if (m_Params[i].StartsWith("Marked"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            rune.Marked = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("TargetMap"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            rune.TargetMap = Map.Parse(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("Target"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            rune.Target = Point3D.Parse(m_Params[i].Substring(++indexOf));
                        }
                    }
                }
            }
            else if (item is SkillTeleporter)
            {
                SkillTeleporter tp = (SkillTeleporter)item;

                for (int i = 0; i < m_Params.Length; ++i)
                {
                    if (m_Params[i].StartsWith("Skill"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.Skill = (SkillName)Enum.Parse(typeof(SkillName), m_Params[i].Substring(++indexOf), true);
                        }
                    }
                    else if (m_Params[i].StartsWith("RequiredFixedPoint"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.Required = Utility.ToInt32(m_Params[i].Substring(++indexOf)) * 0.01;
                        }
                    }
                    else if (m_Params[i].StartsWith("Required"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.Required = Utility.ToDouble(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("MessageString"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.MessageString = m_Params[i].Substring(++indexOf);
                        }
                    }
                    else if (m_Params[i].StartsWith("MessageNumber"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.MessageNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("PointDest"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.PointDest = Point3D.Parse(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("MapDest"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.MapDest = Map.Parse(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("Creatures"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.Creatures = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("SourceEffect"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.SourceEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("DestEffect"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.DestEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("SoundID"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.SoundID = Utility.ToInt32(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("Delay"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.Delay = TimeSpan.Parse(m_Params[i].Substring(++indexOf));
                        }
                    }
                }

                if (m_ItemID > 0)
                {
                    item.ItemID = m_ItemID;
                }
            }
            else if (item is KeywordTeleporter)
            {
                KeywordTeleporter tp = (KeywordTeleporter)item;

                for (int i = 0; i < m_Params.Length; ++i)
                {
                    if (m_Params[i].StartsWith("Substring"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.Substring = m_Params[i].Substring(++indexOf);
                        }
                    }
                    else if (m_Params[i].StartsWith("Keyword"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.Keyword = Utility.ToInt32(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("Range"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.Range = Utility.ToInt32(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("PointDest"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.PointDest = Point3D.Parse(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("MapDest"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.MapDest = Map.Parse(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("Creatures"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.Creatures = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("SourceEffect"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.SourceEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("DestEffect"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.DestEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("SoundID"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.SoundID = Utility.ToInt32(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("Delay"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.Delay = TimeSpan.Parse(m_Params[i].Substring(++indexOf));
                        }
                    }
                }

                if (m_ItemID > 0)
                {
                    item.ItemID = m_ItemID;
                }
            }
            else if (item is Teleporter)
            {
                Teleporter tp = (Teleporter)item;

                for (int i = 0; i < m_Params.Length; ++i)
                {
                    if (m_Params[i].StartsWith("PointDest"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.PointDest = Point3D.Parse(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("MapDest"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.MapDest = Map.Parse(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("Creatures"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.Creatures = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("SourceEffect"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.SourceEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("DestEffect"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.DestEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("SoundID"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.SoundID = Utility.ToInt32(m_Params[i].Substring(++indexOf));
                        }
                    }
                    else if (m_Params[i].StartsWith("Delay"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            tp.Delay = TimeSpan.Parse(m_Params[i].Substring(++indexOf));
                        }
                    }
                }

                if (m_ItemID > 0)
                {
                    item.ItemID = m_ItemID;
                }
            }
            else if (item is FillableContainer)
            {
                FillableContainer cont = (FillableContainer)item;

                for (int i = 0; i < m_Params.Length; ++i)
                {
                    if (m_Params[i].StartsWith("ContentType"))
                    {
                        int indexOf = m_Params[i].IndexOf('=');

                        if (indexOf >= 0)
                        {
                            cont.ContentType = (FillableContentType)Enum.Parse(typeof(FillableContentType), m_Params[i].Substring(++indexOf), true);
                        }
                    }
                }

                if (m_ItemID > 0)
                {
                    item.ItemID = m_ItemID;
                }
            }
            else if (m_ItemID > 0)
            {
                item.ItemID = m_ItemID;
            }

            item.Movable = false;

            for (int i = 0; i < m_Params.Length; ++i)
            {
                if (m_Params[i].StartsWith("Light"))
                {
                    int indexOf = m_Params[i].IndexOf('=');

                    if (indexOf >= 0)
                    {
                        item.Light = (LightType)Enum.Parse(typeof(LightType), m_Params[i].Substring(++indexOf), true);
                    }
                }
                else if (m_Params[i].StartsWith("Hue"))
                {
                    int indexOf = m_Params[i].IndexOf('=');

                    if (indexOf >= 0)
                    {
                        int hue = Utility.ToInt32(m_Params[i].Substring(++indexOf));

                        if (item is DyeTub)
                        {
                            ((DyeTub)item).DyedHue = hue;
                        }
                        else
                        {
                            item.Hue = hue;
                        }
                    }
                }
                else if (m_Params[i].StartsWith("Name"))
                {
                    int indexOf = m_Params[i].IndexOf('=');

                    if (indexOf >= 0)
                    {
                        item.Name = m_Params[i].Substring(++indexOf);
                    }
                }
                else if (m_Params[i].StartsWith("Amount"))
                {
                    int indexOf = m_Params[i].IndexOf('=');

                    if (indexOf >= 0)
                    {
                        // Must supress stackable warnings

                        bool wasStackable = item.Stackable;

                        item.Stackable = true;
                        item.Amount    = Utility.ToInt32(m_Params[i].Substring(++indexOf));
                        item.Stackable = wasStackable;
                    }
                }
            }

            return(item);
        }
Exemple #20
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadEncodedInt();

            m_CannonDirection = (CannonDirection) reader.ReadInt();
            m_Charges = reader.ReadInt();
            m_IsRewardItem = reader.ReadBool();
        }