Beispiel #1
0
        public override void OnComponentUsed(AddonComponent component, Mobile from)
        {
            if (m_NextUse < DateTime.Now)
            {
                Container cont = from.Backpack;

                Engines.Plants.Seed seed = new Engines.Plants.Seed();

                if (cont == null || !cont.TryDropItem(from, seed, false))
                {
                    from.BankBox.DropItem(seed);
                    from.SendLocalizedMessage(1072224); // An item has been placed in your bank box.
                }
                else
                    from.SendLocalizedMessage(1072223); // An item has been placed in your backpack.

                m_NextUse = DateTime.Now + TimeSpan.FromDays(7);
            }
        }
Beispiel #2
0
 public InternalTarget( Seed seed )
     : base(3, false, TargetFlags.None)
 {
     m_Seed = seed;
 }
Beispiel #3
0
        public override void OnResponse( NetState sender, RelayInfo info )
        {
            Mobile from = sender.Mobile;

            if ( info.ButtonID == 0 || m_Plant.Deleted || m_Plant.PlantStatus >= PlantStatus.DecorativePlant || !from.InRange( m_Plant.GetWorldLocation(), 3 ) )
                return;

            if ( !m_Plant.IsUsableBy( from ) )
            {
                m_Plant.LabelTo( from, 1061856 ); // You must have the item in your backpack or locked down in order to use it.
                return;
            }

            switch ( info.ButtonID )
            {
                case 1: // Cancel
                {
                    from.SendGump( new MainPlantGump( m_Plant ) );

                    break;
                }
                case 2: // Help
                {
                    from.Send( new DisplayHelpTopic( 71, true ) ); // EMPTYING THE BOWL

                    from.SendGump( new EmptyTheBowlGump( m_Plant ) );

                    break;
                }
                case 3: // Ok
                {
                    PlantBowl bowl = new PlantBowl();

                    if ( !from.PlaceInBackpack( bowl ) )
                    {
                        bowl.Delete();

                        m_Plant.LabelTo( from, 1053047 ); // You cannot empty a bowl with a full pack!
                        from.SendGump( new MainPlantGump( m_Plant ) );

                        break;
                    }

                    if ( m_Plant.PlantStatus != PlantStatus.BowlOfDirt && m_Plant.PlantStatus < PlantStatus.Plant )
                    {
                        Seed seed = new Seed( m_Plant.PlantType, m_Plant.PlantHue, m_Plant.ShowType );

                        if ( !from.PlaceInBackpack( seed ) )
                        {
                            bowl.Delete();
                            seed.Delete();

                            m_Plant.LabelTo( from, 1053047 ); // You cannot empty a bowl with a full pack!
                            from.SendGump( new MainPlantGump( m_Plant ) );

                            break;
                        }
                    }

                    m_Plant.Delete();

                    break;
                }
            }
        }
Beispiel #4
0
 public InternalTarget(Seed seed)
     : base(-1, false, TargetFlags.None)
 {
     this.m_Seed = seed;
     this.CheckLOS = false;
 }
Beispiel #5
0
 public InternalTarget(Seed seed) : base(-1, false, TargetFlags.None)
 {
     m_Seed   = seed;
     CheckLOS = false;
 }
Beispiel #6
0
 public InternalTarget(Seed seed) : base(3, false, TargetFlags.None)
 {
     m_Seed = seed;
 }
Beispiel #7
0
 public SeedEntry GetExisting(Seed seed)
 {
     return(Entries.FirstOrDefault(e => e != null && e.Seed != null && e.Seed.PlantType == seed.PlantType && e.Seed.PlantHue == seed.PlantHue));
 }
