diff --git a/src/game/Object/GameObject.cpp b/src/game/Object/GameObject.cpp index 4d15261b..c33b6794 100644 --- a/src/game/Object/GameObject.cpp +++ b/src/game/Object/GameObject.cpp @@ -1752,7 +1752,45 @@ void GameObject::RollIfMineralVein() uint32 GameObject::RollMineralVein(uint32 entry) //Maybe incedicite bloodstone and indurium have alternate spawns? { uint32 entrynew = entry; - switch (entry) + + if ((GetZoneId() == 46) || (GetZoneId() == 51)) // each node in searing gorge or burning steppes is able to spawn dark iron + { + if (urand (0, 100) < sWorld.getConfig(CONFIG_UINT32_RATE_MINING_DARKIRON)) + entrynew = 165658; + return entrynew; + } + + if (urand (0, 100) < sWorld.getConfig(CONFIG_UINT32_RATE_MINING_LOWER)) // beside silver all base ores have the possibility to spawn the lower base ore type so rol for lower version spawn + { + switch (entry) + { + case 1735: // Iron can spawn Tin + entry = 1732; + break; + case 2040: // Mithril can spawn Iron + entry = 1735; + break; + case 123310: // Ooze covered mithril can spawn ooze covered iron + entry = 73939; + break; + case 324: // small thorium Vein can spawn Mithril + entry = 2040; + break; + case 123848: // ooze covered thorium Vein can spawn ooze covered mithril + entry = 123310; + break; + case 175404: // Rich thorium Vein can spawn small Thorium vein + entry = 324; + break; + case 177388: // ooze covered Rich thorium Vein can spawn ooze covered thorium + entry = 123848; + break; + default: //default case for copper, tin or not listet special veins + break; + } + } + + switch (entry) // Now roll for rare spawn { case 1732: // Tin can spawn Silver if (urand (0, 100) < sWorld.getConfig(CONFIG_UINT32_RATE_MINING_RARE)) @@ -1768,14 +1806,7 @@ uint32 GameObject::RollMineralVein(uint32 entry) //Maybe incedicite bloodst break; case 2040: // Mithril can spawn Truesilver if (urand (0, 100) < sWorld.getConfig(CONFIG_UINT32_RATE_MINING_RARE)) - { entrynew = 2047; - if ((GetZoneId() == 46) || (GetZoneId() == 51)) // roll for darkiron spawn in burning steppes and searing gorge - { - if (urand (0,3) < 1) - entrynew = 165658; - } - } break; case 123310: // Ooze covered mithril can spawn ooze covered truesilver if (urand (0, 100) < sWorld.getConfig(CONFIG_UINT32_RATE_MINING_RARE)) diff --git a/src/game/WorldHandlers/World.cpp b/src/game/WorldHandlers/World.cpp index 044147f4..009922c6 100644 --- a/src/game/WorldHandlers/World.cpp +++ b/src/game/WorldHandlers/World.cpp @@ -443,7 +443,9 @@ void World::LoadConfigSettings(bool reload) setConfig(CONFIG_FLOAT_RATE_HONOR, "Rate.Honor", 1.0f); setConfigPos(CONFIG_FLOAT_RATE_MINING_AMOUNT, "Rate.Mining.Amount", 1.0f); setConfigPos(CONFIG_FLOAT_RATE_MINING_NEXT, "Rate.Mining.Next", 1.0f); + setConfig(CONFIG_UINT32_RATE_MINING_LOWER, "Rate.Mining.Lower", 50); setConfig(CONFIG_UINT32_RATE_MINING_RARE, "Rate.Mining.Rare", 20); + setConfig(CONFIG_UINT32_RATE_MINING_DARKIRON, "Rate.Mining.Dakriron", 10); //setConfig(CONFIG_UINT32_RATE_MINING_AUTOPOOLING, "Rate.Mining.Autopooling", 90); setConfigPos(CONFIG_FLOAT_RATE_INSTANCE_RESET_TIME, "Rate.InstanceResetTime", 1.0f); setConfigPos(CONFIG_FLOAT_RATE_TALENT, "Rate.Talent", 1.0f); diff --git a/src/game/WorldHandlers/World.h b/src/game/WorldHandlers/World.h index 506d95a9..4ba1f4a2 100644 --- a/src/game/WorldHandlers/World.h +++ b/src/game/WorldHandlers/World.h @@ -139,7 +139,9 @@ enum eConfigUInt32Values CONFIG_UINT32_MASS_MAILER_SEND_PER_TICK, CONFIG_UINT32_UPTIME_UPDATE, CONFIG_UINT32_AUCTION_DEPOSIT_MIN, + CONFIG_UINT32_RATE_MINING_LOWER, CONFIG_UINT32_RATE_MINING_RARE, + CONFIG_UINT32_RATE_MINING_DARKIRON, //CONFIG_UINT32_RATE_MINING_AUTOPOOLING, CONFIG_UINT32_SKILL_CHANCE_ORANGE, CONFIG_UINT32_SKILL_CHANCE_YELLOW, diff --git a/src/mangosd/mangosd.conf.dist.in b/src/mangosd/mangosd.conf.dist.in index 8038d202..40d98569 100644 --- a/src/mangosd/mangosd.conf.dist.in +++ b/src/mangosd/mangosd.conf.dist.in @@ -1265,8 +1265,12 @@ Visibility.AIRelocationNotifyDelay = 1000 # Mining Rates (Mining.Amount changes minimum/maximum usetimes of a deposit, # Mining.Next changes chance to have next use of a deposit) # +# Rate.Mining.Lower +# Spawn percentage of lower mineral base ores # Rate.Mining.Rare # Spawn percentage of rare mineral nodes +# Rate.Mining.Darkiron +# Spawn percentage Darkiron in Burning Steppes and Searing Gorge # Autopooling.Mining.Enable # Increases server startup can be disabled for testing purposes when fast server restart is demanded # 0 = Disabled (default) @@ -1402,7 +1406,9 @@ Auction.Deposit.Min = 0 Rate.Honor = 1 Rate.Mining.Amount = 1 Rate.Mining.Next = 1 +Rate.Mining.Lower = 50 Rate.Mining.Rare = 20 +Rate.Mining.Darkiron = 10 Autopooling.Mining.Enable = 0 Rate.Mining.Autopooling = 90 Rate.Talent = 1