UOGamers 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!

  • To obtain new Razor updates, please reinstall Razor from our new website.

[COMPLETE] 15 new growable plants

Status
Not open for further replies.

psz

Administrator
Re: 15 new growable plants

Gisela;567767 said:
Here is a first stab at it.

Some notes:
- I couldn't find a dryad mobile

Early version: (Note: Dryad.cs refers to a Pre-ML Quest char, so I went with this name)

MLDryad.cs
Code:
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
using Server.Misc;

namespace Server.Mobiles
{
    [CorpseName("a dryad corpse")]
    public class MLDryad : BaseCreature
    {
        public override bool InitialInnocent { get { return true; } }
        /* These creatures should be able to cast Area Peace as 
        * well as cause Players' armor to drop into their backpack*/
        /*public override WeaponAbility GetWeaponAbility()
        {
            return WeaponAbility.Disrobe;  // Included in a seperate patch
        }*/
        [Constructable]
        public MLDryad()
            : base(AIType.AI_Mage, FightMode.Aggressor, 10, 1, 0.2, 0.4) // NEED TO CHECK
        {
            Name = "a dryad";
            Body = 266;
            BaseSoundID = 0x57B;

            SetStr(132, 149);
            SetDex(152, 168);
            SetInt(251, 280);

            SetHits(304, 321);

            SetDamage(6, 11);

            SetDamageType(ResistanceType.Physical, 100);

            SetResistance(ResistanceType.Physical, 40, 50);
            SetResistance(ResistanceType.Fire, 15, 25);
            SetResistance(ResistanceType.Cold, 40, 45);
            SetResistance(ResistanceType.Poison, 30, 40);
            SetResistance(ResistanceType.Energy, 25, 35);

            SetSkill(SkillName.Meditation, 80.9, 89.9);
            SetSkill(SkillName.EvalInt, 70.3, 78.7);
            SetSkill(SkillName.Magery, 70.7, 75.7);
            SetSkill(SkillName.Anatomy, 0);
            SetSkill(SkillName.MagicResist, 101.7, 117.1);
            SetSkill(SkillName.Tactics, 71.7, 79.8);
            SetSkill(SkillName.Wrestling, 72.5, 79.5);

            Fame = 5000;
            Karma = 5000;

            VirtualArmor = 28; // Don't know what it should be

        }


        public override void GenerateLoot()
        {
            AddLoot(LootPack.Rich);  // Need to verify
        }
        public override int Meat { get { return 1; } }
        public MLDryad(Serial serial)
            : base(serial)
        {
        }

        public override void Serialize(GenericWriter writer)
        {
            base.Serialize(writer);
            writer.Write((int)0);
        }

        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadInt();
        }
    }
}
 

Gisela

Bug Hunter
Re: [Missing Feature] 15 new growable plants

Sugar Canes fixed. They do display a bit differently than other plants ("Decorative Sugar Canes" rather than "A Decorative Sugar Canes Plant") but judging from the available clilocs, I assume this is how it is on OSI.

I did not add peculiar seeds to MLDryads, since it's obvious that file will be edited heavily and I don't want to create conflicts.

Code:
Index: Scripts/Engines/Plants/Seed.cs
===================================================================
--- Scripts/Engines/Plants/Seed.cs    (revision 337)
+++ Scripts/Engines/Plants/Seed.cs    (working copy)
@@ -56,6 +56,17 @@
             return new Seed( PlantTypeInfo.RandomBonsai( increaseRatio ), PlantHue.Plain, false );
         }
 
+        public static Seed RandomPeculiarSeed( int group )
+        {
+            switch ( group )
+            {
+                case 1: return new Seed ( PlantTypeInfo.RandomPeculiarGroupOne(), PlantHue.Plain, false );
+                case 2: return new Seed ( PlantTypeInfo.RandomPeculiarGroupTwo(), PlantHue.Plain, false );
+                case 3: return new Seed ( PlantTypeInfo.RandomPeculiarGroupThree(), PlantHue.Plain, false );
+                default: return new Seed ( PlantTypeInfo.RandomPeculiarGroupFour(), PlantHue.Plain, false );
+            }
+        }
+
         [Constructable]
         public Seed() : this( PlantTypeInfo.RandomFirstGeneration(), PlantHueInfo.RandomFirstGeneration(), false )
         {
@@ -187,4 +198,4 @@
                 Weight = 1.0;
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Engines/Plants/PlantType.cs
===================================================================
--- Scripts/Engines/Plants/PlantType.cs    (revision 337)
+++ Scripts/Engines/Plants/PlantType.cs    (working copy)
@@ -29,7 +29,24 @@
         RareGreenBonsai,
         RarePinkBonsai,
         ExceptionalBonsai,
-        ExoticBonsai
+        ExoticBonsai,
+        Cactus,
+        FlaxFlowers,
+        FoxgloveFlowers,
+        HopsEast,
+        OrfluerFlowers,
+        CypressTwisted,
+        HedgeShort,
+        JuniperBush,
+        SnowdropPatch,
+        Cattails,
+        PoppyPatch,
+        SpiderTree,
+        WaterLily,
+        CypressStraight,
+        HedgeTall,
+        HopsSouth,
+        SugarCanes
     }
 
     public class PlantTypeInfo
@@ -60,7 +77,24 @@
                 new PlantTypeInfo( 0x28DE, -5, 5,    PlantType.RareGreenBonsai,        true, false, false ),
                 new PlantTypeInfo( 0x28E1, -5, 5,    PlantType.RarePinkBonsai,        true, false, false ),
                 new PlantTypeInfo( 0x28E2, -5, 5,    PlantType.ExceptionalBonsai,    true, false, false ),
-                new PlantTypeInfo( 0x28E3, -5, 5,    PlantType.ExoticBonsai,            true, false, false )
+                new PlantTypeInfo( 0x28E3, -5, 5,    PlantType.ExoticBonsai,            true, false, false ),
+                new PlantTypeInfo( 0x0D25, 0, 0,    PlantType.Cactus,            false, false, false ),
+                new PlantTypeInfo( 0x1A9A, 0, 0,     PlantType.FlaxFlowers,            false, true, false ),
+                new PlantTypeInfo( 0x0C84, 0, 0,     PlantType.FoxgloveFlowers,        false, true, false ),
+                new PlantTypeInfo( 0x1A9F, 0, 0,    PlantType.HopsEast,            false, false, false ),
+                new PlantTypeInfo( 0x0CC1, 0, 0,     PlantType.OrfluerFlowers,        false, true, false ),
+                new PlantTypeInfo( 0x0CFE, 0, 0,     PlantType.CypressTwisted,        false, false, false ),
+                new PlantTypeInfo( 0x0C8F, 0, 0,     PlantType.HedgeShort,            false, false, false ),
+                new PlantTypeInfo( 0x0CC8, 0, 0,    PlantType.JuniperBush,            true, false, false ),
+                new PlantTypeInfo( 0x0C8E, 0, 0,    PlantType.SnowdropPatch,        false, true, false ),
+                new PlantTypeInfo( 0x0CB7, 0, 0,    PlantType.Cattails,            false, false, false ),
+                new PlantTypeInfo( 0x0CBE, 0, 0,     PlantType.PoppyPatch,            false, true, false ),
+                new PlantTypeInfo( 0x0CC9, 0, 0,    PlantType.SpiderTree,            false, false, false ),
+                new PlantTypeInfo( 0x0DC1, 0, 0,    PlantType.WaterLily,            false, true, false ),
+                new PlantTypeInfo( 0x0CFB, 0, 0,    PlantType.CypressStraight,        false, false, false ),
+                new PlantTypeInfo( 0x0DB8, 0, 0,     PlantType.HedgeTall,            false, false, false ),
+                new PlantTypeInfo( 0x1AA1, 0, 0,    PlantType.HopsSouth,            false, false, false ),
+                new PlantTypeInfo( 0x246C, 0, 0,    PlantType.SugarCanes,            false, false, false )
             };
 
         public static PlantTypeInfo GetInfo( PlantType plantType )