Beispiel #8
0
        public bool TryAddSeed(Mobile from, Seed seed, int index = -1)
        {
            if (!from.Backpack.CheckHold(from, seed, true, true) || seed.Amount <= 0)
            {
                return(false);
            }
            else if (!from.InRange(this.GetWorldLocation(), 3) || from.Map != this.Map)
            {
                return(false);
            }
            else if (TotalCount + seed.Amount <= MaxSeeds)
            {
                SeedEntry entry    = GetExisting(seed);
                int       oldcount = UniqueCount;

                if (entry != null)
                {
                    entry.Seed.Amount += seed.Amount;
                    seed.Delete();
                }
                else if (UniqueCount < MaxUnique)
                {
                    entry = new SeedEntry(seed);
                    DropItem(seed);

                    seed.Movable = false;
                }
                else
                {
                    from.SendLocalizedMessage(1151839); // There is not enough room in the box.
                }

                if (entry != null)
                {
                    if (Entries.Contains(entry))
                    {
                        if (index > -1 && index < Entries.Count - 1)
                        {
                            Entries.Remove(entry);
                            AddEntry(entry, index);
                        }
                    }
                    else
                    {
                        if (index > -1 && index < Entries.Count)
                        {
                            AddEntry(entry, index);
                        }
                        else
                        {
                            AddEntry(entry);
                        }
                    }

                    from.SendLocalizedMessage(1151846); // You put the seed in the seedbox.

                    if (from is PlayerMobile)
                    {
                        var gump = new SeedBoxGump((PlayerMobile)from, this);
                        gump.CheckPage(entry);

                        BaseGump.SendGump(gump);
                    }

                    InvalidateProperties();
                    return(true);
                }
            }
            else
            {
                from.SendLocalizedMessage(1151839); // There is not enough room in the box.
            }

            return(false);
        }
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            Mobile from = sender.Mobile;

            if (info.ButtonID == 0 || m_Plant.Deleted || m_Plant.PlantStatus >= PlantStatus.DecorativePlant)
            {
                return;
            }

            if (info.ButtonID == 3 && !from.InRange(m_Plant.GetWorldLocation(), 3))
            {
                from.LocalOverheadMessage(MessageType.Regular, 0x3E9, 500446);                   // That is too far away.
                return;
            }

            if (!m_Plant.IsUsableBy(from))
            {
                m_Plant.LabelTo(from, 1061856);                   // You must have the item in your backpack or locked down in order to use it.
                return;
            }

            switch (info.ButtonID)
            {
            case 1:                     // Cancel
            {
                from.SendGump(new MainPlantGump(m_Plant));

                break;
            }

            case 2:                                        // Help
            {
                from.Send(new DisplayHelpTopic(71, true)); // EMPTYING THE BOWL

                from.SendGump(new EmptyTheBowlGump(m_Plant));

                break;
            }

            case 3:                     // Ok
            {
                PlantBowl bowl = new PlantBowl();

                if (!from.PlaceInBackpack(bowl))
                {
                    bowl.Delete();

                    m_Plant.LabelTo(from, 1053047);                               // You cannot empty a bowl with a full pack!
                    from.SendGump(new MainPlantGump(m_Plant));

                    break;
                }

                if (m_Plant.PlantStatus != PlantStatus.BowlOfDirt && m_Plant.PlantStatus < PlantStatus.Plant)
                {
                    Seed seed = new Seed(m_Plant.PlantType, m_Plant.PlantHue, m_Plant.ShowType);

                    if (!from.PlaceInBackpack(seed))
                    {
                        bowl.Delete();
                        seed.Delete();

                        m_Plant.LabelTo(from, 1053047);                                   // You cannot empty a bowl with a full pack!
                        from.SendGump(new MainPlantGump(m_Plant));

                        break;
                    }
                }

                m_Plant.Delete();

                break;
            }
            }
        }
