public override void OnDoubleClick( Mobile from ) 
		{ 
			if ( m_sower == null || m_sower.Deleted ) 
				m_sower = from;

			if ( from.Mounted && !CropHelper.CanWorkMounted )
			{
				from.SendMessage( "You cannot harvest a crop while mounted." ); 
				return; 
			}

			if ( DateTime.Now > lastpicked.AddSeconds(3) ) // 3 seconds between picking
			{
				lastpicked = DateTime.Now;
			
				int cookValue = (int)from.Skills[SkillName.Cooking].Value / 20;
				if ( cookValue == 0 )
				{
					from.SendMessage( "You have no idea how to harvest this crop." ); 
					return;
				}

				if ( from.InRange( this.GetWorldLocation(), 1 ) ) 
				{ 
					if ( m_yield < 1 )
					{
						from.SendMessage( "There is nothing here to harvest." ); 

						if ( PlayerCanDestroy && !( m_sower.AccessLevel > AccessLevel.Counselor ) )
						{  
							UpRootGump g = new UpRootGump( from, this );
							from.SendGump( g );
						}
					}
					else //check skill and sower
					{
						from.Direction = from.GetDirectionTo( this );

						from.Animate( from.Mounted ? 29:32, 5, 1, true, false, 0 ); 

						if ( from == m_sower ) 
						{
							cookValue *= 2;
							m_lastvisit = DateTime.Now;
						}

						if ( cookValue > m_yield ) 
							cookValue = m_yield + 1;

						int pick = Utility.Random( cookValue );
						if ( pick == 0 )
						{
							from.SendMessage( "You do not manage to harvest any crops." ); 
							return;
						}
					
						m_yield -= pick;
						from.SendMessage( "You harvest {0} crop{1}!", pick, ( pick == 1 ? "" : "s" ) ); 

						//PublicOverheadMessage( MessageType.Regular, 0x3BD, false, string.Format( "{0}", m_yield )); 
						((Item)this).ItemID = pickedGraphic;

						BitterHops crop = new BitterHops( pick ); 
						from.AddToBackpack( crop );

						if ( SowerPickTime != TimeSpan.Zero && m_lastvisit + SowerPickTime < DateTime.Now && !( m_sower.AccessLevel > AccessLevel.Counselor ) )
						{
							this.UpRoot( from );
							return;
						}

						if ( !regrowTimer.Running )
						{
							regrowTimer.Start();
						}
					}
				} 
				else 
				{ 
					from.SendMessage( "You are too far away to harvest anything." ); 
				} 
			}
		} 
예제 #2
0
        public override void OnDoubleClick( Mobile from )
        {
            if ( m_sower == null || m_sower.Deleted )
                m_sower = from;

            if ( from.Mounted && !CropHelper.CanWorkMounted )
            {
                from.SendMessage( "You cannot harvest a crop while mounted." );
                return;
            }

            if ( DateTime.Now > lastpicked.AddSeconds(3) ) // 3 seconds between picking
            {
                lastpicked = DateTime.Now;

                int cookValue = (int)(from.Skills[SkillName.Peacemaking].Base * 0.1);
                if ( cookValue == 0 )
                {
                    from.SendMessage( "You have no idea how to harvest this crop." );
                    return;
                }

                if ( from.InRange( this.GetWorldLocation(), 1 ) )
                {
                    if ( m_yield < 1 )
                    {
                        from.SendMessage( "There is nothing here to harvest." );

                        if ( PlayerCanDestroy && !( m_sower.AccessLevel > AccessLevel.Counselor ) )
                        {
                            UpRootGump g = new UpRootGump( from, this );
                            from.SendGump( g );
                        }
                    }
                    else //check skill and sower
                    {
                        from.Direction = from.GetDirectionTo( this );

                        from.Animate( from.Mounted ? 29:32, 5, 1, true, false, 0 );

                        if ( from == m_sower )
                        {
                            cookValue *= 2;
                            m_lastvisit = DateTime.Now;
                        }

                        if ( cookValue > m_yield )
                            cookValue = m_yield + 1;

                        int pick = Utility.Random( cookValue );
                        if ( pick == 0 || ((PlayerMobile)from).Feats.GetFeatLevel(FeatList.Farming) < 1 )
                        {
                            from.SendMessage( "You do not manage to harvest any crops." );
                            return;
                        }
                        // *** Limit to one yield until we have Tea item ***
                        if ( pick > 1 ) pick = 1;

                        m_yield -= pick;
                        from.SendMessage( "You harvest {0} crop{1}!", pick, ( pick == 1 ? "" : "s" ) );
                        Seed.PickCropSeed(from, "TeaCrop");

                        if( from is PlayerMobile )
                        {
                            ( (PlayerMobile)from ).Crafting = true;
                            Misc.LevelSystem.AwardMinimumXP( (PlayerMobile)from, 1 );
                            ( (PlayerMobile)from ).Crafting = false;
                        }

                        //PublicOverheadMessage( MessageType.Regular, 0x3BD, false, string.Format( "{0}", m_yield ));
                        ((Item)this).ItemID = pickedGraphic;

                        TeaLeaves crop = new TeaLeaves();
                        from.AddToBackpack( crop );

                        if ( SowerPickTime != TimeSpan.Zero && m_lastvisit + SowerPickTime < DateTime.Now && !( m_sower.AccessLevel > AccessLevel.Counselor ) )
                        {
                            this.UpRoot( from );
                            return;
                        }

                        if ( !regrowTimer.Running )
                        {
                            regrowTimer.Start();
                        }
                    }
                }
                else
                {
                    from.SendMessage( "You are too far away to harvest anything." );
                }
            }
        }
