So I couldn't find any information on this out in the world wide web and was wondering if any of you osi-goers knew the rough drop rates for crystalline blackrock from Ratmen & Ore Eles & Ter-Mur Mining?
 
Mining drop method

Code:
if ( Core.ML )
			{
				oreAndStone.BonusResources = new BonusHarvestResource[]
				{
new BonusHarvestResource( 0, 99.3, null, null ),	//Nothing      99.3****************this number is important
new BonusHarvestResource( 100, .1, 1072562, typeof( BlueDiamond ) ),
new BonusHarvestResource( 100, .1, 1072567, typeof( DarkSapphire ) ),
new BonusHarvestResource( 100, .1, 1072570, typeof( EcruCitrine ) ),
new BonusHarvestResource( 100, .1, 1072564, typeof( FireRuby ) ),
new BonusHarvestResource( 100, .1, 1072566, typeof( PerfectEmerald ) ),
new BonusHarvestResource( 100, .1, 1072568, typeof( Turquoise ) ),
				};
//SA
if (OreAndStoneMap == Server.Map.TerMur)
{
new BonusHarvestResource(100, 0.1, 1113799, typeof(CrystallineBlackrock));
}
else
new BonusHarvestResource(100, 0.1, 1072568, typeof( Turquoise ) ),
 
			}
//End SA
Ore Elementals I made Valorite drop 10% time, Verite 9% time, Agapite 8% and so on...

From my ValoriteElemental.cs
Code:
publicoverridevoid OnDeath(Container c)
{
base.OnDeath(c);
if (Utility.RandomDouble() < 0.1)
c.DropItem(new CrystallineBlackrock());
}
 
Last edited:
Thanks very much! Seems like a fair drop rate, i'll monitor this and see how it goes.
I've added the drop rate at 1% for all the Clan ratmen, it might need to be upped but due to the high volume of them I guess not.
 
if (OreAndStoneMap == Server.Map.TerMur)
Is there a way to check for Map in the bonus harvest resources section? I've tried a variety of combination to no avail.

I realise this has become less discussion and more script support now. Apologies :/ - (Mods, feel free to move this one)
 
Code:
if (item.Stackable)
                        {
                            int amount = def.ConsumedPerHarvest;
                            int feluccaAmount = def.ConsumedPerFeluccaHarvest;

                            int racialAmount = (int)Math.Ceiling(amount * 1.1);
                            int feluccaRacialAmount = (int)Math.Ceiling(feluccaAmount * 1.1);

                            bool eligableForRacialBonus = (def.RaceBonus && from.Race == Race.Human);
                            bool inFelucca = (map == Map.Felucca);

                            if (eligableForRacialBonus && inFelucca && bank.Current >= feluccaRacialAmount && 0.1 > Utility.RandomDouble())
                                item.Amount = feluccaRacialAmount;
                            else if (inFelucca && bank.Current >= feluccaAmount)
                                item.Amount = feluccaAmount;
                            else if (eligableForRacialBonus && bank.Current >= racialAmount && 0.1 > Utility.RandomDouble())
                                item.Amount = racialAmount;
                            else
                                item.Amount = amount;
                        }

This is the code that changes the amount of resources you get in Fel so you can use something similar to make certain items drop in maps
 
Yeah I thought about editing that bit, there is also a section in HarvestDefiniton that could be changed to check for the map but it was hoping to avoid that and keep it all in the one place. *shrugs* I'll see what solution I can come up with and post it here for others.
 
could try something like this

Code:
 Region reg = Region.Find(c.GetWorldLocation(), c.Map);
            if (1.0 > Utility.RandomDouble() && reg.Name == "Fire Temple Ruins")

If you can set regional drops im sure you can tweak it to make it map bound.

Or

Code:
                        if (!Core.ML || this.Map == Map.Felucca)
                        {
                            new StarRoomGate(true, this.m_Altar.Location, this.m_Altar.Map);
                        }

Taken from championspawn
 
Ended up editing the section you originally suggested Omni
For anyone wishing to do this themselves;

In HarvestSystem.cs
find this section of code around line 169
Code:
                      if (item.Stackable)
                        {
                            int amount = def.ConsumedPerHarvest;
                            int feluccaAmount = def.ConsumedPerFeluccaHarvest;

                            int racialAmount = (int)Math.Ceiling(amount * 1.1);
                            int feluccaRacialAmount = (int)Math.Ceiling(feluccaAmount * 1.1);

                            bool eligableForRacialBonus = (def.RaceBonus && from.Race == Race.Human);
                            bool inFelucca = (map == Map.Felucca);

Then add the following underneath;
Code:
                           //Begin edit for CrystallineBlackrock
                            if (map == Map.TerMur && (0.01 >= Utility.RandomDouble() && (from.Skills.Mining.Value >= 100) && (def.Veins == Harvest.Mining.System.OreAndStone.Veins))) // 1 in 100 chance
                            {
                                if (from.TotalWeight < from.MaxWeight)
                                {
                                    from.AddToBackpack(new CrystallineBlackrock());
                                    from.SendMessage("You dig up some crystalline blackrock");
                                }

                                else
                                {
                                    from.SendMessage("You attempted to dig up some crystalline blackrock but your backpack was full");
                                }
                             
                            }
                            //end edit for CrystallineBlackrock
 
Last edited:
Ended up editing the section you originally suggested Omni
For anyone wishing to do this themselves;

In HarvestSystem.cs
find this section of code around line 169
Code:
                      if (item.Stackable)
                        {
                            int amount = def.ConsumedPerHarvest;
                            int feluccaAmount = def.ConsumedPerFeluccaHarvest;
 
                            int racialAmount = (int)Math.Ceiling(amount * 1.1);
                            int feluccaRacialAmount = (int)Math.Ceiling(feluccaAmount * 1.1);
 
                            bool eligableForRacialBonus = (def.RaceBonus && from.Race == Race.Human);
                            bool inFelucca = (map == Map.Felucca);

Then add the following underneath;
Code:
                           //Begin edit for CrystallineBlackrock
                            if (map == Map.TerMur && (0.01 >= Utility.RandomDouble() && (from.Skills.Mining.Value >= 100))) // 1 in 100 chance
                            {
                                if (from.TotalWeight < from.MaxWeight)
                                {
                                    from.AddToBackpack(new CrystallineBlackrock());
                                    from.SendMessage("You dig up some crystalline blackrock");
                                }
 
                                else
                                {
                                    from.SendMessage("You attempted to dig up some crystalline blackrock but your backpack was full");
                                }
                              
                            }
                            //end edit for CrystallineBlackrock
Curious does this need to check if you are mining oreandstone tiles, meaning will you have a chance to find crystallineblackrock while mining for sand
 
Thanks for pointing this out!
I've updated the other post with the following;
Code:
 if (map == Map.TerMur && (0.01 >= Utility.RandomDouble() && (from.Skills.Mining.Value >= 100) && (def.Veins == Harvest.Mining.System.OreAndStone.Veins))) // 1 in 100 chance
 
Back