aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Conditions/DisableMgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Conditions/DisableMgr.cpp')
-rw-r--r--src/server/game/Conditions/DisableMgr.cpp21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/server/game/Conditions/DisableMgr.cpp b/src/server/game/Conditions/DisableMgr.cpp
index d3ba318cc1a..15af1065d2a 100644
--- a/src/server/game/Conditions/DisableMgr.cpp
+++ b/src/server/game/Conditions/DisableMgr.cpp
@@ -25,6 +25,7 @@
#include "OutdoorPvP.h"
#include "Player.h"
#include "SpellMgr.h"
+#include "StringConvert.h"
#include "VMapManager2.h"
#include "World.h"
@@ -109,16 +110,24 @@ void LoadDisables()
if (flags & SPELL_DISABLE_MAP)
{
- Tokenizer tokens(params_0, ',');
- for (uint8 i = 0; i < tokens.size(); )
- data.params[0].insert(atoi(tokens[i++]));
+ for (std::string_view mapStr : Trinity::Tokenize(params_0, ',', true))
+ {
+ if (Optional<uint32> mapId = Trinity::StringTo<uint32>(mapStr))
+ data.params[0].insert(*mapId);
+ else
+ TC_LOG_ERROR("sql.sql", "Disable map '%s' for spell %u is invalid, skipped.", std::string(mapStr).c_str(), entry);
+ }
}
if (flags & SPELL_DISABLE_AREA)
{
- Tokenizer tokens(params_1, ',');
- for (uint8 i = 0; i < tokens.size(); )
- data.params[1].insert(atoi(tokens[i++]));
+ for (std::string_view areaStr : Trinity::Tokenize(params_0, ',', true))
+ {
+ if (Optional<uint32> areaId = Trinity::StringTo<uint32>(areaStr))
+ data.params[1].insert(*areaId);
+ else
+ TC_LOG_ERROR("sql.sql", "Disable area '%s' for spell %u is invalid, skipped.", std::string(areaStr).c_str(), entry);
+ }
}
break;