RunUO Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

The Farmer's Market [1].0.1

The Farmer's Market [1].0.5

The Farmer's Market v[1].0.5

This is a vendor that sells seeds for the Harvest System, milk buckets & cheese forms. The vendor talks, buys, sells and trains. I also added a produce stand for you.

!Here are links to the the other systems you will need:
Harvest System:
http://www.runuo.com/forums/showthread.php?t=57386&highlight=harvest

Alien's Yard and Garden System:
http://www.runuo.com/forums/showthread.php?t=47299&highlight=yard+wand

Alari's Food:
http://www.runuo.com/forums/showthread.php?t=57201&highlight=alari

Seedbox:
http://www.runuo.com/forums/showthread.php?t=58875&highlight=seedbox


!Updates:
*Update: Added a seed box.

*Update (v3):
-Added yard wand from A_Li_N's yard system.
-Slimmed down the buy menu to free up space for future additions.
-Added a new seed gump allowing space for future seeds.


*Update (v4):
-Added Brewing System (updated to 1.0.0)

*Update (v5)
-Added animated flour mill and wheat sheaves. The wheat sheeves can be turned into sacks of flour when wheat is double clicked and the mill is targeted. Replace your WheatCrop.cs with this only. This is a MOD for the harvest system.
-Added corn flour production which works the same as wheat sheeves.
 

Attachments

  • Brewing 1[1].0.0.zip
    16.5 KB · Views: 711
  • Farmers Market [1].0.5.zip
    18.4 KB · Views: 728
  • Alari's Food 1.0.0 including SE.zip
    221.8 KB · Views: 380
  • Alien's - Yard and Garden System 10-05.zip
    74.1 KB · Views: 237

_senio_

Wanderer
The Farmer's Market [1].0.1

Good work :cool: what i must to do, if i want get the chees faster ?

Can you post druid system workind on new core ? :D
 
Updated to [1].0.2

Added a seed box to the vendor.


The previous druid system works fine on the new core. Same with UVII spells.
Thanks Voran. And (_senio_) I will help you with the druid spells if u have any problems. Well, unless Voran beats me to it *he he*.


Good work :cool: what i must to do, if i want get the chees faster ?
Oh and BTW the milk and cheese scripts are not mine. But I will look into finding the info u need for the timer.
 

ssalter

Account Terminated
Thanks Lucid, the seedbox will come in handy.

I use that Harvest system and the Food system from Alari as well. She (he?) packaged and tweaked it together nicely from some French source.

I combined Alari's work with the harvest system and made some other changes but never did add a seedbox!

Did you think about adding a larger garden to the Harvest system? I meant to but haven't gotten around to it.

The timer for the cheese can be found in cheesform.cs around line 100. *pause* no, your version is slightly different. not sure what line it is on. Ahh, in cheeseform_timer.cs



also I keep forgetting to change "this.PublicOverheadMessage...." to a private one. Imagine a bunch of cheesemakers spamming an area!
 
Additions

Thx for the heads up guys. I'll look and see if there is anything I can add from these systems (and I'm sure there is). Then will get back with u on an update. :)
 

ssalter

Account Terminated
I didn't have to do much to get it to work with 1.0. cooking.cs, food.cs, basebeverage.cs and so on. They are all in Alari's release and well documented.
 

Alari

Wanderer
I translated both the Milk and Cheese package and the Apiculture (beekeeping) package from French, and did a bit of cleanup work on the code, but didn't write either of those myself. The original credits were left in, at least in my package (not saying they're not in this one, I just haven't looked at the code in this one.)

Unfortunately they're not listed on that french RunUO site anymore, I don't know if the author took them down or what. They were in a forum labeled "Public Domain" so I would assume they're still okay for anyone to use, but then again you know what they say about assuming. ;)


The food package should still be okay, was updated for RC0, but I do plan to update it to 1.0.0 or whatever we're on when I get a chance.


Edit: I took a look at the code, everything's okay, except that I had a newer version of Milk_items.cs where the cheese wheels are slicable into smaller portions. That code should be in the food package that was posted here, or available on my script archive. ('default' cheese wheels and large wedges are also slicable into smaller portions in the food package I released)


