aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <none@none>2010-09-15 10:44:38 +0200
committerShauren <none@none>2010-09-15 10:44:38 +0200
commit9d9f18f9d28b496312c13d7e639c244b8fc33f3a (patch)
treedd0f59b3e921c3f5caa84eb7a2b2511cb4af51a4
parent48786f29963d2977a441e615ccaffe87cb627341 (diff)
Core/Loot: Add new config option "Rate.Drop.Item.ReferencedAmount" which allows multiplication of referenced loot count
Closes issue #814. --HG-- branch : trunk
-rw-r--r--src/server/game/Loot/LootMgr.cpp3
-rw-r--r--src/server/game/World/World.cpp1
-rw-r--r--src/server/game/World/World.h1
-rw-r--r--src/server/worldserver/worldserver.conf.dist1
4 files changed, 5 insertions, 1 deletions
diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp
index cf76cd4036d..d7a1791a7be 100644
--- a/src/server/game/Loot/LootMgr.cpp
+++ b/src/server/game/Loot/LootMgr.cpp
@@ -1231,7 +1231,8 @@ void LootTemplate::Process(Loot& loot, LootStore const& store, bool rate, uint16
if (!Referenced)
continue; // Error message already printed at loading stage
- for (uint32 loop = 0; loop < i->maxcount; ++loop) // Ref multiplicator
+ uint32 maxcount = uint32(float(i->maxcount) * sWorld.getRate(RATE_DROP_ITEM_REFERENCED_AMOUNT));
+ for (uint32 loop = 0; loop < maxcount; ++loop) // Ref multiplicator
Referenced->Process(loot, store, rate, lootMode, i->group);
}
else // Plain entries (not a reference, not grouped)
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 5b8f849eefb..f621fc921cc 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -466,6 +466,7 @@ void World::LoadConfigSettings(bool reload)
rate_values[RATE_DROP_ITEM_LEGENDARY] = sConfig.GetFloatDefault("Rate.Drop.Item.Legendary", 1.0f);
rate_values[RATE_DROP_ITEM_ARTIFACT] = sConfig.GetFloatDefault("Rate.Drop.Item.Artifact", 1.0f);
rate_values[RATE_DROP_ITEM_REFERENCED] = sConfig.GetFloatDefault("Rate.Drop.Item.Referenced", 1.0f);
+ rate_values[RATE_DROP_ITEM_REFERENCED_AMOUNT] = sConfig.GetFloatDefault("Rate.Drop.Item.ReferencedAmount", 1.0f);
rate_values[RATE_DROP_MONEY] = sConfig.GetFloatDefault("Rate.Drop.Money", 1.0f);
rate_values[RATE_XP_KILL] = sConfig.GetFloatDefault("Rate.XP.Kill", 1.0f);
rate_values[RATE_XP_QUEST] = sConfig.GetFloatDefault("Rate.XP.Quest", 1.0f);
diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
index 3aaca395b31..e273fc80e8a 100644
--- a/src/server/game/World/World.h
+++ b/src/server/game/World/World.h
@@ -329,6 +329,7 @@ enum Rates
RATE_DROP_ITEM_LEGENDARY,
RATE_DROP_ITEM_ARTIFACT,
RATE_DROP_ITEM_REFERENCED,
+ RATE_DROP_ITEM_REFERENCED_AMOUNT,
RATE_DROP_MONEY,
RATE_XP_KILL,
RATE_XP_QUEST,
diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
index 5ca4bf7a53e..451ab7efb9b 100644
--- a/src/server/worldserver/worldserver.conf.dist
+++ b/src/server/worldserver/worldserver.conf.dist
@@ -1665,6 +1665,7 @@ Rate.Drop.Item.Epic = 1
Rate.Drop.Item.Legendary = 1
Rate.Drop.Item.Artifact = 1
Rate.Drop.Item.Referenced = 1
+Rate.Drop.Item.ReferencedAmount = 1
Rate.Drop.Money = 1
Rate.XP.Kill = 1
Rate.XP.Quest = 1