예제 #3
0
        public override void OnDoubleClick( Mobile from )
        {
            if ( m_sower == null || m_sower.Deleted )
                m_sower = from;

            if ( from.Mounted && !CropHelper.CanWorkMounted )
            {
                from.SendMessage( "You cannot harvest a crop while mounted." );
                return;
            }

            if ( DateTime.Now > lastpicked.AddSeconds(3) ) // 3 seconds between picking
            {
                lastpicked = DateTime.Now;
                int tailorValue = Math.Max( (int)(from.Skills[SkillName.Peacemaking].Base * 0.1), (int)(from.Skills[SkillName.Peacemaking].Base * 0.1) );

                if ( tailorValue == 0  )
                {
                    from.SendMessage( "You have no idea how to harvest this crop." );
                    return;
                }

                if ( from.InRange( this.GetWorldLocation(), 1 ) )
                {
                    if ( m_yield < 1 )
                    {
                        from.SendMessage( "There is nothing here to harvest." );

                        if ( PlayerCanDestroy && !( m_sower.AccessLevel > AccessLevel.Counselor ) )
                        {
                            UpRootGump g = new UpRootGump( from, this );
                            from.SendGump( g );
                        }
                    }
                    else //check skill and sower
                    {
                        from.Direction = from.GetDirectionTo( this );

                        from.Animate( from.Mounted ? 29:32, 5, 1, true, false, 0 );

                        if ( from == m_sower )
                        {
                            tailorValue *= 2;
                            m_lastvisit = DateTime.Now;
                        }

                        if ( tailorValue > m_yield )
                            tailorValue = m_yield + 1;

                        int pick = Utility.Random( tailorValue );
                        if ( pick == 0 || ((PlayerMobile)from).Feats.GetFeatLevel(FeatList.Farming) < 1 )
                        {
                            from.SendMessage( "You do not manage to harvest any crops." );
                            return;
                        }

                        m_yield -= pick;

                        if( from is PlayerMobile )
                        {
                            PlayerMobile m = from as PlayerMobile;
                            pick += m.Feats.GetFeatLevel(FeatList.EnhancedHarvesting);

                            if( DateTime.Now > (m.LastCottonFlaxHarvest + TimeSpan.FromHours(1)) )
                                m.HarvestedCrops = 0;

                            if( DateTime.Compare( m.NextHarvestAllowed, DateTime.Now ) > 0 )
                            {
                                m.SendMessage( "The local farmer forbids you to harvest any more crops after reminding you that this is a public farm and that you should leave some crops for the others." );
                                m.HarvestedCrops = 0;
                                return;
                            }

                            if( pick + m.HarvestedCrops > 100 )
                            {
                                m.NextHarvestAllowed = DateTime.Now + TimeSpan.FromHours( 1 );
                                m.HarvestedCrops = 0;
                            }

                            m.HarvestedCrops += pick;
                            m.LastCottonFlaxHarvest = DateTime.Now;
                        }

                        from.SendMessage( "You harvest {0} crop{1}!", pick, ( pick == 1 ? "" : "s" ) );
                        Seed.PickCropSeed(from, "CottonCrop");

                        if( from is PlayerMobile )
                        {
                            ( (PlayerMobile)from ).Crafting = true;
                            Misc.LevelSystem.AwardMinimumXP( (PlayerMobile)from, 1 );
                            ( (PlayerMobile)from ).Crafting = false;
                        }

                        //PublicOverheadMessage( MessageType.Regular, 0x3BD, false, string.Format( "{0}", m_yield ));
                        ((Item)this).ItemID = pickedGraphic;

                        Cotton crop = new Cotton( pick );
                        from.AddToBackpack( crop );

                        if ( SowerPickTime != TimeSpan.Zero && m_lastvisit + SowerPickTime < DateTime.Now && !( m_sower.AccessLevel > AccessLevel.Counselor ) )
                        {
                            this.UpRoot( from );
                            return;
                        }

                        if ( !regrowTimer.Running )
                        {
                            //regrowTimer = new CropTimer( this );
                            regrowTimer.Start();
                        }
                    }
                }
                else
                {
                    from.SendMessage( "You are too far away to harvest anything." );
                }
            }
        }
