feat(Core/Config): Configurable buy/sell rates (#2763)

This commit is contained in:
Dresmyr
2020-04-27 15:20:34 -04:00
committed by GitHub
parent e4b0a54b82
commit f1b44029c8
4 changed files with 93 additions and 2 deletions

View File

@@ -2314,8 +2314,8 @@ void ObjectMgr::LoadItemTemplates()
itemTemplate.Flags = fields[7].GetUInt32();
itemTemplate.Flags2 = fields[8].GetUInt32();
itemTemplate.BuyCount = uint32(fields[9].GetUInt8());
itemTemplate.BuyPrice = int32(fields[10].GetInt64());
itemTemplate.SellPrice = fields[11].GetUInt32();
itemTemplate.BuyPrice = int32(fields[10].GetInt64() * sWorld->getRate((Rates)(RATE_BUYVALUE_ITEM_POOR + itemTemplate.Quality)));
itemTemplate.SellPrice = uint32(fields[11].GetUInt32() * sWorld->getRate((Rates)(RATE_SELLVALUE_ITEM_POOR + itemTemplate.Quality)));
itemTemplate.InventoryType = uint32(fields[12].GetUInt8());
itemTemplate.AllowableClass = fields[13].GetInt32();
itemTemplate.AllowableRace = fields[14].GetInt32();

View File

@@ -546,6 +546,25 @@ void World::LoadConfigSettings(bool reload)
rate_values[RATE_XP_QUEST] = sConfigMgr->GetFloatDefault("Rate.XP.Quest", 1.0f);
rate_values[RATE_XP_EXPLORE] = sConfigMgr->GetFloatDefault("Rate.XP.Explore", 1.0f);
rate_values[RATE_REPAIRCOST] = sConfigMgr->GetFloatDefault("Rate.RepairCost", 1.0f);
rate_values[RATE_SELLVALUE_ITEM_POOR] = sConfigMgr->GetFloatDefault("Rate.SellValue.Item.Poor", 1.0f);
rate_values[RATE_SELLVALUE_ITEM_NORMAL] = sConfigMgr->GetFloatDefault("Rate.SellValue.Item.Normal", 1.0f);
rate_values[RATE_SELLVALUE_ITEM_UNCOMMON] = sConfigMgr->GetFloatDefault("Rate.SellValue.Item.Uncommon", 1.0f);
rate_values[RATE_SELLVALUE_ITEM_RARE] = sConfigMgr->GetFloatDefault("Rate.SellValue.Item.Rare", 1.0f);
rate_values[RATE_SELLVALUE_ITEM_EPIC] = sConfigMgr->GetFloatDefault("Rate.SellValue.Item.Epic", 1.0f);
rate_values[RATE_SELLVALUE_ITEM_LEGENDARY] = sConfigMgr->GetFloatDefault("Rate.SellValue.Item.Legendary", 1.0f);
rate_values[RATE_SELLVALUE_ITEM_ARTIFACT] = sConfigMgr->GetFloatDefault("Rate.SellValue.Item.Artifact", 1.0f);
rate_values[RATE_SELLVALUE_ITEM_HEIRLOOM] = sConfigMgr->GetFloatDefault("Rate.SellValue.Item.Heirloom", 1.0f);
rate_values[ RATE_BUYVALUE_ITEM_POOR] = sConfigMgr->GetFloatDefault("Rate.BuyValue.Item.Poor", 1.0f);
rate_values[ RATE_BUYVALUE_ITEM_NORMAL] = sConfigMgr->GetFloatDefault("Rate.BuyValue.Item.Normal", 1.0f);
rate_values[ RATE_BUYVALUE_ITEM_UNCOMMON] = sConfigMgr->GetFloatDefault("Rate.BuyValue.Item.Uncommon", 1.0f);
rate_values[ RATE_BUYVALUE_ITEM_RARE] = sConfigMgr->GetFloatDefault("Rate.BuyValue.Item.Rare", 1.0f);
rate_values[ RATE_BUYVALUE_ITEM_EPIC] = sConfigMgr->GetFloatDefault("Rate.BuyValue.Item.Epic", 1.0f);
rate_values[ RATE_BUYVALUE_ITEM_LEGENDARY] = sConfigMgr->GetFloatDefault("Rate.BuyValue.Item.Legendary", 1.0f);
rate_values[RATE_BUYVALUE_ITEM_ARTIFACT] = sConfigMgr->GetFloatDefault("Rate.BuyValue.Item.Artifact", 1.0f);
rate_values[RATE_BUYVALUE_ITEM_HEIRLOOM] = sConfigMgr->GetFloatDefault("Rate.BuyValue.Item.Heirloom", 1.0f);
if (rate_values[RATE_REPAIRCOST] < 0.0f)
{
sLog->outError("Rate.RepairCost (%f) must be >=0. Using 0.0 instead.", rate_values[RATE_REPAIRCOST]);

View File

@@ -377,6 +377,22 @@ enum Rates
RATE_DROP_ITEM_ARTIFACT,
RATE_DROP_ITEM_REFERENCED,
RATE_DROP_ITEM_REFERENCED_AMOUNT,
RATE_SELLVALUE_ITEM_POOR,
RATE_SELLVALUE_ITEM_NORMAL,
RATE_SELLVALUE_ITEM_UNCOMMON,
RATE_SELLVALUE_ITEM_RARE,
RATE_SELLVALUE_ITEM_EPIC,
RATE_SELLVALUE_ITEM_LEGENDARY,
RATE_SELLVALUE_ITEM_ARTIFACT,
RATE_SELLVALUE_ITEM_HEIRLOOM,
RATE_BUYVALUE_ITEM_POOR,
RATE_BUYVALUE_ITEM_NORMAL,
RATE_BUYVALUE_ITEM_UNCOMMON,
RATE_BUYVALUE_ITEM_RARE,
RATE_BUYVALUE_ITEM_EPIC,
RATE_BUYVALUE_ITEM_LEGENDARY,
RATE_BUYVALUE_ITEM_ARTIFACT,
RATE_BUYVALUE_ITEM_HEIRLOOM,
RATE_DROP_MONEY,
RATE_XP_KILL,
RATE_XP_BG_KILL,

View File

@@ -2307,6 +2307,62 @@ Rate.Drop.Item.Artifact = 1
Rate.Drop.Item.Referenced = 1
Rate.Drop.Money = 1
#
# Rate.SellValue.Item.Poor
# Rate.SellValue.Item.Normal
# Rate.SellValue.Item.Uncommon
# Rate.SellValue.Item.Rare
# Rate.SellValue.Item.Epic
# Rate.SellValue.Item.Legendary
# Rate.SellValue.Item.Artifact
# Rate.SellValue.Item.Heirloom
# Description: Item Sale Value rates based on quality.
# Default: 1 - (Rate.SellValue.Item.Poor)
# 1 - (Rate.SellValue.Item.Normal)
# 1 - (Rate.SellValue.Item.Uncommon)
# 1 - (Rate.SellValue.Item.Rare)
# 1 - (Rate.SellValue.Item.Epic)
# 1 - (Rate.SellValue.Item.Legendary)
# 1 - (Rate.SellValue.Item.Artifact)
# 1 - (Rate.SellValue.Item.Heirloom)
Rate.SellValue.Item.Poor = 1
Rate.SellValue.Item.Normal = 1
Rate.SellValue.Item.Uncommon = 1
Rate.SellValue.Item.Rare = 1
Rate.SellValue.Item.Epic = 1
Rate.SellValue.Item.Legendary = 1
Rate.SellValue.Item.Artifact = 1
Rate.SellValue.Item.Heirloom = 1
#
# Rate.BuyValue.Item.Poor
# Rate.BuyValue.Item.Normal
# Rate.BuyValue.Item.Uncommon
# Rate.BuyValue.Item.Rare
# Rate.BuyValue.Item.Epic
# Rate.BuyValue.Item.Legendary
# Rate.BuyValue.Item.Artifact
# Rate.BuyValue.Item.Heirloom
# Description: Item Sale Value rates based on quality.
# Default: 1 - (Rate.BuyValue.Item.Poor)
# 1 - (Rate.BuyValue.Item.Normal)
# 1 - (Rate.BuyValue.Item.Uncommon)
# 1 - (Rate.BuyValue.Item.Rare)
# 1 - (Rate.BuyValue.Item.Epic)
# 1 - (Rate.BuyValue.Item.Legendary)
# 1 - (Rate.BuyValue.Item.Artifact)
# 1 - (Rate.BuyValue.Item.Heirloom)
Rate.BuyValue.Item.Poor = 1
Rate.BuyValue.Item.Normal = 1
Rate.BuyValue.Item.Uncommon = 1
Rate.BuyValue.Item.Rare = 1
Rate.BuyValue.Item.Epic = 1
Rate.BuyValue.Item.Legendary = 1
Rate.BuyValue.Item.Artifact = 1
Rate.BuyValue.Item.Heirloom = 1
#
# Rate.Drop.Item.ReferencedAmount
# Description: Multiplier for referenced loot amount.