Advertisement
Guest User

Untitled

a guest
Dec 16th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.09 KB | None | 0 0
  1. using System;
  2. using Server.Multis;
  3. using Server.Network;
  4. using Server.Gumps;
  5. using Server.ContextMenus;
  6. using System.Collections.Generic;
  7. using Server.Items;
  8.  
  9. namespace Server.Items
  10. {
  11.     public class FarmlandAddon2 : BaseAddon, IChopable
  12.     {
  13.         public override BaseAddonDeed Deed { get { return m_Farmland; } }
  14.  
  15.         private Map n_Map;
  16.         private BaseHouse m_House;
  17.         private bool m_initialised;
  18.         private FarmlandPlacement m_topPlacement;
  19.         public FarmlandDeed m_Farmland;
  20.         private int m_LandType;
  21.  
  22.         [Constructable]
  23.         public FarmlandAddon2()
  24.         {
  25.             m_topPlacement = new FarmlandPlacement();
  26.             AddComponent(m_topPlacement, 0, 0, 0);
  27.         }
  28.  
  29.         public FarmlandAddon2(Serial serial)
  30.             : base(serial)
  31.         {
  32.             this.m_initialised = true;
  33.         }
  34.  
  35.         public override void OnMapChange()
  36.         {
  37.             base.OnMapChange();
  38.  
  39.             if (!this.m_initialised)
  40.             {
  41.                 this.TryInitialise();
  42.             }
  43.         }
  44.  
  45.         public override void OnLocationChange(Point3D oldLoc)
  46.         {
  47.             base.OnLocationChange(oldLoc);
  48.  
  49.             if (!this.m_initialised)
  50.             {
  51.                 this.TryInitialise();
  52.             }
  53.         }
  54.  
  55.         private void TryInitialise()
  56.         {
  57.             if (!this.m_initialised
  58.                 && this.Map != Map.Internal
  59.                 && this.Location != Point3D.Zero)
  60.             {
  61.                 this.m_initialised = true;
  62.                 BaseHouse house = (BaseHouse.FindHouseAt((BaseAddon)this));
  63.                 m_House = house;
  64.                 n_Map = ((BaseAddon)this).Map;
  65.                 FarmlandDeed gt = (FarmlandDeed)Deed;
  66.                 Point3D hsp = new Point3D(this.X, this.Y, this.Z);
  67.                 Sector s = n_Map.GetSector(hsp);
  68.                 int houseYOffset = this.Y - house.Y;
  69.                 int houseXOffset = this.X - house.X;
  70.                 int type = (int)gt.m_LandType;
  71.  
  72.                 if (null != house.Area
  73.                     && house.Area.Length > 0)
  74.                 {
  75.  
  76.                     //Place components
  77.                     for (int i = 0; i < house.Area.Length; ++i)
  78.                     {
  79.                         Rectangle2D area = house.Area[i];
  80.                         double width = area.Width * 1.5;
  81.                         double height = area.Height * 1.5;
  82.                         for (int rx = 0; rx < width; ++rx)
  83.                         {
  84.                             for (int ry = 0; ry < height; ++ry)
  85.                             {
  86.                                 int vx = rx + area.X - houseXOffset;
  87.                                 int vy = ry + area.Y - houseYOffset;
  88.  
  89.                                 AddComponent(new AddonComponent(type), vx, vy, -7); // Dirt
  90.                                 //AddComponent(new AddonComponent(0x850), vx, vy, -7); // South Fence
  91.                                 //AddComponent(new AddonComponent(0x85E), vx, vy, -7); // West Fence
  92.                                 //AddComponent(new AddonComponent(0x85D), vx, vy, -7); // North Fence
  93.                                 //AddComponent(new AddonComponent(0x85E), vx, vy, -7); // East Fence
  94.  
  95.                             }
  96.                         }
  97.                     }
  98.                 }
  99.             }
  100.         }
  101.  
  102.         public override void OnChop(Mobile from)
  103.         {
  104.             FarmlandDeed deed = new FarmlandDeed();
  105.             if (from != null)
  106.                 from.AddToBackpack(deed);
  107.             this.Delete();
  108.         }
  109.  
  110.         public override void Serialize(GenericWriter writer)
  111.         {
  112.             base.Serialize(writer);
  113.  
  114.             writer.Write((int)0); // version
  115.         }
  116.  
  117.         public override void Deserialize(GenericReader reader)
  118.         {
  119.             base.Deserialize(reader);
  120.  
  121.             int version = reader.ReadInt();
  122.         }
  123.     }
  124.  
  125.     public class FarmlandDeed : BaseAddonDeed
  126.     {
  127.         public override BaseAddon Addon
  128.         {
  129.             get
  130.             {
  131.                 FarmlandAddon2 farmlandAddon = new FarmlandAddon2();
  132.                 farmlandAddon.m_Farmland = this;
  133.                 return farmlandAddon;
  134.             }
  135.         }
  136.  
  137.         public enum TypeOfLand
  138.         {
  139.             None = 0x000,
  140.             Dirt = 0x32C9,
  141.  
  142.         }
  143.         public TypeOfLand m_LandType;
  144.         [CommandProperty(AccessLevel.GameMaster)]
  145.         public TypeOfLand LandType
  146.         {
  147.             get { return m_LandType; }
  148.             set { m_LandType = value; }
  149.         }
  150.  
  151.         [Constructable]
  152.         public FarmlandDeed()
  153.         {
  154.             Name = "Farmland Deed";
  155.         }
  156.  
  157.         public FarmlandDeed(Serial serial)
  158.             : base(serial)
  159.         {
  160.         }
  161.  
  162.         public override void OnDoubleClick(Mobile from)
  163.         {
  164.             if ((from.Map == Map.Felucca || from.Map == Map.Trammel) && from.Z <= 15 && from.Z >= -5 || from.Map == Map.Malas && from.Z >= -110 && from.Z <= -82 || from.Map == Map.Tokuno && from.Z >= -1 && from.Z <= 40)
  165.             {
  166.                 m_LandType = Server.Items.FarmlandDeed.TypeOfLand.Dirt;
  167.                 base.OnDoubleClick(from);
  168.                 return;
  169.             }
  170.             else
  171.             {
  172.                 from.SendMessage("You must be on the first floor to add a Farm!");
  173.                 return;
  174.             }
  175.  
  176.         }
  177.  
  178.         public override void Serialize(GenericWriter writer)
  179.         {
  180.             base.Serialize(writer);
  181.  
  182.             writer.Write((int)1); // version
  183.             writer.Write((int)LandType);
  184.         }
  185.  
  186.         public override void Deserialize(GenericReader reader)
  187.         {
  188.             base.Deserialize(reader);
  189.  
  190.             int version = reader.ReadInt();
  191.             switch (version)
  192.             {
  193.                 case 1:
  194.                     LandType = (TypeOfLand)reader.ReadInt();
  195.                     goto case 0;
  196.                 case 0:
  197.                     break;
  198.             }
  199.         }
  200.     }
  201.  
  202.     public class FarmlandPlacement : AddonComponent
  203.     {
  204.  
  205.         [Constructable]
  206.         public FarmlandPlacement()
  207.             : this(false)
  208.         {
  209.         }
  210.  
  211.         [Constructable]
  212.         public FarmlandPlacement(bool creatures)
  213.             : base(0x1E34)
  214.         {
  215.             Movable = false;
  216.             Visible = true;
  217.         }
  218.  
  219.         public override void OnDoubleClick(Mobile from)
  220.         {
  221.  
  222.             if (!from.InRange(this.GetWorldLocation(), 1))
  223.             {
  224.                 from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
  225.             }
  226.         }
  227.  
  228.         public FarmlandPlacement(Serial serial)
  229.             : base(serial)
  230.         {
  231.         }
  232.  
  233.         public override void Serialize(GenericWriter writer)
  234.         {
  235.             base.Serialize(writer);
  236.  
  237.             writer.Write((int)0); // version
  238.  
  239.         }
  240.  
  241.         public override void Deserialize(GenericReader reader)
  242.         {
  243.             base.Deserialize(reader);
  244.  
  245.             int version = reader.ReadInt();
  246.  
  247.         }
  248.     }
  249. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement