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); } }
public InternalTarget( Seed seed ) : base(3, false, TargetFlags.None) { m_Seed = seed; }
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; } } }
public InternalTarget(Seed seed) : base(-1, false, TargetFlags.None) { this.m_Seed = seed; this.CheckLOS = false; }
public InternalTarget(Seed seed) : base(-1, false, TargetFlags.None) { m_Seed = seed; CheckLOS = false; }
public InternalTarget(Seed seed) : base(3, false, TargetFlags.None) { m_Seed = seed; }
public SeedEntry GetExisting(Seed seed) { return(Entries.FirstOrDefault(e => e != null && e.Seed != null && e.Seed.PlantType == seed.PlantType && e.Seed.PlantHue == seed.PlantHue)); }
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; } } }
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; } } }
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; } } }