aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2020-04-03 17:41:48 +0200
committerShauren <shauren.trinity@gmail.com>2020-04-03 17:41:48 +0200
commit5526e14bcf1efe7a4b1f96760a1816d2e0e1c1b9 (patch)
tree48900b85a41907a03a3dbb95583e9c4adc9d26f3 /src
parentabe4d59526fe0e7d5a96810d44c7d17fd0d0afbd (diff)
Core/Entities: Fixed saving spawn difficulties to db for .npc add and .gob add (and other commands that modify creature/gameobject spawns table)
Diffstat (limited to 'src')
-rw-r--r--src/common/Utilities/Util.h17
-rw-r--r--src/server/game/Achievements/AchievementMgr.cpp1
-rw-r--r--src/server/game/AuctionHouse/AuctionHouseMgr.cpp1
-rw-r--r--src/server/game/DataStores/GameTables.cpp1
-rw-r--r--src/server/game/DungeonFinding/LFGMgr.cpp1
-rw-r--r--src/server/game/Entities/Corpse/Corpse.cpp1
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp16
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp16
-rw-r--r--src/server/game/Entities/Item/Item.cpp1
-rw-r--r--src/server/game/Entities/Pet/Pet.cpp1
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp1
-rw-r--r--src/server/game/Instances/InstanceScript.h1
-rw-r--r--src/server/game/Phasing/PhasingHandler.cpp1
-rw-r--r--src/server/game/Quests/QuestDef.cpp5
-rw-r--r--src/server/game/Warden/Warden.cpp9
15 files changed, 44 insertions, 29 deletions
diff --git a/src/common/Utilities/Util.h b/src/common/Utilities/Util.h
index 448612f340d..e47be23c95a 100644
--- a/src/common/Utilities/Util.h
+++ b/src/common/Utilities/Util.h
@@ -21,7 +21,6 @@
#include "Define.h"
#include "Errors.h"
#include <string>
-#include <sstream>
#include <vector>
class TC_COMMON_API Tokenizer
@@ -303,22 +302,6 @@ TC_COMMON_API void HexStrToByteArray(std::string const& str, uint8* out, bool re
TC_COMMON_API bool StringToBool(std::string const& str);
TC_COMMON_API float DegToRad(float degrees);
-template<class Container>
-std::string StringJoin(Container const& c, std::string delimiter)
-{
- if (c.empty())
- return "";
-
- std::ostringstream os;
- auto itr = c.begin();
- os << *itr++;
-
- for (; itr != c.end(); ++itr)
- os << delimiter << *itr;
-
- return os.str();
-}
-
// simple class for not-modifyable list
template <typename T>
class HookList final
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp
index 2d546a16909..77ed2075a33 100644
--- a/src/server/game/Achievements/AchievementMgr.cpp
+++ b/src/server/game/Achievements/AchievementMgr.cpp
@@ -33,6 +33,7 @@
#include "ObjectMgr.h"
#include "World.h"
#include "WorldSession.h"
+#include <sstream>
struct VisibleAchievementCheck
{
diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
index 72605d8bef6..0013e198828 100644
--- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
+++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
@@ -36,6 +36,7 @@
#include "World.h"
#include "WorldPacket.h"
#include "WorldSession.h"
+#include <sstream>
#include <vector>
enum eAuctionHouse
diff --git a/src/server/game/DataStores/GameTables.cpp b/src/server/game/DataStores/GameTables.cpp
index 9f151174b33..8340bef7ca0 100644
--- a/src/server/game/DataStores/GameTables.cpp
+++ b/src/server/game/DataStores/GameTables.cpp
@@ -22,6 +22,7 @@
#include "Util.h"
#include <boost/filesystem/path.hpp>
#include <fstream>
+#include <sstream>
GameTable<GtArmorMitigationByLvlEntry> sArmorMitigationByLvlGameTable;
GameTable<GtArtifactKnowledgeMultiplierEntry> sArtifactKnowledgeMultiplierGameTable;
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp
index a74ccf8be7b..8413803a646 100644
--- a/src/server/game/DungeonFinding/LFGMgr.cpp
+++ b/src/server/game/DungeonFinding/LFGMgr.cpp
@@ -38,6 +38,7 @@
#include "SocialMgr.h"
#include "World.h"
#include "WorldSession.h"
+#include <sstream>
namespace lfg
{
diff --git a/src/server/game/Entities/Corpse/Corpse.cpp b/src/server/game/Entities/Corpse/Corpse.cpp
index 6b983fd56f1..60b36d96b64 100644
--- a/src/server/game/Entities/Corpse/Corpse.cpp
+++ b/src/server/game/Entities/Corpse/Corpse.cpp
@@ -27,6 +27,7 @@
#include "Player.h"
#include "UpdateData.h"
#include "World.h"
+#include <sstream>
Corpse::Corpse(CorpseType type) : WorldObject(type != CORPSE_BONES), m_type(type)
{
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index c86f015895f..7f975625c50 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -53,6 +53,7 @@
#include "World.h"
#include "WorldPacket.h"
#include <G3D/g3dmath.h>
+#include <sstream>
bool VendorItem::IsGoldRequired(ItemTemplate const* pProto) const
{
@@ -1313,7 +1314,20 @@ void Creature::SaveToDB(uint32 mapid, std::vector<Difficulty> const& spawnDiffic
stmt->setUInt64(index++, m_spawnId);
stmt->setUInt32(index++, GetEntry());
stmt->setUInt16(index++, uint16(mapid));
- stmt->setString(index++, StringJoin(data.spawnDifficulties, ","));
+ stmt->setString(index++, [&data]() -> std::string
+ {
+ if (data.spawnDifficulties.empty())
+ return "";
+
+ std::ostringstream os;
+ auto itr = data.spawnDifficulties.begin();
+ os << int32(*itr++);
+
+ for (; itr != data.spawnDifficulties.end(); ++itr)
+ os << ',' << int32(*itr);
+
+ return os.str();
+ }());
stmt->setUInt32(index++, data.phaseId);
stmt->setUInt32(index++, data.phaseGroup);
stmt->setUInt32(index++, displayId);
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index 80312590101..6ff7cd66cd4 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -45,6 +45,7 @@
#include "Transport.h"
#include "World.h"
#include <G3D/Quat.h>
+#include <sstream>
void GameObjectTemplate::InitializeQueryData()
{
@@ -1029,7 +1030,20 @@ void GameObject::SaveToDB(uint32 mapid, std::vector<Difficulty> const& spawnDiff
stmt->setUInt64(index++, m_spawnId);
stmt->setUInt32(index++, GetEntry());
stmt->setUInt16(index++, uint16(mapid));
- stmt->setString(index++, StringJoin(data.spawnDifficulties, ","));
+ stmt->setString(index++, [&data]() -> std::string
+ {
+ if (data.spawnDifficulties.empty())
+ return "";
+
+ std::ostringstream os;
+ auto itr = data.spawnDifficulties.begin();
+ os << int32(*itr++);
+
+ for (; itr != data.spawnDifficulties.end(); ++itr)
+ os << ',' << int32(*itr);
+
+ return os.str();
+ }());
stmt->setUInt32(index++, data.phaseId);
stmt->setUInt32(index++, data.phaseGroup);
stmt->setFloat(index++, GetPositionX());
diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp
index af324c8616a..8124c2d9eed 100644
--- a/src/server/game/Entities/Item/Item.cpp
+++ b/src/server/game/Entities/Item/Item.cpp
@@ -42,6 +42,7 @@
#include "UpdateData.h"
#include "World.h"
#include "WorldSession.h"
+#include <sstream>
Item* NewItemOrBag(ItemTemplate const* proto)
{
diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp
index 7d888ea1381..7563289b480 100644
--- a/src/server/game/Entities/Pet/Pet.cpp
+++ b/src/server/game/Entities/Pet/Pet.cpp
@@ -36,6 +36,7 @@
#include "Util.h"
#include "World.h"
#include "WorldSession.h"
+#include <sstream>
#define PET_XP_FACTOR 0.05f
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index ea3ea2d0d6a..bfc3bfbedc4 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -62,6 +62,7 @@
#include "SystemPackets.h"
#include "Util.h"
#include "World.h"
+#include <sstream>
class LoginQueryHolder : public CharacterDatabaseQueryHolder
{
diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h
index b84e1ccdbed..0fc37d470ec 100644
--- a/src/server/game/Instances/InstanceScript.h
+++ b/src/server/game/Instances/InstanceScript.h
@@ -23,6 +23,7 @@
#include <map>
#include <memory>
#include <set>
+#include <sstream>
#define OUT_SAVE_INST_DATA TC_LOG_DEBUG("scripts", "Saving Instance Data for Instance %s (Map %d, Instance Id %d)", instance->GetMapName(), instance->GetId(), instance->GetInstanceId())
#define OUT_SAVE_INST_DATA_COMPLETE TC_LOG_DEBUG("scripts", "Saving Instance Data for Instance %s (Map %d, Instance Id %d) completed.", instance->GetMapName(), instance->GetId(), instance->GetInstanceId())
diff --git a/src/server/game/Phasing/PhasingHandler.cpp b/src/server/game/Phasing/PhasingHandler.cpp
index 97889f13ec0..eb582ca0de9 100644
--- a/src/server/game/Phasing/PhasingHandler.cpp
+++ b/src/server/game/Phasing/PhasingHandler.cpp
@@ -28,6 +28,7 @@
#include "PhaseShift.h"
#include "Player.h"
#include "SpellAuraEffects.h"
+#include <sstream>
namespace
{
diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp
index 5719c541406..92a039344a5 100644
--- a/src/server/game/Quests/QuestDef.cpp
+++ b/src/server/game/Quests/QuestDef.cpp
@@ -579,8 +579,5 @@ void Quest::AddQuestLevelToTitle(std::string& title, int32 level)
{
// Adds the quest level to the front of the quest title
// example: [13] Westfall Stew
-
- std::stringstream questTitlePretty;
- questTitlePretty << "[" << level << "] " << title;
- title = questTitlePretty.str();
+ title = Trinity::StringFormat("[%d] %s", level, title);
}
diff --git a/src/server/game/Warden/Warden.cpp b/src/server/game/Warden/Warden.cpp
index 7fdc45d1235..e3ddf6a2e74 100644
--- a/src/server/game/Warden/Warden.cpp
+++ b/src/server/game/Warden/Warden.cpp
@@ -201,17 +201,14 @@ std::string Warden::Penalty(WardenCheck* check /*= NULL*/)
break;
case WARDEN_ACTION_BAN:
{
- std::stringstream duration;
- duration << sWorld->getIntConfig(CONFIG_WARDEN_CLIENT_BAN_DURATION) << "s";
std::string accountName;
AccountMgr::GetName(_session->GetAccountId(), accountName);
- std::stringstream banReason;
- banReason << "Warden Anticheat Violation";
+ std::string banReason = "Warden Anticheat Violation";
// Check can be NULL, for example if the client sent a wrong signature in the warden packet (CHECKSUM FAIL)
if (check)
- banReason << ": " << check->Comment << " (CheckId: " << check->CheckId << ")";
+ banReason += Trinity::StringFormat(": %s (CheckId: %u", check->Comment, uint32(check->CheckId));
- sWorld->BanAccount(BAN_ACCOUNT, accountName, duration.str(), banReason.str(),"Server");
+ sWorld->BanAccount(BAN_ACCOUNT, accountName, Trinity::StringFormat("%ds", sWorld->getIntConfig(CONFIG_WARDEN_CLIENT_BAN_DURATION)), banReason, "Server");
return "Ban";
}