コード例 #1
0
ファイル: ShipCannons.cs プロジェクト: zerodowned/UO-Forever
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            m_CannonDirection = (ShipCannonDirection)reader.ReadByte();
        }
コード例 #2
0
ファイル: ShipCannons.cs プロジェクト: zerodowned/UO-Forever
 public ShipCannon(BaseBoat boat, Point3D offset, ShipCannonDirection dir) : base(boat, offset, null)
 {
     m_CannonDirection = dir;
     SetFacing(boat.Facing);
     if (UberScriptFileName != null)
     {
         XmlScript script = new XmlScript(UberScriptFileName);
         script.Name = "cannon";
         XmlAttach.AttachTo(this, script);
     }
     boat.BoatComponents.Add(this);
     CanBeChoppedDateTime = DateTime.UtcNow + TimeSpan.FromMinutes(1.0);
 }
コード例 #3
0
ファイル: ShipCannons.cs プロジェクト: zerodowned/UO-Forever
            protected override void OnTarget(Mobile from, object targeted)
            {
                IPoint3D p   = targeted as IPoint3D;
                Map      map = from.Map;

                if (p == null || map == null || m_Deed.Deleted)
                {
                    return;
                }

                if (m_Deed.IsChildOf(from.Backpack))
                {
                    if (targeted is BoatComponent)
                    {
                        BoatComponent spot = (BoatComponent)targeted;
                        if (spot.Boat == null || spot.Boat.Deleted || spot.Deleted || spot.ComponentType != BoatComponentType.CannonSpot || !spot.Boat.Contains(from))
                        {
                            from.SendLocalizedMessage(500269); // You cannot build that there.
                            return;
                        }

                        ShipCannonDirection cannonDir = ShipCannonDirection.Fore;
                        int baseItemID = spot.DirectionalItemIDs[0, 0];
                        foreach (int cannonID in BoatComponent.ForeCannonItemIDs)
                        {
                            if (baseItemID == cannonID)
                            {
                                cannonDir = ShipCannonDirection.Fore;
                            }
                        }
                        foreach (int cannonID in BoatComponent.PortCannonItemIDs)
                        {
                            if (baseItemID == cannonID)
                            {
                                cannonDir = ShipCannonDirection.Port;
                            }
                        }
                        foreach (int cannonID in BoatComponent.StarboardCannonItemIDs)
                        {
                            if (baseItemID == cannonID)
                            {
                                cannonDir = ShipCannonDirection.Starboard;
                            }
                        }
                        foreach (int cannonID in BoatComponent.AftCannonItemIDs)
                        {
                            if (baseItemID == cannonID)
                            {
                                cannonDir = ShipCannonDirection.Aft;
                            }
                        }

                        Point3D offset = spot.Offset;
                        offset.Z += spot.Boat.MarkOffset.Z;           // offset from the ground up
                        ShipCannon addon = m_Deed.Cannon(spot.Boat, offset, cannonDir);
                        addon.MoveToWorld(Point3D.Zero, Map.Felucca); // get it out of the way (it blocks itself ironically)
                        Server.Spells.SpellHelper.GetSurfaceTop(ref p);

                        if (!map.CanFit(p.X, p.Y, p.Z, addon.ItemData.Height, false, true, (addon.Z == 0)))
                        {
                            from.SendLocalizedMessage(500269); // You cannot build that there.
                            addon.Delete();
                        }
                        else
                        {
                            addon.MoveToWorld(new Point3D(p), map);

                            m_Deed.Delete();
                            from.SendMessage("You place the cannon.");
                        }
                    }
                    else
                    {
                        from.SendMessage(38, "You can only place cannons at appropriate cannon locations on a boat.");
                    }
                }
                else
                {
                    from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it.
                }
            }
コード例 #4
0
ファイル: ShipCannons.cs プロジェクト: zerodowned/UO-Forever
 public MediumShipCannon(BaseBoat boat, Point3D offset, ShipCannonDirection dir) : base(boat, offset, dir)
 {
 }
コード例 #5
0
ファイル: ShipCannons.cs プロジェクト: zerodowned/UO-Forever
 public override ShipCannon Cannon(BaseBoat boat, Point3D offset, ShipCannonDirection dir)
 {
     return(new MediumShipCannon(boat, offset, dir));
 }
コード例 #6
0
ファイル: ShipCannons.cs プロジェクト: zerodowned/UO-Forever
 public virtual ShipCannon Cannon(BaseBoat boat, Point3D offset, ShipCannonDirection dir)
 {
     throw new NotImplementedException();
 }
コード例 #7
0
 public MediumShipCannon(BaseBoat boat, Point3D offset, ShipCannonDirection dir) : base(boat, offset, dir) { }
コード例 #8
0
 public override ShipCannon Cannon(BaseBoat boat, Point3D offset, ShipCannonDirection dir) { return new MediumShipCannon(boat, offset, dir); }
コード例 #9
0
 public virtual ShipCannon Cannon(BaseBoat boat, Point3D offset, ShipCannonDirection dir) { throw new NotImplementedException(); }
コード例 #10
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();
            m_CannonDirection = (ShipCannonDirection)reader.ReadByte();
        }
コード例 #11
0
 public ShipCannon(BaseBoat boat, Point3D offset, ShipCannonDirection dir) : base(boat, offset, null) 
 {
     m_CannonDirection = dir;
     SetFacing(boat.Facing);
     if (UberScriptFileName != null)
     {
         XmlScript script = new XmlScript(UberScriptFileName);
         script.Name = "cannon";
         XmlAttach.AttachTo(this, script);
     }
     boat.BoatComponents.Add(this);
     CanBeChoppedDateTime = DateTime.UtcNow + TimeSpan.FromMinutes(1.0);
 }