Updated Milk_items.cs:
PHP:
 using System;
 
 namespace Server.Items
 {
 	public abstract class MilkBottle : Item
 	{
 		private Mobile m_Poisoner;
 		private Poison m_Poison;
 		private int m_FillFactor;
 		
 		public virtual Item EmptyItem{ get { return null; } }
 		
 		[CommandProperty( AccessLevel.GameMaster )]
 		public Mobile Poisoner
 		{
 			get { return m_Poisoner; }
 			set { m_Poisoner = value; }
 		}
 		
 		[CommandProperty( AccessLevel.GameMaster )]
 		public Poison Poison
 		{
 			get { return m_Poison; }
 			set { m_Poison = value; }
 		}
 		
 		[CommandProperty( AccessLevel.GameMaster )]
 		public int FillFactor
 		{
 			get { return m_FillFactor; }
 			set { m_FillFactor = value; }
 		}
 		
 		public MilkBottle( int itemID ) : base( itemID )
 		{
 			this.FillFactor = 4;
 		}
 		
 		public MilkBottle( Serial serial ) : base( serial )
 		{
 		}
 		
 		public void Boire( Mobile from )
 		{
 			if ( soif( from, m_FillFactor ) )
 			{
 				// Play a random "Boire" sound
 				from.PlaySound( Utility.Random( 0x30, 2 ) );
 				
 				if ( from.Body.IsHuman && !from.Mounted )
 		    		from.Animate( 34, 5, 1, true, false, 0 );
 				
 				if ( m_Poison != null )
 		    		from.ApplyPoison( m_Poisoner, m_Poison );
 				
 				this.Consume();
 				
 				Item item = EmptyItem;
 				
 				if ( item != null )
 					from.AddToBackpack( item );
 			}
 		}
 		
 		static public bool soif( Mobile from, int fillFactor )
 		{
 			if ( from.Thirst >= 20 )
 			{
 		    	from.SendMessage( "You are simply too full to drink any more!" );
 				return false;
 			}
 			
 			int iThirst = from.Thirst + fillFactor;
 			if ( iThirst >= 20 )
 			{
 				from.Thirst = 20;
 		    	from.SendMessage( "You manage to drink the beverage, but you are full!" );
 			}
 			else
 			{
 				from.Thirst = iThirst;
 				
 				if ( iThirst < 5 )
 		    		from.SendMessage( "You drink the beverage, but are still extremely thirsty." );
 				else if ( iThirst < 10 )
 		    		from.SendMessage( "You drink the beverage, and begin to feel more satiated." );
 				else if ( iThirst < 15 )
 		    		from.SendMessage( "After drinking the beverage, you feel much less thirsty." );
 				else
 		    		from.SendMessage( "You feel quite full after consuming the beverage." );
 			}
 			
 			return true;
 		}
 		
 		
 		
 		public override void OnDoubleClick( Mobile from )
 		{
 			if ( !Movable )
 				return;
 			
 			if ( from.InRange( this.GetWorldLocation(), 1 ) )
 				Boire( from );
 		}
 		
 		public override void Serialize( GenericWriter writer )
 		{
 			base.Serialize( writer );
 			
 			writer.Write( (int) 1 ); // version
 			
 			writer.Write( m_Poisoner );
 			
 			Poison.Serialize( m_Poison, writer );
 			writer.Write( m_FillFactor );
 		}
 		
 		public override void Deserialize( GenericReader reader )
 		{
 			base.Deserialize( reader );
 			
 			int version = reader.ReadInt();
 			
 			switch ( version )
 			{
 				case 1:
 				{
 					m_Poisoner = reader.ReadMobile();
 
 					goto case 0;
 				}
 				case 0:
 				{
 		    		m_Poison = Poison.Deserialize( reader );
 					m_FillFactor = reader.ReadInt();
 					break;
 				}
 			}
 		}
 	}
 	public class BottleCowMilk : MilkBottle
 	{
 		public override Item EmptyItem{ get { return new Bottle(); } }
 		
 		[Constructable]
 		public BottleCowMilk() : base( 0x0f09 )
 		{
 			this.Weight = 0.2;
 			this.FillFactor = 4;
 			this.Name ="bottle of cow milk";
 		}
 		
 		public BottleCowMilk( Serial serial ) : base( serial )
 		{
 		}
 		
 		public override void Serialize( GenericWriter writer )
 		{
 			base.Serialize( writer );
 			
 			writer.Write( (int) 0 ); // version
 		}
 		
 		public override void Deserialize( GenericReader reader )
 		{
 			base.Deserialize( reader );
 			
 			int version = reader.ReadInt();
 		}
 	}
 	public class BottleGoatMilk : MilkBottle
 	{
 		public override Item EmptyItem{ get { return new Bottle(); } }
 		
 		[Constructable]
 		public BottleGoatMilk() : base( 0x0f09 )
 		{
 			this.Weight = 0.2;
 			this.FillFactor = 4;
 			this.Name ="bottle of goat milk";
 		}
 		
 		public BottleGoatMilk( Serial serial ) : base( serial )
 		{
 		}
 		
 		public override void Serialize( GenericWriter writer )
 		{
 			base.Serialize( writer );
 			
 			writer.Write( (int) 0 ); // version
 		}
 		
 		public override void Deserialize( GenericReader reader )
 		{
 			base.Deserialize( reader );
 			
 			int version = reader.ReadInt();
 		}
 	}
 	public class BottleSheepMilk : MilkBottle
 	{
 		public override Item EmptyItem{ get { return new Bottle(); } }
 		
 		[Constructable]
 		public BottleSheepMilk() : base( 0x0f09 )
 		{
 			this.Weight = 0.2;
 			this.FillFactor = 4;
 			this.Name ="bottle of sheep milk";
 		}
 		
 		public BottleSheepMilk( Serial serial ) : base( serial )
 		{
 		}
 		
 		public override void Serialize( GenericWriter writer )
 		{
 			base.Serialize( writer );
 			
 			writer.Write( (int) 0 ); // version
 		}
 		
 		public override void Deserialize( GenericReader reader )
 		{
 			base.Deserialize( reader );
 			
 			int version = reader.ReadInt();
 		}
 	}
 
 
 /* ***************************** Cheese ******************************** */
 
 
 
 	// fromage de vache
 	
 	public class FromageDeVache : Food, ICarvable
 	{
 		public void Carve( Mobile from, Item item )
 		{
 			if ( !Movable )
 				return;
 
 			if ( this.Amount > 1 )  // workaround because I can't call scissorhelper twice?
 			{
 		    	from.SendMessage( "You can only cut up one wheel at a time." );
 				return;
 			}
 
 			base.ScissorHelper( from, new FromageDeVacheWedge(), 1 );
 
 			from.AddToBackpack( new FromageDeVacheWedgeSmall() );
 
 			from.SendMessage( "You cut a wedge out of the wheel." );
 		}
 
 		[Constructable]
 		public FromageDeVache() : this( 1 )
 		{
 		}
 
 		[Constructable]
 		public FromageDeVache( int amount ) : base( amount, 0x97E )
 		{
 			this.Weight = 0.4;
 			this.FillFactor = 12;
 			this.Name = "Emmental (cow cheese)";
 			this.Hue = 0x481;
 		}
 
 		public override Item Dupe( int amount )
 		{
 			return base.Dupe( new FromageDeVache(), amount );
 		}
 		
 		public FromageDeVache( Serial serial ) : base( serial )
 		{
 		}
 
 		public override void Serialize( GenericWriter writer )
 		{
 			base.Serialize( writer );
 			
 			writer.Write( (int) 0 ); // version
 		}
 		
 		public override void Deserialize( GenericReader reader )
 		{
 			base.Deserialize( reader );
 			
 			int version = reader.ReadInt();
 		}
 	}
 
 	public class FromageDeVacheWedge : Food, ICarvable
 	{
 		public void Carve( Mobile from, Item item )
 		{
 			if ( !Movable )
 				return;
 
 			base.ScissorHelper( from, new FromageDeVacheWedgeSmall(), 3 );
 			from.SendMessage( "You cut the wheel into 3 wedges." );
 		}
 
 		[Constructable]
 		public FromageDeVacheWedge() : this( 1 )
 		{
 		}
 
 		[Constructable]
 		public FromageDeVacheWedge( int amount ) : base( amount, 0x97D )
 		{
 			this.Weight = 0.3;
 			this.FillFactor = 9;
 			this.Name = "Emmental (cow cheese)";
 			this.Hue = 0x481;
 		}
 		
 		public override Item Dupe( int amount )
 		{
 			return base.Dupe( new FromageDeVacheWedge(), amount );
 		}
 
 		public FromageDeVacheWedge( Serial serial ) : base( serial )
 		{
 		}
 		
 		public override void Serialize( GenericWriter writer )
 		{
 			base.Serialize( writer );
 			
 			writer.Write( (int) 0 ); // version
 		}
 		
 		public override void Deserialize( GenericReader reader )
 		{
 			base.Deserialize( reader );
 			
 			int version = reader.ReadInt();
 		}
 	}
 
 	public class FromageDeVacheWedgeSmall : Food
 	{
 		[Constructable]
 		public FromageDeVacheWedgeSmall() : this( 1 )
 		{
 		}
 
 		[Constructable]
 		public FromageDeVacheWedgeSmall( int amount ) : base( amount, 0x97C )
 		{
 			this.Weight = 0.1;
 			this.FillFactor = 3;
 			this.Name = "Emmental (cow cheese)";
 			this.Hue = 0x481;
 		}
 		
 		public override Item Dupe( int amount )
 		{
 			return base.Dupe( new FromageDeVacheWedgeSmall(), amount );
 		}
 
 		public FromageDeVacheWedgeSmall( Serial serial ) : base( serial )
 		{
 		}
 		
 		public override void Serialize( GenericWriter writer )
 		{
 			base.Serialize( writer );
 			
 			writer.Write( (int) 0 ); // version
 		}
 		
 		public override void Deserialize( GenericReader reader )
 		{
 			base.Deserialize( reader );
 			
 			int version = reader.ReadInt();
 		}
 	}
 
 
 
 	// fromage de Brebis
 	
 	public class FromageDeBrebis : Food, ICarvable
 	{
 		public void Carve( Mobile from, Item item )
 		{
 			if ( !Movable )
 				return;
 
 			if ( this.Amount > 1 )  // workaround because I can't call scissorhelper twice?
 			{
 		    	from.SendMessage( "You can only cut up one wheel at a time." );
 				return;
 			}
 
 			base.ScissorHelper( from, new FromageDeBrebisWedge(), 1 );
 
 			from.AddToBackpack( new FromageDeBrebisWedgeSmall() );
 
 			from.SendMessage( "You cut a wedge out of the wheel." );
 		}
 
 		[Constructable]
 		public FromageDeBrebis() : this( 1 )
 		{
 		}
 		
 		[Constructable]
 		public FromageDeBrebis( int amount ) : base( amount, 0x97E )
 		{
 			this.Weight = 0.4;
 			this.FillFactor = 12;
 			this.Name = "Perail de Brebis (sheep cheese)";
 			this.Hue = 0x481;
 		}
 		
 		public FromageDeBrebis( Serial serial ) : base( serial )
 		{
 		}
 		
 		public override Item Dupe( int amount )
 		{
 			return base.Dupe( new FromageDeBrebis(), amount );
 		}
 		
 		public override void Serialize( GenericWriter writer )
 		{
 			base.Serialize( writer );
 			
 			writer.Write( (int) 0 ); // version
 		}
 		
 		public override void Deserialize( GenericReader reader )
 		{
 			base.Deserialize( reader );
 			
 			int version = reader.ReadInt();
 		}
 	}
 
 	public class FromageDeBrebisWedge : Food, ICarvable
 	{
 		public void Carve( Mobile from, Item item )
 		{
 			if ( !Movable )
 				return;
 
 			base.ScissorHelper( from, new FromageDeBrebisWedgeSmall(), 3 );
 			from.SendMessage( "You cut the wheel into 3 wedges." );
 		}
 
 		[Constructable]
 		public FromageDeBrebisWedge() : this( 1 )
 		{
 		}
 		
 		[Constructable]
 		public FromageDeBrebisWedge( int amount ) : base( amount, 0x97D )
 		{
 			this.Weight = 0.3;
 			this.FillFactor = 9;
 			this.Name = "Perail de Brebis (sheep cheese)";
 			this.Hue = 0x481;
 		}
 		
 		public FromageDeBrebisWedge( Serial serial ) : base( serial )
 		{
 		}
 		
 		public override Item Dupe( int amount )
 		{
 			return base.Dupe( new FromageDeBrebisWedge(), amount );
 		}
 		
 		public override void Serialize( GenericWriter writer )
 		{
 			base.Serialize( writer );
 			
 			writer.Write( (int) 0 ); // version
 		}
 		
 		public override void Deserialize( GenericReader reader )
 		{
 			base.Deserialize( reader );
 			
 			int version = reader.ReadInt();
 		}
 	}
 
 	public class FromageDeBrebisWedgeSmall : Food
 	{
 		[Constructable]
 		public FromageDeBrebisWedgeSmall() : this( 1 )
 		{
 		}
 		
 		[Constructable]
 		public FromageDeBrebisWedgeSmall( int amount ) : base( amount, 0x97C )
 		{
 			this.Weight = 0.1;
 			this.FillFactor = 3;
 			this.Name = "Perail de Brebis (sheep cheese)";
 			this.Hue = 0x481;
 		}
 		
 		public FromageDeBrebisWedgeSmall( Serial serial ) : base( serial )
 		{
 		}
 		
 		public override Item Dupe( int amount )
 		{
 			return base.Dupe( new FromageDeBrebisWedgeSmall(), amount );
 		}
 		
 		public override void Serialize( GenericWriter writer )
 		{
 			base.Serialize( writer );
 			
 			writer.Write( (int) 0 ); // version
 		}
 		
 		public override void Deserialize( GenericReader reader )
 		{
 			base.Deserialize( reader );
 			
 			int version = reader.ReadInt();
 		}
 	}
 
 
 
 	// fromage de Chevre
 	
 	public class FromageDeChevre : Food, ICarvable
 	{
 		public void Carve( Mobile from, Item item )
 		{
 			if ( !Movable )
 				return;
 
 			if ( this.Amount > 1 )  // workaround because I can't call scissorhelper twice?
 			{
 		    	from.SendMessage( "You can only cut up one wheel at a time." );
 				return;
 			}
 
 			base.ScissorHelper( from, new FromageDeChevreWedge(), 1 );
 
 			from.AddToBackpack( new FromageDeChevreWedgeSmall() );
 
 			from.SendMessage( "You cut a wedge out of the wheel." );
 		}
 
 		[Constructable]
 		public FromageDeChevre() : this( 1 )
 		{
 		}
 		
 		[Constructable]
 		public FromageDeChevre( int amount ) : base( amount, 0x97E )
 		{
 			this.Weight = 0.4;
 			this.FillFactor = 12;
 			this.Name = "Chevreton du Bourbonnais (goat cheese)";
 			this.Hue = 0x481;
 		}
 		
 		public FromageDeChevre( Serial serial ) : base( serial )
 		{
 		}
 		
 		public override Item Dupe( int amount )
 		{
 			return base.Dupe( new FromageDeChevre(), amount );
 		}
 		
 		public override void Serialize( GenericWriter writer )
 		{
 			base.Serialize( writer );
 			
 			writer.Write( (int) 0 ); // version
 		}
 		
 		public override void Deserialize( GenericReader reader )
 		{
 			base.Deserialize( reader );
 			
 			int version = reader.ReadInt();
 		}
 	}
 
 	public class FromageDeChevreWedge : Food, ICarvable
 	{
 		public void Carve( Mobile from, Item item )
 		{
 			if ( !Movable )
 				return;
 
 			base.ScissorHelper( from, new FromageDeChevreWedgeSmall(), 3 );
 			from.SendMessage( "You cut the wheel into 3 wedges." );
 		}
 
 		[Constructable]
 		public FromageDeChevreWedge() : this( 1 )
 		{
 		}
 		
 		[Constructable]
 		public FromageDeChevreWedge( int amount ) : base( amount, 0x97D )
 		{
 			this.Weight = 0.3;
 			this.FillFactor = 9;
 			this.Name = "Chevreton du Bourbonnais (goat cheese)";
 			this.Hue = 0x481;
 		}
 		
 		public FromageDeChevreWedge( Serial serial ) : base( serial )
 		{
 		}
 		
 		public override Item Dupe( int amount )
 		{
 			return base.Dupe( new FromageDeChevreWedge(), amount );
 		}
 		
 		public override void Serialize( GenericWriter writer )
 		{
 			base.Serialize( writer );
 			
 			writer.Write( (int) 0 ); // version
 		}
 		
 		public override void Deserialize( GenericReader reader )
 		{
 			base.Deserialize( reader );
 			
 			int version = reader.ReadInt();
 		}
 	}
 
 	public class FromageDeChevreWedgeSmall : Food
 	{
 		[Constructable]
 		public FromageDeChevreWedgeSmall() : this( 1 )
 		{
 		}
 		
 		[Constructable]
 		public FromageDeChevreWedgeSmall( int amount ) : base( amount, 0x97C )
 		{
 			this.Weight = 0.1;
 			this.FillFactor = 3;
 			this.Name = "Chevreton du Bourbonnais (goat cheese)";
 			this.Hue = 0x481;
 		}
 		
 		public FromageDeChevreWedgeSmall( Serial serial ) : base( serial )
 		{
 		}
 		
 		public override Item Dupe( int amount )
 		{
 			return base.Dupe( new FromageDeChevreWedgeSmall(), amount );
 		}
 		
 		public override void Serialize( GenericWriter writer )
 		{
 			base.Serialize( writer );
 			
 			writer.Write( (int) 0 ); // version
 		}
 		
 		public override void Deserialize( GenericReader reader )
 		{
 			base.Deserialize( reader );
 			
 			int version = reader.ReadInt();
 		}
 	}
 
 }
 