@@ -83,6 +117,51 @@
             }
         }
 
+        public static PlantType RandomPeculiarGroupOne()
+        {
+            switch ( Utility.Random( 5 ) )
+            {
+                case 0: return PlantType.Cactus;
+                case 1: return PlantType.FlaxFlowers;
+                case 2: return PlantType.FoxgloveFlowers;
+                case 3: return PlantType.HopsEast;
+                default: return PlantType.OrfluerFlowers;
+            }
+        }
+
+        public static PlantType RandomPeculiarGroupTwo()
+        {
+            switch ( Utility.Random( 4 ) )
+            {
+                case 0:    return PlantType.CypressTwisted; 
+                case 1: return PlantType.HedgeShort;
+                case 2: return PlantType.JuniperBush;
+                default: return PlantType.SnowdropPatch;
+            }
+        }
+
+        public static PlantType RandomPeculiarGroupThree()
+        {
+            switch ( Utility.Random( 4 ) )
+            {
+                case 0:    return PlantType.Cattails;
+                case 1: return PlantType.PoppyPatch;
+                case 2: return PlantType.SpiderTree;
+                default: return PlantType.WaterLily;
+            }
+        }
+
+        public static PlantType RandomPeculiarGroupFour()
+        {
+            switch ( Utility.Random( 4 ) )
+            {
+                case 0:    return PlantType.CypressStraight;
+                case 1: return PlantType.HedgeTall;
+                case 2: return PlantType.HopsSouth;
+                default: return PlantType.SugarCanes;
+            }
+        }
+                
         public static PlantType RandomBonsai( double increaseRatio )
         {
             /* Chances of each plant type are equal to the chances of the previous plant type * increaseRatio:
@@ -152,6 +231,25 @@
         {
             switch ( plantType )
             {
+                case PlantType.Cactus:
+                case PlantType.FlaxFlowers:
+                case PlantType.FoxgloveFlowers:
+                case PlantType.HopsEast:
+                case PlantType.OrfluerFlowers:
+                case PlantType.CypressTwisted:
+                case PlantType.HedgeShort:
+                case PlantType.JuniperBush:
+                case PlantType.SnowdropPatch:
+                case PlantType.Cattails:
+                case PlantType.PoppyPatch:
+                case PlantType.SpiderTree:
+                case PlantType.WaterLily:
+                case PlantType.CypressStraight:
+                case PlantType.HedgeTall:
+                case PlantType.HopsSouth:
+                case PlantType.SugarCanes:
+                    return 1080528; // peculiar
+
                 case PlantType.CommonGreenBonsai:
                 case PlantType.CommonPinkBonsai:
                     return 1063335; // common
@@ -203,4 +301,4 @@
             m_Crossable = crossable;
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Engines/Plants/PlantItem.cs
===================================================================
--- Scripts/Engines/Plants/PlantItem.cs    (revision 337)
+++ Scripts/Engines/Plants/PlantItem.cs    (working copy)
@@ -259,23 +259,35 @@
 
                 if ( m_PlantStatus < PlantStatus.DecorativePlant )
                 {
-                    string args = string.Format( "#{0}\t#{1}\t#{2}", m_PlantSystem.GetLocalizedHealth(), title, typeInfo.Name );
-
-                    if ( typeInfo.ContainsPlant )
+                    if ( m_PlantType == PlantType.SugarCanes )
                     {
-                        // a ~1_HEALTH~ [bright] ~2_COLOR~ ~3_NAME~
-                        list.Add( hueInfo.IsBright() ? 1061891 : 1061889, args );
+                        string args = string.Format( "#{0}", m_PlantSystem.GetLocalizedHealth() );
+                        list.Add ( 1094702, args );
                     }
                     else
                     {
-                        // a ~1_HEALTH~ [bright] ~2_COLOR~ ~3_NAME~ plant
-                        list.Add( hueInfo.IsBright() ? 1061892 : 1061890, args );
+
+                        string args = string.Format( "#{0}\t#{1}\t#{2}", m_PlantSystem.GetLocalizedHealth(), title, typeInfo.Name );
+
+                        if ( typeInfo.ContainsPlant )
+                        {
+                            // a ~1_HEALTH~ [bright] ~2_COLOR~ ~3_NAME~
+                            list.Add( hueInfo.IsBright() ? 1061891 : 1061889, args );
+                        }
+                        else
+                        {
+                            // a ~1_HEALTH~ [bright] ~2_COLOR~ ~3_NAME~ plant
+                            list.Add( hueInfo.IsBright() ? 1061892 : 1061890, args );
+                        }
                     }
                 }
                 else
                 {
-                    // a decorative ~1_COLOR~ ~2_TYPE~ plant
-                    list.Add( hueInfo.IsBright() ? 1074267 : 1070973, string.Format( "#{0}\t#{1}", title, typeInfo.Name ) );
+                    if ( m_PlantType == PlantType.SugarCanes )
+                        list.Add ( 1094703 );
+                    else
+                        // a decorative ~1_COLOR~ ~2_TYPE~ plant
+                        list.Add( hueInfo.IsBright() ? 1074267 : 1070973, string.Format( "#{0}\t#{1}", title, typeInfo.Name ) );
                 }
             }
             else if ( m_PlantStatus >= PlantStatus.Seed )
@@ -586,4 +598,4 @@
             m_Instances.Remove( this );
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Animals/Mounts/Hiryu.cs
===================================================================
--- Scripts/Mobiles/Animals/Mounts/Hiryu.cs    (revision 337)
+++ Scripts/Mobiles/Animals/Mounts/Hiryu.cs    (working copy)
@@ -110,6 +110,9 @@
 
             if( Utility.RandomDouble() < .33 )
                 PackItem( Engines.Plants.Seed.RandomBonsaiSeed() );
+
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(3) );
         }
 
 
Index: Scripts/Mobiles/Monsters/LBR/Jukas/JukaMage.cs
===================================================================
--- Scripts/Mobiles/Monsters/LBR/Jukas/JukaMage.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/LBR/Jukas/JukaMage.cs    (working copy)
@@ -64,6 +64,9 @@
 
             PackItem( new ArcaneGem() );
 
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(4) );
+
             m_NextAbilityTime = DateTime.Now + TimeSpan.FromSeconds( Utility.RandomMinMax( 2, 5 ) );
         }
 
Index: Scripts/Mobiles/Monsters/Humanoid/Magic/Titan.cs
===================================================================
--- Scripts/Mobiles/Monsters/Humanoid/Magic/Titan.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/Humanoid/Magic/Titan.cs    (working copy)
@@ -40,6 +40,10 @@
             Karma = -11500;
 
             VirtualArmor = 40;
+
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(1) );
+
         }
 
         public override void GenerateLoot()
@@ -69,4 +73,4 @@
             int version = reader.ReadInt();
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Monsters/Humanoid/Melee/Mummy.cs
===================================================================
--- Scripts/Mobiles/Monsters/Humanoid/Melee/Mummy.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/Humanoid/Melee/Mummy.cs    (working copy)
@@ -41,6 +41,9 @@
 
             VirtualArmor = 50;
 
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(2) );
+
             PackItem( new Garlic( 5 ) );
             PackItem( new Bandage( 10 ) );
         }
@@ -76,4 +79,4 @@
             int version = reader.ReadInt();
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Monsters/Reptile/Magic/SerpentineDragon.cs
===================================================================
--- Scripts/Mobiles/Monsters/Reptile/Magic/SerpentineDragon.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/Reptile/Magic/SerpentineDragon.cs    (working copy)
@@ -42,6 +42,9 @@
             Karma = 15000;
 
             VirtualArmor = 36;
+
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(2) );
         }
 
         public override void GenerateLoot()
@@ -120,4 +123,4 @@
             int version = reader.ReadInt();
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Monsters/Ants/AntLion.cs
===================================================================
--- Scripts/Mobiles/Monsters/Ants/AntLion.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/Ants/AntLion.cs    (working copy)
@@ -44,6 +44,9 @@
             PackItem( new Bone( 3 ) );
             PackItem( new FertileDirt( Utility.RandomMinMax( 1, 5 ) ) );
 
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(2) );
+
             switch ( Utility.Random( 4 ) )
             {
                 case 0: PackItem( new DullCopperOre( Utility.RandomMinMax( 1, 10 ) ) ); break;
@@ -102,4 +105,4 @@
             int version = reader.ReadInt();
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Monsters/SE/TsukiWolf.cs
===================================================================
--- Scripts/Mobiles/Monsters/SE/TsukiWolf.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/SE/TsukiWolf.cs    (working copy)
@@ -47,6 +47,8 @@
             Fame = 8500;
             Karma = -8500;
 
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(1) );
 
 
             switch( Utility.Random( 10 ) )
@@ -189,4 +191,4 @@
             return 0x52A;
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Monsters/SE/Kappa.cs
===================================================================
--- Scripts/Mobiles/Monsters/SE/Kappa.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/SE/Kappa.cs    (working copy)
@@ -48,6 +48,8 @@
                     case 2: PackItem( new Axle() ); break;
                 }
             }
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(4) );
 
 
         }
Index: Scripts/Mobiles/Monsters/Arachnid/Melee/TerathanWarrior.cs
===================================================================
--- Scripts/Mobiles/Monsters/Arachnid/Melee/TerathanWarrior.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/Arachnid/Melee/TerathanWarrior.cs    (working copy)
@@ -41,6 +41,9 @@
             Karma = -4000;
 
             VirtualArmor = 30;
+
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(3) );
         }
 
         public override void GenerateLoot()
@@ -72,4 +75,4 @@
             int version = reader.ReadInt();
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Monsters/Misc/Magic/Wisp.cs
===================================================================
--- Scripts/Mobiles/Monsters/Misc/Magic/Wisp.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/Misc/Magic/Wisp.cs    (working copy)
@@ -51,6 +51,9 @@
 
             VirtualArmor = 40;
 
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(3) );
+
             AddItem( new LightSource() );
         }
 
@@ -81,4 +84,4 @@
             int version = reader.ReadInt();
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Monsters/Misc/Melee/PlagueBeast.cs
===================================================================
--- Scripts/Mobiles/Monsters/Misc/Melee/PlagueBeast.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/Misc/Melee/PlagueBeast.cs    (working copy)
@@ -40,6 +40,9 @@
 
             VirtualArmor = 30;
             PackArmor( 1, 5 );
+
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(4) );
         }
 
         public override void GenerateLoot()
@@ -121,4 +124,4 @@
             int version = reader.ReadInt();
         }
     }
-}
\ No newline at end of file
+}
 

Attachments

  • plants3.txt
    14 KB · Views: 5

uome

Bug Hunter
Re: [Missing Feature] 15 new growable plants

Here some testing notes for you, nothing major the overall system seems good.

Minor issues:
Some plants could sit better (more central) in the plants status gump.
offenders are:
both cyprus trees
sugar canes
poppies

I'm not 100% convinced the image for the flax is right (going on stratics and uoguide pics)
But i can't see anything better.

Question:
should they drop thier "peculiar" label when they are at and after the fully grown stage 7?
A quick check on osi would confirm it if anyone can.

testing process:
they have been all been grown fully from seed to decorative setting the growth check timer to 20 mins.
checked drop rates and correct mobiles drop correct groups.
checked for pollination, seeds and resources.
checked against house deco tool.
looked at behavior in house customisation mode.
checked general display including labels and hues.
checked gump display.
looked at when they can be set to deccorative.
checked the decay process.

checked no "peculiar" seeds drop on the naturalist quest, allough this may need looking into at a later date.
But i'm not convinced we should be following an osi bug :p
quote from UOGuide.
It was initially decided that no coloured Peculiar plants would be available, but due to a bug which caused the Naturalist
Quest to produce nothing but coloured Peculiar Cactus plants,
Publish 56 will make both standard and peculiar plants available from the same quest

Something else peculiar i discovered with the plant system during testing.
Why are security levels still available even after the plant has been set to decorative?
 

Gisela

Bug Hunter
Re: [Missing Feature] 15 new growable plants

That is some really thorough testing. Thank you. :)

uome;578790 said:
Minor issues:
Some plants could sit better (more central) in the plants status gump.
offenders are:
both cyprus trees
sugar canes
poppies

Ok, I fixed these by twiddling the x/y offsets in the planttype table. I do not see any way to change the image size, so the cypress trees continue to spill off the top of the gump. But they look a lot better than before.

Question:
should they drop thier "peculiar" label when they are at and after the fully grown stage 7?
A quick check on osi would confirm it if anyone can.
My instinct says it should stay since it does with the rare plants from the naturalist quest. But a confirmation would be nice.

Code:
Index: Scripts/Engines/Plants/PlantType.cs
===================================================================
--- Scripts/Engines/Plants/PlantType.cs    (revision 337)
+++ Scripts/Engines/Plants/PlantType.cs    (working copy)
@@ -29,7 +29,24 @@
         RareGreenBonsai,
         RarePinkBonsai,
         ExceptionalBonsai,
-        ExoticBonsai
+        ExoticBonsai,
+        Cactus,
+        FlaxFlowers,
+        FoxgloveFlowers,
+        HopsEast,
+        OrfluerFlowers,
+        CypressTwisted,
+        HedgeShort,
+        JuniperBush,
+        SnowdropPatch,
+        Cattails,
+        PoppyPatch,
+        SpiderTree,
+        WaterLily,
+        CypressStraight,
+        HedgeTall,
+        HopsSouth,
+        SugarCanes
     }
 
     public class PlantTypeInfo
@@ -60,7 +77,24 @@
                 new PlantTypeInfo( 0x28DE, -5, 5,    PlantType.RareGreenBonsai,        true, false, false ),
                 new PlantTypeInfo( 0x28E1, -5, 5,    PlantType.RarePinkBonsai,        true, false, false ),
                 new PlantTypeInfo( 0x28E2, -5, 5,    PlantType.ExceptionalBonsai,    true, false, false ),
-                new PlantTypeInfo( 0x28E3, -5, 5,    PlantType.ExoticBonsai,            true, false, false )
+                new PlantTypeInfo( 0x28E3, -5, 5,    PlantType.ExoticBonsai,            true, false, false ),
+                new PlantTypeInfo( 0x0D25, 0, 0,    PlantType.Cactus,            false, false, false ),
+                new PlantTypeInfo( 0x1A9A, 0, 0,     PlantType.FlaxFlowers,            false, true, false ),
+                new PlantTypeInfo( 0x0C84, 0, 0,     PlantType.FoxgloveFlowers,        false, true, false ),
+                new PlantTypeInfo( 0x1A9F, 0, 0,    PlantType.HopsEast,            false, false, false ),
+                new PlantTypeInfo( 0x0CC1, 0, 0,     PlantType.OrfluerFlowers,        false, true, false ),
+                new PlantTypeInfo( 0x0CFE, -40, -100,     PlantType.CypressTwisted,        false, false, false ),
+                new PlantTypeInfo( 0x0C8F, 0, 0,     PlantType.HedgeShort,            false, false, false ),
+                new PlantTypeInfo( 0x0CC8, 0, 0,    PlantType.JuniperBush,            true, false, false ),
+                new PlantTypeInfo( 0x0C8E, 0, 0,    PlantType.SnowdropPatch,        false, true, false ),
+                new PlantTypeInfo( 0x0CB7, 0, 0,    PlantType.Cattails,            false, false, false ),
+                new PlantTypeInfo( 0x0CBE, -20, 0,     PlantType.PoppyPatch,            false, true, false ),
+                new PlantTypeInfo( 0x0CC9, 0, 0,    PlantType.SpiderTree,            false, false, false ),
+                new PlantTypeInfo( 0x0DC1, 0, 0,    PlantType.WaterLily,            false, true, false ),
+                new PlantTypeInfo( 0x0CFB, -40, -100,    PlantType.CypressStraight,        false, false, false ),
+                new PlantTypeInfo( 0x0DB8, 0, 0,     PlantType.HedgeTall,            false, false, false ),
+                new PlantTypeInfo( 0x1AA1, 0, 0,    PlantType.HopsSouth,            false, false, false ),
+                new PlantTypeInfo( 0x246C, -25, -20,    PlantType.SugarCanes,            false, false, false )
             };
 
         public static PlantTypeInfo GetInfo( PlantType plantType )
@@ -83,6 +117,51 @@
             }
         }
 
+        public static PlantType RandomPeculiarGroupOne()
+        {
+            switch ( Utility.Random( 5 ) )
+            {
+                case 0: return PlantType.Cactus;
+                case 1: return PlantType.FlaxFlowers;
+                case 2: return PlantType.FoxgloveFlowers;
+                case 3: return PlantType.HopsEast;
+                default: return PlantType.OrfluerFlowers;
+            }
+        }
+
+        public static PlantType RandomPeculiarGroupTwo()
+        {
+            switch ( Utility.Random( 4 ) )
+            {
+                case 0:    return PlantType.CypressTwisted; 
+                case 1: return PlantType.HedgeShort;
+                case 2: return PlantType.JuniperBush;
+                default: return PlantType.SnowdropPatch;
+            }
+        }
+
+        public static PlantType RandomPeculiarGroupThree()
+        {
+            switch ( Utility.Random( 4 ) )
+            {
+                case 0:    return PlantType.Cattails;
+                case 1: return PlantType.PoppyPatch;
+                case 2: return PlantType.SpiderTree;
+                default: return PlantType.WaterLily;
+            }
+        }
+
+        public static PlantType RandomPeculiarGroupFour()
+        {
+            switch ( Utility.Random( 4 ) )
+            {
+                case 0:    return PlantType.CypressStraight;
+                case 1: return PlantType.HedgeTall;
+                case 2: return PlantType.HopsSouth;
+                default: return PlantType.SugarCanes;
+            }
+        }
+                
         public static PlantType RandomBonsai( double increaseRatio )
         {
             /* Chances of each plant type are equal to the chances of the previous plant type * increaseRatio:
@@ -152,6 +231,25 @@
         {
             switch ( plantType )
             {
+                case PlantType.Cactus:
+                case PlantType.FlaxFlowers:
+                case PlantType.FoxgloveFlowers:
+                case PlantType.HopsEast:
+                case PlantType.OrfluerFlowers:
+                case PlantType.CypressTwisted:
+                case PlantType.HedgeShort:
+                case PlantType.JuniperBush:
+                case PlantType.SnowdropPatch:
+                case PlantType.Cattails:
+                case PlantType.PoppyPatch:
+                case PlantType.SpiderTree:
+                case PlantType.WaterLily:
+                case PlantType.CypressStraight:
+                case PlantType.HedgeTall:
+                case PlantType.HopsSouth:
+                case PlantType.SugarCanes:
+                    return 1080528; // peculiar
+
                 case PlantType.CommonGreenBonsai:
                 case PlantType.CommonPinkBonsai:
                     return 1063335; // common
@@ -203,4 +301,4 @@
             m_Crossable = crossable;
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Engines/Plants/Seed.cs
===================================================================
--- Scripts/Engines/Plants/Seed.cs    (revision 337)
+++ Scripts/Engines/Plants/Seed.cs    (working copy)
@@ -56,6 +56,17 @@
             return new Seed( PlantTypeInfo.RandomBonsai( increaseRatio ), PlantHue.Plain, false );
         }
 
+        public static Seed RandomPeculiarSeed( int group )
+        {
+            switch ( group )
+            {
+                case 1: return new Seed ( PlantTypeInfo.RandomPeculiarGroupOne(), PlantHue.Plain, false );
+                case 2: return new Seed ( PlantTypeInfo.RandomPeculiarGroupTwo(), PlantHue.Plain, false );
+                case 3: return new Seed ( PlantTypeInfo.RandomPeculiarGroupThree(), PlantHue.Plain, false );
+                default: return new Seed ( PlantTypeInfo.RandomPeculiarGroupFour(), PlantHue.Plain, false );
+            }
+        }
+
         [Constructable]
         public Seed() : this( PlantTypeInfo.RandomFirstGeneration(), PlantHueInfo.RandomFirstGeneration(), false )
         {
@@ -187,4 +198,4 @@
                 Weight = 1.0;
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Engines/Plants/PlantItem.cs
===================================================================
--- Scripts/Engines/Plants/PlantItem.cs    (revision 337)
+++ Scripts/Engines/Plants/PlantItem.cs    (working copy)
@@ -259,23 +259,35 @@
 
                 if ( m_PlantStatus < PlantStatus.DecorativePlant )
                 {
-                    string args = string.Format( "#{0}\t#{1}\t#{2}", m_PlantSystem.GetLocalizedHealth(), title, typeInfo.Name );
-
-                    if ( typeInfo.ContainsPlant )
+                    if ( m_PlantType == PlantType.SugarCanes )
                     {
-                        // a ~1_HEALTH~ [bright] ~2_COLOR~ ~3_NAME~
-                        list.Add( hueInfo.IsBright() ? 1061891 : 1061889, args );
+                        string args = string.Format( "#{0}", m_PlantSystem.GetLocalizedHealth() );
+                        list.Add ( 1094702, args );
                     }
                     else
                     {
-                        // a ~1_HEALTH~ [bright] ~2_COLOR~ ~3_NAME~ plant
-                        list.Add( hueInfo.IsBright() ? 1061892 : 1061890, args );
+
+                        string args = string.Format( "#{0}\t#{1}\t#{2}", m_PlantSystem.GetLocalizedHealth(), title, typeInfo.Name );
+
+                        if ( typeInfo.ContainsPlant )
+                        {
+                            // a ~1_HEALTH~ [bright] ~2_COLOR~ ~3_NAME~
+                            list.Add( hueInfo.IsBright() ? 1061891 : 1061889, args );
+                        }
+                        else
+                        {
+                            // a ~1_HEALTH~ [bright] ~2_COLOR~ ~3_NAME~ plant
+                            list.Add( hueInfo.IsBright() ? 1061892 : 1061890, args );
+                        }
                     }
                 }
                 else
                 {
-                    // a decorative ~1_COLOR~ ~2_TYPE~ plant
-                    list.Add( hueInfo.IsBright() ? 1074267 : 1070973, string.Format( "#{0}\t#{1}", title, typeInfo.Name ) );
+                    if ( m_PlantType == PlantType.SugarCanes )
+                        list.Add ( 1094703 );
+                    else
+                        // a decorative ~1_COLOR~ ~2_TYPE~ plant
+                        list.Add( hueInfo.IsBright() ? 1074267 : 1070973, string.Format( "#{0}\t#{1}", title, typeInfo.Name ) );
                 }
             }
             else if ( m_PlantStatus >= PlantStatus.Seed )
@@ -586,4 +598,4 @@
             m_Instances.Remove( this );
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Animals/Mounts/Hiryu.cs
===================================================================
--- Scripts/Mobiles/Animals/Mounts/Hiryu.cs    (revision 337)
+++ Scripts/Mobiles/Animals/Mounts/Hiryu.cs    (working copy)
@@ -110,6 +110,9 @@
 
             if( Utility.RandomDouble() < .33 )
                 PackItem( Engines.Plants.Seed.RandomBonsaiSeed() );
+
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(3) );
         }
 
 
Index: Scripts/Mobiles/Monsters/LBR/Jukas/JukaMage.cs
===================================================================
--- Scripts/Mobiles/Monsters/LBR/Jukas/JukaMage.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/LBR/Jukas/JukaMage.cs    (working copy)
@@ -64,6 +64,9 @@
 
             PackItem( new ArcaneGem() );
 
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(4) );
+
             m_NextAbilityTime = DateTime.Now + TimeSpan.FromSeconds( Utility.RandomMinMax( 2, 5 ) );
         }
 
Index: Scripts/Mobiles/Monsters/Humanoid/Magic/Titan.cs
===================================================================
--- Scripts/Mobiles/Monsters/Humanoid/Magic/Titan.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/Humanoid/Magic/Titan.cs    (working copy)
@@ -40,6 +40,10 @@
             Karma = -11500;
 
             VirtualArmor = 40;
+
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(1) );
+
         }
 
         public override void GenerateLoot()
@@ -69,4 +73,4 @@
             int version = reader.ReadInt();
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Monsters/Humanoid/Melee/Mummy.cs
===================================================================
--- Scripts/Mobiles/Monsters/Humanoid/Melee/Mummy.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/Humanoid/Melee/Mummy.cs    (working copy)
@@ -41,6 +41,9 @@
 
             VirtualArmor = 50;
 
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(2) );
+
             PackItem( new Garlic( 5 ) );
             PackItem( new Bandage( 10 ) );
         }
@@ -76,4 +79,4 @@
             int version = reader.ReadInt();
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Monsters/Reptile/Magic/SerpentineDragon.cs
===================================================================
--- Scripts/Mobiles/Monsters/Reptile/Magic/SerpentineDragon.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/Reptile/Magic/SerpentineDragon.cs    (working copy)
@@ -42,6 +42,9 @@
             Karma = 15000;
 
             VirtualArmor = 36;
+
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(2) );
         }
 
         public override void GenerateLoot()
@@ -120,4 +123,4 @@
             int version = reader.ReadInt();
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Monsters/Ants/AntLion.cs
===================================================================
--- Scripts/Mobiles/Monsters/Ants/AntLion.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/Ants/AntLion.cs    (working copy)
@@ -44,6 +44,9 @@
             PackItem( new Bone( 3 ) );
             PackItem( new FertileDirt( Utility.RandomMinMax( 1, 5 ) ) );
 
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(2) );
+
             switch ( Utility.Random( 4 ) )
             {
                 case 0: PackItem( new DullCopperOre( Utility.RandomMinMax( 1, 10 ) ) ); break;
@@ -102,4 +105,4 @@
             int version = reader.ReadInt();
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Monsters/SE/TsukiWolf.cs
===================================================================
--- Scripts/Mobiles/Monsters/SE/TsukiWolf.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/SE/TsukiWolf.cs    (working copy)
@@ -47,6 +47,8 @@
             Fame = 8500;
             Karma = -8500;
 
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(1) );
 
 
             switch( Utility.Random( 10 ) )
@@ -189,4 +191,4 @@
             return 0x52A;
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Monsters/SE/Kappa.cs
===================================================================
--- Scripts/Mobiles/Monsters/SE/Kappa.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/SE/Kappa.cs    (working copy)
@@ -48,6 +48,8 @@
                     case 2: PackItem( new Axle() ); break;
                 }
             }
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(4) );
 
 
         }
Index: Scripts/Mobiles/Monsters/Arachnid/Melee/TerathanWarrior.cs
===================================================================
--- Scripts/Mobiles/Monsters/Arachnid/Melee/TerathanWarrior.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/Arachnid/Melee/TerathanWarrior.cs    (working copy)
@@ -41,6 +41,9 @@
             Karma = -4000;
 
             VirtualArmor = 30;
+
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(3) );
         }
 
         public override void GenerateLoot()
@@ -72,4 +75,4 @@
             int version = reader.ReadInt();
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Monsters/Misc/Magic/Wisp.cs
===================================================================
--- Scripts/Mobiles/Monsters/Misc/Magic/Wisp.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/Misc/Magic/Wisp.cs    (working copy)
@@ -51,6 +51,9 @@
 
             VirtualArmor = 40;
 
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(3) );
+
             AddItem( new LightSource() );
         }
 
@@ -81,4 +84,4 @@
             int version = reader.ReadInt();
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Monsters/Misc/Melee/PlagueBeast.cs
===================================================================
--- Scripts/Mobiles/Monsters/Misc/Melee/PlagueBeast.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/Misc/Melee/PlagueBeast.cs    (working copy)
@@ -40,6 +40,9 @@
 
             VirtualArmor = 30;
             PackArmor( 1, 5 );
+
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(4) );
         }
 
         public override void GenerateLoot()
@@ -121,4 +124,4 @@
             int version = reader.ReadInt();
         }
     }
-}
\ No newline at end of file
+}
 

Attachments

  • plants4.diff
    14 KB · Views: 1

LadyCrimson

Wanderer
Re: [Missing Feature] 15 new growable plants

Security levels should disappear on all plants after they are set to decorative. I know this for a fact. :)
 

Gisela

Bug Hunter
Re: [Missing Feature] 15 new growable plants

LC can you check whether or not a full-grown peculiar plant retains the 'peculiar' in its title?
 

uome

Bug Hunter
Re: [Missing Feature] 15 new growable plants

LadyCrimson;579279 said:
Security levels should disappear on all plants after they are set to decorative. I know this for a fact. :)
Thanks for checking but thats a different bug with plants overall and not something that is an issue with this pack.

Once i've looked at this weekends proposed diff i'll get onto final checks on this one.
 

Gisela

Bug Hunter
Re: [Missing Feature] 15 new growable plants

Interesting.. if you run across any naturalist plants please do the same check :)
 

LadyCrimson

Wanderer
Re: [Missing Feature] 15 new growable plants

I have yet to find any naturalist quest colored plants (of these 15 new ones). All I have seen are plain or the standard "blue, yellow..."... I found a huge grower on Great Lakes and they don't have any. So, still looking for the whole naturalist colors for these plants and have yet to find them. I wonder if OSI fixed that problem.
 

Gisela

Bug Hunter
Re: [Missing Feature] 15 new growable plants

Thanks for checking :)

I was only really interested in the standard pink, blue, aqua and magenta naturalist plants. In runuo, their decorative titles are

'A decorative rare magenta century plant' etc

Perhaps they should be

'A decorative magenta century plant' instead (without the 'rare' title)
 

LadyCrimson

Wanderer
Re: [Missing Feature] 15 new growable plants

The decorative flax is a very small bundle of blue flax with grass green stems.
 

Attachments

  • flaz.jpg
    flaz.jpg
    8.3 KB · Views: 134

LadyCrimson

Wanderer
Re: [Missing Feature] 15 new growable plants

For the naturalist colors, the word rare is in there. It is "A Decorative Rare (color) (plant name)"
 

Gisela

Bug Hunter
Re: [Missing Feature] 15 new growable plants

New Patch -

- Use a different cliloc for decorative peculiars that strips the peculiar from the title

Left flax image alone since it appears to be the same.

Code:
Index: Scripts/Engines/Plants/PlantType.cs
===================================================================
--- Scripts/Engines/Plants/PlantType.cs    (revision 337)
+++ Scripts/Engines/Plants/PlantType.cs    (working copy)
@@ -29,7 +29,24 @@
         RareGreenBonsai,
         RarePinkBonsai,
         ExceptionalBonsai,
-        ExoticBonsai
+        ExoticBonsai,
+        Cactus,
+        FlaxFlowers,
+        FoxgloveFlowers,
+        HopsEast,
+        OrfluerFlowers,
+        CypressTwisted,
+        HedgeShort,
+        JuniperBush,
+        SnowdropPatch,
+        Cattails,
+        PoppyPatch,
+        SpiderTree,
+        WaterLily,
+        CypressStraight,
+        HedgeTall,
+        HopsSouth,
+        SugarCanes
     }
 
     public class PlantTypeInfo
@@ -60,7 +77,24 @@
                 new PlantTypeInfo( 0x28DE, -5, 5,    PlantType.RareGreenBonsai,        true, false, false ),
                 new PlantTypeInfo( 0x28E1, -5, 5,    PlantType.RarePinkBonsai,        true, false, false ),
                 new PlantTypeInfo( 0x28E2, -5, 5,    PlantType.ExceptionalBonsai,    true, false, false ),
-                new PlantTypeInfo( 0x28E3, -5, 5,    PlantType.ExoticBonsai,            true, false, false )
+                new PlantTypeInfo( 0x28E3, -5, 5,    PlantType.ExoticBonsai,            true, false, false ),
+                new PlantTypeInfo( 0x0D25, 0, 0,    PlantType.Cactus,            false, false, false ),
+                new PlantTypeInfo( 0x1A9A, 0, 0,     PlantType.FlaxFlowers,            false, true, false ),
+                new PlantTypeInfo( 0x0C84, 0, 0,     PlantType.FoxgloveFlowers,        false, true, false ),
+                new PlantTypeInfo( 0x1A9F, 0, 0,    PlantType.HopsEast,            false, false, false ),
+                new PlantTypeInfo( 0x0CC1, 0, 0,     PlantType.OrfluerFlowers,        false, true, false ),
+                new PlantTypeInfo( 0x0CFE, -40, -100,     PlantType.CypressTwisted,        false, false, false ),
+                new PlantTypeInfo( 0x0C8F, 0, 0,     PlantType.HedgeShort,            false, false, false ),
+                new PlantTypeInfo( 0x0CC8, 0, 0,    PlantType.JuniperBush,            true, false, false ),
+                new PlantTypeInfo( 0x0C8E, 0, 0,    PlantType.SnowdropPatch,        false, true, false ),
+                new PlantTypeInfo( 0x0CB7, 0, 0,    PlantType.Cattails,            false, false, false ),
+                new PlantTypeInfo( 0x0CBE, -20, 0,     PlantType.PoppyPatch,            false, true, false ),
+                new PlantTypeInfo( 0x0CC9, 0, 0,    PlantType.SpiderTree,            false, false, false ),
+                new PlantTypeInfo( 0x0DC1, 0, 0,    PlantType.WaterLily,            false, true, false ),
+                new PlantTypeInfo( 0x0CFB, -40, -100,    PlantType.CypressStraight,        false, false, false ),
+                new PlantTypeInfo( 0x0DB8, 0, 0,     PlantType.HedgeTall,            false, false, false ),
+                new PlantTypeInfo( 0x1AA1, 0, 0,    PlantType.HopsSouth,            false, false, false ),
+                new PlantTypeInfo( 0x246C, -25, -20,    PlantType.SugarCanes,            false, false, false )
             };
 
         public static PlantTypeInfo GetInfo( PlantType plantType )
@@ -83,6 +117,51 @@
             }
         }
 
+        public static PlantType RandomPeculiarGroupOne()
+        {
+            switch ( Utility.Random( 5 ) )
+            {
+                case 0: return PlantType.Cactus;
+                case 1: return PlantType.FlaxFlowers;
+                case 2: return PlantType.FoxgloveFlowers;
+                case 3: return PlantType.HopsEast;
+                default: return PlantType.OrfluerFlowers;
+            }
+        }
+
+        public static PlantType RandomPeculiarGroupTwo()
+        {
+            switch ( Utility.Random( 4 ) )
+            {
+                case 0:    return PlantType.CypressTwisted; 
+                case 1: return PlantType.HedgeShort;
+                case 2: return PlantType.JuniperBush;
+                default: return PlantType.SnowdropPatch;
+            }
+        }
+
+        public static PlantType RandomPeculiarGroupThree()
+        {
+            switch ( Utility.Random( 4 ) )
+            {
+                case 0:    return PlantType.Cattails;
+                case 1: return PlantType.PoppyPatch;
+                case 2: return PlantType.SpiderTree;
+                default: return PlantType.WaterLily;
+            }
+        }
+
+        public static PlantType RandomPeculiarGroupFour()
+        {
+            switch ( Utility.Random( 4 ) )
+            {
+                case 0:    return PlantType.CypressStraight;
+                case 1: return PlantType.HedgeTall;
+                case 2: return PlantType.HopsSouth;
+                default: return PlantType.SugarCanes;
+            }
+        }
+                
         public static PlantType RandomBonsai( double increaseRatio )
         {
             /* Chances of each plant type are equal to the chances of the previous plant type * increaseRatio:
@@ -152,6 +231,25 @@
         {
             switch ( plantType )
             {
+                case PlantType.Cactus:
+                case PlantType.FlaxFlowers:
+                case PlantType.FoxgloveFlowers:
+                case PlantType.HopsEast:
+                case PlantType.OrfluerFlowers:
+                case PlantType.CypressTwisted:
+                case PlantType.HedgeShort:
+                case PlantType.JuniperBush:
+                case PlantType.SnowdropPatch:
+                case PlantType.Cattails:
+                case PlantType.PoppyPatch:
+                case PlantType.SpiderTree:
+                case PlantType.WaterLily:
+                case PlantType.CypressStraight:
+                case PlantType.HedgeTall:
+                case PlantType.HopsSouth:
+                case PlantType.SugarCanes:
+                    return 1080528; // peculiar
+
                 case PlantType.CommonGreenBonsai:
                 case PlantType.CommonPinkBonsai:
                     return 1063335; // common
@@ -203,4 +301,4 @@
             m_Crossable = crossable;
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Engines/Plants/Seed.cs
===================================================================
--- Scripts/Engines/Plants/Seed.cs    (revision 337)
+++ Scripts/Engines/Plants/Seed.cs    (working copy)
@@ -56,6 +56,17 @@
             return new Seed( PlantTypeInfo.RandomBonsai( increaseRatio ), PlantHue.Plain, false );
         }
 
+        public static Seed RandomPeculiarSeed( int group )
+        {
+            switch ( group )
+            {
+                case 1: return new Seed ( PlantTypeInfo.RandomPeculiarGroupOne(), PlantHue.Plain, false );
+                case 2: return new Seed ( PlantTypeInfo.RandomPeculiarGroupTwo(), PlantHue.Plain, false );
+                case 3: return new Seed ( PlantTypeInfo.RandomPeculiarGroupThree(), PlantHue.Plain, false );
+                default: return new Seed ( PlantTypeInfo.RandomPeculiarGroupFour(), PlantHue.Plain, false );
+            }
+        }
+
         [Constructable]
         public Seed() : this( PlantTypeInfo.RandomFirstGeneration(), PlantHueInfo.RandomFirstGeneration(), false )
         {
@@ -187,4 +198,4 @@
                 Weight = 1.0;
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Engines/Plants/PlantItem.cs
===================================================================
--- Scripts/Engines/Plants/PlantItem.cs    (revision 337)
+++ Scripts/Engines/Plants/PlantItem.cs    (working copy)
@@ -259,23 +259,38 @@
 
                 if ( m_PlantStatus < PlantStatus.DecorativePlant )
                 {
-                    string args = string.Format( "#{0}\t#{1}\t#{2}", m_PlantSystem.GetLocalizedHealth(), title, typeInfo.Name );
-
-                    if ( typeInfo.ContainsPlant )
+                    if ( m_PlantType == PlantType.SugarCanes )
                     {
-                        // a ~1_HEALTH~ [bright] ~2_COLOR~ ~3_NAME~
-                        list.Add( hueInfo.IsBright() ? 1061891 : 1061889, args );
+                        string args = string.Format( "#{0}", m_PlantSystem.GetLocalizedHealth() );
+                        list.Add ( 1094702, args );
                     }
                     else
                     {
-                        // a ~1_HEALTH~ [bright] ~2_COLOR~ ~3_NAME~ plant
-                        list.Add( hueInfo.IsBright() ? 1061892 : 1061890, args );
+
+                        string args = string.Format( "#{0}\t#{1}\t#{2}", m_PlantSystem.GetLocalizedHealth(), title, typeInfo.Name );
+
+                        if ( typeInfo.ContainsPlant )
+                        {
+                            // a ~1_HEALTH~ [bright] ~2_COLOR~ ~3_NAME~
+                            list.Add( hueInfo.IsBright() ? 1061891 : 1061889, args );
+                        }
+                        else
+                        {
+                            // a ~1_HEALTH~ [bright] ~2_COLOR~ ~3_NAME~ plant
+                            list.Add( hueInfo.IsBright() ? 1061892 : 1061890, args );
+                        }
                     }
                 }
                 else
                 {
-                    // a decorative ~1_COLOR~ ~2_TYPE~ plant
-                    list.Add( hueInfo.IsBright() ? 1074267 : 1070973, string.Format( "#{0}\t#{1}", title, typeInfo.Name ) );
+                    if ( m_PlantType == PlantType.SugarCanes )
+                        list.Add ( 1094703 );
+                    else if ( title == 1080528 )
+                             // a decorative ~2_TYPE~
+                        list.Add( 1080539, string.Format( "#{0}\t#{1}", title, typeInfo.Name ) );
+                    else
+                        // a decorative ~1_COLOR~ ~2_TYPE~ plant
+                        list.Add( hueInfo.IsBright() ? 1074267 : 1070973, string.Format( "#{0}\t#{1}", title, typeInfo.Name ) );
                 }
             }
             else if ( m_PlantStatus >= PlantStatus.Seed )
@@ -586,4 +601,4 @@
             m_Instances.Remove( this );
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Animals/Mounts/Hiryu.cs
===================================================================
--- Scripts/Mobiles/Animals/Mounts/Hiryu.cs    (revision 337)
+++ Scripts/Mobiles/Animals/Mounts/Hiryu.cs    (working copy)
@@ -110,6 +110,9 @@
 
             if( Utility.RandomDouble() < .33 )
                 PackItem( Engines.Plants.Seed.RandomBonsaiSeed() );
+
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(3) );
         }
 
 
Index: Scripts/Mobiles/Monsters/LBR/Jukas/JukaMage.cs
===================================================================
--- Scripts/Mobiles/Monsters/LBR/Jukas/JukaMage.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/LBR/Jukas/JukaMage.cs    (working copy)
@@ -64,6 +64,9 @@
 
             PackItem( new ArcaneGem() );
 
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(4) );
+
             m_NextAbilityTime = DateTime.Now + TimeSpan.FromSeconds( Utility.RandomMinMax( 2, 5 ) );
         }
 
Index: Scripts/Mobiles/Monsters/Humanoid/Magic/Titan.cs
===================================================================
--- Scripts/Mobiles/Monsters/Humanoid/Magic/Titan.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/Humanoid/Magic/Titan.cs    (working copy)
@@ -40,6 +40,10 @@
             Karma = -11500;
 
             VirtualArmor = 40;
+
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(1) );
+
         }
 
         public override void GenerateLoot()
@@ -69,4 +73,4 @@
             int version = reader.ReadInt();
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Monsters/Humanoid/Melee/Mummy.cs
===================================================================
--- Scripts/Mobiles/Monsters/Humanoid/Melee/Mummy.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/Humanoid/Melee/Mummy.cs    (working copy)
@@ -41,6 +41,9 @@
 
             VirtualArmor = 50;
 
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(2) );
+
             PackItem( new Garlic( 5 ) );
             PackItem( new Bandage( 10 ) );
         }
@@ -76,4 +79,4 @@
             int version = reader.ReadInt();
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Monsters/Reptile/Magic/SerpentineDragon.cs
===================================================================
--- Scripts/Mobiles/Monsters/Reptile/Magic/SerpentineDragon.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/Reptile/Magic/SerpentineDragon.cs    (working copy)
@@ -42,6 +42,9 @@
             Karma = 15000;
 
             VirtualArmor = 36;
+
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(2) );
         }
 
         public override void GenerateLoot()
@@ -120,4 +123,4 @@
             int version = reader.ReadInt();
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Monsters/Ants/AntLion.cs
===================================================================
--- Scripts/Mobiles/Monsters/Ants/AntLion.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/Ants/AntLion.cs    (working copy)
@@ -44,6 +44,9 @@
             PackItem( new Bone( 3 ) );
             PackItem( new FertileDirt( Utility.RandomMinMax( 1, 5 ) ) );
 
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(2) );
+
             switch ( Utility.Random( 4 ) )
             {
                 case 0: PackItem( new DullCopperOre( Utility.RandomMinMax( 1, 10 ) ) ); break;
@@ -102,4 +105,4 @@
             int version = reader.ReadInt();
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Monsters/SE/TsukiWolf.cs
===================================================================
--- Scripts/Mobiles/Monsters/SE/TsukiWolf.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/SE/TsukiWolf.cs    (working copy)
@@ -47,6 +47,8 @@
             Fame = 8500;
             Karma = -8500;
 
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(1) );
 
 
             switch( Utility.Random( 10 ) )
@@ -189,4 +191,4 @@
             return 0x52A;
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Monsters/SE/Kappa.cs
===================================================================
--- Scripts/Mobiles/Monsters/SE/Kappa.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/SE/Kappa.cs    (working copy)
@@ -48,6 +48,8 @@
                     case 2: PackItem( new Axle() ); break;
                 }
             }
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(4) );
 
 
         }
Index: Scripts/Mobiles/Monsters/Arachnid/Melee/TerathanWarrior.cs
===================================================================
--- Scripts/Mobiles/Monsters/Arachnid/Melee/TerathanWarrior.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/Arachnid/Melee/TerathanWarrior.cs    (working copy)
@@ -41,6 +41,9 @@
             Karma = -4000;
 
             VirtualArmor = 30;
+
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(3) );
         }
 
         public override void GenerateLoot()
@@ -72,4 +75,4 @@
             int version = reader.ReadInt();
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Monsters/Misc/Magic/Wisp.cs
===================================================================
--- Scripts/Mobiles/Monsters/Misc/Magic/Wisp.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/Misc/Magic/Wisp.cs    (working copy)
@@ -51,6 +51,9 @@
 
             VirtualArmor = 40;
 
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(3) );
+
             AddItem( new LightSource() );
         }
 
@@ -81,4 +84,4 @@
             int version = reader.ReadInt();
         }
     }
-}
\ No newline at end of file
+}
Index: Scripts/Mobiles/Monsters/Misc/Melee/PlagueBeast.cs
===================================================================
--- Scripts/Mobiles/Monsters/Misc/Melee/PlagueBeast.cs    (revision 337)
+++ Scripts/Mobiles/Monsters/Misc/Melee/PlagueBeast.cs    (working copy)
@@ -40,6 +40,9 @@
 
             VirtualArmor = 30;
             PackArmor( 1, 5 );
+
+            if ( Core.ML && Utility.RandomDouble() < .33 )
+                PackItem( Engines.Plants.Seed.RandomPeculiarSeed(4) );
         }
 
         public override void GenerateLoot()
@@ -121,4 +124,4 @@
             int version = reader.ReadInt();
         }
     }
-}
\ No newline at end of file
+}
 

Attachments

  • plants5.diff
    14.1 KB · Views: 4

uome

Bug Hunter
Re: [Missing Feature (patch available)] 15 new growable plants

Just tested this new version.

There are a few tweaks to be done on the plant gumps still (sorry Gisela)
water lilly, slightly too high
hops both types, slightly too low
snowdrops, slightly off center (too far right)
tall hedge, slightly too low
I know thats really fussy but i would rather see it perfect.

Appart from that there is a bigger issue.
I'm getting client crahses that seem to be related to opening the cypres tree gumps, i had FE online at the time helping me and he couldn't get any crashes. I'll try and get other people and different clients and accounts to check it tomorow, Hopefully it's just my client being silly *crosses fingers*
This may help http://img110.imageshack.us/img110/5485/image1nuz.png something seems to be pushing cpu usage up realy high. It may be realted to the multiple gumps issue i reported HERE

If that turns out just to be an issue with my client then onces the gumps are tweaked its good to go.
 

Gisela

Bug Hunter
Re: [Missing Feature (patch available)] 15 new growable plants

uome;580956 said:
Just tested this new version.

There are a few tweaks to be done on the plant gumps still (sorry Gisela)
water lilly, slightly too high
hops both types, slightly too low
snowdrops, slightly off center (too far right)
tall hedge, slightly too low
I know thats really fussy but i would rather see it perfect.
This is just a matter of twiddling the x/y offset values in the planttype table. The 0,0 here:


+ new PlantTypeInfo( 0x1A9F, 0, 0, PlantType.HopsEast, false, false, false ),


And it is beyond tedious ;p
 

Athena

Account Terminated
Re: [IN DEVELOPMENT] 15 new growable plants

Any intentions of finishing this one? If not I'll move back to coder needed.
 
Status
Not open for further replies.
Top