Beispiel #10
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            Mobile from = sender.Mobile;

            if (info.ButtonID == 0 || m_Plant.Deleted || m_Plant.PlantStatus >= PlantStatus.DecorativePlant || m_Plant.PlantStatus == PlantStatus.BowlOfDirt)
            {
                return;
            }

            if ((info.ButtonID >= 6 && info.ButtonID <= 8) && !from.InRange(m_Plant.GetWorldLocation(), 3))
            {
                from.LocalOverheadMessage(MessageType.Regular, 0x3E9, 500446); // That is too far away.
                return;
            }

            if (!m_Plant.IsUsableBy(from))
            {
                m_Plant.LabelTo(from, 1061856); // You must have the item in your backpack or locked down in order to use it.
                return;
            }

            switch (info.ButtonID)
            {
            case 1:     // Main menu
            {
                from.SendGump(new MainPlantGump(m_Plant));

                break;
            }

            case 2:     // Set to decorative
            {
                if (m_Plant.PlantStatus == PlantStatus.Stage9)
                {
                    from.SendGump(new SetToDecorativeGump(m_Plant));
                }

                break;
            }

            case 3:                                        // Pollination
            {
                from.Send(new DisplayHelpTopic(67, true)); // POLLINATION STATE

                from.SendGump(new ReproductionGump(m_Plant));

                break;
            }

            case 4:                                        // Resources
            {
                from.Send(new DisplayHelpTopic(69, true)); // RESOURCE PRODUCTION

                from.SendGump(new ReproductionGump(m_Plant));

                break;
            }

            case 5:                                        // Seeds
            {
                from.Send(new DisplayHelpTopic(68, true)); // SEED PRODUCTION

                from.SendGump(new ReproductionGump(m_Plant));

                break;
            }

            case 6:     // Gather pollen
            {
                if (!m_Plant.IsCrossable)
                {
                    m_Plant.LabelTo(from, 1053050);         // You cannot gather pollen from a mutated plant!
                }
                else if (!m_Plant.PlantSystem.PollenProducing)
                {
                    m_Plant.LabelTo(from, 1053051);         // You cannot gather pollen from a plant in this stage of development!
                }
                else if (m_Plant.PlantSystem.Health < PlantHealth.Healthy)
                {
                    m_Plant.LabelTo(from, 1053052);         // You cannot gather pollen from an unhealthy plant!
                }
                else
                {
                    from.Target = new PollinateTarget(m_Plant);
                    from.SendLocalizedMessage(1053054);         // Target the plant you wish to cross-pollinate to.

                    break;
                }

                from.SendGump(new ReproductionGump(m_Plant));

                break;
            }

            case 7:     // Gather resources
            {
                PlantResourceInfo resInfo = PlantResourceInfo.GetInfo(m_Plant.PlantType, m_Plant.PlantHue);
                PlantSystem       system  = m_Plant.PlantSystem;

                if (resInfo == null)
                {
                    if (m_Plant.IsCrossable)
                    {
                        m_Plant.LabelTo(from, 1053056);         // This plant has no resources to gather!
                    }
                    else
                    {
                        m_Plant.LabelTo(from, 1053055);         // Mutated plants do not produce resources!
                    }
                }
                else if (system.AvailableResources == 0)
                {
                    m_Plant.LabelTo(from, 1053056);         // This plant has no resources to gather!
                }
                else
                {
                    Item resource = resInfo.CreateResource();

                    if (from.PlaceInBackpack(resource))
                    {
                        system.AvailableResources--;
                        m_Plant.LabelTo(from, 1053059);         // You gather resources from the plant.
                    }
                    else
                    {
                        resource.Delete();
                        m_Plant.LabelTo(from, 1053058);         // You attempt to gather as many resources as you can hold, but your backpack is full.
                    }
                }

                from.SendGump(new ReproductionGump(m_Plant));

                break;
            }

            case 8:     // Gather seeds
            {
                PlantSystem system = m_Plant.PlantSystem;

                if (!m_Plant.IsCrossable)
                {
                    m_Plant.LabelTo(from, 1053060);       // Mutated plants do not produce seeds!
                }
                else if (system.AvailableSeeds == 0)
                {
                    m_Plant.LabelTo(from, 1053061); // This plant has no seeds to gather!
                }                                   //Seed of Renewal Edit
                else
                {
                    if (Utility.RandomDouble() < 0.05)
                    {
                        Item Rseed = new SeedOfRenewal();

                        if (from.PlaceInBackpack(Rseed))
                        {
                            system.AvailableSeeds--;
                            m_Plant.LabelTo(from, 1053063);     // You gather seeds from the plant.
                        }
                        else
                        {
                            Rseed.Delete();
                            m_Plant.LabelTo(from, 1053062);     // You attempt to gather as many seeds as you can hold, but your backpack is full.
                        }
                    }
                    else
                    {
                        Seed seed = new Seed(system.SeedType, system.SeedHue, true);

                        if (from.PlaceInBackpack(seed))
                        {
                            system.AvailableSeeds--;
                            m_Plant.LabelTo(from, 1053063);     // You gather seeds from the plant.
                        }
                        else
                        {
                            seed.Delete();
                            m_Plant.LabelTo(from, 1053062);     // You attempt to gather as many seeds as you can hold, but your backpack is full.
                        }
                    }
                }

                from.SendGump(new ReproductionGump(m_Plant));

                break;
            }
            }
        }
