aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAriDEV <aridev666@gmail.com>2014-12-27 01:55:27 +0000
committerNayd <dnpd.dd@gmail.com>2014-12-27 01:55:27 +0000
commitae681a96ccf6ce746c2365b993681ec71ff632a7 (patch)
treeec4ce3781256e1fdf48fd4e7e4d7618a26e1cc1d /src
parent1f58c5313b6252d9dbe436f0539eb4a08056bcfb (diff)
Server/Currency: Implement Apexis Crystals
Diffstat (limited to 'src')
-rw-r--r--src/server/game/DataStores/DBCEnums.h1
-rw-r--r--src/server/game/Entities/Player/Player.cpp9
-rw-r--r--src/server/game/World/World.cpp14
-rw-r--r--src/server/game/World/World.h2
-rw-r--r--src/server/worldserver/worldserver.conf.dist16
5 files changed, 42 insertions, 0 deletions
diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h
index 9aefb440d98..3187b5f9f77 100644
--- a/src/server/game/DataStores/DBCEnums.h
+++ b/src/server/game/DataStores/DBCEnums.h
@@ -611,6 +611,7 @@ enum CurrencyTypes
CURRENCY_TYPE_VALOR_POINTS = 396,
CURRENCY_TYPE_CONQUEST_META_ARENA = 483,
CURRENCY_TYPE_CONQUEST_META_RBG = 484,
+ CURRENCY_TYPE_APEXIS_CRYSTALS = 823,
};
#endif
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 367f1f57d3a..9129aca8078 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -1039,6 +1039,7 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac
SetUInt32Value(PLAYER_FIELD_COINAGE, sWorld->getIntConfig(CONFIG_START_PLAYER_MONEY));
SetCurrency(CURRENCY_TYPE_HONOR_POINTS, sWorld->getIntConfig(CONFIG_CURRENCY_START_HONOR_POINTS));
+ SetCurrency(CURRENCY_TYPE_APEXIS_CRYSTALS, sWorld->getIntConfig(CONFIG_CURRENCY_START_APEXIS_CRYSTALS));
SetCurrency(CURRENCY_TYPE_JUSTICE_POINTS, sWorld->getIntConfig(CONFIG_CURRENCY_START_JUSTICE_POINTS));
SetCurrency(CURRENCY_TYPE_CONQUEST_POINTS, sWorld->getIntConfig(CONFIG_CURRENCY_START_CONQUEST_POINTS));
@@ -7302,6 +7303,7 @@ uint32 Player::GetCurrencyWeekCap(CurrencyTypesEntry const* currency) const
uint32 Player::GetCurrencyTotalCap(CurrencyTypesEntry const* currency) const
{
+ // @TODO: Possibly use caps from CurrencyTypes.dbc
uint32 cap = currency->MaxQty;
switch (currency->ID)
@@ -7313,6 +7315,13 @@ uint32 Player::GetCurrencyTotalCap(CurrencyTypesEntry const* currency) const
cap = honorcap;
break;
}
+ case CURRENCY_TYPE_APEXIS_CRYSTALS:
+ {
+ uint32 apexiscap = sWorld->getIntConfig(CONFIG_CURRENCY_MAX_APEXIS_CRYSTALS);
+ if (apexiscap > 0)
+ cap = apexiscap;
+ break;
+ }
case CURRENCY_TYPE_JUSTICE_POINTS:
{
uint32 justicecap = sWorld->getIntConfig(CONFIG_CURRENCY_MAX_JUSTICE_POINTS);
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index eddad11e593..5c8706da09c 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -851,6 +851,20 @@ void World::LoadConfigSettings(bool reload)
}
m_int_configs[CONFIG_CURRENCY_MAX_HONOR_POINTS] *= 100; //precision mod
+ m_int_configs[CONFIG_CURRENCY_START_APEXIS_CRYSTALS] = sConfigMgr->GetIntDefault("Currency.StartApexisCrystals", 0);
+ if (int32(m_int_configs[CONFIG_CURRENCY_START_APEXIS_CRYSTALS]) < 0)
+ {
+ TC_LOG_ERROR("server.loading", "Currency.StartApexisCrystals (%i) must be >= 0, set to default 0.", m_int_configs[CONFIG_CURRENCY_START_APEXIS_CRYSTALS]);
+ m_int_configs[CONFIG_CURRENCY_START_APEXIS_CRYSTALS] = 0;
+ }
+ m_int_configs[CONFIG_CURRENCY_MAX_APEXIS_CRYSTALS] = sConfigMgr->GetIntDefault("Currency.MaxApexisCrystals", 20000);
+ if (int32(m_int_configs[CONFIG_CURRENCY_MAX_APEXIS_CRYSTALS]) < 0)
+ {
+ TC_LOG_ERROR("server.loading", "Currency.MaxApexisCrystals (%i) can't be negative. Set to default 20000.", m_int_configs[CONFIG_CURRENCY_MAX_APEXIS_CRYSTALS]);
+ m_int_configs[CONFIG_CURRENCY_MAX_APEXIS_CRYSTALS] = 20000;
+ }
+ m_int_configs[CONFIG_CURRENCY_MAX_APEXIS_CRYSTALS] *= 100; //precision mod
+
m_int_configs[CONFIG_CURRENCY_START_JUSTICE_POINTS] = sConfigMgr->GetIntDefault("Currency.StartJusticePoints", 0);
if (int32(m_int_configs[CONFIG_CURRENCY_START_JUSTICE_POINTS]) < 0)
{
diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
index 7f583da894b..8f77ab786c7 100644
--- a/src/server/game/World/World.h
+++ b/src/server/game/World/World.h
@@ -229,6 +229,8 @@ enum WorldIntConfigs
CONFIG_START_PLAYER_LEVEL,
CONFIG_START_HEROIC_PLAYER_LEVEL,
CONFIG_START_PLAYER_MONEY,
+ CONFIG_CURRENCY_START_APEXIS_CRYSTALS,
+ CONFIG_CURRENCY_MAX_APEXIS_CRYSTALS,
CONFIG_CURRENCY_START_JUSTICE_POINTS,
CONFIG_CURRENCY_MAX_JUSTICE_POINTS,
CONFIG_CURRENCY_START_HONOR_POINTS,
diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
index 11c081bea44..3e3a04aee55 100644
--- a/src/server/worldserver/worldserver.conf.dist
+++ b/src/server/worldserver/worldserver.conf.dist
@@ -3250,6 +3250,22 @@ Currency.StartHonorPoints = 0
Currency.MaxHonorPoints = 4000
#
+# Currency.StartApexisCrystals
+# Amount of Apexis Crystals that new players will start with
+# Default: 0 (with precision)
+#
+
+Currency.StartApexisCrystals = 0
+
+#
+# Currency.MaxApexisCrystals
+# Amount Apexis Crystals a player can have
+# Default: 20000
+#
+
+Currency.MaxApexisCrystals = 20000
+
+#
# Currency.StartJusticePoints
# Amount of justice points that new players will start with
# Default: 0 (with precision)