예제 #4
0
        public override void OnDoubleClick(Mobile from)
        {
            if (m_sower == null || m_sower.Deleted)
                m_sower = from;

            if (from.Mounted && !CropHelper.CanWorkMounted)
            {
                from.SendMessage(AgriTxt.CannotWorkMounted);
                return;
            }

            if (DateTime.Now > lastpicked.AddSeconds(3)) // 3 seconds between picking
            {
                lastpicked = DateTime.Now;

                int lumberValue = (int)from.Skills[SkillName.Lumberjacking].Value / 5;
                if (lumberValue == 0)
                {
                    from.SendMessage(AgriTxt.DunnoHowTo);
                    return;
                }

                if (from.InRange(this.GetWorldLocation(), 2))
                {
                    if (m_yield < 1)
                    {
                        from.SendMessage(AgriTxt.NoCrop);

                        if (PlayerCanDestroy && !(m_sower.AccessLevel > AccessLevel.Counselor))
                        {
                            UpRootGump g = new UpRootGump(from, this);
                            from.SendGump(g);
                        }
                    }
                    else //check skill and sower
                    {
                        from.Direction = from.GetDirectionTo(this);

                        from.Animate(from.Mounted ? 29 : 32, 5, 1, true, false, 0);

                        if (from == m_sower)
                        {
                            lumberValue *= 2;
                            m_lastvisit = DateTime.Now;
                        }

                        if (lumberValue > m_yield)
                            lumberValue = m_yield + 1;

                        int pick = Utility.Random(lumberValue);
                        if (pick == 0)
                        {
                            from.SendMessage(AgriTxt.ZeroPicked);
                            return;
                        }

                        m_yield -= pick;
                        from.SendMessage(AgriTxt.YouPick + " {0} carotte{1}!", pick, (pick == 1 ? "" : "s"));

                        //PublicOverheadMessage( MessageType.Regular, 0x3BD, false, string.Format( "{0}", m_yield )); 
                        ((Item)this).ItemID = pickedGraphic;

                        Carrot crop = new Carrot(pick);
                        from.AddToBackpack(crop);

                        if (SowerPickTime != TimeSpan.Zero && m_lastvisit + SowerPickTime < DateTime.Now && !(m_sower.AccessLevel > AccessLevel.Counselor))
                        {
                            this.UpRoot(from);
                            return;
                        }

                        if (!regrowTimer.Running)
                        {
                            regrowTimer.Start();
                        }
                    }
                }
                else
                {
                    from.SendMessage(AgriTxt.TooFar);
                }
            }
        }
예제 #5
0
		public override void OnDoubleClick( Mobile from ) 
		{ 
			if ( m_sower == null || m_sower.Deleted ) 
				m_sower = from;

			if ( from.Mounted && !CropHelper.CanWorkMounted )
			{
				from.SendMessage( "Vous ne pouvez cultiver ici" ); 
				return; 
			}

			if ( DateTime.Now > lastpicked.AddSeconds(3) ) // 3 seconds between picking
			{
				lastpicked = DateTime.Now;
			
				int lumberValue = (int)from.Skills[SkillName.Lumberjacking].Value / 5;
				if ( lumberValue == 0 )
				{
					from.SendMessage( "Vous ne savez pas comment cultiver cela" ); 
					return;
				}

				if ( from.InRange( this.GetWorldLocation(), 2 ) ) 
				{ 
					if ( m_yield < 1 )
					{
						from.SendMessage( "Il n y a rien ici a cultiver" ); 

						if ( PlayerCanDestroy && !( m_sower.AccessLevel > AccessLevel.Counselor ) )
						{  
							UpRootGump g = new UpRootGump( from, this );
							from.SendGump( g );
						}
					}
					else //check skill and sower
					{
						from.Direction = from.GetDirectionTo( this );

						from.Animate( from.Mounted ? 29:32, 5, 1, true, false, 0 ); 

						if ( from == m_sower ) 
						{
							lumberValue *= 2;
							m_lastvisit = DateTime.Now;
						}

						if ( lumberValue > m_yield ) 
							lumberValue = m_yield + 1;

						int pick = Utility.Random( lumberValue );
						if ( pick == 0 )
						{
							from.SendMessage( "vous n obtenez pas de nouvelle pouce" ); 
							return;
						}
					
						m_yield -= pick;
						from.SendMessage( "Vous Cultivez {0} crop{1}!", pick, ( pick == 1 ? "" : "s" ) ); 

						//PublicOverheadMessage( MessageType.Regular, 0x3BD, false, string.Format( "{0}", m_yield )); // use for debuging
						((Item)this).ItemID = pickedGraphic;

						// ********************************
						// *** Orge does not yet exist ***
						// ********************************
						// Orge crop = new Orge( pick ); 
						OrgeGerbe crop = new OrgeGerbe( pick ); 
						from.AddToBackpack( crop );

						if ( SowerPickTime != TimeSpan.Zero && m_lastvisit + SowerPickTime < DateTime.Now && !( m_sower.AccessLevel > AccessLevel.Counselor ) )
						{
							this.UpRoot( from );
							return;
						}

						if ( !regrowTimer.Running )
						{
							regrowTimer.Start();
						}
					}
				} 
				else 
				{ 
					from.SendMessage( "Vous etes trop loin pour cultiver" ); 
				} 
			}
		}