Beispiel #11
0
        public override void OnResponse(RelayInfo info)
        {
            if (Box.Deleted)
            {
                return;
            }

            int index = Box.Entries.IndexOf(Entry);

            switch (info.ButtonID)
            {
            case 0: break;

            case 1:
                Box.DropSeed(User, Entry, 1);

                RefreshParent();
                break;

            case 2:
                Box.DropSeed(User, Entry, Entry.Seed.Amount);

                RefreshParent();
                break;

            case 3:
                User.SendLocalizedMessage(1151849);     // Click this button and target a seed to add it here.
                User.BeginTarget(-1, false, TargetFlags.None, (from, targeted) =>
                {
                    Seed seed = targeted as Seed;

                    if (seed != null)
                    {
                        if (Box != null && !Box.Deleted && index > 0)
                        {
                            Box.TryAddSeed(User, seed, index);
                        }
                    }
                    else
                    {
                        from.SendLocalizedMessage(1151838);         // This item cannot be stored in the seed box.
                    }
                    RefreshParent();
                });
                break;

            case 4:
                if (Box.Entries.Count < SeedBox.MaxUnique)
                {
                    User.SendLocalizedMessage(1151849);     // Click this button and target a seed to add it here.
                    User.BeginTarget(-1, false, TargetFlags.None, (from, targeted) =>
                    {
                        Seed seed = targeted as Seed;

                        if (seed != null)
                        {
                            if (Box != null && !Box.Deleted && index > 0)
                            {
                                Box.TryAddSeed(User, seed, index + 1);
                            }
                        }
                        else
                        {
                            from.SendLocalizedMessage(1151838);         // This item cannot be stored in the seed box.
                        }
                        RefreshParent();
                    });
                }
                break;

            case 5:      // shift right
                if (index >= 0 && index < Box.Entries.Count && Box.Entries.Count < SeedBox.MaxUnique)
                {
                    Box.Entries.Insert(index, null);

                    if (index + 2 < Box.Entries.Count && Box.Entries[index + 2] == null)
                    {
                        Box.Entries.RemoveAt(index + 2);
                    }

                    if (Parent is SeedBoxGump)
                    {
                        ((SeedBoxGump)Parent).CheckPage(Entry);
                    }

                    RefreshParent(true);
                }
                break;

            case 6:     // shift left
                if (index >= 0 && index < Box.Entries.Count && Box.Entries[index - 1] == null)
                {
                    Box.Entries.Remove(Entry);
                    Box.Entries.Insert(index - 1, Entry);
                    Box.TrimEntries();
                    if (Parent is SeedBoxGump)
                    {
                        ((SeedBoxGump)Parent).CheckPage(Entry);
                    }
                    RefreshParent(true);
                }
                break;
            }
        }
        public override void OnResponse( NetState sender, RelayInfo info )
        {
            Mobile from = sender.Mobile;

            if ( info.ButtonID == 0 || m_Plant.Deleted || m_Plant.PlantStatus >= PlantStatus.DecorativePlant || m_Plant.PlantStatus == PlantStatus.BowlOfDirt || !from.InRange( m_Plant.GetWorldLocation(), 3 ) )
                return;

            if ( !m_Plant.IsUsableBy( from ) )
            {
                m_Plant.LabelTo( from, 1061856 ); // You must have the item in your backpack or locked down in order to use it.
                return;
            }

            switch ( info.ButtonID )
            {
                case 1: // Main menu
                {
                    from.SendGump( new MainPlantGump( m_Plant ) );

                    break;
                }
                case 2: // Set to decorative
                {
                    if ( m_Plant.PlantStatus == PlantStatus.Stage9 )
                    {
                        from.SendGump( new SetToDecorativeGump( m_Plant ) );
                    }

                    break;
                }
                case 3: // Pollination
                {
                    from.Send( new DisplayHelpTopic( 67, true ) ); // POLLINATION STATE

                    from.SendGump( new ReproductionGump( m_Plant ) );

                    break;
                }
                case 4: // Resources
                {
                    from.Send( new DisplayHelpTopic( 69, true ) ); // RESOURCE PRODUCTION

                    from.SendGump( new ReproductionGump( m_Plant ) );

                    break;
                }
                case 5: // Seeds
                {
                    from.Send( new DisplayHelpTopic( 68, true ) ); // SEED PRODUCTION

                    from.SendGump( new ReproductionGump( m_Plant ) );

                    break;
                }
                case 6: // Gather pollen
                {
                    if ( !m_Plant.IsCrossable )
                    {
                        m_Plant.LabelTo( from, 1053050 ); // You cannot gather pollen from a mutated plant!
                    }
                    else if ( !m_Plant.PlantSystem.PollenProducing )
                    {
                        m_Plant.LabelTo( from, 1053051 ); // You cannot gather pollen from a plant in this stage of development!
                    }
                    else if ( m_Plant.PlantSystem.Health < PlantHealth.Healthy )
                    {
                        m_Plant.LabelTo( from, 1053052 ); // You cannot gather pollen from an unhealthy plant!
                    }
                    else
                    {
                        from.Target = new PollinateTarget( m_Plant );
                        from.SendLocalizedMessage( 1053054 ); // Target the plant you wish to cross-pollinate to.

                        break;
                    }

                    from.SendGump( new ReproductionGump( m_Plant ) );

                    break;
                }
                case 7: // Gather resources
                {
                    PlantResourceInfo resInfo = PlantResourceInfo.GetInfo( m_Plant.PlantType, m_Plant.PlantHue );
                    PlantSystem system = m_Plant.PlantSystem;

                    if ( resInfo == null )
                    {
                        if ( m_Plant.IsCrossable )
                            m_Plant.LabelTo( from, 1053056 ); // This plant has no resources to gather!
                        else
                            m_Plant.LabelTo( from, 1053055 ); // Mutated plants do not produce resources!
                    }
                    else if ( system.AvailableResources == 0 )
                    {
                        m_Plant.LabelTo( from, 1053056 ); // This plant has no resources to gather!
                    }
                    else
                    {
                        Item resource = resInfo.CreateResource();

                        if ( from.PlaceInBackpack( resource ) )
                        {
                            system.AvailableResources--;
                            m_Plant.LabelTo( from, 1053059 ); // You gather resources from the plant.
                        }
                        else
                        {
                            resource.Delete();
                            m_Plant.LabelTo( from, 1053058 ); // You attempt to gather as many resources as you can hold, but your backpack is full.
                        }
                    }

                    from.SendGump( new ReproductionGump( m_Plant ) );

                    break;
                }
                case 8: // Gather seeds
                {
                    PlantSystem system = m_Plant.PlantSystem;

                    if ( !m_Plant.IsCrossable )
                    {
                        m_Plant.LabelTo( from, 1053060 ); // Mutated plants do not produce seeds!
                    }
                    else if ( system.AvailableSeeds == 0 )
                    {
                        m_Plant.LabelTo( from, 1053061 ); // This plant has no seeds to gather!
                    }
                    else
                    {
                        Seed seed = new Seed( system.SeedType, system.SeedHue, true );

                        if ( from.PlaceInBackpack( seed ) )
                        {
                            system.AvailableSeeds--;
                            m_Plant.LabelTo( from, 1053063 ); // You gather seeds from the plant.
                        }
                        else
                        {
                            seed.Delete();
                            m_Plant.LabelTo( from, 1053062 ); // You attempt to gather as many seeds as you can hold, but your backpack is full.
                        }
                    }

                    from.SendGump( new ReproductionGump( m_Plant ) );

                    break;
                }
            }
        }