Attachments

  • Milk_items.cs
    14.5 KB · Views: 48
Alari's Food

Wow! Nice food system. Thanks for the update Alari! I d/l your system for RCO and did a lil file merging and updated it to 1.0.0. You did a nice job with the translations and it is most appreciated. I like the hunger system that it comes with too. :) Here is the update (Put all of them in one folder and drop into customs folder. Then rename all old existing files and add .old to them so that can be saved as backups, first.):

*Edit: Moved to the first post.
 

koluch

Sorceror
OK, I can not get the pitchers to fill from the bucket or bucket to an empty pitcher.
What simple thing am I doing wrong?
Thanks :confused:
 

koluch

Sorceror
One Issue

When the cheese form or bucket are placed into a backpack, they auto 'start', asking you what you would like to use this on( its early dont have the exact wordage )
How would I keep this from happening?
Many thanks, good job by you both!
Alari, are you planning on posting your idea on water from wells?
* This is NOT a script request just a simple question, thank!
 

Alari

Wanderer
koluch said:
When the cheese form or bucket are placed into a backpack, they auto 'start', asking you what you would like to use this on( its early dont have the exact wordage )
How would I keep this from happening?
Many thanks, good job by you both!

I haven't had that problem, it's possible if you're running some kind of auto-inventory that it thinks that the objects are containers of some kind and tries to open them. Could mark them as "not containers" if that's possible or try running UO without any special addons. That's all I can really think of to be honest. :confused:; (The version included in the food package I released doesn't have that problem, I haven't tried any of the newer releases by other folks. Not saying that's it one way or another, just letting you know what I used)


koluch said:
Alari, are you planning on posting your idea on water from wells?
* This is NOT a script request just a simple question, thank!

... I did? My script archive, it's the "Fountains and Wells" package under My Scripts.
 
Container Problem

Could mark them as "not containers" if that's possible or try running UO without any special addons. That's all I can really think of to be honest. :confused:; (The version included in the food package I released doesn't have that problem, I haven't tried any of the newer releases by other folks.
Hum I'll check the one I posted now that u said that. Make sure it isn't the problem.
 

ssalter

Account Terminated
koluch said:
When the cheese form or bucket are placed into a backpack, they auto 'start', asking you what you would like to use this on( its early dont have the exact wordage )
How would I keep this from happening?

* This is NOT a script request just a simple question, thank!

are you using Razor?
 
Top